leadal-auth 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{leadal-auth → lib}/leadal-auth.common.js +1 -1
- package/{leadal-auth → lib}/leadal-auth.umd.js +1 -1
- package/{leadal-auth → lib}/leadal-auth.umd.min.js +1 -1
- package/package.json +9 -6
- package/src/App.vue +19 -0
- package/src/api/card.js +58 -0
- package/src/api/face.js +37 -0
- package/src/api/finger.js +64 -0
- package/src/api/index.js +100 -0
- package/src/assets/BIN.png +0 -0
- package/src/assets/CLOSE.svg +11 -0
- package/src/assets/blue-left.png +0 -0
- package/src/assets/blue-right.png +0 -0
- package/src/assets/finger-ready.png +0 -0
- package/src/assets/finger-select.png +0 -0
- package/src/assets/finger-status-1-last.png +0 -0
- package/src/assets/finger-status-1.gif +0 -0
- package/src/assets/finger-status-2-last.png +0 -0
- package/src/assets/finger-status-2.gif +0 -0
- package/src/assets/finger-status-3-last.png +0 -0
- package/src/assets/finger-status-3.gif +0 -0
- package/src/assets/finger-status-compeleted.png +0 -0
- package/src/assets/finger-status-start.png +0 -0
- package/src/assets/icon-camera.png +0 -0
- package/src/assets/icon-picture.png +0 -0
- package/src/assets/icon-success.png +0 -0
- package/src/assets/img-camera.png +0 -0
- package/src/assets/img-card.png +0 -0
- package/src/assets/img-loading.png +0 -0
- package/src/assets/left.png +0 -0
- package/src/assets/logo.png +0 -0
- package/src/assets/right.png +0 -0
- package/src/assets/ukey1.png +0 -0
- package/src/assets/ukey2.png +0 -0
- package/src/assets//346/214/207/347/272/271/350/257/206/345/210/2531.png +0 -0
- package/src/assets//346/214/207/347/272/271/350/257/206/345/210/2532.png +0 -0
- package/src/components/auth-com.vue +100 -0
- package/src/components/card-register/components/CardTable.vue +94 -0
- package/src/components/card-register/components/RegisterDialog.vue +137 -0
- package/src/components/card-register/index.vue +110 -0
- package/src/components/edit-user-dialog.vue +141 -0
- package/src/components/empty.vue +13 -0
- package/src/components/face-register/components/ChooseCameraOrPicture.vue +59 -0
- package/src/components/face-register/components/FaceDetected.vue +543 -0
- package/src/components/face-register/components/FaceInfo.vue +171 -0
- package/src/components/face-register/components/FacePicture.vue +85 -0
- package/src/components/face-register/components/UploadPicture.vue +336 -0
- package/src/components/face-register/index.vue +242 -0
- package/src/components/finger-register/index.vue +707 -0
- package/src/components/organ-tree.vue +211 -0
- package/src/components/tree-select.vue +131 -0
- package/src/components/user-drawer.vue +147 -0
- package/src/components/user-info.vue +272 -0
- package/src/components/user-table.vue +405 -0
- package/src/leadal-auth.css +1 -0
- package/src/main.js +25 -0
- package/src/package/auth-manage/index.vue +468 -0
- package/src/package/index.js +22 -0
- package/src/store/index.js +39 -0
- package/src/styles/common.scss +183 -0
- package/src/styles/index.scss +38 -0
- package/src/utils/dict.js +47 -0
- package/src/utils/event-bus.js +6 -0
- package/src/utils/request-auth.js +64 -0
- package/src/utils/request.js +64 -0
- package/src/utils/websocket.js +282 -0
- /package/{leadal-auth → lib}/demo.html +0 -0
- /package/{leadal-auth → lib}/img/finger-status-1-last.ad7c6895.png +0 -0
- /package/{leadal-auth → lib}/img/finger-status-1.220235cf.gif +0 -0
- /package/{leadal-auth → lib}/img/finger-status-2-last.52c6c2f8.png +0 -0
- /package/{leadal-auth → lib}/img/finger-status-2.482c9fce.gif +0 -0
- /package/{leadal-auth → lib}/img/finger-status-3-last.fc001fed.png +0 -0
- /package/{leadal-auth → lib}/img/finger-status-3.3e090300.gif +0 -0
- /package/{leadal-auth → lib}/img/finger-status-compeleted.fc001fed.png +0 -0
- /package/{leadal-auth → lib}/img/finger-status-start.a6cdd794.png +0 -0
- /package/{leadal-auth → lib}/img/img-camera.f5578f07.png +0 -0
- /package/{leadal-auth → lib}/leadal-auth.css +0 -0
|
@@ -67,4 +67,4 @@ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
|
67
67
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
68
68
|
PERFORMANCE OF THIS SOFTWARE.
|
|
69
69
|
***************************************************************************** */
|
|
70
|
-
var wm=function(n,x){return wm=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,x){n.__proto__=x}||function(n,x){for(var t in x)x.hasOwnProperty(t)&&(n[t]=x[t])},wm(n,x)};function km(n,x){function t(){this.constructor=n}wm(n,x),n.prototype=null===x?Object.create(x):(t.prototype=x.prototype,new t)}var qm=function(){return qm=Object.assign||function(n){for(var x,t=1,e=arguments.length;t<e;t++)for(var i in x=arguments[t],x)Object.prototype.hasOwnProperty.call(x,i)&&(n[i]=x[i]);return n},qm.apply(this,arguments)};function _m(n,x,t,e){function i(n){return n instanceof t?n:new t(function(x){x(n)})}return new(t||(t=Promise))(function(t,r){function o(n){try{h(e.next(n))}catch(Oi){r(Oi)}}function s(n){try{h(e["throw"](n))}catch(Oi){r(Oi)}}function h(n){n.done?t(n.value):i(n.value).then(o,s)}h((e=e.apply(n,x||[])).next())})}function Cm(n,x){var t,e,i,r,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return r={next:s(0),throw:s(1),return:s(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function s(n){return function(x){return h([n,x])}}function h(r){if(t)throw new TypeError("Generator is already executing.");while(o)try{if(t=1,e&&(i=2&r[0]?e["return"]:r[0]?e["throw"]||((i=e["return"])&&i.call(e),0):e.next)&&!(i=i.call(e,r[1])).done)return i;switch(e=0,i&&(r=[2&r[0],i.value]),r[0]){case 0:case 1:i=r;break;case 4:return o.label++,{value:r[1],done:!1};case 5:o.label++,e=r[1],r=[0];continue;case 7:r=o.ops.pop(),o.trys.pop();continue;default:if(i=o.trys,!(i=i.length>0&&i[i.length-1])&&(6===r[0]||2===r[0])){o=0;continue}if(3===r[0]&&(!i||r[1]>i[0]&&r[1]<i[3])){o.label=r[1];break}if(6===r[0]&&o.label<i[1]){o.label=i[1],i=r;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(r);break}i[2]&&o.ops.pop(),o.trys.pop();continue}r=x.call(n,o)}catch(Oi){r=[6,Oi],e=0}finally{t=i=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}}function Sm(){for(var n=0,x=0,t=arguments.length;x<t;x++)n+=arguments[x].length;var e=Array(n),i=0;for(x=0;x<t;x++)for(var r=arguments[x],o=0,s=r.length;o<s;o++,i++)e[i]=r[o];return e}var Em=function(){function n(n,x){if(!Bm(n)||!Bm(x))throw new Error("Dimensions.constructor - expected width and height to be valid numbers, instead have "+JSON.stringify({width:n,height:x}));this._width=n,this._height=x}return Object.defineProperty(n.prototype,"width",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"height",{get:function(){return this._height},enumerable:!0,configurable:!0}),n.prototype.reverse=function(){return new n(1/this.width,1/this.height)},n}();function Dm(n,x){return n instanceof Kr&&n.shape.length===x}function Om(n){return Dm(n,2)}function Im(n){return Dm(n,3)}function Tm(n){return Dm(n,4)}function Am(n){return n%1!==0}function Nm(n){return n%2===0}function Rm(n,x){void 0===x&&(x=2);var t=Math.pow(10,x);return Math.floor(n*t)/t}function Mm(n){return n&&n.width&&n.height}function Fm(n,x){var t=n.width,e=n.height,i=x/Math.max(e,t);return new Em(Math.round(t*i),Math.round(e*i))}function Pm(n){return n.reduce(function(n,x){return n.add(x)},new Vm(0,0)).div(new Vm(n.length,n.length))}function Lm(n,x,t){return Array(n).fill(0).map(function(n,e){return x+e*t})}function Bm(n){return!!n&&n!==1/0&&n!==-1/0&&!isNaN(n)||0===n}function $m(n){return Bm(n)&&0<=n&&n<=1}var Vm=function(){function n(n,x){this._x=n,this._y=x}return Object.defineProperty(n.prototype,"x",{get:function(){return this._x},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"y",{get:function(){return this._y},enumerable:!0,configurable:!0}),n.prototype.add=function(x){return new n(this.x+x.x,this.y+x.y)},n.prototype.sub=function(x){return new n(this.x-x.x,this.y-x.y)},n.prototype.mul=function(x){return new n(this.x*x.x,this.y*x.y)},n.prototype.div=function(x){return new n(this.x/x.x,this.y/x.y)},n.prototype.abs=function(){return new n(Math.abs(this.x),Math.abs(this.y))},n.prototype.magnitude=function(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))},n.prototype.floor=function(){return new n(Math.floor(this.x),Math.floor(this.y))},n}(),Wm=function(){function n(x,t){void 0===t&&(t=!0);var e=x||{},i=[e.left,e.top,e.right,e.bottom].every(Bm),r=[e.x,e.y,e.width,e.height].every(Bm);if(!r&&!i)throw new Error("Box.constructor - expected box to be IBoundingBox | IRect, instead have "+JSON.stringify(e));var o=r?[e.x,e.y,e.width,e.height]:[e.left,e.top,e.right-e.left,e.bottom-e.top],s=o[0],h=o[1],u=o[2],a=o[3];n.assertIsValidBox({x:s,y:h,width:u,height:a},"Box.constructor",t),this._x=s,this._y=h,this._width=u,this._height=a}return n.isRect=function(n){return!!n&&[n.x,n.y,n.width,n.height].every(Bm)},n.assertIsValidBox=function(x,t,e){if(void 0===e&&(e=!1),!n.isRect(x))throw new Error(t+" - invalid box: "+JSON.stringify(x)+", expected object with properties x, y, width, height");if(!e&&(x.width<0||x.height<0))throw new Error(t+" - width ("+x.width+") and height ("+x.height+") must be positive numbers")},Object.defineProperty(n.prototype,"x",{get:function(){return this._x},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"y",{get:function(){return this._y},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"width",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"height",{get:function(){return this._height},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"left",{get:function(){return this.x},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"top",{get:function(){return this.y},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"right",{get:function(){return this.x+this.width},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"bottom",{get:function(){return this.y+this.height},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"area",{get:function(){return this.width*this.height},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"topLeft",{get:function(){return new Vm(this.left,this.top)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"topRight",{get:function(){return new Vm(this.right,this.top)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"bottomLeft",{get:function(){return new Vm(this.left,this.bottom)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"bottomRight",{get:function(){return new Vm(this.right,this.bottom)},enumerable:!0,configurable:!0}),n.prototype.round=function(){var x=[this.x,this.y,this.width,this.height].map(function(n){return Math.round(n)}),t=x[0],e=x[1],i=x[2],r=x[3];return new n({x:t,y:e,width:i,height:r})},n.prototype.floor=function(){var x=[this.x,this.y,this.width,this.height].map(function(n){return Math.floor(n)}),t=x[0],e=x[1],i=x[2],r=x[3];return new n({x:t,y:e,width:i,height:r})},n.prototype.toSquare=function(){var x=this,t=x.x,e=x.y,i=x.width,r=x.height,o=Math.abs(i-r);return i<r&&(t-=o/2,i+=o),r<i&&(e-=o/2,r+=o),new n({x:t,y:e,width:i,height:r})},n.prototype.rescale=function(x){var t=Mm(x)?x.width:x,e=Mm(x)?x.height:x;return new n({x:this.x*t,y:this.y*e,width:this.width*t,height:this.height*e})},n.prototype.pad=function(x,t){var e=[this.x-x/2,this.y-t/2,this.width+x,this.height+t],i=e[0],r=e[1],o=e[2],s=e[3];return new n({x:i,y:r,width:o,height:s})},n.prototype.clipAtImageBorders=function(x,t){var e=this,i=e.x,r=e.y,o=e.right,s=e.bottom,h=Math.max(i,0),u=Math.max(r,0),a=o-h,g=s-u,l=Math.min(a,x-h),c=Math.min(g,t-u);return new n({x:h,y:u,width:l,height:c}).floor()},n.prototype.shift=function(x,t){var e=this,i=e.width,r=e.height,o=this.x+x,s=this.y+t;return new n({x:o,y:s,width:i,height:r})},n.prototype.padAtBorders=function(n,x){var t=this.width+1,e=this.height+1,i=1,r=1,o=t,s=e,h=this.left,u=this.top,a=this.right,g=this.bottom;return a>x&&(o=-a+x+t,a=x),g>n&&(s=-g+n+e,g=n),h<1&&(s=2-h,h=1),u<1&&(s=2-u,u=1),{dy:r,edy:s,dx:i,edx:o,y:u,ey:g,x:h,ex:a,w:t,h:e}},n.prototype.calibrate=function(x){return new n({left:this.left+x.left*this.width,top:this.top+x.top*this.height,right:this.right+x.right*this.width,bottom:this.bottom+x.bottom*this.height}).toSquare().round()},n}(),Um=function(n){function x(x,t,e,i,r){return void 0===r&&(r=!1),n.call(this,{left:x,top:t,right:e,bottom:i},r)||this}return km(x,n),x}(Wm),Hm=function(){function n(n,x,t,e,i){this._imageDims=new Em(i.width,i.height),this._score=n,this._classScore=x,this._className=t,this._box=new Wm(e).rescale(this._imageDims)}return Object.defineProperty(n.prototype,"score",{get:function(){return this._score},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"classScore",{get:function(){return this._classScore},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"className",{get:function(){return this._className},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"box",{get:function(){return this._box},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"imageDims",{get:function(){return this._imageDims},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"imageWidth",{get:function(){return this.imageDims.width},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"imageHeight",{get:function(){return this.imageDims.height},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"relativeBox",{get:function(){return new Wm(this._box).rescale(this.imageDims.reverse())},enumerable:!0,configurable:!0}),n.prototype.forSize=function(x,t){return new n(this.score,this.classScore,this.className,this.relativeBox,{width:x,height:t})},n}(),Gm=function(n){function x(x,t,e){return n.call(this,x,x,"",t,e)||this}return km(x,n),x.prototype.forSize=function(t,e){var i=n.prototype.forSize.call(this,t,e),r=i.score,o=i.relativeBox,s=i.imageDims;return new x(r,o,s)},x}(Hm);function Km(n){var x=n.map(function(n){return n.x}),t=n.map(function(n){return n.y}),e=x.reduce(function(n,x){return x<n?x:n},1/0),i=t.reduce(function(n,x){return x<n?x:n},1/0),r=x.reduce(function(n,x){return n<x?x:n},0),o=t.reduce(function(n,x){return n<x?x:n},0);return new Um(e,i,r,o)}function Ym(n,x,t){void 0===t&&(t=!0);var e=Math.max(0,Math.min(n.right,x.right)-Math.max(n.left,x.left)),i=Math.max(0,Math.min(n.bottom,x.bottom)-Math.max(n.top,x.top)),r=e*i;return t?r/(n.area+x.area-r):r/Math.min(n.area,x.area)}function Xm(n,x,t,e){void 0===e&&(e=!0);var i=x.map(function(n,x){return{score:n,boxIndex:x}}).sort(function(n,x){return n.score-x.score}).map(function(n){return n.boxIndex}),r=[],o=function(){var x=i.pop();r.push(x);for(var o=i,s=[],h=0;h<o.length;h++){var u=o[h],a=n[x],g=n[u];s.push(Ym(a,g,e))}i=i.filter(function(n,x){return s[x]<=t})};while(i.length>0)o();return r}function Jm(n,x){return bs(function(){var t=x[0],e=x[1],i=x[2],r=Zs(Sm(n.shape.slice(0,3),[1]),t),o=Zs(Sm(n.shape.slice(0,3),[1]),e),s=Zs(Sm(n.shape.slice(0,3),[1]),i),h=ih([r,o,s],3);return vd(n,h)})}function Qm(n,x){return void 0===x&&(x=!1),bs(function(){var t=n.shape.slice(1),e=t[0],i=t[1];if(e===i)return n;var r=Math.abs(e-i),o=Math.round(r*(x?.5:1)),s=e>i?2:1,h=function(x){var t=n.shape.slice();return t[s]=x,Zs(t,0)},u=h(o),a=r-u.shape[s],g=x&&a?h(a):null,l=[g,n,u].filter(function(n){return!!n}).map(function(n){return n.toFloat()});return ih(l,s)})}function Zm(n){return 1/(1+Math.exp(-n))}var nb,xb=function(n){function x(x,t,e,i,r){return void 0===r&&(r=!1),n.call(this,{x:x,y:t,width:e,height:i},r)||this}return km(x,n),x}(Wm),tb=.5,eb=.43,ib=.45,rb=function(){function n(n,x,t){void 0===t&&(t=new Vm(0,0));var e=x.width,i=x.height;this._imgDims=new Em(e,i),this._shift=t,this._positions=n.map(function(n){return n.mul(new Vm(e,i)).add(t)})}return Object.defineProperty(n.prototype,"shift",{get:function(){return new Vm(this._shift.x,this._shift.y)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"imageWidth",{get:function(){return this._imgDims.width},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"imageHeight",{get:function(){return this._imgDims.height},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"positions",{get:function(){return this._positions},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"relativePositions",{get:function(){var n=this;return this._positions.map(function(x){return x.sub(n._shift).div(new Vm(n.imageWidth,n.imageHeight))})},enumerable:!0,configurable:!0}),n.prototype.forSize=function(n,x){return new this.constructor(this.relativePositions,{width:n,height:x})},n.prototype.shiftBy=function(n,x){return new this.constructor(this.relativePositions,this._imgDims,new Vm(n,x))},n.prototype.shiftByPoint=function(n){return this.shiftBy(n.x,n.y)},n.prototype.align=function(n,x){if(void 0===x&&(x={}),n){var t=n instanceof Gm?n.box.floor():new Wm(n);return this.shiftBy(t.x,t.y).align(null,x)}var e=Object.assign({},{useDlibAlignment:!1,minBoxPadding:.2},x),i=e.useDlibAlignment,r=e.minBoxPadding;return i?this.alignDlib():this.alignMinBbox(r)},n.prototype.alignDlib=function(){var n=this.getRefPointsForAlignment(),x=n[0],t=n[1],e=n[2],i=function(n){return e.sub(n).magnitude()},r=(i(x)+i(t))/2,o=Math.floor(r/ib),s=Pm(n),h=Math.floor(Math.max(0,s.x-tb*o)),u=Math.floor(Math.max(0,s.y-eb*o));return new xb(h,u,Math.min(o,this.imageWidth+h),Math.min(o,this.imageHeight+u))},n.prototype.alignMinBbox=function(n){var x=Km(this.positions);return x.pad(x.width*n,x.height*n)},n.prototype.getRefPointsForAlignment=function(){throw new Error("getRefPointsForAlignment not implemented by base class")},n}(),ob=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.getRefPointsForAlignment=function(){var n=this.positions;return[n[0],n[1],Pm([n[3],n[4]])]},x}(rb),sb=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.getJawOutline=function(){return this.positions.slice(0,17)},x.prototype.getLeftEyeBrow=function(){return this.positions.slice(17,22)},x.prototype.getRightEyeBrow=function(){return this.positions.slice(22,27)},x.prototype.getNose=function(){return this.positions.slice(27,36)},x.prototype.getLeftEye=function(){return this.positions.slice(36,42)},x.prototype.getRightEye=function(){return this.positions.slice(42,48)},x.prototype.getMouth=function(){return this.positions.slice(48,68)},x.prototype.getRefPointsForAlignment=function(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(Pm)},x}(rb),hb=function(){function n(n,x){this._label=n,this._distance=x}return Object.defineProperty(n.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"distance",{get:function(){return this._distance},enumerable:!0,configurable:!0}),n.prototype.toString=function(n){return void 0===n&&(n=!0),this.label+(n?" ("+Rm(this.distance)+")":"")},n}(),ub=function(n){function x(x,t){var e=n.call(this,x)||this;return e._label=t,e}return km(x,n),x.assertIsValidLabeledBox=function(n,x){if(Wm.assertIsValidBox(n,x),!Bm(n.label))throw new Error(x+" - expected property label ("+n.label+") to be a number")},Object.defineProperty(x.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),x}(Wm),ab=function(){function n(n,x){if("string"!==typeof n)throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(x)||x.some(function(n){return!(n instanceof Float32Array)}))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=n,this._descriptors=x}return Object.defineProperty(n.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"descriptors",{get:function(){return this._descriptors},enumerable:!0,configurable:!0}),n.prototype.toJSON=function(){return{label:this.label,descriptors:this.descriptors.map(function(n){return Array.from(n)})}},n.fromJSON=function(x){var t=x.descriptors.map(function(n){return new Float32Array(n)});return new n(x.label,t)},n}();(function(n){function x(x,t,e,i){var r=n.call(this,x,t)||this;return r._score=e,r._classScore=i,r}km(x,n),x.assertIsValidPredictedBox=function(n,x){if(ub.assertIsValidLabeledBox(n,x),!$m(n.score)||!$m(n.classScore))throw new Error(x+" - expected properties score ("+n.score+") and ("+n.classScore+") to be a number between [0, 1]")},Object.defineProperty(x.prototype,"score",{get:function(){return this._score},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"classScore",{get:function(){return this._classScore},enumerable:!0,configurable:!0})})(ub);function gb(n){return n["detection"]instanceof Gm}function lb(n,x){var t={detection:x};return Object.assign({},n,t)}function cb(){var n=window["fetch"]||function(){throw new Error("fetch - missing fetch implementation for browser environment")},x=function(){throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D:CanvasRenderingContext2D,Image:HTMLImageElement,ImageData:ImageData,Video:HTMLVideoElement,createCanvasElement:function(){return document.createElement("canvas")},createImageElement:function(){return document.createElement("img")},fetch:n,readFile:x}}function db(n){var x="";if(!n)try{n=e(Object(function(){var n=new Error("Cannot find module 'fs'");throw n.code="MODULE_NOT_FOUND",n}()))}catch(i){x=i.toString()}var t=n?function(x){return new Promise(function(t,e){n.readFile(x,function(n,x){return n?e(n):t(x)})})}:function(){throw new Error("readFile - failed to require fs in nodejs environment with error: "+x)};return{readFile:t}}function fb(){var n=e.g["Canvas"]||e.g["HTMLCanvasElement"],x=e.g["Image"]||e.g["HTMLImageElement"],t=function(){if(n)return new n;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},i=function(){if(x)return new x;throw new Error("createImageElement - missing Image implementation for nodejs environment")},r=e.g["fetch"]||function(){throw new Error("fetch - missing fetch implementation for nodejs environment")},o=db();return qm({Canvas:n||function(){function n(){}return n}(),CanvasRenderingContext2D:e.g["CanvasRenderingContext2D"]||function(){function n(){}return n}(),Image:x||function(){function n(){}return n}(),ImageData:e.g["ImageData"]||function(){function n(){}return n}(),Video:e.g["HTMLVideoElement"]||function(){function n(){}return n}(),createCanvasElement:t,createImageElement:i,fetch:r},o)}function pb(){return"object"===typeof window&&"undefined"!==typeof document&&"undefined"!==typeof HTMLImageElement&&"undefined"!==typeof HTMLCanvasElement&&"undefined"!==typeof HTMLVideoElement&&"undefined"!==typeof ImageData&&"undefined"!==typeof CanvasRenderingContext2D}function yb(){return"object"===typeof e.g&&"undefined"!==typeof process&&!!process.version}function mb(){if(!nb)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return nb}function bb(n){nb=n}function zb(){pb()&&bb(cb()),yb()&&bb(fb())}function vb(n){if(nb||zb(),!nb)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");var x=n.Canvas,t=void 0===x?nb.Canvas:x,e=n.Image,i=void 0===e?nb.Image:e;nb.Canvas=t,nb.Image=i,nb.createCanvasElement=n.createCanvasElement||function(){return new t},nb.createImageElement=n.createImageElement||function(){return new i},nb.ImageData=n.ImageData||nb.ImageData,nb.Video=n.Video||nb.Video,nb.fetch=n.fetch||nb.fetch,nb.readFile=n.readFile||nb.readFile}var jb,wb={getEnv:mb,setEnv:bb,initialize:zb,createBrowserEnv:cb,createFileSystem:db,createNodejsEnv:fb,monkeyPatch:vb,isBrowser:pb,isNodejs:yb};function kb(n){return wb.isNodejs()||"string"!==typeof n?n:document.getElementById(n)}function qb(n){var x=wb.getEnv(),t=x.Canvas,e=x.CanvasRenderingContext2D;if(n instanceof e)return n;var i=kb(n);if(!(i instanceof t))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");var r=i.getContext("2d");if(!r)throw new Error("resolveContext2d - canvas 2d context is null");return r}zb(),function(n){n["TOP_LEFT"]="TOP_LEFT",n["TOP_RIGHT"]="TOP_RIGHT",n["BOTTOM_LEFT"]="BOTTOM_LEFT",n["BOTTOM_RIGHT"]="BOTTOM_RIGHT"}(jb||(jb={}));var _b=function(){function n(n){void 0===n&&(n={});var x=n.anchorPosition,t=n.backgroundColor,e=n.fontColor,i=n.fontSize,r=n.fontStyle,o=n.padding;this.anchorPosition=x||jb.TOP_LEFT,this.backgroundColor=t||"rgba(0, 0, 0, 0.5)",this.fontColor=e||"rgba(255, 255, 255, 1)",this.fontSize=i||14,this.fontStyle=r||"Georgia",this.padding=o||4}return n}(),Cb=function(){function n(x,t,e){void 0===e&&(e={}),this.text="string"===typeof x?[x]:x instanceof n?x.text:x,this.anchor=t,this.options=new _b(e)}return n.prototype.measureWidth=function(n){var x=this.options.padding;return this.text.map(function(x){return n.measureText(x).width}).reduce(function(n,x){return n<x?x:n},0)+2*x},n.prototype.measureHeight=function(){var n=this.options,x=n.fontSize,t=n.padding;return this.text.length*x+2*t},n.prototype.getUpperLeft=function(n,x){var t=this.options.anchorPosition,e=t===jb.BOTTOM_RIGHT||t===jb.TOP_RIGHT,i=t===jb.BOTTOM_LEFT||t===jb.BOTTOM_RIGHT,r=this.measureWidth(n),o=this.measureHeight(),s=e?this.anchor.x-r:this.anchor.x,h=i?this.anchor.y-o:this.anchor.y;if(x){var u=x.width,a=x.height,g=Math.max(Math.min(s,u-r),0),l=Math.max(Math.min(h,a-o),0);return{x:g,y:l}}return{x:s,y:h}},n.prototype.draw=function(n){var x=kb(n),t=qb(x),e=this.options,i=e.backgroundColor,r=e.fontColor,o=e.fontSize,s=e.fontStyle,h=e.padding;t.font=o+"px "+s;var u=this.measureWidth(t),a=this.measureHeight();t.fillStyle=i;var g=this.getUpperLeft(t,x);t.fillRect(g.x,g.y,u,a),t.fillStyle=r,this.text.forEach(function(n,x){var e=h+g.x,i=h+g.y+(x+1)*o;t.fillText(n,e,i)})},n}(),Sb=function(){function n(n){void 0===n&&(n={});var x=n.boxColor,t=n.lineWidth,e=n.label,i=n.drawLabelOptions;this.boxColor=x||"rgba(0, 0, 255, 1)",this.lineWidth=t||2,this.label=e;var r={anchorPosition:jb.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new _b(Object.assign({},r,i))}return n}();(function(){function n(n,x){void 0===x&&(x={}),this.box=new Wm(n),this.options=new Sb(x)}n.prototype.draw=function(n){var x=qb(n),t=this.options,e=t.boxColor,i=t.lineWidth,r=this.box,o=r.x,s=r.y,h=r.width,u=r.height;x.strokeStyle=e,x.lineWidth=i,x.strokeRect(o,s,h,u);var a=this.options.label;a&&new Cb([a],{x:o-i/2,y:s},this.options.drawLabelOptions).draw(n)}})();function Eb(n){var x=wb.getEnv(),t=x.Image,e=x.Video;return n instanceof t&&n.complete||n instanceof e&&n.readyState>=3}function Db(n){return new Promise(function(x,t){if(n instanceof wb.getEnv().Canvas||Eb(n))return x();function e(n){n.currentTarget&&(n.currentTarget.removeEventListener("load",e),n.currentTarget.removeEventListener("error",i),x(n))}function i(n){n.currentTarget&&(n.currentTarget.removeEventListener("load",e),n.currentTarget.removeEventListener("error",i),t(n))}n.addEventListener("load",e),n.addEventListener("error",i)})}function Ob(n){var x=wb.getEnv(),t=x.Image,e=x.Video;return n instanceof t?new Em(n.naturalWidth,n.naturalHeight):n instanceof e?new Em(n.videoWidth,n.videoHeight):new Em(n.width,n.height)}function Ib(n){var x=n.width,t=n.height,e=wb.getEnv().createCanvasElement,i=e();return i.width=x,i.height=t,i}function Tb(n,x){var t=wb.getEnv().ImageData;if(!(n instanceof t)&&!Eb(n))throw new Error("createCanvasFromMedia - media has not finished loading yet");var e=x||Ob(n),i=e.width,r=e.height,o=Ib({width:i,height:r});return n instanceof t?qb(o).putImageData(n,0,0):qb(o).drawImage(n,0,0,i,r),o}function Ab(n,x){return _m(this,void 0,void 0,function(){var t,e,i,r,o,s;return Cm(this,function(h){switch(h.label){case 0:return t=x||wb.getEnv().createCanvasElement(),e=n.shape.slice(Tm(n)?1:0),i=e[0],r=e[1],o=e[2],s=bs(function(){return n.as3D(i,r,o).toInt()}),[4,im.toPixels(s,t)];case 1:return h.sent(),s.dispose(),[2,t]}})})}function Nb(n){var x=wb.getEnv(),t=x.Image,e=x.Canvas,i=x.Video;return n instanceof t||n instanceof e||n instanceof i}function Rb(n,x,t){void 0===t&&(t=!1);var e=wb.getEnv(),i=e.Image,r=e.Canvas;if(!(n instanceof i||n instanceof r))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");var o=Ob(n),s=x/Math.max(o.height,o.width),h=s*o.width,u=s*o.height,a=Ib({width:x,height:x}),g=n instanceof r?n:Tb(n),l=Math.abs(h-u)/2,c=t&&h<u?l:0,d=t&&u<h?l:0;return qb(a).drawImage(g,c,d,h,u),a}var Mb=function(){function n(n,x){var t=this;if(void 0===x&&(x=!1),this._imageTensors=[],this._canvases=[],this._treatAsBatchInput=!1,this._inputDimensions=[],!Array.isArray(n))throw new Error("NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have "+n);this._treatAsBatchInput=x,this._batchSize=n.length,n.forEach(function(n,x){if(Im(n))return t._imageTensors[x]=n,void(t._inputDimensions[x]=n.shape);if(Tm(n)){var e=n.shape[0];if(1!==e)throw new Error("NetInput - tf.Tensor4D with batchSize "+e+" passed, but not supported in input array");return t._imageTensors[x]=n,void(t._inputDimensions[x]=n.shape.slice(1))}var i=n instanceof wb.getEnv().Canvas?n:Tb(n);t._canvases[x]=i,t._inputDimensions[x]=[i.height,i.width,3]})}return Object.defineProperty(n.prototype,"imageTensors",{get:function(){return this._imageTensors},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"canvases",{get:function(){return this._canvases},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"isBatchInput",{get:function(){return this.batchSize>1||this._treatAsBatchInput},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"batchSize",{get:function(){return this._batchSize},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"inputDimensions",{get:function(){return this._inputDimensions},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"inputSize",{get:function(){return this._inputSize},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"reshapedInputDimensions",{get:function(){var n=this;return Lm(this.batchSize,0,1).map(function(x,t){return n.getReshapedInputDimensions(t)})},enumerable:!0,configurable:!0}),n.prototype.getInput=function(n){return this.canvases[n]||this.imageTensors[n]},n.prototype.getInputDimensions=function(n){return this._inputDimensions[n]},n.prototype.getInputHeight=function(n){return this._inputDimensions[n][0]},n.prototype.getInputWidth=function(n){return this._inputDimensions[n][1]},n.prototype.getReshapedInputDimensions=function(n){if("number"!==typeof this.inputSize)throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");var x=this.getInputWidth(n),t=this.getInputHeight(n);return Fm({width:x,height:t},this.inputSize)},n.prototype.toBatchTensor=function(n,x){var t=this;return void 0===x&&(x=!0),this._inputSize=n,bs(function(){var e=Lm(t.batchSize,0,1).map(function(e){var i=t.getInput(e);if(i instanceof Kr){var r=Tm(i)?i:i.expandDims();return r=Qm(r,x),r.shape[1]===n&&r.shape[2]===n||(r=Ap.resizeBilinear(r,[n,n])),r.as3D(n,n,3)}if(i instanceof wb.getEnv().Canvas)return im.fromPixels(Rb(i,n,x));throw new Error("toBatchTensor - at batchIdx "+e+", expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have "+i)}),i=Hh(e.map(function(n){return n.toFloat()})).as4D(t.batchSize,n,n,3);return i})},n}();function Fb(n){return _m(this,void 0,void 0,function(){var x,t,e;return Cm(this,function(i){switch(i.label){case 0:if(n instanceof Mb)return[2,n];if(x=Array.isArray(n)?n:[n],!x.length)throw new Error("toNetInput - empty array passed as input");return t=function(x){return Array.isArray(n)?" at input index "+x+":":""},e=x.map(kb),e.forEach(function(n,e){if(!Nb(n)&&!Im(n)&&!Tm(n)){if("string"===typeof x[e])throw new Error("toNetInput -"+t(e)+" string passed, but could not resolve HTMLElement for element id "+x[e]);throw new Error("toNetInput -"+t(e)+" expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id")}if(Tm(n)){var i=n.shape[0];if(1!==i)throw new Error("toNetInput -"+t(e)+" tf.Tensor4D with batchSize "+i+" passed, but not supported in input array")}}),[4,Promise.all(e.map(function(n){return Nb(n)&&Db(n)}))];case 1:return i.sent(),[2,new Mb(e,Array.isArray(n))]}})})}function Pb(n,x){return _m(this,void 0,void 0,function(){var t,e,i,r,o,s,h;return Cm(this,function(u){switch(u.label){case 0:return t=wb.getEnv().Canvas,e=n,n instanceof t?[3,5]:[4,Fb(n)];case 1:if(i=u.sent(),i.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");return r=i.getInput(0),r instanceof t?(o=r,[3,4]):[3,2];case 2:return[4,Ab(r)];case 3:o=u.sent(),u.label=4;case 4:e=o,u.label=5;case 5:return s=qb(e),h=x.map(function(n){return n instanceof Gm?n.forSize(e.width,e.height).box.floor():n}).map(function(n){return n.clipAtImageBorders(e.width,e.height)}),[2,h.map(function(n){var x=n.x,t=n.y,e=n.width,i=n.height,r=Ib({width:e,height:i});return qb(r).putImageData(s.getImageData(x,t,e,i),0,0),r})]}})})}function Lb(n,x){return _m(this,void 0,void 0,function(){return Cm(this,function(t){if(!Im(n)&&!Tm(n))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(Tm(n)&&n.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return[2,bs(function(){var t=n.shape.slice(Tm(n)?1:0),e=t[0],i=t[1],r=t[2],o=x.map(function(n){return n instanceof Gm?n.forSize(i,e).box:n}).map(function(n){return n.clipAtImageBorders(i,e)}),s=o.map(function(x){var t=x.x,o=x.y,s=x.width,h=x.height;return bf(n.as3D(e,i,r),[o,t,0],[h,s,r])});return s})]})})}function Bb(n,x){return _m(this,void 0,void 0,function(){var t,e;return Cm(this,function(i){switch(i.label){case 0:return t=wb.getEnv().fetch,[4,t(n,x)];case 1:if(e=i.sent(),!(e.status<400))throw new Error("failed to fetch: ("+e.status+") "+e.statusText+", from url: "+e.url);return[2,e]}})})}function $b(n){return _m(this,void 0,void 0,function(){return Cm(this,function(x){switch(x.label){case 0:return[4,Bb(n)];case 1:return[2,x.sent().json()]}})})}function Vb(n,x){var t=x+"-weights_manifest.json";if(!n)return{modelBaseUri:"",manifestUri:t};if("/"===n)return{modelBaseUri:"/",manifestUri:"/"+t};var e=n.startsWith("http://")?"http://":n.startsWith("https://")?"https://":"";n=n.replace(e,"");var i=n.split("/").filter(function(n){return n}),r=n.endsWith(".json")?i[i.length-1]:t,o=e+(n.endsWith(".json")?i.slice(0,i.length-1):i).join("/");return o=n.startsWith("/")?"/"+o:o,{modelBaseUri:o,manifestUri:"/"===o?"/"+r:o+"/"+r}}function Wb(n,x){return _m(this,void 0,void 0,function(){var t,e,i,r;return Cm(this,function(o){switch(o.label){case 0:return t=Vb(n,x),e=t.manifestUri,i=t.modelBaseUri,[4,$b(e)];case 1:return r=o.sent(),[2,xm.loadWeights(r,i)]}})})}var Ub=function(){function n(n){this._name=n,this._params=void 0,this._paramMappings=[]}return Object.defineProperty(n.prototype,"params",{get:function(){return this._params},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"paramMappings",{get:function(){return this._paramMappings},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"isLoaded",{get:function(){return!!this.params},enumerable:!0,configurable:!0}),n.prototype.getParamFromPath=function(n){var x=this.traversePropertyPath(n),t=x.obj,e=x.objProp;return t[e]},n.prototype.reassignParamFromPath=function(n,x){var t=this.traversePropertyPath(n),e=t.obj,i=t.objProp;e[i].dispose(),e[i]=x},n.prototype.getParamList=function(){var n=this;return this._paramMappings.map(function(x){var t=x.paramPath;return{path:t,tensor:n.getParamFromPath(t)}})},n.prototype.getTrainableParams=function(){return this.getParamList().filter(function(n){return n.tensor instanceof no})},n.prototype.getFrozenParams=function(){return this.getParamList().filter(function(n){return!(n.tensor instanceof no)})},n.prototype.variable=function(){var n=this;this.getFrozenParams().forEach(function(x){var t=x.path,e=x.tensor;n.reassignParamFromPath(t,e.variable())})},n.prototype.freeze=function(){var n=this;this.getTrainableParams().forEach(function(x){var t=x.path,e=x.tensor,i=Bs(e.dataSync());e.dispose(),n.reassignParamFromPath(t,i)})},n.prototype.dispose=function(n){void 0===n&&(n=!0),this.getParamList().forEach(function(x){if(n&&x.tensor.isDisposed)throw new Error("param tensor has already been disposed for path "+x.path);x.tensor.dispose()}),this._params=void 0},n.prototype.serializeParams=function(){return new Float32Array(this.getParamList().map(function(n){var x=n.tensor;return Array.from(x.dataSync())}).reduce(function(n,x){return n.concat(x)}))},n.prototype.load=function(n){return _m(this,void 0,void 0,function(){return Cm(this,function(x){switch(x.label){case 0:return n instanceof Float32Array?(this.extractWeights(n),[2]):[4,this.loadFromUri(n)];case 1:return x.sent(),[2]}})})},n.prototype.loadFromUri=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:if(n&&"string"!==typeof n)throw new Error(this._name+".loadFromUri - expected model uri");return[4,Wb(n,this.getDefaultModelName())];case 1:return x=t.sent(),this.loadFromWeightMap(x),[2]}})})},n.prototype.loadFromDisk=function(n){return _m(this,void 0,void 0,function(){var x,t,e,i,r,o,s,h,u,a;return Cm(this,function(g){switch(g.label){case 0:if(n&&"string"!==typeof n)throw new Error(this._name+".loadFromDisk - expected model file path");return x=wb.getEnv().readFile,t=Vb(n,this.getDefaultModelName()),e=t.manifestUri,i=t.modelBaseUri,r=function(n){return Promise.all(n.map(function(n){return x(n).then(function(n){return n.buffer})}))},o=xm.weightsLoaderFactory(r),u=(h=JSON).parse,[4,x(e)];case 1:return s=u.apply(h,[g.sent().toString()]),[4,o(s,i)];case 2:return a=g.sent(),this.loadFromWeightMap(a),[2]}})})},n.prototype.loadFromWeightMap=function(n){var x=this.extractParamsFromWeigthMap(n),t=x.paramMappings,e=x.params;this._paramMappings=t,this._params=e},n.prototype.extractWeights=function(n){var x=this.extractParams(n),t=x.paramMappings,e=x.params;this._paramMappings=t,this._params=e},n.prototype.traversePropertyPath=function(n){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");var x=n.split("/").reduce(function(x,t){if(!x.nextObj.hasOwnProperty(t))throw new Error("traversePropertyPath - object does not have property "+t+", for path "+n);return{obj:x.nextObj,objProp:t,nextObj:x.nextObj[t]}},{nextObj:this.params}),t=x.obj,e=x.objProp;if(!t||!e||!(t[e]instanceof Kr))throw new Error("traversePropertyPath - parameter is not a tensor, for path "+n);return{obj:t,objProp:e}},n}();function Hb(n,x,t){return bs(function(){var e=Jd(n,x.depthwise_filter,x.pointwise_filter,t,"same");return e=td(e,x.bias),e})}function Gb(n,x,t){return void 0===t&&(t=!1),bs(function(){var e=Rf(t?td(Wd(n,x.conv0.filters,[2,2],"same"),x.conv0.bias):Hb(n,x.conv0,[2,2])),i=Hb(e,x.conv1,[1,1]),r=Rf(td(e,i)),o=Hb(r,x.conv2,[1,1]);return Rf(td(e,td(i,o)))})}function Kb(n,x,t,e){return void 0===t&&(t=!1),void 0===e&&(e=!0),bs(function(){var i=Rf(t?td(Wd(n,x.conv0.filters,e?[2,2]:[1,1],"same"),x.conv0.bias):Hb(n,x.conv0,e?[2,2]:[1,1])),r=Hb(i,x.conv1,[1,1]),o=Rf(td(i,r)),s=Hb(o,x.conv2,[1,1]),h=Rf(td(i,td(r,s))),u=Hb(h,x.conv3,[1,1]);return Rf(td(i,td(r,td(s,u))))})}function Yb(n,x,t,e){return void 0===t&&(t="same"),void 0===e&&(e=!1),bs(function(){var i=td(Wd(n,x.filters,[1,1],t),x.bias);return e?Rf(i):i})}function Xb(n,x){Object.keys(n).forEach(function(t){x.some(function(n){return n.originalPath===t})||n[t].dispose()})}function Jb(n,x){return function(t,e,i,r){var o=Gs(n(t*e*i*i),[i,i,t,e]),s=Ws(n(e));return x.push({paramPath:r+"/filters"},{paramPath:r+"/bias"}),{filters:o,bias:s}}}function Qb(n,x){return function(t,e,i){var r=Us(n(t*e),[t,e]),o=Ws(n(e));return x.push({paramPath:i+"/weights"},{paramPath:i+"/bias"}),{weights:r,bias:o}}}var Zb=function(){function n(n,x,t){this.depthwise_filter=n,this.pointwise_filter=x,this.bias=t}return n}();function nz(n,x){return function(t,e,i){var r=Gs(n(9*t),[3,3,t,1]),o=Gs(n(t*e),[1,1,t,e]),s=Ws(n(e));return x.push({paramPath:i+"/depthwise_filter"},{paramPath:i+"/pointwise_filter"},{paramPath:i+"/bias"}),new Zb(r,o,s)}}function xz(n){return function(x){var t=n(x+"/depthwise_filter",4),e=n(x+"/pointwise_filter",4),i=n(x+"/bias",1);return new Zb(t,e,i)}}function tz(n,x){return function(t,e,i){var r=n[t];if(!Dm(r,e))throw new Error("expected weightMap["+t+"] to be a Tensor"+e+"D, instead have "+r);return x.push({originalPath:t,paramPath:i||t}),r}}function ez(n){var x=n;function t(n){var t=x.slice(0,n);return x=x.slice(n),t}function e(){return x}return{extractWeights:t,getRemainingWeights:e}}function iz(n,x){var t=Jb(n,x),e=nz(n,x);function i(n,x,i,r){void 0===r&&(r=!1);var o=r?t(n,x,3,i+"/conv0"):e(n,x,i+"/conv0"),s=e(x,x,i+"/conv1"),h=e(x,x,i+"/conv2");return{conv0:o,conv1:s,conv2:h}}function r(n,x,t,r){void 0===r&&(r=!1);var o=i(n,x,t,r),s=o.conv0,h=o.conv1,u=o.conv2,a=e(x,x,t+"/conv3");return{conv0:s,conv1:h,conv2:u,conv3:a}}return{extractDenseBlock3Params:i,extractDenseBlock4Params:r}}function rz(n){var x=[],t=ez(n),e=t.extractWeights,i=t.getRemainingWeights,r=iz(e,x).extractDenseBlock4Params,o=r(3,32,"dense0",!0),s=r(32,64,"dense1"),h=r(64,128,"dense2"),u=r(128,256,"dense3");if(0!==i().length)throw new Error("weights remaing after extract: "+i().length);return{paramMappings:x,params:{dense0:o,dense1:s,dense2:h,dense3:u}}}function oz(n){return function(x){var t=n(x+"/filters",4),e=n(x+"/bias",1);return{filters:t,bias:e}}}function sz(n,x){var t=tz(n,x),e=oz(t),i=xz(t);function r(n,x){void 0===x&&(x=!1);var t=x?e(n+"/conv0"):i(n+"/conv0"),r=i(n+"/conv1"),o=i(n+"/conv2");return{conv0:t,conv1:r,conv2:o}}function o(n,x){void 0===x&&(x=!1);var t=x?e(n+"/conv0"):i(n+"/conv0"),r=i(n+"/conv1"),o=i(n+"/conv2"),s=i(n+"/conv3");return{conv0:t,conv1:r,conv2:o,conv3:s}}return{extractDenseBlock3Params:r,extractDenseBlock4Params:o}}function hz(n){var x=[],t=sz(n,x).extractDenseBlock4Params,e={dense0:t("dense0",!0),dense1:t("dense1"),dense2:t("dense2"),dense3:t("dense3")};return Xb(n,x),{params:e,paramMappings:x}}var uz=function(n){function x(){return n.call(this,"FaceFeatureExtractor")||this}return km(x,n),x.prototype.forwardInput=function(n){var x=this.params;if(!x)throw new Error("FaceFeatureExtractor - load model before inference");return bs(function(){var t=n.toBatchTensor(112,!0),e=[122.782,117.001,104.298],i=Jm(t,e).div(Vs(255)),r=Kb(i,x.dense0,!0);return r=Kb(r,x.dense1),r=Kb(r,x.dense2),r=Kb(r,x.dense3),r=lf(r,[7,7],[2,2],"valid"),r})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.getDefaultModelName=function(){return"face_feature_extractor_model"},x.prototype.extractParamsFromWeigthMap=function(n){return hz(n)},x.prototype.extractParams=function(n){return rz(n)},x}(Ub);function az(n,x){return bs(function(){return td(nf(n,x.weights),x.bias)})}function gz(n,x,t){var e=[],i=ez(n),r=i.extractWeights,o=i.getRemainingWeights,s=Qb(r,e),h=s(x,t,"fc");if(0!==o().length)throw new Error("weights remaing after extract: "+o().length);return{paramMappings:e,params:{fc:h}}}function lz(n){var x=[],t=tz(n,x);function e(n){var x=t(n+"/weights",2),e=t(n+"/bias",1);return{weights:x,bias:e}}var i={fc:e("fc")};return Xb(n,x),{params:i,paramMappings:x}}function cz(n){var x={},t={};return Object.keys(n).forEach(function(e){var i=e.startsWith("fc")?t:x;i[e]=n[e]}),{featureExtractorMap:x,classifierMap:t}}var dz=function(n){function x(x,t){var e=n.call(this,x)||this;return e._faceFeatureExtractor=t,e}return km(x,n),Object.defineProperty(x.prototype,"faceFeatureExtractor",{get:function(){return this._faceFeatureExtractor},enumerable:!0,configurable:!0}),x.prototype.runNet=function(n){var x=this,t=this.params;if(!t)throw new Error(this._name+" - load model before inference");return bs(function(){var e=n instanceof Mb?x.faceFeatureExtractor.forwardInput(n):n;return az(e.as2D(e.shape[0],-1),t.fc)})},x.prototype.dispose=function(x){void 0===x&&(x=!0),this.faceFeatureExtractor.dispose(x),n.prototype.dispose.call(this,x)},x.prototype.loadClassifierParams=function(n){var x=this.extractClassifierParams(n),t=x.params,e=x.paramMappings;this._params=t,this._paramMappings=e},x.prototype.extractClassifierParams=function(n){return gz(n,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())},x.prototype.extractParamsFromWeigthMap=function(n){var x=cz(n),t=x.featureExtractorMap,e=x.classifierMap;return this.faceFeatureExtractor.loadFromWeightMap(t),lz(e)},x.prototype.extractParams=function(n){var x=this.getClassifierChannelsIn(),t=this.getClassifierChannelsOut(),e=t*x+t,i=n.slice(0,n.length-e),r=n.slice(n.length-e);return this.faceFeatureExtractor.extractWeights(i),this.extractClassifierParams(r)},x}(Ub),fz=["neutral","happy","sad","angry","fearful","disgusted","surprised"],pz=function(){function n(n){var x=this;if(7!==n.length)throw new Error("FaceExpressions.constructor - expected probabilities.length to be 7, have: "+n.length);fz.forEach(function(t,e){x[t]=n[e]})}return n.prototype.asSortedArray=function(){var n=this;return fz.map(function(x){return{expression:x,probability:n[x]}}).sort(function(n,x){return x.probability-n.probability})},n}(),yz=function(n){function x(x){return void 0===x&&(x=new uz),n.call(this,"FaceExpressionNet",x)||this}return km(x,n),x.prototype.forwardInput=function(n){var x=this;return bs(function(){return yu(x.runNet(n))})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.predictExpressions=function(n){return _m(this,void 0,void 0,function(){var x,t,e,i,r=this;return Cm(this,function(o){switch(o.label){case 0:return[4,Fb(n)];case 1:return x=o.sent(),[4,this.forwardInput(x)];case 2:return t=o.sent(),[4,Promise.all(Yh(t).map(function(n){return _m(r,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return[4,n.data()];case 1:return x=t.sent(),n.dispose(),[2,x]}})})}))];case 3:return e=o.sent(),t.dispose(),i=e.map(function(n){return new pz(n)}),[2,x.isBatchInput?i:i[0]]}})})},x.prototype.getDefaultModelName=function(){return"face_expression_model"},x.prototype.getClassifierChannelsIn=function(){return 256},x.prototype.getClassifierChannelsOut=function(){return 7},x}(dz);function mz(n,x){var t={expressions:x};return Object.assign({},n,t)}function bz(n){return gb(n)&&n["landmarks"]instanceof rb&&n["unshiftedLandmarks"]instanceof rb&&n["alignedRect"]instanceof Gm}function zz(n,x){var t=n.detection.box,e=x.shiftBy(t.x,t.y),i=e.align(),r=n.detection.imageDims,o=new Gm(n.detection.score,i.rescale(r.reverse()),r),s={landmarks:e,unshiftedLandmarks:x,alignedRect:o};return Object.assign({},n,s)}var vz=function(){function n(n){void 0===n&&(n={});var x=n.drawLines,t=void 0===x||x,e=n.drawPoints,i=void 0===e||e,r=n.lineWidth,o=n.lineColor,s=n.pointSize,h=n.pointColor;this.drawLines=t,this.drawPoints=i,this.lineWidth=r||1,this.pointSize=s||2,this.lineColor=o||"rgba(0, 255, 255, 1)",this.pointColor=h||"rgba(255, 0, 255, 1)"}return n}();(function(){function n(n,x){void 0===x&&(x={}),this.faceLandmarks=n,this.options=new vz(x)}n.prototype.draw=function(n){var x=qb(n),t=this.options,e=t.drawLines,i=t.drawPoints,r=t.lineWidth,o=t.lineColor,s=t.pointSize,h=t.pointColor;if(e&&this.faceLandmarks instanceof sb&&(x.strokeStyle=o,x.lineWidth=r,jm(x,this.faceLandmarks.getJawOutline()),jm(x,this.faceLandmarks.getLeftEyeBrow()),jm(x,this.faceLandmarks.getRightEyeBrow()),jm(x,this.faceLandmarks.getNose()),jm(x,this.faceLandmarks.getLeftEye(),!0),jm(x,this.faceLandmarks.getRightEye(),!0),jm(x,this.faceLandmarks.getMouth(),!0)),i){x.strokeStyle=h,x.fillStyle=h;var u=function(n){x.beginPath(),x.arc(n.x,n.y,s,0,2*Math.PI),x.fill()};this.faceLandmarks.positions.forEach(u)}}})();function jz(n,x){var t=Jb(n,x),e=nz(n,x);function i(n,x,i){var r=e(n,x,i+"/separable_conv0"),o=e(x,x,i+"/separable_conv1"),s=t(n,x,1,i+"/expansion_conv");return{separable_conv0:r,separable_conv1:o,expansion_conv:s}}function r(n,x){var t=e(n,n,x+"/separable_conv0"),i=e(n,n,x+"/separable_conv1"),r=e(n,n,x+"/separable_conv2");return{separable_conv0:t,separable_conv1:i,separable_conv2:r}}return{extractConvParams:t,extractSeparableConvParams:e,extractReductionBlockParams:i,extractMainBlockParams:r}}function wz(n,x){var t=[],e=ez(n),i=e.extractWeights,r=e.getRemainingWeights,o=jz(i,t),s=o.extractConvParams,h=o.extractSeparableConvParams,u=o.extractReductionBlockParams,a=o.extractMainBlockParams,g=s(3,32,3,"entry_flow/conv_in"),l=u(32,64,"entry_flow/reduction_block_0"),c=u(64,128,"entry_flow/reduction_block_1"),d={conv_in:g,reduction_block_0:l,reduction_block_1:c},f={};Lm(x,0,1).forEach(function(n){f["main_block_"+n]=a(128,"middle_flow/main_block_"+n)});var p=u(128,256,"exit_flow/reduction_block"),y=h(256,512,"exit_flow/separable_conv"),m={reduction_block:p,separable_conv:y};if(0!==r().length)throw new Error("weights remaing after extract: "+r().length);return{paramMappings:t,params:{entry_flow:d,middle_flow:f,exit_flow:m}}}function kz(n,x){var t=tz(n,x),e=oz(t),i=xz(t);function r(n){var x=i(n+"/separable_conv0"),t=i(n+"/separable_conv1"),r=e(n+"/expansion_conv");return{separable_conv0:x,separable_conv1:t,expansion_conv:r}}function o(n){var x=i(n+"/separable_conv0"),t=i(n+"/separable_conv1"),e=i(n+"/separable_conv2");return{separable_conv0:x,separable_conv1:t,separable_conv2:e}}return{extractConvParams:e,extractSeparableConvParams:i,extractReductionBlockParams:r,extractMainBlockParams:o}}function qz(n,x){var t=[],e=kz(n,t),i=e.extractConvParams,r=e.extractSeparableConvParams,o=e.extractReductionBlockParams,s=e.extractMainBlockParams,h=i("entry_flow/conv_in"),u=o("entry_flow/reduction_block_0"),a=o("entry_flow/reduction_block_1"),g={conv_in:h,reduction_block_0:u,reduction_block_1:a},l={};Lm(x,0,1).forEach(function(n){l["main_block_"+n]=s("middle_flow/main_block_"+n)});var c=o("exit_flow/reduction_block"),d=r("exit_flow/separable_conv"),f={reduction_block:c,separable_conv:d};return Xb(n,t),{params:{entry_flow:g,middle_flow:l,exit_flow:f},paramMappings:t}}function _z(n,x,t){return td(Wd(n,x.filters,t,"same"),x.bias)}function Cz(n,x,t){void 0===t&&(t=!0);var e=t?Rf(n):n;return e=Hb(e,x.separable_conv0,[1,1]),e=Hb(Rf(e),x.separable_conv1,[1,1]),e=gf(e,[3,3],[2,2],"same"),e=td(e,_z(n,x.expansion_conv,[2,2])),e}function Sz(n,x){var t=Hb(Rf(n),x.separable_conv0,[1,1]);return t=Hb(Rf(t),x.separable_conv1,[1,1]),t=Hb(Rf(t),x.separable_conv2,[1,1]),t=td(t,n),t}var Ez,Dz=function(n){function x(x){var t=n.call(this,"TinyXception")||this;return t._numMainBlocks=x,t}return km(x,n),x.prototype.forwardInput=function(n){var x=this,t=this.params;if(!t)throw new Error("TinyXception - load model before inference");return bs(function(){var e=n.toBatchTensor(112,!0),i=[122.782,117.001,104.298],r=Jm(e,i).div(Vs(256)),o=Rf(_z(r,t.entry_flow.conv_in,[2,2]));return o=Cz(o,t.entry_flow.reduction_block_0,!1),o=Cz(o,t.entry_flow.reduction_block_1),Lm(x._numMainBlocks,0,1).forEach(function(n){o=Sz(o,t.middle_flow["main_block_"+n])}),o=Cz(o,t.exit_flow.reduction_block),o=Rf(Hb(o,t.exit_flow.separable_conv,[1,1])),o})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.getDefaultModelName=function(){return"tiny_xception_model"},x.prototype.extractParamsFromWeigthMap=function(n){return qz(n,this._numMainBlocks)},x.prototype.extractParams=function(n){return wz(n,this._numMainBlocks)},x}(Ub);function Oz(n){var x=[],t=ez(n),e=t.extractWeights,i=t.getRemainingWeights,r=Qb(e,x),o=r(512,1,"fc/age"),s=r(512,2,"fc/gender");if(0!==i().length)throw new Error("weights remaing after extract: "+i().length);return{paramMappings:x,params:{fc:{age:o,gender:s}}}}function Iz(n){var x=[],t=tz(n,x);function e(n){var x=t(n+"/weights",2),e=t(n+"/bias",1);return{weights:x,bias:e}}var i={fc:{age:e("fc/age"),gender:e("fc/gender")}};return Xb(n,x),{params:i,paramMappings:x}}(function(n){n["FEMALE"]="female",n["MALE"]="male"})(Ez||(Ez={}));var Tz=function(n){function x(x){void 0===x&&(x=new Dz(2));var t=n.call(this,"AgeGenderNet")||this;return t._faceFeatureExtractor=x,t}return km(x,n),Object.defineProperty(x.prototype,"faceFeatureExtractor",{get:function(){return this._faceFeatureExtractor},enumerable:!0,configurable:!0}),x.prototype.runNet=function(n){var x=this,t=this.params;if(!t)throw new Error(this._name+" - load model before inference");return bs(function(){var e=n instanceof Mb?x.faceFeatureExtractor.forwardInput(n):n,i=lf(e,[7,7],[2,2],"valid").as2D(e.shape[0],-1),r=az(i,t.fc.age).as1D(),o=az(i,t.fc.gender);return{age:r,gender:o}})},x.prototype.forwardInput=function(n){var x=this;return bs(function(){var t=x.runNet(n),e=t.age,i=t.gender;return{age:e,gender:yu(i)}})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.predictAgeAndGender=function(n){return _m(this,void 0,void 0,function(){var x,t,e,i,r,o,s=this;return Cm(this,function(h){switch(h.label){case 0:return[4,Fb(n)];case 1:return x=h.sent(),[4,this.forwardInput(x)];case 2:return t=h.sent(),e=Yh(t.age),i=Yh(t.gender),r=e.map(function(n,x){return{ageTensor:n,genderTensor:i[x]}}),[4,Promise.all(r.map(function(n){var x=n.ageTensor,t=n.genderTensor;return _m(s,void 0,void 0,function(){var n,e,i,r,o;return Cm(this,function(s){switch(s.label){case 0:return[4,x.data()];case 1:return n=s.sent()[0],[4,t.data()];case 2:return e=s.sent()[0],i=e>.5,r=i?Ez.MALE:Ez.FEMALE,o=i?e:1-e,x.dispose(),t.dispose(),[2,{age:n,gender:r,genderProbability:o}]}})})}))];case 3:return o=h.sent(),t.age.dispose(),t.gender.dispose(),[2,x.isBatchInput?o:o[0]]}})})},x.prototype.getDefaultModelName=function(){return"age_gender_model"},x.prototype.dispose=function(x){void 0===x&&(x=!0),this.faceFeatureExtractor.dispose(x),n.prototype.dispose.call(this,x)},x.prototype.loadClassifierParams=function(n){var x=this.extractClassifierParams(n),t=x.params,e=x.paramMappings;this._params=t,this._paramMappings=e},x.prototype.extractClassifierParams=function(n){return Oz(n)},x.prototype.extractParamsFromWeigthMap=function(n){var x=cz(n),t=x.featureExtractorMap,e=x.classifierMap;return this.faceFeatureExtractor.loadFromWeightMap(t),Iz(e)},x.prototype.extractParams=function(n){var x=1539,t=n.slice(0,n.length-x),e=n.slice(n.length-x);return this.faceFeatureExtractor.extractWeights(t),this.extractClassifierParams(e)},x}(Ub),Az=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.postProcess=function(n,x,t){var e=t.map(function(n){var t=n.width,e=n.height,i=x/Math.max(e,t);return{width:t*i,height:e*i}}),i=e.length;return bs(function(){var t=function(n,x){return Hh([Zs([68],n),Zs([68],x)],1).as2D(1,136).as1D()},r=function(n,x){var t=e[n],i=t.width,r=t.height;return x(i,r)?Math.abs(i-r)/2:0},o=function(n){return r(n,function(n,x){return n<x})},s=function(n){return r(n,function(n,x){return x<n})},h=n.mul(Zs([i,136],x)).sub(Hh(Array.from(Array(i),function(n,x){return t(o(x),s(x))}))).div(Hh(Array.from(Array(i),function(n,x){return t(e[x].width,e[x].height)})));return h})},x.prototype.forwardInput=function(n){var x=this;return bs(function(){var t=x.runNet(n);return x.postProcess(t,n.inputSize,n.inputDimensions.map(function(n){var x=n[0],t=n[1];return{height:x,width:t}}))})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.detectLandmarks=function(n){return _m(this,void 0,void 0,function(){var x,t,e,i=this;return Cm(this,function(r){switch(r.label){case 0:return[4,Fb(n)];case 1:return x=r.sent(),t=bs(function(){return Yh(i.forwardInput(x))}),[4,Promise.all(t.map(function(n,t){return _m(i,void 0,void 0,function(){var e,i,r,o,s;return Cm(this,function(h){switch(h.label){case 0:return r=(i=Array).from,[4,n.data()];case 1:return e=r.apply(i,[h.sent()]),o=e.filter(function(n,x){return Nm(x)}),s=e.filter(function(n,x){return!Nm(x)}),[2,new sb(Array(68).fill(0).map(function(n,x){return new Vm(o[x],s[x])}),{height:x.getInputHeight(t),width:x.getInputWidth(t)})]}})})}))];case 2:return e=r.sent(),t.forEach(function(n){return n.dispose()}),[2,x.isBatchInput?e:e[0]]}})})},x.prototype.getClassifierChannelsOut=function(){return 136},x}(dz),Nz=function(n){function x(x){return void 0===x&&(x=new uz),n.call(this,"FaceLandmark68Net",x)||this}return km(x,n),x.prototype.getDefaultModelName=function(){return"face_landmark_68_model"},x.prototype.getClassifierChannelsIn=function(){return 256},x}(Az);function Rz(n){var x=[],t=sz(n,x).extractDenseBlock3Params,e={dense0:t("dense0",!0),dense1:t("dense1"),dense2:t("dense2")};return Xb(n,x),{params:e,paramMappings:x}}function Mz(n){var x=[],t=ez(n),e=t.extractWeights,i=t.getRemainingWeights,r=iz(e,x).extractDenseBlock3Params,o=r(3,32,"dense0",!0),s=r(32,64,"dense1"),h=r(64,128,"dense2");if(0!==i().length)throw new Error("weights remaing after extract: "+i().length);return{paramMappings:x,params:{dense0:o,dense1:s,dense2:h}}}var Fz=function(n){function x(){return n.call(this,"TinyFaceFeatureExtractor")||this}return km(x,n),x.prototype.forwardInput=function(n){var x=this.params;if(!x)throw new Error("TinyFaceFeatureExtractor - load model before inference");return bs(function(){var t=n.toBatchTensor(112,!0),e=[122.782,117.001,104.298],i=Jm(t,e).div(Vs(255)),r=Gb(i,x.dense0,!0);return r=Gb(r,x.dense1),r=Gb(r,x.dense2),r=lf(r,[14,14],[2,2],"valid"),r})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.getDefaultModelName=function(){return"face_feature_extractor_tiny_model"},x.prototype.extractParamsFromWeigthMap=function(n){return Rz(n)},x.prototype.extractParams=function(n){return Mz(n)},x}(Ub),Pz=function(n){function x(x){return void 0===x&&(x=new Fz),n.call(this,"FaceLandmark68TinyNet",x)||this}return km(x,n),x.prototype.getDefaultModelName=function(){return"face_landmark_68_tiny_model"},x.prototype.getClassifierChannelsIn=function(){return 128},x}(Az);(function(n){function x(){return null!==n&&n.apply(this,arguments)||this}km(x,n)})(Nz);function Lz(n,x){return td(pd(n,x.weights),x.biases)}function Bz(n,x,t,e,i){void 0===i&&(i="same");var r=x.conv,o=r.filters,s=r.bias,h=Wd(n,o,t,i);return h=td(h,s),h=Lz(h,x.scale),e?Rf(h):h}function $z(n,x){return Bz(n,x,[1,1],!0)}function Vz(n,x){return Bz(n,x,[1,1],!1)}function Wz(n,x){return Bz(n,x,[2,2],!0,"valid")}function Uz(n,x){function t(x,t,e){var i=n(x),r=i.length/(t*e*e);if(Am(r))throw new Error("depth has to be an integer: "+r+", weights.length: "+i.length+", numFilters: "+t+", filterSize: "+e);return bs(function(){return Pf(Gs(i,[t,r,e,e]),[2,3,1,0])})}function e(e,i,r,o){var s=t(e,i,r),h=Ws(n(i));return x.push({paramPath:o+"/filters"},{paramPath:o+"/bias"}),{filters:s,bias:h}}function i(t,e){var i=Ws(n(t)),r=Ws(n(t));return x.push({paramPath:e+"/weights"},{paramPath:e+"/biases"}),{weights:i,biases:r}}function r(n,x,t,r){var o=e(n,x,t,r+"/conv"),s=i(x,r+"/scale");return{conv:o,scale:s}}function o(n,x,t,e,i){void 0===i&&(i=!1);var o=r((i?.5:1)*n,x,t,e+"/conv1"),s=r(n,x,t,e+"/conv2");return{conv1:o,conv2:s}}return{extractConvLayerParams:r,extractResidualLayerParams:o}}function Hz(n){var x=ez(n),t=x.extractWeights,e=x.getRemainingWeights,i=[],r=Uz(t,i),o=r.extractConvLayerParams,s=r.extractResidualLayerParams,h=o(4704,32,7,"conv32_down"),u=s(9216,32,3,"conv32_1"),a=s(9216,32,3,"conv32_2"),g=s(9216,32,3,"conv32_3"),l=s(36864,64,3,"conv64_down",!0),c=s(36864,64,3,"conv64_1"),d=s(36864,64,3,"conv64_2"),f=s(36864,64,3,"conv64_3"),p=s(147456,128,3,"conv128_down",!0),y=s(147456,128,3,"conv128_1"),m=s(147456,128,3,"conv128_2"),b=s(589824,256,3,"conv256_down",!0),z=s(589824,256,3,"conv256_1"),v=s(589824,256,3,"conv256_2"),j=s(589824,256,3,"conv256_down_out"),w=bs(function(){return Pf(Us(t(32768),[128,256]),[1,0])});if(i.push({paramPath:"fc"}),0!==e().length)throw new Error("weights remaing after extract: "+e().length);var k={conv32_down:h,conv32_1:u,conv32_2:a,conv32_3:g,conv64_down:l,conv64_1:c,conv64_2:d,conv64_3:f,conv128_down:p,conv128_1:y,conv128_2:m,conv256_down:b,conv256_1:z,conv256_2:v,conv256_down_out:j,fc:w};return{params:k,paramMappings:i}}function Gz(n,x){var t=tz(n,x);function e(n){var x=t(n+"/scale/weights",1),e=t(n+"/scale/biases",1);return{weights:x,biases:e}}function i(n){var x=t(n+"/conv/filters",4),i=t(n+"/conv/bias",1),r=e(n);return{conv:{filters:x,bias:i},scale:r}}function r(n){return{conv1:i(n+"/conv1"),conv2:i(n+"/conv2")}}return{extractConvLayerParams:i,extractResidualLayerParams:r}}function Kz(n){var x=[],t=Gz(n,x),e=t.extractConvLayerParams,i=t.extractResidualLayerParams,r=e("conv32_down"),o=i("conv32_1"),s=i("conv32_2"),h=i("conv32_3"),u=i("conv64_down"),a=i("conv64_1"),g=i("conv64_2"),l=i("conv64_3"),c=i("conv128_down"),d=i("conv128_1"),f=i("conv128_2"),p=i("conv256_down"),y=i("conv256_1"),m=i("conv256_2"),b=i("conv256_down_out"),z=n["fc"];if(x.push({originalPath:"fc",paramPath:"fc"}),!Om(z))throw new Error("expected weightMap[fc] to be a Tensor2D, instead have "+z);var v={conv32_down:r,conv32_1:o,conv32_2:s,conv32_3:h,conv64_down:u,conv64_1:a,conv64_2:g,conv64_3:l,conv128_down:c,conv128_1:d,conv128_2:f,conv256_down:p,conv256_1:y,conv256_2:m,conv256_down_out:b,fc:z};return Xb(n,x),{params:v,paramMappings:x}}function Yz(n,x){var t=$z(n,x.conv1);return t=Vz(t,x.conv2),t=td(t,n),t=Rf(t),t}function Xz(n,x){var t=Wz(n,x.conv1);t=Vz(t,x.conv2);var e=lf(n,2,2,"valid"),i=Qs(e.shape),r=e.shape[3]!==t.shape[3],o=e.shape[1]!==t.shape[1]||e.shape[2]!==t.shape[2];if(o){var s=Sm(t.shape);s[1]=1;var h=Qs(s);t=ih([t,h],1);var u=Sm(t.shape);u[2]=1;var a=Qs(u);t=ih([t,a],2)}return e=r?ih([e,i],3):e,t=td(e,t),t=Rf(t),t}var Jz=function(n){function x(){return n.call(this,"FaceRecognitionNet")||this}return km(x,n),x.prototype.forwardInput=function(n){var x=this.params;if(!x)throw new Error("FaceRecognitionNet - load model before inference");return bs(function(){var t=n.toBatchTensor(150,!0).toFloat(),e=[122.782,117.001,104.298],i=Jm(t,e).div(Vs(256)),r=Wz(i,x.conv32_down);r=gf(r,3,2,"valid"),r=Yz(r,x.conv32_1),r=Yz(r,x.conv32_2),r=Yz(r,x.conv32_3),r=Xz(r,x.conv64_down),r=Yz(r,x.conv64_1),r=Yz(r,x.conv64_2),r=Yz(r,x.conv64_3),r=Xz(r,x.conv128_down),r=Yz(r,x.conv128_1),r=Yz(r,x.conv128_2),r=Xz(r,x.conv256_down),r=Yz(r,x.conv256_1),r=Yz(r,x.conv256_2),r=Xz(r,x.conv256_down_out);var o=r.mean([1,2]),s=nf(o,x.fc);return s})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.computeFaceDescriptor=function(n){return _m(this,void 0,void 0,function(){var x,t,e,i=this;return Cm(this,function(r){switch(r.label){case 0:return[4,Fb(n)];case 1:return x=r.sent(),t=bs(function(){return Yh(i.forwardInput(x))}),[4,Promise.all(t.map(function(n){return n.data()}))];case 2:return e=r.sent(),t.forEach(function(n){return n.dispose()}),[2,x.isBatchInput?e:e[0]]}})})},x.prototype.getDefaultModelName=function(){return"face_recognition_model"},x.prototype.extractParamsFromWeigthMap=function(n){return Kz(n)},x.prototype.extractParams=function(n){return Hz(n)},x}(Ub);function Qz(n,x,t){var e={gender:x,genderProbability:t};return Object.assign({},n,e)}var Zz=function(){function n(n){var x=void 0===n?{}:n,t=x.minFaceSize,e=x.scaleFactor,i=x.maxNumScales,r=x.scoreThresholds,o=x.scaleSteps;if(this._name="MtcnnOptions",this._minFaceSize=t||20,this._scaleFactor=e||.709,this._maxNumScales=i||10,this._scoreThresholds=r||[.6,.7,.7],this._scaleSteps=o,"number"!==typeof this._minFaceSize||this._minFaceSize<0)throw new Error(this._name+" - expected minFaceSize to be a number > 0");if("number"!==typeof this._scaleFactor||this._scaleFactor<=0||this._scaleFactor>=1)throw new Error(this._name+" - expected scaleFactor to be a number between 0 and 1");if("number"!==typeof this._maxNumScales||this._maxNumScales<0)throw new Error(this._name+" - expected maxNumScales to be a number > 0");if(!Array.isArray(this._scoreThresholds)||3!==this._scoreThresholds.length||this._scoreThresholds.some(function(n){return"number"!==typeof n}))throw new Error(this._name+" - expected scoreThresholds to be an array of numbers of length 3");if(this._scaleSteps&&(!Array.isArray(this._scaleSteps)||this._scaleSteps.some(function(n){return"number"!==typeof n})))throw new Error(this._name+" - expected scaleSteps to be an array of numbers")}return Object.defineProperty(n.prototype,"minFaceSize",{get:function(){return this._minFaceSize},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"scaleFactor",{get:function(){return this._scaleFactor},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"maxNumScales",{get:function(){return this._maxNumScales},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"scoreThresholds",{get:function(){return this._scoreThresholds},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"scaleSteps",{get:function(){return this._scaleSteps},enumerable:!0,configurable:!0}),n}();function nv(n,x){function t(t,e){var i=Gs(n(9*t),[3,3,t,1]),r=Ws(n(t)),o=Ws(n(t)),s=Ws(n(t)),h=Ws(n(t));return x.push({paramPath:e+"/filters"},{paramPath:e+"/batch_norm_scale"},{paramPath:e+"/batch_norm_offset"},{paramPath:e+"/batch_norm_mean"},{paramPath:e+"/batch_norm_variance"}),{filters:i,batch_norm_scale:r,batch_norm_offset:o,batch_norm_mean:s,batch_norm_variance:h}}function e(t,e,i,r,o){var s=Gs(n(t*e*i*i),[i,i,t,e]),h=Ws(n(e));return x.push({paramPath:r+"/filters"},{paramPath:r+"/"+(o?"batch_norm_offset":"bias")}),{filters:s,bias:h}}function i(n,x,t,i){var r=e(n,x,t,i,!0),o=r.filters,s=r.bias;return{filters:o,batch_norm_offset:s}}function r(n,x,e){var r=t(n,e+"/depthwise_conv"),o=i(n,x,1,e+"/pointwise_conv");return{depthwise_conv:r,pointwise_conv:o}}function o(){var n=i(3,32,3,"mobilenetv1/conv_0"),x=r(32,64,"mobilenetv1/conv_1"),t=r(64,128,"mobilenetv1/conv_2"),e=r(128,128,"mobilenetv1/conv_3"),o=r(128,256,"mobilenetv1/conv_4"),s=r(256,256,"mobilenetv1/conv_5"),h=r(256,512,"mobilenetv1/conv_6"),u=r(512,512,"mobilenetv1/conv_7"),a=r(512,512,"mobilenetv1/conv_8"),g=r(512,512,"mobilenetv1/conv_9"),l=r(512,512,"mobilenetv1/conv_10"),c=r(512,512,"mobilenetv1/conv_11"),d=r(512,1024,"mobilenetv1/conv_12"),f=r(1024,1024,"mobilenetv1/conv_13");return{conv_0:n,conv_1:x,conv_2:t,conv_3:e,conv_4:o,conv_5:s,conv_6:h,conv_7:u,conv_8:a,conv_9:g,conv_10:l,conv_11:c,conv_12:d,conv_13:f}}function s(){var n=i(1024,256,1,"prediction_layer/conv_0"),x=i(256,512,3,"prediction_layer/conv_1"),t=i(512,128,1,"prediction_layer/conv_2"),r=i(128,256,3,"prediction_layer/conv_3"),o=i(256,128,1,"prediction_layer/conv_4"),s=i(128,256,3,"prediction_layer/conv_5"),h=i(256,64,1,"prediction_layer/conv_6"),u=i(64,128,3,"prediction_layer/conv_7"),a=e(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),g=e(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),l=e(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),c=e(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),d=e(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),f=e(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),p=e(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),y=e(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),m=e(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),b=e(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),z=e(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),v=e(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),j={box_encoding_predictor:a,class_predictor:g},w={box_encoding_predictor:l,class_predictor:c},k={box_encoding_predictor:d,class_predictor:f},q={box_encoding_predictor:p,class_predictor:y},_={box_encoding_predictor:m,class_predictor:b},C={box_encoding_predictor:z,class_predictor:v};return{conv_0:n,conv_1:x,conv_2:t,conv_3:r,conv_4:o,conv_5:s,conv_6:h,conv_7:u,box_predictor_0:j,box_predictor_1:w,box_predictor_2:k,box_predictor_3:q,box_predictor_4:_,box_predictor_5:C}}return{extractMobilenetV1Params:o,extractPredictionLayerParams:s}}function xv(n){var x=[],t=ez(n),e=t.extractWeights,i=t.getRemainingWeights,r=nv(e,x),o=r.extractMobilenetV1Params,s=r.extractPredictionLayerParams,h=o(),u=s(),a=Hs(e(20472),[1,5118,4]),g={extra_dim:a};if(x.push({paramPath:"output_layer/extra_dim"}),0!==i().length)throw new Error("weights remaing after extract: "+i().length);return{params:{mobilenetv1:h,prediction_layer:u,output_layer:g},paramMappings:x}}function tv(n,x){var t=tz(n,x);function e(n,x,e){var i=t(n+"/Conv2d_"+x+"_pointwise/weights",4,e+"/filters"),r=t(n+"/Conv2d_"+x+"_pointwise/convolution_bn_offset",1,e+"/batch_norm_offset");return{filters:i,batch_norm_offset:r}}function i(n){var x="mobilenetv1/conv_"+n,i="MobilenetV1/Conv2d_"+n+"_depthwise",r=x+"/depthwise_conv",o=x+"/pointwise_conv",s=t(i+"/depthwise_weights",4,r+"/filters"),h=t(i+"/BatchNorm/gamma",1,r+"/batch_norm_scale"),u=t(i+"/BatchNorm/beta",1,r+"/batch_norm_offset"),a=t(i+"/BatchNorm/moving_mean",1,r+"/batch_norm_mean"),g=t(i+"/BatchNorm/moving_variance",1,r+"/batch_norm_variance");return{depthwise_conv:{filters:s,batch_norm_scale:h,batch_norm_offset:u,batch_norm_mean:a,batch_norm_variance:g},pointwise_conv:e("MobilenetV1",n,o)}}function r(){return{conv_0:e("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:i(1),conv_2:i(2),conv_3:i(3),conv_4:i(4),conv_5:i(5),conv_6:i(6),conv_7:i(7),conv_8:i(8),conv_9:i(9),conv_10:i(10),conv_11:i(11),conv_12:i(12),conv_13:i(13)}}function o(n,x){var e=t(n+"/weights",4,x+"/filters"),i=t(n+"/biases",1,x+"/bias");return{filters:e,bias:i}}function s(n){var x=o("Prediction/BoxPredictor_"+n+"/BoxEncodingPredictor","prediction_layer/box_predictor_"+n+"/box_encoding_predictor"),t=o("Prediction/BoxPredictor_"+n+"/ClassPredictor","prediction_layer/box_predictor_"+n+"/class_predictor");return{box_encoding_predictor:x,class_predictor:t}}function h(){return{conv_0:e("Prediction",0,"prediction_layer/conv_0"),conv_1:e("Prediction",1,"prediction_layer/conv_1"),conv_2:e("Prediction",2,"prediction_layer/conv_2"),conv_3:e("Prediction",3,"prediction_layer/conv_3"),conv_4:e("Prediction",4,"prediction_layer/conv_4"),conv_5:e("Prediction",5,"prediction_layer/conv_5"),conv_6:e("Prediction",6,"prediction_layer/conv_6"),conv_7:e("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:s(0),box_predictor_1:s(1),box_predictor_2:s(2),box_predictor_3:s(3),box_predictor_4:s(4),box_predictor_5:s(5)}}return{extractMobilenetV1Params:r,extractPredictionLayerParams:h}}function ev(n){var x=[],t=tv(n,x),e=t.extractMobilenetV1Params,i=t.extractPredictionLayerParams,r=n["Output/extra_dim"];if(x.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!Im(r))throw new Error("expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have "+r);var o={mobilenetv1:e(),prediction_layer:i(),output_layer:{extra_dim:r}};return Xb(n,x),{params:o,paramMappings:x}}function iv(n,x,t){return bs(function(){var e=Wd(n,x.filters,t,"same");return e=td(e,x.batch_norm_offset),ac(e,0,6)})}var rv=.0010000000474974513;function ov(n,x,t){return bs(function(){var e=Kd(n,x.filters,t,"same");return e=Hc(e,x.batch_norm_mean,x.batch_norm_variance,x.batch_norm_offset,x.batch_norm_scale,rv),ac(e,0,6)})}function sv(n){return[2,4,6,12].some(function(x){return x===n})?[2,2]:[1,1]}function hv(n,x){return bs(function(){var t=null,e=iv(n,x.conv_0,[2,2]),i=[x.conv_1,x.conv_2,x.conv_3,x.conv_4,x.conv_5,x.conv_6,x.conv_7,x.conv_8,x.conv_9,x.conv_10,x.conv_11,x.conv_12,x.conv_13];if(i.forEach(function(n,x){var i=x+1,r=sv(i);e=ov(e,n.depthwise_conv,r),e=iv(e,n.pointwise_conv,[1,1]),11===i&&(t=e)}),null===t)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out:e,conv11:t}})}function uv(n,x,t,e,i){var r=n.shape[0],o=Math.min(t,r),s=x.map(function(n,x){return{score:n,boxIndex:x}}).filter(function(n){return n.score>i}).sort(function(n,x){return x.score-n.score}),h=function(n){return n<=e?1:0},u=[];return s.forEach(function(x){if(!(u.length>=o)){for(var t=x.score,e=u.length-1;e>=0;--e){var r=av(n,x.boxIndex,u[e]);if(0!==r&&(x.score*=h(r),x.score<=i))break}t===x.score&&u.push(x.boxIndex)}}),u}function av(n,x,t){var e=n.arraySync(),i=Math.min(e[x][0],e[x][2]),r=Math.min(e[x][1],e[x][3]),o=Math.max(e[x][0],e[x][2]),s=Math.max(e[x][1],e[x][3]),h=Math.min(e[t][0],e[t][2]),u=Math.min(e[t][1],e[t][3]),a=Math.max(e[t][0],e[t][2]),g=Math.max(e[t][1],e[t][3]),l=(o-i)*(s-r),c=(a-h)*(g-u);if(l<=0||c<=0)return 0;var d=Math.max(i,h),f=Math.max(r,u),p=Math.min(o,a),y=Math.min(s,g),m=Math.max(p-d,0)*Math.max(y-f,0);return m/(l+c-m)}function gv(n){var x=Yh(Pf(n,[1,0])),t=[vd(x[2],x[0]),vd(x[3],x[1])],e=[td(x[0],od(t[0],Vs(2))),td(x[1],od(t[1],Vs(2)))];return{sizes:t,centers:e}}function lv(n,x){var t=gv(n),e=t.sizes,i=t.centers,r=Yh(Pf(x,[1,0])),o=od(pd(dc(od(r[2],Vs(5))),e[0]),Vs(2)),s=td(pd(od(r[0],Vs(10)),e[0]),i[0]),h=od(pd(dc(od(r[3],Vs(5))),e[1]),Vs(2)),u=td(pd(od(r[1],Vs(10)),e[1]),i[1]);return Pf(Hh([vd(s,o),vd(u,h),td(s,o),td(u,h)]),[1,0])}function cv(n,x,t){return bs(function(){var e=n.shape[0],i=lv(Vh(Gh(t.extra_dim,[e,1,1]),[-1,4]),Vh(n,[-1,4]));i=Vh(i,[e,i.shape[0]/e,4]);var r=kc(pf(x,[0,0,1],[-1,-1,-1])),o=pf(r,[0,0,0],[-1,-1,1]);o=Vh(o,[e,o.shape[1]]);var s=Yh(i),h=Yh(o);return{boxes:s,scores:h}})}function dv(n,x){return bs(function(){var t=n.shape[0],e=Vh(Yb(n,x.box_encoding_predictor),[t,-1,1,4]),i=Vh(Yb(n,x.class_predictor),[t,-1,3]);return{boxPredictionEncoding:e,classPrediction:i}})}function fv(n,x,t){return bs(function(){var e=iv(n,t.conv_0,[1,1]),i=iv(e,t.conv_1,[2,2]),r=iv(i,t.conv_2,[1,1]),o=iv(r,t.conv_3,[2,2]),s=iv(o,t.conv_4,[1,1]),h=iv(s,t.conv_5,[2,2]),u=iv(h,t.conv_6,[1,1]),a=iv(u,t.conv_7,[2,2]),g=dv(x,t.box_predictor_0),l=dv(n,t.box_predictor_1),c=dv(i,t.box_predictor_2),d=dv(o,t.box_predictor_3),f=dv(h,t.box_predictor_4),p=dv(a,t.box_predictor_5),y=ih([g.boxPredictionEncoding,l.boxPredictionEncoding,c.boxPredictionEncoding,d.boxPredictionEncoding,f.boxPredictionEncoding,p.boxPredictionEncoding],1),m=ih([g.classPrediction,l.classPrediction,c.classPrediction,d.classPrediction,f.classPrediction,p.classPrediction],1);return{boxPredictions:y,classPredictions:m}})}var pv=function(){function n(n){var x=void 0===n?{}:n,t=x.minConfidence,e=x.maxResults;if(this._name="SsdMobilenetv1Options",this._minConfidence=t||.5,this._maxResults=e||100,"number"!==typeof this._minConfidence||this._minConfidence<=0||this._minConfidence>=1)throw new Error(this._name+" - expected minConfidence to be a number between 0 and 1");if("number"!==typeof this._maxResults)throw new Error(this._name+" - expected maxResults to be a number")}return Object.defineProperty(n.prototype,"minConfidence",{get:function(){return this._minConfidence},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"maxResults",{get:function(){return this._maxResults},enumerable:!0,configurable:!0}),n}(),yv=function(n){function x(){return n.call(this,"SsdMobilenetv1")||this}return km(x,n),x.prototype.forwardInput=function(n){var x=this.params;if(!x)throw new Error("SsdMobilenetv1 - load model before inference");return bs(function(){var t=n.toBatchTensor(512,!1).toFloat(),e=vd(pd(t,Vs(.007843137718737125)),Vs(1)),i=hv(e,x.mobilenetv1),r=fv(i.out,i.conv11,x.prediction_layer),o=r.boxPredictions,s=r.classPredictions;return cv(o,s,x.output_layer)})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.locateFaces=function(n,x){return void 0===x&&(x={}),_m(this,void 0,void 0,function(){var t,e,i,r,o,s,h,u,a,g,l,c,d,f,p,y,m,b,z,v,j;return Cm(this,function(w){switch(w.label){case 0:return t=new pv(x),e=t.maxResults,i=t.minConfidence,[4,Fb(n)];case 1:for(r=w.sent(),o=this.forwardInput(r),s=o.boxes,h=o.scores,u=s[0],a=h[0],g=1;g<s.length;g++)s[g].dispose(),h[g].dispose();return d=(c=Array).from,[4,a.data()];case 2:return l=d.apply(c,[w.sent()]),f=.5,p=uv(u,l,e,f,i),y=r.getReshapedInputDimensions(0),m=r.inputSize,b=m/y.width,z=m/y.height,v=u.arraySync(),j=p.map(function(n){var x=[Math.max(0,v[n][0]),Math.min(1,v[n][2])].map(function(n){return n*z}),t=x[0],e=x[1],i=[Math.max(0,v[n][1]),Math.min(1,v[n][3])].map(function(n){return n*b}),o=i[0],s=i[1];return new Gm(l[n],new xb(o,t,s-o,e-t),{height:r.getInputHeight(0),width:r.getInputWidth(0)})}),u.dispose(),a.dispose(),[2,j]}})})},x.prototype.getDefaultModelName=function(){return"ssd_mobilenetv1_model"},x.prototype.extractParamsFromWeigthMap=function(n){return ev(n)},x.prototype.extractParams=function(n){return xv(n)},x}(Ub);(function(n){function x(){return null!==n&&n.apply(this,arguments)||this}km(x,n)})(yv);var mv,bv=.4,zv=[new Vm(.738768,.874946),new Vm(2.42204,2.65704),new Vm(4.30971,7.04493),new Vm(10.246,4.59428),new Vm(12.6868,11.8741)],vv=[new Vm(1.603231,2.094468),new Vm(6.041143,7.080126),new Vm(2.882459,3.518061),new Vm(4.266906,5.178857),new Vm(9.041765,10.66308)],jv=[117.001,114.697,97.404],wv="tiny_yolov2_model",kv="tiny_yolov2_separable_conv_model",qv=function(n){return"number"===typeof n};function _v(n){if(!n)throw new Error("invalid config: "+n);if("boolean"!==typeof n.withSeparableConvs)throw new Error("config.withSeparableConvs has to be a boolean, have: "+n.withSeparableConvs);if(!qv(n.iouThreshold)||n.iouThreshold<0||n.iouThreshold>1)throw new Error("config.iouThreshold has to be a number between [0, 1], have: "+n.iouThreshold);if(!Array.isArray(n.classes)||!n.classes.length||!n.classes.every(function(n){return"string"===typeof n}))throw new Error("config.classes has to be an array class names: string[], have: "+JSON.stringify(n.classes));if(!Array.isArray(n.anchors)||!n.anchors.length||!n.anchors.map(function(n){return n||{}}).every(function(n){return qv(n.x)&&qv(n.y)}))throw new Error("config.anchors has to be an array of { x: number, y: number }, have: "+JSON.stringify(n.anchors));if(n.meanRgb&&(!Array.isArray(n.meanRgb)||3!==n.meanRgb.length||!n.meanRgb.every(qv)))throw new Error("config.meanRgb has to be an array of shape [number, number, number], have: "+JSON.stringify(n.meanRgb))}function Cv(n){return bs(function(){var x=pd(n,Vs(.10000000149011612));return td(Rf(vd(n,x)),x)})}function Sv(n,x){return bs(function(){var t=Ah(n,[[0,0],[1,1],[1,1],[0,0]]);return t=Wd(t,x.conv.filters,[1,1],"valid"),t=vd(t,x.bn.sub),t=pd(t,x.bn.truediv),t=td(t,x.conv.bias),Cv(t)})}function Ev(n,x){return bs(function(){var t=Ah(n,[[0,0],[1,1],[1,1],[0,0]]);return t=Jd(t,x.depthwise_filter,x.pointwise_filter,[1,1],"valid"),t=td(t,x.bias),Cv(t)})}function Dv(n,x){var t=Jb(n,x);function e(t,e){var i=Ws(n(t)),r=Ws(n(t));return x.push({paramPath:e+"/sub"},{paramPath:e+"/truediv"}),{sub:i,truediv:r}}function i(n,x,i){var r=t(n,x,3,i+"/conv"),o=e(x,i+"/bn");return{conv:r,bn:o}}var r=nz(n,x);return{extractConvParams:t,extractConvWithBatchNormParams:i,extractSeparableConvParams:r}}function Ov(n,x,t,e){var i,r=ez(n),o=r.extractWeights,s=r.getRemainingWeights,h=[],u=Dv(o,h),a=u.extractConvParams,g=u.extractConvWithBatchNormParams,l=u.extractSeparableConvParams;if(x.withSeparableConvs){var c=e[0],d=e[1],f=e[2],p=e[3],y=e[4],m=e[5],b=e[6],z=e[7],v=e[8],j=x.isFirstLayerConv2d?a(c,d,3,"conv0"):l(c,d,"conv0"),w=l(d,f,"conv1"),k=l(f,p,"conv2"),q=l(p,y,"conv3"),_=l(y,m,"conv4"),C=l(m,b,"conv5"),S=z?l(b,z,"conv6"):void 0,E=v?l(z,v,"conv7"):void 0,D=a(v||z||b,5*t,1,"conv8");i={conv0:j,conv1:w,conv2:k,conv3:q,conv4:_,conv5:C,conv6:S,conv7:E,conv8:D}}else{c=e[0],d=e[1],f=e[2],p=e[3],y=e[4],m=e[5],b=e[6],z=e[7],v=e[8],j=g(c,d,"conv0"),w=g(d,f,"conv1"),k=g(f,p,"conv2"),q=g(p,y,"conv3"),_=g(y,m,"conv4"),C=g(m,b,"conv5"),S=g(b,z,"conv6"),E=g(z,v,"conv7"),D=a(v,5*t,1,"conv8");i={conv0:j,conv1:w,conv2:k,conv3:q,conv4:_,conv5:C,conv6:S,conv7:E,conv8:D}}if(0!==s().length)throw new Error("weights remaing after extract: "+s().length);return{params:i,paramMappings:h}}function Iv(n,x){var t=tz(n,x);function e(n){var x=t(n+"/sub",1),e=t(n+"/truediv",1);return{sub:x,truediv:e}}function i(n){var x=t(n+"/filters",4),e=t(n+"/bias",1);return{filters:x,bias:e}}function r(n){var x=i(n+"/conv"),t=e(n+"/bn");return{conv:x,bn:t}}var o=xz(t);return{extractConvParams:i,extractConvWithBatchNormParams:r,extractSeparableConvParams:o}}function Tv(n,x){var t,e=[],i=Iv(n,e),r=i.extractConvParams,o=i.extractConvWithBatchNormParams,s=i.extractSeparableConvParams;if(x.withSeparableConvs){var h=x.filterSizes&&x.filterSizes.length||9;t={conv0:x.isFirstLayerConv2d?r("conv0"):s("conv0"),conv1:s("conv1"),conv2:s("conv2"),conv3:s("conv3"),conv4:s("conv4"),conv5:s("conv5"),conv6:h>7?s("conv6"):void 0,conv7:h>8?s("conv7"):void 0,conv8:r("conv8")}}else t={conv0:o("conv0"),conv1:o("conv1"),conv2:o("conv2"),conv3:o("conv3"),conv4:o("conv4"),conv5:o("conv5"),conv6:o("conv6"),conv7:o("conv7"),conv8:r("conv8")};return Xb(n,e),{params:t,paramMappings:e}}(function(n){n[n["XS"]=224]="XS",n[n["SM"]=320]="SM",n[n["MD"]=416]="MD",n[n["LG"]=608]="LG"})(mv||(mv={}));var Av=function(){function n(n){var x=void 0===n?{}:n,t=x.inputSize,e=x.scoreThreshold;if(this._name="TinyYolov2Options",this._inputSize=t||416,this._scoreThreshold=e||.5,"number"!==typeof this._inputSize||this._inputSize%32!==0)throw new Error(this._name+" - expected inputSize to be a number divisible by 32");if("number"!==typeof this._scoreThreshold||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(this._name+" - expected scoreThreshold to be a number between 0 and 1")}return Object.defineProperty(n.prototype,"inputSize",{get:function(){return this._inputSize},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"scoreThreshold",{get:function(){return this._scoreThreshold},enumerable:!0,configurable:!0}),n}(),Nv=function(n){function x(x){var t=n.call(this,"TinyYolov2")||this;return _v(x),t._config=x,t}return km(x,n),Object.defineProperty(x.prototype,"config",{get:function(){return this._config},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"withClassScores",{get:function(){return this.config.withClassScores||this.config.classes.length>1},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"boxEncodingSize",{get:function(){return 5+(this.withClassScores?this.config.classes.length:0)},enumerable:!0,configurable:!0}),x.prototype.runTinyYolov2=function(n,x){var t=Sv(n,x.conv0);return t=gf(t,[2,2],[2,2],"same"),t=Sv(t,x.conv1),t=gf(t,[2,2],[2,2],"same"),t=Sv(t,x.conv2),t=gf(t,[2,2],[2,2],"same"),t=Sv(t,x.conv3),t=gf(t,[2,2],[2,2],"same"),t=Sv(t,x.conv4),t=gf(t,[2,2],[2,2],"same"),t=Sv(t,x.conv5),t=gf(t,[2,2],[1,1],"same"),t=Sv(t,x.conv6),t=Sv(t,x.conv7),Yb(t,x.conv8,"valid",!1)},x.prototype.runMobilenet=function(n,x){var t=this.config.isFirstLayerConv2d?Cv(Yb(n,x.conv0,"valid",!1)):Ev(n,x.conv0);return t=gf(t,[2,2],[2,2],"same"),t=Ev(t,x.conv1),t=gf(t,[2,2],[2,2],"same"),t=Ev(t,x.conv2),t=gf(t,[2,2],[2,2],"same"),t=Ev(t,x.conv3),t=gf(t,[2,2],[2,2],"same"),t=Ev(t,x.conv4),t=gf(t,[2,2],[2,2],"same"),t=Ev(t,x.conv5),t=gf(t,[2,2],[1,1],"same"),t=x.conv6?Ev(t,x.conv6):t,t=x.conv7?Ev(t,x.conv7):t,Yb(t,x.conv8,"valid",!1)},x.prototype.forwardInput=function(n,x){var t=this,e=this.params;if(!e)throw new Error("TinyYolov2 - load model before inference");return bs(function(){var i=n.toBatchTensor(x,!1).toFloat();return i=t.config.meanRgb?Jm(i,t.config.meanRgb):i,i=i.div(Vs(256)),t.config.withSeparableConvs?t.runMobilenet(i,e):t.runTinyYolov2(i,e)})},x.prototype.forward=function(n,x){return _m(this,void 0,void 0,function(){var t;return Cm(this,function(e){switch(e.label){case 0:return t=this.forwardInput,[4,Fb(n)];case 1:return[4,t.apply(this,[e.sent(),x])];case 2:return[2,e.sent()]}})})},x.prototype.detect=function(n,x){return void 0===x&&(x={}),_m(this,void 0,void 0,function(){var t,e,i,r,o,s,h,u,a,g,l,c,d,f,p=this;return Cm(this,function(y){switch(y.label){case 0:return t=new Av(x),e=t.inputSize,i=t.scoreThreshold,[4,Fb(n)];case 1:return r=y.sent(),[4,this.forwardInput(r,e)];case 2:return o=y.sent(),s=bs(function(){return Yh(o)[0].expandDims()}),h={width:r.getInputWidth(0),height:r.getInputHeight(0)},[4,this.extractBoxes(s,r.getReshapedInputDimensions(0),i)];case 3:return u=y.sent(),o.dispose(),s.dispose(),a=u.map(function(n){return n.box}),g=u.map(function(n){return n.score}),l=u.map(function(n){return n.classScore}),c=u.map(function(n){return p.config.classes[n.label]}),d=Xm(a.map(function(n){return n.rescale(e)}),g,this.config.iouThreshold,!0),f=d.map(function(n){return new Hm(g[n],l[n],c[n],a[n],h)}),[2,f]}})})},x.prototype.getDefaultModelName=function(){return""},x.prototype.extractParamsFromWeigthMap=function(n){return Tv(n,this.config)},x.prototype.extractParams=function(n){var t=this.config.filterSizes||x.DEFAULT_FILTER_SIZES,e=t?t.length:void 0;if(7!==e&&8!==e&&9!==e)throw new Error("TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found "+e+" filterSizes in config");return Ov(n,this.config,this.boxEncodingSize,t)},x.prototype.extractBoxes=function(n,x,t){return _m(this,void 0,void 0,function(){var e,i,r,o,s,h,u,a,g,l,c,d,f,p,y,m,b,z,v,j,w,k,q,_,C,S,E,D,O,I=this;return Cm(this,function(T){switch(T.label){case 0:return e=x.width,i=x.height,r=Math.max(e,i),o=r/e,s=r/i,h=n.shape[1],u=this.config.anchors.length,a=bs(function(){var x=n.reshape([h,h,u,I.boxEncodingSize]),t=x.slice([0,0,0,0],[h,h,u,4]),e=x.slice([0,0,0,4],[h,h,u,1]),i=I.withClassScores?yu(x.slice([0,0,0,5],[h,h,u,I.config.classes.length]),3):Vs(0);return[t,e,i]}),g=a[0],l=a[1],c=a[2],d=[],[4,l.array()];case 1:return f=T.sent(),[4,g.array()];case 2:p=T.sent(),y=0,T.label=3;case 3:if(!(y<h))return[3,12];m=0,T.label=4;case 4:if(!(m<h))return[3,11];b=0,T.label=5;case 5:return b<u?(z=Zm(f[y][m][b][0]),!t||z>t?(v=(m+Zm(p[y][m][b][0]))/h*o,j=(y+Zm(p[y][m][b][1]))/h*s,w=Math.exp(p[y][m][b][2])*this.config.anchors[b].x/h*o,k=Math.exp(p[y][m][b][3])*this.config.anchors[b].y/h*s,q=v-w/2,_=j-k/2,C={row:y,col:m,anchor:b},this.withClassScores?[4,this.extractPredictedClass(c,C)]:[3,7]):[3,9]):[3,10];case 6:return O=T.sent(),[3,8];case 7:O={classScore:1,label:0},T.label=8;case 8:S=O,E=S.classScore,D=S.label,d.push(qm({box:new Um(q,_,q+w,_+k),score:z,classScore:z*E,label:D},C)),T.label=9;case 9:return b++,[3,5];case 10:return m++,[3,4];case 11:return y++,[3,3];case 12:return g.dispose(),l.dispose(),c.dispose(),[2,d]}})})},x.prototype.extractPredictedClass=function(n,x){return _m(this,void 0,void 0,function(){var t,e,i,r;return Cm(this,function(o){switch(o.label){case 0:return t=x.row,e=x.col,i=x.anchor,[4,n.array()];case 1:return r=o.sent(),[2,Array(this.config.classes.length).fill(0).map(function(n,x){return r[t][e][i][x]}).map(function(n,x){return{classScore:n,label:x}}).reduce(function(n,x){return n.classScore>x.classScore?n:x})]}})})},x.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024],x}(Ub),Rv=function(n){function x(x){void 0===x&&(x=!0);var t=this,e=Object.assign({},{withSeparableConvs:x,iouThreshold:bv,classes:["face"]},x?{anchors:vv,meanRgb:jv}:{anchors:zv,withClassScores:!0});return t=n.call(this,e)||this,t}return km(x,n),Object.defineProperty(x.prototype,"withSeparableConvs",{get:function(){return this.config.withSeparableConvs},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"anchors",{get:function(){return this.config.anchors},enumerable:!0,configurable:!0}),x.prototype.locateFaces=function(n,x){return _m(this,void 0,void 0,function(){var t;return Cm(this,function(e){switch(e.label){case 0:return[4,this.detect(n,x)];case 1:return t=e.sent(),[2,t.map(function(n){return new Gm(n.score,n.relativeBox,{width:n.imageWidth,height:n.imageHeight})})]}})})},x.prototype.getDefaultModelName=function(){return this.withSeparableConvs?kv:wv},x.prototype.extractParamsFromWeigthMap=function(x){return n.prototype.extractParamsFromWeigthMap.call(this,x)},x}(Nv);var Mv=function(n){function x(){var x=null!==n&&n.apply(this,arguments)||this;return x._name="TinyFaceDetectorOptions",x}return km(x,n),x}(Av),Fv=function(){function n(){}return n.prototype.then=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=n,[4,this.run()];case 1:return[2,x.apply(void 0,[t.sent()])]}})})},n.prototype.run=function(){return _m(this,void 0,void 0,function(){return Cm(this,function(n){throw new Error("ComposableTask - run is not implemented")})})},n}();function Pv(n,x){var t={descriptor:x};return Object.assign({},n,t)}function Lv(n,x,t,e,i){return void 0===i&&(i=function(n){var x=n.alignedRect;return x}),_m(this,void 0,void 0,function(){var r,o,s,h,u;return Cm(this,function(a){switch(a.label){case 0:return r=n.map(function(n){return bz(n)?i(n):n.detection}),s=e,s?[3,5]:x instanceof Kr?[4,Lb(x,r)]:[3,2];case 1:return h=a.sent(),[3,4];case 2:return[4,Pb(x,r)];case 3:h=a.sent(),a.label=4;case 4:s=h,a.label=5;case 5:return o=s,[4,t(o)];case 6:return u=a.sent(),o.forEach(function(n){return n instanceof Kr&&n.dispose()}),[2,u]}})})}function Bv(n,x,t,e,i){return _m(this,void 0,void 0,function(){var r=this;return Cm(this,function(o){return[2,Lv([n],x,function(n){return _m(r,void 0,void 0,function(){return Cm(this,function(x){return[2,t(n[0])]})})},e,i)]})})}function $v(n){return bs(function(){return Hh(Yh(n,3).reverse(),3)})}var Vv=2,Wv=12;function Uv(n,x){var t=Jb(n,x),e=Qb(n,x);function i(t,e){var i=Ws(n(t));return x.push({paramPath:e}),i}function r(n,x,e){void 0===e&&(e=!1);var r=t(n[0],n[1],3,x+"/conv1"),o=i(n[1],x+"/prelu1_alpha"),s=t(n[1],n[2],3,x+"/conv2"),h=i(n[2],x+"/prelu2_alpha"),u=t(n[2],n[3],e?2:3,x+"/conv3"),a=i(n[3],x+"/prelu3_alpha");return{conv1:r,prelu1_alpha:o,conv2:s,prelu2_alpha:h,conv3:u,prelu3_alpha:a}}function o(){var n=r([3,10,16,32],"pnet"),x=t(32,2,1,"pnet/conv4_1"),e=t(32,4,1,"pnet/conv4_2");return qm(qm({},n),{conv4_1:x,conv4_2:e})}function s(){var n=r([3,28,48,64],"rnet",!0),x=e(576,128,"rnet/fc1"),t=i(128,"rnet/prelu4_alpha"),o=e(128,2,"rnet/fc2_1"),s=e(128,4,"rnet/fc2_2");return qm(qm({},n),{fc1:x,prelu4_alpha:t,fc2_1:o,fc2_2:s})}function h(){var n=r([3,32,64,64],"onet"),x=t(64,128,2,"onet/conv4"),o=i(128,"onet/prelu4_alpha"),s=e(1152,256,"onet/fc1"),h=i(256,"onet/prelu5_alpha"),u=e(256,2,"onet/fc2_1"),a=e(256,4,"onet/fc2_2"),g=e(256,10,"onet/fc2_3");return qm(qm({},n),{conv4:x,prelu4_alpha:o,fc1:s,prelu5_alpha:h,fc2_1:u,fc2_2:a,fc2_3:g})}return{extractPNetParams:o,extractRNetParams:s,extractONetParams:h}}function Hv(n){var x=ez(n),t=x.extractWeights,e=x.getRemainingWeights,i=[],r=Uv(t,i),o=r.extractPNetParams,s=r.extractRNetParams,h=r.extractONetParams,u=o(),a=s(),g=h();if(0!==e().length)throw new Error("weights remaing after extract: "+e().length);return{params:{pnet:u,rnet:a,onet:g},paramMappings:i}}function Gv(n,x){var t=tz(n,x);function e(n){var x=t(n+"/weights",4,n+"/filters"),e=t(n+"/bias",1);return{filters:x,bias:e}}function i(n){var x=t(n+"/weights",2),e=t(n+"/bias",1);return{weights:x,bias:e}}function r(n){return t(n,1)}function o(n){var x=e(n+"/conv1"),t=r(n+"/prelu1_alpha"),i=e(n+"/conv2"),o=r(n+"/prelu2_alpha"),s=e(n+"/conv3"),h=r(n+"/prelu3_alpha");return{conv1:x,prelu1_alpha:t,conv2:i,prelu2_alpha:o,conv3:s,prelu3_alpha:h}}function s(){var n=o("pnet"),x=e("pnet/conv4_1"),t=e("pnet/conv4_2");return qm(qm({},n),{conv4_1:x,conv4_2:t})}function h(){var n=o("rnet"),x=i("rnet/fc1"),t=r("rnet/prelu4_alpha"),e=i("rnet/fc2_1"),s=i("rnet/fc2_2");return qm(qm({},n),{fc1:x,prelu4_alpha:t,fc2_1:e,fc2_2:s})}function u(){var n=o("onet"),x=e("onet/conv4"),t=r("onet/prelu4_alpha"),s=i("onet/fc1"),h=r("onet/prelu5_alpha"),u=i("onet/fc2_1"),a=i("onet/fc2_2"),g=i("onet/fc2_3");return qm(qm({},n),{conv4:x,prelu4_alpha:t,fc1:s,prelu5_alpha:h,fc2_1:u,fc2_2:a,fc2_3:g})}return{extractPNetParams:s,extractRNetParams:h,extractONetParams:u}}function Kv(n){var x=[],t=Gv(n,x),e=t.extractPNetParams,i=t.extractRNetParams,r=t.extractONetParams,o=e(),s=i(),h=r();return Xb(n,x),{params:{pnet:o,rnet:s,onet:h},paramMappings:x}}function Yv(n,x){var t=x[0],e=x[1];return{height:Math.floor(t*n),width:Math.floor(e*n)}}function Xv(n,x,t){var e=t[0],i=t[1],r=Wv/n,o=[],s=Math.min(e,i)*r,h=0;while(s>=12)o.push(r*Math.pow(x,h)),s*=x,h+=1;return o}var Jv=function(n){function x(x,t,e,i){return n.call(this,{left:x,top:t,right:e,bottom:i},!0)||this}return km(x,n),x}(Wm);function Qv(n){return bs(function(){return pd(vd(n,Vs(127.5)),Vs(.0078125))})}function Zv(n,x){return bs(function(){return td(Rf(n),pd(x,zc(Rf(zc(n)))))})}function nj(n,x,t){return void 0===t&&(t=!1),bs(function(){var e=Yb(n,x.conv1,"valid");return e=Zv(e,x.prelu1_alpha),e=gf(e,t?[2,2]:[3,3],[2,2],"same"),e=Yb(e,x.conv2,"valid"),e=Zv(e,x.prelu2_alpha),e=t?e:gf(e,[3,3],[2,2],"valid"),e=Yb(e,x.conv3,"valid"),e=Zv(e,x.prelu3_alpha),e})}function xj(n,x){return bs(function(){var t=nj(n,x,!0),e=Yb(t,x.conv4_1,"valid"),i=Dh(Cf(e,3),3),r=yu(vd(e,i),3),o=Yb(t,x.conv4_2,"valid");return{prob:r,regions:o}})}function tj(n,x){return bs(function(){var t=Yv(x,n.shape.slice(1)),e=t.height,i=t.width,r=Ap.resizeBilinear(n,[e,i]),o=Qv(r);return Pf(o,[0,2,1,3])})}function ej(n,x,t,e){for(var i=[],r=n.arraySync(),o=0;o<n.shape[0];o++)for(var s=0;s<n.shape[1];s++)r[o][s]>=e&&i.push(new Vm(s,o));var h=i.map(function(n){var e=new Um(Math.round((n.y*Vv+1)/t),Math.round((n.x*Vv+1)/t),Math.round((n.y*Vv+Wv)/t),Math.round((n.x*Vv+Wv)/t)),i=r[n.y][n.x],o=x.arraySync(),s=new Jv(o[n.y][n.x][0],o[n.y][n.x][1],o[n.y][n.x][2],o[n.y][n.x][3]);return{cell:e,score:i,region:s}});return h}function ij(n,x,t,e,i){i.stage1=[];var r=x.map(function(x){return bs(function(){var t={scale:x},i=tj(n,x),r=Date.now(),o=xj(i,e),s=o.prob,h=o.regions;t.pnet=Date.now()-r;var u=Yh(Yh(s,3)[1])[0],a=Yh(h)[0];return{scoresTensor:u,regionsTensor:a,scale:x,statsForScale:t}})}),o=r.map(function(n){var x=n.scoresTensor,e=n.regionsTensor,r=n.scale,o=n.statsForScale,s=ej(x,e,r,t);if(x.dispose(),e.dispose(),!s.length)return i.stage1.push(o),[];var h=Date.now(),u=Xm(s.map(function(n){return n.cell}),s.map(function(n){return n.score}),.5);return o.nms=Date.now()-h,o.numBoxes=u.length,i.stage1.push(o),u.map(function(n){return s[n]})}),s=o.reduce(function(n,x){return n.concat(x)},[]),h=[],u=[];if(s.length>0){var a=Date.now(),g=Xm(s.map(function(n){return n.cell}),s.map(function(n){return n.score}),.7);i.stage1_nms=Date.now()-a,u=g.map(function(n){return s[n].score}),h=g.map(function(n){return s[n]}).map(function(n){var x=n.cell,t=n.region;return new Um(x.left+t.left*x.width,x.top+t.top*x.height,x.right+t.right*x.width,x.bottom+t.bottom*x.height).toSquare().round()})}return{boxes:h,scores:u}}function rj(n,x,t){var e=t.width,i=t.height;return _m(this,void 0,void 0,function(){var t,r,o,s=this;return Cm(this,function(h){switch(h.label){case 0:return t=qb(n),[4,Promise.all(x.map(function(x){return _m(s,void 0,void 0,function(){var e,i,r,o,s,h,u,a;return Cm(this,function(g){return e=x.padAtBorders(n.height,n.width),i=e.y,r=e.ey,o=e.x,s=e.ex,h=o-1,u=i-1,a=t.getImageData(h,u,s-h,r-u),[2,wb.isNodejs()?Tb(a):createImageBitmap(a)]})})}))];case 1:return r=h.sent(),o=[],r.forEach(function(n){var x=Ib({width:e,height:i}),t=qb(x);t.drawImage(n,0,0,e,i);for(var r=t.getImageData(0,0,e,i).data,s=[],h=0;h<r.length;h+=4)s.push(r[h+2]),s.push(r[h+1]),s.push(r[h]);o.push(s)}),[2,o.map(function(n){var x=bs(function(){var x=Pf(Gs(n,[1,e,i,3]),[0,2,1,3]).toFloat();return Qv(x)});return x})]}})})}function oj(n,x){return bs(function(){var t=nj(n,x),e=Vh(t,[t.shape[0],x.fc1.weights.shape[0]]),i=az(e,x.fc1),r=Zv(i,x.prelu4_alpha),o=az(r,x.fc2_1),s=Dh(Cf(o,1),1),h=yu(vd(o,s),1),u=az(r,x.fc2_2),a=Yh(h,1)[1];return{scores:a,regions:u}})}function sj(n,x,t,e,i){return _m(this,void 0,void 0,function(){var r,o,s,h,u,a,g,l,c,d,f,p,y,m;return Cm(this,function(b){switch(b.label){case 0:return r=Date.now(),[4,rj(n,x,{width:24,height:24})];case 1:return o=b.sent(),i.stage2_extractImagePatches=Date.now()-r,r=Date.now(),s=o.map(function(n){var x=oj(n,e);return n.dispose(),x}),i.stage2_rnet=Date.now()-r,h=s.length>1?ih(s.map(function(n){return n.scores})):s[0].scores,g=(a=Array).from,[4,h.data()];case 2:return u=g.apply(a,[b.sent()]),h.dispose(),l=u.map(function(n,x){return{score:n,idx:x}}).filter(function(n){return n.score>t}).map(function(n){var x=n.idx;return x}),c=l.map(function(n){return x[n]}),d=l.map(function(n){return u[n]}),f=[],p=[],c.length>0&&(r=Date.now(),y=Xm(c,d,.7),i.stage2_nms=Date.now()-r,m=y.map(function(n){var x=s[l[n]].regions.arraySync();return new Jv(x[0][0],x[0][1],x[0][2],x[0][3])}),p=y.map(function(n){return d[n]}),f=y.map(function(n,x){return c[n].calibrate(m[x])})),s.forEach(function(n){n.regions.dispose(),n.scores.dispose()}),[2,{boxes:f,scores:p}]}})})}function hj(n,x){return bs(function(){var t=nj(n,x);t=gf(t,[2,2],[2,2],"same"),t=Yb(t,x.conv4,"valid"),t=Zv(t,x.prelu4_alpha);var e=Vh(t,[t.shape[0],x.fc1.weights.shape[0]]),i=az(e,x.fc1),r=Zv(i,x.prelu5_alpha),o=az(r,x.fc2_1),s=Dh(Cf(o,1),1),h=yu(vd(o,s),1),u=az(r,x.fc2_2),a=az(r,x.fc2_3),g=Yh(h,1)[1];return{scores:g,regions:u,points:a}})}function uj(n,x,t,e,i){return _m(this,void 0,void 0,function(){var r,o,s,h,u,a,g,l,c,d,f,p,y,m,b;return Cm(this,function(z){switch(z.label){case 0:return r=Date.now(),[4,rj(n,x,{width:48,height:48})];case 1:return o=z.sent(),i.stage3_extractImagePatches=Date.now()-r,r=Date.now(),s=o.map(function(n){var x=hj(n,e);return n.dispose(),x}),i.stage3_onet=Date.now()-r,h=s.length>1?ih(s.map(function(n){return n.scores})):s[0].scores,g=(a=Array).from,[4,h.data()];case 2:return u=g.apply(a,[z.sent()]),h.dispose(),l=u.map(function(n,x){return{score:n,idx:x}}).filter(function(n){return n.score>t}).map(function(n){var x=n.idx;return x}),c=l.map(function(n){var x=s[n].regions.arraySync();return new Jv(x[0][0],x[0][1],x[0][2],x[0][3])}),d=l.map(function(n,t){return x[n].calibrate(c[t])}),f=l.map(function(n){return u[n]}),p=[],y=[],m=[],d.length>0&&(r=Date.now(),b=Xm(d,f,.7,!1),i.stage3_nms=Date.now()-r,p=b.map(function(n){return d[n]}),y=b.map(function(n){return f[n]}),m=b.map(function(n,x){return Array(5).fill(0).map(function(t,e){var i=s[n].points.arraySync();return new Vm(i[0][e]*(p[x].width+1)+p[x].left,i[0][e+5]*(p[x].height+1)+p[x].top)})})),s.forEach(function(n){n.regions.dispose(),n.scores.dispose(),n.points.dispose()}),[2,{boxes:p,scores:y,points:m}]}})})}var aj=function(n){function x(){return n.call(this,"Mtcnn")||this}return km(x,n),x.prototype.load=function(x){return _m(this,void 0,void 0,function(){return Cm(this,function(t){return console.warn("mtcnn is deprecated and will be removed soon"),[2,n.prototype.load.call(this,x)]})})},x.prototype.loadFromDisk=function(x){return _m(this,void 0,void 0,function(){return Cm(this,function(t){return console.warn("mtcnn is deprecated and will be removed soon"),[2,n.prototype.loadFromDisk.call(this,x)]})})},x.prototype.forwardInput=function(n,x){return void 0===x&&(x={}),_m(this,void 0,void 0,function(){var t,e,i,r,o,s,h,u,a,g,l,c,d,f,p,y,m,b,z,v,j;return Cm(this,function(w){switch(w.label){case 0:if(t=this.params,!t)throw new Error("Mtcnn - load model before inference");if(e=n.canvases[0],!e)throw new Error("Mtcnn - inputCanvas is not defined, note that passing tensors into Mtcnn.forwardInput is not supported yet.");return i={},r=Date.now(),o=bs(function(){return $v(Dh(im.fromPixels(e)).toFloat())}),s=function(n){return o.dispose(),i.total=Date.now()-r,n},h=o.shape.slice(1),u=h[0],a=h[1],g=new Zz(x),l=g.minFaceSize,c=g.scaleFactor,d=g.maxNumScales,f=g.scoreThresholds,p=g.scaleSteps,y=(p||Xv(l,c,[u,a])).filter(function(n){var x=Yv(n,[u,a]);return Math.min(x.width,x.height)>Wv}).slice(0,d),i.scales=y,i.pyramid=y.map(function(n){return Yv(n,[u,a])}),m=Date.now(),[4,ij(o,y,f[0],t.pnet,i)];case 1:return b=w.sent(),i.total_stage1=Date.now()-m,b.boxes.length?(i.stage2_numInputBoxes=b.boxes.length,m=Date.now(),[4,sj(e,b.boxes,f[1],t.rnet,i)]):[2,s({results:[],stats:i})];case 2:return z=w.sent(),i.total_stage2=Date.now()-m,z.boxes.length?(i.stage3_numInputBoxes=z.boxes.length,m=Date.now(),[4,uj(e,z.boxes,f[2],t.onet,i)]):[2,s({results:[],stats:i})];case 3:return v=w.sent(),i.total_stage3=Date.now()-m,j=v.boxes.map(function(n,x){return zz(lb({},new Gm(v.scores[x],new xb(n.left/a,n.top/u,n.width/a,n.height/u),{height:u,width:a})),new ob(v.points[x].map(function(x){return x.sub(new Vm(n.left,n.top)).div(new Vm(n.width,n.height))}),{width:n.width,height:n.height}))}),[2,s({results:j,stats:i})]}})})},x.prototype.forward=function(n,x){return void 0===x&&(x={}),_m(this,void 0,void 0,function(){var t;return Cm(this,function(e){switch(e.label){case 0:return t=this.forwardInput,[4,Fb(n)];case 1:return[4,t.apply(this,[e.sent(),x])];case 2:return[2,e.sent().results]}})})},x.prototype.forwardWithStats=function(n,x){return void 0===x&&(x={}),_m(this,void 0,void 0,function(){var t;return Cm(this,function(e){switch(e.label){case 0:return t=this.forwardInput,[4,Fb(n)];case 1:return[2,t.apply(this,[e.sent(),x])]}})})},x.prototype.getDefaultModelName=function(){return"mtcnn_model"},x.prototype.extractParamsFromWeigthMap=function(n){return Kv(n)},x.prototype.extractParams=function(n){return Hv(n)},x}(Ub),gj=.4,lj=[new Vm(1.603231,2.094468),new Vm(6.041143,7.080126),new Vm(2.882459,3.518061),new Vm(4.266906,5.178857),new Vm(9.041765,10.66308)],cj=[117.001,114.697,97.404],dj=function(n){function x(){var x=this,t={withSeparableConvs:!0,iouThreshold:gj,classes:["face"],anchors:lj,meanRgb:cj,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};return x=n.call(this,t)||this,x}return km(x,n),Object.defineProperty(x.prototype,"anchors",{get:function(){return this.config.anchors},enumerable:!0,configurable:!0}),x.prototype.locateFaces=function(n,x){return _m(this,void 0,void 0,function(){var t;return Cm(this,function(e){switch(e.label){case 0:return[4,this.detect(n,x)];case 1:return t=e.sent(),[2,t.map(function(n){return new Gm(n.score,n.relativeBox,{width:n.imageWidth,height:n.imageHeight})})]}})})},x.prototype.getDefaultModelName=function(){return"tiny_face_detector_model"},x.prototype.extractParamsFromWeigthMap=function(x){return n.prototype.extractParamsFromWeigthMap.call(this,x)},x}(Nv),fj={ssdMobilenetv1:new yv,tinyFaceDetector:new dj,tinyYolov2:new Rv,mtcnn:new aj,faceLandmark68Net:new Nz,faceLandmark68TinyNet:new Pz,faceRecognitionNet:new Jz,faceExpressionNet:new yz,ageGenderNet:new Tz};function pj(n,x){var t={age:x};return Object.assign({},n,t)}var yj=function(n){function x(x,t,e){var i=n.call(this)||this;return i.parentTask=x,i.input=t,i.extractedFaces=e,i}return km(x,n),x}(Fv),mj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x,t=this;return Cm(this,function(e){switch(e.label){case 0:return[4,this.parentTask];case 1:return n=e.sent(),[4,Lv(n,this.input,function(n){return _m(t,void 0,void 0,function(){return Cm(this,function(x){switch(x.label){case 0:return[4,Promise.all(n.map(function(n){return fj.faceExpressionNet.predictExpressions(n)}))];case 1:return[2,x.sent()]}})})},this.extractedFaces)];case 2:return x=e.sent(),[2,n.map(function(n,t){return mz(n,x[t])})]}})})},x.prototype.withAgeAndGender=function(){return new wj(this,this.input)},x}(yj),bj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x;return Cm(this,function(t){switch(t.label){case 0:return[4,this.parentTask];case 1:return n=t.sent(),n?[4,Bv(n,this.input,function(n){return fj.faceExpressionNet.predictExpressions(n)},this.extractedFaces)]:[2];case 2:return x=t.sent(),[2,mz(n,x)]}})})},x.prototype.withAgeAndGender=function(){return new kj(this,this.input)},x}(yj),zj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.withAgeAndGender=function(){return new qj(this,this.input)},x.prototype.withFaceDescriptors=function(){return new Sj(this,this.input)},x}(mj),vj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.withAgeAndGender=function(){return new _j(this,this.input)},x.prototype.withFaceDescriptor=function(){return new Ej(this,this.input)},x}(bj),jj=function(n){function x(x,t,e){var i=n.call(this)||this;return i.parentTask=x,i.input=t,i.extractedFaces=e,i}return km(x,n),x}(Fv),wj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x,t=this;return Cm(this,function(e){switch(e.label){case 0:return[4,this.parentTask];case 1:return n=e.sent(),[4,Lv(n,this.input,function(n){return _m(t,void 0,void 0,function(){return Cm(this,function(x){switch(x.label){case 0:return[4,Promise.all(n.map(function(n){return fj.ageGenderNet.predictAgeAndGender(n)}))];case 1:return[2,x.sent()]}})})},this.extractedFaces)];case 2:return x=e.sent(),[2,n.map(function(n,t){var e=x[t],i=e.age,r=e.gender,o=e.genderProbability;return pj(Qz(n,r,o),i)})]}})})},x.prototype.withFaceExpressions=function(){return new mj(this,this.input)},x}(jj),kj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x,t,e,i;return Cm(this,function(r){switch(r.label){case 0:return[4,this.parentTask];case 1:return n=r.sent(),n?[4,Bv(n,this.input,function(n){return fj.ageGenderNet.predictAgeAndGender(n)},this.extractedFaces)]:[2];case 2:return x=r.sent(),t=x.age,e=x.gender,i=x.genderProbability,[2,pj(Qz(n,e,i),t)]}})})},x.prototype.withFaceExpressions=function(){return new bj(this,this.input)},x}(jj),qj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.withFaceExpressions=function(){return new zj(this,this.input)},x.prototype.withFaceDescriptors=function(){return new Sj(this,this.input)},x}(wj),_j=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.withFaceExpressions=function(){return new vj(this,this.input)},x.prototype.withFaceDescriptor=function(){return new Ej(this,this.input)},x}(kj),Cj=function(n){function x(x,t){var e=n.call(this)||this;return e.parentTask=x,e.input=t,e}return km(x,n),x}(Fv),Sj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x;return Cm(this,function(t){switch(t.label){case 0:return[4,this.parentTask];case 1:return n=t.sent(),[4,Lv(n,this.input,function(n){return Promise.all(n.map(function(n){return fj.faceRecognitionNet.computeFaceDescriptor(n)}))},null,function(n){return n.landmarks.align(null,{useDlibAlignment:!0})})];case 2:return x=t.sent(),[2,x.map(function(x,t){return Pv(n[t],x)})]}})})},x.prototype.withFaceExpressions=function(){return new zj(this,this.input)},x.prototype.withAgeAndGender=function(){return new qj(this,this.input)},x}(Cj),Ej=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x;return Cm(this,function(t){switch(t.label){case 0:return[4,this.parentTask];case 1:return n=t.sent(),n?[4,Bv(n,this.input,function(n){return fj.faceRecognitionNet.computeFaceDescriptor(n)},null,function(n){return n.landmarks.align(null,{useDlibAlignment:!0})})]:[2];case 2:return x=t.sent(),[2,Pv(n,x)]}})})},x.prototype.withFaceExpressions=function(){return new vj(this,this.input)},x.prototype.withAgeAndGender=function(){return new _j(this,this.input)},x}(Cj),Dj=function(n){function x(x,t,e){var i=n.call(this)||this;return i.parentTask=x,i.input=t,i.useTinyLandmarkNet=e,i}return km(x,n),Object.defineProperty(x.prototype,"landmarkNet",{get:function(){return this.useTinyLandmarkNet?fj.faceLandmark68TinyNet:fj.faceLandmark68Net},enumerable:!0,configurable:!0}),x}(Fv),Oj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x,t,e,i,r=this;return Cm(this,function(o){switch(o.label){case 0:return[4,this.parentTask];case 1:return n=o.sent(),x=n.map(function(n){return n.detection}),this.input instanceof Kr?[4,Lb(this.input,x)]:[3,3];case 2:return e=o.sent(),[3,5];case 3:return[4,Pb(this.input,x)];case 4:e=o.sent(),o.label=5;case 5:return t=e,[4,Promise.all(t.map(function(n){return r.landmarkNet.detectLandmarks(n)}))];case 6:return i=o.sent(),t.forEach(function(n){return n instanceof Kr&&n.dispose()}),[2,n.map(function(n,x){return zz(n,i[x])})]}})})},x.prototype.withFaceExpressions=function(){return new zj(this,this.input)},x.prototype.withAgeAndGender=function(){return new qj(this,this.input)},x.prototype.withFaceDescriptors=function(){return new Sj(this,this.input)},x}(Dj),Ij=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x,t,e,i;return Cm(this,function(r){switch(r.label){case 0:return[4,this.parentTask];case 1:return n=r.sent(),n?(x=n.detection,this.input instanceof Kr?[4,Lb(this.input,[x])]:[3,3]):[2];case 2:return e=r.sent(),[3,5];case 3:return[4,Pb(this.input,[x])];case 4:e=r.sent(),r.label=5;case 5:return t=e,[4,this.landmarkNet.detectLandmarks(t[0])];case 6:return i=r.sent(),t.forEach(function(n){return n instanceof Kr&&n.dispose()}),[2,zz(n,i)]}})})},x.prototype.withFaceExpressions=function(){return new vj(this,this.input)},x.prototype.withAgeAndGender=function(){return new _j(this,this.input)},x.prototype.withFaceDescriptor=function(){return new Ej(this,this.input)},x}(Dj),Tj=function(n){function x(x,t){void 0===t&&(t=new pv);var e=n.call(this)||this;return e.input=x,e.options=t,e}return km(x,n),x}(Fv),Aj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x,t,e;return Cm(this,function(i){switch(i.label){case 0:return n=this,x=n.input,t=n.options,t instanceof Zz?[4,fj.mtcnn.forward(x,t)]:[3,2];case 1:return[2,i.sent().map(function(n){return n.detection})];case 2:if(e=t instanceof Mv?function(n){return fj.tinyFaceDetector.locateFaces(n,t)}:t instanceof pv?function(n){return fj.ssdMobilenetv1.locateFaces(n,t)}:t instanceof Av?function(n){return fj.tinyYolov2.locateFaces(n,t)}:null,!e)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return[2,e(x)]}})})},x.prototype.runAndExtendWithFaceDetections=function(){var n=this;return new Promise(function(x){return _m(n,void 0,void 0,function(){var n;return Cm(this,function(t){switch(t.label){case 0:return[4,this.run()];case 1:return n=t.sent(),[2,x(n.map(function(n){return lb({},n)}))]}})})})},x.prototype.withFaceLandmarks=function(n){return void 0===n&&(n=!1),new Oj(this.runAndExtendWithFaceDetections(),this.input,n)},x.prototype.withFaceExpressions=function(){return new mj(this.runAndExtendWithFaceDetections(),this.input)},x.prototype.withAgeAndGender=function(){return new wj(this.runAndExtendWithFaceDetections(),this.input)},x}(Tj);(function(n){function x(){return null!==n&&n.apply(this,arguments)||this}km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x;return Cm(this,function(t){switch(t.label){case 0:return[4,new Aj(this.input,this.options)];case 1:return n=t.sent(),x=n[0],n.forEach(function(n){n.score>x.score&&(x=n)}),[2,x]}})})},x.prototype.runAndExtendWithFaceDetection=function(){var n=this;return new Promise(function(x){return _m(n,void 0,void 0,function(){var n;return Cm(this,function(t){switch(t.label){case 0:return[4,this.run()];case 1:return n=t.sent(),[2,x(n?lb({},n):void 0)]}})})})},x.prototype.withFaceLandmarks=function(n){return void 0===n&&(n=!1),new Ij(this.runAndExtendWithFaceDetection(),this.input,n)},x.prototype.withFaceExpressions=function(){return new bj(this.runAndExtendWithFaceDetection(),this.input)},x.prototype.withAgeAndGender=function(){return new kj(this.runAndExtendWithFaceDetection(),this.input)}})(Tj);function Nj(n,x){return void 0===x&&(x=new pv),new Aj(n,x)}function Rj(n,x){if(n.length!==x.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");var t=Array.from(n),e=Array.from(x);return Math.sqrt(t.map(function(n,x){return n-e[x]}).reduce(function(n,x){return n+Math.pow(x,2)},0))}(function(){function n(n,x){void 0===x&&(x=.6),this._distanceThreshold=x;var t=Array.isArray(n)?n:[n];if(!t.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");var e=1,i=function(){return"person "+e++};this._labeledDescriptors=t.map(function(n){if(n instanceof ab)return n;if(n instanceof Float32Array)return new ab(i(),[n]);if(n.descriptor&&n.descriptor instanceof Float32Array)return new ab(i(),[n.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor<any> | Float32Array | Array<LabeledFaceDescriptors | WithFaceDescriptor<any> | Float32Array>")})}Object.defineProperty(n.prototype,"labeledDescriptors",{get:function(){return this._labeledDescriptors},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"distanceThreshold",{get:function(){return this._distanceThreshold},enumerable:!0,configurable:!0}),n.prototype.computeMeanDistance=function(n,x){return x.map(function(x){return Rj(x,n)}).reduce(function(n,x){return n+x},0)/(x.length||1)},n.prototype.matchDescriptor=function(n){var x=this;return this.labeledDescriptors.map(function(t){var e=t.descriptors,i=t.label;return new hb(i,x.computeMeanDistance(n,e))}).reduce(function(n,x){return n.distance<x.distance?n:x})},n.prototype.findBestMatch=function(n){var x=this.matchDescriptor(n);return x.distance<this.distanceThreshold?x:new hb("unknown",x.distance)},n.prototype.toJSON=function(){return{distanceThreshold:this.distanceThreshold,labeledDescriptors:this.labeledDescriptors.map(function(n){return n.toJSON()})}},n.fromJSON=function(x){var t=x.labeledDescriptors.map(function(n){return ab.fromJSON(n)});return new n(t,x.distanceThreshold)}})();var Mj={name:"FaceDetection",emits:["face-detected","face-lost","error","detection-complete"],props:{videoWidth:{type:Number,default:240},videoHeight:{type:Number,default:240},minConfidence:{type:Number,default:.5},captureInterval:{type:Number,default:2e3},maxCaptures:{type:Number,default:1},modelPath:{type:String,default:"/models"}},data(){return{loading:!1,modelsLoaded:!1,cameraStarted:!1,cameraReady:!1,isDetecting:!1,stream:null,detectionInterval:null,capturedImages:[],lastCaptureTime:0}},async mounted(){console.log("mounted______"),await this.loadModels(),await this.autoStartDetection()},beforeDestroy(){console.log("结束,清理摄像头"),this.cleanup()},methods:{h_back(){this.$emit("back")},async loadModels(){try{this.loading=!0,await Promise.all([fj.tinyFaceDetector.loadFromUri(this.modelPath),fj.faceLandmark68Net.loadFromUri(this.modelPath),fj.faceRecognitionNet.loadFromUri(this.modelPath)]),this.modelsLoaded=!0,console.log("人脸检测模型加载完成")}catch(n){this.$emit("error",{type:"model-load-error",error:n})}finally{this.loading=!1}},async autoStartDetection(){if(this.modelsLoaded)try{await this.startCamera(),setTimeout(()=>{this.cameraReady&&this.startDetection()},1e3)}catch(n){console.error("自动开始检测失败:",n)}},async startCamera(){try{this.stream=await navigator.mediaDevices.getUserMedia({video:{width:this.videoWidth,height:this.videoHeight,facingMode:"user"}}),this.$refs.video.srcObject=this.stream,this.cameraStarted=!0}catch(n){console.error("摄像头启动失败:",n),this.$emit("error",{type:"camera-error",error:n})}},onVideoLoaded(){this.cameraReady=!0,console.log("摄像头准备就绪"),this.modelsLoaded&&!this.isDetecting&&setTimeout(()=>{this.startDetection()},500)},stopCamera(){this.stopDetection(),this.stream&&(this.stream.getTracks().forEach(n=>n.stop()),this.stream=null),this.cameraStarted=!1,this.cameraReady=!1},startDetection(){this.modelsLoaded&&this.cameraReady&&(this.isDetecting=!0,this.detectionInterval=setInterval(()=>{this.detectFaces()},100))},stopDetection(){this.isDetecting=!1,this.detectionInterval&&(clearInterval(this.detectionInterval),this.detectionInterval=null);const n=this.$refs.overlay,x=n.getContext("2d");x.clearRect(0,0,n.width,n.height)},toggleDetection(){this.isDetecting?this.stopDetection():this.startDetection()},async detectFaces(){const n=this.$refs.video,x=this.$refs.overlay;if(n&&x)try{const t=await Nj(n,new Mv).withFaceLandmarks().withFaceDescriptors(),e=x.getContext("2d");if(e.clearRect(0,0,x.width,x.height),t.length>0){t.forEach(n=>{const{x:x,y:t,width:i,height:r}=n.detection.box;e.strokeStyle="#00ff00",e.lineWidth=2,e.strokeRect(x,t,i,r),e.fillStyle="#00ff00",e.font="16px Arial",e.fillText(`${(100*n.detection.score).toFixed(1)}%`,x,t-10)});const n=Date.now();n-this.lastCaptureTime>this.captureInterval&&(this.captureHighConfidenceFaces(t),this.lastCaptureTime=n),this.$emit("face-detected",t),this.onFaceDetectedComplete(t)}else this.$emit("face-lost")}catch(t){console.error("人脸检测失败:",t),this.$emit("error",{type:"detection-error",error:t})}},captureHighConfidenceFaces(n){const x=this.$refs.video;n.forEach(n=>{if(n.detection.score>=this.minConfidence){const t=document.createElement("canvas"),e=t.getContext("2d"),{x:i,y:r,width:o,height:s}=n.detection.box,h=1,u=1,a=1,g=s*(1+h+a),l=o*(1+2*u),c=Math.max(0,i-o*u),d=Math.max(0,r-s*h),f=x.videoWidth||this.videoWidth,p=x.videoHeight||this.videoHeight,y=Math.max(0,c),m=Math.max(0,d),b=Math.min(l,f-y),z=Math.min(g,p-m);t.width=b,t.height=z,e.drawImage(x,y,m,b,z,0,0,b,z);const v=t.toDataURL("image/jpeg",.8);this.capturedImages.unshift({dataUrl:v,confidence:n.detection.score,timestamp:Date.now(),box:n.detection.box,expandedBox:{x:y,y:m,width:b,height:z}}),this.capturedImages.length>this.maxCaptures&&(this.capturedImages=this.capturedImages.slice(0,this.maxCaptures)),console.log("捕获到高置信度人脸:",n.detection.score)}})},async copyToClipboard(n){try{await navigator.clipboard.writeText(n),console.log("Base64已复制到剪贴板")}catch(x){console.error("复制失败:",x)}},onFaceDetectedComplete(n){console.log("检测到人脸,正在停止检测..."),this.stopDetection(),this.stopCamera(),this.$emit("detection-complete",{detections:n,capturedImages:this.capturedImages})},cleanup(){this.stopCamera(),this.capturedImages=[]},async restartAuthentication(){try{console.log("开始重新认证..."),this.cleanup(),this.capturedImages=[],this.lastCaptureTime=0,this.modelsLoaded||await this.loadModels(),await this.autoStartDetection(),console.log("重新认证流程已启动"),this.$emit("restart-authentication")}catch(n){console.error("重新认证启动失败:",n),this.$emit("error",{type:"restart-error",error:n})}}}},Fj=Mj,Pj=Ee(Fj,Si,Ei,!1,null,"7c2b7702",null),Lj=Pj.exports,Bj=function(){var n=this,x=n._self._c;return x("div",{directives:[{name:"loading",rawName:"v-loading",value:n.loading,expression:"loading"}],staticClass:"face-picture"},[x("img",{attrs:{src:n.src,width:"100%",height:"100%"}}),x("div",{staticClass:"delete-batn",on:{click:n.handleDelete}},[x("i",{staticClass:"el-icon-delete",staticStyle:{size:"20px"}})])])},$j=[],Vj={props:{row:Object},data(){return{src:null,loading:!1}},mounted(){this.loadFaceImage()},methods:{handleDelete(){this.handleClearFaceInfo()},loadFaceImage(){this.row?.userId?this.src=`/plugin/face/photo?userId=${this.row?.userId}`:console.warn("用户ID不存在,无法加载人脸信息")},handleClearFaceInfo(){this.$confirm("确定要清除人脸信息吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.loading=!0,fi({userId:this.row?.userId}).then(()=>{this.$emit("clear-face"),this.$message.success("人脸信息已清除")}).finally(()=>{this.loading=!1})}).catch(()=>{})}}},Wj=Vj,Uj=Ee(Wj,Bj,$j,!1,null,"0b73bca5",null),Hj=Uj.exports,Gj={name:"FaceRegister",props:{row:Object},components:{ChooseCameraOrPicture:vi,UploadPicture:Ci,FaceDetected:Lj,FacePicture:Hj},data(){const n=this.row?.userId;return{userId:n,chooseType:"loading",uploading:!1,userIdMissing:!1}},created(){this.checkFaceInfo()},methods:{checkFaceInfo(){di({userId:this.userId}).then(n=>{this.chooseType=n.data?"face-info":""})},handleBack(){this.chooseType=""},handleClose(){},handleChoose(n){this.chooseType="camera"===n?"camera":"picture"},handleClearFace(){this.checkFaceInfo()},handleRefresh(){window.location.reload()},handleUploadSuccess(){this.checkFaceInfo()},async handleDetectionComplete(n){if(this.userId)if(n.capturedImages&&0!==n.capturedImages.length)try{this.uploading=!0,this.chooseType="";const x=n.capturedImages[0],t=x.dataUrl,e=this.base64ToFile(t,"face-detected.jpg"),i=new FormData;i.append("file",e),i.append("userId",this.userId),i.append("userName",this.row?.row?.name||""),await ci(i),this.$message.success("人脸注册成功!"),this.checkFaceInfo()}catch(x){console.error("人脸上传失败:",x),this.chooseType=""}finally{this.uploading=!1}else this.$message.error("未检测到人脸图片");else this.$message.error("用户信息不完整,无法进行人脸注册")},base64ToFile(n,x){const t=n.split(","),e=t[0].match(/:(.*?);/)[1],i=atob(t[1]);let r=i.length;const o=new Uint8Array(r);while(r--)o[r]=i.charCodeAt(r);return new File([o],x,{type:e})}}},Kj=Gj,Yj=Ee(Kj,ui,ai,!1,null,"6026fac0",null),Xj=Yj.exports,Jj=function(){var n=this,x=n._self._c;return x("div",{directives:[{name:"loading",rawName:"v-loading",value:n.loading,expression:"loading"}],staticClass:"p-12"},[x("el-table",{ref:"table",attrs:{data:n.tableData,stripe:"","header-cell-style":{background:"#f7f8fa"}},on:{"selection-change":n.h_selectionChange,"row-click":n.h_rowClick}},[x("el-table-column",{attrs:{type:"selection",width:"75"}}),x("el-table-column",{attrs:{type:"index",label:"序号",width:"80"}}),x("el-table-column",{attrs:{prop:"icCard",label:"身份卡号"}})],1),x("div",{staticClass:"flex-center mt-12"},[x("el-button",{attrs:{type:"primary",icon:"el-icon-circle-plus-outline"},on:{click:n.h_add}},[n._v("添加")]),x("el-button",{attrs:{icon:"el-icon-delete",type:"danger"},on:{click:n.h_remove}},[n._v("移除")])],1),n.visible?x("register-dialog",{attrs:{row:n.row},on:{closed:function(x){n.visible=!1},refresh:n.h_loadData}}):n._e()],1)},Qj=[];const Zj=n=>li({url:"/userICCard/add",method:"post",data:n}),nw=n=>li({url:"/icCard/findNoBindICCard",method:"get",params:n}),xw=n=>li({url:"/userICCard/deleteByIcCard",method:"post",data:n}),tw=n=>li({url:"/userICCard/findByUserId",method:"get",params:n});var ew=function(){var n=this,x=n._self._c;return x("el-dialog",{attrs:{visible:n.visible,width:"580px",title:"新增身份卡","append-to-body":""},on:{closed:n.closed,close:n.h_close}},["normal"===n.component?x("div",[x("div",{staticClass:"p-12 pr-32"},[x("el-form",{attrs:{model:n.form,"label-width":"100px"}},[x("el-form-item",{attrs:{label:"身份卡号"}},[x("el-input",{attrs:{placeholder:"请输入或者使用刷卡器刷卡"},model:{value:n.form.cardNo,callback:function(x){n.$set(n.form,"cardNo",x)},expression:"form.cardNo"}})],1)],1)],1),x("div",{staticClass:"select-section"},[x("el-button",{staticClass:"select-button",attrs:{type:"text"},on:{click:n.h_selectCard}},[n._v(" 选择已录入身份卡 >> ")])],1),x("div",{staticClass:"dialog-footer f_center",staticStyle:{"margin-top":"100px"}},[x("el-button",{attrs:{loading:n.loading},on:{click:n.h_close}},[n._v("取消")]),x("el-button",{attrs:{type:"primary",loading:n.loading},on:{click:n.h_submit}},[n._v("确定")])],1)]):n._e(),"table"===n.component?x("div",[x("card-table",{attrs:{loading:n.loading},on:{back:n.h_back,submit:n.h_submit}})],1):n._e()])},iw=[],rw=function(){var n=this,x=n._self._c;return x("div",{directives:[{name:"loading",rawName:"v-loading",value:n.loading,expression:"loading"}]},[x("el-table",{ref:"table",attrs:{data:n.tableData,stripe:"","header-cell-style":{background:"#f7f8fa"}},on:{"selection-change":n.h_selectionChange,"row-click":n.h_rowClick}},[x("el-table-column",{attrs:{type:"selection",width:"75"}}),x("el-table-column",{attrs:{type:"index",label:"序号",width:"80"}}),x("el-table-column",{attrs:{prop:"icCard",label:"IC卡号"}}),x("el-table-column",{attrs:{prop:"createdTime",label:"录入时间"}})],1),n._e(),x("div",{staticClass:"flex-center mt-42"},[x("el-button",{on:{click:n.h_back}},[n._v("返回")]),x("el-button",{attrs:{type:"primary"},on:{click:n.h_submit}},[n._v("确定")])],1)],1)},ow=[],sw={name:"CardTable",props:{loading:{type:Boolean,default:!1}},data(){return{tableData:[],selection:[],pagination:{current:1,size:5,total:0}}},created(){this.f_loadData()},methods:{h_rowClick(n){this.$refs.table.toggleRowSelection(n)},h_currentChange(n){this.table.pagination.current=n,this.f_loadData()},h_back(){this.$emit("back")},h_submit(){0!==this.selection.length?this.selection.length>1?this.$message.warning("请选择一张IC卡"):this.$emit("submit",this.selection[0]):this.$message.warning("请选择要添加的IC卡")},f_loadData(){nw({keyword:null}).then(n=>{this.tableData=n.data})},h_selectionChange(n){this.selection=n}}},hw=sw,uw=Ee(hw,rw,ow,!1,null,"519ef704",null),aw=uw.exports,gw={name:"RegisterDialog",components:{CardTable:aw},props:{row:{type:Object,default:()=>{}}},data(){return{loading:!1,component:"normal",visible:!1,form:{cardNo:""}}},created(){},mounted(){this.visible=!0,this.$authEventBus.$on("card",this.h_card)},beforeDestroy(){this.$authEventBus.$off("card",this.h_card)},methods:{h_card(n){0!==n.result&&200!==n.status||(this.form.cardNo=n.data)},h_back(){this.component="normal"},h_submit(n){this.loading=!0;let x={userId:this.row.userId,userName:this.row.row.name,icCard:this.form.cardNo,tenantId:""};n&&n.icCard&&(x={userId:this.row.userId,userName:this.row.row.name,icCard:n.icCard,tenantId:""}),Zj(x).then(()=>{this.$message.success("新增成功"),this.visible=!1,this.$emit("refresh")}).finally(()=>{this.loading=!1})},h_close(){this.visible=!1},closed(){this.$emit("closed")},h_selectCard(){this.component="table"}}},lw=gw,cw=Ee(lw,ew,iw,!1,null,"2a8d4408",null),dw=cw.exports,fw={name:"CardRegister",components:{RegisterDialog:dw},props:{row:{type:Object,default:()=>{}}},data(){return{tableData:[],selection:[],visible:!1,loading:!1}},created(){this.h_loadData()},methods:{h_rowClick(n){this.$refs.table.toggleRowSelection(n)},h_loadData(){this.loading=!0,tw({userId:this.row.userId}).then(n=>{this.tableData=n.data}).finally(()=>{this.loading=!1})},h_add(){this.visible=!0},h_remove(){this.$confirm("确定移除选中的身份卡吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.loading=!0,xw(this.selection.map(n=>n.icCardId)).then(()=>{this.$message.success("移除成功"),this.h_loadData()}).finally(()=>{this.loading=!1})}).catch(()=>{})},h_selectionChange(n){this.selection=n}}},pw=fw,yw=Ee(pw,Jj,Qj,!1,null,"56d9f150",null),mw=yw.exports,bw=function(){var n=this,x=n._self._c;return x("div",{staticClass:"flex-center align-center h100 w100"},[x("div",{staticClass:"finger-dialog"},[x("div",{staticClass:"finger-register-content"},[x("div",{staticStyle:{color:"#333","font-size":"24px","margin-bottom":"12px","padding-top":"48px","text-align":"center","margin-top":"24px"}},[n._v(" "+n._s(n.stepTips)+" ")]),x("div",{staticStyle:{display:"flex","justify-content":"center","align-items":"center","padding-top":"50px"}},[x("div",{staticClass:"hand-area left-hand"},[x("div",{staticClass:"hand-image-wrapper"},[x("img",{staticClass:"hand-image",attrs:{src:n.leftHandleImg}}),x("div",{staticClass:"finger-buttons-overlay"},n._l(n.leftFingers,function(t,e){return x("div",{key:"left-"+e,class:["finger-circle",{active:n.selectedFinger&&n.selectedFinger.value===t.value,ready:!!t.fingerInfo}],style:{top:t.top+"px",left:t.left+"px"},on:{click:function(x){return n.handleSelectFinger(t)}}})}),0)])]),x("div",{staticClass:"hand-area right-hand"},[x("div",{staticClass:"hand-image-wrapper"},[x("img",{staticClass:"hand-image",attrs:{src:n.rightHandleImg}}),x("div",{staticClass:"finger-buttons-overlay"},n._l(n.rightFingers,function(t,e){return x("div",{key:"right-"+e,class:["finger-circle",{active:n.selectedFinger&&n.selectedFinger.value===t.value,ready:!!t.fingerInfo}],style:{top:t.top+"px",left:t.left+"px"},on:{click:function(x){return n.handleSelectFinger(t)}}})}),0)])]),x("div",{staticClass:"fingerprint-status"},[x("div",{staticClass:"fingerprint-image-container"},[x("div",{staticClass:"delete-button"},[n.selectedFinger&&n.selectedFinger.fingerInfo?x("el-button",{attrs:{type:"text",size:"large"},on:{click:n.handleDeleteFinger}},[x("i",{staticClass:"el-icon-delete",staticStyle:{"font-size":"20px",color:"#999"}})]):n._e()],1),x("img",{staticClass:"fingerprint-image",attrs:{src:n.currentFingerprintImage}}),x("p",{staticClass:"status-text"},[n._v(" "+n._s(n.fingerStatusText)+" ")])])])])])])])},zw=[];e(116);function vw(n){return li({url:"/finger/maxFingerSeq",method:"post",data:n})}function jw(n){return li({url:"/finger/upload",method:"post",data:n})}function ww(n){return li({url:"/finger/findByUserId",method:"post",data:n})}function kw(n){return li({url:"/finger/delete",method:"post",params:n})}var qw={name:"FingerRegisterView",props:{row:{type:Object,default:()=>{}}},data(){return{fingerRegisterStep:0,currentFingerprintImage:e(5987),gifTimeoutId:null,selectedFinger:null,fingerTemp:null,fingerId:null,fid:null,loading:!1,leftFingers:[{label:"大拇指",value:"left-thumb",top:122,left:6,index:0,fingerInfo:null},{label:"食指",value:"left-index",top:20,left:60,index:1,fingerInfo:null},{label:"中指",value:"left-middle",top:3,left:98,index:2,fingerInfo:null},{label:"无名指",value:"left-ring",top:12,left:136,index:3,fingerInfo:null},{label:"小拇指",value:"left-little",top:35,left:176,index:4,fingerInfo:null}],rightFingers:[{label:"大拇指",value:"right-thumb",top:118,left:178,index:5,fingerInfo:null},{label:"食指",value:"right-index",top:16,left:121,index:6,fingerInfo:null},{label:"中指",value:"right-middle",top:0,left:83,index:7,fingerInfo:null},{label:"无名指",value:"right-ring",top:11,left:43,index:8,fingerInfo:null},{label:"小拇指",value:"right-little",top:42,left:5,index:9,fingerInfo:null}]}},computed:{userId(){return this.row.userId},devSn(){return this.$store.getters.getFingerprintDeviceSN},devType(){return 1},tenantId(){return null},leftHandleImg(){return this.selectedFinger&&this.selectedFinger.value.includes("left")?e(5276):e(5039)},rightHandleImg(){return this.selectedFinger&&this.selectedFinger.value.includes("right")?e(6649):e(816)},stepTips(){return-1===this.fingerRegisterStep?"指纹采集异常,请重试!":0===this.fingerRegisterStep?"请选择需要采集的手指":1===this.fingerRegisterStep?"请将手指放在设备上":2===this.fingerRegisterStep?"请再次将手指放在设备上":3===this.fingerRegisterStep?"最后一次将手指放在设备上":4===this.fingerRegisterStep?"正在指纹采集":5===this.fingerRegisterStep?"指纹采集成功":"未知状态"},fingerStatusText(){return-1===this.fingerRegisterStep?"指纹采集异常,请重试!":0===this.fingerRegisterStep?"采集指纹一共需要三次按压":1===this.fingerRegisterStep?"请将手指放在设备上":2===this.fingerRegisterStep?"请再次将手指放在设备上":3===this.fingerRegisterStep?"最后一次将手指放在设备上":4===this.fingerRegisterStep?"正在处理指纹数据...":5===this.fingerRegisterStep?"指纹采集成功":"准备采集指纹"}},watch:{fingerRegisterStep(n){clearTimeout(this.gifTimeoutId);const x=800;1===n||0===n||-1===n?this.currentFingerprintImage=e(5987):2===n?(this.currentFingerprintImage=e(8861),this.gifTimeoutId=setTimeout(()=>{this.currentFingerprintImage=e(1565)},x)):3===n?(this.currentFingerprintImage=e(1970),this.gifTimeoutId=setTimeout(()=>{this.currentFingerprintImage=e(2488)},x)):4===n?(this.currentFingerprintImage=e(4747),this.gifTimeoutId=setTimeout(()=>{this.currentFingerprintImage=e(9251)},x)):5===n&&(this.currentFingerprintImage=e(3997))}},mounted(){this.loadCurrentUserFingerInfo(),this.$authEventBus.$on("startCollectionMessage",this.startCollectionMessage)},beforeDestroy(){clearTimeout(this.gifTimeoutId),this.$authEventBus.$off("startCollectionMessage",this.startCollectionMessage),this.fingerRegisterStep>0&&this.fingerRegisterStep<5&&this.cancelCollection()},methods:{cancelCollection(){this.$authEventBus.$emit("cancelCollection")},handleCancelCollection(){this.$confirm("确定要退出指纹采集吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.cancelCollection(),this.$message.info("已退出指纹采集")}).catch(()=>{})},startCollectionMessage(n){if(console.log("startCollectionMessage:",n),200===n.status||0===n.result){const{count:x,temp:t,image:e}=n.data;console.log(`指纹采集进度: ${x}/4`),1===x?this.fingerRegisterStep=2:2===x?this.fingerRegisterStep=3:3===x?this.fingerRegisterStep=4:4===x&&(this.fingerRegisterStep=5,this.fingerTemp=t,console.log("✅ 指纹采集完成,获取到指纹模板"),this.$nextTick(()=>{this.addFingerprint()})),e&&console.log("收到指纹图像数据")}else console.error("指纹采集失败:",n.msg||"未知错误"),this.fingerRegisterStep=-1,this.$message?.error?.(n.msg||"指纹采集失败,请重试")},handleClose(){},async handleSelectFinger(n){if(this.fingerRegisterStep>0&&this.fingerRegisterStep<5)this.$message({message:"指纹采集尚未完成,请先完成当前采集",type:"warning"});else if(n.fingerInfo)this.selectedFinger=n;else try{const x=await vw({devSn:this.devSn,devType:this.devType,fingerNo:n.index,tenantId:this.tenantId,userId:this.userId});this.fingerId=x.data.fingerId,this.fid=x.data.fingerSeq,this.selectedFinger=n,this.fingerRegisterStep=1,this.fingerTemp=null,console.log(`开始采集 ${n.label} 指纹,fingerId: ${this.fingerId}, fid: ${this.fid}`),this.startCollection()}catch(x){console.error("获取指纹信息失败:",x)}},handleSaveFingerprint(){this.addFingerprint()},handleDeleteFinger(){this.$confirm("确定删除指纹吗?").then(()=>{kw({fingerId:this.selectedFinger.fingerInfo.id}).then(()=>{this.selectedFinger=null,this.fingerRegisterStep=0,this.$message.success("删除成功"),this.loadCurrentUserFingerInfo()})}).catch(()=>{})},startCollection(){this.$authEventBus.$emit("startCollection")},loadCurrentUserFingerInfo(){ww({devType:this.devType,tenantId:this.tenantId,userId:this.userId}).then(n=>{const x=n.data,t=this.leftFingers.map(n=>{const t=x.find(x=>x.fingerNo===n.index);return{...n,fingerInfo:t}}),e=this.rightFingers.map(n=>{const t=x.find(x=>x.fingerNo===n.index);return{...n,fingerInfo:t}});this.leftFingers=t,this.rightFingers=e})},addFingerprint(){this.fingerId?this.fingerTemp?this.selectedFinger?this.fid?(this.loading=!0,console.log("开始保存指纹到服务器..."),jw({data:this.fingerTemp,fingerId:this.fingerId}).then(()=>{console.log("✅ 指纹保存成功"),this.loadCurrentUserFingerInfo(),this.selectedFinger=null,this.fingerRegisterStep=0,this.fingerTemp=null,this.fingerId=null,this.fid=null,this.$message.success("指纹录入成功!")}).catch(n=>{console.error("❌ 指纹保存失败:",n),this.fingerRegisterStep=-1}).finally(()=>{this.loading=!1})):this.$message.error("未获取到指纹序列号"):this.$message.error("请先选择手指"):this.$message.error("未获取到指纹模板"):this.$message.error("未获取到指纹ID")}}},_w=qw,Cw=Ee(_w,bw,zw,!1,null,"de87379c",null),Sw=Cw.exports,Ew={name:"auth-com",components:{FaceRegister:Xj,CardRegister:mw,FingerRegister:Sw},props:{authCollect:{type:Array,default:()=>[]},drawerInfo:{type:Object,default:()=>{}}},data(){return{authList:[],activeName:""}},mounted(){this.h_init()},methods:{h_init(){const n={...Ue};for(let x in Ue)this.authCollect.includes(x)||delete n[x];this.authList=He(n,!1),this.authList.length&&(this.activeName=this.authList[0].value)}}},Dw=Ew,Ow=Ee(Dw,si,hi,!1,null,"112e7717",null),Iw=Ow.exports,Tw=function(){var n=this,x=n._self._c;return x("div",{staticClass:"flex-center align-center h100"},[x("el-empty",{staticStyle:{"font-size":"20px"},attrs:{description:"请先保存用户信息"}})],1)},Aw=[],Nw={name:"empty-view"},Rw=Nw,Mw=Ee(Rw,Tw,Aw,!1,null,"9e253eac",null),Fw=Mw.exports,Pw={name:"user-drawer",components:{UserInfo:oi,AuthCom:Iw,EmptyView:Fw},props:{authCollect:{required:!1,type:Array,default:()=>["face","finger","idCard"]},drawerInfo:{type:Object}},data(){return{visible:!1,loading:!1}},mounted(){this.visible=!0},methods:{closed(){this.$emit("closed")},h_back(){this.visible=!1},async f_save(){try{this.loading=!0;const n=this.$refs["user-info"].h_getFormData();await ze({...n,organId:this.drawerInfo.organ.id}),this.$emit("refresh"),this.visible=!1}finally{this.loading=!1}}}},Lw=Pw,Bw=Ee(Lw,Je,Qe,!1,null,"ee7490ee",null),$w=Bw.exports,Vw=e(7128),Ww=e.n(Vw);class Uw{constructor(n,x={}){this.url=n,this.options={reconnectInterval:5e3,maxReconnectAttempts:10,heartbeatInterval:12e4,...x},this.ws=null,this.reconnectAttempts=0,this.isConnected=!1,this.heartbeatTimer=null,this.eventListeners=new Map,this.onOpen=this.onOpen.bind(this),this.onMessage=this.onMessage.bind(this),this.onError=this.onError.bind(this),this.onClose=this.onClose.bind(this)}connect(){try{this.ws=new WebSocket(this.url),this.ws.onopen=this.onOpen,this.ws.onmessage=this.onMessage,this.ws.onerror=this.onError,this.ws.onclose=this.onClose}catch(n){console.error("WebSocket连接失败:",n),this.handleReconnect()}}onOpen(n){console.log("WebSocket连接成功"),this.isConnected=!0,this.reconnectAttempts=0,this.startHeartbeat(),this.emit("open",n)}onMessage(n){try{const x=JSON.parse(n.data);if(console.log("收到WebSocket消息:",x),"pong"===x.type)return;this.emit("message",x)}catch(x){console.error("解析WebSocket消息失败:",x),this.emit("message",n.data)}}onError(n){console.error("WebSocket错误:",n),this.emit("error",n)}onClose(n){console.log("WebSocket连接关闭:",n.code,n.reason),this.isConnected=!1,this.stopHeartbeat(),this.emit("close",n),1e3!==n.code&&this.handleReconnect()}send(n){if(!this.isConnected||this.ws.readyState!==WebSocket.OPEN)return console.warn("WebSocket未连接,无法发送消息"),!1;try{const x="string"===typeof n?n:JSON.stringify(n);return this.ws.send(x),console.log("发送WebSocket消息:",n),!0}catch(x){return console.error("发送WebSocket消息失败:",x),!1}}on(n,x){this.eventListeners.has(n)||this.eventListeners.set(n,[]),this.eventListeners.get(n).push(x)}off(n,x){const t=this.eventListeners.get(n);if(t){const n=t.indexOf(x);n>-1&&t.splice(n,1)}}emit(n,x){const t=this.eventListeners.get(n);t&&t.forEach(t=>{try{t(x)}catch(e){console.error(`事件监听器执行失败 [${n}]:`,e)}})}handleReconnect(){this.reconnectAttempts<this.options.maxReconnectAttempts?(this.reconnectAttempts++,console.log(`尝试重连WebSocket (${this.reconnectAttempts}/${this.options.maxReconnectAttempts})`),setTimeout(()=>{this.connect()},this.options.reconnectInterval)):(console.error("WebSocket重连次数已达上限"),this.emit("reconnectFailed"))}startHeartbeat(){this.stopHeartbeat(),this.heartbeatTimer=setInterval(()=>{this.isConnected&&this.send({type:"ping",timestamp:Date.now()})},this.options.heartbeatInterval)}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null)}close(){this.stopHeartbeat(),this.ws&&this.ws.close(1e3,"主动关闭"),this.isConnected=!1}getReadyState(){return this.ws?this.ws.readyState:WebSocket.CLOSED}isOpen(){return this.isConnected&&this.ws&&this.ws.readyState===WebSocket.OPEN}}var Hw=Uw,Gw={name:"auth-manage",props:{authCollect:{required:!1,type:Array,default:()=>["face","finger","idCard"]}},components:{OrganTree:Pe,UserTable:Xe,UserDrawer:$w},data(){return{visible:!1,drawerInfo:{},organTreeKey:"1",websocket:null,cardReader:null,fingerprintDeviceCount:0}},mounted(){console.log("LD-AUTH打包时间为",Ww()(1756287942537).format("YYYY-MM-DD HH:mm:ss")),this.$authEventBus.$on("startCollection",this.handleStartCollection),this.$authEventBus.$on("cancelCollection",this.handleCancelCollection),this.initWebSocket()},beforeDestroy(){this.websocket&&(console.log("🔌 组件销毁,关闭WebSocket连接"),this.websocket.close(),this.websocket=null),this.$authEventBus.$off("startCollection",this.handleStartCollection),this.$authEventBus.$off("cancelCollection",this.handleCancelCollection)},methods:{handleCancelCollection(){this.websocket&&this.websocket.send({action:1010})},handleStartCollection(){if(this.$store.getters.getFingerprintDeviceSN){const n={action:1001};this.websocket.send(n)}},initWebSocket(){try{this.websocket=new Hw(`${this.$store.state.websocketUrl}`,{reconnectInterval:5e3,maxReconnectAttempts:10,heartbeatInterval:12e4}),this.websocket.on("open",()=>{this.checkCardReaderConnection(),this.getFingerprintDeviceSN()}),this.websocket.on("message",n=>{console.log("📨 收到WebSocket消息:",n),this.handleWebSocketMessage(n)}),this.websocket.on("error",n=>{console.error("❌ WebSocket连接错误:",n),this.$message?.error?.("WebSocket连接错误")}),this.websocket.on("close",n=>{console.log("🔌 WebSocket连接已关闭:",n.code,n.reason),n.code}),this.websocket.on("reconnectFailed",()=>{console.error("💥 WebSocket重连失败,已达最大重连次数"),this.$message?.error?.("WebSocket连接失败,请检查网络或联系管理员")}),this.websocket.connect()}catch(n){console.error("WebSocket初始化失败:",n),this.$message?.error?.("WebSocket初始化失败")}},handleWebSocketMessage(n){if(n.action)switch(n.action){case 1009:this.handleFingerprintDeviceSNResponse(n);break;case 2001:this.handleCheckCardReaderResponse(n);break;case 2002:this.handleCardReaderListResponse(n);break;case 2003:this.handleOpenCardReaderResponse(n);break;case 2004:this.$authEventBus.$emit("card",n);break;case 1001:this.$authEventBus.$emit("startCollectionMessage",n);break;default:console.log("未知action类型:",n)}else switch(n.type){case"user_update":console.log("用户信息更新:",n.payload),this.f_userData();break;case"organ_update":console.log("组织架构更新:",n.payload),this.f_refreshTree();break;case"auth_status":console.log("认证状态更新:",n.payload),this.$message?.info?.(n.payload.message||"认证状态已更新");break;case"notification":console.log("系统通知:",n.payload),this.$message?.info?.(n.payload.message||"收到系统通知");break;default:console.log("未知消息类型:",n)}},sendWebSocketMessage(n,x={}){if(this.websocket&&this.websocket.isOpen()){const t={type:n,payload:x,timestamp:Date.now()};this.websocket.send(t),console.log("📤 发送WebSocket消息:",t)}},getFingerprintDeviceSN(){console.log("🔢 获取指纹设备SN码...");const n={action:1009};this.websocket.send(n),console.log("📤 发送获取指纹设备SN码消息:",n)},handleFingerprintDeviceSNResponse(n){if(console.log("📊 收到指纹设备SN响应:",n),200===n.status||0===n.result){const x=n.data?.sn||"";x?(console.log("✅ 获取到指纹设备SN:",x),this.$store.dispatch("updateFingerprintDeviceSN",x)):(console.warn("⚠️ 指纹设备SN为空"),this.$store.dispatch("updateFingerprintDeviceSN",""))}else console.error("❌ 获取指纹设备SN失败:",n.msg||"未知错误"),this.$message?.error?.("获取指纹设备SN失败,请检查指纹设备连接")},getFingerprintDeviceStatus(){return{deviceCount:this.fingerprintDeviceCount,hasDevice:this.fingerprintDeviceCount>0,deviceSN:this.$store.getters.getFingerprintDeviceSN}},refreshFingerprintDeviceCount(){this.websocket&&this.websocket.isOpen()?this.getFingerprintDeviceCount():console.warn("WebSocket未连接,无法获取指纹设备数量")},refreshFingerprintDeviceSN(){this.websocket&&this.websocket.isOpen()?this.getFingerprintDeviceSN():console.warn("WebSocket未连接,无法获取指纹设备SN")},refreshAllFingerprintInfo(){this.websocket&&this.websocket.isOpen()?(this.getFingerprintDeviceCount(),this.getFingerprintDeviceSN()):console.warn("WebSocket未连接,无法获取指纹设备信息")},checkCardReaderConnection(){console.log("🔍 检查读卡器连接状态...");const n={action:2001};this.websocket.send(n),console.log("📤 发送检查读卡器连接状态消息:",n)},handleCheckCardReaderResponse(n){console.log("📊 收到读卡器连接状态响应:",n),200===n.status||0===n.result?n.data&&n.data.isOpen?(this.cardReader=n.data.devName||"读卡器",console.log("✅ 读卡器已连接:",this.cardReader)):(console.log("⚠️ 读卡器未连接,开始获取读卡器列表..."),this.getCardReaderList()):(console.error("❌ 检查读卡器状态失败:",n.msg||"未知错误"),this.$message?.error?.(`检查读卡器状态失败: ${n.msg||"未知错误"}`),this.getCardReaderList())},getCardReaderList(){console.log("📡 请求获取读卡器列表...");const n={action:2002};this.websocket.send(n),console.log("📤 发送获取读卡器列表消息:",n)},handleCardReaderListResponse(n){if(console.log("📋 收到读卡器列表响应:",n),n.data&&Array.isArray(n.data)&&n.data.length>0){const x=n.data[0];console.log("🎯 找到读卡器:",x),this.$message?.success?.(`发现读卡器: ${x}`),this.openCardReader(x)}else console.warn("⚠️ 未找到可用的读卡器"),this.$message?.warning?.("未找到可用的读卡器")},openCardReader(n){const x={action:2003,devName:n};this.websocket.send(x)},handleOpenCardReaderResponse(n){0===n.result||200===n.status?this.cardReader=n.devName||"读卡器":this.$message?.error?.(`读卡器打开失败: ${n.message||n.error||"未知错误"}`)},getCardReaderStatus(){return{isConnected:!!this.cardReader,deviceName:this.cardReader}},reinitCardReader(){this.cardReader=null,this.websocket&&this.websocket.isOpen()?this.checkCardReaderConnection():this.$message?.warning?.("WebSocket未连接,无法初始化读卡器")},getAllDeviceStatus(){return{fingerprint:this.getFingerprintDeviceStatus(),cardReader:this.getCardReaderStatus()}},refreshAllDevices(){this.websocket&&this.websocket.isOpen()?(this.refreshAllFingerprintInfo(),this.checkCardReaderConnection()):this.$message?.warning?.("WebSocket未连接,无法刷新设备状态")},f_refreshTree(){this.organTreeKey=this.organTreeKey+1},f_userData(n){n&&this.$set(this.drawerInfo,"organ",n),this.$refs["user-table"].f_init(this.drawerInfo.organ)},h_setVisible(){this.visible=!1},h_setUserId(n,x){this.$set(this.drawerInfo,"userId",n),this.$set(this.drawerInfo,"row",x),this.visible=!0}}},Kw=Gw,Yw=Ee(Kw,r,o,!1,null,"37d6a0fe",null),Xw=Yw.exports;const Jw=new(Ct());var Qw=Jw;const Zw=function(n,x={}){Zw.installed||(n.component(Xw.name,Xw),n.prototype.$authEventBus=Qw,x.baseUrl&&ae.commit("SET_BASE_URL",x.baseUrl),x.authUrl&&ae.commit("SET_AUTH_URL",x.authUrl))};var nk={install:Zw,authManage:Xw},xk=nk}(),i=i["default"],i}()});
|
|
70
|
+
var wm=function(n,x){return wm=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,x){n.__proto__=x}||function(n,x){for(var t in x)x.hasOwnProperty(t)&&(n[t]=x[t])},wm(n,x)};function km(n,x){function t(){this.constructor=n}wm(n,x),n.prototype=null===x?Object.create(x):(t.prototype=x.prototype,new t)}var qm=function(){return qm=Object.assign||function(n){for(var x,t=1,e=arguments.length;t<e;t++)for(var i in x=arguments[t],x)Object.prototype.hasOwnProperty.call(x,i)&&(n[i]=x[i]);return n},qm.apply(this,arguments)};function _m(n,x,t,e){function i(n){return n instanceof t?n:new t(function(x){x(n)})}return new(t||(t=Promise))(function(t,r){function o(n){try{h(e.next(n))}catch(Oi){r(Oi)}}function s(n){try{h(e["throw"](n))}catch(Oi){r(Oi)}}function h(n){n.done?t(n.value):i(n.value).then(o,s)}h((e=e.apply(n,x||[])).next())})}function Cm(n,x){var t,e,i,r,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return r={next:s(0),throw:s(1),return:s(2)},"function"===typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function s(n){return function(x){return h([n,x])}}function h(r){if(t)throw new TypeError("Generator is already executing.");while(o)try{if(t=1,e&&(i=2&r[0]?e["return"]:r[0]?e["throw"]||((i=e["return"])&&i.call(e),0):e.next)&&!(i=i.call(e,r[1])).done)return i;switch(e=0,i&&(r=[2&r[0],i.value]),r[0]){case 0:case 1:i=r;break;case 4:return o.label++,{value:r[1],done:!1};case 5:o.label++,e=r[1],r=[0];continue;case 7:r=o.ops.pop(),o.trys.pop();continue;default:if(i=o.trys,!(i=i.length>0&&i[i.length-1])&&(6===r[0]||2===r[0])){o=0;continue}if(3===r[0]&&(!i||r[1]>i[0]&&r[1]<i[3])){o.label=r[1];break}if(6===r[0]&&o.label<i[1]){o.label=i[1],i=r;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(r);break}i[2]&&o.ops.pop(),o.trys.pop();continue}r=x.call(n,o)}catch(Oi){r=[6,Oi],e=0}finally{t=i=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}}function Sm(){for(var n=0,x=0,t=arguments.length;x<t;x++)n+=arguments[x].length;var e=Array(n),i=0;for(x=0;x<t;x++)for(var r=arguments[x],o=0,s=r.length;o<s;o++,i++)e[i]=r[o];return e}var Em=function(){function n(n,x){if(!Bm(n)||!Bm(x))throw new Error("Dimensions.constructor - expected width and height to be valid numbers, instead have "+JSON.stringify({width:n,height:x}));this._width=n,this._height=x}return Object.defineProperty(n.prototype,"width",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"height",{get:function(){return this._height},enumerable:!0,configurable:!0}),n.prototype.reverse=function(){return new n(1/this.width,1/this.height)},n}();function Dm(n,x){return n instanceof Kr&&n.shape.length===x}function Om(n){return Dm(n,2)}function Im(n){return Dm(n,3)}function Tm(n){return Dm(n,4)}function Am(n){return n%1!==0}function Nm(n){return n%2===0}function Rm(n,x){void 0===x&&(x=2);var t=Math.pow(10,x);return Math.floor(n*t)/t}function Mm(n){return n&&n.width&&n.height}function Fm(n,x){var t=n.width,e=n.height,i=x/Math.max(e,t);return new Em(Math.round(t*i),Math.round(e*i))}function Pm(n){return n.reduce(function(n,x){return n.add(x)},new Vm(0,0)).div(new Vm(n.length,n.length))}function Lm(n,x,t){return Array(n).fill(0).map(function(n,e){return x+e*t})}function Bm(n){return!!n&&n!==1/0&&n!==-1/0&&!isNaN(n)||0===n}function $m(n){return Bm(n)&&0<=n&&n<=1}var Vm=function(){function n(n,x){this._x=n,this._y=x}return Object.defineProperty(n.prototype,"x",{get:function(){return this._x},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"y",{get:function(){return this._y},enumerable:!0,configurable:!0}),n.prototype.add=function(x){return new n(this.x+x.x,this.y+x.y)},n.prototype.sub=function(x){return new n(this.x-x.x,this.y-x.y)},n.prototype.mul=function(x){return new n(this.x*x.x,this.y*x.y)},n.prototype.div=function(x){return new n(this.x/x.x,this.y/x.y)},n.prototype.abs=function(){return new n(Math.abs(this.x),Math.abs(this.y))},n.prototype.magnitude=function(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))},n.prototype.floor=function(){return new n(Math.floor(this.x),Math.floor(this.y))},n}(),Wm=function(){function n(x,t){void 0===t&&(t=!0);var e=x||{},i=[e.left,e.top,e.right,e.bottom].every(Bm),r=[e.x,e.y,e.width,e.height].every(Bm);if(!r&&!i)throw new Error("Box.constructor - expected box to be IBoundingBox | IRect, instead have "+JSON.stringify(e));var o=r?[e.x,e.y,e.width,e.height]:[e.left,e.top,e.right-e.left,e.bottom-e.top],s=o[0],h=o[1],u=o[2],a=o[3];n.assertIsValidBox({x:s,y:h,width:u,height:a},"Box.constructor",t),this._x=s,this._y=h,this._width=u,this._height=a}return n.isRect=function(n){return!!n&&[n.x,n.y,n.width,n.height].every(Bm)},n.assertIsValidBox=function(x,t,e){if(void 0===e&&(e=!1),!n.isRect(x))throw new Error(t+" - invalid box: "+JSON.stringify(x)+", expected object with properties x, y, width, height");if(!e&&(x.width<0||x.height<0))throw new Error(t+" - width ("+x.width+") and height ("+x.height+") must be positive numbers")},Object.defineProperty(n.prototype,"x",{get:function(){return this._x},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"y",{get:function(){return this._y},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"width",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"height",{get:function(){return this._height},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"left",{get:function(){return this.x},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"top",{get:function(){return this.y},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"right",{get:function(){return this.x+this.width},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"bottom",{get:function(){return this.y+this.height},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"area",{get:function(){return this.width*this.height},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"topLeft",{get:function(){return new Vm(this.left,this.top)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"topRight",{get:function(){return new Vm(this.right,this.top)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"bottomLeft",{get:function(){return new Vm(this.left,this.bottom)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"bottomRight",{get:function(){return new Vm(this.right,this.bottom)},enumerable:!0,configurable:!0}),n.prototype.round=function(){var x=[this.x,this.y,this.width,this.height].map(function(n){return Math.round(n)}),t=x[0],e=x[1],i=x[2],r=x[3];return new n({x:t,y:e,width:i,height:r})},n.prototype.floor=function(){var x=[this.x,this.y,this.width,this.height].map(function(n){return Math.floor(n)}),t=x[0],e=x[1],i=x[2],r=x[3];return new n({x:t,y:e,width:i,height:r})},n.prototype.toSquare=function(){var x=this,t=x.x,e=x.y,i=x.width,r=x.height,o=Math.abs(i-r);return i<r&&(t-=o/2,i+=o),r<i&&(e-=o/2,r+=o),new n({x:t,y:e,width:i,height:r})},n.prototype.rescale=function(x){var t=Mm(x)?x.width:x,e=Mm(x)?x.height:x;return new n({x:this.x*t,y:this.y*e,width:this.width*t,height:this.height*e})},n.prototype.pad=function(x,t){var e=[this.x-x/2,this.y-t/2,this.width+x,this.height+t],i=e[0],r=e[1],o=e[2],s=e[3];return new n({x:i,y:r,width:o,height:s})},n.prototype.clipAtImageBorders=function(x,t){var e=this,i=e.x,r=e.y,o=e.right,s=e.bottom,h=Math.max(i,0),u=Math.max(r,0),a=o-h,g=s-u,l=Math.min(a,x-h),c=Math.min(g,t-u);return new n({x:h,y:u,width:l,height:c}).floor()},n.prototype.shift=function(x,t){var e=this,i=e.width,r=e.height,o=this.x+x,s=this.y+t;return new n({x:o,y:s,width:i,height:r})},n.prototype.padAtBorders=function(n,x){var t=this.width+1,e=this.height+1,i=1,r=1,o=t,s=e,h=this.left,u=this.top,a=this.right,g=this.bottom;return a>x&&(o=-a+x+t,a=x),g>n&&(s=-g+n+e,g=n),h<1&&(s=2-h,h=1),u<1&&(s=2-u,u=1),{dy:r,edy:s,dx:i,edx:o,y:u,ey:g,x:h,ex:a,w:t,h:e}},n.prototype.calibrate=function(x){return new n({left:this.left+x.left*this.width,top:this.top+x.top*this.height,right:this.right+x.right*this.width,bottom:this.bottom+x.bottom*this.height}).toSquare().round()},n}(),Um=function(n){function x(x,t,e,i,r){return void 0===r&&(r=!1),n.call(this,{left:x,top:t,right:e,bottom:i},r)||this}return km(x,n),x}(Wm),Hm=function(){function n(n,x,t,e,i){this._imageDims=new Em(i.width,i.height),this._score=n,this._classScore=x,this._className=t,this._box=new Wm(e).rescale(this._imageDims)}return Object.defineProperty(n.prototype,"score",{get:function(){return this._score},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"classScore",{get:function(){return this._classScore},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"className",{get:function(){return this._className},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"box",{get:function(){return this._box},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"imageDims",{get:function(){return this._imageDims},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"imageWidth",{get:function(){return this.imageDims.width},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"imageHeight",{get:function(){return this.imageDims.height},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"relativeBox",{get:function(){return new Wm(this._box).rescale(this.imageDims.reverse())},enumerable:!0,configurable:!0}),n.prototype.forSize=function(x,t){return new n(this.score,this.classScore,this.className,this.relativeBox,{width:x,height:t})},n}(),Gm=function(n){function x(x,t,e){return n.call(this,x,x,"",t,e)||this}return km(x,n),x.prototype.forSize=function(t,e){var i=n.prototype.forSize.call(this,t,e),r=i.score,o=i.relativeBox,s=i.imageDims;return new x(r,o,s)},x}(Hm);function Km(n){var x=n.map(function(n){return n.x}),t=n.map(function(n){return n.y}),e=x.reduce(function(n,x){return x<n?x:n},1/0),i=t.reduce(function(n,x){return x<n?x:n},1/0),r=x.reduce(function(n,x){return n<x?x:n},0),o=t.reduce(function(n,x){return n<x?x:n},0);return new Um(e,i,r,o)}function Ym(n,x,t){void 0===t&&(t=!0);var e=Math.max(0,Math.min(n.right,x.right)-Math.max(n.left,x.left)),i=Math.max(0,Math.min(n.bottom,x.bottom)-Math.max(n.top,x.top)),r=e*i;return t?r/(n.area+x.area-r):r/Math.min(n.area,x.area)}function Xm(n,x,t,e){void 0===e&&(e=!0);var i=x.map(function(n,x){return{score:n,boxIndex:x}}).sort(function(n,x){return n.score-x.score}).map(function(n){return n.boxIndex}),r=[],o=function(){var x=i.pop();r.push(x);for(var o=i,s=[],h=0;h<o.length;h++){var u=o[h],a=n[x],g=n[u];s.push(Ym(a,g,e))}i=i.filter(function(n,x){return s[x]<=t})};while(i.length>0)o();return r}function Jm(n,x){return bs(function(){var t=x[0],e=x[1],i=x[2],r=Zs(Sm(n.shape.slice(0,3),[1]),t),o=Zs(Sm(n.shape.slice(0,3),[1]),e),s=Zs(Sm(n.shape.slice(0,3),[1]),i),h=ih([r,o,s],3);return vd(n,h)})}function Qm(n,x){return void 0===x&&(x=!1),bs(function(){var t=n.shape.slice(1),e=t[0],i=t[1];if(e===i)return n;var r=Math.abs(e-i),o=Math.round(r*(x?.5:1)),s=e>i?2:1,h=function(x){var t=n.shape.slice();return t[s]=x,Zs(t,0)},u=h(o),a=r-u.shape[s],g=x&&a?h(a):null,l=[g,n,u].filter(function(n){return!!n}).map(function(n){return n.toFloat()});return ih(l,s)})}function Zm(n){return 1/(1+Math.exp(-n))}var nb,xb=function(n){function x(x,t,e,i,r){return void 0===r&&(r=!1),n.call(this,{x:x,y:t,width:e,height:i},r)||this}return km(x,n),x}(Wm),tb=.5,eb=.43,ib=.45,rb=function(){function n(n,x,t){void 0===t&&(t=new Vm(0,0));var e=x.width,i=x.height;this._imgDims=new Em(e,i),this._shift=t,this._positions=n.map(function(n){return n.mul(new Vm(e,i)).add(t)})}return Object.defineProperty(n.prototype,"shift",{get:function(){return new Vm(this._shift.x,this._shift.y)},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"imageWidth",{get:function(){return this._imgDims.width},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"imageHeight",{get:function(){return this._imgDims.height},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"positions",{get:function(){return this._positions},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"relativePositions",{get:function(){var n=this;return this._positions.map(function(x){return x.sub(n._shift).div(new Vm(n.imageWidth,n.imageHeight))})},enumerable:!0,configurable:!0}),n.prototype.forSize=function(n,x){return new this.constructor(this.relativePositions,{width:n,height:x})},n.prototype.shiftBy=function(n,x){return new this.constructor(this.relativePositions,this._imgDims,new Vm(n,x))},n.prototype.shiftByPoint=function(n){return this.shiftBy(n.x,n.y)},n.prototype.align=function(n,x){if(void 0===x&&(x={}),n){var t=n instanceof Gm?n.box.floor():new Wm(n);return this.shiftBy(t.x,t.y).align(null,x)}var e=Object.assign({},{useDlibAlignment:!1,minBoxPadding:.2},x),i=e.useDlibAlignment,r=e.minBoxPadding;return i?this.alignDlib():this.alignMinBbox(r)},n.prototype.alignDlib=function(){var n=this.getRefPointsForAlignment(),x=n[0],t=n[1],e=n[2],i=function(n){return e.sub(n).magnitude()},r=(i(x)+i(t))/2,o=Math.floor(r/ib),s=Pm(n),h=Math.floor(Math.max(0,s.x-tb*o)),u=Math.floor(Math.max(0,s.y-eb*o));return new xb(h,u,Math.min(o,this.imageWidth+h),Math.min(o,this.imageHeight+u))},n.prototype.alignMinBbox=function(n){var x=Km(this.positions);return x.pad(x.width*n,x.height*n)},n.prototype.getRefPointsForAlignment=function(){throw new Error("getRefPointsForAlignment not implemented by base class")},n}(),ob=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.getRefPointsForAlignment=function(){var n=this.positions;return[n[0],n[1],Pm([n[3],n[4]])]},x}(rb),sb=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.getJawOutline=function(){return this.positions.slice(0,17)},x.prototype.getLeftEyeBrow=function(){return this.positions.slice(17,22)},x.prototype.getRightEyeBrow=function(){return this.positions.slice(22,27)},x.prototype.getNose=function(){return this.positions.slice(27,36)},x.prototype.getLeftEye=function(){return this.positions.slice(36,42)},x.prototype.getRightEye=function(){return this.positions.slice(42,48)},x.prototype.getMouth=function(){return this.positions.slice(48,68)},x.prototype.getRefPointsForAlignment=function(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(Pm)},x}(rb),hb=function(){function n(n,x){this._label=n,this._distance=x}return Object.defineProperty(n.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"distance",{get:function(){return this._distance},enumerable:!0,configurable:!0}),n.prototype.toString=function(n){return void 0===n&&(n=!0),this.label+(n?" ("+Rm(this.distance)+")":"")},n}(),ub=function(n){function x(x,t){var e=n.call(this,x)||this;return e._label=t,e}return km(x,n),x.assertIsValidLabeledBox=function(n,x){if(Wm.assertIsValidBox(n,x),!Bm(n.label))throw new Error(x+" - expected property label ("+n.label+") to be a number")},Object.defineProperty(x.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),x}(Wm),ab=function(){function n(n,x){if("string"!==typeof n)throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(x)||x.some(function(n){return!(n instanceof Float32Array)}))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=n,this._descriptors=x}return Object.defineProperty(n.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"descriptors",{get:function(){return this._descriptors},enumerable:!0,configurable:!0}),n.prototype.toJSON=function(){return{label:this.label,descriptors:this.descriptors.map(function(n){return Array.from(n)})}},n.fromJSON=function(x){var t=x.descriptors.map(function(n){return new Float32Array(n)});return new n(x.label,t)},n}();(function(n){function x(x,t,e,i){var r=n.call(this,x,t)||this;return r._score=e,r._classScore=i,r}km(x,n),x.assertIsValidPredictedBox=function(n,x){if(ub.assertIsValidLabeledBox(n,x),!$m(n.score)||!$m(n.classScore))throw new Error(x+" - expected properties score ("+n.score+") and ("+n.classScore+") to be a number between [0, 1]")},Object.defineProperty(x.prototype,"score",{get:function(){return this._score},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"classScore",{get:function(){return this._classScore},enumerable:!0,configurable:!0})})(ub);function gb(n){return n["detection"]instanceof Gm}function lb(n,x){var t={detection:x};return Object.assign({},n,t)}function cb(){var n=window["fetch"]||function(){throw new Error("fetch - missing fetch implementation for browser environment")},x=function(){throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D:CanvasRenderingContext2D,Image:HTMLImageElement,ImageData:ImageData,Video:HTMLVideoElement,createCanvasElement:function(){return document.createElement("canvas")},createImageElement:function(){return document.createElement("img")},fetch:n,readFile:x}}function db(n){var x="";if(!n)try{n=e(Object(function(){var n=new Error("Cannot find module 'fs'");throw n.code="MODULE_NOT_FOUND",n}()))}catch(i){x=i.toString()}var t=n?function(x){return new Promise(function(t,e){n.readFile(x,function(n,x){return n?e(n):t(x)})})}:function(){throw new Error("readFile - failed to require fs in nodejs environment with error: "+x)};return{readFile:t}}function fb(){var n=e.g["Canvas"]||e.g["HTMLCanvasElement"],x=e.g["Image"]||e.g["HTMLImageElement"],t=function(){if(n)return new n;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},i=function(){if(x)return new x;throw new Error("createImageElement - missing Image implementation for nodejs environment")},r=e.g["fetch"]||function(){throw new Error("fetch - missing fetch implementation for nodejs environment")},o=db();return qm({Canvas:n||function(){function n(){}return n}(),CanvasRenderingContext2D:e.g["CanvasRenderingContext2D"]||function(){function n(){}return n}(),Image:x||function(){function n(){}return n}(),ImageData:e.g["ImageData"]||function(){function n(){}return n}(),Video:e.g["HTMLVideoElement"]||function(){function n(){}return n}(),createCanvasElement:t,createImageElement:i,fetch:r},o)}function pb(){return"object"===typeof window&&"undefined"!==typeof document&&"undefined"!==typeof HTMLImageElement&&"undefined"!==typeof HTMLCanvasElement&&"undefined"!==typeof HTMLVideoElement&&"undefined"!==typeof ImageData&&"undefined"!==typeof CanvasRenderingContext2D}function yb(){return"object"===typeof e.g&&"undefined"!==typeof process&&!!process.version}function mb(){if(!nb)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return nb}function bb(n){nb=n}function zb(){pb()&&bb(cb()),yb()&&bb(fb())}function vb(n){if(nb||zb(),!nb)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");var x=n.Canvas,t=void 0===x?nb.Canvas:x,e=n.Image,i=void 0===e?nb.Image:e;nb.Canvas=t,nb.Image=i,nb.createCanvasElement=n.createCanvasElement||function(){return new t},nb.createImageElement=n.createImageElement||function(){return new i},nb.ImageData=n.ImageData||nb.ImageData,nb.Video=n.Video||nb.Video,nb.fetch=n.fetch||nb.fetch,nb.readFile=n.readFile||nb.readFile}var jb,wb={getEnv:mb,setEnv:bb,initialize:zb,createBrowserEnv:cb,createFileSystem:db,createNodejsEnv:fb,monkeyPatch:vb,isBrowser:pb,isNodejs:yb};function kb(n){return wb.isNodejs()||"string"!==typeof n?n:document.getElementById(n)}function qb(n){var x=wb.getEnv(),t=x.Canvas,e=x.CanvasRenderingContext2D;if(n instanceof e)return n;var i=kb(n);if(!(i instanceof t))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");var r=i.getContext("2d");if(!r)throw new Error("resolveContext2d - canvas 2d context is null");return r}zb(),function(n){n["TOP_LEFT"]="TOP_LEFT",n["TOP_RIGHT"]="TOP_RIGHT",n["BOTTOM_LEFT"]="BOTTOM_LEFT",n["BOTTOM_RIGHT"]="BOTTOM_RIGHT"}(jb||(jb={}));var _b=function(){function n(n){void 0===n&&(n={});var x=n.anchorPosition,t=n.backgroundColor,e=n.fontColor,i=n.fontSize,r=n.fontStyle,o=n.padding;this.anchorPosition=x||jb.TOP_LEFT,this.backgroundColor=t||"rgba(0, 0, 0, 0.5)",this.fontColor=e||"rgba(255, 255, 255, 1)",this.fontSize=i||14,this.fontStyle=r||"Georgia",this.padding=o||4}return n}(),Cb=function(){function n(x,t,e){void 0===e&&(e={}),this.text="string"===typeof x?[x]:x instanceof n?x.text:x,this.anchor=t,this.options=new _b(e)}return n.prototype.measureWidth=function(n){var x=this.options.padding;return this.text.map(function(x){return n.measureText(x).width}).reduce(function(n,x){return n<x?x:n},0)+2*x},n.prototype.measureHeight=function(){var n=this.options,x=n.fontSize,t=n.padding;return this.text.length*x+2*t},n.prototype.getUpperLeft=function(n,x){var t=this.options.anchorPosition,e=t===jb.BOTTOM_RIGHT||t===jb.TOP_RIGHT,i=t===jb.BOTTOM_LEFT||t===jb.BOTTOM_RIGHT,r=this.measureWidth(n),o=this.measureHeight(),s=e?this.anchor.x-r:this.anchor.x,h=i?this.anchor.y-o:this.anchor.y;if(x){var u=x.width,a=x.height,g=Math.max(Math.min(s,u-r),0),l=Math.max(Math.min(h,a-o),0);return{x:g,y:l}}return{x:s,y:h}},n.prototype.draw=function(n){var x=kb(n),t=qb(x),e=this.options,i=e.backgroundColor,r=e.fontColor,o=e.fontSize,s=e.fontStyle,h=e.padding;t.font=o+"px "+s;var u=this.measureWidth(t),a=this.measureHeight();t.fillStyle=i;var g=this.getUpperLeft(t,x);t.fillRect(g.x,g.y,u,a),t.fillStyle=r,this.text.forEach(function(n,x){var e=h+g.x,i=h+g.y+(x+1)*o;t.fillText(n,e,i)})},n}(),Sb=function(){function n(n){void 0===n&&(n={});var x=n.boxColor,t=n.lineWidth,e=n.label,i=n.drawLabelOptions;this.boxColor=x||"rgba(0, 0, 255, 1)",this.lineWidth=t||2,this.label=e;var r={anchorPosition:jb.BOTTOM_LEFT,backgroundColor:this.boxColor};this.drawLabelOptions=new _b(Object.assign({},r,i))}return n}();(function(){function n(n,x){void 0===x&&(x={}),this.box=new Wm(n),this.options=new Sb(x)}n.prototype.draw=function(n){var x=qb(n),t=this.options,e=t.boxColor,i=t.lineWidth,r=this.box,o=r.x,s=r.y,h=r.width,u=r.height;x.strokeStyle=e,x.lineWidth=i,x.strokeRect(o,s,h,u);var a=this.options.label;a&&new Cb([a],{x:o-i/2,y:s},this.options.drawLabelOptions).draw(n)}})();function Eb(n){var x=wb.getEnv(),t=x.Image,e=x.Video;return n instanceof t&&n.complete||n instanceof e&&n.readyState>=3}function Db(n){return new Promise(function(x,t){if(n instanceof wb.getEnv().Canvas||Eb(n))return x();function e(n){n.currentTarget&&(n.currentTarget.removeEventListener("load",e),n.currentTarget.removeEventListener("error",i),x(n))}function i(n){n.currentTarget&&(n.currentTarget.removeEventListener("load",e),n.currentTarget.removeEventListener("error",i),t(n))}n.addEventListener("load",e),n.addEventListener("error",i)})}function Ob(n){var x=wb.getEnv(),t=x.Image,e=x.Video;return n instanceof t?new Em(n.naturalWidth,n.naturalHeight):n instanceof e?new Em(n.videoWidth,n.videoHeight):new Em(n.width,n.height)}function Ib(n){var x=n.width,t=n.height,e=wb.getEnv().createCanvasElement,i=e();return i.width=x,i.height=t,i}function Tb(n,x){var t=wb.getEnv().ImageData;if(!(n instanceof t)&&!Eb(n))throw new Error("createCanvasFromMedia - media has not finished loading yet");var e=x||Ob(n),i=e.width,r=e.height,o=Ib({width:i,height:r});return n instanceof t?qb(o).putImageData(n,0,0):qb(o).drawImage(n,0,0,i,r),o}function Ab(n,x){return _m(this,void 0,void 0,function(){var t,e,i,r,o,s;return Cm(this,function(h){switch(h.label){case 0:return t=x||wb.getEnv().createCanvasElement(),e=n.shape.slice(Tm(n)?1:0),i=e[0],r=e[1],o=e[2],s=bs(function(){return n.as3D(i,r,o).toInt()}),[4,im.toPixels(s,t)];case 1:return h.sent(),s.dispose(),[2,t]}})})}function Nb(n){var x=wb.getEnv(),t=x.Image,e=x.Canvas,i=x.Video;return n instanceof t||n instanceof e||n instanceof i}function Rb(n,x,t){void 0===t&&(t=!1);var e=wb.getEnv(),i=e.Image,r=e.Canvas;if(!(n instanceof i||n instanceof r))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");var o=Ob(n),s=x/Math.max(o.height,o.width),h=s*o.width,u=s*o.height,a=Ib({width:x,height:x}),g=n instanceof r?n:Tb(n),l=Math.abs(h-u)/2,c=t&&h<u?l:0,d=t&&u<h?l:0;return qb(a).drawImage(g,c,d,h,u),a}var Mb=function(){function n(n,x){var t=this;if(void 0===x&&(x=!1),this._imageTensors=[],this._canvases=[],this._treatAsBatchInput=!1,this._inputDimensions=[],!Array.isArray(n))throw new Error("NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have "+n);this._treatAsBatchInput=x,this._batchSize=n.length,n.forEach(function(n,x){if(Im(n))return t._imageTensors[x]=n,void(t._inputDimensions[x]=n.shape);if(Tm(n)){var e=n.shape[0];if(1!==e)throw new Error("NetInput - tf.Tensor4D with batchSize "+e+" passed, but not supported in input array");return t._imageTensors[x]=n,void(t._inputDimensions[x]=n.shape.slice(1))}var i=n instanceof wb.getEnv().Canvas?n:Tb(n);t._canvases[x]=i,t._inputDimensions[x]=[i.height,i.width,3]})}return Object.defineProperty(n.prototype,"imageTensors",{get:function(){return this._imageTensors},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"canvases",{get:function(){return this._canvases},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"isBatchInput",{get:function(){return this.batchSize>1||this._treatAsBatchInput},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"batchSize",{get:function(){return this._batchSize},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"inputDimensions",{get:function(){return this._inputDimensions},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"inputSize",{get:function(){return this._inputSize},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"reshapedInputDimensions",{get:function(){var n=this;return Lm(this.batchSize,0,1).map(function(x,t){return n.getReshapedInputDimensions(t)})},enumerable:!0,configurable:!0}),n.prototype.getInput=function(n){return this.canvases[n]||this.imageTensors[n]},n.prototype.getInputDimensions=function(n){return this._inputDimensions[n]},n.prototype.getInputHeight=function(n){return this._inputDimensions[n][0]},n.prototype.getInputWidth=function(n){return this._inputDimensions[n][1]},n.prototype.getReshapedInputDimensions=function(n){if("number"!==typeof this.inputSize)throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");var x=this.getInputWidth(n),t=this.getInputHeight(n);return Fm({width:x,height:t},this.inputSize)},n.prototype.toBatchTensor=function(n,x){var t=this;return void 0===x&&(x=!0),this._inputSize=n,bs(function(){var e=Lm(t.batchSize,0,1).map(function(e){var i=t.getInput(e);if(i instanceof Kr){var r=Tm(i)?i:i.expandDims();return r=Qm(r,x),r.shape[1]===n&&r.shape[2]===n||(r=Ap.resizeBilinear(r,[n,n])),r.as3D(n,n,3)}if(i instanceof wb.getEnv().Canvas)return im.fromPixels(Rb(i,n,x));throw new Error("toBatchTensor - at batchIdx "+e+", expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have "+i)}),i=Hh(e.map(function(n){return n.toFloat()})).as4D(t.batchSize,n,n,3);return i})},n}();function Fb(n){return _m(this,void 0,void 0,function(){var x,t,e;return Cm(this,function(i){switch(i.label){case 0:if(n instanceof Mb)return[2,n];if(x=Array.isArray(n)?n:[n],!x.length)throw new Error("toNetInput - empty array passed as input");return t=function(x){return Array.isArray(n)?" at input index "+x+":":""},e=x.map(kb),e.forEach(function(n,e){if(!Nb(n)&&!Im(n)&&!Tm(n)){if("string"===typeof x[e])throw new Error("toNetInput -"+t(e)+" string passed, but could not resolve HTMLElement for element id "+x[e]);throw new Error("toNetInput -"+t(e)+" expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id")}if(Tm(n)){var i=n.shape[0];if(1!==i)throw new Error("toNetInput -"+t(e)+" tf.Tensor4D with batchSize "+i+" passed, but not supported in input array")}}),[4,Promise.all(e.map(function(n){return Nb(n)&&Db(n)}))];case 1:return i.sent(),[2,new Mb(e,Array.isArray(n))]}})})}function Pb(n,x){return _m(this,void 0,void 0,function(){var t,e,i,r,o,s,h;return Cm(this,function(u){switch(u.label){case 0:return t=wb.getEnv().Canvas,e=n,n instanceof t?[3,5]:[4,Fb(n)];case 1:if(i=u.sent(),i.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");return r=i.getInput(0),r instanceof t?(o=r,[3,4]):[3,2];case 2:return[4,Ab(r)];case 3:o=u.sent(),u.label=4;case 4:e=o,u.label=5;case 5:return s=qb(e),h=x.map(function(n){return n instanceof Gm?n.forSize(e.width,e.height).box.floor():n}).map(function(n){return n.clipAtImageBorders(e.width,e.height)}),[2,h.map(function(n){var x=n.x,t=n.y,e=n.width,i=n.height,r=Ib({width:e,height:i});return qb(r).putImageData(s.getImageData(x,t,e,i),0,0),r})]}})})}function Lb(n,x){return _m(this,void 0,void 0,function(){return Cm(this,function(t){if(!Im(n)&&!Tm(n))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(Tm(n)&&n.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return[2,bs(function(){var t=n.shape.slice(Tm(n)?1:0),e=t[0],i=t[1],r=t[2],o=x.map(function(n){return n instanceof Gm?n.forSize(i,e).box:n}).map(function(n){return n.clipAtImageBorders(i,e)}),s=o.map(function(x){var t=x.x,o=x.y,s=x.width,h=x.height;return bf(n.as3D(e,i,r),[o,t,0],[h,s,r])});return s})]})})}function Bb(n,x){return _m(this,void 0,void 0,function(){var t,e;return Cm(this,function(i){switch(i.label){case 0:return t=wb.getEnv().fetch,[4,t(n,x)];case 1:if(e=i.sent(),!(e.status<400))throw new Error("failed to fetch: ("+e.status+") "+e.statusText+", from url: "+e.url);return[2,e]}})})}function $b(n){return _m(this,void 0,void 0,function(){return Cm(this,function(x){switch(x.label){case 0:return[4,Bb(n)];case 1:return[2,x.sent().json()]}})})}function Vb(n,x){var t=x+"-weights_manifest.json";if(!n)return{modelBaseUri:"",manifestUri:t};if("/"===n)return{modelBaseUri:"/",manifestUri:"/"+t};var e=n.startsWith("http://")?"http://":n.startsWith("https://")?"https://":"";n=n.replace(e,"");var i=n.split("/").filter(function(n){return n}),r=n.endsWith(".json")?i[i.length-1]:t,o=e+(n.endsWith(".json")?i.slice(0,i.length-1):i).join("/");return o=n.startsWith("/")?"/"+o:o,{modelBaseUri:o,manifestUri:"/"===o?"/"+r:o+"/"+r}}function Wb(n,x){return _m(this,void 0,void 0,function(){var t,e,i,r;return Cm(this,function(o){switch(o.label){case 0:return t=Vb(n,x),e=t.manifestUri,i=t.modelBaseUri,[4,$b(e)];case 1:return r=o.sent(),[2,xm.loadWeights(r,i)]}})})}var Ub=function(){function n(n){this._name=n,this._params=void 0,this._paramMappings=[]}return Object.defineProperty(n.prototype,"params",{get:function(){return this._params},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"paramMappings",{get:function(){return this._paramMappings},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"isLoaded",{get:function(){return!!this.params},enumerable:!0,configurable:!0}),n.prototype.getParamFromPath=function(n){var x=this.traversePropertyPath(n),t=x.obj,e=x.objProp;return t[e]},n.prototype.reassignParamFromPath=function(n,x){var t=this.traversePropertyPath(n),e=t.obj,i=t.objProp;e[i].dispose(),e[i]=x},n.prototype.getParamList=function(){var n=this;return this._paramMappings.map(function(x){var t=x.paramPath;return{path:t,tensor:n.getParamFromPath(t)}})},n.prototype.getTrainableParams=function(){return this.getParamList().filter(function(n){return n.tensor instanceof no})},n.prototype.getFrozenParams=function(){return this.getParamList().filter(function(n){return!(n.tensor instanceof no)})},n.prototype.variable=function(){var n=this;this.getFrozenParams().forEach(function(x){var t=x.path,e=x.tensor;n.reassignParamFromPath(t,e.variable())})},n.prototype.freeze=function(){var n=this;this.getTrainableParams().forEach(function(x){var t=x.path,e=x.tensor,i=Bs(e.dataSync());e.dispose(),n.reassignParamFromPath(t,i)})},n.prototype.dispose=function(n){void 0===n&&(n=!0),this.getParamList().forEach(function(x){if(n&&x.tensor.isDisposed)throw new Error("param tensor has already been disposed for path "+x.path);x.tensor.dispose()}),this._params=void 0},n.prototype.serializeParams=function(){return new Float32Array(this.getParamList().map(function(n){var x=n.tensor;return Array.from(x.dataSync())}).reduce(function(n,x){return n.concat(x)}))},n.prototype.load=function(n){return _m(this,void 0,void 0,function(){return Cm(this,function(x){switch(x.label){case 0:return n instanceof Float32Array?(this.extractWeights(n),[2]):[4,this.loadFromUri(n)];case 1:return x.sent(),[2]}})})},n.prototype.loadFromUri=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:if(n&&"string"!==typeof n)throw new Error(this._name+".loadFromUri - expected model uri");return[4,Wb(n,this.getDefaultModelName())];case 1:return x=t.sent(),this.loadFromWeightMap(x),[2]}})})},n.prototype.loadFromDisk=function(n){return _m(this,void 0,void 0,function(){var x,t,e,i,r,o,s,h,u,a;return Cm(this,function(g){switch(g.label){case 0:if(n&&"string"!==typeof n)throw new Error(this._name+".loadFromDisk - expected model file path");return x=wb.getEnv().readFile,t=Vb(n,this.getDefaultModelName()),e=t.manifestUri,i=t.modelBaseUri,r=function(n){return Promise.all(n.map(function(n){return x(n).then(function(n){return n.buffer})}))},o=xm.weightsLoaderFactory(r),u=(h=JSON).parse,[4,x(e)];case 1:return s=u.apply(h,[g.sent().toString()]),[4,o(s,i)];case 2:return a=g.sent(),this.loadFromWeightMap(a),[2]}})})},n.prototype.loadFromWeightMap=function(n){var x=this.extractParamsFromWeigthMap(n),t=x.paramMappings,e=x.params;this._paramMappings=t,this._params=e},n.prototype.extractWeights=function(n){var x=this.extractParams(n),t=x.paramMappings,e=x.params;this._paramMappings=t,this._params=e},n.prototype.traversePropertyPath=function(n){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");var x=n.split("/").reduce(function(x,t){if(!x.nextObj.hasOwnProperty(t))throw new Error("traversePropertyPath - object does not have property "+t+", for path "+n);return{obj:x.nextObj,objProp:t,nextObj:x.nextObj[t]}},{nextObj:this.params}),t=x.obj,e=x.objProp;if(!t||!e||!(t[e]instanceof Kr))throw new Error("traversePropertyPath - parameter is not a tensor, for path "+n);return{obj:t,objProp:e}},n}();function Hb(n,x,t){return bs(function(){var e=Jd(n,x.depthwise_filter,x.pointwise_filter,t,"same");return e=td(e,x.bias),e})}function Gb(n,x,t){return void 0===t&&(t=!1),bs(function(){var e=Rf(t?td(Wd(n,x.conv0.filters,[2,2],"same"),x.conv0.bias):Hb(n,x.conv0,[2,2])),i=Hb(e,x.conv1,[1,1]),r=Rf(td(e,i)),o=Hb(r,x.conv2,[1,1]);return Rf(td(e,td(i,o)))})}function Kb(n,x,t,e){return void 0===t&&(t=!1),void 0===e&&(e=!0),bs(function(){var i=Rf(t?td(Wd(n,x.conv0.filters,e?[2,2]:[1,1],"same"),x.conv0.bias):Hb(n,x.conv0,e?[2,2]:[1,1])),r=Hb(i,x.conv1,[1,1]),o=Rf(td(i,r)),s=Hb(o,x.conv2,[1,1]),h=Rf(td(i,td(r,s))),u=Hb(h,x.conv3,[1,1]);return Rf(td(i,td(r,td(s,u))))})}function Yb(n,x,t,e){return void 0===t&&(t="same"),void 0===e&&(e=!1),bs(function(){var i=td(Wd(n,x.filters,[1,1],t),x.bias);return e?Rf(i):i})}function Xb(n,x){Object.keys(n).forEach(function(t){x.some(function(n){return n.originalPath===t})||n[t].dispose()})}function Jb(n,x){return function(t,e,i,r){var o=Gs(n(t*e*i*i),[i,i,t,e]),s=Ws(n(e));return x.push({paramPath:r+"/filters"},{paramPath:r+"/bias"}),{filters:o,bias:s}}}function Qb(n,x){return function(t,e,i){var r=Us(n(t*e),[t,e]),o=Ws(n(e));return x.push({paramPath:i+"/weights"},{paramPath:i+"/bias"}),{weights:r,bias:o}}}var Zb=function(){function n(n,x,t){this.depthwise_filter=n,this.pointwise_filter=x,this.bias=t}return n}();function nz(n,x){return function(t,e,i){var r=Gs(n(9*t),[3,3,t,1]),o=Gs(n(t*e),[1,1,t,e]),s=Ws(n(e));return x.push({paramPath:i+"/depthwise_filter"},{paramPath:i+"/pointwise_filter"},{paramPath:i+"/bias"}),new Zb(r,o,s)}}function xz(n){return function(x){var t=n(x+"/depthwise_filter",4),e=n(x+"/pointwise_filter",4),i=n(x+"/bias",1);return new Zb(t,e,i)}}function tz(n,x){return function(t,e,i){var r=n[t];if(!Dm(r,e))throw new Error("expected weightMap["+t+"] to be a Tensor"+e+"D, instead have "+r);return x.push({originalPath:t,paramPath:i||t}),r}}function ez(n){var x=n;function t(n){var t=x.slice(0,n);return x=x.slice(n),t}function e(){return x}return{extractWeights:t,getRemainingWeights:e}}function iz(n,x){var t=Jb(n,x),e=nz(n,x);function i(n,x,i,r){void 0===r&&(r=!1);var o=r?t(n,x,3,i+"/conv0"):e(n,x,i+"/conv0"),s=e(x,x,i+"/conv1"),h=e(x,x,i+"/conv2");return{conv0:o,conv1:s,conv2:h}}function r(n,x,t,r){void 0===r&&(r=!1);var o=i(n,x,t,r),s=o.conv0,h=o.conv1,u=o.conv2,a=e(x,x,t+"/conv3");return{conv0:s,conv1:h,conv2:u,conv3:a}}return{extractDenseBlock3Params:i,extractDenseBlock4Params:r}}function rz(n){var x=[],t=ez(n),e=t.extractWeights,i=t.getRemainingWeights,r=iz(e,x).extractDenseBlock4Params,o=r(3,32,"dense0",!0),s=r(32,64,"dense1"),h=r(64,128,"dense2"),u=r(128,256,"dense3");if(0!==i().length)throw new Error("weights remaing after extract: "+i().length);return{paramMappings:x,params:{dense0:o,dense1:s,dense2:h,dense3:u}}}function oz(n){return function(x){var t=n(x+"/filters",4),e=n(x+"/bias",1);return{filters:t,bias:e}}}function sz(n,x){var t=tz(n,x),e=oz(t),i=xz(t);function r(n,x){void 0===x&&(x=!1);var t=x?e(n+"/conv0"):i(n+"/conv0"),r=i(n+"/conv1"),o=i(n+"/conv2");return{conv0:t,conv1:r,conv2:o}}function o(n,x){void 0===x&&(x=!1);var t=x?e(n+"/conv0"):i(n+"/conv0"),r=i(n+"/conv1"),o=i(n+"/conv2"),s=i(n+"/conv3");return{conv0:t,conv1:r,conv2:o,conv3:s}}return{extractDenseBlock3Params:r,extractDenseBlock4Params:o}}function hz(n){var x=[],t=sz(n,x).extractDenseBlock4Params,e={dense0:t("dense0",!0),dense1:t("dense1"),dense2:t("dense2"),dense3:t("dense3")};return Xb(n,x),{params:e,paramMappings:x}}var uz=function(n){function x(){return n.call(this,"FaceFeatureExtractor")||this}return km(x,n),x.prototype.forwardInput=function(n){var x=this.params;if(!x)throw new Error("FaceFeatureExtractor - load model before inference");return bs(function(){var t=n.toBatchTensor(112,!0),e=[122.782,117.001,104.298],i=Jm(t,e).div(Vs(255)),r=Kb(i,x.dense0,!0);return r=Kb(r,x.dense1),r=Kb(r,x.dense2),r=Kb(r,x.dense3),r=lf(r,[7,7],[2,2],"valid"),r})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.getDefaultModelName=function(){return"face_feature_extractor_model"},x.prototype.extractParamsFromWeigthMap=function(n){return hz(n)},x.prototype.extractParams=function(n){return rz(n)},x}(Ub);function az(n,x){return bs(function(){return td(nf(n,x.weights),x.bias)})}function gz(n,x,t){var e=[],i=ez(n),r=i.extractWeights,o=i.getRemainingWeights,s=Qb(r,e),h=s(x,t,"fc");if(0!==o().length)throw new Error("weights remaing after extract: "+o().length);return{paramMappings:e,params:{fc:h}}}function lz(n){var x=[],t=tz(n,x);function e(n){var x=t(n+"/weights",2),e=t(n+"/bias",1);return{weights:x,bias:e}}var i={fc:e("fc")};return Xb(n,x),{params:i,paramMappings:x}}function cz(n){var x={},t={};return Object.keys(n).forEach(function(e){var i=e.startsWith("fc")?t:x;i[e]=n[e]}),{featureExtractorMap:x,classifierMap:t}}var dz=function(n){function x(x,t){var e=n.call(this,x)||this;return e._faceFeatureExtractor=t,e}return km(x,n),Object.defineProperty(x.prototype,"faceFeatureExtractor",{get:function(){return this._faceFeatureExtractor},enumerable:!0,configurable:!0}),x.prototype.runNet=function(n){var x=this,t=this.params;if(!t)throw new Error(this._name+" - load model before inference");return bs(function(){var e=n instanceof Mb?x.faceFeatureExtractor.forwardInput(n):n;return az(e.as2D(e.shape[0],-1),t.fc)})},x.prototype.dispose=function(x){void 0===x&&(x=!0),this.faceFeatureExtractor.dispose(x),n.prototype.dispose.call(this,x)},x.prototype.loadClassifierParams=function(n){var x=this.extractClassifierParams(n),t=x.params,e=x.paramMappings;this._params=t,this._paramMappings=e},x.prototype.extractClassifierParams=function(n){return gz(n,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())},x.prototype.extractParamsFromWeigthMap=function(n){var x=cz(n),t=x.featureExtractorMap,e=x.classifierMap;return this.faceFeatureExtractor.loadFromWeightMap(t),lz(e)},x.prototype.extractParams=function(n){var x=this.getClassifierChannelsIn(),t=this.getClassifierChannelsOut(),e=t*x+t,i=n.slice(0,n.length-e),r=n.slice(n.length-e);return this.faceFeatureExtractor.extractWeights(i),this.extractClassifierParams(r)},x}(Ub),fz=["neutral","happy","sad","angry","fearful","disgusted","surprised"],pz=function(){function n(n){var x=this;if(7!==n.length)throw new Error("FaceExpressions.constructor - expected probabilities.length to be 7, have: "+n.length);fz.forEach(function(t,e){x[t]=n[e]})}return n.prototype.asSortedArray=function(){var n=this;return fz.map(function(x){return{expression:x,probability:n[x]}}).sort(function(n,x){return x.probability-n.probability})},n}(),yz=function(n){function x(x){return void 0===x&&(x=new uz),n.call(this,"FaceExpressionNet",x)||this}return km(x,n),x.prototype.forwardInput=function(n){var x=this;return bs(function(){return yu(x.runNet(n))})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.predictExpressions=function(n){return _m(this,void 0,void 0,function(){var x,t,e,i,r=this;return Cm(this,function(o){switch(o.label){case 0:return[4,Fb(n)];case 1:return x=o.sent(),[4,this.forwardInput(x)];case 2:return t=o.sent(),[4,Promise.all(Yh(t).map(function(n){return _m(r,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return[4,n.data()];case 1:return x=t.sent(),n.dispose(),[2,x]}})})}))];case 3:return e=o.sent(),t.dispose(),i=e.map(function(n){return new pz(n)}),[2,x.isBatchInput?i:i[0]]}})})},x.prototype.getDefaultModelName=function(){return"face_expression_model"},x.prototype.getClassifierChannelsIn=function(){return 256},x.prototype.getClassifierChannelsOut=function(){return 7},x}(dz);function mz(n,x){var t={expressions:x};return Object.assign({},n,t)}function bz(n){return gb(n)&&n["landmarks"]instanceof rb&&n["unshiftedLandmarks"]instanceof rb&&n["alignedRect"]instanceof Gm}function zz(n,x){var t=n.detection.box,e=x.shiftBy(t.x,t.y),i=e.align(),r=n.detection.imageDims,o=new Gm(n.detection.score,i.rescale(r.reverse()),r),s={landmarks:e,unshiftedLandmarks:x,alignedRect:o};return Object.assign({},n,s)}var vz=function(){function n(n){void 0===n&&(n={});var x=n.drawLines,t=void 0===x||x,e=n.drawPoints,i=void 0===e||e,r=n.lineWidth,o=n.lineColor,s=n.pointSize,h=n.pointColor;this.drawLines=t,this.drawPoints=i,this.lineWidth=r||1,this.pointSize=s||2,this.lineColor=o||"rgba(0, 255, 255, 1)",this.pointColor=h||"rgba(255, 0, 255, 1)"}return n}();(function(){function n(n,x){void 0===x&&(x={}),this.faceLandmarks=n,this.options=new vz(x)}n.prototype.draw=function(n){var x=qb(n),t=this.options,e=t.drawLines,i=t.drawPoints,r=t.lineWidth,o=t.lineColor,s=t.pointSize,h=t.pointColor;if(e&&this.faceLandmarks instanceof sb&&(x.strokeStyle=o,x.lineWidth=r,jm(x,this.faceLandmarks.getJawOutline()),jm(x,this.faceLandmarks.getLeftEyeBrow()),jm(x,this.faceLandmarks.getRightEyeBrow()),jm(x,this.faceLandmarks.getNose()),jm(x,this.faceLandmarks.getLeftEye(),!0),jm(x,this.faceLandmarks.getRightEye(),!0),jm(x,this.faceLandmarks.getMouth(),!0)),i){x.strokeStyle=h,x.fillStyle=h;var u=function(n){x.beginPath(),x.arc(n.x,n.y,s,0,2*Math.PI),x.fill()};this.faceLandmarks.positions.forEach(u)}}})();function jz(n,x){var t=Jb(n,x),e=nz(n,x);function i(n,x,i){var r=e(n,x,i+"/separable_conv0"),o=e(x,x,i+"/separable_conv1"),s=t(n,x,1,i+"/expansion_conv");return{separable_conv0:r,separable_conv1:o,expansion_conv:s}}function r(n,x){var t=e(n,n,x+"/separable_conv0"),i=e(n,n,x+"/separable_conv1"),r=e(n,n,x+"/separable_conv2");return{separable_conv0:t,separable_conv1:i,separable_conv2:r}}return{extractConvParams:t,extractSeparableConvParams:e,extractReductionBlockParams:i,extractMainBlockParams:r}}function wz(n,x){var t=[],e=ez(n),i=e.extractWeights,r=e.getRemainingWeights,o=jz(i,t),s=o.extractConvParams,h=o.extractSeparableConvParams,u=o.extractReductionBlockParams,a=o.extractMainBlockParams,g=s(3,32,3,"entry_flow/conv_in"),l=u(32,64,"entry_flow/reduction_block_0"),c=u(64,128,"entry_flow/reduction_block_1"),d={conv_in:g,reduction_block_0:l,reduction_block_1:c},f={};Lm(x,0,1).forEach(function(n){f["main_block_"+n]=a(128,"middle_flow/main_block_"+n)});var p=u(128,256,"exit_flow/reduction_block"),y=h(256,512,"exit_flow/separable_conv"),m={reduction_block:p,separable_conv:y};if(0!==r().length)throw new Error("weights remaing after extract: "+r().length);return{paramMappings:t,params:{entry_flow:d,middle_flow:f,exit_flow:m}}}function kz(n,x){var t=tz(n,x),e=oz(t),i=xz(t);function r(n){var x=i(n+"/separable_conv0"),t=i(n+"/separable_conv1"),r=e(n+"/expansion_conv");return{separable_conv0:x,separable_conv1:t,expansion_conv:r}}function o(n){var x=i(n+"/separable_conv0"),t=i(n+"/separable_conv1"),e=i(n+"/separable_conv2");return{separable_conv0:x,separable_conv1:t,separable_conv2:e}}return{extractConvParams:e,extractSeparableConvParams:i,extractReductionBlockParams:r,extractMainBlockParams:o}}function qz(n,x){var t=[],e=kz(n,t),i=e.extractConvParams,r=e.extractSeparableConvParams,o=e.extractReductionBlockParams,s=e.extractMainBlockParams,h=i("entry_flow/conv_in"),u=o("entry_flow/reduction_block_0"),a=o("entry_flow/reduction_block_1"),g={conv_in:h,reduction_block_0:u,reduction_block_1:a},l={};Lm(x,0,1).forEach(function(n){l["main_block_"+n]=s("middle_flow/main_block_"+n)});var c=o("exit_flow/reduction_block"),d=r("exit_flow/separable_conv"),f={reduction_block:c,separable_conv:d};return Xb(n,t),{params:{entry_flow:g,middle_flow:l,exit_flow:f},paramMappings:t}}function _z(n,x,t){return td(Wd(n,x.filters,t,"same"),x.bias)}function Cz(n,x,t){void 0===t&&(t=!0);var e=t?Rf(n):n;return e=Hb(e,x.separable_conv0,[1,1]),e=Hb(Rf(e),x.separable_conv1,[1,1]),e=gf(e,[3,3],[2,2],"same"),e=td(e,_z(n,x.expansion_conv,[2,2])),e}function Sz(n,x){var t=Hb(Rf(n),x.separable_conv0,[1,1]);return t=Hb(Rf(t),x.separable_conv1,[1,1]),t=Hb(Rf(t),x.separable_conv2,[1,1]),t=td(t,n),t}var Ez,Dz=function(n){function x(x){var t=n.call(this,"TinyXception")||this;return t._numMainBlocks=x,t}return km(x,n),x.prototype.forwardInput=function(n){var x=this,t=this.params;if(!t)throw new Error("TinyXception - load model before inference");return bs(function(){var e=n.toBatchTensor(112,!0),i=[122.782,117.001,104.298],r=Jm(e,i).div(Vs(256)),o=Rf(_z(r,t.entry_flow.conv_in,[2,2]));return o=Cz(o,t.entry_flow.reduction_block_0,!1),o=Cz(o,t.entry_flow.reduction_block_1),Lm(x._numMainBlocks,0,1).forEach(function(n){o=Sz(o,t.middle_flow["main_block_"+n])}),o=Cz(o,t.exit_flow.reduction_block),o=Rf(Hb(o,t.exit_flow.separable_conv,[1,1])),o})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.getDefaultModelName=function(){return"tiny_xception_model"},x.prototype.extractParamsFromWeigthMap=function(n){return qz(n,this._numMainBlocks)},x.prototype.extractParams=function(n){return wz(n,this._numMainBlocks)},x}(Ub);function Oz(n){var x=[],t=ez(n),e=t.extractWeights,i=t.getRemainingWeights,r=Qb(e,x),o=r(512,1,"fc/age"),s=r(512,2,"fc/gender");if(0!==i().length)throw new Error("weights remaing after extract: "+i().length);return{paramMappings:x,params:{fc:{age:o,gender:s}}}}function Iz(n){var x=[],t=tz(n,x);function e(n){var x=t(n+"/weights",2),e=t(n+"/bias",1);return{weights:x,bias:e}}var i={fc:{age:e("fc/age"),gender:e("fc/gender")}};return Xb(n,x),{params:i,paramMappings:x}}(function(n){n["FEMALE"]="female",n["MALE"]="male"})(Ez||(Ez={}));var Tz=function(n){function x(x){void 0===x&&(x=new Dz(2));var t=n.call(this,"AgeGenderNet")||this;return t._faceFeatureExtractor=x,t}return km(x,n),Object.defineProperty(x.prototype,"faceFeatureExtractor",{get:function(){return this._faceFeatureExtractor},enumerable:!0,configurable:!0}),x.prototype.runNet=function(n){var x=this,t=this.params;if(!t)throw new Error(this._name+" - load model before inference");return bs(function(){var e=n instanceof Mb?x.faceFeatureExtractor.forwardInput(n):n,i=lf(e,[7,7],[2,2],"valid").as2D(e.shape[0],-1),r=az(i,t.fc.age).as1D(),o=az(i,t.fc.gender);return{age:r,gender:o}})},x.prototype.forwardInput=function(n){var x=this;return bs(function(){var t=x.runNet(n),e=t.age,i=t.gender;return{age:e,gender:yu(i)}})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.predictAgeAndGender=function(n){return _m(this,void 0,void 0,function(){var x,t,e,i,r,o,s=this;return Cm(this,function(h){switch(h.label){case 0:return[4,Fb(n)];case 1:return x=h.sent(),[4,this.forwardInput(x)];case 2:return t=h.sent(),e=Yh(t.age),i=Yh(t.gender),r=e.map(function(n,x){return{ageTensor:n,genderTensor:i[x]}}),[4,Promise.all(r.map(function(n){var x=n.ageTensor,t=n.genderTensor;return _m(s,void 0,void 0,function(){var n,e,i,r,o;return Cm(this,function(s){switch(s.label){case 0:return[4,x.data()];case 1:return n=s.sent()[0],[4,t.data()];case 2:return e=s.sent()[0],i=e>.5,r=i?Ez.MALE:Ez.FEMALE,o=i?e:1-e,x.dispose(),t.dispose(),[2,{age:n,gender:r,genderProbability:o}]}})})}))];case 3:return o=h.sent(),t.age.dispose(),t.gender.dispose(),[2,x.isBatchInput?o:o[0]]}})})},x.prototype.getDefaultModelName=function(){return"age_gender_model"},x.prototype.dispose=function(x){void 0===x&&(x=!0),this.faceFeatureExtractor.dispose(x),n.prototype.dispose.call(this,x)},x.prototype.loadClassifierParams=function(n){var x=this.extractClassifierParams(n),t=x.params,e=x.paramMappings;this._params=t,this._paramMappings=e},x.prototype.extractClassifierParams=function(n){return Oz(n)},x.prototype.extractParamsFromWeigthMap=function(n){var x=cz(n),t=x.featureExtractorMap,e=x.classifierMap;return this.faceFeatureExtractor.loadFromWeightMap(t),Iz(e)},x.prototype.extractParams=function(n){var x=1539,t=n.slice(0,n.length-x),e=n.slice(n.length-x);return this.faceFeatureExtractor.extractWeights(t),this.extractClassifierParams(e)},x}(Ub),Az=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.postProcess=function(n,x,t){var e=t.map(function(n){var t=n.width,e=n.height,i=x/Math.max(e,t);return{width:t*i,height:e*i}}),i=e.length;return bs(function(){var t=function(n,x){return Hh([Zs([68],n),Zs([68],x)],1).as2D(1,136).as1D()},r=function(n,x){var t=e[n],i=t.width,r=t.height;return x(i,r)?Math.abs(i-r)/2:0},o=function(n){return r(n,function(n,x){return n<x})},s=function(n){return r(n,function(n,x){return x<n})},h=n.mul(Zs([i,136],x)).sub(Hh(Array.from(Array(i),function(n,x){return t(o(x),s(x))}))).div(Hh(Array.from(Array(i),function(n,x){return t(e[x].width,e[x].height)})));return h})},x.prototype.forwardInput=function(n){var x=this;return bs(function(){var t=x.runNet(n);return x.postProcess(t,n.inputSize,n.inputDimensions.map(function(n){var x=n[0],t=n[1];return{height:x,width:t}}))})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.detectLandmarks=function(n){return _m(this,void 0,void 0,function(){var x,t,e,i=this;return Cm(this,function(r){switch(r.label){case 0:return[4,Fb(n)];case 1:return x=r.sent(),t=bs(function(){return Yh(i.forwardInput(x))}),[4,Promise.all(t.map(function(n,t){return _m(i,void 0,void 0,function(){var e,i,r,o,s;return Cm(this,function(h){switch(h.label){case 0:return r=(i=Array).from,[4,n.data()];case 1:return e=r.apply(i,[h.sent()]),o=e.filter(function(n,x){return Nm(x)}),s=e.filter(function(n,x){return!Nm(x)}),[2,new sb(Array(68).fill(0).map(function(n,x){return new Vm(o[x],s[x])}),{height:x.getInputHeight(t),width:x.getInputWidth(t)})]}})})}))];case 2:return e=r.sent(),t.forEach(function(n){return n.dispose()}),[2,x.isBatchInput?e:e[0]]}})})},x.prototype.getClassifierChannelsOut=function(){return 136},x}(dz),Nz=function(n){function x(x){return void 0===x&&(x=new uz),n.call(this,"FaceLandmark68Net",x)||this}return km(x,n),x.prototype.getDefaultModelName=function(){return"face_landmark_68_model"},x.prototype.getClassifierChannelsIn=function(){return 256},x}(Az);function Rz(n){var x=[],t=sz(n,x).extractDenseBlock3Params,e={dense0:t("dense0",!0),dense1:t("dense1"),dense2:t("dense2")};return Xb(n,x),{params:e,paramMappings:x}}function Mz(n){var x=[],t=ez(n),e=t.extractWeights,i=t.getRemainingWeights,r=iz(e,x).extractDenseBlock3Params,o=r(3,32,"dense0",!0),s=r(32,64,"dense1"),h=r(64,128,"dense2");if(0!==i().length)throw new Error("weights remaing after extract: "+i().length);return{paramMappings:x,params:{dense0:o,dense1:s,dense2:h}}}var Fz=function(n){function x(){return n.call(this,"TinyFaceFeatureExtractor")||this}return km(x,n),x.prototype.forwardInput=function(n){var x=this.params;if(!x)throw new Error("TinyFaceFeatureExtractor - load model before inference");return bs(function(){var t=n.toBatchTensor(112,!0),e=[122.782,117.001,104.298],i=Jm(t,e).div(Vs(255)),r=Gb(i,x.dense0,!0);return r=Gb(r,x.dense1),r=Gb(r,x.dense2),r=lf(r,[14,14],[2,2],"valid"),r})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.getDefaultModelName=function(){return"face_feature_extractor_tiny_model"},x.prototype.extractParamsFromWeigthMap=function(n){return Rz(n)},x.prototype.extractParams=function(n){return Mz(n)},x}(Ub),Pz=function(n){function x(x){return void 0===x&&(x=new Fz),n.call(this,"FaceLandmark68TinyNet",x)||this}return km(x,n),x.prototype.getDefaultModelName=function(){return"face_landmark_68_tiny_model"},x.prototype.getClassifierChannelsIn=function(){return 128},x}(Az);(function(n){function x(){return null!==n&&n.apply(this,arguments)||this}km(x,n)})(Nz);function Lz(n,x){return td(pd(n,x.weights),x.biases)}function Bz(n,x,t,e,i){void 0===i&&(i="same");var r=x.conv,o=r.filters,s=r.bias,h=Wd(n,o,t,i);return h=td(h,s),h=Lz(h,x.scale),e?Rf(h):h}function $z(n,x){return Bz(n,x,[1,1],!0)}function Vz(n,x){return Bz(n,x,[1,1],!1)}function Wz(n,x){return Bz(n,x,[2,2],!0,"valid")}function Uz(n,x){function t(x,t,e){var i=n(x),r=i.length/(t*e*e);if(Am(r))throw new Error("depth has to be an integer: "+r+", weights.length: "+i.length+", numFilters: "+t+", filterSize: "+e);return bs(function(){return Pf(Gs(i,[t,r,e,e]),[2,3,1,0])})}function e(e,i,r,o){var s=t(e,i,r),h=Ws(n(i));return x.push({paramPath:o+"/filters"},{paramPath:o+"/bias"}),{filters:s,bias:h}}function i(t,e){var i=Ws(n(t)),r=Ws(n(t));return x.push({paramPath:e+"/weights"},{paramPath:e+"/biases"}),{weights:i,biases:r}}function r(n,x,t,r){var o=e(n,x,t,r+"/conv"),s=i(x,r+"/scale");return{conv:o,scale:s}}function o(n,x,t,e,i){void 0===i&&(i=!1);var o=r((i?.5:1)*n,x,t,e+"/conv1"),s=r(n,x,t,e+"/conv2");return{conv1:o,conv2:s}}return{extractConvLayerParams:r,extractResidualLayerParams:o}}function Hz(n){var x=ez(n),t=x.extractWeights,e=x.getRemainingWeights,i=[],r=Uz(t,i),o=r.extractConvLayerParams,s=r.extractResidualLayerParams,h=o(4704,32,7,"conv32_down"),u=s(9216,32,3,"conv32_1"),a=s(9216,32,3,"conv32_2"),g=s(9216,32,3,"conv32_3"),l=s(36864,64,3,"conv64_down",!0),c=s(36864,64,3,"conv64_1"),d=s(36864,64,3,"conv64_2"),f=s(36864,64,3,"conv64_3"),p=s(147456,128,3,"conv128_down",!0),y=s(147456,128,3,"conv128_1"),m=s(147456,128,3,"conv128_2"),b=s(589824,256,3,"conv256_down",!0),z=s(589824,256,3,"conv256_1"),v=s(589824,256,3,"conv256_2"),j=s(589824,256,3,"conv256_down_out"),w=bs(function(){return Pf(Us(t(32768),[128,256]),[1,0])});if(i.push({paramPath:"fc"}),0!==e().length)throw new Error("weights remaing after extract: "+e().length);var k={conv32_down:h,conv32_1:u,conv32_2:a,conv32_3:g,conv64_down:l,conv64_1:c,conv64_2:d,conv64_3:f,conv128_down:p,conv128_1:y,conv128_2:m,conv256_down:b,conv256_1:z,conv256_2:v,conv256_down_out:j,fc:w};return{params:k,paramMappings:i}}function Gz(n,x){var t=tz(n,x);function e(n){var x=t(n+"/scale/weights",1),e=t(n+"/scale/biases",1);return{weights:x,biases:e}}function i(n){var x=t(n+"/conv/filters",4),i=t(n+"/conv/bias",1),r=e(n);return{conv:{filters:x,bias:i},scale:r}}function r(n){return{conv1:i(n+"/conv1"),conv2:i(n+"/conv2")}}return{extractConvLayerParams:i,extractResidualLayerParams:r}}function Kz(n){var x=[],t=Gz(n,x),e=t.extractConvLayerParams,i=t.extractResidualLayerParams,r=e("conv32_down"),o=i("conv32_1"),s=i("conv32_2"),h=i("conv32_3"),u=i("conv64_down"),a=i("conv64_1"),g=i("conv64_2"),l=i("conv64_3"),c=i("conv128_down"),d=i("conv128_1"),f=i("conv128_2"),p=i("conv256_down"),y=i("conv256_1"),m=i("conv256_2"),b=i("conv256_down_out"),z=n["fc"];if(x.push({originalPath:"fc",paramPath:"fc"}),!Om(z))throw new Error("expected weightMap[fc] to be a Tensor2D, instead have "+z);var v={conv32_down:r,conv32_1:o,conv32_2:s,conv32_3:h,conv64_down:u,conv64_1:a,conv64_2:g,conv64_3:l,conv128_down:c,conv128_1:d,conv128_2:f,conv256_down:p,conv256_1:y,conv256_2:m,conv256_down_out:b,fc:z};return Xb(n,x),{params:v,paramMappings:x}}function Yz(n,x){var t=$z(n,x.conv1);return t=Vz(t,x.conv2),t=td(t,n),t=Rf(t),t}function Xz(n,x){var t=Wz(n,x.conv1);t=Vz(t,x.conv2);var e=lf(n,2,2,"valid"),i=Qs(e.shape),r=e.shape[3]!==t.shape[3],o=e.shape[1]!==t.shape[1]||e.shape[2]!==t.shape[2];if(o){var s=Sm(t.shape);s[1]=1;var h=Qs(s);t=ih([t,h],1);var u=Sm(t.shape);u[2]=1;var a=Qs(u);t=ih([t,a],2)}return e=r?ih([e,i],3):e,t=td(e,t),t=Rf(t),t}var Jz=function(n){function x(){return n.call(this,"FaceRecognitionNet")||this}return km(x,n),x.prototype.forwardInput=function(n){var x=this.params;if(!x)throw new Error("FaceRecognitionNet - load model before inference");return bs(function(){var t=n.toBatchTensor(150,!0).toFloat(),e=[122.782,117.001,104.298],i=Jm(t,e).div(Vs(256)),r=Wz(i,x.conv32_down);r=gf(r,3,2,"valid"),r=Yz(r,x.conv32_1),r=Yz(r,x.conv32_2),r=Yz(r,x.conv32_3),r=Xz(r,x.conv64_down),r=Yz(r,x.conv64_1),r=Yz(r,x.conv64_2),r=Yz(r,x.conv64_3),r=Xz(r,x.conv128_down),r=Yz(r,x.conv128_1),r=Yz(r,x.conv128_2),r=Xz(r,x.conv256_down),r=Yz(r,x.conv256_1),r=Yz(r,x.conv256_2),r=Xz(r,x.conv256_down_out);var o=r.mean([1,2]),s=nf(o,x.fc);return s})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.computeFaceDescriptor=function(n){return _m(this,void 0,void 0,function(){var x,t,e,i=this;return Cm(this,function(r){switch(r.label){case 0:return[4,Fb(n)];case 1:return x=r.sent(),t=bs(function(){return Yh(i.forwardInput(x))}),[4,Promise.all(t.map(function(n){return n.data()}))];case 2:return e=r.sent(),t.forEach(function(n){return n.dispose()}),[2,x.isBatchInput?e:e[0]]}})})},x.prototype.getDefaultModelName=function(){return"face_recognition_model"},x.prototype.extractParamsFromWeigthMap=function(n){return Kz(n)},x.prototype.extractParams=function(n){return Hz(n)},x}(Ub);function Qz(n,x,t){var e={gender:x,genderProbability:t};return Object.assign({},n,e)}var Zz=function(){function n(n){var x=void 0===n?{}:n,t=x.minFaceSize,e=x.scaleFactor,i=x.maxNumScales,r=x.scoreThresholds,o=x.scaleSteps;if(this._name="MtcnnOptions",this._minFaceSize=t||20,this._scaleFactor=e||.709,this._maxNumScales=i||10,this._scoreThresholds=r||[.6,.7,.7],this._scaleSteps=o,"number"!==typeof this._minFaceSize||this._minFaceSize<0)throw new Error(this._name+" - expected minFaceSize to be a number > 0");if("number"!==typeof this._scaleFactor||this._scaleFactor<=0||this._scaleFactor>=1)throw new Error(this._name+" - expected scaleFactor to be a number between 0 and 1");if("number"!==typeof this._maxNumScales||this._maxNumScales<0)throw new Error(this._name+" - expected maxNumScales to be a number > 0");if(!Array.isArray(this._scoreThresholds)||3!==this._scoreThresholds.length||this._scoreThresholds.some(function(n){return"number"!==typeof n}))throw new Error(this._name+" - expected scoreThresholds to be an array of numbers of length 3");if(this._scaleSteps&&(!Array.isArray(this._scaleSteps)||this._scaleSteps.some(function(n){return"number"!==typeof n})))throw new Error(this._name+" - expected scaleSteps to be an array of numbers")}return Object.defineProperty(n.prototype,"minFaceSize",{get:function(){return this._minFaceSize},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"scaleFactor",{get:function(){return this._scaleFactor},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"maxNumScales",{get:function(){return this._maxNumScales},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"scoreThresholds",{get:function(){return this._scoreThresholds},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"scaleSteps",{get:function(){return this._scaleSteps},enumerable:!0,configurable:!0}),n}();function nv(n,x){function t(t,e){var i=Gs(n(9*t),[3,3,t,1]),r=Ws(n(t)),o=Ws(n(t)),s=Ws(n(t)),h=Ws(n(t));return x.push({paramPath:e+"/filters"},{paramPath:e+"/batch_norm_scale"},{paramPath:e+"/batch_norm_offset"},{paramPath:e+"/batch_norm_mean"},{paramPath:e+"/batch_norm_variance"}),{filters:i,batch_norm_scale:r,batch_norm_offset:o,batch_norm_mean:s,batch_norm_variance:h}}function e(t,e,i,r,o){var s=Gs(n(t*e*i*i),[i,i,t,e]),h=Ws(n(e));return x.push({paramPath:r+"/filters"},{paramPath:r+"/"+(o?"batch_norm_offset":"bias")}),{filters:s,bias:h}}function i(n,x,t,i){var r=e(n,x,t,i,!0),o=r.filters,s=r.bias;return{filters:o,batch_norm_offset:s}}function r(n,x,e){var r=t(n,e+"/depthwise_conv"),o=i(n,x,1,e+"/pointwise_conv");return{depthwise_conv:r,pointwise_conv:o}}function o(){var n=i(3,32,3,"mobilenetv1/conv_0"),x=r(32,64,"mobilenetv1/conv_1"),t=r(64,128,"mobilenetv1/conv_2"),e=r(128,128,"mobilenetv1/conv_3"),o=r(128,256,"mobilenetv1/conv_4"),s=r(256,256,"mobilenetv1/conv_5"),h=r(256,512,"mobilenetv1/conv_6"),u=r(512,512,"mobilenetv1/conv_7"),a=r(512,512,"mobilenetv1/conv_8"),g=r(512,512,"mobilenetv1/conv_9"),l=r(512,512,"mobilenetv1/conv_10"),c=r(512,512,"mobilenetv1/conv_11"),d=r(512,1024,"mobilenetv1/conv_12"),f=r(1024,1024,"mobilenetv1/conv_13");return{conv_0:n,conv_1:x,conv_2:t,conv_3:e,conv_4:o,conv_5:s,conv_6:h,conv_7:u,conv_8:a,conv_9:g,conv_10:l,conv_11:c,conv_12:d,conv_13:f}}function s(){var n=i(1024,256,1,"prediction_layer/conv_0"),x=i(256,512,3,"prediction_layer/conv_1"),t=i(512,128,1,"prediction_layer/conv_2"),r=i(128,256,3,"prediction_layer/conv_3"),o=i(256,128,1,"prediction_layer/conv_4"),s=i(128,256,3,"prediction_layer/conv_5"),h=i(256,64,1,"prediction_layer/conv_6"),u=i(64,128,3,"prediction_layer/conv_7"),a=e(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),g=e(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),l=e(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),c=e(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),d=e(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),f=e(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),p=e(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),y=e(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),m=e(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),b=e(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),z=e(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),v=e(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),j={box_encoding_predictor:a,class_predictor:g},w={box_encoding_predictor:l,class_predictor:c},k={box_encoding_predictor:d,class_predictor:f},q={box_encoding_predictor:p,class_predictor:y},_={box_encoding_predictor:m,class_predictor:b},C={box_encoding_predictor:z,class_predictor:v};return{conv_0:n,conv_1:x,conv_2:t,conv_3:r,conv_4:o,conv_5:s,conv_6:h,conv_7:u,box_predictor_0:j,box_predictor_1:w,box_predictor_2:k,box_predictor_3:q,box_predictor_4:_,box_predictor_5:C}}return{extractMobilenetV1Params:o,extractPredictionLayerParams:s}}function xv(n){var x=[],t=ez(n),e=t.extractWeights,i=t.getRemainingWeights,r=nv(e,x),o=r.extractMobilenetV1Params,s=r.extractPredictionLayerParams,h=o(),u=s(),a=Hs(e(20472),[1,5118,4]),g={extra_dim:a};if(x.push({paramPath:"output_layer/extra_dim"}),0!==i().length)throw new Error("weights remaing after extract: "+i().length);return{params:{mobilenetv1:h,prediction_layer:u,output_layer:g},paramMappings:x}}function tv(n,x){var t=tz(n,x);function e(n,x,e){var i=t(n+"/Conv2d_"+x+"_pointwise/weights",4,e+"/filters"),r=t(n+"/Conv2d_"+x+"_pointwise/convolution_bn_offset",1,e+"/batch_norm_offset");return{filters:i,batch_norm_offset:r}}function i(n){var x="mobilenetv1/conv_"+n,i="MobilenetV1/Conv2d_"+n+"_depthwise",r=x+"/depthwise_conv",o=x+"/pointwise_conv",s=t(i+"/depthwise_weights",4,r+"/filters"),h=t(i+"/BatchNorm/gamma",1,r+"/batch_norm_scale"),u=t(i+"/BatchNorm/beta",1,r+"/batch_norm_offset"),a=t(i+"/BatchNorm/moving_mean",1,r+"/batch_norm_mean"),g=t(i+"/BatchNorm/moving_variance",1,r+"/batch_norm_variance");return{depthwise_conv:{filters:s,batch_norm_scale:h,batch_norm_offset:u,batch_norm_mean:a,batch_norm_variance:g},pointwise_conv:e("MobilenetV1",n,o)}}function r(){return{conv_0:e("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:i(1),conv_2:i(2),conv_3:i(3),conv_4:i(4),conv_5:i(5),conv_6:i(6),conv_7:i(7),conv_8:i(8),conv_9:i(9),conv_10:i(10),conv_11:i(11),conv_12:i(12),conv_13:i(13)}}function o(n,x){var e=t(n+"/weights",4,x+"/filters"),i=t(n+"/biases",1,x+"/bias");return{filters:e,bias:i}}function s(n){var x=o("Prediction/BoxPredictor_"+n+"/BoxEncodingPredictor","prediction_layer/box_predictor_"+n+"/box_encoding_predictor"),t=o("Prediction/BoxPredictor_"+n+"/ClassPredictor","prediction_layer/box_predictor_"+n+"/class_predictor");return{box_encoding_predictor:x,class_predictor:t}}function h(){return{conv_0:e("Prediction",0,"prediction_layer/conv_0"),conv_1:e("Prediction",1,"prediction_layer/conv_1"),conv_2:e("Prediction",2,"prediction_layer/conv_2"),conv_3:e("Prediction",3,"prediction_layer/conv_3"),conv_4:e("Prediction",4,"prediction_layer/conv_4"),conv_5:e("Prediction",5,"prediction_layer/conv_5"),conv_6:e("Prediction",6,"prediction_layer/conv_6"),conv_7:e("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:s(0),box_predictor_1:s(1),box_predictor_2:s(2),box_predictor_3:s(3),box_predictor_4:s(4),box_predictor_5:s(5)}}return{extractMobilenetV1Params:r,extractPredictionLayerParams:h}}function ev(n){var x=[],t=tv(n,x),e=t.extractMobilenetV1Params,i=t.extractPredictionLayerParams,r=n["Output/extra_dim"];if(x.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!Im(r))throw new Error("expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have "+r);var o={mobilenetv1:e(),prediction_layer:i(),output_layer:{extra_dim:r}};return Xb(n,x),{params:o,paramMappings:x}}function iv(n,x,t){return bs(function(){var e=Wd(n,x.filters,t,"same");return e=td(e,x.batch_norm_offset),ac(e,0,6)})}var rv=.0010000000474974513;function ov(n,x,t){return bs(function(){var e=Kd(n,x.filters,t,"same");return e=Hc(e,x.batch_norm_mean,x.batch_norm_variance,x.batch_norm_offset,x.batch_norm_scale,rv),ac(e,0,6)})}function sv(n){return[2,4,6,12].some(function(x){return x===n})?[2,2]:[1,1]}function hv(n,x){return bs(function(){var t=null,e=iv(n,x.conv_0,[2,2]),i=[x.conv_1,x.conv_2,x.conv_3,x.conv_4,x.conv_5,x.conv_6,x.conv_7,x.conv_8,x.conv_9,x.conv_10,x.conv_11,x.conv_12,x.conv_13];if(i.forEach(function(n,x){var i=x+1,r=sv(i);e=ov(e,n.depthwise_conv,r),e=iv(e,n.pointwise_conv,[1,1]),11===i&&(t=e)}),null===t)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out:e,conv11:t}})}function uv(n,x,t,e,i){var r=n.shape[0],o=Math.min(t,r),s=x.map(function(n,x){return{score:n,boxIndex:x}}).filter(function(n){return n.score>i}).sort(function(n,x){return x.score-n.score}),h=function(n){return n<=e?1:0},u=[];return s.forEach(function(x){if(!(u.length>=o)){for(var t=x.score,e=u.length-1;e>=0;--e){var r=av(n,x.boxIndex,u[e]);if(0!==r&&(x.score*=h(r),x.score<=i))break}t===x.score&&u.push(x.boxIndex)}}),u}function av(n,x,t){var e=n.arraySync(),i=Math.min(e[x][0],e[x][2]),r=Math.min(e[x][1],e[x][3]),o=Math.max(e[x][0],e[x][2]),s=Math.max(e[x][1],e[x][3]),h=Math.min(e[t][0],e[t][2]),u=Math.min(e[t][1],e[t][3]),a=Math.max(e[t][0],e[t][2]),g=Math.max(e[t][1],e[t][3]),l=(o-i)*(s-r),c=(a-h)*(g-u);if(l<=0||c<=0)return 0;var d=Math.max(i,h),f=Math.max(r,u),p=Math.min(o,a),y=Math.min(s,g),m=Math.max(p-d,0)*Math.max(y-f,0);return m/(l+c-m)}function gv(n){var x=Yh(Pf(n,[1,0])),t=[vd(x[2],x[0]),vd(x[3],x[1])],e=[td(x[0],od(t[0],Vs(2))),td(x[1],od(t[1],Vs(2)))];return{sizes:t,centers:e}}function lv(n,x){var t=gv(n),e=t.sizes,i=t.centers,r=Yh(Pf(x,[1,0])),o=od(pd(dc(od(r[2],Vs(5))),e[0]),Vs(2)),s=td(pd(od(r[0],Vs(10)),e[0]),i[0]),h=od(pd(dc(od(r[3],Vs(5))),e[1]),Vs(2)),u=td(pd(od(r[1],Vs(10)),e[1]),i[1]);return Pf(Hh([vd(s,o),vd(u,h),td(s,o),td(u,h)]),[1,0])}function cv(n,x,t){return bs(function(){var e=n.shape[0],i=lv(Vh(Gh(t.extra_dim,[e,1,1]),[-1,4]),Vh(n,[-1,4]));i=Vh(i,[e,i.shape[0]/e,4]);var r=kc(pf(x,[0,0,1],[-1,-1,-1])),o=pf(r,[0,0,0],[-1,-1,1]);o=Vh(o,[e,o.shape[1]]);var s=Yh(i),h=Yh(o);return{boxes:s,scores:h}})}function dv(n,x){return bs(function(){var t=n.shape[0],e=Vh(Yb(n,x.box_encoding_predictor),[t,-1,1,4]),i=Vh(Yb(n,x.class_predictor),[t,-1,3]);return{boxPredictionEncoding:e,classPrediction:i}})}function fv(n,x,t){return bs(function(){var e=iv(n,t.conv_0,[1,1]),i=iv(e,t.conv_1,[2,2]),r=iv(i,t.conv_2,[1,1]),o=iv(r,t.conv_3,[2,2]),s=iv(o,t.conv_4,[1,1]),h=iv(s,t.conv_5,[2,2]),u=iv(h,t.conv_6,[1,1]),a=iv(u,t.conv_7,[2,2]),g=dv(x,t.box_predictor_0),l=dv(n,t.box_predictor_1),c=dv(i,t.box_predictor_2),d=dv(o,t.box_predictor_3),f=dv(h,t.box_predictor_4),p=dv(a,t.box_predictor_5),y=ih([g.boxPredictionEncoding,l.boxPredictionEncoding,c.boxPredictionEncoding,d.boxPredictionEncoding,f.boxPredictionEncoding,p.boxPredictionEncoding],1),m=ih([g.classPrediction,l.classPrediction,c.classPrediction,d.classPrediction,f.classPrediction,p.classPrediction],1);return{boxPredictions:y,classPredictions:m}})}var pv=function(){function n(n){var x=void 0===n?{}:n,t=x.minConfidence,e=x.maxResults;if(this._name="SsdMobilenetv1Options",this._minConfidence=t||.5,this._maxResults=e||100,"number"!==typeof this._minConfidence||this._minConfidence<=0||this._minConfidence>=1)throw new Error(this._name+" - expected minConfidence to be a number between 0 and 1");if("number"!==typeof this._maxResults)throw new Error(this._name+" - expected maxResults to be a number")}return Object.defineProperty(n.prototype,"minConfidence",{get:function(){return this._minConfidence},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"maxResults",{get:function(){return this._maxResults},enumerable:!0,configurable:!0}),n}(),yv=function(n){function x(){return n.call(this,"SsdMobilenetv1")||this}return km(x,n),x.prototype.forwardInput=function(n){var x=this.params;if(!x)throw new Error("SsdMobilenetv1 - load model before inference");return bs(function(){var t=n.toBatchTensor(512,!1).toFloat(),e=vd(pd(t,Vs(.007843137718737125)),Vs(1)),i=hv(e,x.mobilenetv1),r=fv(i.out,i.conv11,x.prediction_layer),o=r.boxPredictions,s=r.classPredictions;return cv(o,s,x.output_layer)})},x.prototype.forward=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=this.forwardInput,[4,Fb(n)];case 1:return[2,x.apply(this,[t.sent()])]}})})},x.prototype.locateFaces=function(n,x){return void 0===x&&(x={}),_m(this,void 0,void 0,function(){var t,e,i,r,o,s,h,u,a,g,l,c,d,f,p,y,m,b,z,v,j;return Cm(this,function(w){switch(w.label){case 0:return t=new pv(x),e=t.maxResults,i=t.minConfidence,[4,Fb(n)];case 1:for(r=w.sent(),o=this.forwardInput(r),s=o.boxes,h=o.scores,u=s[0],a=h[0],g=1;g<s.length;g++)s[g].dispose(),h[g].dispose();return d=(c=Array).from,[4,a.data()];case 2:return l=d.apply(c,[w.sent()]),f=.5,p=uv(u,l,e,f,i),y=r.getReshapedInputDimensions(0),m=r.inputSize,b=m/y.width,z=m/y.height,v=u.arraySync(),j=p.map(function(n){var x=[Math.max(0,v[n][0]),Math.min(1,v[n][2])].map(function(n){return n*z}),t=x[0],e=x[1],i=[Math.max(0,v[n][1]),Math.min(1,v[n][3])].map(function(n){return n*b}),o=i[0],s=i[1];return new Gm(l[n],new xb(o,t,s-o,e-t),{height:r.getInputHeight(0),width:r.getInputWidth(0)})}),u.dispose(),a.dispose(),[2,j]}})})},x.prototype.getDefaultModelName=function(){return"ssd_mobilenetv1_model"},x.prototype.extractParamsFromWeigthMap=function(n){return ev(n)},x.prototype.extractParams=function(n){return xv(n)},x}(Ub);(function(n){function x(){return null!==n&&n.apply(this,arguments)||this}km(x,n)})(yv);var mv,bv=.4,zv=[new Vm(.738768,.874946),new Vm(2.42204,2.65704),new Vm(4.30971,7.04493),new Vm(10.246,4.59428),new Vm(12.6868,11.8741)],vv=[new Vm(1.603231,2.094468),new Vm(6.041143,7.080126),new Vm(2.882459,3.518061),new Vm(4.266906,5.178857),new Vm(9.041765,10.66308)],jv=[117.001,114.697,97.404],wv="tiny_yolov2_model",kv="tiny_yolov2_separable_conv_model",qv=function(n){return"number"===typeof n};function _v(n){if(!n)throw new Error("invalid config: "+n);if("boolean"!==typeof n.withSeparableConvs)throw new Error("config.withSeparableConvs has to be a boolean, have: "+n.withSeparableConvs);if(!qv(n.iouThreshold)||n.iouThreshold<0||n.iouThreshold>1)throw new Error("config.iouThreshold has to be a number between [0, 1], have: "+n.iouThreshold);if(!Array.isArray(n.classes)||!n.classes.length||!n.classes.every(function(n){return"string"===typeof n}))throw new Error("config.classes has to be an array class names: string[], have: "+JSON.stringify(n.classes));if(!Array.isArray(n.anchors)||!n.anchors.length||!n.anchors.map(function(n){return n||{}}).every(function(n){return qv(n.x)&&qv(n.y)}))throw new Error("config.anchors has to be an array of { x: number, y: number }, have: "+JSON.stringify(n.anchors));if(n.meanRgb&&(!Array.isArray(n.meanRgb)||3!==n.meanRgb.length||!n.meanRgb.every(qv)))throw new Error("config.meanRgb has to be an array of shape [number, number, number], have: "+JSON.stringify(n.meanRgb))}function Cv(n){return bs(function(){var x=pd(n,Vs(.10000000149011612));return td(Rf(vd(n,x)),x)})}function Sv(n,x){return bs(function(){var t=Ah(n,[[0,0],[1,1],[1,1],[0,0]]);return t=Wd(t,x.conv.filters,[1,1],"valid"),t=vd(t,x.bn.sub),t=pd(t,x.bn.truediv),t=td(t,x.conv.bias),Cv(t)})}function Ev(n,x){return bs(function(){var t=Ah(n,[[0,0],[1,1],[1,1],[0,0]]);return t=Jd(t,x.depthwise_filter,x.pointwise_filter,[1,1],"valid"),t=td(t,x.bias),Cv(t)})}function Dv(n,x){var t=Jb(n,x);function e(t,e){var i=Ws(n(t)),r=Ws(n(t));return x.push({paramPath:e+"/sub"},{paramPath:e+"/truediv"}),{sub:i,truediv:r}}function i(n,x,i){var r=t(n,x,3,i+"/conv"),o=e(x,i+"/bn");return{conv:r,bn:o}}var r=nz(n,x);return{extractConvParams:t,extractConvWithBatchNormParams:i,extractSeparableConvParams:r}}function Ov(n,x,t,e){var i,r=ez(n),o=r.extractWeights,s=r.getRemainingWeights,h=[],u=Dv(o,h),a=u.extractConvParams,g=u.extractConvWithBatchNormParams,l=u.extractSeparableConvParams;if(x.withSeparableConvs){var c=e[0],d=e[1],f=e[2],p=e[3],y=e[4],m=e[5],b=e[6],z=e[7],v=e[8],j=x.isFirstLayerConv2d?a(c,d,3,"conv0"):l(c,d,"conv0"),w=l(d,f,"conv1"),k=l(f,p,"conv2"),q=l(p,y,"conv3"),_=l(y,m,"conv4"),C=l(m,b,"conv5"),S=z?l(b,z,"conv6"):void 0,E=v?l(z,v,"conv7"):void 0,D=a(v||z||b,5*t,1,"conv8");i={conv0:j,conv1:w,conv2:k,conv3:q,conv4:_,conv5:C,conv6:S,conv7:E,conv8:D}}else{c=e[0],d=e[1],f=e[2],p=e[3],y=e[4],m=e[5],b=e[6],z=e[7],v=e[8],j=g(c,d,"conv0"),w=g(d,f,"conv1"),k=g(f,p,"conv2"),q=g(p,y,"conv3"),_=g(y,m,"conv4"),C=g(m,b,"conv5"),S=g(b,z,"conv6"),E=g(z,v,"conv7"),D=a(v,5*t,1,"conv8");i={conv0:j,conv1:w,conv2:k,conv3:q,conv4:_,conv5:C,conv6:S,conv7:E,conv8:D}}if(0!==s().length)throw new Error("weights remaing after extract: "+s().length);return{params:i,paramMappings:h}}function Iv(n,x){var t=tz(n,x);function e(n){var x=t(n+"/sub",1),e=t(n+"/truediv",1);return{sub:x,truediv:e}}function i(n){var x=t(n+"/filters",4),e=t(n+"/bias",1);return{filters:x,bias:e}}function r(n){var x=i(n+"/conv"),t=e(n+"/bn");return{conv:x,bn:t}}var o=xz(t);return{extractConvParams:i,extractConvWithBatchNormParams:r,extractSeparableConvParams:o}}function Tv(n,x){var t,e=[],i=Iv(n,e),r=i.extractConvParams,o=i.extractConvWithBatchNormParams,s=i.extractSeparableConvParams;if(x.withSeparableConvs){var h=x.filterSizes&&x.filterSizes.length||9;t={conv0:x.isFirstLayerConv2d?r("conv0"):s("conv0"),conv1:s("conv1"),conv2:s("conv2"),conv3:s("conv3"),conv4:s("conv4"),conv5:s("conv5"),conv6:h>7?s("conv6"):void 0,conv7:h>8?s("conv7"):void 0,conv8:r("conv8")}}else t={conv0:o("conv0"),conv1:o("conv1"),conv2:o("conv2"),conv3:o("conv3"),conv4:o("conv4"),conv5:o("conv5"),conv6:o("conv6"),conv7:o("conv7"),conv8:r("conv8")};return Xb(n,e),{params:t,paramMappings:e}}(function(n){n[n["XS"]=224]="XS",n[n["SM"]=320]="SM",n[n["MD"]=416]="MD",n[n["LG"]=608]="LG"})(mv||(mv={}));var Av=function(){function n(n){var x=void 0===n?{}:n,t=x.inputSize,e=x.scoreThreshold;if(this._name="TinyYolov2Options",this._inputSize=t||416,this._scoreThreshold=e||.5,"number"!==typeof this._inputSize||this._inputSize%32!==0)throw new Error(this._name+" - expected inputSize to be a number divisible by 32");if("number"!==typeof this._scoreThreshold||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(this._name+" - expected scoreThreshold to be a number between 0 and 1")}return Object.defineProperty(n.prototype,"inputSize",{get:function(){return this._inputSize},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"scoreThreshold",{get:function(){return this._scoreThreshold},enumerable:!0,configurable:!0}),n}(),Nv=function(n){function x(x){var t=n.call(this,"TinyYolov2")||this;return _v(x),t._config=x,t}return km(x,n),Object.defineProperty(x.prototype,"config",{get:function(){return this._config},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"withClassScores",{get:function(){return this.config.withClassScores||this.config.classes.length>1},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"boxEncodingSize",{get:function(){return 5+(this.withClassScores?this.config.classes.length:0)},enumerable:!0,configurable:!0}),x.prototype.runTinyYolov2=function(n,x){var t=Sv(n,x.conv0);return t=gf(t,[2,2],[2,2],"same"),t=Sv(t,x.conv1),t=gf(t,[2,2],[2,2],"same"),t=Sv(t,x.conv2),t=gf(t,[2,2],[2,2],"same"),t=Sv(t,x.conv3),t=gf(t,[2,2],[2,2],"same"),t=Sv(t,x.conv4),t=gf(t,[2,2],[2,2],"same"),t=Sv(t,x.conv5),t=gf(t,[2,2],[1,1],"same"),t=Sv(t,x.conv6),t=Sv(t,x.conv7),Yb(t,x.conv8,"valid",!1)},x.prototype.runMobilenet=function(n,x){var t=this.config.isFirstLayerConv2d?Cv(Yb(n,x.conv0,"valid",!1)):Ev(n,x.conv0);return t=gf(t,[2,2],[2,2],"same"),t=Ev(t,x.conv1),t=gf(t,[2,2],[2,2],"same"),t=Ev(t,x.conv2),t=gf(t,[2,2],[2,2],"same"),t=Ev(t,x.conv3),t=gf(t,[2,2],[2,2],"same"),t=Ev(t,x.conv4),t=gf(t,[2,2],[2,2],"same"),t=Ev(t,x.conv5),t=gf(t,[2,2],[1,1],"same"),t=x.conv6?Ev(t,x.conv6):t,t=x.conv7?Ev(t,x.conv7):t,Yb(t,x.conv8,"valid",!1)},x.prototype.forwardInput=function(n,x){var t=this,e=this.params;if(!e)throw new Error("TinyYolov2 - load model before inference");return bs(function(){var i=n.toBatchTensor(x,!1).toFloat();return i=t.config.meanRgb?Jm(i,t.config.meanRgb):i,i=i.div(Vs(256)),t.config.withSeparableConvs?t.runMobilenet(i,e):t.runTinyYolov2(i,e)})},x.prototype.forward=function(n,x){return _m(this,void 0,void 0,function(){var t;return Cm(this,function(e){switch(e.label){case 0:return t=this.forwardInput,[4,Fb(n)];case 1:return[4,t.apply(this,[e.sent(),x])];case 2:return[2,e.sent()]}})})},x.prototype.detect=function(n,x){return void 0===x&&(x={}),_m(this,void 0,void 0,function(){var t,e,i,r,o,s,h,u,a,g,l,c,d,f,p=this;return Cm(this,function(y){switch(y.label){case 0:return t=new Av(x),e=t.inputSize,i=t.scoreThreshold,[4,Fb(n)];case 1:return r=y.sent(),[4,this.forwardInput(r,e)];case 2:return o=y.sent(),s=bs(function(){return Yh(o)[0].expandDims()}),h={width:r.getInputWidth(0),height:r.getInputHeight(0)},[4,this.extractBoxes(s,r.getReshapedInputDimensions(0),i)];case 3:return u=y.sent(),o.dispose(),s.dispose(),a=u.map(function(n){return n.box}),g=u.map(function(n){return n.score}),l=u.map(function(n){return n.classScore}),c=u.map(function(n){return p.config.classes[n.label]}),d=Xm(a.map(function(n){return n.rescale(e)}),g,this.config.iouThreshold,!0),f=d.map(function(n){return new Hm(g[n],l[n],c[n],a[n],h)}),[2,f]}})})},x.prototype.getDefaultModelName=function(){return""},x.prototype.extractParamsFromWeigthMap=function(n){return Tv(n,this.config)},x.prototype.extractParams=function(n){var t=this.config.filterSizes||x.DEFAULT_FILTER_SIZES,e=t?t.length:void 0;if(7!==e&&8!==e&&9!==e)throw new Error("TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found "+e+" filterSizes in config");return Ov(n,this.config,this.boxEncodingSize,t)},x.prototype.extractBoxes=function(n,x,t){return _m(this,void 0,void 0,function(){var e,i,r,o,s,h,u,a,g,l,c,d,f,p,y,m,b,z,v,j,w,k,q,_,C,S,E,D,O,I=this;return Cm(this,function(T){switch(T.label){case 0:return e=x.width,i=x.height,r=Math.max(e,i),o=r/e,s=r/i,h=n.shape[1],u=this.config.anchors.length,a=bs(function(){var x=n.reshape([h,h,u,I.boxEncodingSize]),t=x.slice([0,0,0,0],[h,h,u,4]),e=x.slice([0,0,0,4],[h,h,u,1]),i=I.withClassScores?yu(x.slice([0,0,0,5],[h,h,u,I.config.classes.length]),3):Vs(0);return[t,e,i]}),g=a[0],l=a[1],c=a[2],d=[],[4,l.array()];case 1:return f=T.sent(),[4,g.array()];case 2:p=T.sent(),y=0,T.label=3;case 3:if(!(y<h))return[3,12];m=0,T.label=4;case 4:if(!(m<h))return[3,11];b=0,T.label=5;case 5:return b<u?(z=Zm(f[y][m][b][0]),!t||z>t?(v=(m+Zm(p[y][m][b][0]))/h*o,j=(y+Zm(p[y][m][b][1]))/h*s,w=Math.exp(p[y][m][b][2])*this.config.anchors[b].x/h*o,k=Math.exp(p[y][m][b][3])*this.config.anchors[b].y/h*s,q=v-w/2,_=j-k/2,C={row:y,col:m,anchor:b},this.withClassScores?[4,this.extractPredictedClass(c,C)]:[3,7]):[3,9]):[3,10];case 6:return O=T.sent(),[3,8];case 7:O={classScore:1,label:0},T.label=8;case 8:S=O,E=S.classScore,D=S.label,d.push(qm({box:new Um(q,_,q+w,_+k),score:z,classScore:z*E,label:D},C)),T.label=9;case 9:return b++,[3,5];case 10:return m++,[3,4];case 11:return y++,[3,3];case 12:return g.dispose(),l.dispose(),c.dispose(),[2,d]}})})},x.prototype.extractPredictedClass=function(n,x){return _m(this,void 0,void 0,function(){var t,e,i,r;return Cm(this,function(o){switch(o.label){case 0:return t=x.row,e=x.col,i=x.anchor,[4,n.array()];case 1:return r=o.sent(),[2,Array(this.config.classes.length).fill(0).map(function(n,x){return r[t][e][i][x]}).map(function(n,x){return{classScore:n,label:x}}).reduce(function(n,x){return n.classScore>x.classScore?n:x})]}})})},x.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024],x}(Ub),Rv=function(n){function x(x){void 0===x&&(x=!0);var t=this,e=Object.assign({},{withSeparableConvs:x,iouThreshold:bv,classes:["face"]},x?{anchors:vv,meanRgb:jv}:{anchors:zv,withClassScores:!0});return t=n.call(this,e)||this,t}return km(x,n),Object.defineProperty(x.prototype,"withSeparableConvs",{get:function(){return this.config.withSeparableConvs},enumerable:!0,configurable:!0}),Object.defineProperty(x.prototype,"anchors",{get:function(){return this.config.anchors},enumerable:!0,configurable:!0}),x.prototype.locateFaces=function(n,x){return _m(this,void 0,void 0,function(){var t;return Cm(this,function(e){switch(e.label){case 0:return[4,this.detect(n,x)];case 1:return t=e.sent(),[2,t.map(function(n){return new Gm(n.score,n.relativeBox,{width:n.imageWidth,height:n.imageHeight})})]}})})},x.prototype.getDefaultModelName=function(){return this.withSeparableConvs?kv:wv},x.prototype.extractParamsFromWeigthMap=function(x){return n.prototype.extractParamsFromWeigthMap.call(this,x)},x}(Nv);var Mv=function(n){function x(){var x=null!==n&&n.apply(this,arguments)||this;return x._name="TinyFaceDetectorOptions",x}return km(x,n),x}(Av),Fv=function(){function n(){}return n.prototype.then=function(n){return _m(this,void 0,void 0,function(){var x;return Cm(this,function(t){switch(t.label){case 0:return x=n,[4,this.run()];case 1:return[2,x.apply(void 0,[t.sent()])]}})})},n.prototype.run=function(){return _m(this,void 0,void 0,function(){return Cm(this,function(n){throw new Error("ComposableTask - run is not implemented")})})},n}();function Pv(n,x){var t={descriptor:x};return Object.assign({},n,t)}function Lv(n,x,t,e,i){return void 0===i&&(i=function(n){var x=n.alignedRect;return x}),_m(this,void 0,void 0,function(){var r,o,s,h,u;return Cm(this,function(a){switch(a.label){case 0:return r=n.map(function(n){return bz(n)?i(n):n.detection}),s=e,s?[3,5]:x instanceof Kr?[4,Lb(x,r)]:[3,2];case 1:return h=a.sent(),[3,4];case 2:return[4,Pb(x,r)];case 3:h=a.sent(),a.label=4;case 4:s=h,a.label=5;case 5:return o=s,[4,t(o)];case 6:return u=a.sent(),o.forEach(function(n){return n instanceof Kr&&n.dispose()}),[2,u]}})})}function Bv(n,x,t,e,i){return _m(this,void 0,void 0,function(){var r=this;return Cm(this,function(o){return[2,Lv([n],x,function(n){return _m(r,void 0,void 0,function(){return Cm(this,function(x){return[2,t(n[0])]})})},e,i)]})})}function $v(n){return bs(function(){return Hh(Yh(n,3).reverse(),3)})}var Vv=2,Wv=12;function Uv(n,x){var t=Jb(n,x),e=Qb(n,x);function i(t,e){var i=Ws(n(t));return x.push({paramPath:e}),i}function r(n,x,e){void 0===e&&(e=!1);var r=t(n[0],n[1],3,x+"/conv1"),o=i(n[1],x+"/prelu1_alpha"),s=t(n[1],n[2],3,x+"/conv2"),h=i(n[2],x+"/prelu2_alpha"),u=t(n[2],n[3],e?2:3,x+"/conv3"),a=i(n[3],x+"/prelu3_alpha");return{conv1:r,prelu1_alpha:o,conv2:s,prelu2_alpha:h,conv3:u,prelu3_alpha:a}}function o(){var n=r([3,10,16,32],"pnet"),x=t(32,2,1,"pnet/conv4_1"),e=t(32,4,1,"pnet/conv4_2");return qm(qm({},n),{conv4_1:x,conv4_2:e})}function s(){var n=r([3,28,48,64],"rnet",!0),x=e(576,128,"rnet/fc1"),t=i(128,"rnet/prelu4_alpha"),o=e(128,2,"rnet/fc2_1"),s=e(128,4,"rnet/fc2_2");return qm(qm({},n),{fc1:x,prelu4_alpha:t,fc2_1:o,fc2_2:s})}function h(){var n=r([3,32,64,64],"onet"),x=t(64,128,2,"onet/conv4"),o=i(128,"onet/prelu4_alpha"),s=e(1152,256,"onet/fc1"),h=i(256,"onet/prelu5_alpha"),u=e(256,2,"onet/fc2_1"),a=e(256,4,"onet/fc2_2"),g=e(256,10,"onet/fc2_3");return qm(qm({},n),{conv4:x,prelu4_alpha:o,fc1:s,prelu5_alpha:h,fc2_1:u,fc2_2:a,fc2_3:g})}return{extractPNetParams:o,extractRNetParams:s,extractONetParams:h}}function Hv(n){var x=ez(n),t=x.extractWeights,e=x.getRemainingWeights,i=[],r=Uv(t,i),o=r.extractPNetParams,s=r.extractRNetParams,h=r.extractONetParams,u=o(),a=s(),g=h();if(0!==e().length)throw new Error("weights remaing after extract: "+e().length);return{params:{pnet:u,rnet:a,onet:g},paramMappings:i}}function Gv(n,x){var t=tz(n,x);function e(n){var x=t(n+"/weights",4,n+"/filters"),e=t(n+"/bias",1);return{filters:x,bias:e}}function i(n){var x=t(n+"/weights",2),e=t(n+"/bias",1);return{weights:x,bias:e}}function r(n){return t(n,1)}function o(n){var x=e(n+"/conv1"),t=r(n+"/prelu1_alpha"),i=e(n+"/conv2"),o=r(n+"/prelu2_alpha"),s=e(n+"/conv3"),h=r(n+"/prelu3_alpha");return{conv1:x,prelu1_alpha:t,conv2:i,prelu2_alpha:o,conv3:s,prelu3_alpha:h}}function s(){var n=o("pnet"),x=e("pnet/conv4_1"),t=e("pnet/conv4_2");return qm(qm({},n),{conv4_1:x,conv4_2:t})}function h(){var n=o("rnet"),x=i("rnet/fc1"),t=r("rnet/prelu4_alpha"),e=i("rnet/fc2_1"),s=i("rnet/fc2_2");return qm(qm({},n),{fc1:x,prelu4_alpha:t,fc2_1:e,fc2_2:s})}function u(){var n=o("onet"),x=e("onet/conv4"),t=r("onet/prelu4_alpha"),s=i("onet/fc1"),h=r("onet/prelu5_alpha"),u=i("onet/fc2_1"),a=i("onet/fc2_2"),g=i("onet/fc2_3");return qm(qm({},n),{conv4:x,prelu4_alpha:t,fc1:s,prelu5_alpha:h,fc2_1:u,fc2_2:a,fc2_3:g})}return{extractPNetParams:s,extractRNetParams:h,extractONetParams:u}}function Kv(n){var x=[],t=Gv(n,x),e=t.extractPNetParams,i=t.extractRNetParams,r=t.extractONetParams,o=e(),s=i(),h=r();return Xb(n,x),{params:{pnet:o,rnet:s,onet:h},paramMappings:x}}function Yv(n,x){var t=x[0],e=x[1];return{height:Math.floor(t*n),width:Math.floor(e*n)}}function Xv(n,x,t){var e=t[0],i=t[1],r=Wv/n,o=[],s=Math.min(e,i)*r,h=0;while(s>=12)o.push(r*Math.pow(x,h)),s*=x,h+=1;return o}var Jv=function(n){function x(x,t,e,i){return n.call(this,{left:x,top:t,right:e,bottom:i},!0)||this}return km(x,n),x}(Wm);function Qv(n){return bs(function(){return pd(vd(n,Vs(127.5)),Vs(.0078125))})}function Zv(n,x){return bs(function(){return td(Rf(n),pd(x,zc(Rf(zc(n)))))})}function nj(n,x,t){return void 0===t&&(t=!1),bs(function(){var e=Yb(n,x.conv1,"valid");return e=Zv(e,x.prelu1_alpha),e=gf(e,t?[2,2]:[3,3],[2,2],"same"),e=Yb(e,x.conv2,"valid"),e=Zv(e,x.prelu2_alpha),e=t?e:gf(e,[3,3],[2,2],"valid"),e=Yb(e,x.conv3,"valid"),e=Zv(e,x.prelu3_alpha),e})}function xj(n,x){return bs(function(){var t=nj(n,x,!0),e=Yb(t,x.conv4_1,"valid"),i=Dh(Cf(e,3),3),r=yu(vd(e,i),3),o=Yb(t,x.conv4_2,"valid");return{prob:r,regions:o}})}function tj(n,x){return bs(function(){var t=Yv(x,n.shape.slice(1)),e=t.height,i=t.width,r=Ap.resizeBilinear(n,[e,i]),o=Qv(r);return Pf(o,[0,2,1,3])})}function ej(n,x,t,e){for(var i=[],r=n.arraySync(),o=0;o<n.shape[0];o++)for(var s=0;s<n.shape[1];s++)r[o][s]>=e&&i.push(new Vm(s,o));var h=i.map(function(n){var e=new Um(Math.round((n.y*Vv+1)/t),Math.round((n.x*Vv+1)/t),Math.round((n.y*Vv+Wv)/t),Math.round((n.x*Vv+Wv)/t)),i=r[n.y][n.x],o=x.arraySync(),s=new Jv(o[n.y][n.x][0],o[n.y][n.x][1],o[n.y][n.x][2],o[n.y][n.x][3]);return{cell:e,score:i,region:s}});return h}function ij(n,x,t,e,i){i.stage1=[];var r=x.map(function(x){return bs(function(){var t={scale:x},i=tj(n,x),r=Date.now(),o=xj(i,e),s=o.prob,h=o.regions;t.pnet=Date.now()-r;var u=Yh(Yh(s,3)[1])[0],a=Yh(h)[0];return{scoresTensor:u,regionsTensor:a,scale:x,statsForScale:t}})}),o=r.map(function(n){var x=n.scoresTensor,e=n.regionsTensor,r=n.scale,o=n.statsForScale,s=ej(x,e,r,t);if(x.dispose(),e.dispose(),!s.length)return i.stage1.push(o),[];var h=Date.now(),u=Xm(s.map(function(n){return n.cell}),s.map(function(n){return n.score}),.5);return o.nms=Date.now()-h,o.numBoxes=u.length,i.stage1.push(o),u.map(function(n){return s[n]})}),s=o.reduce(function(n,x){return n.concat(x)},[]),h=[],u=[];if(s.length>0){var a=Date.now(),g=Xm(s.map(function(n){return n.cell}),s.map(function(n){return n.score}),.7);i.stage1_nms=Date.now()-a,u=g.map(function(n){return s[n].score}),h=g.map(function(n){return s[n]}).map(function(n){var x=n.cell,t=n.region;return new Um(x.left+t.left*x.width,x.top+t.top*x.height,x.right+t.right*x.width,x.bottom+t.bottom*x.height).toSquare().round()})}return{boxes:h,scores:u}}function rj(n,x,t){var e=t.width,i=t.height;return _m(this,void 0,void 0,function(){var t,r,o,s=this;return Cm(this,function(h){switch(h.label){case 0:return t=qb(n),[4,Promise.all(x.map(function(x){return _m(s,void 0,void 0,function(){var e,i,r,o,s,h,u,a;return Cm(this,function(g){return e=x.padAtBorders(n.height,n.width),i=e.y,r=e.ey,o=e.x,s=e.ex,h=o-1,u=i-1,a=t.getImageData(h,u,s-h,r-u),[2,wb.isNodejs()?Tb(a):createImageBitmap(a)]})})}))];case 1:return r=h.sent(),o=[],r.forEach(function(n){var x=Ib({width:e,height:i}),t=qb(x);t.drawImage(n,0,0,e,i);for(var r=t.getImageData(0,0,e,i).data,s=[],h=0;h<r.length;h+=4)s.push(r[h+2]),s.push(r[h+1]),s.push(r[h]);o.push(s)}),[2,o.map(function(n){var x=bs(function(){var x=Pf(Gs(n,[1,e,i,3]),[0,2,1,3]).toFloat();return Qv(x)});return x})]}})})}function oj(n,x){return bs(function(){var t=nj(n,x),e=Vh(t,[t.shape[0],x.fc1.weights.shape[0]]),i=az(e,x.fc1),r=Zv(i,x.prelu4_alpha),o=az(r,x.fc2_1),s=Dh(Cf(o,1),1),h=yu(vd(o,s),1),u=az(r,x.fc2_2),a=Yh(h,1)[1];return{scores:a,regions:u}})}function sj(n,x,t,e,i){return _m(this,void 0,void 0,function(){var r,o,s,h,u,a,g,l,c,d,f,p,y,m;return Cm(this,function(b){switch(b.label){case 0:return r=Date.now(),[4,rj(n,x,{width:24,height:24})];case 1:return o=b.sent(),i.stage2_extractImagePatches=Date.now()-r,r=Date.now(),s=o.map(function(n){var x=oj(n,e);return n.dispose(),x}),i.stage2_rnet=Date.now()-r,h=s.length>1?ih(s.map(function(n){return n.scores})):s[0].scores,g=(a=Array).from,[4,h.data()];case 2:return u=g.apply(a,[b.sent()]),h.dispose(),l=u.map(function(n,x){return{score:n,idx:x}}).filter(function(n){return n.score>t}).map(function(n){var x=n.idx;return x}),c=l.map(function(n){return x[n]}),d=l.map(function(n){return u[n]}),f=[],p=[],c.length>0&&(r=Date.now(),y=Xm(c,d,.7),i.stage2_nms=Date.now()-r,m=y.map(function(n){var x=s[l[n]].regions.arraySync();return new Jv(x[0][0],x[0][1],x[0][2],x[0][3])}),p=y.map(function(n){return d[n]}),f=y.map(function(n,x){return c[n].calibrate(m[x])})),s.forEach(function(n){n.regions.dispose(),n.scores.dispose()}),[2,{boxes:f,scores:p}]}})})}function hj(n,x){return bs(function(){var t=nj(n,x);t=gf(t,[2,2],[2,2],"same"),t=Yb(t,x.conv4,"valid"),t=Zv(t,x.prelu4_alpha);var e=Vh(t,[t.shape[0],x.fc1.weights.shape[0]]),i=az(e,x.fc1),r=Zv(i,x.prelu5_alpha),o=az(r,x.fc2_1),s=Dh(Cf(o,1),1),h=yu(vd(o,s),1),u=az(r,x.fc2_2),a=az(r,x.fc2_3),g=Yh(h,1)[1];return{scores:g,regions:u,points:a}})}function uj(n,x,t,e,i){return _m(this,void 0,void 0,function(){var r,o,s,h,u,a,g,l,c,d,f,p,y,m,b;return Cm(this,function(z){switch(z.label){case 0:return r=Date.now(),[4,rj(n,x,{width:48,height:48})];case 1:return o=z.sent(),i.stage3_extractImagePatches=Date.now()-r,r=Date.now(),s=o.map(function(n){var x=hj(n,e);return n.dispose(),x}),i.stage3_onet=Date.now()-r,h=s.length>1?ih(s.map(function(n){return n.scores})):s[0].scores,g=(a=Array).from,[4,h.data()];case 2:return u=g.apply(a,[z.sent()]),h.dispose(),l=u.map(function(n,x){return{score:n,idx:x}}).filter(function(n){return n.score>t}).map(function(n){var x=n.idx;return x}),c=l.map(function(n){var x=s[n].regions.arraySync();return new Jv(x[0][0],x[0][1],x[0][2],x[0][3])}),d=l.map(function(n,t){return x[n].calibrate(c[t])}),f=l.map(function(n){return u[n]}),p=[],y=[],m=[],d.length>0&&(r=Date.now(),b=Xm(d,f,.7,!1),i.stage3_nms=Date.now()-r,p=b.map(function(n){return d[n]}),y=b.map(function(n){return f[n]}),m=b.map(function(n,x){return Array(5).fill(0).map(function(t,e){var i=s[n].points.arraySync();return new Vm(i[0][e]*(p[x].width+1)+p[x].left,i[0][e+5]*(p[x].height+1)+p[x].top)})})),s.forEach(function(n){n.regions.dispose(),n.scores.dispose(),n.points.dispose()}),[2,{boxes:p,scores:y,points:m}]}})})}var aj=function(n){function x(){return n.call(this,"Mtcnn")||this}return km(x,n),x.prototype.load=function(x){return _m(this,void 0,void 0,function(){return Cm(this,function(t){return console.warn("mtcnn is deprecated and will be removed soon"),[2,n.prototype.load.call(this,x)]})})},x.prototype.loadFromDisk=function(x){return _m(this,void 0,void 0,function(){return Cm(this,function(t){return console.warn("mtcnn is deprecated and will be removed soon"),[2,n.prototype.loadFromDisk.call(this,x)]})})},x.prototype.forwardInput=function(n,x){return void 0===x&&(x={}),_m(this,void 0,void 0,function(){var t,e,i,r,o,s,h,u,a,g,l,c,d,f,p,y,m,b,z,v,j;return Cm(this,function(w){switch(w.label){case 0:if(t=this.params,!t)throw new Error("Mtcnn - load model before inference");if(e=n.canvases[0],!e)throw new Error("Mtcnn - inputCanvas is not defined, note that passing tensors into Mtcnn.forwardInput is not supported yet.");return i={},r=Date.now(),o=bs(function(){return $v(Dh(im.fromPixels(e)).toFloat())}),s=function(n){return o.dispose(),i.total=Date.now()-r,n},h=o.shape.slice(1),u=h[0],a=h[1],g=new Zz(x),l=g.minFaceSize,c=g.scaleFactor,d=g.maxNumScales,f=g.scoreThresholds,p=g.scaleSteps,y=(p||Xv(l,c,[u,a])).filter(function(n){var x=Yv(n,[u,a]);return Math.min(x.width,x.height)>Wv}).slice(0,d),i.scales=y,i.pyramid=y.map(function(n){return Yv(n,[u,a])}),m=Date.now(),[4,ij(o,y,f[0],t.pnet,i)];case 1:return b=w.sent(),i.total_stage1=Date.now()-m,b.boxes.length?(i.stage2_numInputBoxes=b.boxes.length,m=Date.now(),[4,sj(e,b.boxes,f[1],t.rnet,i)]):[2,s({results:[],stats:i})];case 2:return z=w.sent(),i.total_stage2=Date.now()-m,z.boxes.length?(i.stage3_numInputBoxes=z.boxes.length,m=Date.now(),[4,uj(e,z.boxes,f[2],t.onet,i)]):[2,s({results:[],stats:i})];case 3:return v=w.sent(),i.total_stage3=Date.now()-m,j=v.boxes.map(function(n,x){return zz(lb({},new Gm(v.scores[x],new xb(n.left/a,n.top/u,n.width/a,n.height/u),{height:u,width:a})),new ob(v.points[x].map(function(x){return x.sub(new Vm(n.left,n.top)).div(new Vm(n.width,n.height))}),{width:n.width,height:n.height}))}),[2,s({results:j,stats:i})]}})})},x.prototype.forward=function(n,x){return void 0===x&&(x={}),_m(this,void 0,void 0,function(){var t;return Cm(this,function(e){switch(e.label){case 0:return t=this.forwardInput,[4,Fb(n)];case 1:return[4,t.apply(this,[e.sent(),x])];case 2:return[2,e.sent().results]}})})},x.prototype.forwardWithStats=function(n,x){return void 0===x&&(x={}),_m(this,void 0,void 0,function(){var t;return Cm(this,function(e){switch(e.label){case 0:return t=this.forwardInput,[4,Fb(n)];case 1:return[2,t.apply(this,[e.sent(),x])]}})})},x.prototype.getDefaultModelName=function(){return"mtcnn_model"},x.prototype.extractParamsFromWeigthMap=function(n){return Kv(n)},x.prototype.extractParams=function(n){return Hv(n)},x}(Ub),gj=.4,lj=[new Vm(1.603231,2.094468),new Vm(6.041143,7.080126),new Vm(2.882459,3.518061),new Vm(4.266906,5.178857),new Vm(9.041765,10.66308)],cj=[117.001,114.697,97.404],dj=function(n){function x(){var x=this,t={withSeparableConvs:!0,iouThreshold:gj,classes:["face"],anchors:lj,meanRgb:cj,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};return x=n.call(this,t)||this,x}return km(x,n),Object.defineProperty(x.prototype,"anchors",{get:function(){return this.config.anchors},enumerable:!0,configurable:!0}),x.prototype.locateFaces=function(n,x){return _m(this,void 0,void 0,function(){var t;return Cm(this,function(e){switch(e.label){case 0:return[4,this.detect(n,x)];case 1:return t=e.sent(),[2,t.map(function(n){return new Gm(n.score,n.relativeBox,{width:n.imageWidth,height:n.imageHeight})})]}})})},x.prototype.getDefaultModelName=function(){return"tiny_face_detector_model"},x.prototype.extractParamsFromWeigthMap=function(x){return n.prototype.extractParamsFromWeigthMap.call(this,x)},x}(Nv),fj={ssdMobilenetv1:new yv,tinyFaceDetector:new dj,tinyYolov2:new Rv,mtcnn:new aj,faceLandmark68Net:new Nz,faceLandmark68TinyNet:new Pz,faceRecognitionNet:new Jz,faceExpressionNet:new yz,ageGenderNet:new Tz};function pj(n,x){var t={age:x};return Object.assign({},n,t)}var yj=function(n){function x(x,t,e){var i=n.call(this)||this;return i.parentTask=x,i.input=t,i.extractedFaces=e,i}return km(x,n),x}(Fv),mj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x,t=this;return Cm(this,function(e){switch(e.label){case 0:return[4,this.parentTask];case 1:return n=e.sent(),[4,Lv(n,this.input,function(n){return _m(t,void 0,void 0,function(){return Cm(this,function(x){switch(x.label){case 0:return[4,Promise.all(n.map(function(n){return fj.faceExpressionNet.predictExpressions(n)}))];case 1:return[2,x.sent()]}})})},this.extractedFaces)];case 2:return x=e.sent(),[2,n.map(function(n,t){return mz(n,x[t])})]}})})},x.prototype.withAgeAndGender=function(){return new wj(this,this.input)},x}(yj),bj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x;return Cm(this,function(t){switch(t.label){case 0:return[4,this.parentTask];case 1:return n=t.sent(),n?[4,Bv(n,this.input,function(n){return fj.faceExpressionNet.predictExpressions(n)},this.extractedFaces)]:[2];case 2:return x=t.sent(),[2,mz(n,x)]}})})},x.prototype.withAgeAndGender=function(){return new kj(this,this.input)},x}(yj),zj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.withAgeAndGender=function(){return new qj(this,this.input)},x.prototype.withFaceDescriptors=function(){return new Sj(this,this.input)},x}(mj),vj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.withAgeAndGender=function(){return new _j(this,this.input)},x.prototype.withFaceDescriptor=function(){return new Ej(this,this.input)},x}(bj),jj=function(n){function x(x,t,e){var i=n.call(this)||this;return i.parentTask=x,i.input=t,i.extractedFaces=e,i}return km(x,n),x}(Fv),wj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x,t=this;return Cm(this,function(e){switch(e.label){case 0:return[4,this.parentTask];case 1:return n=e.sent(),[4,Lv(n,this.input,function(n){return _m(t,void 0,void 0,function(){return Cm(this,function(x){switch(x.label){case 0:return[4,Promise.all(n.map(function(n){return fj.ageGenderNet.predictAgeAndGender(n)}))];case 1:return[2,x.sent()]}})})},this.extractedFaces)];case 2:return x=e.sent(),[2,n.map(function(n,t){var e=x[t],i=e.age,r=e.gender,o=e.genderProbability;return pj(Qz(n,r,o),i)})]}})})},x.prototype.withFaceExpressions=function(){return new mj(this,this.input)},x}(jj),kj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x,t,e,i;return Cm(this,function(r){switch(r.label){case 0:return[4,this.parentTask];case 1:return n=r.sent(),n?[4,Bv(n,this.input,function(n){return fj.ageGenderNet.predictAgeAndGender(n)},this.extractedFaces)]:[2];case 2:return x=r.sent(),t=x.age,e=x.gender,i=x.genderProbability,[2,pj(Qz(n,e,i),t)]}})})},x.prototype.withFaceExpressions=function(){return new bj(this,this.input)},x}(jj),qj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.withFaceExpressions=function(){return new zj(this,this.input)},x.prototype.withFaceDescriptors=function(){return new Sj(this,this.input)},x}(wj),_j=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.withFaceExpressions=function(){return new vj(this,this.input)},x.prototype.withFaceDescriptor=function(){return new Ej(this,this.input)},x}(kj),Cj=function(n){function x(x,t){var e=n.call(this)||this;return e.parentTask=x,e.input=t,e}return km(x,n),x}(Fv),Sj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x;return Cm(this,function(t){switch(t.label){case 0:return[4,this.parentTask];case 1:return n=t.sent(),[4,Lv(n,this.input,function(n){return Promise.all(n.map(function(n){return fj.faceRecognitionNet.computeFaceDescriptor(n)}))},null,function(n){return n.landmarks.align(null,{useDlibAlignment:!0})})];case 2:return x=t.sent(),[2,x.map(function(x,t){return Pv(n[t],x)})]}})})},x.prototype.withFaceExpressions=function(){return new zj(this,this.input)},x.prototype.withAgeAndGender=function(){return new qj(this,this.input)},x}(Cj),Ej=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x;return Cm(this,function(t){switch(t.label){case 0:return[4,this.parentTask];case 1:return n=t.sent(),n?[4,Bv(n,this.input,function(n){return fj.faceRecognitionNet.computeFaceDescriptor(n)},null,function(n){return n.landmarks.align(null,{useDlibAlignment:!0})})]:[2];case 2:return x=t.sent(),[2,Pv(n,x)]}})})},x.prototype.withFaceExpressions=function(){return new vj(this,this.input)},x.prototype.withAgeAndGender=function(){return new _j(this,this.input)},x}(Cj),Dj=function(n){function x(x,t,e){var i=n.call(this)||this;return i.parentTask=x,i.input=t,i.useTinyLandmarkNet=e,i}return km(x,n),Object.defineProperty(x.prototype,"landmarkNet",{get:function(){return this.useTinyLandmarkNet?fj.faceLandmark68TinyNet:fj.faceLandmark68Net},enumerable:!0,configurable:!0}),x}(Fv),Oj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x,t,e,i,r=this;return Cm(this,function(o){switch(o.label){case 0:return[4,this.parentTask];case 1:return n=o.sent(),x=n.map(function(n){return n.detection}),this.input instanceof Kr?[4,Lb(this.input,x)]:[3,3];case 2:return e=o.sent(),[3,5];case 3:return[4,Pb(this.input,x)];case 4:e=o.sent(),o.label=5;case 5:return t=e,[4,Promise.all(t.map(function(n){return r.landmarkNet.detectLandmarks(n)}))];case 6:return i=o.sent(),t.forEach(function(n){return n instanceof Kr&&n.dispose()}),[2,n.map(function(n,x){return zz(n,i[x])})]}})})},x.prototype.withFaceExpressions=function(){return new zj(this,this.input)},x.prototype.withAgeAndGender=function(){return new qj(this,this.input)},x.prototype.withFaceDescriptors=function(){return new Sj(this,this.input)},x}(Dj),Ij=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x,t,e,i;return Cm(this,function(r){switch(r.label){case 0:return[4,this.parentTask];case 1:return n=r.sent(),n?(x=n.detection,this.input instanceof Kr?[4,Lb(this.input,[x])]:[3,3]):[2];case 2:return e=r.sent(),[3,5];case 3:return[4,Pb(this.input,[x])];case 4:e=r.sent(),r.label=5;case 5:return t=e,[4,this.landmarkNet.detectLandmarks(t[0])];case 6:return i=r.sent(),t.forEach(function(n){return n instanceof Kr&&n.dispose()}),[2,zz(n,i)]}})})},x.prototype.withFaceExpressions=function(){return new vj(this,this.input)},x.prototype.withAgeAndGender=function(){return new _j(this,this.input)},x.prototype.withFaceDescriptor=function(){return new Ej(this,this.input)},x}(Dj),Tj=function(n){function x(x,t){void 0===t&&(t=new pv);var e=n.call(this)||this;return e.input=x,e.options=t,e}return km(x,n),x}(Fv),Aj=function(n){function x(){return null!==n&&n.apply(this,arguments)||this}return km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x,t,e;return Cm(this,function(i){switch(i.label){case 0:return n=this,x=n.input,t=n.options,t instanceof Zz?[4,fj.mtcnn.forward(x,t)]:[3,2];case 1:return[2,i.sent().map(function(n){return n.detection})];case 2:if(e=t instanceof Mv?function(n){return fj.tinyFaceDetector.locateFaces(n,t)}:t instanceof pv?function(n){return fj.ssdMobilenetv1.locateFaces(n,t)}:t instanceof Av?function(n){return fj.tinyYolov2.locateFaces(n,t)}:null,!e)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return[2,e(x)]}})})},x.prototype.runAndExtendWithFaceDetections=function(){var n=this;return new Promise(function(x){return _m(n,void 0,void 0,function(){var n;return Cm(this,function(t){switch(t.label){case 0:return[4,this.run()];case 1:return n=t.sent(),[2,x(n.map(function(n){return lb({},n)}))]}})})})},x.prototype.withFaceLandmarks=function(n){return void 0===n&&(n=!1),new Oj(this.runAndExtendWithFaceDetections(),this.input,n)},x.prototype.withFaceExpressions=function(){return new mj(this.runAndExtendWithFaceDetections(),this.input)},x.prototype.withAgeAndGender=function(){return new wj(this.runAndExtendWithFaceDetections(),this.input)},x}(Tj);(function(n){function x(){return null!==n&&n.apply(this,arguments)||this}km(x,n),x.prototype.run=function(){return _m(this,void 0,void 0,function(){var n,x;return Cm(this,function(t){switch(t.label){case 0:return[4,new Aj(this.input,this.options)];case 1:return n=t.sent(),x=n[0],n.forEach(function(n){n.score>x.score&&(x=n)}),[2,x]}})})},x.prototype.runAndExtendWithFaceDetection=function(){var n=this;return new Promise(function(x){return _m(n,void 0,void 0,function(){var n;return Cm(this,function(t){switch(t.label){case 0:return[4,this.run()];case 1:return n=t.sent(),[2,x(n?lb({},n):void 0)]}})})})},x.prototype.withFaceLandmarks=function(n){return void 0===n&&(n=!1),new Ij(this.runAndExtendWithFaceDetection(),this.input,n)},x.prototype.withFaceExpressions=function(){return new bj(this.runAndExtendWithFaceDetection(),this.input)},x.prototype.withAgeAndGender=function(){return new kj(this.runAndExtendWithFaceDetection(),this.input)}})(Tj);function Nj(n,x){return void 0===x&&(x=new pv),new Aj(n,x)}function Rj(n,x){if(n.length!==x.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");var t=Array.from(n),e=Array.from(x);return Math.sqrt(t.map(function(n,x){return n-e[x]}).reduce(function(n,x){return n+Math.pow(x,2)},0))}(function(){function n(n,x){void 0===x&&(x=.6),this._distanceThreshold=x;var t=Array.isArray(n)?n:[n];if(!t.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");var e=1,i=function(){return"person "+e++};this._labeledDescriptors=t.map(function(n){if(n instanceof ab)return n;if(n instanceof Float32Array)return new ab(i(),[n]);if(n.descriptor&&n.descriptor instanceof Float32Array)return new ab(i(),[n.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor<any> | Float32Array | Array<LabeledFaceDescriptors | WithFaceDescriptor<any> | Float32Array>")})}Object.defineProperty(n.prototype,"labeledDescriptors",{get:function(){return this._labeledDescriptors},enumerable:!0,configurable:!0}),Object.defineProperty(n.prototype,"distanceThreshold",{get:function(){return this._distanceThreshold},enumerable:!0,configurable:!0}),n.prototype.computeMeanDistance=function(n,x){return x.map(function(x){return Rj(x,n)}).reduce(function(n,x){return n+x},0)/(x.length||1)},n.prototype.matchDescriptor=function(n){var x=this;return this.labeledDescriptors.map(function(t){var e=t.descriptors,i=t.label;return new hb(i,x.computeMeanDistance(n,e))}).reduce(function(n,x){return n.distance<x.distance?n:x})},n.prototype.findBestMatch=function(n){var x=this.matchDescriptor(n);return x.distance<this.distanceThreshold?x:new hb("unknown",x.distance)},n.prototype.toJSON=function(){return{distanceThreshold:this.distanceThreshold,labeledDescriptors:this.labeledDescriptors.map(function(n){return n.toJSON()})}},n.fromJSON=function(x){var t=x.labeledDescriptors.map(function(n){return ab.fromJSON(n)});return new n(t,x.distanceThreshold)}})();var Mj={name:"FaceDetection",emits:["face-detected","face-lost","error","detection-complete"],props:{videoWidth:{type:Number,default:240},videoHeight:{type:Number,default:240},minConfidence:{type:Number,default:.5},captureInterval:{type:Number,default:2e3},maxCaptures:{type:Number,default:1},modelPath:{type:String,default:"/models"}},data(){return{loading:!1,modelsLoaded:!1,cameraStarted:!1,cameraReady:!1,isDetecting:!1,stream:null,detectionInterval:null,capturedImages:[],lastCaptureTime:0}},async mounted(){console.log("mounted______"),await this.loadModels(),await this.autoStartDetection()},beforeDestroy(){console.log("结束,清理摄像头"),this.cleanup()},methods:{h_back(){this.$emit("back")},async loadModels(){try{this.loading=!0,await Promise.all([fj.tinyFaceDetector.loadFromUri(this.modelPath),fj.faceLandmark68Net.loadFromUri(this.modelPath),fj.faceRecognitionNet.loadFromUri(this.modelPath)]),this.modelsLoaded=!0,console.log("人脸检测模型加载完成")}catch(n){this.$emit("error",{type:"model-load-error",error:n})}finally{this.loading=!1}},async autoStartDetection(){if(this.modelsLoaded)try{await this.startCamera(),setTimeout(()=>{this.cameraReady&&this.startDetection()},1e3)}catch(n){console.error("自动开始检测失败:",n)}},async startCamera(){try{this.stream=await navigator.mediaDevices.getUserMedia({video:{width:this.videoWidth,height:this.videoHeight,facingMode:"user"}}),this.$refs.video.srcObject=this.stream,this.cameraStarted=!0}catch(n){console.error("摄像头启动失败:",n),this.$emit("error",{type:"camera-error",error:n})}},onVideoLoaded(){this.cameraReady=!0,console.log("摄像头准备就绪"),this.modelsLoaded&&!this.isDetecting&&setTimeout(()=>{this.startDetection()},500)},stopCamera(){this.stopDetection(),this.stream&&(this.stream.getTracks().forEach(n=>n.stop()),this.stream=null),this.cameraStarted=!1,this.cameraReady=!1},startDetection(){this.modelsLoaded&&this.cameraReady&&(this.isDetecting=!0,this.detectionInterval=setInterval(()=>{this.detectFaces()},100))},stopDetection(){this.isDetecting=!1,this.detectionInterval&&(clearInterval(this.detectionInterval),this.detectionInterval=null);const n=this.$refs.overlay,x=n.getContext("2d");x.clearRect(0,0,n.width,n.height)},toggleDetection(){this.isDetecting?this.stopDetection():this.startDetection()},async detectFaces(){const n=this.$refs.video,x=this.$refs.overlay;if(n&&x)try{const t=await Nj(n,new Mv).withFaceLandmarks().withFaceDescriptors(),e=x.getContext("2d");if(e.clearRect(0,0,x.width,x.height),t.length>0){t.forEach(n=>{const{x:x,y:t,width:i,height:r}=n.detection.box;e.strokeStyle="#00ff00",e.lineWidth=2,e.strokeRect(x,t,i,r),e.fillStyle="#00ff00",e.font="16px Arial",e.fillText(`${(100*n.detection.score).toFixed(1)}%`,x,t-10)});const n=Date.now();n-this.lastCaptureTime>this.captureInterval&&(this.captureHighConfidenceFaces(t),this.lastCaptureTime=n),this.$emit("face-detected",t),this.onFaceDetectedComplete(t)}else this.$emit("face-lost")}catch(t){console.error("人脸检测失败:",t),this.$emit("error",{type:"detection-error",error:t})}},captureHighConfidenceFaces(n){const x=this.$refs.video;n.forEach(n=>{if(n.detection.score>=this.minConfidence){const t=document.createElement("canvas"),e=t.getContext("2d"),{x:i,y:r,width:o,height:s}=n.detection.box,h=1,u=1,a=1,g=s*(1+h+a),l=o*(1+2*u),c=Math.max(0,i-o*u),d=Math.max(0,r-s*h),f=x.videoWidth||this.videoWidth,p=x.videoHeight||this.videoHeight,y=Math.max(0,c),m=Math.max(0,d),b=Math.min(l,f-y),z=Math.min(g,p-m);t.width=b,t.height=z,e.drawImage(x,y,m,b,z,0,0,b,z);const v=t.toDataURL("image/jpeg",.8);this.capturedImages.unshift({dataUrl:v,confidence:n.detection.score,timestamp:Date.now(),box:n.detection.box,expandedBox:{x:y,y:m,width:b,height:z}}),this.capturedImages.length>this.maxCaptures&&(this.capturedImages=this.capturedImages.slice(0,this.maxCaptures)),console.log("捕获到高置信度人脸:",n.detection.score)}})},async copyToClipboard(n){try{await navigator.clipboard.writeText(n),console.log("Base64已复制到剪贴板")}catch(x){console.error("复制失败:",x)}},onFaceDetectedComplete(n){console.log("检测到人脸,正在停止检测..."),this.stopDetection(),this.stopCamera(),this.$emit("detection-complete",{detections:n,capturedImages:this.capturedImages})},cleanup(){this.stopCamera(),this.capturedImages=[]},async restartAuthentication(){try{console.log("开始重新认证..."),this.cleanup(),this.capturedImages=[],this.lastCaptureTime=0,this.modelsLoaded||await this.loadModels(),await this.autoStartDetection(),console.log("重新认证流程已启动"),this.$emit("restart-authentication")}catch(n){console.error("重新认证启动失败:",n),this.$emit("error",{type:"restart-error",error:n})}}}},Fj=Mj,Pj=Ee(Fj,Si,Ei,!1,null,"7c2b7702",null),Lj=Pj.exports,Bj=function(){var n=this,x=n._self._c;return x("div",{directives:[{name:"loading",rawName:"v-loading",value:n.loading,expression:"loading"}],staticClass:"face-picture"},[x("img",{attrs:{src:n.src,width:"100%",height:"100%"}}),x("div",{staticClass:"delete-batn",on:{click:n.handleDelete}},[x("i",{staticClass:"el-icon-delete",staticStyle:{size:"20px"}})])])},$j=[],Vj={props:{row:Object},data(){return{src:null,loading:!1}},mounted(){this.loadFaceImage()},methods:{handleDelete(){this.handleClearFaceInfo()},loadFaceImage(){this.row?.userId?this.src=`/plugin/face/photo?userId=${this.row?.userId}`:console.warn("用户ID不存在,无法加载人脸信息")},handleClearFaceInfo(){this.$confirm("确定要清除人脸信息吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.loading=!0,fi({userId:this.row?.userId}).then(()=>{this.$emit("clear-face"),this.$message.success("人脸信息已清除")}).finally(()=>{this.loading=!1})}).catch(()=>{})}}},Wj=Vj,Uj=Ee(Wj,Bj,$j,!1,null,"0b73bca5",null),Hj=Uj.exports,Gj={name:"FaceRegister",props:{row:Object},components:{ChooseCameraOrPicture:vi,UploadPicture:Ci,FaceDetected:Lj,FacePicture:Hj},data(){const n=this.row?.userId;return{userId:n,chooseType:"loading",uploading:!1,userIdMissing:!1}},created(){this.checkFaceInfo()},methods:{checkFaceInfo(){di({userId:this.userId}).then(n=>{this.chooseType=n.data?"face-info":""})},handleBack(){this.chooseType=""},handleClose(){},handleChoose(n){this.chooseType="camera"===n?"camera":"picture"},handleClearFace(){this.checkFaceInfo()},handleRefresh(){window.location.reload()},handleUploadSuccess(){this.checkFaceInfo()},async handleDetectionComplete(n){if(this.userId)if(n.capturedImages&&0!==n.capturedImages.length)try{this.uploading=!0,this.chooseType="";const x=n.capturedImages[0],t=x.dataUrl,e=this.base64ToFile(t,"face-detected.jpg"),i=new FormData;i.append("file",e),i.append("userId",this.userId),i.append("userName",this.row?.row?.name||""),await ci(i),this.$message.success("人脸注册成功!"),this.checkFaceInfo()}catch(x){console.error("人脸上传失败:",x),this.chooseType=""}finally{this.uploading=!1}else this.$message.error("未检测到人脸图片");else this.$message.error("用户信息不完整,无法进行人脸注册")},base64ToFile(n,x){const t=n.split(","),e=t[0].match(/:(.*?);/)[1],i=atob(t[1]);let r=i.length;const o=new Uint8Array(r);while(r--)o[r]=i.charCodeAt(r);return new File([o],x,{type:e})}}},Kj=Gj,Yj=Ee(Kj,ui,ai,!1,null,"6026fac0",null),Xj=Yj.exports,Jj=function(){var n=this,x=n._self._c;return x("div",{directives:[{name:"loading",rawName:"v-loading",value:n.loading,expression:"loading"}],staticClass:"p-12"},[x("el-table",{ref:"table",attrs:{data:n.tableData,stripe:"","header-cell-style":{background:"#f7f8fa"}},on:{"selection-change":n.h_selectionChange,"row-click":n.h_rowClick}},[x("el-table-column",{attrs:{type:"selection",width:"75"}}),x("el-table-column",{attrs:{type:"index",label:"序号",width:"80"}}),x("el-table-column",{attrs:{prop:"icCard",label:"身份卡号"}})],1),x("div",{staticClass:"flex-center mt-12"},[x("el-button",{attrs:{type:"primary",icon:"el-icon-circle-plus-outline"},on:{click:n.h_add}},[n._v("添加")]),x("el-button",{attrs:{icon:"el-icon-delete",type:"danger"},on:{click:n.h_remove}},[n._v("移除")])],1),n.visible?x("register-dialog",{attrs:{row:n.row},on:{closed:function(x){n.visible=!1},refresh:n.h_loadData}}):n._e()],1)},Qj=[];const Zj=n=>li({url:"/userICCard/add",method:"post",data:n}),nw=n=>li({url:"/icCard/findNoBindICCard",method:"get",params:n}),xw=n=>li({url:"/userICCard/deleteByIcCard",method:"post",data:n}),tw=n=>li({url:"/userICCard/findByUserId",method:"get",params:n});var ew=function(){var n=this,x=n._self._c;return x("el-dialog",{attrs:{visible:n.visible,width:"580px",title:"新增身份卡","append-to-body":""},on:{closed:n.closed,close:n.h_close}},["normal"===n.component?x("div",[x("div",{staticClass:"p-12 pr-32"},[x("el-form",{attrs:{model:n.form,"label-width":"100px"}},[x("el-form-item",{attrs:{label:"身份卡号"}},[x("el-input",{attrs:{placeholder:"请输入或者使用刷卡器刷卡"},model:{value:n.form.cardNo,callback:function(x){n.$set(n.form,"cardNo",x)},expression:"form.cardNo"}})],1)],1)],1),x("div",{staticClass:"select-section"},[x("el-button",{staticClass:"select-button",attrs:{type:"text"},on:{click:n.h_selectCard}},[n._v(" 选择已录入身份卡 >> ")])],1),x("div",{staticClass:"dialog-footer f_center",staticStyle:{"margin-top":"100px"}},[x("el-button",{attrs:{loading:n.loading},on:{click:n.h_close}},[n._v("取消")]),x("el-button",{attrs:{type:"primary",loading:n.loading},on:{click:n.h_submit}},[n._v("确定")])],1)]):n._e(),"table"===n.component?x("div",[x("card-table",{attrs:{loading:n.loading},on:{back:n.h_back,submit:n.h_submit}})],1):n._e()])},iw=[],rw=function(){var n=this,x=n._self._c;return x("div",{directives:[{name:"loading",rawName:"v-loading",value:n.loading,expression:"loading"}]},[x("el-table",{ref:"table",attrs:{data:n.tableData,stripe:"","header-cell-style":{background:"#f7f8fa"}},on:{"selection-change":n.h_selectionChange,"row-click":n.h_rowClick}},[x("el-table-column",{attrs:{type:"selection",width:"75"}}),x("el-table-column",{attrs:{type:"index",label:"序号",width:"80"}}),x("el-table-column",{attrs:{prop:"icCard",label:"IC卡号"}}),x("el-table-column",{attrs:{prop:"createdTime",label:"录入时间"}})],1),n._e(),x("div",{staticClass:"flex-center mt-42"},[x("el-button",{on:{click:n.h_back}},[n._v("返回")]),x("el-button",{attrs:{type:"primary"},on:{click:n.h_submit}},[n._v("确定")])],1)],1)},ow=[],sw={name:"CardTable",props:{loading:{type:Boolean,default:!1}},data(){return{tableData:[],selection:[],pagination:{current:1,size:5,total:0}}},created(){this.f_loadData()},methods:{h_rowClick(n){this.$refs.table.toggleRowSelection(n)},h_currentChange(n){this.table.pagination.current=n,this.f_loadData()},h_back(){this.$emit("back")},h_submit(){0!==this.selection.length?this.selection.length>1?this.$message.warning("请选择一张IC卡"):this.$emit("submit",this.selection[0]):this.$message.warning("请选择要添加的IC卡")},f_loadData(){nw({keyword:null}).then(n=>{this.tableData=n.data})},h_selectionChange(n){this.selection=n}}},hw=sw,uw=Ee(hw,rw,ow,!1,null,"519ef704",null),aw=uw.exports,gw={name:"RegisterDialog",components:{CardTable:aw},props:{row:{type:Object,default:()=>{}}},data(){return{loading:!1,component:"normal",visible:!1,form:{cardNo:""}}},created(){},mounted(){this.visible=!0,this.$authEventBus.$on("card",this.h_card)},beforeDestroy(){this.$authEventBus.$off("card",this.h_card)},methods:{h_card(n){0!==n.result&&200!==n.status||(this.form.cardNo=n.data)},h_back(){this.component="normal"},h_submit(n){this.loading=!0;let x={userId:this.row.userId,userName:this.row.row.name,icCard:this.form.cardNo,tenantId:""};n&&n.icCard&&(x={userId:this.row.userId,userName:this.row.row.name,icCard:n.icCard,tenantId:""}),Zj(x).then(()=>{this.$message.success("新增成功"),this.visible=!1,this.$emit("refresh")}).finally(()=>{this.loading=!1})},h_close(){this.visible=!1},closed(){this.$emit("closed")},h_selectCard(){this.component="table"}}},lw=gw,cw=Ee(lw,ew,iw,!1,null,"2a8d4408",null),dw=cw.exports,fw={name:"CardRegister",components:{RegisterDialog:dw},props:{row:{type:Object,default:()=>{}}},data(){return{tableData:[],selection:[],visible:!1,loading:!1}},created(){this.h_loadData()},methods:{h_rowClick(n){this.$refs.table.toggleRowSelection(n)},h_loadData(){this.loading=!0,tw({userId:this.row.userId}).then(n=>{this.tableData=n.data}).finally(()=>{this.loading=!1})},h_add(){this.visible=!0},h_remove(){this.$confirm("确定移除选中的身份卡吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.loading=!0,xw(this.selection.map(n=>n.icCardId)).then(()=>{this.$message.success("移除成功"),this.h_loadData()}).finally(()=>{this.loading=!1})}).catch(()=>{})},h_selectionChange(n){this.selection=n}}},pw=fw,yw=Ee(pw,Jj,Qj,!1,null,"56d9f150",null),mw=yw.exports,bw=function(){var n=this,x=n._self._c;return x("div",{staticClass:"flex-center align-center h100 w100"},[x("div",{staticClass:"finger-dialog"},[x("div",{staticClass:"finger-register-content"},[x("div",{staticStyle:{color:"#333","font-size":"24px","margin-bottom":"12px","padding-top":"48px","text-align":"center","margin-top":"24px"}},[n._v(" "+n._s(n.stepTips)+" ")]),x("div",{staticStyle:{display:"flex","justify-content":"center","align-items":"center","padding-top":"50px"}},[x("div",{staticClass:"hand-area left-hand"},[x("div",{staticClass:"hand-image-wrapper"},[x("img",{staticClass:"hand-image",attrs:{src:n.leftHandleImg}}),x("div",{staticClass:"finger-buttons-overlay"},n._l(n.leftFingers,function(t,e){return x("div",{key:"left-"+e,class:["finger-circle",{active:n.selectedFinger&&n.selectedFinger.value===t.value,ready:!!t.fingerInfo}],style:{top:t.top+"px",left:t.left+"px"},on:{click:function(x){return n.handleSelectFinger(t)}}})}),0)])]),x("div",{staticClass:"hand-area right-hand"},[x("div",{staticClass:"hand-image-wrapper"},[x("img",{staticClass:"hand-image",attrs:{src:n.rightHandleImg}}),x("div",{staticClass:"finger-buttons-overlay"},n._l(n.rightFingers,function(t,e){return x("div",{key:"right-"+e,class:["finger-circle",{active:n.selectedFinger&&n.selectedFinger.value===t.value,ready:!!t.fingerInfo}],style:{top:t.top+"px",left:t.left+"px"},on:{click:function(x){return n.handleSelectFinger(t)}}})}),0)])]),x("div",{staticClass:"fingerprint-status"},[x("div",{staticClass:"fingerprint-image-container"},[x("div",{staticClass:"delete-button"},[n.selectedFinger&&n.selectedFinger.fingerInfo?x("el-button",{attrs:{type:"text",size:"large"},on:{click:n.handleDeleteFinger}},[x("i",{staticClass:"el-icon-delete",staticStyle:{"font-size":"20px",color:"#999"}})]):n._e()],1),x("img",{staticClass:"fingerprint-image",attrs:{src:n.currentFingerprintImage}}),x("p",{staticClass:"status-text"},[n._v(" "+n._s(n.fingerStatusText)+" ")])])])])])])])},zw=[];e(116);function vw(n){return li({url:"/finger/maxFingerSeq",method:"post",data:n})}function jw(n){return li({url:"/finger/upload",method:"post",data:n})}function ww(n){return li({url:"/finger/findByUserId",method:"post",data:n})}function kw(n){return li({url:"/finger/delete",method:"post",params:n})}var qw={name:"FingerRegisterView",props:{row:{type:Object,default:()=>{}}},data(){return{fingerRegisterStep:0,currentFingerprintImage:e(5987),gifTimeoutId:null,selectedFinger:null,fingerTemp:null,fingerId:null,fid:null,loading:!1,leftFingers:[{label:"大拇指",value:"left-thumb",top:122,left:6,index:0,fingerInfo:null},{label:"食指",value:"left-index",top:20,left:60,index:1,fingerInfo:null},{label:"中指",value:"left-middle",top:3,left:98,index:2,fingerInfo:null},{label:"无名指",value:"left-ring",top:12,left:136,index:3,fingerInfo:null},{label:"小拇指",value:"left-little",top:35,left:176,index:4,fingerInfo:null}],rightFingers:[{label:"大拇指",value:"right-thumb",top:118,left:178,index:5,fingerInfo:null},{label:"食指",value:"right-index",top:16,left:121,index:6,fingerInfo:null},{label:"中指",value:"right-middle",top:0,left:83,index:7,fingerInfo:null},{label:"无名指",value:"right-ring",top:11,left:43,index:8,fingerInfo:null},{label:"小拇指",value:"right-little",top:42,left:5,index:9,fingerInfo:null}]}},computed:{userId(){return this.row.userId},devSn(){return this.$store.getters.getFingerprintDeviceSN},devType(){return 1},tenantId(){return null},leftHandleImg(){return this.selectedFinger&&this.selectedFinger.value.includes("left")?e(5276):e(5039)},rightHandleImg(){return this.selectedFinger&&this.selectedFinger.value.includes("right")?e(6649):e(816)},stepTips(){return-1===this.fingerRegisterStep?"指纹采集异常,请重试!":0===this.fingerRegisterStep?"请选择需要采集的手指":1===this.fingerRegisterStep?"请将手指放在设备上":2===this.fingerRegisterStep?"请再次将手指放在设备上":3===this.fingerRegisterStep?"最后一次将手指放在设备上":4===this.fingerRegisterStep?"正在指纹采集":5===this.fingerRegisterStep?"指纹采集成功":"未知状态"},fingerStatusText(){return-1===this.fingerRegisterStep?"指纹采集异常,请重试!":0===this.fingerRegisterStep?"采集指纹一共需要三次按压":1===this.fingerRegisterStep?"请将手指放在设备上":2===this.fingerRegisterStep?"请再次将手指放在设备上":3===this.fingerRegisterStep?"最后一次将手指放在设备上":4===this.fingerRegisterStep?"正在处理指纹数据...":5===this.fingerRegisterStep?"指纹采集成功":"准备采集指纹"}},watch:{fingerRegisterStep(n){clearTimeout(this.gifTimeoutId);const x=800;1===n||0===n||-1===n?this.currentFingerprintImage=e(5987):2===n?(this.currentFingerprintImage=e(8861),this.gifTimeoutId=setTimeout(()=>{this.currentFingerprintImage=e(1565)},x)):3===n?(this.currentFingerprintImage=e(1970),this.gifTimeoutId=setTimeout(()=>{this.currentFingerprintImage=e(2488)},x)):4===n?(this.currentFingerprintImage=e(4747),this.gifTimeoutId=setTimeout(()=>{this.currentFingerprintImage=e(9251)},x)):5===n&&(this.currentFingerprintImage=e(3997))}},mounted(){this.loadCurrentUserFingerInfo(),this.$authEventBus.$on("startCollectionMessage",this.startCollectionMessage)},beforeDestroy(){clearTimeout(this.gifTimeoutId),this.$authEventBus.$off("startCollectionMessage",this.startCollectionMessage),this.fingerRegisterStep>0&&this.fingerRegisterStep<5&&this.cancelCollection()},methods:{cancelCollection(){this.$authEventBus.$emit("cancelCollection")},handleCancelCollection(){this.$confirm("确定要退出指纹采集吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.cancelCollection(),this.$message.info("已退出指纹采集")}).catch(()=>{})},startCollectionMessage(n){if(console.log("startCollectionMessage:",n),200===n.status||0===n.result){const{count:x,temp:t,image:e}=n.data;console.log(`指纹采集进度: ${x}/4`),1===x?this.fingerRegisterStep=2:2===x?this.fingerRegisterStep=3:3===x?this.fingerRegisterStep=4:4===x&&(this.fingerRegisterStep=5,this.fingerTemp=t,console.log("✅ 指纹采集完成,获取到指纹模板"),this.$nextTick(()=>{this.addFingerprint()})),e&&console.log("收到指纹图像数据")}else console.error("指纹采集失败:",n.msg||"未知错误"),this.fingerRegisterStep=-1,this.$message?.error?.(n.msg||"指纹采集失败,请重试")},handleClose(){},async handleSelectFinger(n){if(this.fingerRegisterStep>0&&this.fingerRegisterStep<5)this.$message({message:"指纹采集尚未完成,请先完成当前采集",type:"warning"});else if(n.fingerInfo)this.selectedFinger=n;else try{const x=await vw({devSn:this.devSn,devType:this.devType,fingerNo:n.index,tenantId:this.tenantId,userId:this.userId});this.fingerId=x.data.fingerId,this.fid=x.data.fingerSeq,this.selectedFinger=n,this.fingerRegisterStep=1,this.fingerTemp=null,console.log(`开始采集 ${n.label} 指纹,fingerId: ${this.fingerId}, fid: ${this.fid}`),this.startCollection()}catch(x){console.error("获取指纹信息失败:",x)}},handleSaveFingerprint(){this.addFingerprint()},handleDeleteFinger(){this.$confirm("确定删除指纹吗?").then(()=>{kw({fingerId:this.selectedFinger.fingerInfo.id}).then(()=>{this.selectedFinger=null,this.fingerRegisterStep=0,this.$message.success("删除成功"),this.loadCurrentUserFingerInfo()})}).catch(()=>{})},startCollection(){this.$authEventBus.$emit("startCollection")},loadCurrentUserFingerInfo(){ww({devType:this.devType,tenantId:this.tenantId,userId:this.userId}).then(n=>{const x=n.data,t=this.leftFingers.map(n=>{const t=x.find(x=>x.fingerNo===n.index);return{...n,fingerInfo:t}}),e=this.rightFingers.map(n=>{const t=x.find(x=>x.fingerNo===n.index);return{...n,fingerInfo:t}});this.leftFingers=t,this.rightFingers=e})},addFingerprint(){this.fingerId?this.fingerTemp?this.selectedFinger?this.fid?(this.loading=!0,console.log("开始保存指纹到服务器..."),jw({data:this.fingerTemp,fingerId:this.fingerId}).then(()=>{console.log("✅ 指纹保存成功"),this.loadCurrentUserFingerInfo(),this.selectedFinger=null,this.fingerRegisterStep=0,this.fingerTemp=null,this.fingerId=null,this.fid=null,this.$message.success("指纹录入成功!")}).catch(n=>{console.error("❌ 指纹保存失败:",n),this.fingerRegisterStep=-1}).finally(()=>{this.loading=!1})):this.$message.error("未获取到指纹序列号"):this.$message.error("请先选择手指"):this.$message.error("未获取到指纹模板"):this.$message.error("未获取到指纹ID")}}},_w=qw,Cw=Ee(_w,bw,zw,!1,null,"de87379c",null),Sw=Cw.exports,Ew={name:"auth-com",components:{FaceRegister:Xj,CardRegister:mw,FingerRegister:Sw},props:{authCollect:{type:Array,default:()=>[]},drawerInfo:{type:Object,default:()=>{}}},data(){return{authList:[],activeName:""}},mounted(){this.h_init()},methods:{h_init(){const n={...Ue};for(let x in Ue)this.authCollect.includes(x)||delete n[x];this.authList=He(n,!1),this.authList.length&&(this.activeName=this.authList[0].value)}}},Dw=Ew,Ow=Ee(Dw,si,hi,!1,null,"112e7717",null),Iw=Ow.exports,Tw=function(){var n=this,x=n._self._c;return x("div",{staticClass:"flex-center align-center h100"},[x("el-empty",{staticStyle:{"font-size":"20px"},attrs:{description:"请先保存用户信息"}})],1)},Aw=[],Nw={name:"empty-view"},Rw=Nw,Mw=Ee(Rw,Tw,Aw,!1,null,"9e253eac",null),Fw=Mw.exports,Pw={name:"user-drawer",components:{UserInfo:oi,AuthCom:Iw,EmptyView:Fw},props:{authCollect:{required:!1,type:Array,default:()=>["face","finger","idCard"]},drawerInfo:{type:Object}},data(){return{visible:!1,loading:!1}},mounted(){this.visible=!0},methods:{closed(){this.$emit("closed")},h_back(){this.visible=!1},async f_save(){try{this.loading=!0;const n=this.$refs["user-info"].h_getFormData();await ze({...n,organId:this.drawerInfo.organ.id}),this.$emit("refresh"),this.visible=!1}finally{this.loading=!1}}}},Lw=Pw,Bw=Ee(Lw,Je,Qe,!1,null,"ee7490ee",null),$w=Bw.exports,Vw=e(7128),Ww=e.n(Vw);class Uw{constructor(n,x={}){this.url=n,this.options={reconnectInterval:5e3,maxReconnectAttempts:10,heartbeatInterval:12e4,...x},this.ws=null,this.reconnectAttempts=0,this.isConnected=!1,this.heartbeatTimer=null,this.eventListeners=new Map,this.onOpen=this.onOpen.bind(this),this.onMessage=this.onMessage.bind(this),this.onError=this.onError.bind(this),this.onClose=this.onClose.bind(this)}connect(){try{this.ws=new WebSocket(this.url),this.ws.onopen=this.onOpen,this.ws.onmessage=this.onMessage,this.ws.onerror=this.onError,this.ws.onclose=this.onClose}catch(n){console.error("WebSocket连接失败:",n),this.handleReconnect()}}onOpen(n){console.log("WebSocket连接成功"),this.isConnected=!0,this.reconnectAttempts=0,this.startHeartbeat(),this.emit("open",n)}onMessage(n){try{const x=JSON.parse(n.data);if(console.log("收到WebSocket消息:",x),"pong"===x.type)return;this.emit("message",x)}catch(x){console.error("解析WebSocket消息失败:",x),this.emit("message",n.data)}}onError(n){console.error("WebSocket错误:",n),this.emit("error",n)}onClose(n){console.log("WebSocket连接关闭:",n.code,n.reason),this.isConnected=!1,this.stopHeartbeat(),this.emit("close",n),1e3!==n.code&&this.handleReconnect()}send(n){if(!this.isConnected||this.ws.readyState!==WebSocket.OPEN)return console.warn("WebSocket未连接,无法发送消息"),!1;try{const x="string"===typeof n?n:JSON.stringify(n);return this.ws.send(x),console.log("发送WebSocket消息:",n),!0}catch(x){return console.error("发送WebSocket消息失败:",x),!1}}on(n,x){this.eventListeners.has(n)||this.eventListeners.set(n,[]),this.eventListeners.get(n).push(x)}off(n,x){const t=this.eventListeners.get(n);if(t){const n=t.indexOf(x);n>-1&&t.splice(n,1)}}emit(n,x){const t=this.eventListeners.get(n);t&&t.forEach(t=>{try{t(x)}catch(e){console.error(`事件监听器执行失败 [${n}]:`,e)}})}handleReconnect(){this.reconnectAttempts<this.options.maxReconnectAttempts?(this.reconnectAttempts++,console.log(`尝试重连WebSocket (${this.reconnectAttempts}/${this.options.maxReconnectAttempts})`),setTimeout(()=>{this.connect()},this.options.reconnectInterval)):(console.error("WebSocket重连次数已达上限"),this.emit("reconnectFailed"))}startHeartbeat(){this.stopHeartbeat(),this.heartbeatTimer=setInterval(()=>{this.isConnected&&this.send({type:"ping",timestamp:Date.now()})},this.options.heartbeatInterval)}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null)}close(){this.stopHeartbeat(),this.ws&&this.ws.close(1e3,"主动关闭"),this.isConnected=!1}getReadyState(){return this.ws?this.ws.readyState:WebSocket.CLOSED}isOpen(){return this.isConnected&&this.ws&&this.ws.readyState===WebSocket.OPEN}}var Hw=Uw,Gw={name:"auth-manage",props:{authCollect:{required:!1,type:Array,default:()=>["face","finger","idCard"]}},components:{OrganTree:Pe,UserTable:Xe,UserDrawer:$w},data(){return{visible:!1,drawerInfo:{},organTreeKey:"1",websocket:null,cardReader:null,fingerprintDeviceCount:0}},mounted(){console.log("LD-AUTH打包时间为",Ww()(1756288944612).format("YYYY-MM-DD HH:mm:ss")),this.$authEventBus.$on("startCollection",this.handleStartCollection),this.$authEventBus.$on("cancelCollection",this.handleCancelCollection),this.initWebSocket()},beforeDestroy(){this.websocket&&(console.log("🔌 组件销毁,关闭WebSocket连接"),this.websocket.close(),this.websocket=null),this.$authEventBus.$off("startCollection",this.handleStartCollection),this.$authEventBus.$off("cancelCollection",this.handleCancelCollection)},methods:{handleCancelCollection(){this.websocket&&this.websocket.send({action:1010})},handleStartCollection(){if(this.$store.getters.getFingerprintDeviceSN){const n={action:1001};this.websocket.send(n)}},initWebSocket(){try{this.websocket=new Hw(`${this.$store.state.websocketUrl}`,{reconnectInterval:5e3,maxReconnectAttempts:10,heartbeatInterval:12e4}),this.websocket.on("open",()=>{this.checkCardReaderConnection(),this.getFingerprintDeviceSN()}),this.websocket.on("message",n=>{console.log("📨 收到WebSocket消息:",n),this.handleWebSocketMessage(n)}),this.websocket.on("error",n=>{console.error("❌ WebSocket连接错误:",n),this.$message?.error?.("WebSocket连接错误")}),this.websocket.on("close",n=>{console.log("🔌 WebSocket连接已关闭:",n.code,n.reason),n.code}),this.websocket.on("reconnectFailed",()=>{console.error("💥 WebSocket重连失败,已达最大重连次数"),this.$message?.error?.("WebSocket连接失败,请检查网络或联系管理员")}),this.websocket.connect()}catch(n){console.error("WebSocket初始化失败:",n),this.$message?.error?.("WebSocket初始化失败")}},handleWebSocketMessage(n){if(n.action)switch(n.action){case 1009:this.handleFingerprintDeviceSNResponse(n);break;case 2001:this.handleCheckCardReaderResponse(n);break;case 2002:this.handleCardReaderListResponse(n);break;case 2003:this.handleOpenCardReaderResponse(n);break;case 2004:this.$authEventBus.$emit("card",n);break;case 1001:this.$authEventBus.$emit("startCollectionMessage",n);break;default:console.log("未知action类型:",n)}else switch(n.type){case"user_update":console.log("用户信息更新:",n.payload),this.f_userData();break;case"organ_update":console.log("组织架构更新:",n.payload),this.f_refreshTree();break;case"auth_status":console.log("认证状态更新:",n.payload),this.$message?.info?.(n.payload.message||"认证状态已更新");break;case"notification":console.log("系统通知:",n.payload),this.$message?.info?.(n.payload.message||"收到系统通知");break;default:console.log("未知消息类型:",n)}},sendWebSocketMessage(n,x={}){if(this.websocket&&this.websocket.isOpen()){const t={type:n,payload:x,timestamp:Date.now()};this.websocket.send(t),console.log("📤 发送WebSocket消息:",t)}},getFingerprintDeviceSN(){console.log("🔢 获取指纹设备SN码...");const n={action:1009};this.websocket.send(n),console.log("📤 发送获取指纹设备SN码消息:",n)},handleFingerprintDeviceSNResponse(n){if(console.log("📊 收到指纹设备SN响应:",n),200===n.status||0===n.result){const x=n.data?.sn||"";x?(console.log("✅ 获取到指纹设备SN:",x),this.$store.dispatch("updateFingerprintDeviceSN",x)):(console.warn("⚠️ 指纹设备SN为空"),this.$store.dispatch("updateFingerprintDeviceSN",""))}else console.error("❌ 获取指纹设备SN失败:",n.msg||"未知错误"),this.$message?.error?.("获取指纹设备SN失败,请检查指纹设备连接")},getFingerprintDeviceStatus(){return{deviceCount:this.fingerprintDeviceCount,hasDevice:this.fingerprintDeviceCount>0,deviceSN:this.$store.getters.getFingerprintDeviceSN}},refreshFingerprintDeviceCount(){this.websocket&&this.websocket.isOpen()?this.getFingerprintDeviceCount():console.warn("WebSocket未连接,无法获取指纹设备数量")},refreshFingerprintDeviceSN(){this.websocket&&this.websocket.isOpen()?this.getFingerprintDeviceSN():console.warn("WebSocket未连接,无法获取指纹设备SN")},refreshAllFingerprintInfo(){this.websocket&&this.websocket.isOpen()?(this.getFingerprintDeviceCount(),this.getFingerprintDeviceSN()):console.warn("WebSocket未连接,无法获取指纹设备信息")},checkCardReaderConnection(){console.log("🔍 检查读卡器连接状态...");const n={action:2001};this.websocket.send(n),console.log("📤 发送检查读卡器连接状态消息:",n)},handleCheckCardReaderResponse(n){console.log("📊 收到读卡器连接状态响应:",n),200===n.status||0===n.result?n.data&&n.data.isOpen?(this.cardReader=n.data.devName||"读卡器",console.log("✅ 读卡器已连接:",this.cardReader)):(console.log("⚠️ 读卡器未连接,开始获取读卡器列表..."),this.getCardReaderList()):(console.error("❌ 检查读卡器状态失败:",n.msg||"未知错误"),this.$message?.error?.(`检查读卡器状态失败: ${n.msg||"未知错误"}`),this.getCardReaderList())},getCardReaderList(){console.log("📡 请求获取读卡器列表...");const n={action:2002};this.websocket.send(n),console.log("📤 发送获取读卡器列表消息:",n)},handleCardReaderListResponse(n){if(console.log("📋 收到读卡器列表响应:",n),n.data&&Array.isArray(n.data)&&n.data.length>0){const x=n.data[0];console.log("🎯 找到读卡器:",x),this.$message?.success?.(`发现读卡器: ${x}`),this.openCardReader(x)}else console.warn("⚠️ 未找到可用的读卡器"),this.$message?.warning?.("未找到可用的读卡器")},openCardReader(n){const x={action:2003,devName:n};this.websocket.send(x)},handleOpenCardReaderResponse(n){0===n.result||200===n.status?this.cardReader=n.devName||"读卡器":this.$message?.error?.(`读卡器打开失败: ${n.message||n.error||"未知错误"}`)},getCardReaderStatus(){return{isConnected:!!this.cardReader,deviceName:this.cardReader}},reinitCardReader(){this.cardReader=null,this.websocket&&this.websocket.isOpen()?this.checkCardReaderConnection():this.$message?.warning?.("WebSocket未连接,无法初始化读卡器")},getAllDeviceStatus(){return{fingerprint:this.getFingerprintDeviceStatus(),cardReader:this.getCardReaderStatus()}},refreshAllDevices(){this.websocket&&this.websocket.isOpen()?(this.refreshAllFingerprintInfo(),this.checkCardReaderConnection()):this.$message?.warning?.("WebSocket未连接,无法刷新设备状态")},f_refreshTree(){this.organTreeKey=this.organTreeKey+1},f_userData(n){n&&this.$set(this.drawerInfo,"organ",n),this.$refs["user-table"].f_init(this.drawerInfo.organ)},h_setVisible(){this.visible=!1},h_setUserId(n,x){this.$set(this.drawerInfo,"userId",n),this.$set(this.drawerInfo,"row",x),this.visible=!0}}},Kw=Gw,Yw=Ee(Kw,r,o,!1,null,"37d6a0fe",null),Xw=Yw.exports;const Jw=new(Ct());var Qw=Jw;const Zw=function(n,x={}){Zw.installed||(n.component(Xw.name,Xw),n.prototype.$authEventBus=Qw,x.baseUrl&&ae.commit("SET_BASE_URL",x.baseUrl),x.authUrl&&ae.commit("SET_AUTH_URL",x.authUrl))};var nk={install:Zw,authManage:Xw},xk=nk}(),i=i["default"],i}()});
|