{"version":3,"sources":["aos.js","jquery-init.js","angular-init.js","st.js","st.search.js","LoadNextFacetSearchResultsCtrl.js","app.js","paginationDirective.js","angular-utils.js","jsbarcode.3.3.20.all.min.js","qrcode.min.js"],"names":["e","t","exports","module","define","amd","AOS","this","o","n","i","id","loaded","call","m","c","p","__esModule","default","Object","assign","arguments","length","prototype","hasOwnProperty","a","u","f","d","b","y","h","w","k","x","offset","delay","easing","duration","disable","once","startEvent","throttleDelay","debounceDelay","disableMutationObserver","j","O","init","document","all","window","atob","mobile","phone","tablet","S","forEach","node","removeAttribute","querySelector","setAttribute","indexOf","readyState","addEventListener","refresh","refreshHard","v","g","apply","s","setTimeout","z","_","r","TypeError","leading","maxWait","trailing","cancel","clearTimeout","flush","valueOf","replace","l","test","slice","Symbol","iterator","constructor","NaN","parseInt","self","Function","toString","Math","max","min","Date","now","Array","addedNodes","removedNodes","concat","filter","hasAttribute","defineProperty","value","MutationObserver","WebKitMutationObserver","MozMutationObserver","observe","documentElement","childList","subtree","navigator","userAgent","vendor","opera","enumerable","configurable","writable","key","substr","pageYOffset","innerHeight","getAttribute","position","classList","add","remove","anchor","anchorPlacement","isNaN","querySelectorAll","top","offsetHeight","offsetLeft","offsetTop","tagName","scrollLeft","scrollTop","offsetParent","left","map","missingImageError","image","retryCount","src","onerror","parentNode","children","srcset","style","visibility","missingImageLoaded","st","PreventEnter","$parse","restrict","link","scope","el","attrib","action","stPreventEnter","on","keyCode","preventDefault","stopPropagation","$apply","$inject","ScopeDataController","$scope","$element","$attrs","$log","getter","json","type","html","stScopeData","angular","fromJson","$value","err","error","directive","controller","__extends","__","create","search","UrlSeparator","SortSeparator","DefaultGroup","TermPropertyName","PagePropertyName","SortPropertyName","SearchBox","$window","submitSearch","query","url","location","pathname","toLocaleUpperCase","hash","encodeURIComponent","input","element","stSearchBoxInput","btn","stSearchBoxButton","stSearchBox","val","ConstantFiltersController","$rootScope","stFacetService","_this","group","$on","addConstantFilters","filters","FacetItemsController","facetService","allowMultiple","_items","models","FacetItemCollection","addWatch","notify","registerFacets","name","values","groups","selectedNames","setSelectedNames","push","get","set","item","extend","FacetItem","modelChanged","ids","model","isArray","setSelectedIds","toggle","select","deselect","update","search_1","FacetService","$injector","$location","$http","$q","$document","facetGroups","isSearching","results","_firstLoad","_registeredGroups","_groupsUpdated","_constantFilters","has","_stSearchConfig","_stSearchGroupConfig","newVal","oldVal","$emit","args","keys","unshift","addUnique","search_2","copy","page","split","updatedGroups","groupUpdated","searchOnLoad","debug","facetGroup","setPage","pageId","getPageId","setSortBy","sortBy","_i","currentSortBy","getSortBy","equals","qSort","reduce","prev","trim","join","filterAdded","groupFilters","groupItems","doSearch","term","updateUrl","qValue","items","selected","path","req","Filters","Group","hasFilters","hasConstFilters","groupConfig","indexName","ItemsPerPage","itemsPerPage","OrFacets","orFacets","SearchFields","searchFields","HighlightedFields","highlightedFields","constFilters","termCtrl","Term","facet","allowEmptySearch","respPromises","Skip","SortBy","firstResp","submitSearchReq","loadAllPagesOnInit","then","resps","pages","resp","data","arg","finally","qPage","request","config","lang","headers","Accept-Language","siteId","SiteId","post","endpoint","coll","service","_parent","_selected","_super","_watchers","_notificationCtx","indexOfId","indexOfName","watcher","notified","fn","suppressNotify","callback","origCtx","hasNotified","clearSelected","notfy","hasChanged","setSelected","names","propName","findItem","search_3","TermFacetController","_term","search_4","FacetSearchResultsController","curPage","selectPageId","sort","response","isUndefined","Pages","isActive","Page","selectPage","selectPageIndex","index","pageChanged","nextPage","idChanged","prevPage","sortChanged","LoadNextFacetSearchResultsCtrl","$watch","$","each","magnificPopup","disableOn","preloader","fixedContentPos","animate","takeEven","array","currentPage","customItems","pageSize","pageChangeHandler","num","console","log","DEFAULT_ID","$compile","paginationService","terminal","multiElement","priority","compile","tElement","tAttrs","expression","dirPaginate","match","filterPattern","itemsPerPageFilterRemoved","collectionGetter","nodeType","attr","addNoCompileAttributes","rawId","paginationId","registerInstance","attrs","repeatExpression","idDefinedInFilter","getRepeatExpression","$set","eq","addNgRepeatToElement","removeAttr","removeTemporaryAttributes","compiled","currentPageGetter","defaultCurrentPage","makeCurrentPageGetterFn","setCurrentPageParser","totalItems","setAsyncModeTrue","result","setCollectionLength","setAsyncModeFalse","$watchCollection","collection","collectionLength","paginationTemplate","numberRegex","DDO","maxSize","onPageChange","autoHide","isRegistered","idMessage","warn","undefined","directionLinks","isDefined","$parent","$eval","boundaryLinks","paginationRange","goToPage","isValidPageNumber","oldPageNumber","pagination","current","generatePagesArray","getCollectionLength","getItemsPerPage","updateRangeValues","newPageNumber","generatePagination","getCurrentPage","last","setCurrent","range","lower","upper","total","previous","previousPage","setCurrentPage","tracker","templateString","getString","template","templateUrl","elem","getPath","rowsPerPage","totalPages","ceil","halfWay","ellipsesNeeded","pageNumber","calculatePageNumber","openingEllipsesNeeded","closingEllipsesNeeded","end","start","isObject","isAsyncMode","setItemsPerPage","slicedObject","obj","objKeys","lastRegisteredInstance","instances","instanceId","asyncMode","deregisterInstance","getLastInstanceId","currentPageParser","context","parser","provider","templatePath","setPath","setString","str","$get","run","$templateCache","put","require","ngModel","$parsers","$formatters","factory","IsNullOrEmpty","createList","msgs","clear","msg","msgFound","prop","msgArray","load","dict","Key","Message","messageList","startBin","endBin","middleBin","Lbinary","Gbinary","Rbinary","encode","string","text","valid","bytes","charCodeAt","substring","encodings","shift","nextA","nextB","nextC","getEncoding","checksum","mod10","floor","mod11","width","height","format","displayValue","fontOptions","font","textAlign","textPosition","textMargin","fontSize","background","lineColor","margin","marginTop","marginBottom","marginLeft","marginRight","ReferenceError","setPrototypeOf","__proto__","symbology","message","Error","InvalidInputException","InvalidElementException","NoElementException","createElement","getContext","measureText","getTotalWidthOfEncodings","calculateEncodingAttributes","getBarcodePadding","getEncodingHeight","getMaximumHeightOfEncodings","options","barcodePadding","CODE39","CODE128","CODE128A","CODE128B","CODE128C","EAN13","EAN8","EAN5","EAN2","UPC","ITF14","ITF","MSI","MSI10","MSI11","MSI1010","MSI1110","pharmacode","GenericBarcode","api","handleCatch","_options","_defaults","render","wrapBarcodeCall","HTMLCanvasElement","HTMLImageElement","renderer","getRendererClass","afterRender","toDataURL","SVGElement","String","fromCharCode","toUpperCase","mod43Enabled","mod43","characters","getBinary","characterValue","getCharacter","structure","guardHeight","lastChar","binaryRepresentation","0","1","2","3","4","5","6","7","8","9","calculatePair","number","toLowerCase","canvas","prepareCanvas","drawCanvasBarcode","drawCanvasText","moveCanvasDrawing","restoreCanvas","save","clearRect","fillStyle","fillRect","translate","fillText","restore","createElementNS","appendChild","svg","prepareSVG","drawSvgBarcode","drawSVGText","firstChild","removeChild","setSvgAttributes","createTextNode","transform","C","_errorHandler","_encodings","E","_renderProperties","getModule","blank","repeat","JsBarcode","jQuery","QRCode","mode","MODE_8BIT_BYTE","parsedData","typeNumber","errorCorrectLevel","modules","moduleCount","dataCache","dataList","totalCount","dataCount","buffer","aMat","parseFloat","encodeURI","L","M","Q","H","getLength","write","addData","isDark","getModuleCount","make","makeImpl","getBestMaskPattern","setupPositionProbePattern","setupPositionAdjustPattern","setupTimingPattern","setupTypeInfo","setupTypeNumber","createData","mapData","getLostPoint","createMovieClip","createEmptyMovieClip","beginFill","moveTo","lineTo","endFill","getPatternPosition","getBCHTypeNumber","getBCHTypeInfo","getMask","PAD0","PAD1","getRSBlocks","getLengthInBits","putBit","createBytes","getErrorCorrectPolynomial","mod","q","MODE_NUMBER","MODE_ALPHA_NUM","MODE_KANJI","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PATTERN_POSITION_TABLE","G15","G18","G15_MASK","getBCHDigit","multiply","gexp","abs","glog","LOG_TABLE","EXP_TABLE","RS_BLOCK_TABLE","getRsBlockTable","_el","_htOption","draw","viewBox","fill","colorLight","setAttributeNS","colorDark","hasChildNodes","lastChild","CanvasRenderingContext2D","_elImage","_elCanvas","display","_android","devicePixelRatio","drawImage","nodeName","_bIsPainted","_oContext","_bSupportDataURI","round","strokeStyle","lineWidth","strokeRect","makeImage","_fFail","_fSuccess","onabort","onload","isPainted","innerHTML","childNodes","offsetWidth","correctLevel","getElementById","_oQRCode","_oDrawing","makeCode","title","CorrectLevel"],"mappings":"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I,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,GAA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","file":"GlobalScripts.min.js","sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},r=n(1),a=(o(r),n(6)),u=o(a),c=n(7),f=o(c),s=n(8),d=o(s),l=n(9),p=o(l),m=n(10),b=o(m),v=n(11),y=o(v),g=n(14),h=o(g),w=[],k=!1,x={offset:120,delay:0,easing:\"ease\",duration:400,disable:!1,once:!1,startEvent:\"DOMContentLoaded\",throttleDelay:99,debounceDelay:50,disableMutationObserver:!1},j=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},_=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},S=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},z=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?_():(document.querySelector(\"body\").setAttribute(\"data-aos-easing\",x.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",x.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",x.delay),\"DOMContentLoaded\"===x.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?j(!0):\"load\"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener(\"resize\",(0,f.default)(j,x.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,f.default)(j,x.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||(0,d.default)(\"[data-aos]\",O),w)};e.exports={init:z,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(s,t),_?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function s(){var e=O();return c(e)?d(e):void(h=setTimeout(s,a(e)))}function d(e){return h=void 0,z&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(s,t),o(w)}return void 0===h&&(h=setTimeout(s,t)),g}var b,v,y,g,h,w,k=0,_=!1,S=!1,z=!0;if(\"function\"!=typeof e)throw new TypeError(f);return t=u(t)||0,i(n)&&(_=!!n.leading,S=\"maxWait\"in n,y=S?x(u(n.maxWait)||0,t):y,z=\"trailing\"in n?!!n.trailing:z),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(f);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return s;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?s:+e}var c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},f=\"Expected a function\",s=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(s,t),_?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function f(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function s(){var e=j();return f(e)?d(e):void(h=setTimeout(s,u(e)))}function d(e){return h=void 0,z&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=f(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(s,t),i(w)}return void 0===h&&(h=setTimeout(s,t)),g}var b,v,y,g,h,w,O=0,_=!1,S=!1,z=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(_=!!n.leading,S=\"maxWait\"in n,y=S?k(a(n.maxWait)||0,t):y,z=\"trailing\"in n?!!n.trailing:z),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==s}function a(e){if(\"number\"==typeof e)return e;if(r(e))return f;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?f:+e}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",f=NaN,s=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e,t){var n=window.document,r=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver,a=new r(o);i=t,a.observe(n.documentElement,{childList:!0,subtree:!0,removedNodes:!0})}function o(e){e&&e.forEach(function(e){var t=Array.prototype.slice.call(e.addedNodes),n=Array.prototype.slice.call(e.removedNodes),o=t.concat(n).filter(function(e){return e.hasAttribute&&e.hasAttribute(\"data-aos\")}).length;o&&i()})}Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(){};t.default=n},function(e,t){\"use strict\";function n(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function o(){return navigator.userAgent||navigator.vendor||window.opera||\"\"}Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),r=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,a=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,u=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i,c=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,f=function(){function e(){n(this,e)}return i(e,[{key:\"phone\",value:function(){var e=o();return!(!r.test(e)&&!a.test(e.substr(0,4)))}},{key:\"mobile\",value:function(){var e=o();return!(!u.test(e)&&!c.test(e.substr(0,4)))}},{key:\"tablet\",value:function(){return this.mobile()&&!this.phone()}}]),e}();t.default=new f},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e,t,n){var o=e.node.getAttribute(\"data-aos-once\");t>e.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});","//add a default image to images that 404 (movie posters)\r\n//function missingImageError() {\r\n// this.onerror = null;\r\n// this.parentNode.children[0].srcset = this.parentNode.children[1].srcset = this.src;\r\n//}\r\n\r\n//attempt reload homepage cover images, if they fail show a default image\r\n function missingImageError(image) {\r\n if (!image.hasOwnProperty('retryCount')){\r\n image.retryCount = 0;\r\n }\r\n\r\n if (image.retryCount < 10) {\r\n setTimeout(function (){ \r\n image.src += '&' + Date.now(); \r\n image.retryCount += 1;\r\n }, 2000);\r\n } else {\r\n //after x number of attemps show the missing poster file\r\n image.onerror = null;\r\n image.parentNode.children[0].srcset = image.parentNode.children[1].srcset = \"/Assets/Celebration/Icons/MissingPoster.jpg\";\r\n image.style.visibility = 'visible';\r\n }\r\n }\r\n\r\n//once a failed image reloads, make sure its set visibile\r\nfunction missingImageLoaded(image) {\r\n image.style.visibility = 'visible';\r\n setTimeout(function() { image.style.visibility = 'visible'; }, 1000);\r\n}","if ('st' in window && st && st.init) {\r\n st.init();\r\n}","var st;\n(function (st) {\n var PreventEnter = function ($parse) {\n return {\n restrict: 'A',\n link: function (scope, el, attrib) {\n var action = attrib.stPreventEnter ? $parse(attrib.stPreventEnter) : null;\n el.on('keypress', function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n e.stopPropagation();\n if (action) {\n scope.$apply(action);\n }\n return false;\n }\n });\n }\n };\n };\n PreventEnter.$inject = ['$parse'];\n var ScopeDataController = (function () {\n function ScopeDataController($scope, $element, $parse, $attrs, $log) {\n var type = $attrs.type;\n var getter;\n var json;\n if ((/text\\/json/i).test(type)) {\n json = $element.html();\n try {\n if ($attrs.stScopeData && json) {\n json = angular.fromJson(json);\n getter = $parse($attrs.stScopeData);\n if ($attrs.stScopeData.indexOf('$value') >= 0) {\n getter($scope, { $value: json });\n }\n else if (getter.assign) {\n getter.assign($scope, json);\n }\n $element.remove();\n }\n }\n catch (err) {\n $log.error(\"Invalid JSON for st-scope-data=\\\"\" + $attrs.stScopeData + \"\\\"\");\n }\n }\n }\n ScopeDataController.$inject = ['$scope', '$element', '$parse', '$attrs', '$log'];\n return ScopeDataController;\n }());\n var ScopeData = function () {\n return {\n restrict: 'A',\n controller: ScopeDataController\n };\n };\n angular.module('st')\n .directive('stPreventEnter', PreventEnter)\n .directive('stScopeData', ScopeData);\n})(st || (st = {}));\n\n//# sourceMappingURL=data:application/json;charset=utf8;base64,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QVEsRUFBRSxHQUFHO1lBQ2IsVUFBVSxFQUFFLG1CQUFtQjtTQUNsQyxDQUFDO0lBQ04sQ0FBQyxDQUFDO0lBRUYsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7U0FDbkIsU0FBUyxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQztTQUN6QyxTQUFTLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUNuQztBQUNMLENBQUMsRUF4RVMsRUFBRSxLQUFGLEVBQUUsUUF3RVgiLCJmaWxlIjoic3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJuYW1lc3BhY2Ugc3Qge1xyXG4gICAgaW50ZXJmYWNlIFByZXZlbnRFbnRlckF0dHJpYnV0ZXMgZXh0ZW5kcyBhbmd1bGFyLklBdHRyaWJ1dGVzIHtcclxuICAgICAgICBzdFByZXZlbnRFbnRlcjogc3RyaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBQcmV2ZW50RW50ZXI6IGFuZ3VsYXIuSURpcmVjdGl2ZUZhY3RvcnkgPSAoJHBhcnNlOiBhbmd1bGFyLklQYXJzZVNlcnZpY2UpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGU6IGFuZ3VsYXIuSVNjb3BlLCBlbDogYW5ndWxhci5JQXVnbWVudGVkSlF1ZXJ5LCBhdHRyaWI6IFByZXZlbnRFbnRlckF0dHJpYnV0ZXMpIHtcclxuICAgICAgICAgICAgICAgIGxldCBhY3Rpb24gPSBhdHRyaWIuc3RQcmV2ZW50RW50ZXIgPyAkcGFyc2UoYXR0cmliLnN0UHJldmVudEVudGVyKSA6IG51bGw7XHJcbiAgICAgICAgICAgICAgICBlbC5vbigna2V5cHJlc3MnLCBmdW5jdGlvbiAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmtleUNvZGUgPT09IDEzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGUuJGFwcGx5KGFjdGlvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcbiAgICBQcmV2ZW50RW50ZXIuJGluamVjdCA9IFsnJHBhcnNlJ107XHJcblxyXG4gICAgaW50ZXJmYWNlIFNjb3BlRGF0YUF0dHJpYnV0ZXMgZXh0ZW5kcyBhbmd1bGFyLklBdHRyaWJ1dGVzIHtcclxuICAgICAgICB0eXBlOiBzdHJpbmc7XHJcbiAgICAgICAgc3RTY29wZURhdGE6IHN0cmluZztcclxuICAgIH1cclxuXHJcbiAgICBjbGFzcyBTY29wZURhdGFDb250cm9sbGVyIHtcclxuICAgICAgICBzdGF0aWMgJGluamVjdCA9IFsnJHNjb3BlJywgJyRlbGVtZW50JywgJyRwYXJzZScsICckYXR0cnMnLCAnJGxvZyddO1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgICAgICAgICAgJHNjb3BlOiBhbmd1bGFyLklTY29wZSxcclxuICAgICAgICAgICAgICAgICRlbGVtZW50OiBhbmd1bGFyLklBdWdtZW50ZWRKUXVlcnksXHJcbiAgICAgICAgICAgICAgICAkcGFyc2U6IGFuZ3VsYXIuSVBhcnNlU2VydmljZSxcclxuICAgICAgICAgICAgICAgICRhdHRyczogU2NvcGVEYXRhQXR0cmlidXRlcyxcclxuICAgICAgICAgICAgICAgICRsb2c6IGFuZ3VsYXIuSUxvZ1NlcnZpY2UpIHtcclxuICAgICAgICAgICAgbGV0IHR5cGUgPSAkYXR0cnMudHlwZTtcclxuICAgICAgICAgICAgbGV0IGdldHRlcjogYW5ndWxhci5JQ29tcGlsZWRFeHByZXNzaW9uO1xyXG4gICAgICAgICAgICBsZXQganNvbjogc3RyaW5nO1xyXG4gICAgICAgICAgICBpZiAoKC90ZXh0XFwvanNvbi9pKS50ZXN0KHR5cGUpKSB7XHJcbiAgICAgICAgICAgICAgICBqc29uID0gJGVsZW1lbnQuaHRtbCgpO1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJzLnN0U2NvcGVEYXRhICYmIGpzb24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAganNvbiA9IGFuZ3VsYXIuZnJvbUpzb24oanNvbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlciA9ICRwYXJzZSgkYXR0cnMuc3RTY29wZURhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJzLnN0U2NvcGVEYXRhLmluZGV4T2YoJyR2YWx1ZScpID49IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlcigkc2NvcGUsIHsgJHZhbHVlOiBqc29uIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdldHRlci5hc3NpZ24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldHRlci5hc3NpZ24oJHNjb3BlLCBqc29uKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAkZWxlbWVudC5yZW1vdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAkbG9nLmVycm9yKGBJbnZhbGlkIEpTT04gZm9yIHN0LXNjb3BlLWRhdGE9XCIkeyAkYXR0cnMuc3RTY29wZURhdGEgfVwiYCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IFNjb3BlRGF0YTogYW5ndWxhci5JRGlyZWN0aXZlRmFjdG9yeSA9ICgpID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICByZXN0cmljdDogJ0EnLFxyXG4gICAgICAgICAgICBjb250cm9sbGVyOiBTY29wZURhdGFDb250cm9sbGVyXHJcbiAgICAgICAgfTtcclxuICAgIH07XHJcblxyXG4gICAgYW5ndWxhci5tb2R1bGUoJ3N0JylcclxuICAgIC5kaXJlY3RpdmUoJ3N0UHJldmVudEVudGVyJywgUHJldmVudEVudGVyKVxyXG4gICAgLmRpcmVjdGl2ZSgnc3RTY29wZURhdGEnLCBTY29wZURhdGEpXHJcbiAgICA7XHJcbn1cclxuIl19\n","var __extends = (this && this.__extends) || function (d, b) {\r\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n};\r\nvar st;\r\n(function (st) {\r\n var search;\r\n (function (search) {\r\n angular.module('st.search', []);\r\n search.UrlSeparator = ':';\r\n search.SortSeparator = ',';\r\n search.DefaultGroup = '';\r\n search.TermPropertyName = 'term';\r\n search.PagePropertyName = 'page';\r\n search.SortPropertyName = 'sort';\r\n var SearchBox = function ($window) {\r\n function submitSearch(query, url) {\r\n if ($window.location.pathname.toLocaleUpperCase() === url.toLocaleUpperCase()) {\r\n $window.location.hash = '/?term=' + encodeURIComponent(query);\r\n }\r\n else {\r\n $window.location.assign(url + '#/?term=' + encodeURIComponent(query));\r\n }\r\n }\r\n return {\r\n restrict: 'A',\r\n link: function (scope, el, attrib) {\r\n var input = angular.element(attrib.stSearchBoxInput || '.form-control', el);\r\n var btn = angular.element(attrib.stSearchBoxButton || '.btn', el);\r\n if (attrib.stSearchBox && input.length === 1 && btn.length) {\r\n input.on('keypress', function (e) {\r\n if (e.keyCode === 13 && input.val()) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n scope.$apply(function () {\r\n submitSearch(input.val(), attrib.stSearchBox);\r\n });\r\n }\r\n });\r\n btn.on('click', function (e) {\r\n if (input.val()) {\r\n scope.$apply(function () {\r\n submitSearch(input.val(), attrib.stSearchBox);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n };\r\n };\r\n SearchBox.$inject = ['$window'];\r\n angular.module('st.search')\r\n .directive('stSearchBox', SearchBox);\r\n })(search = st.search || (st.search = {}));\r\n})(st || (st = {}));\r\nvar st;\r\n(function (st) {\r\n var search;\r\n (function (search) {\r\n var ConstantFiltersController = (function () {\r\n function ConstantFiltersController($rootScope, stFacetService) {\r\n var _this = this;\r\n this.group = search.DefaultGroup;\r\n $rootScope.$on('stRegisterFacets', function (e) {\r\n stFacetService.addConstantFilters(_this.group, _this.filters);\r\n });\r\n }\r\n ConstantFiltersController.$inject = ['$rootScope', 'stFacetService'];\r\n return ConstantFiltersController;\r\n }());\r\n angular.module('st.search')\r\n .controller('stConstantFiltersCtrl', ConstantFiltersController);\r\n })(search = st.search || (st.search = {}));\r\n})(st || (st = {}));\r\nvar st;\r\n(function (st) {\r\n var search;\r\n (function (search) {\r\n var FacetItemsController = (function () {\r\n function FacetItemsController($rootScope, facetService, $log) {\r\n var _this = this;\r\n this.facetService = facetService;\r\n this.$log = $log;\r\n this.group = search.DefaultGroup;\r\n this.allowMultiple = false;\r\n this._items = new search.models.FacetItemCollection();\r\n this._items.addWatch(function () {\r\n _this.notify();\r\n });\r\n $rootScope.$on('stRegisterFacets', function (e) {\r\n _this.facetService.registerFacets(_this.group, _this.name, _this._items);\r\n });\r\n $rootScope.$on('stFacetsInit', function (e, values, groups) {\r\n var selectedNames = values[_this.name] || [];\r\n var changed = _this._items.setSelectedNames(selectedNames, false);\r\n if (changed) {\r\n groups.push(_this.group);\r\n }\r\n });\r\n }\r\n Object.defineProperty(FacetItemsController.prototype, \"items\", {\r\n get: function () {\r\n return this._items;\r\n },\r\n set: function (value) {\r\n var _this = this;\r\n this._items.length = 0;\r\n value.forEach(function (item) {\r\n _this._items.push(angular.extend(new search.models.FacetItem(_this._items), item));\r\n });\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n FacetItemsController.prototype.modelChanged = function () {\r\n var ids = this.model ? Array.isArray(this.model) ? this.model : [this.model] : [];\r\n this._items.setSelectedIds(ids);\r\n };\r\n FacetItemsController.prototype.toggle = function (x) {\r\n this._items.toggle(x, this.allowMultiple);\r\n };\r\n FacetItemsController.prototype.add = function (x) {\r\n this._items.select(x, this.allowMultiple);\r\n };\r\n FacetItemsController.prototype.remove = function (x) {\r\n this._items.deselect(x);\r\n };\r\n FacetItemsController.prototype.notify = function () {\r\n this.facetService.update(this.name, this.group);\r\n };\r\n FacetItemsController.$inject = ['$rootScope', 'stFacetService', '$log'];\r\n return FacetItemsController;\r\n }());\r\n angular.module('st.search')\r\n .controller('stFacetItemsCtrl', FacetItemsController);\r\n })(search = st.search || (st.search = {}));\r\n})(st || (st = {}));\r\nvar st;\r\n(function (st) {\r\n var search;\r\n (function (search_1) {\r\n var FacetService = (function () {\r\n function FacetService($injector, $rootScope, $location, $http, $q, $log, $document) {\r\n var _this = this;\r\n this.$rootScope = $rootScope;\r\n this.$location = $location;\r\n this.$http = $http;\r\n this.$q = $q;\r\n this.$log = $log;\r\n this.$document = $document;\r\n this.facetGroups = {};\r\n this.isSearching = {};\r\n this.results = {};\r\n this._firstLoad = true;\r\n this._registeredGroups = [];\r\n this._groupsUpdated = null;\r\n this._constantFilters = {};\r\n if ($injector.has('stSearchConfig') && $injector.has('stSearchGroupConfig')) {\r\n this._stSearchConfig = $injector.get('stSearchConfig');\r\n this._stSearchGroupConfig = $injector.get('stSearchGroupConfig');\r\n }\r\n else {\r\n $log.error('Search Configuration was never declared. You must place a Facet Search Results widget on the page.');\r\n }\r\n $rootScope.$on('$locationChangeSuccess', function (e, newVal, oldVal) {\r\n if (_this._firstLoad) {\r\n $rootScope.$emit('stRegisterFacets');\r\n var args = Object.keys(_this.facetGroups);\r\n args.unshift(_this._registeredGroups);\r\n addUnique.apply(null, args);\r\n }\r\n if (!_this._groupsUpdated) {\r\n var search_2 = angular.copy($location.search());\r\n // Ignore Page\r\n if (search_2.page) {\r\n delete search_2.page;\r\n }\r\n angular.forEach(search_2, function (item, key) {\r\n if (key !== search_1.TermPropertyName) {\r\n // TODO: if this allows a tree of facets/tags, then item will be an Array\r\n // e.g. name=val1&name=val2&name=val3 => { name: [ 'val1', 'val2', 'val3' ] }\r\n search_2[key] = item.split(search_1.UrlSeparator);\r\n }\r\n });\r\n var updatedGroups = [];\r\n $rootScope.$emit('stFacetsInit', search_2, updatedGroups);\r\n updatedGroups.forEach(function (group) {\r\n _this.groupUpdated(group);\r\n });\r\n }\r\n if (_this._firstLoad) {\r\n _this._registeredGroups.forEach(function (group) {\r\n var config = _this._stSearchGroupConfig[group];\r\n if (config.searchOnLoad) {\r\n _this.groupUpdated(group);\r\n }\r\n });\r\n }\r\n if (_this._groupsUpdated && _this._groupsUpdated.length) {\r\n $log.debug('perform search', _this._groupsUpdated);\r\n _this._groupsUpdated.forEach(function (group) {\r\n _this.submitSearch(group);\r\n });\r\n _this._groupsUpdated = null;\r\n }\r\n _this._firstLoad = false;\r\n });\r\n }\r\n FacetService.prototype.registerFacets = function (group, name, filters) {\r\n group = group || search_1.DefaultGroup;\r\n var facetGroup = this.facetGroups[group] = this.facetGroups[group] || {};\r\n if (name && filters) {\r\n if (Array.isArray(filters)) {\r\n if (filters.length) {\r\n facetGroup[name] = filters;\r\n }\r\n }\r\n else {\r\n facetGroup[name] = filters;\r\n }\r\n }\r\n };\r\n FacetService.prototype.setPage = function (pageId, group) {\r\n group = group || search_1.DefaultGroup;\r\n var currentPageId = this.getPageId(group);\r\n if (currentPageId !== pageId) {\r\n // TODO: set group in the URL\r\n this.$location.search(search_1.PagePropertyName, pageId > 1 ? pageId : null);\r\n this.groupUpdated(group);\r\n }\r\n };\r\n FacetService.prototype.setSortBy = function (group) {\r\n var sortBy = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n sortBy[_i - 1] = arguments[_i];\r\n }\r\n group = group || search_1.DefaultGroup;\r\n var currentSortBy = this.getSortBy(group);\r\n if (!angular.equals(currentSortBy, sortBy)) {\r\n var qSort = null;\r\n if (sortBy && sortBy.length) {\r\n qSort = sortBy.reduce(function (prev, item) {\r\n if (item && (item = item.trim())) {\r\n prev.push(item);\r\n }\r\n return prev;\r\n }, []).join(search_1.SortSeparator);\r\n }\r\n // reset page to 1 if need be\r\n var currentPageId = this.getPageId(group);\r\n if (currentPageId !== 1) {\r\n this.$location.search(search_1.PagePropertyName, null);\r\n }\r\n // TODO: set group in the URL\r\n this.$location.search(search_1.SortPropertyName, qSort || null);\r\n this.groupUpdated(group);\r\n }\r\n };\r\n FacetService.prototype.addConstantFilters = function (group, filters) {\r\n var filterAdded = false;\r\n group = group || search_1.DefaultGroup;\r\n var groupFilters = this._constantFilters[group] = this._constantFilters[group] || {};\r\n angular.forEach(filters, function (values, key) {\r\n var groupItems = groupFilters[key] = groupFilters[key] || [];\r\n for (var i = 0; i < values.length; i++) {\r\n if (values[i]) {\r\n groupItems.push(values[i]);\r\n filterAdded = true;\r\n }\r\n }\r\n });\r\n if (filterAdded) {\r\n addUnique(this._registeredGroups, group);\r\n }\r\n };\r\n FacetService.prototype.update = function (name, group, doSearch) {\r\n if (doSearch === void 0) { doSearch = true; }\r\n group = group || search_1.DefaultGroup;\r\n var facetGroup = this.facetGroups[group];\r\n if (!facetGroup) {\r\n return;\r\n }\r\n var value = null;\r\n if (name === search_1.TermPropertyName) {\r\n if (facetGroup.term && facetGroup.term.term) {\r\n value = facetGroup.term.term;\r\n }\r\n }\r\n else {\r\n value = facetGroup[name];\r\n }\r\n this.updateUrl(value, name);\r\n // reset page to 1 if need be\r\n var currentPageId = this.getPageId(group);\r\n if (currentPageId !== 1) {\r\n this.$location.search(search_1.PagePropertyName, null);\r\n }\r\n if (doSearch) {\r\n this.groupUpdated(group);\r\n }\r\n this.$rootScope.$emit('stSearchUpdated', group, name, value);\r\n this.$log.debug('stFacetUpdated', group, name, value);\r\n };\r\n FacetService.prototype.updateUrl = function (value, name) {\r\n var qValue;\r\n if (!value) {\r\n qValue = null;\r\n }\r\n else if (typeof value === 'string') {\r\n qValue = value;\r\n }\r\n else if (value.length) {\r\n qValue = value.reduce(function (items, item) {\r\n if (item.selected) {\r\n items.push(item.name);\r\n }\r\n return items;\r\n }, []).join(search_1.UrlSeparator);\r\n }\r\n if (!qValue) {\r\n qValue = null;\r\n }\r\n if (!this.$location.path()) {\r\n this.$location.path('/');\r\n }\r\n this.$location.search(name, qValue);\r\n };\r\n FacetService.prototype.submitSearch = function (group) {\r\n var _this = this;\r\n var req = {\r\n Filters: {},\r\n Group: group\r\n };\r\n if (!this._stSearchConfig || !this._stSearchGroupConfig) {\r\n return;\r\n }\r\n var hasFilters = false;\r\n var hasConstFilters = false;\r\n var groupConfig = this._stSearchGroupConfig[group];\r\n if (!groupConfig.indexName) {\r\n this.$log.error('Search Index not specified for', group ? ('group: \"' + group + '\"') : 'default group');\r\n return;\r\n }\r\n req.ItemsPerPage = groupConfig.itemsPerPage;\r\n req.OrFacets = groupConfig.orFacets;\r\n req.SearchFields = groupConfig.searchFields;\r\n req.HighlightedFields = groupConfig.highlightedFields;\r\n var constFilters = this._constantFilters[group] || {};\r\n angular.forEach(constFilters, function (items, key) {\r\n var filters = req.Filters[key] = [];\r\n if (key && items) {\r\n for (var i = 0; i < items.length; i++) {\r\n if (items[i]) {\r\n filters.push(items[i]);\r\n hasConstFilters = true;\r\n }\r\n }\r\n }\r\n });\r\n var facetGroup = this.facetGroups[group];\r\n angular.forEach(facetGroup, function (value, name) {\r\n if (name === search_1.TermPropertyName) {\r\n var termCtrl = value;\r\n if (termCtrl && termCtrl.term) {\r\n req.Term = termCtrl.term;\r\n }\r\n }\r\n else {\r\n var items = value;\r\n items.forEach(function (facet) {\r\n if (facet.selected) {\r\n (req.Filters[name] = req.Filters[name] || []).push(facet.id);\r\n hasFilters = true;\r\n }\r\n });\r\n }\r\n });\r\n if (!hasFilters && !hasConstFilters) {\r\n delete req.Filters;\r\n }\r\n if (groupConfig.allowEmptySearch || req.Term || hasFilters) {\r\n this.isSearching[group] = true;\r\n var respPromises = [];\r\n var pageId = this.getPageId(group);\r\n var sortBy = this.getSortBy(group);\r\n req.Skip = req.ItemsPerPage * (pageId - 1);\r\n if (sortBy && sortBy.length) {\r\n req.SortBy = sortBy;\r\n }\r\n var firstResp = this.submitSearchReq(req, groupConfig.indexName);\r\n if (pageId > 1 && this._firstLoad && groupConfig.loadAllPagesOnInit) {\r\n while (pageId > 1) {\r\n pageId--;\r\n req = angular.copy(req);\r\n req.Skip = req.ItemsPerPage * (pageId - 1);\r\n respPromises.push(this.submitSearchReq(req, groupConfig.indexName));\r\n }\r\n }\r\n respPromises.push(firstResp);\r\n this.$q.all(respPromises)\r\n .then(function (resps) {\r\n var pages = resps.map(function (resp) {\r\n return resp.data;\r\n });\r\n var arg = pages.length === 1 ? pages[0] : pages;\r\n _this.results[group] = pages[pages.length - 1];\r\n _this.$rootScope.$emit('stSearchResponse', arg, group);\r\n _this.$log.debug('Search result for group:', group, '; Result:', arg);\r\n }, function (data) {\r\n _this.$log.error('Error submitting search for group:', group, '; Error data:', data);\r\n })\r\n .finally(function () {\r\n _this.isSearching[group] = false;\r\n });\r\n }\r\n else {\r\n this.results[group] = null;\r\n this.$rootScope.$emit('stSearchResponse', null, group);\r\n this.$log.debug('Search Cleared for group:', group);\r\n }\r\n };\r\n FacetService.prototype.getPageId = function (group) {\r\n var qPage;\r\n var search = this.$location.search();\r\n if (this._registeredGroups.length > 1) {\r\n qPage = search[(group || search_1.DefaultGroup) + search_1.UrlSeparator + search_1.PagePropertyName];\r\n }\r\n else {\r\n qPage = search[search_1.PagePropertyName];\r\n }\r\n if (qPage) {\r\n var pageId = parseInt(qPage, 10);\r\n if (pageId > 1) {\r\n return pageId;\r\n }\r\n }\r\n return 1;\r\n };\r\n FacetService.prototype.getSortBy = function (group) {\r\n var qSort;\r\n var search = this.$location.search();\r\n if (this._registeredGroups.length > 1) {\r\n qSort = search[(group || search_1.DefaultGroup) + search_1.UrlSeparator + search_1.SortPropertyName];\r\n }\r\n else {\r\n qSort = search[search_1.SortPropertyName];\r\n }\r\n if (qSort) {\r\n return qSort.split(search_1.SortSeparator).reduce(function (prev, item) {\r\n if (item && (item = item.trim())) {\r\n prev.push(item);\r\n }\r\n return prev;\r\n }, []);\r\n }\r\n return [];\r\n };\r\n FacetService.prototype.submitSearchReq = function (request, indexName) {\r\n // Need to pass language to API call so that culture will be set correctly,\r\n // in order to return documents in the correct language.\r\n var config = {};\r\n var lang = this.$document[0].documentElement.lang;\r\n if (lang) {\r\n config.headers = {\r\n 'Accept-Language': lang\r\n };\r\n }\r\n if (this._stSearchConfig.siteId) {\r\n request.SiteId = this._stSearchConfig.siteId;\r\n }\r\n return this.$http.post(this._stSearchConfig.endpoint + '/' + indexName, request, config);\r\n };\r\n FacetService.prototype.groupUpdated = function (group) {\r\n if (!this._groupsUpdated) {\r\n this._groupsUpdated = [];\r\n }\r\n addUnique(this._groupsUpdated, group || search_1.DefaultGroup);\r\n };\r\n // private static NameRegex: RegExp = /^(.+)\\[(\\d+)\\]$/;\r\n FacetService.$inject = ['$injector', '$rootScope', '$location', '$http', '$q', '$log', '$document'];\r\n return FacetService;\r\n }());\r\n function addUnique(coll) {\r\n var items = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n items[_i - 1] = arguments[_i];\r\n }\r\n if (items && items.length) {\r\n items.forEach(function (item) {\r\n if (coll.indexOf(item) === -1) {\r\n coll.push(item);\r\n }\r\n });\r\n }\r\n }\r\n angular.module('st.search')\r\n .service('stFacetService', FacetService);\r\n })(search = st.search || (st.search = {}));\r\n})(st || (st = {}));\r\nvar st;\r\n(function (st) {\r\n var search;\r\n (function (search) {\r\n var models;\r\n (function (models) {\r\n var FacetItem = (function () {\r\n function FacetItem(_parent) {\r\n this._parent = _parent;\r\n this._selected = false;\r\n }\r\n Object.defineProperty(FacetItem.prototype, \"selected\", {\r\n get: function () {\r\n return this._selected;\r\n },\r\n set: function (val) {\r\n if (this._selected !== val) {\r\n this._selected = val;\r\n this._parent.notify();\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return FacetItem;\r\n }());\r\n models.FacetItem = FacetItem;\r\n // Extending an Array in this way is only supported in TypeScript > v2.1\r\n var FacetItemCollection = (function (_super) {\r\n __extends(FacetItemCollection, _super);\r\n function FacetItemCollection() {\r\n _super.apply(this, arguments);\r\n this._watchers = [];\r\n this._notificationCtx = null;\r\n }\r\n FacetItemCollection.prototype.indexOfId = function (id) {\r\n for (var i = 0; i < this.length; i++) {\r\n if (id === this[i].id) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n FacetItemCollection.prototype.indexOfName = function (name) {\r\n for (var i = 0; i < this.length; i++) {\r\n if (name === this[i].name) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n };\r\n FacetItemCollection.prototype.addWatch = function (watcher) {\r\n this._watchers.push(watcher);\r\n };\r\n FacetItemCollection.prototype.notify = function () {\r\n if (this._notificationCtx) {\r\n this._notificationCtx.notified = true;\r\n }\r\n else {\r\n this._watchers.forEach(function (fn) {\r\n fn();\r\n });\r\n }\r\n };\r\n /**\r\n * Suppresses the notificaiton of changed items.\r\n * @parm The callback.\r\n * @returns true if a change occured; otherwise false.\r\n */\r\n FacetItemCollection.prototype.suppressNotify = function (callback) {\r\n if (callback) {\r\n var origCtx = this._notificationCtx;\r\n this._notificationCtx = { notified: false };\r\n callback();\r\n var hasNotified = this._notificationCtx.notified;\r\n this._notificationCtx = origCtx;\r\n return hasNotified;\r\n }\r\n return false;\r\n };\r\n FacetItemCollection.prototype.clearSelected = function (notfy) {\r\n var _this = this;\r\n if (notfy === void 0) { notfy = true; }\r\n var hasChanged = this.suppressNotify(function () {\r\n _this.forEach(function (item) {\r\n item.selected = false;\r\n });\r\n });\r\n if (hasChanged && notfy) {\r\n this.notify();\r\n }\r\n return hasChanged;\r\n };\r\n FacetItemCollection.prototype.setSelectedIds = function (ids, notify) {\r\n if (notify === void 0) { notify = true; }\r\n var hasChanged = this.setSelected(ids, 'id');\r\n if (hasChanged && notify) {\r\n this.notify();\r\n }\r\n return hasChanged;\r\n };\r\n FacetItemCollection.prototype.setSelectedNames = function (names, notify) {\r\n if (notify === void 0) { notify = true; }\r\n var hasChanged = this.setSelected(names, 'name');\r\n if (hasChanged && notify) {\r\n this.notify();\r\n }\r\n return hasChanged;\r\n };\r\n FacetItemCollection.prototype.setSelected = function (items, propName) {\r\n var _this = this;\r\n var hasChanged = this.suppressNotify(function () {\r\n _this.forEach(function (item) {\r\n item.selected = items ? items.indexOf(item[propName]) >= 0 : false;\r\n });\r\n });\r\n return hasChanged;\r\n };\r\n FacetItemCollection.prototype.findItem = function (x) {\r\n var item = null;\r\n var i;\r\n if (typeof x !== 'undefined') {\r\n if (this.indexOf(x) > -1) {\r\n item = x;\r\n }\r\n else if (typeof x === 'number') {\r\n item = this[x];\r\n }\r\n else if (x.id && (i = this.indexOfId(x.id)) > -1) {\r\n item = this[i];\r\n }\r\n else if (x.name && (i = this.indexOfName(x.name)) > -1) {\r\n item = this[i];\r\n }\r\n }\r\n return item;\r\n };\r\n FacetItemCollection.prototype.toggle = function (x, allowMultiple) {\r\n var item = this.findItem(x);\r\n if (item) {\r\n if (item.selected) {\r\n item.selected = false;\r\n }\r\n else {\r\n if (!allowMultiple) {\r\n this.clearSelected(false);\r\n }\r\n item.selected = true;\r\n }\r\n }\r\n };\r\n FacetItemCollection.prototype.select = function (x, allowMultiple) {\r\n var item = this.findItem(x);\r\n if (item && !item.selected) {\r\n if (!allowMultiple) {\r\n this.clearSelected(false);\r\n }\r\n item.selected = true;\r\n }\r\n };\r\n FacetItemCollection.prototype.deselect = function (x) {\r\n var item = this.findItem(x);\r\n if (item && item.selected) {\r\n item.selected = false;\r\n }\r\n };\r\n return FacetItemCollection;\r\n }(Array));\r\n models.FacetItemCollection = FacetItemCollection;\r\n })(models = search.models || (search.models = {}));\r\n })(search = st.search || (st.search = {}));\r\n})(st || (st = {}));\r\nvar st;\r\n(function (st) {\r\n var search;\r\n (function (search_3) {\r\n var TermFacetController = (function () {\r\n function TermFacetController($rootScope, stFacetService) {\r\n var _this = this;\r\n this.stFacetService = stFacetService;\r\n this.group = search_3.DefaultGroup;\r\n $rootScope.$on('stRegisterFacets', function (e) {\r\n stFacetService.registerFacets(_this.group, search_3.TermPropertyName, _this);\r\n });\r\n $rootScope.$on('stFacetsInit', function (e, search, groups) {\r\n if (_this._term !== search.term || _this.model !== search.term) {\r\n _this._term = _this.model = search.term;\r\n groups.push(_this.group);\r\n }\r\n });\r\n }\r\n Object.defineProperty(TermFacetController.prototype, \"term\", {\r\n get: function () {\r\n return this._term;\r\n },\r\n set: function (val) {\r\n if (this._term !== val) {\r\n this._term = this.model = val;\r\n this.stFacetService.update(search_3.TermPropertyName, this.group);\r\n }\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n TermFacetController.prototype.notify = function () {\r\n this.term = this.model;\r\n };\r\n TermFacetController.$inject = ['$rootScope', 'stFacetService'];\r\n return TermFacetController;\r\n }());\r\n angular.module('st.search')\r\n .controller('stTermFacetCtrl', TermFacetController);\r\n })(search = st.search || (st.search = {}));\r\n})(st || (st = {}));\r\nvar st;\r\n(function (st) {\r\n var search;\r\n (function (search_4) {\r\n var FacetSearchResultsController = (function () {\r\n function FacetSearchResultsController($rootScope, facetService) {\r\n var _this = this;\r\n this.facetService = facetService;\r\n this.group = search_4.DefaultGroup;\r\n this.pages = [];\r\n $rootScope.$on('stRegisterFacets', function (e) {\r\n _this.facetService.registerFacets(_this.group);\r\n });\r\n $rootScope.$on('stFacetsInit', function (e, search, groups) {\r\n var curPage = _this.facetService.getPageId(_this.group);\r\n var pageChanged = _this.selectPageId(curPage, false);\r\n if (pageChanged) {\r\n groups.push(_this.group);\r\n }\r\n var sort = _this.facetService.getSortBy(_this.group).join(search_4.SortSeparator);\r\n if (sort && _this.sortBy !== sort) {\r\n _this.sortBy = sort;\r\n groups.push(_this.group);\r\n }\r\n });\r\n $rootScope.$on('stSearchResponse', function (e, response, group) {\r\n if (!angular.isUndefined(group) && group === _this.group) {\r\n if (Array.isArray(response)) {\r\n if (response.length) {\r\n _this.results = response[response.length - 1];\r\n }\r\n }\r\n else {\r\n _this.results = response;\r\n }\r\n if (_this.results) {\r\n _this.pages.length = _this.results.Pages;\r\n for (var i = 0; i < _this.results.Pages; i++) {\r\n if (_this.pages[i]) {\r\n _this.pages[i].isActive = i === _this.results.Page - 1;\r\n }\r\n else {\r\n _this.pages[i] = {\r\n id: i + 1,\r\n isActive: i === _this.results.Page - 1\r\n };\r\n }\r\n }\r\n }\r\n else {\r\n _this.pages.length = 0;\r\n }\r\n }\r\n });\r\n }\r\n Object.defineProperty(FacetSearchResultsController.prototype, \"isSearching\", {\r\n get: function () {\r\n return this.facetService.isSearching[this.group];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n FacetSearchResultsController.prototype.selectPage = function (page, notify) {\r\n if (notify === void 0) { notify = true; }\r\n return this.selectPageId(page.id, notify);\r\n };\r\n FacetSearchResultsController.prototype.selectPageIndex = function (index, notify) {\r\n if (notify === void 0) { notify = true; }\r\n var page;\r\n if (0 <= index && index < this.pages.length && (page = this.pages[index])) {\r\n return this.selectPageId(page.id, notify);\r\n }\r\n return false;\r\n };\r\n FacetSearchResultsController.prototype.selectPageId = function (id, notify) {\r\n if (notify === void 0) { notify = true; }\r\n var pageChanged = false;\r\n this.pages.forEach(function (page) {\r\n if (page.id === id) {\r\n if (!page.isActive) {\r\n page.isActive = true;\r\n pageChanged = true;\r\n }\r\n }\r\n else {\r\n if (page.isActive) {\r\n page.isActive = false;\r\n pageChanged = true;\r\n }\r\n }\r\n });\r\n if (pageChanged && notify) {\r\n this.facetService.setPage(id, this.group);\r\n }\r\n return pageChanged;\r\n };\r\n FacetSearchResultsController.prototype.nextPage = function () {\r\n var idChanged = 0;\r\n for (var i = 0; i < this.pages.length; i++) {\r\n var page = this.pages[i];\r\n if (page.isActive) {\r\n if (i + 1 < this.pages.length) {\r\n page.isActive = false;\r\n this.pages[i + 1].isActive = true;\r\n idChanged = this.pages[i + 1].id;\r\n }\r\n break;\r\n }\r\n }\r\n if (idChanged > 0) {\r\n this.facetService.setPage(idChanged, this.group);\r\n return true;\r\n }\r\n return false;\r\n };\r\n FacetSearchResultsController.prototype.prevPage = function () {\r\n var idChanged = 0;\r\n for (var i = 0; i < this.pages.length; i++) {\r\n var page = this.pages[i];\r\n if (page.isActive) {\r\n if (i > 0) {\r\n page.isActive = false;\r\n this.pages[i - 1].isActive = true;\r\n idChanged = this.pages[i - 1].id;\r\n }\r\n break;\r\n }\r\n }\r\n if (idChanged > 0) {\r\n this.facetService.setPage(idChanged, this.group);\r\n return true;\r\n }\r\n return false;\r\n };\r\n // This is really for demo purposes of sorting\r\n FacetSearchResultsController.prototype.sortChanged = function () {\r\n var x = (this.sortBy || '').split(search_4.SortSeparator);\r\n x.unshift(this.group);\r\n this.facetService.setSortBy.apply(this.facetService, x);\r\n };\r\n FacetSearchResultsController.$inject = ['$rootScope', 'stFacetService'];\r\n return FacetSearchResultsController;\r\n }());\r\n angular.module('st.search')\r\n .controller('stFacetSearchResultsCtrl', FacetSearchResultsController);\r\n })(search = st.search || (st.search = {}));\r\n})(st || (st = {}));\r\n\r\n//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk12Yy9TY3JpcHRzL3N0LnNlYXJjaC9zdC5zZWFyY2gudHMiLCJNdmMvU2NyaXB0cy9zdC5zZWFyY2gvc3Quc2VhcmNoLmNvbnN0YW50RmlsdGVycy50cyIsIk12Yy9TY3JpcHRzL3N0LnNlYXJjaC9zdC5zZWFyY2guZmFjZXRJdGVtcy50cyIsIk12Yy9TY3JpcHRzL3N0LnNlYXJjaC9zdC5zZWFyY2guZmFjZXRTZXJ2aWNlLnRzIiwiTXZjL1NjcmlwdHMvc3Quc2VhcmNoL3N0LnNlYXJjaC5tb2RlbHMudHMiLCJNdmMvU2NyaXB0cy9zdC5zZWFyY2gvc3Quc2VhcmNoLnRlcm1GYWNldC50cyIsIk12Yy9TY3JpcHRzL3N0LnNlYXJjaC9zdC5zZWFyY2guZmFjZXRTZWFyY2hSZXN1bHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsSUFBVSxFQUFFLENBc0RYO0FBdERELFdBQVUsRUFBRTtJQUFDLElBQUEsTUFBTSxDQXNEbEI7SUF0RFksV0FBQSxNQUFNLEVBQUMsQ0FBQztRQUNqQixPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVuQixtQkFBWSxHQUFHLEdBQUcsQ0FBQztRQUNuQixvQkFBYSxHQUFHLEdBQUcsQ0FBQztRQUNwQixtQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQix1QkFBZ0IsR0FBRyxNQUFNLENBQUM7UUFDMUIsdUJBQWdCLEdBQUcsTUFBTSxDQUFDO1FBQzFCLHVCQUFnQixHQUFHLE1BQU0sQ0FBQztRQVF2QyxJQUFNLFNBQVMsR0FBOEIsVUFBQyxPQUErQjtZQUN6RSxzQkFBc0IsS0FBYSxFQUFFLEdBQVc7Z0JBQzVDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEtBQUssR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO29CQUM1RSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxTQUFTLEdB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QUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDNUQsQ0FBQztZQXZJTSxvQ0FBTyxHQUFHLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLENBQUM7WUF3SXRELG1DQUFDO1FBQUQsQ0E5SUEsQUE4SUMsSUFBQTtRQUVELE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO2FBQ3RCLFVBQVUsQ0FBQywwQkFBMEIsRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0lBQzlFLENBQUMsRUFuSlksTUFBTSxHQUFOLFNBQU0sS0FBTixTQUFNLFFBbUpsQjtBQUFELENBQUMsRUFuSlMsRUFBRSxLQUFGLEVBQUUsUUFtSlgiLCJmaWxlIjoiTXZjL1NjcmlwdHMvc3Quc2VhcmNoLmpzIiwic291cmNlc0NvbnRlbnQiOlsibmFtZXNwYWNlIHN0LnNlYXJjaCB7XHJcbiAgICBhbmd1bGFyLm1vZHVsZSgnc3Quc2VhcmNoJywgW10pO1xyXG5cclxuICAgIGV4cG9ydCBjb25zdCBVcmxTZXBhcmF0b3IgPSAnOic7XHJcbiAgICBleHBvcnQgY29uc3QgU29ydFNlcGFyYXRvciA9ICcsJztcclxuICAgIGV4cG9ydCBjb25zdCBEZWZhdWx0R3JvdXAgPSAnJztcclxuICAgIGV4cG9ydCBjb25zdCBUZXJtUHJvcGVydHlOYW1lID0gJ3Rlcm0nO1xyXG4gICAgZXhwb3J0IGNvbnN0IFBhZ2VQcm9wZXJ0eU5hbWUgPSAncGFnZSc7XHJcbiAgICBleHBvcnQgY29uc3QgU29ydFByb3BlcnR5TmFtZSA9ICdzb3J0JztcclxuXHJcbiAgICBpbnRlcmZhY2UgU2VhcmNoQm94QXR0cmlidXRlcyBleHRlbmRzIGFuZ3VsYXIuSUF0dHJpYnV0ZXMge1xyXG4gICAgICAgIHN0U2VhcmNoQm94OiBzdHJpbmc7XHJcbiAgICAgICAgc3RTZWFyY2hCb3hJbnB1dDogc3RyaW5nO1xyXG4gICAgICAgIHN0U2VhcmNoQm94QnV0dG9uOiBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgU2VhcmNoQm94OiBhbmd1bGFyLklEaXJlY3RpdmVGYWN0b3J5ID0gKCR3aW5kb3c6IGFuZ3VsYXIuSVdpbmRvd1NlcnZpY2UpID0+IHtcclxuICAgICAgICBmdW5jdGlvbiBzdWJtaXRTZWFyY2gocXVlcnk6IHN0cmluZywgdXJsOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKCR3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUudG9Mb2NhbGVVcHBlckNhc2UoKSA9PT0gdXJsLnRvTG9jYWxlVXBwZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgICAgICR3aW5kb3cubG9jYXRpb24uaGFzaCA9ICcvP3Rlcm09JyArIGVuY29kZVVSSUNvbXBvbmVudChxdWVyeSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAkd2luZG93LmxvY2F0aW9uLmFzc2lnbih1cmwgKyAnIy8/dGVybT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5KSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICAgICAgbGluazogKHNjb3BlOiBhbmd1bGFyLklTY29wZSwgZWw6IGFuZ3VsYXIuSUF1Z21lbnRlZEpRdWVyeSwgYXR0cmliOiBTZWFyY2hCb3hBdHRyaWJ1dGVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpbnB1dCA9IGFuZ3VsYXIuZWxlbWVudChhdHRyaWIuc3RTZWFyY2hCb3hJbnB1dCB8fCAnLmZvcm0tY29udHJvbCcsIGVsKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGJ0biA9IGFuZ3VsYXIuZWxlbWVudChhdHRyaWIuc3RTZWFyY2hCb3hCdXR0b24gfHwgJy5idG4nLCBlbCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXR0cmliLnN0U2VhcmNoQm94ICYmIGlucHV0Lmxlbmd0aCA9PT0gMSAmJiBidG4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQub24oJ2tleXByZXNzJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUua2V5Q29kZSA9PT0gMTMgJiYgaW5wdXQudmFsKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0U2VhcmNoKGlucHV0LnZhbCgpLCBhdHRyaWIuc3RTZWFyY2hCb3gpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBidG4ub24oJ2NsaWNrJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnZhbCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY29wZS4kYXBwbHkoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibWl0U2VhcmNoKGlucHV0LnZhbCgpLCBhdHRyaWIuc3RTZWFyY2hCb3gpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG4gICAgU2VhcmNoQm94LiRpbmplY3QgPSBbJyR3aW5kb3cnXTtcclxuXHJcbiAgICBhbmd1bGFyLm1vZHVsZSgnc3Quc2VhcmNoJylcclxuICAgICAgICAuZGlyZWN0aXZlKCdzdFNlYXJjaEJveCcsIFNlYXJjaEJveCk7XHJcbn1cclxuIiwibmFtZXNwYWNlIHN0LnNlYXJjaCB7XHJcbiAgICBjbGFzcyBDb25zdGFudEZpbHRlcnNDb250cm9sbGVyIGltcGxlbWVudHMgY29udHJvbGxlcnMuSUNvbnN0YW50RmlsdGVyc0NvbnRyb2xsZXIge1xyXG5cclxuICAgICAgICBncm91cDogc3RyaW5nID0gRGVmYXVsdEdyb3VwO1xyXG4gICAgICAgIGZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfTtcclxuXHJcbiAgICAgICAgc3RhdGljICRpbmplY3QgPSBbJyRyb290U2NvcGUnLCAnc3RGYWNldFNlcnZpY2UnXTtcclxuXHJcbiAgICAgICAgY29uc3RydWN0b3IoJHJvb3RTY29wZTogYW5ndWxhci5JU2NvcGUsIHN0RmFjZXRTZXJ2aWNlOiBzZXJ2aWNlcy5JRmFjZXRTZXJ2aWNlKSB7XHJcbiAgICAgICAgICAgICRyb290U2NvcGUuJG9uKCdzdFJlZ2lzdGVyRmFjZXRzJywgKGU6IGFuZ3VsYXIuSUFuZ3VsYXJFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3RGYWNldFNlcnZpY2UuYWRkQ29uc3RhbnRGaWx0ZXJzKHRoaXMuZ3JvdXAsIHRoaXMuZmlsdGVycyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhbmd1bGFyLm1vZHVsZSgnc3Quc2VhcmNoJylcclxuICAgICAgICAuY29udHJvbGxlcignc3RDb25zdGFudEZpbHRlcnNDdHJsJywgQ29uc3RhbnRGaWx0ZXJzQ29udHJvbGxlcik7XHJcbn1cclxuIiwibmFtZXNwYWNlIHN0LnNlYXJjaCB7XHJcbiAgICBjbGFzcyBGYWNldEl0ZW1zQ29udHJvbGxlciBpbXBsZW1lbnRzIGNvbnRyb2xsZXJzLklGYWNldEl0ZW1zQ29udHJvbGxlciB7XHJcblxyXG4gICAgICAgIGdyb3VwOiBzdHJpbmcgPSBEZWZhdWx0R3JvdXA7XHJcbiAgICAgICAgbmFtZTogc3RyaW5nO1xyXG4gICAgICAgIGFsbG93TXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgICBwcml2YXRlIG1vZGVsOiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuICAgICAgICBwcml2YXRlIF9pdGVtczogbW9kZWxzLkZhY2V0SXRlbUNvbGxlY3Rpb24gPSBuZXcgbW9kZWxzLkZhY2V0SXRlbUNvbGxlY3Rpb24oKTtcclxuXHJcbiAgICAgICAgc3RhdGljICRpbmplY3QgPSBbJyRyb290U2NvcGUnLCAnc3RGYWNldFNlcnZpY2UnLCAnJGxvZyddO1xyXG5cclxuICAgICAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICAgICAgICAgICRyb290U2NvcGU6IGFuZ3VsYXIuSVJvb3RTY29wZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgICBwcml2YXRlIGZhY2V0U2VydmljZTogc2VydmljZXMuSUZhY2V0U2VydmljZSxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgJGxvZzogYW5ndWxhci5JTG9nU2VydmljZSkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5faXRlbXMuYWRkV2F0Y2goKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnkoKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAkcm9vdFNjb3BlLiRvbignc3RSZWdpc3RlckZhY2V0cycsIChlOiBhbmd1bGFyLklBbmd1bGFyRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZmFjZXRTZXJ2aWNlLnJlZ2lzdGVyRmFjZXRzKHRoaXMuZ3JvdXAsIHRoaXMubmFtZSwgdGhpcy5faXRlbXMpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICRyb290U2NvcGUuJG9uKCdzdEZhY2V0c0luaXQnLCAoZTogYW5ndWxhci5JQW5ndWxhckV2ZW50LCB2YWx1ZXM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZ1tdIH0sIGdyb3Vwczogc3RyaW5nW10pID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RlZE5hbWVzID0gdmFsdWVzW3RoaXMubmFtZV0gfHwgW107XHJcbiAgICAgICAgICAgICAgICBsZXQgY2hhbmdlZCA9IHRoaXMuX2l0ZW1zLnNldFNlbGVjdGVkTmFtZXMoc2VsZWN0ZWROYW1lcywgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNoYW5nZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBncm91cHMucHVzaCh0aGlzLmdyb3VwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgaXRlbXMoKTogbW9kZWxzLklGYWNldEl0ZW1bXSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9pdGVtcztcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0IGl0ZW1zKHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgICAgIHZhbHVlLmZvckVhY2goKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgdGhpcy5faXRlbXMucHVzaChhbmd1bGFyLmV4dGVuZChuZXcgbW9kZWxzLkZhY2V0SXRlbSh0aGlzLl9pdGVtcyksIGl0ZW0pKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBtb2RlbENoYW5nZWQoKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGxldCBpZHMgPSB0aGlzLm1vZGVsID8gQXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKSA/IDxzdHJpbmdbXT50aGlzLm1vZGVsIDogWzxzdHJpbmc+dGhpcy5tb2RlbF0gOiBbXTtcclxuICAgICAgICAgICAgdGhpcy5faXRlbXMuc2V0U2VsZWN0ZWRJZHMoaWRzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRvZ2dsZShpdGVtOiBtb2RlbHMuSUZhY2V0SXRlbSk6IHZvaWQ7XHJcbiAgICAgICAgdG9nZ2xlKGluZGV4OiBudW1iZXIpOiB2b2lkO1xyXG4gICAgICAgIHRvZ2dsZSh4KTogdm9pZCB7XHJcbiAgICAgICAgICAgIHRoaXMuX2l0ZW1zLnRvZ2dsZSh4LCB0aGlzLmFsbG93TXVsdGlwbGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYWRkKGl0ZW06IG1vZGVscy5JRmFjZXRJdGVtKTogdm9pZDtcclxuICAgICAgICBhZGQoaW5kZXg6IG51bWJlcik6IHZvaWQ7XHJcbiAgICAgICAgYWRkKHgpOiB2b2lkIHtcclxuICAgICAgICAgICAgdGhpcy5faXRlbXMuc2VsZWN0KHgsIHRoaXMuYWxsb3dNdWx0aXBsZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZW1vdmUoaXRlbTogbW9kZWxzLklGYWNldEl0ZW0pOiB2b2lkO1xyXG4gICAgICAgIHJlbW92ZShpbmRleDogbnVtYmVyKTogdm9pZDtcclxuICAgICAgICByZW1vdmUoeCk6IHZvaWQge1xyXG4gICAgICAgICAgICB0aGlzLl9pdGVtcy5kZXNlbGVjdCh4KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG5vdGlmeSgpIHtcclxuICAgICAgICAgICAgdGhpcy5mYWNldFNlcnZpY2UudXBkYXRlKHRoaXMubmFtZSwgdGhpcy5ncm91cCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFuZ3VsYXIubW9kdWxlKCdzdC5zZWFyY2gnKVxyXG4gICAgICAgIC5jb250cm9sbGVyKCdzdEZhY2V0SXRlbXNDdHJsJywgRmFjZXRJdGVtc0NvbnRyb2xsZXIpO1xyXG59XHJcbiIsIm5hbWVzcGFjZSBzdC5zZWFyY2gge1xyXG4gICAgY2xhc3MgRmFjZXRTZXJ2aWNlIGltcGxlbWVudHMgc2VydmljZXMuSUZhY2V0U2VydmljZSB7XHJcblxyXG4gICAgICAgIHB1YmxpYyBmYWNldEdyb3VwczogSUZhY2V0R3JvdXBzID0ge307XHJcbiAgICAgICAgcHVibGljIGlzU2VhcmNoaW5nOiB7IFtncm91cDogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XHJcbiAgICAgICAgcHVibGljIHJlc3VsdHM6IHsgW2dyb3VwOiBzdHJpbmddOiBzZXJ2aWNlcy5JU2VhcmNoUmVzcG9uc2UgfSA9IHt9O1xyXG5cclxuICAgICAgICBwcml2YXRlIF9maXJzdExvYWQgPSB0cnVlO1xyXG4gICAgICAgIHByaXZhdGUgX3N0U2VhcmNoQ29uZmlnOiBjb25maWd1cmF0aW9uLklTZWFyY2hDb25maWc7XHJcbiAgICAgICAgcHJpdmF0ZSBfc3RTZWFyY2hHcm91cENvbmZpZzogY29uZmlndXJhdGlvbi5JU2VhcmNoR3JvdXBDb25maWdzO1xyXG4gICAgICAgIHByaXZhdGUgX3JlZ2lzdGVyZWRHcm91cHM6IHN0cmluZ1tdID0gW107XHJcbiAgICAgICAgcHJpdmF0ZSBfZ3JvdXBzVXBkYXRlZDogc3RyaW5nW10gPSBudWxsO1xyXG4gICAgICAgIHByaXZhdGUgX2NvbnN0YW50RmlsdGVyczogeyBbZ3JvdXA6IHN0cmluZ106IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSB9ID0ge307XHJcblxyXG4gICAgICAgIC8vIHByaXZhdGUgc3RhdGljIE5hbWVSZWdleDogUmVnRXhwID0gL14oLispXFxbKFxcZCspXFxdJC87XHJcblxyXG4gICAgICAgIHN0YXRpYyAkaW5qZWN0ID0gWyckaW5qZWN0b3InLCAnJHJvb3RTY29wZScsICckbG9jYXRpb24nLCAnJGh0dHAnLCAnJHEnLCAnJGxvZycsICckZG9jdW1lbnQnXTtcclxuXHJcbiAgICAgICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgICAgICRpbmplY3RvcjogYW5ndWxhci5hdXRvLklJbmplY3RvclNlcnZpY2UsXHJcbiAgICAgICAgICAgIHByaXZhdGUgJHJvb3RTY29wZTogYW5ndWxhci5JUm9vdFNjb3BlU2VydmljZSxcclxuICAgICAgICAgICAgcHJpdmF0ZSAkbG9jYXRpb246IGFuZ3VsYXIuSUxvY2F0aW9uU2VydmljZSxcclxuICAgICAgICAgICAgcHJpdmF0ZSAkaHR0cDogYW5ndWxhci5JSHR0cFNlcnZpY2UsXHJcbiAgICAgICAgICAgIHByaXZhdGUgJHE6IGFuZ3VsYXIuSVFTZXJ2aWNlLFxyXG4gICAgICAgICAgICBwcml2YXRlICRsb2c6IGFuZ3VsYXIuSUxvZ1NlcnZpY2UsXHJcbiAgICAgICAgICAgIHByaXZhdGUgJGRvY3VtZW50OiBhbmd1bGFyLklEb2N1bWVudFNlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgICAgIGlmICgkaW5qZWN0b3IuaGFzKCdzdFNlYXJjaENvbmZpZycpICYmICRpbmplY3Rvci5oYXMoJ3N0U2VhcmNoR3JvdXBDb25maWcnKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc3RTZWFyY2hDb25maWcgPSA8Y29uZmlndXJhdGlvbi5JU2VhcmNoQ29uZmlnPiRpbmplY3Rvci5nZXQoJ3N0U2VhcmNoQ29uZmlnJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zdFNlYXJjaEdyb3VwQ29uZmlnID0gPGNvbmZpZ3VyYXRpb24uSVNlYXJjaEdyb3VwQ29uZmlncz4kaW5qZWN0b3IuZ2V0KCdzdFNlYXJjaEdyb3VwQ29uZmlnJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAkbG9nLmVycm9yKCdTZWFyY2ggQ29uZmlndXJhdGlvbiB3YXMgbmV2ZXIgZGVjbGFyZWQuIFlvdSBtdXN0IHBsYWNlIGEgRmFjZXQgU2VhcmNoIFJlc3VsdHMgd2lkZ2V0IG9uIHRoZSBwYWdlLicpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAkcm9vdFNjb3BlLiRvbignJGxvY2F0aW9uQ2hhbmdlU3VjY2VzcycsIChlOiBhbmd1bGFyLklBbmd1bGFyRXZlbnQsIG5ld1ZhbDogc3RyaW5nLCBvbGRWYWw6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX2ZpcnN0TG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuJGVtaXQoJ3N0UmVnaXN0ZXJGYWNldHMnKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYXJncyA9IDxhbnlbXT5PYmplY3Qua2V5cyh0aGlzLmZhY2V0R3JvdXBzKTtcclxuICAgICAgICAgICAgICAgICAgICBhcmdzLnVuc2hpZnQodGhpcy5fcmVnaXN0ZXJlZEdyb3Vwcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgYWRkVW5pcXVlLmFwcGx5KG51bGwsIGFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5fZ3JvdXBzVXBkYXRlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzZWFyY2ggPSBhbmd1bGFyLmNvcHkoJGxvY2F0aW9uLnNlYXJjaCgpKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgUGFnZVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWFyY2gucGFnZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgc2VhcmNoLnBhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBhbmd1bGFyLmZvckVhY2goc2VhcmNoLCAoaXRlbTogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5ICE9PSBUZXJtUHJvcGVydHlOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBpZiB0aGlzIGFsbG93cyBhIHRyZWUgb2YgZmFjZXRzL3RhZ3MsIHRoZW4gaXRlbSB3aWxsIGJlIGFuIEFycmF5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlLmcuIG5hbWU9dmFsMSZuYW1lPXZhbDImbmFtZT12YWwzID0+IHsgbmFtZTogWyAndmFsMScsICd2YWwyJywgJ3ZhbDMnIF0gfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoW2tleV0gPSBpdGVtLnNwbGl0KFVybFNlcGFyYXRvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVwZGF0ZWRHcm91cHM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICRyb290U2NvcGUuJGVtaXQoJ3N0RmFjZXRzSW5pdCcsIHNlYXJjaCwgdXBkYXRlZEdyb3Vwcyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRHcm91cHMuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBVcGRhdGVkKGdyb3VwKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZmlyc3RMb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVnaXN0ZXJlZEdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5fc3RTZWFyY2hHcm91cENvbmZpZ1tncm91cF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcuc2VhcmNoT25Mb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdyb3VwVXBkYXRlZChncm91cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZ3JvdXBzVXBkYXRlZCAmJiB0aGlzLl9ncm91cHNVcGRhdGVkLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICRsb2cuZGVidWcoJ3BlcmZvcm0gc2VhcmNoJywgdGhpcy5fZ3JvdXBzVXBkYXRlZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2dyb3Vwc1VwZGF0ZWQuZm9yRWFjaChncm91cCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0U2VhcmNoKGdyb3VwKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ3JvdXBzVXBkYXRlZCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9maXJzdExvYWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZWdpc3RlckZhY2V0cyhncm91cDogc3RyaW5nLCBuYW1lPzogc3RyaW5nLCBmaWx0ZXJzPzogbW9kZWxzLklGYWNldEl0ZW1bXSB8IHsgdGVybTogc3RyaW5nIH0pOiB2b2lkIHtcclxuICAgICAgICAgICAgZ3JvdXAgPSBncm91cCB8fCBEZWZhdWx0R3JvdXA7XHJcbiAgICAgICAgICAgIGxldCBmYWNldEdyb3VwID0gdGhpcy5mYWNldEdyb3Vwc1tncm91cF0gPSB0aGlzLmZhY2V0R3JvdXBzW2dyb3VwXSB8fCB7fTtcclxuICAgICAgICAgICAgaWYgKG5hbWUgJiYgZmlsdGVycykge1xyXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZmlsdGVycykpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZmlsdGVycy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmFjZXRHcm91cFtuYW1lXSA9IGZpbHRlcnM7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBmYWNldEdyb3VwW25hbWVdID0gZmlsdGVycztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0UGFnZShwYWdlSWQ6IG51bWJlciwgZ3JvdXA6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgICAgICBncm91cCA9IGdyb3VwIHx8IERlZmF1bHRHcm91cDtcclxuICAgICAgICAgICAgbGV0IGN1cnJlbnRQYWdlSWQgPSB0aGlzLmdldFBhZ2VJZChncm91cCk7XHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZUlkICE9PSBwYWdlSWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IHNldCBncm91cCBpbiB0aGUgVVJMXHJcbiAgICAgICAgICAgICAgICB0aGlzLiRsb2NhdGlvbi5zZWFyY2goUGFnZVByb3BlcnR5TmFtZSwgcGFnZUlkID4gMSA/IHBhZ2VJZCA6IG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncm91cFVwZGF0ZWQoZ3JvdXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRTb3J0QnkoZ3JvdXA6IHN0cmluZywgLi4uc29ydEJ5OiBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgICAgICAgICBncm91cCA9IGdyb3VwIHx8IERlZmF1bHRHcm91cDtcclxuICAgICAgICAgICAgY29uc3QgY3VycmVudFNvcnRCeSA9IHRoaXMuZ2V0U29ydEJ5KGdyb3VwKTtcclxuICAgICAgICAgICAgaWYgKCFhbmd1bGFyLmVxdWFscyhjdXJyZW50U29ydEJ5LCBzb3J0QnkpKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgcVNvcnQ6IHN0cmluZyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAoc29ydEJ5ICYmIHNvcnRCeS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgICAgICBxU29ydCA9IHNvcnRCeS5yZWR1Y2U8c3RyaW5nW10+KChwcmV2OiBzdHJpbmdbXSwgaXRlbTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtICYmIChpdGVtID0gaXRlbS50cmltKCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2LnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgW10pLmpvaW4oU29ydFNlcGFyYXRvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyByZXNldCBwYWdlIHRvIDEgaWYgbmVlZCBiZVxyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudFBhZ2VJZCA9IHRoaXMuZ2V0UGFnZUlkKGdyb3VwKTtcclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFnZUlkICE9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kbG9jYXRpb24uc2VhcmNoKFBhZ2VQcm9wZXJ0eU5hbWUsIG51bGwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gVE9ETzogc2V0IGdyb3VwIGluIHRoZSBVUkxcclxuICAgICAgICAgICAgICAgIHRoaXMuJGxvY2F0aW9uLnNlYXJjaChTb3J0UHJvcGVydHlOYW1lLCBxU29ydCB8fCBudWxsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBVcGRhdGVkKGdyb3VwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYWRkQ29uc3RhbnRGaWx0ZXJzKGdyb3VwOiBzdHJpbmcsIGZpbHRlcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfSk6IHZvaWQge1xyXG4gICAgICAgICAgICBsZXQgZmlsdGVyQWRkZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgZ3JvdXAgPSBncm91cCB8fCBEZWZhdWx0R3JvdXA7XHJcbiAgICAgICAgICAgIGxldCBncm91cEZpbHRlcnMgPSB0aGlzLl9jb25zdGFudEZpbHRlcnNbZ3JvdXBdID0gdGhpcy5fY29uc3RhbnRGaWx0ZXJzW2dyb3VwXSB8fCB7fTtcclxuICAgICAgICAgICAgYW5ndWxhci5mb3JFYWNoKGZpbHRlcnMsICh2YWx1ZXMsIGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgbGV0IGdyb3VwSXRlbXMgPSBncm91cEZpbHRlcnNba2V5XSA9IGdyb3VwRmlsdGVyc1trZXldIHx8IFtdO1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVzW2ldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3VwSXRlbXMucHVzaCh2YWx1ZXNbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJBZGRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKGZpbHRlckFkZGVkKSB7XHJcbiAgICAgICAgICAgICAgICBhZGRVbmlxdWUodGhpcy5fcmVnaXN0ZXJlZEdyb3VwcywgZ3JvdXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB1cGRhdGUobmFtZTogc3RyaW5nLCBncm91cDogc3RyaW5nLCBkb1NlYXJjaCA9IHRydWUpOiB2b2lkIHtcclxuICAgICAgICAgICAgZ3JvdXAgPSBncm91cCB8fCBEZWZhdWx0R3JvdXA7XHJcbiAgICAgICAgICAgIGxldCBmYWNldEdyb3VwID0gdGhpcy5mYWNldEdyb3Vwc1tncm91cF07XHJcbiAgICAgICAgICAgIGlmICghZmFjZXRHcm91cCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZTogc3RyaW5nIHwgbW9kZWxzLklGYWNldEl0ZW1bXSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmIChuYW1lID09PSBUZXJtUHJvcGVydHlOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmFjZXRHcm91cC50ZXJtICYmIGZhY2V0R3JvdXAudGVybS50ZXJtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBmYWNldEdyb3VwLnRlcm0udGVybTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gPG1vZGVscy5JRmFjZXRJdGVtW10+ZmFjZXRHcm91cFtuYW1lXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVVybCh2YWx1ZSwgbmFtZSk7XHJcblxyXG4gICAgICAgICAgICAvLyByZXNldCBwYWdlIHRvIDEgaWYgbmVlZCBiZVxyXG4gICAgICAgICAgICBsZXQgY3VycmVudFBhZ2VJZCA9IHRoaXMuZ2V0UGFnZUlkKGdyb3VwKTtcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlSWQgIT09IDEpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuJGxvY2F0aW9uLnNlYXJjaChQYWdlUHJvcGVydHlOYW1lLCBudWxsKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGRvU2VhcmNoKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyb3VwVXBkYXRlZChncm91cCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuJHJvb3RTY29wZS4kZW1pdCgnc3RTZWFyY2hVcGRhdGVkJywgZ3JvdXAsIG5hbWUsIHZhbHVlKTtcclxuICAgICAgICAgICAgdGhpcy4kbG9nLmRlYnVnKCdzdEZhY2V0VXBkYXRlZCcsIGdyb3VwLCBuYW1lLCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIHVwZGF0ZVVybCh2YWx1ZTogc3RyaW5nIHwgbW9kZWxzLklGYWNldEl0ZW1bXSwgbmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGxldCBxVmFsdWU6IHN0cmluZztcclxuICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgcVZhbHVlID0gbnVsbDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICBxVmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHFWYWx1ZSA9IHZhbHVlLnJlZHVjZSgoaXRlbXM6IHN0cmluZ1tdLCBpdGVtOiBtb2RlbHMuSUZhY2V0SXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbS5uYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zO1xyXG4gICAgICAgICAgICAgICAgfSwgW10pLmpvaW4oVXJsU2VwYXJhdG9yKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFxVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHFWYWx1ZSA9IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCF0aGlzLiRsb2NhdGlvbi5wYXRoKCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuJGxvY2F0aW9uLnBhdGgoJy8nKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLiRsb2NhdGlvbi5zZWFyY2gobmFtZSwgcVZhbHVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHByaXZhdGUgc3VibWl0U2VhcmNoKGdyb3VwOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICAgICAgbGV0IHJlcTogc2VydmljZXMuSVNlYXJjaFJlcXVlc3QgPSB7XHJcbiAgICAgICAgICAgICAgICBGaWx0ZXJzOiB7fSxcclxuICAgICAgICAgICAgICAgIEdyb3VwOiBncm91cFxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9zdFNlYXJjaENvbmZpZyB8fCAhdGhpcy5fc3RTZWFyY2hHcm91cENvbmZpZykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgaGFzRmlsdGVycyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBsZXQgaGFzQ29uc3RGaWx0ZXJzID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGxldCBncm91cENvbmZpZyA9IHRoaXMuX3N0U2VhcmNoR3JvdXBDb25maWdbZ3JvdXBdO1xyXG4gICAgICAgICAgICBpZiAoIWdyb3VwQ29uZmlnLmluZGV4TmFtZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy4kbG9nLmVycm9yKCdTZWFyY2ggSW5kZXggbm90IHNwZWNpZmllZCBmb3InLCBncm91cCA/ICgnZ3JvdXA6IFwiJyArIGdyb3VwICsgJ1wiJykgOiAnZGVmYXVsdCBncm91cCcpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXEuSXRlbXNQZXJQYWdlID0gZ3JvdXBDb25maWcuaXRlbXNQZXJQYWdlO1xyXG4gICAgICAgICAgICByZXEuT3JGYWNldHMgPSBncm91cENvbmZpZy5vckZhY2V0cztcclxuICAgICAgICAgICAgcmVxLlNlYXJjaEZpZWxkcyA9IGdyb3VwQ29uZmlnLnNlYXJjaEZpZWxkcztcclxuICAgICAgICAgICAgcmVxLkhpZ2hsaWdodGVkRmllbGRzID0gZ3JvdXBDb25maWcuaGlnaGxpZ2h0ZWRGaWVsZHM7XHJcblxyXG4gICAgICAgICAgICBsZXQgY29uc3RGaWx0ZXJzID0gdGhpcy5fY29uc3RhbnRGaWx0ZXJzW2dyb3VwXSB8fCB7fTtcclxuICAgICAgICAgICAgYW5ndWxhci5mb3JFYWNoKGNvbnN0RmlsdGVycywgKGl0ZW1zLCBrZXkpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJzID0gcmVxLkZpbHRlcnNba2V5XSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGtleSAmJiBpdGVtcykge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW1zW2ldKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJzLnB1c2goaXRlbXNbaV0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzQ29uc3RGaWx0ZXJzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBsZXQgZmFjZXRHcm91cCA9IHRoaXMuZmFjZXRHcm91cHNbZ3JvdXBdO1xyXG4gICAgICAgICAgICBhbmd1bGFyLmZvckVhY2goZmFjZXRHcm91cCwgKHZhbHVlLCBuYW1lKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gVGVybVByb3BlcnR5TmFtZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXJtQ3RybCA9IDxjb250cm9sbGVycy5JVGVybUZhY2V0Q29udHJvbGxlcj52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGVybUN0cmwgJiYgdGVybUN0cmwudGVybSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXEuVGVybSA9IHRlcm1DdHJsLnRlcm07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbXMgPSA8bW9kZWxzLklGYWNldEl0ZW1bXT52YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtcy5mb3JFYWNoKGZhY2V0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2V0LnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxLkZpbHRlcnNbbmFtZV0gPSByZXEuRmlsdGVyc1tuYW1lXSB8fCBbXSkucHVzaChmYWNldC5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNGaWx0ZXJzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmICghaGFzRmlsdGVycyAmJiAhaGFzQ29uc3RGaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgICAgICBkZWxldGUgcmVxLkZpbHRlcnM7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChncm91cENvbmZpZy5hbGxvd0VtcHR5U2VhcmNoIHx8IHJlcS5UZXJtIHx8IGhhc0ZpbHRlcnMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNTZWFyY2hpbmdbZ3JvdXBdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGxldCByZXNwUHJvbWlzZXM6IGFuZ3VsYXIuSUh0dHBQcm9taXNlPHNlcnZpY2VzLklTZWFyY2hSZXNwb25zZT5bXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBhZ2VJZCA9IHRoaXMuZ2V0UGFnZUlkKGdyb3VwKTtcclxuICAgICAgICAgICAgICAgIGxldCBzb3J0QnkgPSB0aGlzLmdldFNvcnRCeShncm91cCk7XHJcblxyXG4gICAgICAgICAgICAgICAgcmVxLlNraXAgPSByZXEuSXRlbXNQZXJQYWdlICogKHBhZ2VJZCAtIDEpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNvcnRCeSAmJiBzb3J0QnkubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVxLlNvcnRCeSA9IHNvcnRCeTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgZmlyc3RSZXNwID0gdGhpcy5zdWJtaXRTZWFyY2hSZXEocmVxLCBncm91cENvbmZpZy5pbmRleE5hbWUpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChwYWdlSWQgPiAxICYmIHRoaXMuX2ZpcnN0TG9hZCAmJiBncm91cENvbmZpZy5sb2FkQWxsUGFnZXNPbkluaXQpIHtcclxuICAgICAgICAgICAgICAgICAgICB3aGlsZSAocGFnZUlkID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlSWQtLTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxID0gYW5ndWxhci5jb3B5KHJlcSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcS5Ta2lwID0gcmVxLkl0ZW1zUGVyUGFnZSAqIChwYWdlSWQgLSAxKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcFByb21pc2VzLnB1c2godGhpcy5zdWJtaXRTZWFyY2hSZXEocmVxLCBncm91cENvbmZpZy5pbmRleE5hbWUpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgcmVzcFByb21pc2VzLnB1c2goZmlyc3RSZXNwKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLiRxLmFsbChyZXNwUHJvbWlzZXMpXHJcbiAgICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzcHMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGFnZXMgPSByZXNwcy5tYXAocmVzcCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzcC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGFyZyA9IHBhZ2VzLmxlbmd0aCA9PT0gMSA/IHBhZ2VzWzBdIDogcGFnZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0c1tncm91cF0gPSBwYWdlc1twYWdlcy5sZW5ndGggLSAxXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kcm9vdFNjb3BlLiRlbWl0KCdzdFNlYXJjaFJlc3BvbnNlJywgYXJnLCBncm91cCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGxvZy5kZWJ1ZygnU2VhcmNoIHJlc3VsdCBmb3IgZ3JvdXA6JywgZ3JvdXAsICc7IFJlc3VsdDonLCBhcmcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIGRhdGEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLiRsb2cuZXJyb3IoJ0Vycm9yIHN1Ym1pdHRpbmcgc2VhcmNoIGZvciBncm91cDonLCBncm91cCwgJzsgRXJyb3IgZGF0YTonLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1NlYXJjaGluZ1tncm91cF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0c1tncm91cF0gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy4kcm9vdFNjb3BlLiRlbWl0KCdzdFNlYXJjaFJlc3BvbnNlJywgbnVsbCwgZ3JvdXApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy4kbG9nLmRlYnVnKCdTZWFyY2ggQ2xlYXJlZCBmb3IgZ3JvdXA6JywgZ3JvdXApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXRQYWdlSWQoZ3JvdXA6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgICAgIGxldCBxUGFnZTogc3RyaW5nO1xyXG4gICAgICAgICAgICBsZXQgc2VhcmNoID0gdGhpcy4kbG9jYXRpb24uc2VhcmNoKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5fcmVnaXN0ZXJlZEdyb3Vwcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICBxUGFnZSA9IHNlYXJjaFsoZ3JvdXAgfHwgRGVmYXVsdEdyb3VwKSArIFVybFNlcGFyYXRvciArIFBhZ2VQcm9wZXJ0eU5hbWVdO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcVBhZ2UgPSBzZWFyY2hbUGFnZVByb3BlcnR5TmFtZV07XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChxUGFnZSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBhZ2VJZCA9IHBhcnNlSW50KHFQYWdlLCAxMCk7XHJcbiAgICAgICAgICAgICAgICBpZiAocGFnZUlkID4gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwYWdlSWQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZ2V0U29ydEJ5KGdyb3VwOiBzdHJpbmcpOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgICAgIGxldCBxU29ydDogc3RyaW5nO1xyXG4gICAgICAgICAgICBjb25zdCBzZWFyY2ggPSB0aGlzLiRsb2NhdGlvbi5zZWFyY2goKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9yZWdpc3RlcmVkR3JvdXBzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgIHFTb3J0ID0gc2VhcmNoWyhncm91cCB8fCBEZWZhdWx0R3JvdXApICsgVXJsU2VwYXJhdG9yICsgU29ydFByb3BlcnR5TmFtZV07XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBxU29ydCA9IHNlYXJjaFtTb3J0UHJvcGVydHlOYW1lXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHFTb3J0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcVNvcnQuc3BsaXQoU29ydFNlcGFyYXRvcikucmVkdWNlPHN0cmluZ1tdPigocHJldjogc3RyaW5nW10sIGl0ZW06IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtICYmIChpdGVtID0gaXRlbS50cmltKCkpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXYucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XHJcbiAgICAgICAgICAgICAgICB9LCBbXSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJldHVybiBbXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHByaXZhdGUgc3VibWl0U2VhcmNoUmVxKHJlcXVlc3Q6IHNlcnZpY2VzLklTZWFyY2hSZXF1ZXN0LCBpbmRleE5hbWU6IHN0cmluZykge1xyXG5cclxuICAgICAgICAgICAgLy8gTmVlZCB0byBwYXNzIGxhbmd1YWdlIHRvIEFQSSBjYWxsIHNvIHRoYXQgY3VsdHVyZSB3aWxsIGJlIHNldCBjb3JyZWN0bHksXHJcbiAgICAgICAgICAgIC8vIGluIG9yZGVyIHRvIHJldHVybiBkb2N1bWVudHMgaW4gdGhlIGNvcnJlY3QgbGFuZ3VhZ2UuXHJcbiAgICAgICAgICAgIGxldCBjb25maWc6IGFuZ3VsYXIuSVJlcXVlc3RTaG9ydGN1dENvbmZpZyA9IHt9O1xyXG4gICAgICAgICAgICBsZXQgbGFuZyA9IHRoaXMuJGRvY3VtZW50WzBdLmRvY3VtZW50RWxlbWVudC5sYW5nO1xyXG5cclxuICAgICAgICAgICAgaWYgKGxhbmcpIHtcclxuICAgICAgICAgICAgICAgIGNvbmZpZy5oZWFkZXJzID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBsYW5nXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5fc3RTZWFyY2hDb25maWcuc2l0ZUlkKSB7XHJcbiAgICAgICAgICAgICAgICByZXF1ZXN0LlNpdGVJZCA9IHRoaXMuX3N0U2VhcmNoQ29uZmlnLnNpdGVJZDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGh0dHAucG9zdDxzZXJ2aWNlcy5JU2VhcmNoUmVzcG9uc2U+KHRoaXMuX3N0U2VhcmNoQ29uZmlnLmVuZHBvaW50ICsgJy8nICsgaW5kZXhOYW1lLCByZXF1ZXN0LCBjb25maWcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBncm91cFVwZGF0ZWQoZ3JvdXA6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2dyb3Vwc1VwZGF0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2dyb3Vwc1VwZGF0ZWQgPSBbXTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYWRkVW5pcXVlKHRoaXMuX2dyb3Vwc1VwZGF0ZWQsIGdyb3VwIHx8IERlZmF1bHRHcm91cCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGFkZFVuaXF1ZTxUPihjb2xsOiBUW10sIC4uLml0ZW1zOiBUW10pIHtcclxuICAgICAgICBpZiAoaXRlbXMgJiYgaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sbC5pbmRleE9mKGl0ZW0pID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbGwucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFuZ3VsYXIubW9kdWxlKCdzdC5zZWFyY2gnKVxyXG4gICAgICAgIC5zZXJ2aWNlKCdzdEZhY2V0U2VydmljZScsIEZhY2V0U2VydmljZSk7XHJcbn1cclxuIiwibmFtZXNwYWNlIHN0LnNlYXJjaC5tb2RlbHMge1xyXG4gICAgZXhwb3J0IGNsYXNzIEZhY2V0SXRlbSBpbXBsZW1lbnRzIElGYWNldEl0ZW0ge1xyXG4gICAgICAgIGlkOiBzdHJpbmc7XHJcbiAgICAgICAgdGl0bGU6IHN0cmluZztcclxuICAgICAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgcHJpdmF0ZSBfc2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAgICAgY29uc3RydWN0b3IocHJpdmF0ZSBfcGFyZW50OiBGYWNldEl0ZW1Db2xsZWN0aW9uKSB7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgc2VsZWN0ZWQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0IHNlbGVjdGVkKHZhbCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWQgIT09IHZhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB2YWw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9wYXJlbnQubm90aWZ5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRXh0ZW5kaW5nIGFuIEFycmF5IGluIHRoaXMgd2F5IGlzIG9ubHkgc3VwcG9ydGVkIGluIFR5cGVTY3JpcHQgPiB2Mi4xXHJcbiAgICBleHBvcnQgY2xhc3MgRmFjZXRJdGVtQ29sbGVjdGlvbiBleHRlbmRzIEFycmF5PEZhY2V0SXRlbT4ge1xyXG4gICAgICAgIHByaXZhdGUgX3dhdGNoZXJzOiBGdW5jdGlvbltdID0gW107XHJcbiAgICAgICAgcHJpdmF0ZSBfbm90aWZpY2F0aW9uQ3R4OiB7IG5vdGlmaWVkOiBib29sZWFuIH0gPSBudWxsO1xyXG5cclxuICAgICAgICBpbmRleE9mSWQoaWQ6IHN0cmluZyk6IG51bWJlciB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlkID09PSB0aGlzW2ldLmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaW5kZXhPZk5hbWUobmFtZTogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAobmFtZSA9PT0gdGhpc1tpXS5uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgYWRkV2F0Y2god2F0Y2hlcjogRnVuY3Rpb24pOiB2b2lkIHtcclxuICAgICAgICAgICAgdGhpcy5fd2F0Y2hlcnMucHVzaCh3YXRjaGVyKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG5vdGlmeSgpOiB2b2lkIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX25vdGlmaWNhdGlvbkN0eCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uQ3R4Lm5vdGlmaWVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3dhdGNoZXJzLmZvckVhY2goZm4gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGZuKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogU3VwcHJlc3NlcyB0aGUgbm90aWZpY2FpdG9uIG9mIGNoYW5nZWQgaXRlbXMuXHJcbiAgICAgICAgICogQHBhcm0gVGhlIGNhbGxiYWNrLlxyXG4gICAgICAgICAqIEByZXR1cm5zIHRydWUgaWYgYSBjaGFuZ2Ugb2NjdXJlZDsgb3RoZXJ3aXNlIGZhbHNlLlxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN1cHByZXNzTm90aWZ5KGNhbGxiYWNrOiBGdW5jdGlvbik6IGJvb2xlYW4ge1xyXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgICAgIGxldCBvcmlnQ3R4ID0gdGhpcy5fbm90aWZpY2F0aW9uQ3R4O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uQ3R4ID0geyBub3RpZmllZDogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgaGFzTm90aWZpZWQgPSB0aGlzLl9ub3RpZmljYXRpb25DdHgubm90aWZpZWQ7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25DdHggPSBvcmlnQ3R4O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGhhc05vdGlmaWVkO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNsZWFyU2VsZWN0ZWQobm90ZnkgPSB0cnVlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgICAgIGxldCBoYXNDaGFuZ2VkID0gdGhpcy5zdXBwcmVzc05vdGlmeSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlZCAmJiBub3RmeSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnkoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gaGFzQ2hhbmdlZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldFNlbGVjdGVkSWRzKGlkczogc3RyaW5nW10sIG5vdGlmeSA9IHRydWUpOiBib29sZWFuIHtcclxuICAgICAgICAgICAgbGV0IGhhc0NoYW5nZWQgPSB0aGlzLnNldFNlbGVjdGVkKGlkcywgJ2lkJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlZCAmJiBub3RpZnkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGhhc0NoYW5nZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRTZWxlY3RlZE5hbWVzKG5hbWVzOiBzdHJpbmdbXSwgbm90aWZ5ID0gdHJ1ZSk6IGJvb2xlYW4ge1xyXG4gICAgICAgICAgICBsZXQgaGFzQ2hhbmdlZCA9IHRoaXMuc2V0U2VsZWN0ZWQobmFtZXMsICduYW1lJyk7XHJcblxyXG4gICAgICAgICAgICBpZiAoaGFzQ2hhbmdlZCAmJiBub3RpZnkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGhhc0NoYW5nZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIHNldFNlbGVjdGVkKGl0ZW1zOiBzdHJpbmdbXSwgcHJvcE5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgICAgICAgICBsZXQgaGFzQ2hhbmdlZCA9IHRoaXMuc3VwcHJlc3NOb3RpZnkoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBpdGVtcyA/IGl0ZW1zLmluZGV4T2YoaXRlbVtwcm9wTmFtZV0pID49IDAgOiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIGhhc0NoYW5nZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIGZpbmRJdGVtKGl0ZW06IHsgaWQ6IHN0cmluZywgbmFtZTogc3RyaW5nIH0pOiBJRmFjZXRJdGVtO1xyXG4gICAgICAgIHByaXZhdGUgZmluZEl0ZW0oaW5kZXg6IG51bWJlcik6IElGYWNldEl0ZW07XHJcbiAgICAgICAgcHJpdmF0ZSBmaW5kSXRlbSh4OiBhbnkpOiBJRmFjZXRJdGVtIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW06IElGYWNldEl0ZW0gPSBudWxsO1xyXG4gICAgICAgICAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHggIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbmRleE9mKHgpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0geDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHggPT09ICdudW1iZXInKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbSA9IHRoaXNbeF07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHguaWQgJiYgKGkgPSB0aGlzLmluZGV4T2ZJZCh4LmlkKSkgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzW2ldO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh4Lm5hbWUgJiYgKGkgPSB0aGlzLmluZGV4T2ZOYW1lKHgubmFtZSkpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpc1tpXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRvZ2dsZShpdGVtOiBJRmFjZXRJdGVtLCBhbGxvd011bHRpcGxlOiBib29sZWFuKTogdm9pZDtcclxuICAgICAgICB0b2dnbGUoaW5kZXg6IG51bWJlciwgYWxsb3dNdWx0aXBsZTogYm9vbGVhbik6IHZvaWQ7XHJcbiAgICAgICAgdG9nZ2xlKHg6IGFueSwgYWxsb3dNdWx0aXBsZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHRoaXMuZmluZEl0ZW0oeCk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFhbGxvd011bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJTZWxlY3RlZChmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZWxlY3QoaXRlbTogSUZhY2V0SXRlbSwgYWxsb3dNdWx0aXBsZTogYm9vbGVhbik6IHZvaWQ7XHJcbiAgICAgICAgc2VsZWN0KGluZGV4OiBudW1iZXIsIGFsbG93TXVsdGlwbGU6IGJvb2xlYW4pOiB2b2lkO1xyXG4gICAgICAgIHNlbGVjdCh4OiBhbnksIGFsbG93TXVsdGlwbGU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW0gPSB0aGlzLmZpbmRJdGVtKHgpO1xyXG4gICAgICAgICAgICBpZiAoaXRlbSAmJiAhaXRlbS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCFhbGxvd011bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhclNlbGVjdGVkKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkZXNlbGVjdChpdGVtOiBJRmFjZXRJdGVtKTogdm9pZDtcclxuICAgICAgICBkZXNlbGVjdChpbmRleDogbnVtYmVyKTogdm9pZDtcclxuICAgICAgICBkZXNlbGVjdCh4KTogdm9pZCB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gdGhpcy5maW5kSXRlbSh4KTtcclxuICAgICAgICAgICAgaWYgKGl0ZW0gJiYgaXRlbS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgaXRlbS5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiIsIm5hbWVzcGFjZSBzdC5zZWFyY2gge1xyXG4gICAgY2xhc3MgVGVybUZhY2V0Q29udHJvbGxlciBpbXBsZW1lbnRzIGNvbnRyb2xsZXJzLklUZXJtRmFjZXRDb250cm9sbGVyIHtcclxuXHJcbiAgICAgICAgZ3JvdXA6IHN0cmluZyA9IERlZmF1bHRHcm91cDtcclxuICAgICAgICBuYW1lOiBzdHJpbmc7XHJcbiAgICAgICAgbW9kZWw6IHN0cmluZztcclxuICAgICAgICBwcml2YXRlIF90ZXJtOiBzdHJpbmc7XHJcblxyXG4gICAgICAgIHN0YXRpYyAkaW5qZWN0ID0gWyckcm9vdFNjb3BlJywgJ3N0RmFjZXRTZXJ2aWNlJ107XHJcblxyXG4gICAgICAgIGNvbnN0cnVjdG9yKCRyb290U2NvcGU6IGFuZ3VsYXIuSVJvb3RTY29wZVNlcnZpY2UsIHByaXZhdGUgc3RGYWNldFNlcnZpY2U6IHNlcnZpY2VzLklGYWNldFNlcnZpY2UpIHtcclxuICAgICAgICAgICAgJHJvb3RTY29wZS4kb24oJ3N0UmVnaXN0ZXJGYWNldHMnLCAoZTogYW5ndWxhci5JQW5ndWxhckV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzdEZhY2V0U2VydmljZS5yZWdpc3RlckZhY2V0cyh0aGlzLmdyb3VwLCBUZXJtUHJvcGVydHlOYW1lLCB0aGlzKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAkcm9vdFNjb3BlLiRvbignc3RGYWNldHNJbml0JywgKGUsIHNlYXJjaDogeyB0ZXJtOiBzdHJpbmcgfSwgZ3JvdXBzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Rlcm0gIT09IHNlYXJjaC50ZXJtIHx8IHRoaXMubW9kZWwgIT09IHNlYXJjaC50ZXJtKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGVybSA9IHRoaXMubW9kZWwgPSBzZWFyY2gudGVybTtcclxuICAgICAgICAgICAgICAgICAgICBncm91cHMucHVzaCh0aGlzLmdyb3VwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgdGVybSgpOiBzdHJpbmcge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdGVybTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0IHRlcm0odmFsOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3Rlcm0gIT09IHZhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdGVybSA9IHRoaXMubW9kZWwgPSB2YWw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0RmFjZXRTZXJ2aWNlLnVwZGF0ZShUZXJtUHJvcGVydHlOYW1lLCB0aGlzLmdyb3VwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbm90aWZ5KCk6IHZvaWQge1xyXG4gICAgICAgICAgICB0aGlzLnRlcm0gPSB0aGlzLm1vZGVsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhbmd1bGFyLm1vZHVsZSgnc3Quc2VhcmNoJylcclxuICAgICAgICAuY29udHJvbGxlcignc3RUZXJtRmFjZXRDdHJsJywgVGVybUZhY2V0Q29udHJvbGxlcik7XHJcbn1cclxuIiwibmFtZXNwYWNlIHN0LnNlYXJjaCB7XHJcbiAgICBjbGFzcyBGYWNldFNlYXJjaFJlc3VsdHNDb250cm9sbGVyIGltcGxlbWVudHMgY29udHJvbGxlcnMuSUZhY2V0U2VhcmNoUmVzdWx0c0NvbnRyb2xsZXIge1xyXG5cclxuICAgICAgICBncm91cDogc3RyaW5nID0gRGVmYXVsdEdyb3VwO1xyXG4gICAgICAgIHJlc3VsdHM6IHNlcnZpY2VzLklTZWFyY2hSZXNwb25zZTtcclxuICAgICAgICBwYWdlczogbW9kZWxzLklSZXN1bHRQYWdlW10gPSBbXTtcclxuXHJcbiAgICAgICAgc3RhdGljICRpbmplY3QgPSBbJyRyb290U2NvcGUnLCAnc3RGYWNldFNlcnZpY2UnXTtcclxuXHJcbiAgICAgICAgY29uc3RydWN0b3IoJHJvb3RTY29wZTogYW5ndWxhci5JUm9vdFNjb3BlU2VydmljZSwgcHJpdmF0ZSBmYWNldFNlcnZpY2U6IHNlcnZpY2VzLklGYWNldFNlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgICAgICRyb290U2NvcGUuJG9uKCdzdFJlZ2lzdGVyRmFjZXRzJywgKGU6IGFuZ3VsYXIuSUFuZ3VsYXJFdmVudCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mYWNldFNlcnZpY2UucmVnaXN0ZXJGYWNldHModGhpcy5ncm91cCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgJHJvb3RTY29wZS4kb24oJ3N0RmFjZXRzSW5pdCcsIChlOiBhbmd1bGFyLklBbmd1bGFyRXZlbnQsIHNlYXJjaCwgZ3JvdXBzOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3VyUGFnZSA9IHRoaXMuZmFjZXRTZXJ2aWNlLmdldFBhZ2VJZCh0aGlzLmdyb3VwKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VDaGFuZ2VkID0gdGhpcy5zZWxlY3RQYWdlSWQoY3VyUGFnZSwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhZ2VDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzLnB1c2godGhpcy5ncm91cCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzb3J0ID0gdGhpcy5mYWNldFNlcnZpY2UuZ2V0U29ydEJ5KHRoaXMuZ3JvdXApLmpvaW4oU29ydFNlcGFyYXRvcik7XHJcbiAgICAgICAgICAgICAgICBpZiAoc29ydCAmJiAoPGFueT50aGlzKS5zb3J0QnkgIT09IHNvcnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAoPGFueT50aGlzKS5zb3J0QnkgPSBzb3J0O1xyXG4gICAgICAgICAgICAgICAgICAgIGdyb3Vwcy5wdXNoKHRoaXMuZ3JvdXApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICRyb290U2NvcGUuJG9uKCdzdFNlYXJjaFJlc3BvbnNlJywgKFxyXG4gICAgICAgICAgICAgICAgZTogYW5ndWxhci5JQW5ndWxhckV2ZW50LFxyXG4gICAgICAgICAgICAgICAgcmVzcG9uc2U6IHNlcnZpY2VzLklTZWFyY2hSZXNwb25zZSB8IHNlcnZpY2VzLklTZWFyY2hSZXNwb25zZVtdLFxyXG4gICAgICAgICAgICAgICAgZ3JvdXA6IHN0cmluZ1xyXG4gICAgICAgICAgICApID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghYW5ndWxhci5pc1VuZGVmaW5lZChncm91cCkgJiYgZ3JvdXAgPT09IHRoaXMuZ3JvdXApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNwb25zZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXN1bHRzID0gcmVzcG9uc2VbcmVzcG9uc2UubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdHMgPSByZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVzdWx0cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2VzLmxlbmd0aCA9IHRoaXMucmVzdWx0cy5QYWdlcztcclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlc3VsdHMuUGFnZXM7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnZXNbaV0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2VzW2ldLmlzQWN0aXZlID0gaSA9PT0gdGhpcy5yZXN1bHRzLlBhZ2UgLSAxO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZ2VzW2ldID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZDogaSArIDEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQWN0aXZlOiBpID09PSB0aGlzLnJlc3VsdHMuUGFnZSAtIDFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWdlcy5sZW5ndGggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBnZXQgaXNTZWFyY2hpbmcoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmZhY2V0U2VydmljZS5pc1NlYXJjaGluZ1t0aGlzLmdyb3VwXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNlbGVjdFBhZ2UocGFnZTogbW9kZWxzLklSZXN1bHRQYWdlLCBub3RpZnkgPSB0cnVlKTogYm9vbGVhbiB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdFBhZ2VJZChwYWdlLmlkLCBub3RpZnkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2VsZWN0UGFnZUluZGV4KGluZGV4OiBudW1iZXIsIG5vdGlmeSA9IHRydWUpOiBib29sZWFuIHtcclxuICAgICAgICAgICAgbGV0IHBhZ2U6IG1vZGVscy5JUmVzdWx0UGFnZTtcclxuICAgICAgICAgICAgaWYgKDAgPD0gaW5kZXggJiYgaW5kZXggPCB0aGlzLnBhZ2VzLmxlbmd0aCAmJiAocGFnZSA9IHRoaXMucGFnZXNbaW5kZXhdKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0UGFnZUlkKHBhZ2UuaWQsIG5vdGlmeSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2VsZWN0UGFnZUlkKGlkOiBudW1iZXIsIG5vdGlmeSA9IHRydWUpOiBib29sZWFuIHtcclxuICAgICAgICAgICAgbGV0IHBhZ2VDaGFuZ2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMucGFnZXMuZm9yRWFjaChwYWdlID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChwYWdlLmlkID09PSBpZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFnZS5pc0FjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlLmlzQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUNoYW5nZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhZ2UuaXNBY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS5pc0FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ2hhbmdlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKHBhZ2VDaGFuZ2VkICYmIG5vdGlmeSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mYWNldFNlcnZpY2Uuc2V0UGFnZShpZCwgdGhpcy5ncm91cCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHBhZ2VDaGFuZ2VkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbmV4dFBhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgICAgIGxldCBpZENoYW5nZWQgPSAwO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucGFnZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2UgPSB0aGlzLnBhZ2VzW2ldO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhZ2UuaXNBY3RpdmUpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCB0aGlzLnBhZ2VzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlLmlzQWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZXNbaSArIDFdLmlzQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWRDaGFuZ2VkID0gdGhpcy5wYWdlc1tpICsgMV0uaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpZENoYW5nZWQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZhY2V0U2VydmljZS5zZXRQYWdlKGlkQ2hhbmdlZCwgdGhpcy5ncm91cCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcmV2UGFnZSgpOiBib29sZWFuIHtcclxuICAgICAgICAgICAgbGV0IGlkQ2hhbmdlZCA9IDA7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wYWdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGFnZSA9IHRoaXMucGFnZXNbaV07XHJcbiAgICAgICAgICAgICAgICBpZiAocGFnZS5pc0FjdGl2ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlLmlzQWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFnZXNbaSAtIDFdLmlzQWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWRDaGFuZ2VkID0gdGhpcy5wYWdlc1tpIC0gMV0uaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChpZENoYW5nZWQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmZhY2V0U2VydmljZS5zZXRQYWdlKGlkQ2hhbmdlZCwgdGhpcy5ncm91cCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBUaGlzIGlzIHJlYWxseSBmb3IgZGVtbyBwdXJwb3NlcyBvZiBzb3J0aW5nXHJcbiAgICAgICAgc29ydENoYW5nZWQoKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGNvbnN0IHg6IGFueVtdID0gKCg8YW55PnRoaXMpLnNvcnRCeSB8fCAnJykuc3BsaXQoU29ydFNlcGFyYXRvcik7XHJcbiAgICAgICAgICAgIHgudW5zaGlmdCh0aGlzLmdyb3VwKTtcclxuICAgICAgICAgICAgdGhpcy5mYWNldFNlcnZpY2Uuc2V0U29ydEJ5LmFwcGx5KHRoaXMuZmFjZXRTZXJ2aWNlLCB4KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYW5ndWxhci5tb2R1bGUoJ3N0LnNlYXJjaCcpXHJcbiAgICAgICAgLmNvbnRyb2xsZXIoJ3N0RmFjZXRTZWFyY2hSZXN1bHRzQ3RybCcsIEZhY2V0U2VhcmNoUmVzdWx0c0NvbnRyb2xsZXIpO1xyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==\r\n","(function () {\r\n angular.module('st').controller('stLoadNextFacetSearchResultsCtrl', LoadNextFacetSearchResultsCtrl);\r\n\r\n LoadNextFacetSearchResultsCtrl.$inject = ['$rootScope', 'stFacetService', '$location'];\r\n\r\n function LoadNextFacetSearchResultsCtrl($rootScope, facetService, $location) {\r\n var _this = this;\r\n this.facetService = facetService;\r\n this.group = st.search.DefaultGroup;\r\n this.pages = [];\r\n\r\n $rootScope.$on('stRegisterFacets', function (e) {\r\n _this.facetService.registerFacets(_this.group);\r\n });\r\n\r\n $rootScope.$on('stFacetsInit', function (e, search, groups) {\r\n var curPage = _this.facetService.getPageId(_this.group);\r\n var pageChanged = _this.selectPageId(curPage, false);\r\n if (pageChanged) {\r\n groups.push(_this.group);\r\n }\r\n });\r\n\r\n $rootScope.$on('stSearchResponse', function (e, response, group) {\r\n if (!angular.isUndefined(group) && group === _this.group) {\r\n if (Array.isArray(response)) {\r\n if (response.length) {\r\n this.results = response[response.length - 1];\r\n }\r\n } else {\r\n _this.results = response;\r\n }\r\n if (_this.results) {\r\n _this.pages.length = _this.results.Pages;\r\n for (var i = 0; i < _this.results.Pages; i++) {\r\n if (_this.pages[i]) {\r\n _this.pages[i].isActive = i === _this.results.Page - 1;\r\n }\r\n else {\r\n _this.pages[i] = {\r\n id: i + 1,\r\n isActive: i === _this.results.Page - 1\r\n };\r\n }\r\n }\r\n }\r\n else {\r\n _this.pages.length = 0;\r\n }\r\n\r\n\r\n $rootScope.$watch(function () {\r\n if ($('.popup-video').length > 0) {\r\n\r\n $('.popup-video').each(function () {\r\n $(this).magnificPopup({\r\n disableOn: 575,\r\n type: 'iframe',\r\n preloader: false,\r\n fixedContentPos: true\r\n });\r\n });\r\n\r\n }\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n Object.defineProperty(LoadNextFacetSearchResultsCtrl.prototype, \"isSearching\", {\r\n get: function () {\r\n return this.facetService.isSearching[this.group];\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n\r\n LoadNextFacetSearchResultsCtrl.prototype.selectPage = function (page) {\r\n $('html, body').animate({ scrollTop: 0 }, 100);\r\n return this.selectPageId(page.id, true);\r\n };\r\n\r\n LoadNextFacetSearchResultsCtrl.prototype.selectPageId = function (id, notify) {\r\n\r\n var pageChanged = false;\r\n this.pages.forEach(function (page) {\r\n if (page.id === id) {\r\n if (!page.isActive) {\r\n page.isActive = true;\r\n pageChanged = true;\r\n }\r\n }\r\n else {\r\n if (page.isActive) {\r\n page.isActive = false;\r\n pageChanged = true;\r\n }\r\n }\r\n });\r\n if (pageChanged && notify) {\r\n this.facetService.setPage(id, this.group);\r\n }\r\n return pageChanged;\r\n };\r\n LoadNextFacetSearchResultsCtrl.prototype.nextPage = function () {\r\n var idChanged = 0;\r\n for (var i = 0; i < this.pages.length; i++) {\r\n var page = this.pages[i];\r\n if (page.isActive) {\r\n if (i + 1 < this.pages.length) {\r\n page.isActive = false;\r\n this.pages[i + 1].isActive = true;\r\n idChanged = this.pages[i + 1].id;\r\n }\r\n break;\r\n }\r\n }\r\n if (idChanged > 0) {\r\n this.facetService.setPage(idChanged, this.group);\r\n $('html, body').animate({ scrollTop: 0 }, 100);\r\n return true;\r\n }\r\n return false;\r\n };\r\n LoadNextFacetSearchResultsCtrl.prototype.prevPage = function () {\r\n var idChanged = 0;\r\n for (var i = 0; i < this.pages.length; i++) {\r\n var page = this.pages[i];\r\n if (page.isActive) {\r\n if (i > 0) {\r\n page.isActive = false;\r\n this.pages[i - 1].isActive = true;\r\n idChanged = this.pages[i - 1].id;\r\n }\r\n break;\r\n }\r\n }\r\n if (idChanged > 0) {\r\n this.facetService.setPage(idChanged, this.group);\r\n $('html, body').animate({ scrollTop: 0 }, 100);\r\n return true;\r\n }\r\n return false;\r\n };\r\n LoadNextFacetSearchResultsCtrl.prototype.takeEven = function (item, i, array) {\r\n return i % 2;\r\n };\r\n\r\n})();","\r\n\r\n(function () {\r\n angular.module('st').controller('PaginationController', ['$scope', function ($scope) {\r\n $scope.currentPage = 1;\r\n $scope.customItems = [];\r\n $scope.pageSize = 10;\r\n\r\n $scope.init = function (items) {\r\n $scope.customItems = items;\r\n }\r\n\r\n $scope.pageChangeHandler = function (num) {\r\n console.log('page changed to ' + num);\r\n };\r\n }]);\r\n angular.module('st').controller('OtherController', ['$scope', function ($scope) {\r\n $scope.pageChangeHandler = function (num) {\r\n console.log('going to page ' + num);\r\n };\r\n }]);\r\n})();\r\n","/**\r\n * dirPagination - AngularJS module for paginating (almost) anything.\r\n *\r\n *\r\n * Credits\r\n * =======\r\n *\r\n * Daniel Tabuenca: https://groups.google.com/d/msg/angular/an9QpzqIYiM/r8v-3W1X5vcJ\r\n * for the idea on how to dynamically invoke the ng-repeat directive.\r\n *\r\n * I borrowed a couple of lines and a few attribute names from the AngularUI Bootstrap project:\r\n * https://github.com/angular-ui/bootstrap/blob/master/src/pagination/pagination.js\r\n *\r\n * Copyright 2014 Michael Bromley <michael@michaelbromley.co.uk>\r\n */\r\n\r\n(function() {\r\n\r\n /**\r\n * Config\r\n */\r\n var moduleName = 'angularUtils.directives.dirPagination';\r\n var DEFAULT_ID = '__default';\r\n\r\n /**\r\n * Module\r\n */\r\n angular.module('st')\r\n .directive('dirPaginate', ['$compile', '$parse', 'paginationService', dirPaginateDirective])\r\n .directive('dirPaginateNoCompile', noCompileDirective)\r\n .directive('dirPaginationControls', ['paginationService', 'paginationTemplate', dirPaginationControlsDirective])\r\n .filter('itemsPerPage', ['paginationService', itemsPerPageFilter])\r\n .service('paginationService', paginationService)\r\n .provider('paginationTemplate', paginationTemplateProvider)\r\n .run(['$templateCache',dirPaginationControlsTemplateInstaller]);\r\n\r\n function dirPaginateDirective($compile, $parse, paginationService) {\r\n\r\n return {\r\n terminal: true,\r\n multiElement: true,\r\n priority: 100,\r\n compile: dirPaginationCompileFn\r\n };\r\n\r\n function dirPaginationCompileFn(tElement, tAttrs){\r\n console.log('directive loaded');\r\n var expression = tAttrs.dirPaginate;\r\n // regex taken directly from https://github.com/angular/angular.js/blob/v1.4.x/src/ng/directive/ngRepeat.js#L339\r\n var match = expression.match(/^\\s*([\\s\\S]+?)\\s+in\\s+([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?(?:\\s+track\\s+by\\s+([\\s\\S]+?))?\\s*$/);\r\n\r\n var filterPattern = /\\|\\s*itemsPerPage\\s*:\\s*(.*\\(\\s*\\w*\\)|([^\\)]*?(?=\\s+as\\s+))|[^\\)]*)/;\r\n if (match[2].match(filterPattern) === null) {\r\n throw 'pagination directive: the \\'itemsPerPage\\' filter must be set.';\r\n }\r\n var itemsPerPageFilterRemoved = match[2].replace(filterPattern, '');\r\n var collectionGetter = $parse(itemsPerPageFilterRemoved);\r\n\r\n addNoCompileAttributes(tElement);\r\n\r\n // If any value is specified for paginationId, we register the un-evaluated expression at this stage for the benefit of any\r\n // dir-pagination-controls directives that may be looking for this ID.\r\n var rawId = tAttrs.paginationId || DEFAULT_ID;\r\n paginationService.registerInstance(rawId);\r\n\r\n return function dirPaginationLinkFn(scope, element, attrs){\r\n\r\n // Now that we have access to the `scope` we can interpolate any expression given in the paginationId attribute and\r\n // potentially register a new ID if it evaluates to a different value than the rawId.\r\n var paginationId = $parse(attrs.paginationId)(scope) || attrs.paginationId || DEFAULT_ID;\r\n \r\n // (TODO: this seems sound, but I'm reverting as many bug reports followed it's introduction in 0.11.0.\r\n // Needs more investigation.)\r\n // In case rawId != paginationId we deregister using rawId for the sake of general cleanliness\r\n // before registering using paginationId\r\n // paginationService.deregisterInstance(rawId);\r\n paginationService.registerInstance(paginationId);\r\n\r\n var repeatExpression = getRepeatExpression(expression, paginationId);\r\n addNgRepeatToElement(element, attrs, repeatExpression);\r\n\r\n removeTemporaryAttributes(element);\r\n var compiled = $compile(element);\r\n\r\n var currentPageGetter = makeCurrentPageGetterFn(scope, attrs, paginationId);\r\n paginationService.setCurrentPageParser(paginationId, currentPageGetter, scope);\r\n\r\n if (typeof attrs.totalItems !== 'undefined') {\r\n paginationService.setAsyncModeTrue(paginationId);\r\n scope.$watch(function() {\r\n return $parse(attrs.totalItems)(scope);\r\n }, function (result) {\r\n if (0 <= result) {\r\n paginationService.setCollectionLength(paginationId, result);\r\n }\r\n });\r\n } else {\r\n paginationService.setAsyncModeFalse(paginationId);\r\n scope.$watchCollection(function() {\r\n return collectionGetter(scope);\r\n }, function(collection) {\r\n if (collection) {\r\n var collectionLength = (collection instanceof Array) ? collection.length : Object.keys(collection).length;\r\n paginationService.setCollectionLength(paginationId, collectionLength);\r\n }\r\n });\r\n }\r\n\r\n // Delegate to the link function returned by the new compilation of the ng-repeat\r\n compiled(scope);\r\n \r\n // (TODO: Reverting this due to many bug reports in v 0.11.0. Needs investigation as the\r\n // principle is sound)\r\n // When the scope is destroyed, we make sure to remove the reference to it in paginationService\r\n // so that it can be properly garbage collected\r\n // scope.$on('$destroy', function destroyDirPagination() {\r\n // paginationService.deregisterInstance(paginationId);\r\n // });\r\n };\r\n }\r\n\r\n /**\r\n * If a pagination id has been specified, we need to check that it is present as the second argument passed to\r\n * the itemsPerPage filter. If it is not there, we add it and return the modified expression.\r\n *\r\n * @param expression\r\n * @param paginationId\r\n * @returns {*}\r\n */\r\n function getRepeatExpression(expression, paginationId) {\r\n var repeatExpression,\r\n idDefinedInFilter = !!expression.match(/(\\|\\s*itemsPerPage\\s*:[^|]*:[^|]*)/);\r\n\r\n if (paginationId !== DEFAULT_ID && !idDefinedInFilter) {\r\n repeatExpression = expression.replace(/(\\|\\s*itemsPerPage\\s*:\\s*[^|\\s]*)/, \"$1 : '\" + paginationId + \"'\");\r\n } else {\r\n repeatExpression = expression;\r\n }\r\n\r\n return repeatExpression;\r\n }\r\n\r\n /**\r\n * Adds the ng-repeat directive to the element. In the case of multi-element (-start, -end) it adds the\r\n * appropriate multi-element ng-repeat to the first and last element in the range.\r\n * @param element\r\n * @param attrs\r\n * @param repeatExpression\r\n */\r\n function addNgRepeatToElement(element, attrs, repeatExpression) {\r\n if (element[0].hasAttribute('dir-paginate-start') || element[0].hasAttribute('data-dir-paginate-start')) {\r\n // using multiElement mode (dir-paginate-start, dir-paginate-end)\r\n attrs.$set('ngRepeatStart', repeatExpression);\r\n element.eq(element.length - 1).attr('ng-repeat-end', true);\r\n } else {\r\n attrs.$set('ngRepeat', repeatExpression);\r\n }\r\n }\r\n\r\n /**\r\n * Adds the dir-paginate-no-compile directive to each element in the tElement range.\r\n * @param tElement\r\n */\r\n function addNoCompileAttributes(tElement) {\r\n angular.forEach(tElement, function(el) {\r\n if (el.nodeType === 1) {\r\n angular.element(el).attr('dir-paginate-no-compile', true);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Removes the variations on dir-paginate (data-, -start, -end) and the dir-paginate-no-compile directives.\r\n * @param element\r\n */\r\n function removeTemporaryAttributes(element) {\r\n angular.forEach(element, function(el) {\r\n if (el.nodeType === 1) {\r\n angular.element(el).removeAttr('dir-paginate-no-compile');\r\n }\r\n });\r\n element.eq(0).removeAttr('dir-paginate-start').removeAttr('dir-paginate').removeAttr('data-dir-paginate-start').removeAttr('data-dir-paginate');\r\n element.eq(element.length - 1).removeAttr('dir-paginate-end').removeAttr('data-dir-paginate-end');\r\n }\r\n\r\n /**\r\n * Creates a getter function for the current-page attribute, using the expression provided or a default value if\r\n * no current-page expression was specified.\r\n *\r\n * @param scope\r\n * @param attrs\r\n * @param paginationId\r\n * @returns {*}\r\n */\r\n function makeCurrentPageGetterFn(scope, attrs, paginationId) {\r\n var currentPageGetter;\r\n if (attrs.currentPage) {\r\n currentPageGetter = $parse(attrs.currentPage);\r\n } else {\r\n // If the current-page attribute was not set, we'll make our own.\r\n // Replace any non-alphanumeric characters which might confuse\r\n // the $parse service and give unexpected results.\r\n // See https://github.com/michaelbromley/angularUtils/issues/233\r\n var defaultCurrentPage = (paginationId + '__currentPage').replace(/\\W/g, '_');\r\n scope[defaultCurrentPage] = 1;\r\n currentPageGetter = $parse(defaultCurrentPage);\r\n }\r\n return currentPageGetter;\r\n }\r\n }\r\n\r\n /**\r\n * This is a helper directive that allows correct compilation when in multi-element mode (ie dir-paginate-start, dir-paginate-end).\r\n * It is dynamically added to all elements in the dir-paginate compile function, and it prevents further compilation of\r\n * any inner directives. It is then removed in the link function, and all inner directives are then manually compiled.\r\n */\r\n function noCompileDirective() {\r\n return {\r\n priority: 5000,\r\n terminal: true\r\n };\r\n }\r\n\r\n function dirPaginationControlsTemplateInstaller($templateCache) {\r\n $templateCache.put('angularUtils.directives.dirPagination.template', '<ul class=\"pagination\" ng-if=\"1 < pages.length || !autoHide\"><li ng-if=\"boundaryLinks\" ng-class=\"{ disabled : pagination.current == 1 }\"><a href=\"\" ng-click=\"setCurrent(1)\">«</a></li><li ng-if=\"directionLinks\" ng-class=\"{ disabled : pagination.current == 1 }\"><a href=\"\" ng-click=\"setCurrent(pagination.current - 1)\">‹</a></li><li ng-repeat=\"pageNumber in pages track by tracker(pageNumber, $index)\" ng-class=\"{ active : pagination.current == pageNumber, disabled : pageNumber == \\'...\\' || ( ! autoHide && pages.length === 1 ) }\"><a href=\"\" ng-click=\"setCurrent(pageNumber)\">{{ pageNumber }}</a></li><li ng-if=\"directionLinks\" ng-class=\"{ disabled : pagination.current == pagination.last }\"><a href=\"\" ng-click=\"setCurrent(pagination.current + 1)\">›</a></li><li ng-if=\"boundaryLinks\" ng-class=\"{ disabled : pagination.current == pagination.last }\"><a href=\"\" ng-click=\"setCurrent(pagination.last)\">»</a></li></ul>');\r\n }\r\n\r\n function dirPaginationControlsDirective(paginationService, paginationTemplate) {\r\n\r\n var numberRegex = /^\\d+$/;\r\n\r\n var DDO = {\r\n restrict: 'AE',\r\n scope: {\r\n maxSize: '=?',\r\n onPageChange: '&?',\r\n paginationId: '=?',\r\n autoHide: '=?'\r\n },\r\n link: dirPaginationControlsLinkFn\r\n };\r\n\r\n // We need to check the paginationTemplate service to see whether a template path or\r\n // string has been specified, and add the `template` or `templateUrl` property to\r\n // the DDO as appropriate. The order of priority to decide which template to use is\r\n // (highest priority first):\r\n // 1. paginationTemplate.getString()\r\n // 2. attrs.templateUrl\r\n // 3. paginationTemplate.getPath()\r\n var templateString = paginationTemplate.getString();\r\n if (templateString !== undefined) {\r\n DDO.template = templateString;\r\n } else {\r\n DDO.templateUrl = function(elem, attrs) {\r\n return attrs.templateUrl || paginationTemplate.getPath();\r\n };\r\n }\r\n return DDO;\r\n\r\n function dirPaginationControlsLinkFn(scope, element, attrs) {\r\n\r\n // rawId is the un-interpolated value of the pagination-id attribute. This is only important when the corresponding dir-paginate directive has\r\n // not yet been linked (e.g. if it is inside an ng-if block), and in that case it prevents this controls directive from assuming that there is\r\n // no corresponding dir-paginate directive and wrongly throwing an exception.\r\n var rawId = attrs.paginationId || DEFAULT_ID;\r\n var paginationId = scope.paginationId || attrs.paginationId || DEFAULT_ID;\r\n\r\n if (!paginationService.isRegistered(paginationId) && !paginationService.isRegistered(rawId)) {\r\n var idMessage = (paginationId !== DEFAULT_ID) ? ' (id: ' + paginationId + ') ' : ' ';\r\n if (window.console) {\r\n console.warn('Pagination directive: the pagination controls' + idMessage + 'cannot be used without the corresponding pagination directive, which was not found at link time.');\r\n }\r\n }\r\n\r\n if (!scope.maxSize) { scope.maxSize = 9; }\r\n scope.autoHide = scope.autoHide === undefined ? true : scope.autoHide;\r\n scope.directionLinks = angular.isDefined(attrs.directionLinks) ? scope.$parent.$eval(attrs.directionLinks) : true;\r\n scope.boundaryLinks = angular.isDefined(attrs.boundaryLinks) ? scope.$parent.$eval(attrs.boundaryLinks) : false;\r\n\r\n var paginationRange = Math.max(scope.maxSize, 5);\r\n scope.pages = [];\r\n scope.pagination = {\r\n last: 1,\r\n current: 1\r\n };\r\n scope.range = {\r\n lower: 1,\r\n upper: 1,\r\n total: 1\r\n };\r\n\r\n scope.$watch('maxSize', function(val) {\r\n if (val) {\r\n paginationRange = Math.max(scope.maxSize, 5);\r\n generatePagination();\r\n }\r\n });\r\n\r\n scope.$watch(function() {\r\n if (paginationService.isRegistered(paginationId)) {\r\n return (paginationService.getCollectionLength(paginationId) + 1) * paginationService.getItemsPerPage(paginationId);\r\n }\r\n }, function(length) {\r\n if (0 < length) {\r\n generatePagination();\r\n }\r\n });\r\n\r\n scope.$watch(function() {\r\n if (paginationService.isRegistered(paginationId)) {\r\n return (paginationService.getItemsPerPage(paginationId));\r\n }\r\n }, function(current, previous) {\r\n if (current != previous && typeof previous !== 'undefined') {\r\n goToPage(scope.pagination.current);\r\n }\r\n });\r\n\r\n scope.$watch(function() {\r\n if (paginationService.isRegistered(paginationId)) {\r\n return paginationService.getCurrentPage(paginationId);\r\n }\r\n }, function(currentPage, previousPage) {\r\n if (currentPage != previousPage) {\r\n goToPage(currentPage);\r\n }\r\n });\r\n\r\n scope.setCurrent = function(num) {\r\n if (paginationService.isRegistered(paginationId) && isValidPageNumber(num)) {\r\n num = parseInt(num, 10);\r\n paginationService.setCurrentPage(paginationId, num);\r\n }\r\n };\r\n\r\n /**\r\n * Custom \"track by\" function which allows for duplicate \"...\" entries on long lists,\r\n * yet fixes the problem of wrongly-highlighted links which happens when using\r\n * \"track by $index\" - see https://github.com/michaelbromley/angularUtils/issues/153\r\n * @param id\r\n * @param index\r\n * @returns {string}\r\n */\r\n scope.tracker = function(id, index) {\r\n return id + '_' + index;\r\n };\r\n\r\n function goToPage(num) {\r\n if (paginationService.isRegistered(paginationId) && isValidPageNumber(num)) {\r\n var oldPageNumber = scope.pagination.current;\r\n\r\n scope.pages = generatePagesArray(num, paginationService.getCollectionLength(paginationId), paginationService.getItemsPerPage(paginationId), paginationRange);\r\n scope.pagination.current = num;\r\n updateRangeValues();\r\n\r\n // if a callback has been set, then call it with the page number as the first argument\r\n // and the previous page number as a second argument\r\n if (scope.onPageChange) {\r\n scope.onPageChange({\r\n newPageNumber : num,\r\n oldPageNumber : oldPageNumber\r\n });\r\n }\r\n }\r\n }\r\n\r\n function generatePagination() {\r\n if (paginationService.isRegistered(paginationId)) {\r\n var page = parseInt(paginationService.getCurrentPage(paginationId)) || 1;\r\n scope.pages = generatePagesArray(page, paginationService.getCollectionLength(paginationId), paginationService.getItemsPerPage(paginationId), paginationRange);\r\n scope.pagination.current = page;\r\n scope.pagination.last = scope.pages[scope.pages.length - 1];\r\n if (scope.pagination.last < scope.pagination.current) {\r\n scope.setCurrent(scope.pagination.last);\r\n } else {\r\n updateRangeValues();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * This function updates the values (lower, upper, total) of the `scope.range` object, which can be used in the pagination\r\n * template to display the current page range, e.g. \"showing 21 - 40 of 144 results\";\r\n */\r\n function updateRangeValues() {\r\n if (paginationService.isRegistered(paginationId)) {\r\n var currentPage = paginationService.getCurrentPage(paginationId),\r\n itemsPerPage = paginationService.getItemsPerPage(paginationId),\r\n totalItems = paginationService.getCollectionLength(paginationId);\r\n\r\n scope.range.lower = (currentPage - 1) * itemsPerPage + 1;\r\n scope.range.upper = Math.min(currentPage * itemsPerPage, totalItems);\r\n scope.range.total = totalItems;\r\n }\r\n }\r\n function isValidPageNumber(num) {\r\n return (numberRegex.test(num) && (0 < num && num <= scope.pagination.last));\r\n }\r\n }\r\n\r\n /**\r\n * Generate an array of page numbers (or the '...' string) which is used in an ng-repeat to generate the\r\n * links used in pagination\r\n *\r\n * @param currentPage\r\n * @param rowsPerPage\r\n * @param paginationRange\r\n * @param collectionLength\r\n * @returns {Array}\r\n */\r\n function generatePagesArray(currentPage, collectionLength, rowsPerPage, paginationRange) {\r\n var pages = [];\r\n var totalPages = Math.ceil(collectionLength / rowsPerPage);\r\n var halfWay = Math.ceil(paginationRange / 2);\r\n var position;\r\n\r\n if (currentPage <= halfWay) {\r\n position = 'start';\r\n } else if (totalPages - halfWay < currentPage) {\r\n position = 'end';\r\n } else {\r\n position = 'middle';\r\n }\r\n\r\n var ellipsesNeeded = paginationRange < totalPages;\r\n var i = 1;\r\n while (i <= totalPages && i <= paginationRange) {\r\n var pageNumber = calculatePageNumber(i, currentPage, paginationRange, totalPages);\r\n\r\n var openingEllipsesNeeded = (i === 2 && (position === 'middle' || position === 'end'));\r\n var closingEllipsesNeeded = (i === paginationRange - 1 && (position === 'middle' || position === 'start'));\r\n if (ellipsesNeeded && (openingEllipsesNeeded || closingEllipsesNeeded)) {\r\n pages.push('...');\r\n } else {\r\n pages.push(pageNumber);\r\n }\r\n i ++;\r\n }\r\n return pages;\r\n }\r\n\r\n /**\r\n * Given the position in the sequence of pagination links [i], figure out what page number corresponds to that position.\r\n *\r\n * @param i\r\n * @param currentPage\r\n * @param paginationRange\r\n * @param totalPages\r\n * @returns {*}\r\n */\r\n function calculatePageNumber(i, currentPage, paginationRange, totalPages) {\r\n var halfWay = Math.ceil(paginationRange/2);\r\n if (i === paginationRange) {\r\n return totalPages;\r\n } else if (i === 1) {\r\n return i;\r\n } else if (paginationRange < totalPages) {\r\n if (totalPages - halfWay < currentPage) {\r\n return totalPages - paginationRange + i;\r\n } else if (halfWay < currentPage) {\r\n return currentPage - halfWay + i;\r\n } else {\r\n return i;\r\n }\r\n } else {\r\n return i;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * This filter slices the collection into pages based on the current page number and number of items per page.\r\n * @param paginationService\r\n * @returns {Function}\r\n */\r\n function itemsPerPageFilter(paginationService) {\r\n\r\n return function(collection, itemsPerPage, paginationId) {\r\n if (typeof (paginationId) === 'undefined') {\r\n paginationId = DEFAULT_ID;\r\n }\r\n if (!paginationService.isRegistered(paginationId)) {\r\n throw 'pagination directive: the itemsPerPage id argument (id: ' + paginationId + ') does not match a registered pagination-id.';\r\n }\r\n var end;\r\n var start;\r\n if (angular.isObject(collection)) {\r\n itemsPerPage = parseInt(itemsPerPage) || 9999999999;\r\n if (paginationService.isAsyncMode(paginationId)) {\r\n start = 0;\r\n } else {\r\n start = (paginationService.getCurrentPage(paginationId) - 1) * itemsPerPage;\r\n }\r\n end = start + itemsPerPage;\r\n paginationService.setItemsPerPage(paginationId, itemsPerPage);\r\n\r\n if (collection instanceof Array) {\r\n // the array just needs to be sliced\r\n return collection.slice(start, end);\r\n } else {\r\n // in the case of an object, we need to get an array of keys, slice that, then map back to\r\n // the original object.\r\n var slicedObject = {};\r\n angular.forEach(keys(collection).slice(start, end), function(key) {\r\n slicedObject[key] = collection[key];\r\n });\r\n return slicedObject;\r\n }\r\n } else {\r\n return collection;\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Shim for the Object.keys() method which does not exist in IE < 9\r\n * @param obj\r\n * @returns {Array}\r\n */\r\n function keys(obj) {\r\n if (!Object.keys) {\r\n var objKeys = [];\r\n for (var i in obj) {\r\n if (obj.hasOwnProperty(i)) {\r\n objKeys.push(i);\r\n }\r\n }\r\n return objKeys;\r\n } else {\r\n return Object.keys(obj);\r\n }\r\n }\r\n\r\n /**\r\n * This service allows the various parts of the module to communicate and stay in sync.\r\n */\r\n function paginationService() {\r\n\r\n var instances = {};\r\n var lastRegisteredInstance;\r\n\r\n this.registerInstance = function(instanceId) {\r\n if (typeof instances[instanceId] === 'undefined') {\r\n instances[instanceId] = {\r\n asyncMode: false\r\n };\r\n lastRegisteredInstance = instanceId;\r\n }\r\n };\r\n\r\n this.deregisterInstance = function(instanceId) {\r\n delete instances[instanceId];\r\n };\r\n \r\n this.isRegistered = function(instanceId) {\r\n return (typeof instances[instanceId] !== 'undefined');\r\n };\r\n\r\n this.getLastInstanceId = function() {\r\n return lastRegisteredInstance;\r\n };\r\n\r\n this.setCurrentPageParser = function(instanceId, val, scope) {\r\n instances[instanceId].currentPageParser = val;\r\n instances[instanceId].context = scope;\r\n };\r\n this.setCurrentPage = function(instanceId, val) {\r\n instances[instanceId].currentPageParser.assign(instances[instanceId].context, val);\r\n };\r\n this.getCurrentPage = function(instanceId) {\r\n var parser = instances[instanceId].currentPageParser;\r\n return parser ? parser(instances[instanceId].context) : 1;\r\n };\r\n\r\n this.setItemsPerPage = function(instanceId, val) {\r\n instances[instanceId].itemsPerPage = val;\r\n };\r\n this.getItemsPerPage = function(instanceId) {\r\n return instances[instanceId].itemsPerPage;\r\n };\r\n\r\n this.setCollectionLength = function(instanceId, val) {\r\n instances[instanceId].collectionLength = val;\r\n };\r\n this.getCollectionLength = function(instanceId) {\r\n return instances[instanceId].collectionLength;\r\n };\r\n\r\n this.setAsyncModeTrue = function(instanceId) {\r\n instances[instanceId].asyncMode = true;\r\n };\r\n\r\n this.setAsyncModeFalse = function(instanceId) {\r\n instances[instanceId].asyncMode = false;\r\n };\r\n\r\n this.isAsyncMode = function(instanceId) {\r\n return instances[instanceId].asyncMode;\r\n };\r\n }\r\n\r\n /**\r\n * This provider allows global configuration of the template path used by the dir-pagination-controls directive.\r\n */\r\n function paginationTemplateProvider() {\r\n\r\n var templatePath = 'angularUtils.directives.dirPagination.template';\r\n var templateString;\r\n\r\n /**\r\n * Set a templateUrl to be used by all instances of <dir-pagination-controls>\r\n * @param {String} path\r\n */\r\n this.setPath = function(path) {\r\n templatePath = path;\r\n };\r\n\r\n /**\r\n * Set a string of HTML to be used as a template by all instances\r\n * of <dir-pagination-controls>. If both a path *and* a string have been set,\r\n * the string takes precedence.\r\n * @param {String} str\r\n */\r\n this.setString = function(str) {\r\n templateString = str;\r\n };\r\n\r\n this.$get = function() {\r\n return {\r\n getPath: function() {\r\n return templatePath;\r\n },\r\n getString: function() {\r\n return templateString;\r\n }\r\n };\r\n };\r\n }\r\n})();","angular.module('st')\r\n .directive(\"convertToNumber\", function () {\r\n return {\r\n require: \"ngModel\",\r\n link: function (scope, element, attrs, ngModel) {\r\n ngModel.$parsers.push(function (val) {\r\n return val != null ? parseInt(val, 10) : null;\r\n });\r\n ngModel.$formatters.push(function (val) {\r\n return val != null ? \"\" + val : null;\r\n });\r\n }\r\n };\r\n });\r\n\r\nangular.module('st')\r\n .factory(\"messageListFactory\", function () {\r\n const IsNullOrEmpty = function (str) {\r\n return str === undefined || str === null || str === \"\";\r\n };\r\n const messageList = function () {\r\n let msgs = {};\r\n\r\n const clearMessages = function () {\r\n msgs = {};\r\n };\r\n const setMessage = function (key, msg) {\r\n msgs[key] = msg;\r\n };\r\n const hasMessage = function (key) {\r\n if (key) {\r\n return !IsNullOrEmpty(msgs[key]);\r\n }\r\n else {\r\n let msgFound = false;\r\n for (var prop in msgs) {\r\n if (msgs.hasOwnProperty(prop)) {\r\n if (!IsNullOrEmpty(msgs[prop])) {\r\n msgFound = true;\r\n break;\r\n }\r\n }\r\n }\r\n return msgFound;\r\n }\r\n };\r\n const getMessages = function (key) {\r\n \r\n if (key) return msgs[key];\r\n else {\r\n let msgArray = [];\r\n for (let prop in msgs) {\r\n if (msgs.hasOwnProperty(prop)) {\r\n if (!IsNullOrEmpty(msgs[prop])) {\r\n msgArray.push(msgs[prop]);\r\n }\r\n }\r\n }\r\n return msgArray;\r\n }\r\n };\r\n const loadMessages = function (dict) {\r\n if (dict) {\r\n for (let i = 0; i < dict.length; i++) {\r\n msgs[dict[i].Key] = dict[i].Message;\r\n }\r\n }\r\n };\r\n return {\r\n clear: clearMessages,\r\n set: setMessage,\r\n has: hasMessage,\r\n get: getMessages,\r\n load: loadMessages\r\n };\r\n };\r\n\r\n return {\r\n createList: function () {\r\n return messageList();\r\n }\r\n };\r\n });\r\n\r\n","!function (t) { function e(r) { if (n[r]) return n[r].exports; var i = n[r] = { i: r, l: !1, exports: {} }; return t[r].call(i.exports, i, i.exports, e), i.l = !0, i.exports } var n = {}; return e.m = t, e.c = n, e.i = function (t) { return t }, e.d = function (t, e, n) { Object.defineProperty(t, e, { configurable: !1, enumerable: !0, get: n }) }, e.n = function (t) { var n = t && t.__esModule ? function () { return t[\"default\"] } : function () { return t }; return e.d(n, \"a\", n), n }, e.o = function (t, e) { return Object.prototype.hasOwnProperty.call(t, e) }, e.p = \"\", e(e.s = 39) }([function (t, e) { \"use strict\"; function n(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var r = function () { function t() { n(this, t), this.startBin = \"101\", this.endBin = \"101\", this.middleBin = \"01010\", this.Lbinary = [\"0001101\", \"0011001\", \"0010011\", \"0111101\", \"0100011\", \"0110001\", \"0101111\", \"0111011\", \"0110111\", \"0001011\"], this.Gbinary = [\"0100111\", \"0110011\", \"0011011\", \"0100001\", \"0011101\", \"0111001\", \"0000101\", \"0010001\", \"0001001\", \"0010111\"], this.Rbinary = [\"1110010\", \"1100110\", \"1101100\", \"1000010\", \"1011100\", \"1001110\", \"1010000\", \"1000100\", \"1001000\", \"1110100\"] } return t.prototype.encode = function (t, e, n) { var r = \"\"; n = n || \"\"; for (var i = 0; i < t.length; i++)\"L\" == e[i] ? r += this.Lbinary[t[i]] : \"G\" == e[i] ? r += this.Gbinary[t[i]] : \"R\" == e[i] && (r += this.Rbinary[t[i]]), i < t.length - 1 && (r += n); return r }, t }(); e[\"default\"] = r }, function (t, e) { \"use strict\"; function n(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } function r(t, e) { for (var n = 0; n < e; n++)t = \"0\" + t; return t } Object.defineProperty(e, \"__esModule\", { value: !0 }); var i = function () { function t(e) { n(this, t), this.string = e } return t.prototype.encode = function () { for (var t = \"110\", e = 0; e < this.string.length; e++) { var n = parseInt(this.string[e]), i = n.toString(2); i = r(i, 4 - i.length); for (var o = 0; o < i.length; o++)t += \"0\" == i[o] ? \"100\" : \"110\" } return t += \"1001\", { data: t, text: this.string } }, t.prototype.valid = function () { return this.string.search(/^[0-9]+$/) !== -1 }, t }(); e[\"default\"] = i }, function (t, e) { \"use strict\"; function n(t, e) { var n, r = {}; for (n in t) t.hasOwnProperty(n) && (r[n] = t[n]); for (n in e) e.hasOwnProperty(n) && \"undefined\" != typeof e[n] && (r[n] = e[n]); return r } Object.defineProperty(e, \"__esModule\", { value: !0 }), e[\"default\"] = n }, function (t, e) { \"use strict\"; function n(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var r = function () { function t(e) { n(this, t), this.bytes = []; for (var r = 0; r < e.length; ++r)this.bytes.push(e.charCodeAt(r)); this.string = e.substring(1), this.encodings = [740, 644, 638, 176, 164, 100, 224, 220, 124, 608, 604, 572, 436, 244, 230, 484, 260, 254, 650, 628, 614, 764, 652, 902, 868, 836, 830, 892, 844, 842, 752, 734, 590, 304, 112, 94, 416, 128, 122, 672, 576, 570, 464, 422, 134, 496, 478, 142, 910, 678, 582, 768, 762, 774, 880, 862, 814, 896, 890, 818, 914, 602, 930, 328, 292, 200, 158, 68, 62, 424, 412, 232, 218, 76, 74, 554, 616, 978, 556, 146, 340, 212, 182, 508, 268, 266, 956, 940, 938, 758, 782, 974, 400, 310, 118, 512, 506, 960, 954, 502, 518, 886, 966, 668, 680, 692, 5379] } return t.prototype.encode = function () { var t, e = this.bytes, n = e.shift() - 105; return 103 === n ? t = this.nextA(e, 1) : 104 === n ? t = this.nextB(e, 1) : 105 === n && (t = this.nextC(e, 1)), { text: this.string.replace(/[^\\x20-\\x7E]/g, \"\"), data: this.getEncoding(n) + t.result + this.getEncoding((t.checksum + n) % 103) + this.getEncoding(106) } }, t.prototype.getEncoding = function (t) { return this.encodings[t] ? (this.encodings[t] + 1e3).toString(2) : \"\" }, t.prototype.valid = function () { return this.string.search(/^[\\x00-\\x7F\\xC8-\\xD3]+$/) !== -1 }, t.prototype.nextA = function (t, e) { if (t.length <= 0) return { result: \"\", checksum: 0 }; var n, r; if (t[0] >= 200) r = t[0] - 105, t.shift(), 99 === r ? n = this.nextC(t, e + 1) : 100 === r ? n = this.nextB(t, e + 1) : 98 === r ? (t[0] = t[0] > 95 ? t[0] - 96 : t[0], n = this.nextA(t, e + 1)) : n = this.nextA(t, e + 1); else { var i = t[0]; r = i < 32 ? i + 64 : i - 32, t.shift(), n = this.nextA(t, e + 1) } var o = this.getEncoding(r), s = r * e; return { result: o + n.result, checksum: s + n.checksum } }, t.prototype.nextB = function (t, e) { if (t.length <= 0) return { result: \"\", checksum: 0 }; var n, r; t[0] >= 200 ? (r = t[0] - 105, t.shift(), 99 === r ? n = this.nextC(t, e + 1) : 101 === r ? n = this.nextA(t, e + 1) : 98 === r ? (t[0] = t[0] < 32 ? t[0] + 96 : t[0], n = this.nextB(t, e + 1)) : n = this.nextB(t, e + 1)) : (r = t[0] - 32, t.shift(), n = this.nextB(t, e + 1)); var i = this.getEncoding(r), o = r * e; return { result: i + n.result, checksum: o + n.checksum } }, t.prototype.nextC = function (t, e) { if (t.length <= 0) return { result: \"\", checksum: 0 }; var n, r; t[0] >= 200 ? (r = t[0] - 105, t.shift(), n = 100 === r ? this.nextB(t, e + 1) : 101 === r ? this.nextA(t, e + 1) : this.nextC(t, e + 1)) : (r = 10 * (t[0] - 48) + t[1] - 48, t.shift(), t.shift(), n = this.nextC(t, e + 1)); var i = this.getEncoding(r), o = r * e; return { result: i + n.result, checksum: o + n.checksum } }, t }(); e[\"default\"] = r }, function (t, e) { \"use strict\"; function n(t) { for (var e = 0, n = 0; n < t.length; n++) { var r = parseInt(t[n]); e += (n + t.length) % 2 === 0 ? r : 2 * r % 10 + Math.floor(2 * r / 10) } return (10 - e % 10) % 10 } function r(t) { for (var e = 0, n = [2, 3, 4, 5, 6, 7], r = 0; r < t.length; r++) { var i = parseInt(t[t.length - 1 - r]); e += n[r % n.length] * i } return (11 - e % 11) % 11 } Object.defineProperty(e, \"__esModule\", { value: !0 }), e.mod10 = n, e.mod11 = r }, function (t, e) { \"use strict\"; Object.defineProperty(e, \"__esModule\", { value: !0 }); var n = { width: 2, height: 100, format: \"auto\", displayValue: !0, fontOptions: \"\", font: \"monospace\", textAlign: \"center\", textPosition: \"bottom\", textMargin: 2, fontSize: 20, background: \"#ffffff\", lineColor: \"#000000\", margin: 10, marginTop: void 0, marginBottom: void 0, marginLeft: void 0, marginRight: void 0, valid: function () { } }; e[\"default\"] = n }, function (t, e) { \"use strict\"; function n(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } function r(t, e) { if (!t) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return !e || \"object\" != typeof e && \"function\" != typeof e ? t : e } function i(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof e); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) } Object.defineProperty(e, \"__esModule\", { value: !0 }); var o = function (t) { function e(i, o) { n(this, e); var s = r(this, t.call(this)); return s.name = \"InvalidInputException\", s.symbology = i, s.input = o, s.message = '\"' + s.input + '\" is not a valid input for ' + s.symbology, s } return i(e, t), e }(Error), s = function (t) { function e() { n(this, e); var i = r(this, t.call(this)); return i.name = \"InvalidElementException\", i.message = \"Not supported type to render on\", i } return i(e, t), e }(Error), a = function (t) { function e() { n(this, e); var i = r(this, t.call(this)); return i.name = \"NoElementException\", i.message = \"No element to render on.\", i } return i(e, t), e }(Error); e.InvalidInputException = o, e.InvalidElementException = s, e.NoElementException = a }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { return e.height + (e.displayValue && t.text.length > 0 ? e.fontSize + e.textMargin : 0) + e.marginTop + e.marginBottom } function o(t, e, n) { if (n.displayValue && e < t) { if (\"center\" == n.textAlign) return Math.floor((t - e) / 2); if (\"left\" == n.textAlign) return 0; if (\"right\" == n.textAlign) return Math.floor(t - e) } return 0 } function s(t, e, n) { for (var r = 0; r < t.length; r++) { var s = t[r], a = (0, h[\"default\"])(e, s.options), u = c(s.text, a, n), f = s.data.length * a.width; s.width = Math.ceil(Math.max(u, f)), s.height = i(s, a), s.barcodePadding = o(u, f, a) } } function a(t) { for (var e = 0, n = 0; n < t.length; n++)e += t[n].width; return e } function u(t) { for (var e = 0, n = 0; n < t.length; n++)t[n].height > e && (e = t[n].height); return e } function c(t, e, n) { var r; r = \"undefined\" == typeof n ? document.createElement(\"canvas\").getContext(\"2d\") : n, r.font = e.fontOptions + \" \" + e.fontSize + \"px \" + e.font; var i = r.measureText(t).width; return i } Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getTotalWidthOfEncodings = e.calculateEncodingAttributes = e.getBarcodePadding = e.getEncodingHeight = e.getMaximumHeightOfEncodings = void 0; var f = n(2), h = r(f); e.getMaximumHeightOfEncodings = u, e.getEncodingHeight = i, e.getBarcodePadding = o, e.calculateEncodingAttributes = s, e.getTotalWidthOfEncodings = a }, function (t, e, n) { \"use strict\"; Object.defineProperty(e, \"__esModule\", { value: !0 }); var r = n(18), i = n(17), o = n(24), s = n(27), a = n(26), u = n(32), c = n(33), f = n(25); e[\"default\"] = { CODE39: r.CODE39, CODE128: i.CODE128, CODE128A: i.CODE128A, CODE128B: i.CODE128B, CODE128C: i.CODE128C, EAN13: o.EAN13, EAN8: o.EAN8, EAN5: o.EAN5, EAN2: o.EAN2, UPC: o.UPC, ITF14: s.ITF14, ITF: a.ITF, MSI: u.MSI, MSI10: u.MSI10, MSI11: u.MSI11, MSI1010: u.MSI1010, MSI1110: u.MSI1110, pharmacode: c.pharmacode, GenericBarcode: f.GenericBarcode } }, function (t, e) { \"use strict\"; function n(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var r = function () { function t(e) { n(this, t), this.api = e } return t.prototype.handleCatch = function (t) { if (\"InvalidInputException\" !== t.name) throw t; if (this.api._options.valid === this.api._defaults.valid) throw t.message; this.api._options.valid(!1), this.api.render = function () { } }, t.prototype.wrapBarcodeCall = function (t) { try { var e = t.apply(void 0, arguments); return this.api._options.valid(!0), e } catch (n) { return this.handleCatch(n), this.api } }, t }(); e[\"default\"] = r }, function (t, e) { \"use strict\"; function n(t) { return t.marginTop = t.marginTop || t.margin, t.marginBottom = t.marginBottom || t.margin, t.marginRight = t.marginRight || t.margin, t.marginLeft = t.marginLeft || t.margin, t } Object.defineProperty(e, \"__esModule\", { value: !0 }), e[\"default\"] = n }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t) { if (\"string\" == typeof t) return o(t); if (Array.isArray(t)) { for (var e = [], n = 0; n < t.length; n++)e.push(i(t[n])); return e } if (\"undefined\" != typeof HTMLCanvasElement && t instanceof HTMLImageElement) return s(t); if (\"undefined\" != typeof SVGElement && t instanceof SVGElement) return { element: t, options: (0, u[\"default\"])(t), renderer: (0, c.getRendererClass)(\"svg\") }; if (\"undefined\" != typeof HTMLCanvasElement && t instanceof HTMLCanvasElement) return { element: t, options: (0, u[\"default\"])(t), renderer: (0, c.getRendererClass)(\"canvas\") }; if (t.getContext) return { element: t, renderer: (0, c.getRendererClass)(\"canvas\") }; throw new f.InvalidElementException } function o(t) { var e = document.querySelectorAll(t); if (0 === e.length) throw new f.NoElementException; for (var n = [], r = 0; r < e.length; r++)n.push(i(e[r])); return n } function s(t) { var e = document.createElement(\"canvas\"); return { element: e, options: (0, u[\"default\"])(t), renderer: (0, c.getRendererClass)(\"canvas\"), afterRender: function () { t.setAttribute(\"src\", e.toDataURL()) } } } Object.defineProperty(e, \"__esModule\", { value: !0 }); var a = n(34), u = r(a), c = n(37), f = n(6); e[\"default\"] = i }, function (t, e) { \"use strict\"; function n(t) { function e(t) { if (Array.isArray(t)) for (var r = 0; r < t.length; r++)e(t[r]); else t.text = t.text || \"\", t.data = t.data || \"\", n.push(t) } var n = []; return e(t), n } Object.defineProperty(e, \"__esModule\", { value: !0 }), e[\"default\"] = n }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } function o(t, e) { if (!t) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return !e || \"object\" != typeof e && \"function\" != typeof e ? t : e } function s(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof e); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) } Object.defineProperty(e, \"__esModule\", { value: !0 }); var a = n(3), u = r(a), c = function (t) { function e(n) { return i(this, e), o(this, t.call(this, String.fromCharCode(208) + n)) } return s(e, t), e.prototype.valid = function () { return this.string.search(/^[\\x00-\\x5F\\xC8-\\xCF]+$/) !== -1 }, e }(u[\"default\"]); e[\"default\"] = c }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } function o(t, e) { if (!t) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return !e || \"object\" != typeof e && \"function\" != typeof e ? t : e } function s(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof e); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) } Object.defineProperty(e, \"__esModule\", { value: !0 }); var a = n(3), u = r(a), c = function (t) { function e(n) { return i(this, e), o(this, t.call(this, String.fromCharCode(209) + n)) } return s(e, t), e.prototype.valid = function () { return this.string.search(/^[\\x20-\\x7F\\xC8-\\xCF]+$/) !== -1 }, e }(u[\"default\"]); e[\"default\"] = c }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } function o(t, e) { if (!t) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return !e || \"object\" != typeof e && \"function\" != typeof e ? t : e } function s(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof e); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) } Object.defineProperty(e, \"__esModule\", { value: !0 }); var a = n(3), u = r(a), c = function (t) { function e(n) { return i(this, e), o(this, t.call(this, String.fromCharCode(210) + n)) } return s(e, t), e.prototype.valid = function () { return this.string.search(/^(\\xCF*[0-9]{2}\\xCF*)+$/) !== -1 }, e }(u[\"default\"]); e[\"default\"] = c }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } function o(t, e) { if (!t) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return !e || \"object\" != typeof e && \"function\" != typeof e ? t : e } function s(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof e); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) } function a(t) { var e, n = t.match(/^[\\x00-\\x5F\\xC8-\\xCF]*/)[0].length, r = t.match(/^[\\x20-\\x7F\\xC8-\\xCF]*/)[0].length, i = t.match(/^(\\xCF*[0-9]{2}\\xCF*)*/)[0].length; return e = i >= 2 ? String.fromCharCode(210) + f(t) : n > r ? String.fromCharCode(208) + u(t) : String.fromCharCode(209) + c(t), e = e.replace(/[\\xCD\\xCE]([^])[\\xCD\\xCE]/, function (t, e) { return String.fromCharCode(203) + e }) } function u(t) { var e = t.match(/^([\\x00-\\x5F\\xC8-\\xCF]+?)(([0-9]{2}){2,})([^0-9]|$)/); if (e) return e[1] + String.fromCharCode(204) + f(t.substring(e[1].length)); var n = t.match(/^[\\x00-\\x5F\\xC8-\\xCF]+/); return n[0].length === t.length ? t : n[0] + String.fromCharCode(205) + c(t.substring(n[0].length)) } function c(t) { var e = t.match(/^([\\x20-\\x7F\\xC8-\\xCF]+?)(([0-9]{2}){2,})([^0-9]|$)/); if (e) return e[1] + String.fromCharCode(204) + f(t.substring(e[1].length)); var n = t.match(/^[\\x20-\\x7F\\xC8-\\xCF]+/); return n[0].length === t.length ? t : n[0] + String.fromCharCode(206) + u(t.substring(n[0].length)) } function f(t) { var e = t.match(/^(\\xCF*[0-9]{2}\\xCF*)+/)[0], n = e.length; if (n === t.length) return t; t = t.substring(n); var r = t.match(/^[\\x00-\\x5F\\xC8-\\xCF]*/)[0].length, i = t.match(/^[\\x20-\\x7F\\xC8-\\xCF]*/)[0].length; return r >= i ? e + String.fromCharCode(206) + u(t) : e + String.fromCharCode(205) + c(t) } Object.defineProperty(e, \"__esModule\", { value: !0 }); var h = n(3), l = r(h), d = function (t) { function e(n) { if (i(this, e), n.search(/^[\\x00-\\x7F\\xC8-\\xD3]+$/) !== -1) var r = o(this, t.call(this, a(n))); else var r = o(this, t.call(this, n)); return o(r) } return s(e, t), e }(l[\"default\"]); e[\"default\"] = d }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } Object.defineProperty(e, \"__esModule\", { value: !0 }), e.CODE128C = e.CODE128B = e.CODE128A = e.CODE128 = void 0; var i = n(16), o = r(i), s = n(13), a = r(s), u = n(14), c = r(u), f = n(15), h = r(f); e.CODE128 = o[\"default\"], e.CODE128A = a[\"default\"], e.CODE128B = c[\"default\"], e.CODE128C = h[\"default\"] }, function (t, e) { \"use strict\"; function n(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var r = function () { function t(e, r) { n(this, t), this.string = e.toUpperCase(), this.mod43Enabled = r.mod43 || !1, this.characters = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"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\", \"-\", \".\", \" \", \"$\", \"/\", \"+\", \"%\", \"*\"], this.encodings = [20957, 29783, 23639, 30485, 20951, 29813, 23669, 20855, 29789, 23645, 29975, 23831, 30533, 22295, 30149, 24005, 21623, 29981, 23837, 22301, 30023, 23879, 30545, 22343, 30161, 24017, 21959, 30065, 23921, 22385, 29015, 18263, 29141, 17879, 29045, 18293, 17783, 29021, 18269, 17477, 17489, 17681, 20753, 35770] } return t.prototype.getEncoding = function (t) { return this.getBinary(this.characterValue(t)) }, t.prototype.getBinary = function (t) { return this.encodings[t].toString(2) }, t.prototype.getCharacter = function (t) { return this.characters[t] }, t.prototype.characterValue = function (t) { return this.characters.indexOf(t) }, t.prototype.encode = function () { for (var t = this.string, e = this.getEncoding(\"*\"), n = 0; n < this.string.length; n++)e += this.getEncoding(this.string[n]) + \"0\"; if (this.mod43Enabled) { for (var r = 0, i = 0; i < this.string.length; i++)r += this.characterValue(this.string[i]); r %= 43, e += this.getBinary(r) + \"0\", t += this.getCharacter(r) } return e += this.getEncoding(\"*\"), { data: e, text: t } }, t.prototype.valid = function () { return this.string.search(/^[0-9A-Z\\-\\.\\ \\$\\/\\+\\%]+$/) !== -1 }, t }(); e.CODE39 = r }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var o = n(0), s = r(o), a = function () { function t(e, n) { i(this, t), e.search(/^[0-9]{12}$/) !== -1 ? this.string = e + this.checksum(e) : this.string = e, this.displayValue = n.displayValue, this.structure = [\"LLLLLL\", \"LLGLGG\", \"LLGGLG\", \"LLGGGL\", \"LGLLGG\", \"LGGLLG\", \"LGGGLL\", \"LGLGLG\", \"LGLGGL\", \"LGGLGL\"], n.fontSize > 10 * n.width ? this.fontSize = 10 * n.width : this.fontSize = n.fontSize, this.guardHeight = n.height + this.fontSize / 2 + n.textMargin, this.lastChar = n.lastChar } return t.prototype.valid = function () { return this.string.search(/^[0-9]{13}$/) !== -1 && this.string[12] == this.checksum(this.string) }, t.prototype.encode = function () { var t = new s[\"default\"], e = [], n = this.structure[this.string[0]], r = this.string.substr(1, 6), i = this.string.substr(7, 6); return this.displayValue && e.push({ data: \"000000000000\", text: this.string[0], options: { textAlign: \"left\", fontSize: this.fontSize } }), e.push({ data: \"101\", options: { height: this.guardHeight } }), e.push({ data: t.encode(r, n), text: r, options: { fontSize: this.fontSize } }), e.push({ data: \"01010\", options: { height: this.guardHeight } }), e.push({ data: t.encode(i, \"RRRRRR\"), text: i, options: { fontSize: this.fontSize } }), e.push({ data: \"101\", options: { height: this.guardHeight } }), this.lastChar && this.displayValue && (e.push({ data: \"00\" }), e.push({ data: \"00000\", text: this.lastChar, options: { fontSize: this.fontSize } })), e }, t.prototype.checksum = function (t) { var e, n = 0; for (e = 0; e < 12; e += 2)n += parseInt(t[e]); for (e = 1; e < 12; e += 2)n += 3 * parseInt(t[e]); return (10 - n % 10) % 10 }, t }(); e[\"default\"] = a }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var o = n(0), s = r(o), a = function () { function t(e) { i(this, t), this.string = e, this.structure = [\"LL\", \"LG\", \"GL\", \"GG\"] } return t.prototype.valid = function () { return this.string.search(/^[0-9]{2}$/) !== -1 }, t.prototype.encode = function () { var t = new s[\"default\"], e = this.structure[parseInt(this.string) % 4], n = \"1011\"; return n += t.encode(this.string, e, \"01\"), { data: n, text: this.string } }, t }(); e[\"default\"] = a }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var o = n(0), s = r(o), a = function () { function t(e) { i(this, t), this.string = e, this.structure = [\"GGLLL\", \"GLGLL\", \"GLLGL\", \"GLLLG\", \"LGGLL\", \"LLGGL\", \"LLLGG\", \"LGLGL\", \"LGLLG\", \"LLGLG\"] } return t.prototype.valid = function () { return this.string.search(/^[0-9]{5}$/) !== -1 }, t.prototype.encode = function () { var t = new s[\"default\"], e = this.checksum(), n = \"1011\"; return n += t.encode(this.string, this.structure[e], \"01\"), { data: n, text: this.string } }, t.prototype.checksum = function () { var t = 0; return t += 3 * parseInt(this.string[0]), t += 9 * parseInt(this.string[1]), t += 3 * parseInt(this.string[2]), t += 9 * parseInt(this.string[3]), t += 3 * parseInt(this.string[4]), t % 10 }, t }(); e[\"default\"] = a }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var o = n(0), s = r(o), a = function () { function t(e) { i(this, t), e.search(/^[0-9]{7}$/) !== -1 ? this.string = e + this.checksum(e) : this.string = e } return t.prototype.valid = function () { return this.string.search(/^[0-9]{8}$/) !== -1 && this.string[7] == this.checksum(this.string) }, t.prototype.encode = function () { var t = new s[\"default\"], e = \"\", n = this.string.substr(0, 4), r = this.string.substr(4, 4); return e += t.startBin, e += t.encode(n, \"LLLL\"), e += t.middleBin, e += t.encode(r, \"RRRR\"), e += t.endBin, { data: e, text: this.string } }, t.prototype.checksum = function (t) { var e, n = 0; for (e = 0; e < 7; e += 2)n += 3 * parseInt(t[e]); for (e = 1; e < 7; e += 2)n += parseInt(t[e]); return (10 - n % 10) % 10 }, t }(); e[\"default\"] = a }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var o = n(0), s = r(o), a = function () { function t(e, n) { i(this, t), e.search(/^[0-9]{11}$/) !== -1 ? this.string = e + this.checksum(e) : this.string = e, this.displayValue = n.displayValue, n.fontSize > 10 * n.width ? this.fontSize = 10 * n.width : this.fontSize = n.fontSize, this.guardHeight = n.height + this.fontSize / 2 + n.textMargin } return t.prototype.valid = function () { return this.string.search(/^[0-9]{12}$/) !== -1 && this.string[11] == this.checksum(this.string) }, t.prototype.encode = function () { var t = new s[\"default\"], e = []; return this.displayValue && e.push({ data: \"00000000\", text: this.string[0], options: { textAlign: \"left\", fontSize: this.fontSize } }), e.push({ data: \"101\" + t.encode(this.string[0], \"L\"), options: { height: this.guardHeight } }), e.push({ data: t.encode(this.string.substr(1, 5), \"LLLLL\"), text: this.string.substr(1, 5), options: { fontSize: this.fontSize } }), e.push({ data: \"01010\", options: { height: this.guardHeight } }), e.push({ data: t.encode(this.string.substr(6, 5), \"RRRRR\"), text: this.string.substr(6, 5), options: { fontSize: this.fontSize } }), e.push({ data: t.encode(this.string[11], \"R\") + \"101\", options: { height: this.guardHeight } }), this.displayValue && e.push({ data: \"00000000\", text: this.string[11], options: { textAlign: \"right\", fontSize: this.fontSize } }), e }, t.prototype.checksum = function (t) { var e, n = 0; for (e = 1; e < 11; e += 2)n += parseInt(t[e]); for (e = 0; e < 11; e += 2)n += 3 * parseInt(t[e]); return (10 - n % 10) % 10 }, t }(); e[\"default\"] = a }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } Object.defineProperty(e, \"__esModule\", { value: !0 }), e.UPC = e.EAN2 = e.EAN5 = e.EAN8 = e.EAN13 = void 0; var i = n(19), o = r(i), s = n(22), a = r(s), u = n(21), c = r(u), f = n(20), h = r(f), l = n(23), d = r(l); e.EAN13 = o[\"default\"], e.EAN8 = a[\"default\"], e.EAN5 = c[\"default\"], e.EAN2 = h[\"default\"], e.UPC = d[\"default\"] }, function (t, e) { \"use strict\"; function n(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var r = function () { function t(e) { n(this, t), this.string = e } return t.prototype.encode = function () { return { data: \"10101010101010101010101010101010101010101\", text: this.string } }, t.prototype.valid = function () { return !0 }, t }(); e.GenericBarcode = r }, function (t, e) { \"use strict\"; function n(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var r = function () { function t(e) { n(this, t), this.string = e, this.binaryRepresentation = { 0: \"00110\", 1: \"10001\", 2: \"01001\", 3: \"11000\", 4: \"00101\", 5: \"10100\", 6: \"01100\", 7: \"00011\", 8: \"10010\", 9: \"01010\" } } return t.prototype.valid = function () { return this.string.search(/^([0-9]{2})+$/) !== -1 }, t.prototype.encode = function () { for (var t = \"1010\", e = 0; e < this.string.length; e += 2)t += this.calculatePair(this.string.substr(e, 2)); return t += \"11101\", { data: t, text: this.string } }, t.prototype.calculatePair = function (t) { for (var e = \"\", n = this.binaryRepresentation[t[0]], r = this.binaryRepresentation[t[1]], i = 0; i < 5; i++)e += \"1\" == n[i] ? \"111\" : \"1\", e += \"1\" == r[i] ? \"000\" : \"0\"; return e }, t }(); e.ITF = r }, function (t, e) { \"use strict\"; function n(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var r = function () { function t(e) { n(this, t), this.string = e, e.search(/^[0-9]{13}$/) !== -1 && (this.string += this.checksum(e)), this.binaryRepresentation = { 0: \"00110\", 1: \"10001\", 2: \"01001\", 3: \"11000\", 4: \"00101\", 5: \"10100\", 6: \"01100\", 7: \"00011\", 8: \"10010\", 9: \"01010\" } } return t.prototype.valid = function () { return this.string.search(/^[0-9]{14}$/) !== -1 && this.string[13] == this.checksum() }, t.prototype.encode = function () { for (var t = \"1010\", e = 0; e < 14; e += 2)t += this.calculatePair(this.string.substr(e, 2)); return t += \"11101\", { data: t, text: this.string } }, t.prototype.calculatePair = function (t) { for (var e = \"\", n = this.binaryRepresentation[t[0]], r = this.binaryRepresentation[t[1]], i = 0; i < 5; i++)e += \"1\" == n[i] ? \"111\" : \"1\", e += \"1\" == r[i] ? \"000\" : \"0\"; return e }, t.prototype.checksum = function () { for (var t = 0, e = 0; e < 13; e++)t += parseInt(this.string[e]) * (3 - e % 2 * 2); return 10 * Math.ceil(t / 10) - t }, t }(); e.ITF14 = r }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } function o(t, e) { if (!t) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return !e || \"object\" != typeof e && \"function\" != typeof e ? t : e } function s(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof e); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) } Object.defineProperty(e, \"__esModule\", { value: !0 }); var a = n(1), u = r(a), c = n(4), f = function (t) { function e(n) { i(this, e); var r = o(this, t.call(this, n)); return r.string += (0, c.mod10)(r.string), r } return s(e, t), e }(u[\"default\"]); e[\"default\"] = f }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } function o(t, e) { if (!t) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return !e || \"object\" != typeof e && \"function\" != typeof e ? t : e } function s(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof e); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) } Object.defineProperty(e, \"__esModule\", { value: !0 }); var a = n(1), u = r(a), c = n(4), f = function (t) { function e(n) { i(this, e); var r = o(this, t.call(this, n)); return r.string += (0, c.mod10)(r.string), r.string += (0, c.mod10)(r.string), r } return s(e, t), e }(u[\"default\"]); e[\"default\"] = f }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } function o(t, e) { if (!t) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return !e || \"object\" != typeof e && \"function\" != typeof e ? t : e } function s(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof e); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) } Object.defineProperty(e, \"__esModule\", { value: !0 }); var a = n(1), u = r(a), c = n(4), f = function (t) { function e(n) { i(this, e); var r = o(this, t.call(this, n)); return r.string += (0, c.mod11)(r.string), r } return s(e, t), e }(u[\"default\"]); e[\"default\"] = f }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } function o(t, e) { if (!t) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); return !e || \"object\" != typeof e && \"function\" != typeof e ? t : e } function s(t, e) { if (\"function\" != typeof e && null !== e) throw new TypeError(\"Super expression must either be null or a function, not \" + typeof e); t.prototype = Object.create(e && e.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e) } Object.defineProperty(e, \"__esModule\", { value: !0 }); var a = n(1), u = r(a), c = n(4), f = function (t) { function e(n) { i(this, e); var r = o(this, t.call(this, n)); return r.string += (0, c.mod11)(r.string), r.string += (0, c.mod10)(r.string), r } return s(e, t), e }(u[\"default\"]); e[\"default\"] = f }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } Object.defineProperty(e, \"__esModule\", { value: !0 }), e.MSI1110 = e.MSI1010 = e.MSI11 = e.MSI10 = e.MSI = void 0; var i = n(1), o = r(i), s = n(28), a = r(s), u = n(30), c = r(u), f = n(29), h = r(f), l = n(31), d = r(l); e.MSI = o[\"default\"], e.MSI10 = a[\"default\"], e.MSI11 = c[\"default\"], e.MSI1010 = h[\"default\"], e.MSI1110 = d[\"default\"] }, function (t, e) { \"use strict\"; function n(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var r = function () { function t(e) { n(this, t), this.number = parseInt(e, 10) } return t.prototype.encode = function () { for (var t = this.number, e = \"\"; !isNaN(t) && 0 != t;)t % 2 === 0 ? (e = \"11100\" + e, t = (t - 2) / 2) : (e = \"100\" + e, t = (t - 1) / 2); return e = e.slice(0, -2), { data: e, text: this.number + \"\" } }, t.prototype.valid = function () { return this.number >= 3 && this.number <= 131070 }, t }(); e.pharmacode = r }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t) { var e = {}; for (var n in u[\"default\"]) u[\"default\"].hasOwnProperty(n) && (t.hasAttribute(\"jsbarcode-\" + n.toLowerCase()) && (e[n] = t.getAttribute(\"jsbarcode-\" + n.toLowerCase())), t.hasAttribute(\"data-\" + n.toLowerCase()) && (e[n] = t.getAttribute(\"data-\" + n.toLowerCase()))); return e.value = t.getAttribute(\"jsbarcode-value\") || t.getAttribute(\"data-value\"), e = (0, s[\"default\"])(e) } Object.defineProperty(e, \"__esModule\", { value: !0 }); var o = n(35), s = r(o), a = n(5), u = r(a); e[\"default\"] = i }, function (t, e) { \"use strict\"; function n(t) { var e = [\"width\", \"height\", \"textMargin\", \"fontSize\", \"margin\", \"marginTop\", \"marginBottom\", \"marginLeft\", \"marginRight\"]; for (var n in e) e.hasOwnProperty(n) && (n = e[n], \"string\" == typeof t[n] && (t[n] = parseInt(t[n], 10))); return \"string\" == typeof t.displayValue && (t.displayValue = \"false\" != t.displayValue), t } Object.defineProperty(e, \"__esModule\", { value: !0 }), e[\"default\"] = n }, function (t, e, n) {\r\n \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } Object.defineProperty(e, \"__esModule\", { value: !0 }); var o = n(2), s = r(o), a = n(7), u = function () {\r\n function t(e, n, r) { i(this, t), this.canvas = e, this.encodings = n, this.options = r } return t.prototype.render = function () { if (!this.canvas.getContext) throw new Error(\"The browser does not support canvas.\"); this.prepareCanvas(); for (var t = 0; t < this.encodings.length; t++) { var e = (0, s[\"default\"])(this.options, this.encodings[t].options); this.drawCanvasBarcode(e, this.encodings[t]), this.drawCanvasText(e, this.encodings[t]), this.moveCanvasDrawing(this.encodings[t]) } this.restoreCanvas() }, t.prototype.prepareCanvas = function () {\r\n var t = this.canvas.getContext(\"2d\"); t.save(), (0, a.calculateEncodingAttributes)(this.encodings, this.options, t); var e = (0, a.getTotalWidthOfEncodings)(this.encodings), n = (0, a.getMaximumHeightOfEncodings)(this.encodings); this.canvas.width = e + this.options.marginLeft + this.options.marginRight,\r\n this.canvas.height = n, t.clearRect(0, 0, this.canvas.width, this.canvas.height), this.options.background && (t.fillStyle = this.options.background, t.fillRect(0, 0, this.canvas.width, this.canvas.height)), t.translate(this.options.marginLeft, 0)\r\n }, t.prototype.drawCanvasBarcode = function (t, e) { var n, r = this.canvas.getContext(\"2d\"), i = e.data; n = \"top\" == t.textPosition ? t.marginTop + t.fontSize + t.textMargin : t.marginTop, r.fillStyle = t.lineColor; for (var o = 0; o < i.length; o++) { var s = o * t.width + e.barcodePadding; \"1\" === i[o] ? r.fillRect(s, n, t.width, t.height) : i[o] && r.fillRect(s, n, t.width, t.height * i[o]) } }, t.prototype.drawCanvasText = function (t, e) { var n = this.canvas.getContext(\"2d\"), r = t.fontOptions + \" \" + t.fontSize + \"px \" + t.font; if (t.displayValue) { var i, o; o = \"top\" == t.textPosition ? t.marginTop + t.fontSize - t.textMargin : t.height + t.textMargin + t.marginTop + t.fontSize, n.font = r, \"left\" == t.textAlign || e.barcodePadding > 0 ? (i = 0, n.textAlign = \"left\") : \"right\" == t.textAlign ? (i = e.width - 1, n.textAlign = \"right\") : (i = e.width / 2, n.textAlign = \"center\"), n.fillText(e.text, i, o) } }, t.prototype.moveCanvasDrawing = function (t) { var e = this.canvas.getContext(\"2d\"); e.translate(t.width, 0) }, t.prototype.restoreCanvas = function () { var t = this.canvas.getContext(\"2d\"); t.restore() }, t\r\n }(); e[\"default\"] = u\r\n}, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t) { switch (t) { case \"canvas\": return s[\"default\"]; case \"svg\": return u[\"default\"]; default: throw new Error(\"Invalid rederer\") } } Object.defineProperty(e, \"__esModule\", { value: !0 }), e.getRendererClass = void 0; var o = n(36), s = r(o), a = n(38), u = r(a); e.getRendererClass = i }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { if (!(t instanceof e)) throw new TypeError(\"Cannot call a class as a function\") } function o(t, e, n) { var r = document.createElementNS(h, \"g\"); return r.setAttribute(\"transform\", \"translate(\" + t + \", \" + e + \")\"), n.appendChild(r), r } function s(t, e) { t.setAttribute(\"style\", \"fill:\" + e.lineColor + \";\") } function a(t, e, n, r, i) { var o = document.createElementNS(h, \"rect\"); o.setAttribute(\"x\", t), o.setAttribute(\"y\", e), o.setAttribute(\"width\", n), o.setAttribute(\"height\", r), i.appendChild(o) } Object.defineProperty(e, \"__esModule\", { value: !0 }); var u = n(2), c = r(u), f = n(7), h = \"http://www.w3.org/2000/svg\", l = function () { function t(e, n, r) { i(this, t), this.svg = e, this.encodings = n, this.options = r } return t.prototype.render = function () { var t = this.options.marginLeft; this.prepareSVG(); for (var e = 0; e < this.encodings.length; e++) { var n = this.encodings[e], r = (0, c[\"default\"])(this.options, n.options), i = o(t, r.marginTop, this.svg); s(i, r), this.drawSvgBarcode(i, r, n), this.drawSVGText(i, r, n), t += n.width } }, t.prototype.prepareSVG = function () { for (; this.svg.firstChild;)this.svg.removeChild(this.svg.firstChild); (0, f.calculateEncodingAttributes)(this.encodings, this.options); var t = (0, f.getTotalWidthOfEncodings)(this.encodings), e = (0, f.getMaximumHeightOfEncodings)(this.encodings), n = t + this.options.marginLeft + this.options.marginRight; this.setSvgAttributes(n, e) }, t.prototype.drawSvgBarcode = function (t, e, n) { var r, i = n.data; r = \"top\" == e.textPosition ? e.fontSize + e.textMargin : 0; for (var o = 0, s = 0, u = 0; u < i.length; u++)s = u * e.width + n.barcodePadding, \"1\" === i[u] ? o++ : o > 0 && (a(s - e.width * o, r, e.width * o, e.height, t), o = 0); o > 0 && a(s - e.width * (o - 1), r, e.width * o, e.height, t) }, t.prototype.drawSVGText = function (t, e, n) { var r = document.createElementNS(h, \"text\"); if (e.displayValue) { var i, o; r.setAttribute(\"style\", \"font:\" + e.fontOptions + \" \" + e.fontSize + \"px \" + e.font), o = \"top\" == e.textPosition ? e.fontSize - e.textMargin : e.height + e.textMargin + e.fontSize, \"left\" == e.textAlign || n.barcodePadding > 0 ? (i = 0, r.setAttribute(\"text-anchor\", \"start\")) : \"right\" == e.textAlign ? (i = n.width - 1, r.setAttribute(\"text-anchor\", \"end\")) : (i = n.width / 2, r.setAttribute(\"text-anchor\", \"middle\")), r.setAttribute(\"x\", i), r.setAttribute(\"y\", o), r.appendChild(document.createTextNode(n.text)), t.appendChild(r) } }, t.prototype.setSvgAttributes = function (t, e) { var n = this.svg; n.setAttribute(\"width\", t + \"px\"), n.setAttribute(\"height\", e + \"px\"), n.setAttribute(\"x\", \"0px\"), n.setAttribute(\"y\", \"0px\"), n.setAttribute(\"viewBox\", \"0 0 \" + t + \" \" + e), n.setAttribute(\"xmlns\", h), n.setAttribute(\"version\", \"1.1\"), n.style.transform = \"translate(0,0)\", this.options.background && (n.style.background = this.options.background) }, t }(); e[\"default\"] = l }, function (t, e, n) { \"use strict\"; function r(t) { return t && t.__esModule ? t : { \"default\": t } } function i(t, e) { C.prototype[e] = C.prototype[e.toUpperCase()] = C.prototype[e.toLowerCase()] = function (n, r) { var i = this; return i._errorHandler.wrapBarcodeCall(function () { var s = (0, h[\"default\"])(i._options, r), a = t[e], u = o(n, a, s); return i._encodings.push(u), i }) } } function o(t, e, n) { t = \"\" + t; var r = new e(t, n); if (!r.valid()) throw new x.InvalidInputException(r.constructor.name, t); var i = r.encode(); i = (0, d[\"default\"])(i); for (var o = 0; o < i.length; o++)i[o].options = (0, h[\"default\"])(n, i[o].options); return i } function s() { return c[\"default\"].CODE128 ? \"CODE128\" : Object.keys(c[\"default\"])[0] } function a(t, e, n) { e = (0, d[\"default\"])(e); for (var r = 0; r < e.length; r++)e[r].options = (0, h[\"default\"])(n, e[r].options), (0, g[\"default\"])(e[r].options); (0, g[\"default\"])(n); var i = t.renderer, o = new i(t.element, e, n); o.render(), t.afterRender && t.afterRender() } var u = n(8), c = r(u), f = n(2), h = r(f), l = n(12), d = r(l), p = n(10), g = r(p), y = n(11), v = r(y), b = n(9), m = r(b), x = n(6), _ = n(5), w = r(_), C = function () { }, E = function (t, e, n) { var r = new C; if (\"undefined\" == typeof t) throw Error(\"No element to render on was provided.\"); return r._renderProperties = (0, v[\"default\"])(t), r._encodings = [], r._options = w[\"default\"], r._errorHandler = new m[\"default\"](r), \"undefined\" != typeof e && (n = n || {}, n.format || (n.format = s()), r.options(n)[n.format](e, n).render()), r }; E.getModule = function (t) { return c[\"default\"][t] }; for (var O in c[\"default\"]) c[\"default\"].hasOwnProperty(O) && i(c[\"default\"], O); C.prototype.options = function (t) { return this._options = (0, h[\"default\"])(this._options, t), this }, C.prototype.blank = function (t) { var e = \"0\".repeat(t); return this._encodings.push({ data: e }), this }, C.prototype.init = function () { Array.isArray(this._renderProperties) || (this._renderProperties = [this._renderProperties]); var t; for (var e in this._renderProperties) { t = this._renderProperties[e]; var n = (0, h[\"default\"])(this._options, t.options); \"auto\" == n.format && (n.format = s()); var r = n.value, i = c[\"default\"][n.format.toUpperCase()], u = o(r, i, n); a(t, u, n) } }, C.prototype.render = function () { if (Array.isArray(this._renderProperties)) for (var t in this._renderProperties) a(this._renderProperties[t], this._encodings, this._options); else a(this._renderProperties, this._encodings, this._options); return this }, C.prototype._defaults = w[\"default\"], \"undefined\" != typeof window && (window.JsBarcode = E), \"undefined\" != typeof jQuery && (jQuery.fn.JsBarcode = function (t, e) { var n = []; return jQuery(this).each(function () { n.push(this) }), E(n, t, e) }), t.exports = E }]);","var QRCode;!function(){function a(a){this.mode=c.MODE_8BIT_BYTE,this.data=a,this.parsedData=[];for(var b=[],d=0,e=this.data.length;e>d;d++){var f=this.data.charCodeAt(d);f>65536?(b[0]=240|(1835008&f)>>>18,b[1]=128|(258048&f)>>>12,b[2]=128|(4032&f)>>>6,b[3]=128|63&f):f>2048?(b[0]=224|(61440&f)>>>12,b[1]=128|(4032&f)>>>6,b[2]=128|63&f):f>128?(b[0]=192|(1984&f)>>>6,b[1]=128|63&f):b[0]=f,this.parsedData=this.parsedData.concat(b)}this.parsedData.length!=this.data.length&&(this.parsedData.unshift(191),this.parsedData.unshift(187),this.parsedData.unshift(239))}function b(a,b){this.typeNumber=a,this.errorCorrectLevel=b,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}function i(a,b){if(void 0==a.length)throw new Error(a.length+\"/\"+b);for(var c=0;c<a.length&&0==a[c];)c++;this.num=new Array(a.length-c+b);for(var d=0;d<a.length-c;d++)this.num[d]=a[d+c]}function j(a,b){this.totalCount=a,this.dataCount=b}function k(){this.buffer=[],this.length=0}function m(){return\"undefined\"!=typeof CanvasRenderingContext2D}function n(){var a=!1,b=navigator.userAgent;return/android/i.test(b)&&(a=!0,aMat=b.toString().match(/android ([0-9]\\.[0-9])/i),aMat&&aMat[1]&&(a=parseFloat(aMat[1]))),a}function r(a,b){for(var c=1,e=s(a),f=0,g=l.length;g>=f;f++){var h=0;switch(b){case d.L:h=l[f][0];break;case d.M:h=l[f][1];break;case d.Q:h=l[f][2];break;case d.H:h=l[f][3]}if(h>=e)break;c++}if(c>l.length)throw new Error(\"Too long data\");return c}function s(a){var b=encodeURI(a).toString().replace(/\\%[0-9a-fA-F]{2}/g,\"a\");return b.length+(b.length!=a?3:0)}a.prototype={getLength:function(){return this.parsedData.length},write:function(a){for(var b=0,c=this.parsedData.length;c>b;b++)a.put(this.parsedData[b],8)}},b.prototype={addData:function(b){var c=new a(b);this.dataList.push(c),this.dataCache=null},isDark:function(a,b){if(0>a||this.moduleCount<=a||0>b||this.moduleCount<=b)throw new Error(a+\",\"+b);return this.modules[a][b]},getModuleCount:function(){return this.moduleCount},make:function(){this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(a,c){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var d=0;d<this.moduleCount;d++){this.modules[d]=new Array(this.moduleCount);for(var e=0;e<this.moduleCount;e++)this.modules[d][e]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(a,c),this.typeNumber>=7&&this.setupTypeNumber(a),null==this.dataCache&&(this.dataCache=b.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,c)},setupPositionProbePattern:function(a,b){for(var c=-1;7>=c;c++)if(!(-1>=a+c||this.moduleCount<=a+c))for(var d=-1;7>=d;d++)-1>=b+d||this.moduleCount<=b+d||(this.modules[a+c][b+d]=c>=0&&6>=c&&(0==d||6==d)||d>=0&&6>=d&&(0==c||6==c)||c>=2&&4>=c&&d>=2&&4>=d?!0:!1)},getBestMaskPattern:function(){for(var a=0,b=0,c=0;8>c;c++){this.makeImpl(!0,c);var d=f.getLostPoint(this);(0==c||a>d)&&(a=d,b=c)}return b},createMovieClip:function(a,b,c){var d=a.createEmptyMovieClip(b,c),e=1;this.make();for(var f=0;f<this.modules.length;f++)for(var g=f*e,h=0;h<this.modules[f].length;h++){var i=h*e,j=this.modules[f][h];j&&(d.beginFill(0,100),d.moveTo(i,g),d.lineTo(i+e,g),d.lineTo(i+e,g+e),d.lineTo(i,g+e),d.endFill())}return d},setupTimingPattern:function(){for(var a=8;a<this.moduleCount-8;a++)null==this.modules[a][6]&&(this.modules[a][6]=0==a%2);for(var b=8;b<this.moduleCount-8;b++)null==this.modules[6][b]&&(this.modules[6][b]=0==b%2)},setupPositionAdjustPattern:function(){for(var a=f.getPatternPosition(this.typeNumber),b=0;b<a.length;b++)for(var c=0;c<a.length;c++){var d=a[b],e=a[c];if(null==this.modules[d][e])for(var g=-2;2>=g;g++)for(var h=-2;2>=h;h++)this.modules[d+g][e+h]=-2==g||2==g||-2==h||2==h||0==g&&0==h?!0:!1}},setupTypeNumber:function(a){for(var b=f.getBCHTypeNumber(this.typeNumber),c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[Math.floor(c/3)][c%3+this.moduleCount-8-3]=d}for(var c=0;18>c;c++){var d=!a&&1==(1&b>>c);this.modules[c%3+this.moduleCount-8-3][Math.floor(c/3)]=d}},setupTypeInfo:function(a,b){for(var c=this.errorCorrectLevel<<3|b,d=f.getBCHTypeInfo(c),e=0;15>e;e++){var g=!a&&1==(1&d>>e);6>e?this.modules[e][8]=g:8>e?this.modules[e+1][8]=g:this.modules[this.moduleCount-15+e][8]=g}for(var e=0;15>e;e++){var g=!a&&1==(1&d>>e);8>e?this.modules[8][this.moduleCount-e-1]=g:9>e?this.modules[8][15-e-1+1]=g:this.modules[8][15-e-1]=g}this.modules[this.moduleCount-8][8]=!a},mapData:function(a,b){for(var c=-1,d=this.moduleCount-1,e=7,g=0,h=this.moduleCount-1;h>0;h-=2)for(6==h&&h--;;){for(var i=0;2>i;i++)if(null==this.modules[d][h-i]){var j=!1;g<a.length&&(j=1==(1&a[g]>>>e));var k=f.getMask(b,d,h-i);k&&(j=!j),this.modules[d][h-i]=j,e--,-1==e&&(g++,e=7)}if(d+=c,0>d||this.moduleCount<=d){d-=c,c=-c;break}}}},b.PAD0=236,b.PAD1=17,b.createData=function(a,c,d){for(var e=j.getRSBlocks(a,c),g=new k,h=0;h<d.length;h++){var i=d[h];g.put(i.mode,4),g.put(i.getLength(),f.getLengthInBits(i.mode,a)),i.write(g)}for(var l=0,h=0;h<e.length;h++)l+=e[h].dataCount;if(g.getLengthInBits()>8*l)throw new Error(\"code length overflow. (\"+g.getLengthInBits()+\">\"+8*l+\")\");for(g.getLengthInBits()+4<=8*l&&g.put(0,4);0!=g.getLengthInBits()%8;)g.putBit(!1);for(;;){if(g.getLengthInBits()>=8*l)break;if(g.put(b.PAD0,8),g.getLengthInBits()>=8*l)break;g.put(b.PAD1,8)}return b.createBytes(g,e)},b.createBytes=function(a,b){for(var c=0,d=0,e=0,g=new Array(b.length),h=new Array(b.length),j=0;j<b.length;j++){var k=b[j].dataCount,l=b[j].totalCount-k;d=Math.max(d,k),e=Math.max(e,l),g[j]=new Array(k);for(var m=0;m<g[j].length;m++)g[j][m]=255&a.buffer[m+c];c+=k;var n=f.getErrorCorrectPolynomial(l),o=new i(g[j],n.getLength()-1),p=o.mod(n);h[j]=new Array(n.getLength()-1);for(var m=0;m<h[j].length;m++){var q=m+p.getLength()-h[j].length;h[j][m]=q>=0?p.get(q):0}}for(var r=0,m=0;m<b.length;m++)r+=b[m].totalCount;for(var s=new Array(r),t=0,m=0;d>m;m++)for(var j=0;j<b.length;j++)m<g[j].length&&(s[t++]=g[j][m]);for(var m=0;e>m;m++)for(var j=0;j<b.length;j++)m<h[j].length&&(s[t++]=h[j][m]);return s};for(var c={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},d={L:1,M:0,Q:3,H:2},e={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},f={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(a){for(var b=a<<10;f.getBCHDigit(b)-f.getBCHDigit(f.G15)>=0;)b^=f.G15<<f.getBCHDigit(b)-f.getBCHDigit(f.G15);return(a<<10|b)^f.G15_MASK},getBCHTypeNumber:function(a){for(var b=a<<12;f.getBCHDigit(b)-f.getBCHDigit(f.G18)>=0;)b^=f.G18<<f.getBCHDigit(b)-f.getBCHDigit(f.G18);return a<<12|b},getBCHDigit:function(a){for(var b=0;0!=a;)b++,a>>>=1;return b},getPatternPosition:function(a){return f.PATTERN_POSITION_TABLE[a-1]},getMask:function(a,b,c){switch(a){case e.PATTERN000:return 0==(b+c)%2;case e.PATTERN001:return 0==b%2;case e.PATTERN010:return 0==c%3;case e.PATTERN011:return 0==(b+c)%3;case e.PATTERN100:return 0==(Math.floor(b/2)+Math.floor(c/3))%2;case e.PATTERN101:return 0==b*c%2+b*c%3;case e.PATTERN110:return 0==(b*c%2+b*c%3)%2;case e.PATTERN111:return 0==(b*c%3+(b+c)%2)%2;default:throw new Error(\"bad maskPattern:\"+a)}},getErrorCorrectPolynomial:function(a){for(var b=new i([1],0),c=0;a>c;c++)b=b.multiply(new i([1,g.gexp(c)],0));return b},getLengthInBits:function(a,b){if(b>=1&&10>b)switch(a){case c.MODE_NUMBER:return 10;case c.MODE_ALPHA_NUM:return 9;case c.MODE_8BIT_BYTE:return 8;case c.MODE_KANJI:return 8;default:throw new Error(\"mode:\"+a)}else if(27>b)switch(a){case c.MODE_NUMBER:return 12;case c.MODE_ALPHA_NUM:return 11;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 10;default:throw new Error(\"mode:\"+a)}else{if(!(41>b))throw new Error(\"type:\"+b);switch(a){case c.MODE_NUMBER:return 14;case c.MODE_ALPHA_NUM:return 13;case c.MODE_8BIT_BYTE:return 16;case c.MODE_KANJI:return 12;default:throw new Error(\"mode:\"+a)}}},getLostPoint:function(a){for(var b=a.getModuleCount(),c=0,d=0;b>d;d++)for(var e=0;b>e;e++){for(var f=0,g=a.isDark(d,e),h=-1;1>=h;h++)if(!(0>d+h||d+h>=b))for(var i=-1;1>=i;i++)0>e+i||e+i>=b||(0!=h||0!=i)&&g==a.isDark(d+h,e+i)&&f++;f>5&&(c+=3+f-5)}for(var d=0;b-1>d;d++)for(var e=0;b-1>e;e++){var j=0;a.isDark(d,e)&&j++,a.isDark(d+1,e)&&j++,a.isDark(d,e+1)&&j++,a.isDark(d+1,e+1)&&j++,(0==j||4==j)&&(c+=3)}for(var d=0;b>d;d++)for(var e=0;b-6>e;e++)a.isDark(d,e)&&!a.isDark(d,e+1)&&a.isDark(d,e+2)&&a.isDark(d,e+3)&&a.isDark(d,e+4)&&!a.isDark(d,e+5)&&a.isDark(d,e+6)&&(c+=40);for(var e=0;b>e;e++)for(var d=0;b-6>d;d++)a.isDark(d,e)&&!a.isDark(d+1,e)&&a.isDark(d+2,e)&&a.isDark(d+3,e)&&a.isDark(d+4,e)&&!a.isDark(d+5,e)&&a.isDark(d+6,e)&&(c+=40);for(var k=0,e=0;b>e;e++)for(var d=0;b>d;d++)a.isDark(d,e)&&k++;var l=Math.abs(100*k/b/b-50)/5;return c+=10*l}},g={glog:function(a){if(1>a)throw new Error(\"glog(\"+a+\")\");return g.LOG_TABLE[a]},gexp:function(a){for(;0>a;)a+=255;for(;a>=256;)a-=255;return g.EXP_TABLE[a]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},h=0;8>h;h++)g.EXP_TABLE[h]=1<<h;for(var h=8;256>h;h++)g.EXP_TABLE[h]=g.EXP_TABLE[h-4]^g.EXP_TABLE[h-5]^g.EXP_TABLE[h-6]^g.EXP_TABLE[h-8];for(var h=0;255>h;h++)g.LOG_TABLE[g.EXP_TABLE[h]]=h;i.prototype={get:function(a){return this.num[a]},getLength:function(){return this.num.length},multiply:function(a){for(var b=new Array(this.getLength()+a.getLength()-1),c=0;c<this.getLength();c++)for(var d=0;d<a.getLength();d++)b[c+d]^=g.gexp(g.glog(this.get(c))+g.glog(a.get(d)));return new i(b,0)},mod:function(a){if(this.getLength()-a.getLength()<0)return this;for(var b=g.glog(this.get(0))-g.glog(a.get(0)),c=new Array(this.getLength()),d=0;d<this.getLength();d++)c[d]=this.get(d);for(var d=0;d<a.getLength();d++)c[d]^=g.gexp(g.glog(a.get(d))+b);return new i(c,0).mod(a)}},j.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]],j.getRSBlocks=function(a,b){var c=j.getRsBlockTable(a,b);if(void 0==c)throw new Error(\"bad rs block @ typeNumber:\"+a+\"/errorCorrectLevel:\"+b);for(var d=c.length/3,e=[],f=0;d>f;f++)for(var g=c[3*f+0],h=c[3*f+1],i=c[3*f+2],k=0;g>k;k++)e.push(new j(h,i));return e},j.getRsBlockTable=function(a,b){switch(b){case d.L:return j.RS_BLOCK_TABLE[4*(a-1)+0];case d.M:return j.RS_BLOCK_TABLE[4*(a-1)+1];case d.Q:return j.RS_BLOCK_TABLE[4*(a-1)+2];case d.H:return j.RS_BLOCK_TABLE[4*(a-1)+3];default:return void 0}},k.prototype={get:function(a){var b=Math.floor(a/8);return 1==(1&this.buffer[b]>>>7-a%8)},put:function(a,b){for(var c=0;b>c;c++)this.putBit(1==(1&a>>>b-c-1))},getLengthInBits:function(){return this.length},putBit:function(a){var b=Math.floor(this.length/8);this.buffer.length<=b&&this.buffer.push(0),a&&(this.buffer[b]|=128>>>this.length%8),this.length++}};var l=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]],o=function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){function g(a,b){var c=document.createElementNS(\"http://www.w3.org/2000/svg\",a);for(var d in b)b.hasOwnProperty(d)&&c.setAttribute(d,b[d]);return c}var b=this._htOption,c=this._el,d=a.getModuleCount();Math.floor(b.width/d),Math.floor(b.height/d),this.clear();var h=g(\"svg\",{viewBox:\"0 0 \"+String(d)+\" \"+String(d),width:\"100%\",height:\"100%\",fill:b.colorLight});h.setAttributeNS(\"http://www.w3.org/2000/xmlns/\",\"xmlns:xlink\",\"http://www.w3.org/1999/xlink\"),c.appendChild(h),h.appendChild(g(\"rect\",{fill:b.colorDark,width:\"1\",height:\"1\",id:\"template\"}));for(var i=0;d>i;i++)for(var j=0;d>j;j++)if(a.isDark(i,j)){var k=g(\"use\",{x:String(i),y:String(j)});k.setAttributeNS(\"http://www.w3.org/1999/xlink\",\"href\",\"#template\"),h.appendChild(k)}},a.prototype.clear=function(){for(;this._el.hasChildNodes();)this._el.removeChild(this._el.lastChild)},a}(),p=\"svg\"===document.documentElement.tagName.toLowerCase(),q=p?o:m()?function(){function a(){this._elImage.src=this._elCanvas.toDataURL(\"image/png\"),this._elImage.style.display=\"block\",this._elCanvas.style.display=\"none\"}function d(a,b){var c=this;if(c._fFail=b,c._fSuccess=a,null===c._bSupportDataURI){var d=document.createElement(\"img\"),e=function(){c._bSupportDataURI=!1,c._fFail&&_fFail.call(c)},f=function(){c._bSupportDataURI=!0,c._fSuccess&&c._fSuccess.call(c)};return d.onabort=e,d.onerror=e,d.onload=f,d.src=\"data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==\",void 0}c._bSupportDataURI===!0&&c._fSuccess?c._fSuccess.call(c):c._bSupportDataURI===!1&&c._fFail&&c._fFail.call(c)}if(this._android&&this._android<=2.1){var b=1/window.devicePixelRatio,c=CanvasRenderingContext2D.prototype.drawImage;CanvasRenderingContext2D.prototype.drawImage=function(a,d,e,f,g,h,i,j){if(\"nodeName\"in a&&/img/i.test(a.nodeName))for(var l=arguments.length-1;l>=1;l--)arguments[l]=arguments[l]*b;else\"undefined\"==typeof j&&(arguments[1]*=b,arguments[2]*=b,arguments[3]*=b,arguments[4]*=b);c.apply(this,arguments)}}var e=function(a,b){this._bIsPainted=!1,this._android=n(),this._htOption=b,this._elCanvas=document.createElement(\"canvas\"),this._elCanvas.width=b.width,this._elCanvas.height=b.height,a.appendChild(this._elCanvas),this._el=a,this._oContext=this._elCanvas.getContext(\"2d\"),this._bIsPainted=!1,this._elImage=document.createElement(\"img\"),this._elImage.style.display=\"none\",this._el.appendChild(this._elImage),this._bSupportDataURI=null};return e.prototype.draw=function(a){var b=this._elImage,c=this._oContext,d=this._htOption,e=a.getModuleCount(),f=d.width/e,g=d.height/e,h=Math.round(f),i=Math.round(g);b.style.display=\"none\",this.clear();for(var j=0;e>j;j++)for(var k=0;e>k;k++){var l=a.isDark(j,k),m=k*f,n=j*g;c.strokeStyle=l?d.colorDark:d.colorLight,c.lineWidth=1,c.fillStyle=l?d.colorDark:d.colorLight,c.fillRect(m,n,f,g),c.strokeRect(Math.floor(m)+.5,Math.floor(n)+.5,h,i),c.strokeRect(Math.ceil(m)-.5,Math.ceil(n)-.5,h,i)}this._bIsPainted=!0},e.prototype.makeImage=function(){this._bIsPainted&&d.call(this,a)},e.prototype.isPainted=function(){return this._bIsPainted},e.prototype.clear=function(){this._oContext.clearRect(0,0,this._elCanvas.width,this._elCanvas.height),this._bIsPainted=!1},e.prototype.round=function(a){return a?Math.floor(1e3*a)/1e3:a},e}():function(){var a=function(a,b){this._el=a,this._htOption=b};return a.prototype.draw=function(a){for(var b=this._htOption,c=this._el,d=a.getModuleCount(),e=Math.floor(b.width/d),f=Math.floor(b.height/d),g=['<table style=\"border:0;border-collapse:collapse;\">'],h=0;d>h;h++){g.push(\"<tr>\");for(var i=0;d>i;i++)g.push('<td style=\"border:0;border-collapse:collapse;padding:0;margin:0;width:'+e+\"px;height:\"+f+\"px;background-color:\"+(a.isDark(h,i)?b.colorDark:b.colorLight)+';\"></td>');g.push(\"</tr>\")}g.push(\"</table>\"),c.innerHTML=g.join(\"\");var j=c.childNodes[0],k=(b.width-j.offsetWidth)/2,l=(b.height-j.offsetHeight)/2;k>0&&l>0&&(j.style.margin=l+\"px \"+k+\"px\")},a.prototype.clear=function(){this._el.innerHTML=\"\"},a}();QRCode=function(a,b){if(this._htOption={width:256,height:256,typeNumber:4,colorDark:\"#000000\",colorLight:\"#ffffff\",correctLevel:d.H},\"string\"==typeof b&&(b={text:b}),b)for(var c in b)this._htOption[c]=b[c];\"string\"==typeof a&&(a=document.getElementById(a)),this._android=n(),this._el=a,this._oQRCode=null,this._oDrawing=new q(this._el,this._htOption),this._htOption.text&&this.makeCode(this._htOption.text)},QRCode.prototype.makeCode=function(a){this._oQRCode=new b(r(a,this._htOption.correctLevel),this._htOption.correctLevel),this._oQRCode.addData(a),this._oQRCode.make(),this._el.title=a,this._oDrawing.draw(this._oQRCode),this.makeImage()},QRCode.prototype.makeImage=function(){\"function\"==typeof this._oDrawing.makeImage&&(!this._android||this._android>=3)&&this._oDrawing.makeImage()},QRCode.prototype.clear=function(){this._oDrawing.clear()},QRCode.CorrectLevel=d}();"]}