commit 50f14b1cb5e56e445e54f4e91080dc4ae9814458 Author: Shautvast Date: Fri Mar 29 18:19:38 2024 +0100 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..03e3a98 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +target/ +pkg/ +.DS_Store diff --git a/README.md b/README.md new file mode 100644 index 0000000..2b5eaba --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +_Spiegel_ image filter project (WIP) + +- rust +- wasm + +sample output +![sample](web-client/output.jpg) diff --git a/dist/11dc9380193954aac8c4.module.wasm b/dist/11dc9380193954aac8c4.module.wasm new file mode 100644 index 0000000..1b8e05e Binary files /dev/null and b/dist/11dc9380193954aac8c4.module.wasm differ diff --git a/dist/630027c604733df47374e4f5adb1b7c5.jpg b/dist/630027c604733df47374e4f5adb1b7c5.jpg new file mode 100644 index 0000000..6cf88aa Binary files /dev/null and b/dist/630027c604733df47374e4f5adb1b7c5.jpg differ diff --git a/dist/66d531fb4651c57454ae.module.wasm b/dist/66d531fb4651c57454ae.module.wasm new file mode 100644 index 0000000..59ba1f9 Binary files /dev/null and b/dist/66d531fb4651c57454ae.module.wasm differ diff --git a/dist/796.bundle.js b/dist/796.bundle.js new file mode 100644 index 0000000..9d5ebcd --- /dev/null +++ b/dist/796.bundle.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkphoton_wasm=self.webpackChunkphoton_wasm||[]).push([[796],{796:(_,t,e)=>{e.a(_,(async(_,n)=>{try{e.r(t),e.d(t,{PhotonImage:()=>o.I7$,Rgb:()=>o.Gwx,Rgba:()=>o.xnG,SamplingFilter:()=>o.g4P,__wbg_appendChild_173b88a25c048f2b:()=>o.jGt,__wbg_body_483afe07b0958d3b:()=>o.GM3,__wbg_buffer_fcbfb6d88b2732e9:()=>o.koi,__wbg_call_f96b398515635514:()=>o.RO,__wbg_createElement_5281e2aae74efc9d:()=>o.dcn,__wbg_data_f319d3380b214a26:()=>o.Qw0,__wbg_document_a11e2f345af07033:()=>o.knR,__wbg_drawImage_41f8e8a7fc2b0de3:()=>o.Xc1,__wbg_drawImage_fa7fd856fb164132:()=>o.e5k,__wbg_error_f851667af71bcfc6:()=>o.Xur,__wbg_getContext_62ccb1aa0e6c8b86:()=>o.HpV,__wbg_getImageData_956c421f9b7cdfe7:()=>o.J0M,__wbg_globalThis_d0957e302752547e:()=>o.yYk,__wbg_global_ae2f87312b8987fb:()=>o.b37,__wbg_height_b7046017c4148386:()=>o.oTh,__wbg_height_d65d28af1b6f26d3:()=>o.aWZ,__wbg_height_e41b71b2f3141e8e:()=>o.vhe,__wbg_instanceof_CanvasRenderingContext2d_b4050f3a451ac712:()=>o.AfI,__wbg_instanceof_HtmlCanvasElement_6e58598b4e8b1586:()=>o.UEZ,__wbg_instanceof_Window_f2bf9e8e91f1be0d:()=>o.XYQ,__wbg_length_d9c4ded7e708c6a1:()=>o.YTI,__wbg_new_abda76e883ba8a5f:()=>o.V5T,__wbg_new_bc5d9aad3f9ac80e:()=>o.V8o,__wbg_newnoargs_e643855c6572a4a8:()=>o.IFg,__wbg_newwithu8clampedarrayandsh_c90e0c3609c4ecc2:()=>o.tse,__wbg_putImageData_0009acf77045dec6:()=>o.FiA,__wbg_random_f67f027fd89c6d9c:()=>o.kXr,__wbg_self_b9aad7f1c618bfaf:()=>o.BZg,__wbg_set_4b3aa8445ac1e91c:()=>o.cMS,__wbg_set_wasm:()=>o.lIU,__wbg_setheight_0d2b445bb6a5a3f2:()=>o.Zm5,__wbg_settextContent_ea2ce5e8fc889af7:()=>o.Jmi,__wbg_setwidth_885d5dd3c7f48f41:()=>o.RcJ,__wbg_stack_658279fe44541cf6:()=>o.u$W,__wbg_width_020d7bde350571e9:()=>o.QV5,__wbg_width_250e8da00ab1c884:()=>o.pvC,__wbg_width_3a395887a577233b:()=>o.P0_,__wbg_window_55e469842c98b086:()=>o.DVj,__wbindgen_debug_string:()=>o.rl,__wbindgen_is_undefined:()=>o.vUM,__wbindgen_memory:()=>o.Py0,__wbindgen_object_clone_ref:()=>o.BZb,__wbindgen_object_drop_ref:()=>o.bkt,__wbindgen_throw:()=>o.Qnr,add_noise_rand:()=>o.Bku,adjust_contrast:()=>o.toK,alter_blue_channel:()=>o.UPE,alter_channel:()=>o.PEp,alter_channels:()=>o.aQi,alter_green_channel:()=>o.jaZ,alter_red_channel:()=>o.Lmq,alter_two_channels:()=>o.B1U,apply_gradient:()=>o.acr,b_grayscale:()=>o.DPd,base64_to_image:()=>o.oLA,base64_to_vec:()=>o.X4n,blend:()=>o.auw,box_blur:()=>o.Yww,cali:()=>o._JR,color_horizontal_strips:()=>o.JEN,color_vertical_strips:()=>o.LwY,colorize:()=>o.qLu,create_gradient:()=>o.sgf,crop:()=>o.B$,crop_img_browser:()=>o.uAI,darken_hsl:()=>o.i5r,darken_hsluv:()=>o.HZB,darken_hsv:()=>o.WU6,darken_lch:()=>o.I2_,decompose_max:()=>o.xDb,decompose_min:()=>o.frd,desaturate:()=>o.Vlo,desaturate_hsl:()=>o.vUp,desaturate_hsluv:()=>o.AVK,desaturate_hsv:()=>o.v9x,desaturate_lch:()=>o.V$S,detect_135_deg_lines:()=>o.nv5,detect_45_deg_lines:()=>o.roC,detect_horizontal_lines:()=>o.B1d,detect_vertical_lines:()=>o.NU_,dither:()=>o.P5D,dramatic:()=>o.eKj,draw_text:()=>o.NlD,draw_text_with_border:()=>o.Hew,duotone:()=>o.Xu6,duotone_horizon:()=>o.zQP,duotone_lilac:()=>o.NCO,duotone_ochre:()=>o.ZBh,duotone_tint:()=>o.Dre,duotone_violette:()=>o.i65,edge_detection:()=>o.uAY,edge_one:()=>o.HKI,emboss:()=>o.cup,filter:()=>o.pbD,firenze:()=>o.CYH,fliph:()=>o.iz4,flipv:()=>o.i0i,frosted_glass:()=>o.TW1,g_grayscale:()=>o.Yo,gamma_correction:()=>o.LCQ,gaussian_blur:()=>o.wI0,get_image_data:()=>o.KXr,golden:()=>o.MH3,grayscale:()=>o.CML,grayscale_human_corrected:()=>o.USM,grayscale_shades:()=>o.d59,horizontal_strips:()=>o.Hrd,hsl:()=>o.KIW,hsluv:()=>o.pJW,hsv:()=>o.ydJ,hue_rotate_hsl:()=>o.BGv,hue_rotate_hsluv:()=>o.q7J,hue_rotate_hsv:()=>o.BPz,hue_rotate_lch:()=>o.xcv,identity:()=>o.D_O,inc_brightness:()=>o.rk3,invert:()=>o.B8R,laplace:()=>o.t4z,lch:()=>o.s1l,lighten_hsl:()=>o.OGd,lighten_hsluv:()=>o.ZHh,lighten_hsv:()=>o.Ohy,lighten_lch:()=>o.Oyp,lix:()=>o.ck5,lofi:()=>o.f30,mix_with_colour:()=>o.hh7,monochrome:()=>o.SUV,monochrome_tint:()=>o.Ade,multiple_offsets:()=>o.yzg,neue:()=>o.Sds,noise_reduction:()=>o.BND,normalize:()=>o.S86,obsidian:()=>o.Aj6,offset:()=>o.cYW,offset_blue:()=>o.Jf2,offset_green:()=>o.i3h,offset_red:()=>o.Ewz,oil:()=>o.XW8,open_image:()=>o.tdG,padding_bottom:()=>o.s$1,padding_left:()=>o.Ues,padding_right:()=>o.ZV_,padding_top:()=>o.oSr,padding_uniform:()=>o.vVP,pastel_pink:()=>o.X3k,pink_noise:()=>o.qOh,pixelize:()=>o.z2M,prewitt_horizontal:()=>o.byf,primary:()=>o.zBe,putImageData:()=>o.$Yh,r_grayscale:()=>o.DXU,remove_blue_channel:()=>o.mlx,remove_channel:()=>o.THz,remove_green_channel:()=>o.BAV,remove_red_channel:()=>o.Vwv,resample:()=>o.cgX,resize:()=>o.XRe,resize_img_browser:()=>o.erT,rotate:()=>o.e$E,run:()=>o.eFU,ryo:()=>o.Db_,saturate_hsl:()=>o._GW,saturate_hsluv:()=>o.rUl,saturate_hsv:()=>o.Mer,saturate_lch:()=>o.mue,seam_carve:()=>o.XSR,selective_color_convert:()=>o.JYb,selective_desaturate:()=>o.w1S,selective_greyscale:()=>o.vfj,selective_hue_rotate:()=>o.Uoi,selective_lighten:()=>o.xiN,selective_saturate:()=>o.fUI,sepia:()=>o.TLo,sharpen:()=>o.gRx,single_channel_grayscale:()=>o.z$E,sobel_horizontal:()=>o.Lwg,sobel_vertical:()=>o.$Rs,solarize:()=>o.Y1x,solarize_retimg:()=>o.VZH,swap_channels:()=>o.BHD,threshold:()=>o.ENv,tint:()=>o.uqh,to_image_data:()=>o.xtM,to_raw_pixels:()=>o.hBj,vertical_strips:()=>o.XeY,watermark:()=>o.pwm});var r=e(124),o=e(176),i=_([r]);r=(i.then?(await i)():i)[0],(0,o.lIU)(r),n()}catch(_){n(_)}}))},176:(_,t,e)=>{let n;function r(_){n=_}e.d(t,{$Rs:()=>zt,$Yh:()=>_e,AVK:()=>A_,Ade:()=>Mt,AfI:()=>ve,Aj6:()=>Ht,B$:()=>K,B1U:()=>D,B1d:()=>lt,B8R:()=>X,BAV:()=>j,BGv:()=>h_,BHD:()=>E,BND:()=>gt,BPz:()=>m_,BZb:()=>Se,BZg:()=>Je,Bku:()=>Wt,CML:()=>S,CYH:()=>$t,DPd:()=>N,DVj:()=>Oe,DXU:()=>G,D_O:()=>st,Db_:()=>Ut,Dre:()=>At,ENv:()=>F,Ewz:()=>S_,FiA:()=>Ie,GM3:()=>me,Gwx:()=>ue,HKI:()=>yt,HZB:()=>V_,Hew:()=>Z_,HpV:()=>Te,Hrd:()=>K_,I2_:()=>j_,I7$:()=>be,IFg:()=>$e,J0M:()=>ze,JEN:()=>_t,JYb:()=>T,Jf2:()=>O_,Jmi:()=>Re,KIW:()=>d_,KXr:()=>Kt,LCQ:()=>w_,Lmq:()=>x,LwY:()=>et,Lwg:()=>kt,MH3:()=>Vt,Mer:()=>I_,NCO:()=>Rt,NU_:()=>dt,NlD:()=>$_,OGd:()=>C_,Ohy:()=>B_,Oyp:()=>D_,P0_:()=>Ve,P5D:()=>at,PEp:()=>k,Py0:()=>tn,QV5:()=>De,Qnr:()=>_n,Qw0:()=>Ce,RO:()=>He,RcJ:()=>Ee,S86:()=>it,SUV:()=>$,Sds:()=>It,THz:()=>C,TLo:()=>H,TW1:()=>rt,UEZ:()=>je,UPE:()=>I,USM:()=>J,Ues:()=>a_,Uoi:()=>M,V$S:()=>Y_,V5T:()=>fe,V8o:()=>Qe,VZH:()=>Q_,Vlo:()=>O,Vwv:()=>B,WU6:()=>X_,X3k:()=>jt,X4n:()=>re,XRe:()=>r_,XSR:()=>o_,XW8:()=>nt,XYQ:()=>pe,Xc1:()=>xe,XeY:()=>tt,Xu6:()=>ct,Xur:()=>de,Y1x:()=>G_,YTI:()=>qe,Yo:()=>Q,Yww:()=>wt,ZBh:()=>Zt,ZHh:()=>U_,ZV_:()=>c_,Zm5:()=>Me,_GW:()=>k_,_JR:()=>Et,aQi:()=>U,aWZ:()=>Ue,acr:()=>Pt,auw:()=>Jt,b37:()=>We,bkt:()=>we,byf:()=>xt,cMS:()=>Ne,cYW:()=>H_,cgX:()=>s_,ck5:()=>Dt,cup:()=>vt,d59:()=>L,dcn:()=>ye,e$E:()=>u_,e5k:()=>ke,eFU:()=>Nt,eKj:()=>Xt,erT:()=>n_,f30:()=>Bt,fUI:()=>R,frd:()=>P,g4P:()=>ge,gRx:()=>bt,hBj:()=>ee,hh7:()=>R_,i0i:()=>e_,i3h:()=>J_,i5r:()=>E_,i65:()=>Tt,iz4:()=>t_,jGt:()=>Ze,jaZ:()=>z,kXr:()=>Fe,knR:()=>he,koi:()=>Ge,lIU:()=>r,mlx:()=>V,mue:()=>x_,nv5:()=>ht,oLA:()=>ne,oSr:()=>g_,oTh:()=>Xe,pJW:()=>f_,pbD:()=>Ct,pvC:()=>Ye,pwm:()=>St,q7J:()=>v_,qLu:()=>L_,qOh:()=>Lt,rUl:()=>z_,rk3:()=>N_,rl:()=>Ke,roC:()=>pt,s$1:()=>b_,s1l:()=>l_,sgf:()=>Ot,t4z:()=>mt,tdG:()=>te,toK:()=>q_,tse:()=>Be,u$W:()=>le,uAI:()=>__,uAY:()=>ut,uqh:()=>F_,v9x:()=>M_,vUM:()=>Le,vUp:()=>T_,vVP:()=>i_,vfj:()=>Z,vhe:()=>Ae,w1S:()=>A,wI0:()=>ft,xDb:()=>W,xcv:()=>y_,xiN:()=>Y,xnG:()=>se,xtM:()=>oe,yYk:()=>Pe,ydJ:()=>p_,yzg:()=>P_,z$E:()=>q,z2M:()=>ot,zBe:()=>W_,zQP:()=>Yt}),_=e.hmd(_);const o=new Array(128).fill(void 0);function i(_){return o[_]}o.push(void 0,null,!0,!1);let a=o.length;function c(_){const t=i(_);return function(_){_<132||(o[_]=a,a=_)}(_),t}function g(_){a===o.length&&o.push(o.length+1);const t=a;return a=o[t],o[t]=_,t}function b(_){const t=typeof _;if("number"==t||"boolean"==t||null==_)return`${_}`;if("string"==t)return`"${_}"`;if("symbol"==t){const t=_.description;return null==t?"Symbol":`Symbol(${t})`}if("function"==t){const t=_.name;return"string"==typeof t&&t.length>0?`Function(${t})`:"Function"}if(Array.isArray(_)){const t=_.length;let e="[";t>0&&(e+=b(_[0]));for(let n=1;n1))return toString.call(_);if(n=e[1],"Object"==n)try{return"Object("+JSON.stringify(_)+")"}catch(_){return"Object"}return _ instanceof Error?`${_.name}: ${_.message}\n${_.stack}`:n}let u=0,s=null;function w(){return null!==s&&0!==s.byteLength||(s=new Uint8Array(n.memory.buffer)),s}let f=new("undefined"==typeof TextEncoder?(0,_.require)("util").TextEncoder:TextEncoder)("utf-8");const l="function"==typeof f.encodeInto?function(_,t){return f.encodeInto(_,t)}:function(_,t){const e=f.encode(_);return t.set(e),{read:_.length,written:e.length}};function d(_,t,e){if(void 0===e){const e=f.encode(_),n=t(e.length)>>>0;return w().subarray(n,n+e.length).set(e),u=e.length,n}let n=_.length,r=t(n)>>>0;const o=w();let i=0;for(;i127)break;o[r+i]=t}if(i!==n){0!==i&&(_=_.slice(i)),r=e(r,n,n=i+3*_.length)>>>0;const t=w().subarray(r+i,r+n);i+=l(_,t).written}return u=i,r}let p=null;function h(){return null!==p&&0!==p.byteLength||(p=new Int32Array(n.memory.buffer)),p}let m=new("undefined"==typeof TextDecoder?(0,_.require)("util").TextDecoder:TextDecoder)("utf-8",{ignoreBOM:!0,fatal:!0});function y(_,t){return _>>>=0,m.decode(w().subarray(_,_+t))}function v(_,t){if(!(_ instanceof t))throw new Error(`expected instance of ${t.name}`);return _.ptr}function k(_,t,e){v(_,be),n.alter_channel(_.__wbg_ptr,t,e)}function x(_,t){v(_,be),n.alter_red_channel(_.__wbg_ptr,t)}function z(_,t){v(_,be),n.alter_green_channel(_.__wbg_ptr,t)}function I(_,t){v(_,be),n.alter_blue_channel(_.__wbg_ptr,t)}function D(_,t,e,r,o){v(_,be),n.alter_two_channels(_.__wbg_ptr,t,e,r,o)}function U(_,t,e,r){v(_,be),n.alter_channels(_.__wbg_ptr,t,e,r)}function C(_,t,e){v(_,be),n.remove_channel(_.__wbg_ptr,t,e)}function B(_,t){v(_,be),n.remove_red_channel(_.__wbg_ptr,t)}function j(_,t){v(_,be),n.remove_green_channel(_.__wbg_ptr,t)}function V(_,t){v(_,be),n.remove_blue_channel(_.__wbg_ptr,t)}function E(_,t,e){v(_,be),n.swap_channels(_.__wbg_ptr,t,e)}function X(_){v(_,be),n.invert(_.__wbg_ptr)}function M(_,t,e){v(_,be),v(t,ue);var r=t.__destroy_into_raw();n.selective_hue_rotate(_.__wbg_ptr,r,e)}function T(_,t,e,r){v(_,be),v(t,ue);var o=t.__destroy_into_raw();v(e,ue);var i=e.__destroy_into_raw();n.selective_color_convert(_.__wbg_ptr,o,i,r)}function Y(_,t,e){v(_,be),v(t,ue);var r=t.__destroy_into_raw();n.selective_lighten(_.__wbg_ptr,r,e)}function A(_,t,e){v(_,be),v(t,ue);var r=t.__destroy_into_raw();n.selective_desaturate(_.__wbg_ptr,r,e)}function R(_,t,e){v(_,be),v(t,ue);var r=t.__destroy_into_raw();n.selective_saturate(_.__wbg_ptr,r,e)}function Z(_,t){v(_,be);var e=_.__destroy_into_raw();v(t,ue);var r=t.__destroy_into_raw();n.selective_greyscale(e,r)}function $(_,t,e,r){v(_,be),n.monochrome(_.__wbg_ptr,t,e,r)}function H(_){v(_,be),n.sepia(_.__wbg_ptr)}function S(_){v(_,be),n.grayscale(_.__wbg_ptr)}function J(_){v(_,be),n.grayscale_human_corrected(_.__wbg_ptr)}function O(_){v(_,be),n.desaturate(_.__wbg_ptr)}function P(_){v(_,be),n.decompose_min(_.__wbg_ptr)}function W(_){v(_,be),n.decompose_max(_.__wbg_ptr)}function L(_,t){v(_,be),n.grayscale_shades(_.__wbg_ptr,t)}function G(_){v(_,be),n.r_grayscale(_.__wbg_ptr)}function Q(_){v(_,be),n.g_grayscale(_.__wbg_ptr)}function N(_){v(_,be),n.b_grayscale(_.__wbg_ptr)}function q(_,t){v(_,be),n.single_channel_grayscale(_.__wbg_ptr,t)}function F(_,t){v(_,be),n.threshold(_.__wbg_ptr,t)}function K(_,t,e,r,o){v(_,be);const i=n.crop(_.__wbg_ptr,t,e,r,o);return be.__wrap(i)}function __(_,t,e,r,o){return c(n.crop_img_browser(g(_),t,e,r,o))}function t_(_){v(_,be),n.fliph(_.__wbg_ptr)}function e_(_){v(_,be),n.flipv(_.__wbg_ptr)}function n_(_,t,e,r){return v(_,be),c(n.resize_img_browser(_.__wbg_ptr,t,e,r))}function r_(_,t,e,r){v(_,be);const o=n.resize(_.__wbg_ptr,t,e,r);return be.__wrap(o)}function o_(_,t,e){v(_,be);const r=n.seam_carve(_.__wbg_ptr,t,e);return be.__wrap(r)}function i_(_,t,e){v(_,be),v(e,se);var r=e.__destroy_into_raw();const o=n.padding_uniform(_.__wbg_ptr,t,r);return be.__wrap(o)}function a_(_,t,e){v(_,be),v(e,se);var r=e.__destroy_into_raw();const o=n.padding_left(_.__wbg_ptr,t,r);return be.__wrap(o)}function c_(_,t,e){v(_,be),v(e,se);var r=e.__destroy_into_raw();const o=n.padding_right(_.__wbg_ptr,t,r);return be.__wrap(o)}function g_(_,t,e){v(_,be),v(e,se);var r=e.__destroy_into_raw();const o=n.padding_top(_.__wbg_ptr,t,r);return be.__wrap(o)}function b_(_,t,e){v(_,be),v(e,se);var r=e.__destroy_into_raw();const o=n.padding_bottom(_.__wbg_ptr,t,r);return be.__wrap(o)}function u_(_,t){v(_,be);const e=n.rotate(_.__wbg_ptr,t);return be.__wrap(e)}function s_(_,t,e){v(_,be);const r=n.resample(_.__wbg_ptr,t,e);return be.__wrap(r)}function w_(_,t,e,r){v(_,be),n.gamma_correction(_.__wbg_ptr,t,e,r)}function f_(_,t,e){v(_,be);const r=d(t,n.__wbindgen_malloc,n.__wbindgen_realloc),o=u;n.hsluv(_.__wbg_ptr,r,o,e)}function l_(_,t,e){v(_,be);const r=d(t,n.__wbindgen_malloc,n.__wbindgen_realloc),o=u;n.lch(_.__wbg_ptr,r,o,e)}function d_(_,t,e){v(_,be);const r=d(t,n.__wbindgen_malloc,n.__wbindgen_realloc),o=u;n.hsl(_.__wbg_ptr,r,o,e)}function p_(_,t,e){v(_,be);const r=d(t,n.__wbindgen_malloc,n.__wbindgen_realloc),o=u;n.hsv(_.__wbg_ptr,r,o,e)}function h_(_,t){v(_,be),n.hue_rotate_hsl(_.__wbg_ptr,t)}function m_(_,t){v(_,be),n.hue_rotate_hsv(_.__wbg_ptr,t)}function y_(_,t){v(_,be),n.hue_rotate_lch(_.__wbg_ptr,t)}function v_(_,t){v(_,be),n.hue_rotate_hsluv(_.__wbg_ptr,t)}function k_(_,t){v(_,be),n.saturate_hsl(_.__wbg_ptr,t)}function x_(_,t){v(_,be),n.saturate_lch(_.__wbg_ptr,t)}function z_(_,t){v(_,be),n.saturate_hsluv(_.__wbg_ptr,t)}function I_(_,t){v(_,be),n.saturate_hsv(_.__wbg_ptr,t)}function D_(_,t){v(_,be),n.lighten_lch(_.__wbg_ptr,t)}function U_(_,t){v(_,be),n.lighten_hsluv(_.__wbg_ptr,t)}function C_(_,t){v(_,be),n.lighten_hsl(_.__wbg_ptr,t)}function B_(_,t){v(_,be),n.lighten_hsv(_.__wbg_ptr,t)}function j_(_,t){v(_,be),n.darken_lch(_.__wbg_ptr,t)}function V_(_,t){v(_,be),n.darken_hsluv(_.__wbg_ptr,t)}function E_(_,t){v(_,be),n.darken_hsl(_.__wbg_ptr,t)}function X_(_,t){v(_,be),n.darken_hsv(_.__wbg_ptr,t)}function M_(_,t){v(_,be),n.desaturate_hsv(_.__wbg_ptr,t)}function T_(_,t){v(_,be),n.desaturate_hsl(_.__wbg_ptr,t)}function Y_(_,t){v(_,be),n.desaturate_lch(_.__wbg_ptr,t)}function A_(_,t){v(_,be),n.desaturate_hsluv(_.__wbg_ptr,t)}function R_(_,t,e){v(_,be),v(t,ue);var r=t.__destroy_into_raw();n.mix_with_colour(_.__wbg_ptr,r,e)}function Z_(_,t,e,r){v(_,be);const o=d(t,n.__wbindgen_malloc,n.__wbindgen_realloc),i=u;n.draw_text_with_border(_.__wbg_ptr,o,i,e,r)}function $_(_,t,e,r){v(_,be);const o=d(t,n.__wbindgen_malloc,n.__wbindgen_realloc),i=u;n.draw_text(_.__wbg_ptr,o,i,e,r)}function H_(_,t,e){v(_,be),n.offset(_.__wbg_ptr,t,e)}function S_(_,t){v(_,be),n.offset_red(_.__wbg_ptr,t)}function J_(_,t){v(_,be),n.offset_green(_.__wbg_ptr,t)}function O_(_,t){v(_,be),n.offset_blue(_.__wbg_ptr,t)}function P_(_,t,e,r){v(_,be),n.multiple_offsets(_.__wbg_ptr,t,e,r)}function W_(_){v(_,be),n.primary(_.__wbg_ptr)}function L_(_){v(_,be),n.colorize(_.__wbg_ptr)}function G_(_){v(_,be),n.solarize(_.__wbg_ptr)}function Q_(_){v(_,be);const t=n.solarize_retimg(_.__wbg_ptr);return be.__wrap(t)}function N_(_,t){v(_,be),n.inc_brightness(_.__wbg_ptr,t)}function q_(_,t){v(_,be),n.adjust_contrast(_.__wbg_ptr,t)}function F_(_,t,e,r){v(_,be),n.tint(_.__wbg_ptr,t,e,r)}function K_(_,t){v(_,be),n.horizontal_strips(_.__wbg_ptr,t)}function _t(_,t,e){v(_,be),v(e,ue);var r=e.__destroy_into_raw();n.color_horizontal_strips(_.__wbg_ptr,t,r)}function tt(_,t){v(_,be),n.vertical_strips(_.__wbg_ptr,t)}function et(_,t,e){v(_,be),v(e,ue);var r=e.__destroy_into_raw();n.color_vertical_strips(_.__wbg_ptr,t,r)}function nt(_,t,e){v(_,be),n.oil(_.__wbg_ptr,t,e)}function rt(_){v(_,be),n.frosted_glass(_.__wbg_ptr)}function ot(_,t){v(_,be),n.pixelize(_.__wbg_ptr,t)}function it(_){v(_,be),n.normalize(_.__wbg_ptr)}function at(_,t){v(_,be),n.dither(_.__wbg_ptr,t)}function ct(_,t,e){v(_,be),v(t,ue);var r=t.__destroy_into_raw();v(e,ue);var o=e.__destroy_into_raw();n.duotone(_.__wbg_ptr,r,o)}function gt(_){v(_,be),n.noise_reduction(_.__wbg_ptr)}function bt(_){v(_,be),n.sharpen(_.__wbg_ptr)}function ut(_){v(_,be),n.edge_detection(_.__wbg_ptr)}function st(_){v(_,be),n.identity(_.__wbg_ptr)}function wt(_){v(_,be),n.box_blur(_.__wbg_ptr)}function ft(_,t){v(_,be),n.gaussian_blur(_.__wbg_ptr,t)}function lt(_){v(_,be),n.detect_horizontal_lines(_.__wbg_ptr)}function dt(_){v(_,be),n.detect_vertical_lines(_.__wbg_ptr)}function pt(_){v(_,be),n.detect_45_deg_lines(_.__wbg_ptr)}function ht(_){v(_,be),n.detect_135_deg_lines(_.__wbg_ptr)}function mt(_){v(_,be),n.laplace(_.__wbg_ptr)}function yt(_){v(_,be),n.edge_one(_.__wbg_ptr)}function vt(_){v(_,be),n.emboss(_.__wbg_ptr)}function kt(_){v(_,be),n.sobel_horizontal(_.__wbg_ptr)}function xt(_){v(_,be),n.prewitt_horizontal(_.__wbg_ptr)}function zt(_){v(_,be),n.sobel_vertical(_.__wbg_ptr)}function It(_){v(_,be),n.neue(_.__wbg_ptr)}function Dt(_){v(_,be),n.lix(_.__wbg_ptr)}function Ut(_){v(_,be),n.ryo(_.__wbg_ptr)}function Ct(_,t){v(_,be);const e=d(t,n.__wbindgen_malloc,n.__wbindgen_realloc),r=u;n.filter(_.__wbg_ptr,e,r)}function Bt(_){v(_,be),n.lofi(_.__wbg_ptr)}function jt(_){v(_,be),n.pastel_pink(_.__wbg_ptr)}function Vt(_){v(_,be),n.golden(_.__wbg_ptr)}function Et(_){v(_,be),n.cali(_.__wbg_ptr)}function Xt(_){v(_,be),n.dramatic(_.__wbg_ptr)}function Mt(_,t){v(_,be),v(t,ue);var e=t.__destroy_into_raw();n.monochrome_tint(_.__wbg_ptr,e)}function Tt(_){v(_,be),n.duotone_violette(_.__wbg_ptr)}function Yt(_){v(_,be),n.duotone_horizon(_.__wbg_ptr)}function At(_,t){v(_,be),v(t,ue);var e=t.__destroy_into_raw();n.duotone_tint(_.__wbg_ptr,e)}function Rt(_){v(_,be),n.duotone_lilac(_.__wbg_ptr)}function Zt(_){v(_,be),n.duotone_ochre(_.__wbg_ptr)}function $t(_){v(_,be),n.firenze(_.__wbg_ptr)}function Ht(_){v(_,be),n.obsidian(_.__wbg_ptr)}function St(_,t,e,r){v(_,be),v(t,be),n.watermark(_.__wbg_ptr,t.__wbg_ptr,e,r)}function Jt(_,t,e){v(_,be),v(t,be);const r=d(e,n.__wbindgen_malloc,n.__wbindgen_realloc),o=u;n.blend(_.__wbg_ptr,t.__wbg_ptr,r,o)}function Ot(_,t){const e=n.create_gradient(_,t);return be.__wrap(e)}function Pt(_){v(_,be),n.apply_gradient(_.__wbg_ptr)}function Wt(_){v(_,be),n.add_noise_rand(_.__wbg_ptr)}function Lt(_){v(_,be),n.pink_noise(_.__wbg_ptr)}function Gt(_,t){const e=t(1*_.length)>>>0;return w().set(_,e/1),u=_.length,e}function Qt(_,t){return _>>>=0,w().subarray(_/1,_/1+t)}function Nt(){try{const t=n.__wbindgen_add_to_stack_pointer(-16);n.run(t);var _=h()[t/4+0];if(h()[t/4+1])throw c(_)}finally{n.__wbindgen_add_to_stack_pointer(16)}}m.decode();let qt=128;function Ft(_){if(1==qt)throw new Error("out of js stack");return o[--qt]=_,qt}function Kt(_,t){try{return c(n.get_image_data(Ft(_),Ft(t)))}finally{o[qt++]=void 0,o[qt++]=void 0}}function _e(_,t,e){v(e,be);var r=e.__destroy_into_raw();n.putImageData(g(_),g(t),r)}function te(_,t){const e=n.open_image(g(_),g(t));return be.__wrap(e)}function ee(_){try{const o=n.__wbindgen_add_to_stack_pointer(-16);n.to_raw_pixels(o,g(_));var t=h()[o/4+0],e=h()[o/4+1],r=Qt(t,e).slice();return n.__wbindgen_free(t,1*e),r}finally{n.__wbindgen_add_to_stack_pointer(16)}}function ne(_){const t=d(_,n.__wbindgen_malloc,n.__wbindgen_realloc),e=u,r=n.base64_to_image(t,e);return be.__wrap(r)}function re(_){try{const o=n.__wbindgen_add_to_stack_pointer(-16),i=d(_,n.__wbindgen_malloc,n.__wbindgen_realloc),a=u;n.base64_to_vec(o,i,a);var t=h()[o/4+0],e=h()[o/4+1],r=Qt(t,e).slice();return n.__wbindgen_free(t,1*e),r}finally{n.__wbindgen_add_to_stack_pointer(16)}}function oe(_){v(_,be);var t=_.__destroy_into_raw();return c(n.to_image_data(t))}function ie(_){return null==_}function ae(_,t){try{return _.apply(this,t)}catch(_){n.__wbindgen_exn_store(g(_))}}let ce=null;const ge=Object.freeze({Nearest:1,1:"Nearest",Triangle:2,2:"Triangle",CatmullRom:3,3:"CatmullRom",Gaussian:4,4:"Gaussian",Lanczos3:5,5:"Lanczos3"});class be{static __wrap(_){_>>>=0;const t=Object.create(be.prototype);return t.__wbg_ptr=_,t}__destroy_into_raw(){const _=this.__wbg_ptr;return this.__wbg_ptr=0,_}free(){const _=this.__destroy_into_raw();n.__wbg_photonimage_free(_)}constructor(_,t,e){const r=Gt(_,n.__wbindgen_malloc),o=u,i=n.photonimage_new(r,o,t,e);return be.__wrap(i)}static new_from_base64(_){const t=d(_,n.__wbindgen_malloc,n.__wbindgen_realloc),e=u,r=n.base64_to_image(t,e);return be.__wrap(r)}static new_from_byteslice(_){const t=Gt(_,n.__wbindgen_malloc),e=u,r=n.photonimage_new_from_byteslice(t,e);return be.__wrap(r)}static new_from_blob(_){const t=n.photonimage_new_from_blob(g(_));return be.__wrap(t)}static new_from_image(_){const t=n.photonimage_new_from_image(g(_));return be.__wrap(t)}get_width(){return n.photonimage_get_width(this.__wbg_ptr)>>>0}get_raw_pixels(){try{const r=n.__wbindgen_add_to_stack_pointer(-16);n.photonimage_get_raw_pixels(r,this.__wbg_ptr);var _=h()[r/4+0],t=h()[r/4+1],e=Qt(_,t).slice();return n.__wbindgen_free(_,1*t),e}finally{n.__wbindgen_add_to_stack_pointer(16)}}get_height(){return n.photonimage_get_height(this.__wbg_ptr)>>>0}get_base64(){let _,t;try{const o=n.__wbindgen_add_to_stack_pointer(-16);n.photonimage_get_base64(o,this.__wbg_ptr);var e=h()[o/4+0],r=h()[o/4+1];return _=e,t=r,y(e,r)}finally{n.__wbindgen_add_to_stack_pointer(16),n.__wbindgen_free(_,t)}}get_bytes(){try{const r=n.__wbindgen_add_to_stack_pointer(-16);n.photonimage_get_bytes(r,this.__wbg_ptr);var _=h()[r/4+0],t=h()[r/4+1],e=Qt(_,t).slice();return n.__wbindgen_free(_,1*t),e}finally{n.__wbindgen_add_to_stack_pointer(16)}}get_bytes_jpeg(_){try{const o=n.__wbindgen_add_to_stack_pointer(-16);n.photonimage_get_bytes_jpeg(o,this.__wbg_ptr,_);var t=h()[o/4+0],e=h()[o/4+1],r=Qt(t,e).slice();return n.__wbindgen_free(t,1*e),r}finally{n.__wbindgen_add_to_stack_pointer(16)}}get_bytes_webp(){try{const r=n.__wbindgen_add_to_stack_pointer(-16);n.photonimage_get_bytes_webp(r,this.__wbg_ptr);var _=h()[r/4+0],t=h()[r/4+1],e=Qt(_,t).slice();return n.__wbindgen_free(_,1*t),e}finally{n.__wbindgen_add_to_stack_pointer(16)}}get_image_data(){return c(n.photonimage_get_image_data(this.__wbg_ptr))}set_imgdata(_){n.photonimage_set_imgdata(this.__wbg_ptr,g(_))}}class ue{static __wrap(_){_>>>=0;const t=Object.create(ue.prototype);return t.__wbg_ptr=_,t}__destroy_into_raw(){const _=this.__wbg_ptr;return this.__wbg_ptr=0,_}free(){const _=this.__destroy_into_raw();n.__wbg_rgb_free(_)}constructor(_,t,e){const r=n.rgb_new(_,t,e);return ue.__wrap(r)}set_red(_){n.rgb_set_red(this.__wbg_ptr,_)}set_green(_){n.rgb_set_green(this.__wbg_ptr,_)}set_blue(_){n.rgb_set_blue(this.__wbg_ptr,_)}get_red(){return n.rgb_get_red(this.__wbg_ptr)}get_green(){return n.rgb_get_green(this.__wbg_ptr)}get_blue(){return n.rgb_get_blue(this.__wbg_ptr)}}class se{static __wrap(_){_>>>=0;const t=Object.create(se.prototype);return t.__wbg_ptr=_,t}__destroy_into_raw(){const _=this.__wbg_ptr;return this.__wbg_ptr=0,_}free(){const _=this.__destroy_into_raw();n.__wbg_rgba_free(_)}constructor(_,t,e,r){const o=n.rgba_new(_,t,e,r);return se.__wrap(o)}set_red(_){n.rgb_set_red(this.__wbg_ptr,_)}set_green(_){n.rgb_set_green(this.__wbg_ptr,_)}set_blue(_){n.rgb_set_blue(this.__wbg_ptr,_)}set_alpha(_){n.rgba_set_alpha(this.__wbg_ptr,_)}get_red(){return n.rgb_get_red(this.__wbg_ptr)}get_green(){return n.rgb_get_green(this.__wbg_ptr)}get_blue(){return n.rgb_get_blue(this.__wbg_ptr)}get_alpha(){return n.rgba_get_alpha(this.__wbg_ptr)}}function we(_){c(_)}function fe(){return g(new Error)}function le(_,t){const e=d(i(t).stack,n.__wbindgen_malloc,n.__wbindgen_realloc),r=u;h()[_/4+1]=r,h()[_/4+0]=e}function de(_,t){let e,r;try{e=_,r=t,console.error(y(_,t))}finally{n.__wbindgen_free(e,r)}}function pe(_){let t;try{t=i(_)instanceof Window}catch{t=!1}return t}function he(_){const t=i(_).document;return ie(t)?0:g(t)}function me(_){const t=i(_).body;return ie(t)?0:g(t)}function ye(){return ae((function(_,t,e){return g(i(_).createElement(y(t,e)))}),arguments)}function ve(_){let t;try{t=i(_)instanceof CanvasRenderingContext2D}catch{t=!1}return t}function ke(){return ae((function(_,t,e,n){i(_).drawImage(i(t),e,n)}),arguments)}function xe(){return ae((function(_,t,e,n,r,o,a,c,g,b){i(_).drawImage(i(t),e,n,r,o,a,c,g,b)}),arguments)}function ze(){return ae((function(_,t,e,n,r){return g(i(_).getImageData(t,e,n,r))}),arguments)}function Ie(){return ae((function(_,t,e,n){i(_).putImageData(i(t),e,n)}),arguments)}function De(_){return i(_).width}function Ue(_){return i(_).height}function Ce(_,t){const e=Gt(i(t).data,n.__wbindgen_malloc),r=u;h()[_/4+1]=r,h()[_/4+0]=e}function Be(){return ae((function(_,t,e,r){return g(new ImageData((o=_,i=t,o>>>=0,(null!==ce&&0!==ce.byteLength||(ce=new Uint8ClampedArray(n.memory.buffer)),ce).subarray(o/1,o/1+i)),e>>>0,r>>>0));var o,i}),arguments)}function je(_){let t;try{t=i(_)instanceof HTMLCanvasElement}catch{t=!1}return t}function Ve(_){return i(_).width}function Ee(_,t){i(_).width=t>>>0}function Xe(_){return i(_).height}function Me(_,t){i(_).height=t>>>0}function Te(){return ae((function(_,t,e){const n=i(_).getContext(y(t,e));return ie(n)?0:g(n)}),arguments)}function Ye(_){return i(_).width}function Ae(_){return i(_).height}function Re(_,t,e){i(_).textContent=0===t?void 0:y(t,e)}function Ze(){return ae((function(_,t){return g(i(_).appendChild(i(t)))}),arguments)}function $e(_,t){return g(new Function(y(_,t)))}function He(){return ae((function(_,t){return g(i(_).call(i(t)))}),arguments)}function Se(_){return g(i(_))}function Je(){return ae((function(){return g(self.self)}),arguments)}function Oe(){return ae((function(){return g(window.window)}),arguments)}function Pe(){return ae((function(){return g(globalThis.globalThis)}),arguments)}function We(){return ae((function(){return g(e.g.global)}),arguments)}function Le(_){return void 0===i(_)}function Ge(_){return g(i(_).buffer)}function Qe(_){return g(new Uint8Array(i(_)))}function Ne(_,t,e){i(_).set(i(t),e>>>0)}function qe(_){return i(_).length}const Fe="function"==typeof Math.random?Math.random:("Math.random",()=>{throw new Error("Math.random is not defined")});function Ke(_,t){const e=d(b(i(t)),n.__wbindgen_malloc,n.__wbindgen_realloc),r=u;h()[_/4+1]=r,h()[_/4+0]=e}function _n(_,t){throw new Error(y(_,t))}function tn(){return g(n.memory)}},124:(_,t,e)=>{var n=e(176);_.exports=e.v(t,_.id,"f49f7893ad0a3ad10176",{"./photon_rs_bg.js":{__wbindgen_object_drop_ref:n.bkt,__wbg_new_abda76e883ba8a5f:n.V5T,__wbg_stack_658279fe44541cf6:n.u$W,__wbg_error_f851667af71bcfc6:n.Xur,__wbg_instanceof_Window_f2bf9e8e91f1be0d:n.XYQ,__wbg_document_a11e2f345af07033:n.knR,__wbg_body_483afe07b0958d3b:n.GM3,__wbg_createElement_5281e2aae74efc9d:n.dcn,__wbg_instanceof_CanvasRenderingContext2d_b4050f3a451ac712:n.AfI,__wbg_drawImage_fa7fd856fb164132:n.e5k,__wbg_drawImage_41f8e8a7fc2b0de3:n.Xc1,__wbg_getImageData_956c421f9b7cdfe7:n.J0M,__wbg_putImageData_0009acf77045dec6:n.FiA,__wbg_width_020d7bde350571e9:n.QV5,__wbg_height_d65d28af1b6f26d3:n.aWZ,__wbg_data_f319d3380b214a26:n.Qw0,__wbg_newwithu8clampedarrayandsh_c90e0c3609c4ecc2:n.tse,__wbg_instanceof_HtmlCanvasElement_6e58598b4e8b1586:n.UEZ,__wbg_width_3a395887a577233b:n.P0_,__wbg_setwidth_885d5dd3c7f48f41:n.RcJ,__wbg_height_b7046017c4148386:n.oTh,__wbg_setheight_0d2b445bb6a5a3f2:n.Zm5,__wbg_getContext_62ccb1aa0e6c8b86:n.HpV,__wbg_width_250e8da00ab1c884:n.pvC,__wbg_height_e41b71b2f3141e8e:n.vhe,__wbg_settextContent_ea2ce5e8fc889af7:n.Jmi,__wbg_appendChild_173b88a25c048f2b:n.jGt,__wbg_newnoargs_e643855c6572a4a8:n.IFg,__wbg_call_f96b398515635514:n.RO,__wbindgen_object_clone_ref:n.BZb,__wbg_self_b9aad7f1c618bfaf:n.BZg,__wbg_window_55e469842c98b086:n.DVj,__wbg_globalThis_d0957e302752547e:n.yYk,__wbg_global_ae2f87312b8987fb:n.b37,__wbindgen_is_undefined:n.vUM,__wbg_buffer_fcbfb6d88b2732e9:n.koi,__wbg_new_bc5d9aad3f9ac80e:n.V8o,__wbg_set_4b3aa8445ac1e91c:n.cMS,__wbg_length_d9c4ded7e708c6a1:n.YTI,__wbg_random_f67f027fd89c6d9c:n.kXr,__wbindgen_debug_string:n.rl,__wbindgen_throw:n.Qnr,__wbindgen_memory:n.Py0}})}}]); \ No newline at end of file diff --git a/dist/93be161a4640fe100e05af248fa4c52e.png b/dist/93be161a4640fe100e05af248fa4c52e.png new file mode 100644 index 0000000..1e7f965 Binary files /dev/null and b/dist/93be161a4640fe100e05af248fa4c52e.png differ diff --git a/dist/95cc0985b7bd6242de9b9665261616a3.jpg b/dist/95cc0985b7bd6242de9b9665261616a3.jpg new file mode 100644 index 0000000..484253f Binary files /dev/null and b/dist/95cc0985b7bd6242de9b9665261616a3.jpg differ diff --git a/dist/bundle.js b/dist/bundle.js new file mode 100644 index 0000000..4cb9341 --- /dev/null +++ b/dist/bundle.js @@ -0,0 +1,523 @@ +/* + * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./node_modules/css-loader/dist/cjs.js!./src/css/styles.css": +/*!******************************************************************!*\ + !*** ./node_modules/css-loader/dist/cjs.js!./src/css/styles.css ***! + \******************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/noSourceMaps.js */ \"./node_modules/css-loader/dist/runtime/noSourceMaps.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ \"./node_modules/css-loader/dist/runtime/api.js\");\n/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);\n// Imports\n\n\nvar ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));\n___CSS_LOADER_EXPORT___.push([module.id, \"@import url(https://fonts.googleapis.com/css?family=Roboto:300,400,700&display=swap);\"]);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `body {\n background-color: rgb(34, 34, 34);\n}\n\ncanvas {\n width: 500px;\n}\n\n.default {\n background-color: rgb(34, 34, 34);\n font-family: \"Roboto\", sans-serif;\n height: 100%;\n}\n\n.main {\n margin-left: 40vh;\n padding: 0px 10px;\n background-color: rgb(34, 34, 34);\n}\n\nh2,\nh3,\nh4,\nh5 {\n color: white;\n font-family: \"Roboto\", sans-serif;\n font-weight: 300;\n}\n\nh4 {\n text-transform: uppercase;\n font-size: 0.7em;\n letter-spacing: 4px;\n}\n\nli:hover {\n cursor: pointer;\n}\n\n.topnav {\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n}\n\n.slidecontainer {\n width: 30%;\n}\n\n.slider {\n margin: 10px;\n width: 480px;\n height: 25px;\n background: #d3d3d3;\n outline: none;\n transition: opacity 0.2s;\n cursor: pointer;\n}\n\n.slider:hover {\n opacity: 0.7;\n}\n\n.slider::-moz-range-thumb {\n width: 25px;\n height: 25px;\n background: #04aa6d;\n}\n`, \"\"]);\n// Exports\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);\n\n\n//# sourceURL=webpack://photon-wasm/./src/css/styles.css?./node_modules/css-loader/dist/cjs.js"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/runtime/api.js": +/*!*****************************************************!*\ + !*** ./node_modules/css-loader/dist/runtime/api.js ***! + \*****************************************************/ +/***/ ((module) => { + +eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};\n\n//# sourceURL=webpack://photon-wasm/./node_modules/css-loader/dist/runtime/api.js?"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/runtime/noSourceMaps.js": +/*!**************************************************************!*\ + !*** ./node_modules/css-loader/dist/runtime/noSourceMaps.js ***! + \**************************************************************/ +/***/ ((module) => { + +eval("\n\nmodule.exports = function (i) {\n return i[1];\n};\n\n//# sourceURL=webpack://photon-wasm/./node_modules/css-loader/dist/runtime/noSourceMaps.js?"); + +/***/ }), + +/***/ "./src/js/nine_yards.jpg": +/*!*******************************!*\ + !*** ./src/js/nine_yards.jpg ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__webpack_require__.p + \"95cc0985b7bd6242de9b9665261616a3.jpg\");\n\n//# sourceURL=webpack://photon-wasm/./src/js/nine_yards.jpg?"); + +/***/ }), + +/***/ "./src/css/styles.css": +/*!****************************!*\ + !*** ./src/css/styles.css ***! + \****************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ \"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ \"./node_modules/style-loader/dist/runtime/styleDomAPI.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertBySelector.js */ \"./node_modules/style-loader/dist/runtime/insertBySelector.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ \"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ \"./node_modules/style-loader/dist/runtime/insertStyleElement.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ \"./node_modules/style-loader/dist/runtime/styleTagTransform.js\");\n/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js!./styles.css */ \"./node_modules/css-loader/dist/cjs.js!./src/css/styles.css\");\n\n \n \n \n \n \n \n \n \n \n\nvar options = {};\n\noptions.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());\noptions.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());\n\n options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, \"head\");\n \noptions.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());\noptions.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());\n\nvar update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"], options);\n\n\n\n\n /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"] && _node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals ? _node_modules_css_loader_dist_cjs_js_styles_css__WEBPACK_IMPORTED_MODULE_6__[\"default\"].locals : undefined);\n\n\n//# sourceURL=webpack://photon-wasm/./src/css/styles.css?"); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js": +/*!****************************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***! + \****************************************************************************/ +/***/ ((module) => { + +eval("\n\nvar stylesInDOM = [];\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n return result;\n}\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n identifiers.push(identifier);\n }\n return identifiers;\n}\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n return updater;\n}\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n var newLastIdentifiers = modulesToDom(newList, options);\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n var _index = getIndexByIdentifier(_identifier);\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n stylesInDOM.splice(_index, 1);\n }\n }\n lastIdentifiers = newLastIdentifiers;\n };\n};\n\n//# sourceURL=webpack://photon-wasm/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js?"); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/insertBySelector.js": +/*!********************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/insertBySelector.js ***! + \********************************************************************/ +/***/ ((module) => { + +eval("\n\nvar memo = {};\n\n/* istanbul ignore next */\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target);\n\n // Special case to return head of iframe instead of iframe itself\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n memo[target] = styleTarget;\n }\n return memo[target];\n}\n\n/* istanbul ignore next */\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n target.appendChild(style);\n}\nmodule.exports = insertBySelector;\n\n//# sourceURL=webpack://photon-wasm/./node_modules/style-loader/dist/runtime/insertBySelector.js?"); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/insertStyleElement.js": +/*!**********************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/insertStyleElement.js ***! + \**********************************************************************/ +/***/ ((module) => { + +eval("\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\nmodule.exports = insertStyleElement;\n\n//# sourceURL=webpack://photon-wasm/./node_modules/style-loader/dist/runtime/insertStyleElement.js?"); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***! + \**********************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +eval("\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = true ? __webpack_require__.nc : 0;\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\nmodule.exports = setAttributesWithoutAttributes;\n\n//# sourceURL=webpack://photon-wasm/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js?"); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/styleDomAPI.js": +/*!***************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/styleDomAPI.js ***! + \***************************************************************/ +/***/ ((module) => { + +eval("\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n var needLayer = typeof obj.layer !== \"undefined\";\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n css += obj.css;\n if (needLayer) {\n css += \"}\";\n }\n if (obj.media) {\n css += \"}\";\n }\n if (obj.supports) {\n css += \"}\";\n }\n var sourceMap = obj.sourceMap;\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n }\n\n // For old IE\n /* istanbul ignore if */\n options.styleTagTransform(css, styleElement, options.options);\n}\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n styleElement.parentNode.removeChild(styleElement);\n}\n\n/* istanbul ignore next */\nfunction domAPI(options) {\n if (typeof document === \"undefined\") {\n return {\n update: function update() {},\n remove: function remove() {}\n };\n }\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\nmodule.exports = domAPI;\n\n//# sourceURL=webpack://photon-wasm/./node_modules/style-loader/dist/runtime/styleDomAPI.js?"); + +/***/ }), + +/***/ "./node_modules/style-loader/dist/runtime/styleTagTransform.js": +/*!*********************************************************************!*\ + !*** ./node_modules/style-loader/dist/runtime/styleTagTransform.js ***! + \*********************************************************************/ +/***/ ((module) => { + +eval("\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n styleElement.appendChild(document.createTextNode(css));\n }\n}\nmodule.exports = styleTagTransform;\n\n//# sourceURL=webpack://photon-wasm/./node_modules/style-loader/dist/runtime/styleTagTransform.js?"); + +/***/ }), + +/***/ "./src/js/index.js": +/*!*************************!*\ + !*** ./src/js/index.js ***! + \*************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _nine_yards_jpg__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nine_yards.jpg */ \"./src/js/nine_yards.jpg\");\n/* harmony import */ var _css_styles_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../css/styles.css */ \"./src/css/styles.css\");\n\n\n// import { filters } from \"./filters\";\n\nlet canvas, ctx, blur_factor;\n\n__webpack_require__.e(/*! import() */ \"crate_pkg_spiegel_client_js\").then(__webpack_require__.bind(__webpack_require__, /*! ../../crate/pkg */ \"./crate/pkg/spiegel_client.js\")).then((module) => {\n // Setup images\n const newimg = new Image();\n newimg.src = _nine_yards_jpg__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n newimg.onload = () => {\n setUpCanvas();\n // filterImage();\n };\n\n const slider = document.getElementById(\"slider\");\n slider.value = 0;\n slider.onchange = filterImage;\n\n function filterImage(event) {\n if (event) {\n blur_factor = parseInt(event.target.value) / 5;\n } else {\n blur_factor = 0;\n }\n\n ctx.drawImage(newimg, 0, 0);\n\n // Convert the ImageData to a PhotonImage (so that it can communicate with the core Rust library)\n let rust_image = module.open_image(canvas, ctx);\n\n // Filter the image, the PhotonImage's raw pixels are modified and\n // the PhotonImage is returned\n if (blur_factor > 0) {\n // module.gaussian_blur(rust_image, blur_factor);\n module.median(rust_image, blur_factor, blur_factor);\n }\n // Place the pixels back on the canvas\n module.putImageData(canvas, ctx, rust_image);\n }\n\n function setUpCanvas() {\n let element = document.getElementById(\"image_container\");\n element.appendChild(newimg);\n\n canvas = document.getElementById(\"canvas\");\n canvas.width = newimg.width;\n canvas.height = newimg.height;\n newimg.setAttribute(\"style\", \"width:500px\");\n\n ctx = canvas.getContext(\"2d\");\n ctx.drawImage(newimg, 0, 0);\n }\n});\n\n\n//# sourceURL=webpack://photon-wasm/./src/js/index.js?"); + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ id: moduleId, +/******/ loaded: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.loaded = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = __webpack_modules__; +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/async module */ +/******/ (() => { +/******/ var webpackQueues = typeof Symbol === "function" ? Symbol("webpack queues") : "__webpack_queues__"; +/******/ var webpackExports = typeof Symbol === "function" ? Symbol("webpack exports") : "__webpack_exports__"; +/******/ var webpackError = typeof Symbol === "function" ? Symbol("webpack error") : "__webpack_error__"; +/******/ var resolveQueue = (queue) => { +/******/ if(queue && queue.d < 1) { +/******/ queue.d = 1; +/******/ queue.forEach((fn) => (fn.r--)); +/******/ queue.forEach((fn) => (fn.r-- ? fn.r++ : fn())); +/******/ } +/******/ } +/******/ var wrapDeps = (deps) => (deps.map((dep) => { +/******/ if(dep !== null && typeof dep === "object") { +/******/ if(dep[webpackQueues]) return dep; +/******/ if(dep.then) { +/******/ var queue = []; +/******/ queue.d = 0; +/******/ dep.then((r) => { +/******/ obj[webpackExports] = r; +/******/ resolveQueue(queue); +/******/ }, (e) => { +/******/ obj[webpackError] = e; +/******/ resolveQueue(queue); +/******/ }); +/******/ var obj = {}; +/******/ obj[webpackQueues] = (fn) => (fn(queue)); +/******/ return obj; +/******/ } +/******/ } +/******/ var ret = {}; +/******/ ret[webpackQueues] = x => {}; +/******/ ret[webpackExports] = dep; +/******/ return ret; +/******/ })); +/******/ __webpack_require__.a = (module, body, hasAwait) => { +/******/ var queue; +/******/ hasAwait && ((queue = []).d = -1); +/******/ var depQueues = new Set(); +/******/ var exports = module.exports; +/******/ var currentDeps; +/******/ var outerResolve; +/******/ var reject; +/******/ var promise = new Promise((resolve, rej) => { +/******/ reject = rej; +/******/ outerResolve = resolve; +/******/ }); +/******/ promise[webpackExports] = exports; +/******/ promise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise["catch"](x => {})); +/******/ module.exports = promise; +/******/ body((deps) => { +/******/ currentDeps = wrapDeps(deps); +/******/ var fn; +/******/ var getResult = () => (currentDeps.map((d) => { +/******/ if(d[webpackError]) throw d[webpackError]; +/******/ return d[webpackExports]; +/******/ })) +/******/ var promise = new Promise((resolve) => { +/******/ fn = () => (resolve(getResult)); +/******/ fn.r = 0; +/******/ var fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn)))); +/******/ currentDeps.map((dep) => (dep[webpackQueues](fnQueue))); +/******/ }); +/******/ return fn.r ? promise : getResult(); +/******/ }, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue))); +/******/ queue && queue.d < 0 && (queue.d = 0); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/ensure chunk */ +/******/ (() => { +/******/ __webpack_require__.f = {}; +/******/ // This file contains only the entry chunk. +/******/ // The chunk loading function for additional chunks +/******/ __webpack_require__.e = (chunkId) => { +/******/ return Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => { +/******/ __webpack_require__.f[key](chunkId, promises); +/******/ return promises; +/******/ }, [])); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/get javascript chunk filename */ +/******/ (() => { +/******/ // This function allow to reference async chunks +/******/ __webpack_require__.u = (chunkId) => { +/******/ // return url for filenames based on template +/******/ return "" + chunkId + ".bundle.js"; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/global */ +/******/ (() => { +/******/ __webpack_require__.g = (function() { +/******/ if (typeof globalThis === 'object') return globalThis; +/******/ try { +/******/ return this || new Function('return this')(); +/******/ } catch (e) { +/******/ if (typeof window === 'object') return window; +/******/ } +/******/ })(); +/******/ })(); +/******/ +/******/ /* webpack/runtime/harmony module decorator */ +/******/ (() => { +/******/ __webpack_require__.hmd = (module) => { +/******/ module = Object.create(module); +/******/ if (!module.children) module.children = []; +/******/ Object.defineProperty(module, 'exports', { +/******/ enumerable: true, +/******/ set: () => { +/******/ throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id); +/******/ } +/******/ }); +/******/ return module; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/load script */ +/******/ (() => { +/******/ var inProgress = {}; +/******/ var dataWebpackPrefix = "photon-wasm:"; +/******/ // loadScript function to load a script via script tag +/******/ __webpack_require__.l = (url, done, key, chunkId) => { +/******/ if(inProgress[url]) { inProgress[url].push(done); return; } +/******/ var script, needAttach; +/******/ if(key !== undefined) { +/******/ var scripts = document.getElementsByTagName("script"); +/******/ for(var i = 0; i < scripts.length; i++) { +/******/ var s = scripts[i]; +/******/ if(s.getAttribute("src") == url || s.getAttribute("data-webpack") == dataWebpackPrefix + key) { script = s; break; } +/******/ } +/******/ } +/******/ if(!script) { +/******/ needAttach = true; +/******/ script = document.createElement('script'); +/******/ +/******/ script.charset = 'utf-8'; +/******/ script.timeout = 120; +/******/ if (__webpack_require__.nc) { +/******/ script.setAttribute("nonce", __webpack_require__.nc); +/******/ } +/******/ script.setAttribute("data-webpack", dataWebpackPrefix + key); +/******/ +/******/ script.src = url; +/******/ } +/******/ inProgress[url] = [done]; +/******/ var onScriptComplete = (prev, event) => { +/******/ // avoid mem leaks in IE. +/******/ script.onerror = script.onload = null; +/******/ clearTimeout(timeout); +/******/ var doneFns = inProgress[url]; +/******/ delete inProgress[url]; +/******/ script.parentNode && script.parentNode.removeChild(script); +/******/ doneFns && doneFns.forEach((fn) => (fn(event))); +/******/ if(prev) return prev(event); +/******/ } +/******/ var timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000); +/******/ script.onerror = onScriptComplete.bind(null, script.onerror); +/******/ script.onload = onScriptComplete.bind(null, script.onload); +/******/ needAttach && document.head.appendChild(script); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/wasm loading */ +/******/ (() => { +/******/ __webpack_require__.v = (exports, wasmModuleId, wasmModuleHash, importsObj) => { +/******/ var req = fetch(__webpack_require__.p + "" + wasmModuleHash + ".module.wasm"); +/******/ var fallback = () => (req +/******/ .then((x) => (x.arrayBuffer())) +/******/ .then((bytes) => (WebAssembly.instantiate(bytes, importsObj))) +/******/ .then((res) => (Object.assign(exports, res.instance.exports)))); +/******/ return req.then((res) => { +/******/ if (typeof WebAssembly.instantiateStreaming === "function") { +/******/ return WebAssembly.instantiateStreaming(res, importsObj) +/******/ .then( +/******/ (res) => (Object.assign(exports, res.instance.exports)), +/******/ (e) => { +/******/ if(res.headers.get("Content-Type") !== "application/wasm") { +/******/ console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); +/******/ return fallback(); +/******/ } +/******/ throw e; +/******/ } +/******/ ); +/******/ } +/******/ return fallback(); +/******/ }); +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/publicPath */ +/******/ (() => { +/******/ var scriptUrl; +/******/ if (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + ""; +/******/ var document = __webpack_require__.g.document; +/******/ if (!scriptUrl && document) { +/******/ if (document.currentScript) +/******/ scriptUrl = document.currentScript.src; +/******/ if (!scriptUrl) { +/******/ var scripts = document.getElementsByTagName("script"); +/******/ if(scripts.length) { +/******/ var i = scripts.length - 1; +/******/ while (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src; +/******/ } +/******/ } +/******/ } +/******/ // When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration +/******/ // or pass an empty string ("") and set the __webpack_public_path__ variable from your code to use your own logic. +/******/ if (!scriptUrl) throw new Error("Automatic publicPath is not supported in this browser"); +/******/ scriptUrl = scriptUrl.replace(/#.*$/, "").replace(/\?.*$/, "").replace(/\/[^\/]+$/, "/"); +/******/ __webpack_require__.p = scriptUrl; +/******/ })(); +/******/ +/******/ /* webpack/runtime/jsonp chunk loading */ +/******/ (() => { +/******/ // no baseURI +/******/ +/******/ // object to store loaded and loading chunks +/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched +/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded +/******/ var installedChunks = { +/******/ "main": 0 +/******/ }; +/******/ +/******/ __webpack_require__.f.j = (chunkId, promises) => { +/******/ // JSONP chunk loading for javascript +/******/ var installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined; +/******/ if(installedChunkData !== 0) { // 0 means "already installed". +/******/ +/******/ // a Promise means "currently loading". +/******/ if(installedChunkData) { +/******/ promises.push(installedChunkData[2]); +/******/ } else { +/******/ if(true) { // all chunks have JS +/******/ // setup Promise in chunk cache +/******/ var promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject])); +/******/ promises.push(installedChunkData[2] = promise); +/******/ +/******/ // start chunk loading +/******/ var url = __webpack_require__.p + __webpack_require__.u(chunkId); +/******/ // create error before stack unwound to get useful stacktrace later +/******/ var error = new Error(); +/******/ var loadingEnded = (event) => { +/******/ if(__webpack_require__.o(installedChunks, chunkId)) { +/******/ installedChunkData = installedChunks[chunkId]; +/******/ if(installedChunkData !== 0) installedChunks[chunkId] = undefined; +/******/ if(installedChunkData) { +/******/ var errorType = event && (event.type === 'load' ? 'missing' : event.type); +/******/ var realSrc = event && event.target && event.target.src; +/******/ error.message = 'Loading chunk ' + chunkId + ' failed.\n(' + errorType + ': ' + realSrc + ')'; +/******/ error.name = 'ChunkLoadError'; +/******/ error.type = errorType; +/******/ error.request = realSrc; +/******/ installedChunkData[1](error); +/******/ } +/******/ } +/******/ }; +/******/ __webpack_require__.l(url, loadingEnded, "chunk-" + chunkId, chunkId); +/******/ } +/******/ } +/******/ } +/******/ }; +/******/ +/******/ // no prefetching +/******/ +/******/ // no preloaded +/******/ +/******/ // no HMR +/******/ +/******/ // no HMR manifest +/******/ +/******/ // no on chunks loaded +/******/ +/******/ // install a JSONP callback for chunk loading +/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { +/******/ var [chunkIds, moreModules, runtime] = data; +/******/ // add "moreModules" to the modules object, +/******/ // then flag all "chunkIds" as loaded and fire callback +/******/ var moduleId, chunkId, i = 0; +/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) { +/******/ for(moduleId in moreModules) { +/******/ if(__webpack_require__.o(moreModules, moduleId)) { +/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; +/******/ } +/******/ } +/******/ if(runtime) var result = runtime(__webpack_require__); +/******/ } +/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); +/******/ for(;i < chunkIds.length; i++) { +/******/ chunkId = chunkIds[i]; +/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { +/******/ installedChunks[chunkId][0](); +/******/ } +/******/ installedChunks[chunkId] = 0; +/******/ } +/******/ +/******/ } +/******/ +/******/ var chunkLoadingGlobal = self["webpackChunkphoton_wasm"] = self["webpackChunkphoton_wasm"] || []; +/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); +/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); +/******/ })(); +/******/ +/******/ /* webpack/runtime/nonce */ +/******/ (() => { +/******/ __webpack_require__.nc = undefined; +/******/ })(); +/******/ +/************************************************************************/ +/******/ +/******/ // startup +/******/ // Load entry module and return exports +/******/ // This entry module can't be inlined because the eval devtool is used. +/******/ var __webpack_exports__ = __webpack_require__("./src/js/index.js"); +/******/ +/******/ })() +; \ No newline at end of file diff --git a/dist/crate_pkg_photon_rs_js.bundle.js b/dist/crate_pkg_photon_rs_js.bundle.js new file mode 100644 index 0000000..f117307 --- /dev/null +++ b/dist/crate_pkg_photon_rs_js.bundle.js @@ -0,0 +1,42 @@ +"use strict"; +/* + * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(self["webpackChunkphoton_wasm"] = self["webpackChunkphoton_wasm"] || []).push([["crate_pkg_photon_rs_js"],{ + +/***/ "../crate/pkg/photon_rs.js": +/*!*********************************!*\ + !*** ../crate/pkg/photon_rs.js ***! + \*********************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PhotonImage: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.PhotonImage),\n/* harmony export */ Rgb: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.Rgb),\n/* harmony export */ Rgba: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.Rgba),\n/* harmony export */ SamplingFilter: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.SamplingFilter),\n/* harmony export */ __wbg_appendChild_173b88a25c048f2b: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_appendChild_173b88a25c048f2b),\n/* harmony export */ __wbg_body_483afe07b0958d3b: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_body_483afe07b0958d3b),\n/* harmony export */ __wbg_buffer_fcbfb6d88b2732e9: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_buffer_fcbfb6d88b2732e9),\n/* harmony export */ __wbg_call_f96b398515635514: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_call_f96b398515635514),\n/* harmony export */ __wbg_createElement_5281e2aae74efc9d: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_createElement_5281e2aae74efc9d),\n/* harmony export */ __wbg_data_f319d3380b214a26: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_data_f319d3380b214a26),\n/* harmony export */ __wbg_document_a11e2f345af07033: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_document_a11e2f345af07033),\n/* harmony export */ __wbg_drawImage_41f8e8a7fc2b0de3: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_drawImage_41f8e8a7fc2b0de3),\n/* harmony export */ __wbg_drawImage_fa7fd856fb164132: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_drawImage_fa7fd856fb164132),\n/* harmony export */ __wbg_error_f851667af71bcfc6: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_error_f851667af71bcfc6),\n/* harmony export */ __wbg_getContext_62ccb1aa0e6c8b86: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_getContext_62ccb1aa0e6c8b86),\n/* harmony export */ __wbg_getImageData_956c421f9b7cdfe7: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_getImageData_956c421f9b7cdfe7),\n/* harmony export */ __wbg_globalThis_d0957e302752547e: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_globalThis_d0957e302752547e),\n/* harmony export */ __wbg_global_ae2f87312b8987fb: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_global_ae2f87312b8987fb),\n/* harmony export */ __wbg_height_b7046017c4148386: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_height_b7046017c4148386),\n/* harmony export */ __wbg_height_d65d28af1b6f26d3: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_height_d65d28af1b6f26d3),\n/* harmony export */ __wbg_height_e41b71b2f3141e8e: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_height_e41b71b2f3141e8e),\n/* harmony export */ __wbg_instanceof_CanvasRenderingContext2d_b4050f3a451ac712: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_instanceof_CanvasRenderingContext2d_b4050f3a451ac712),\n/* harmony export */ __wbg_instanceof_HtmlCanvasElement_6e58598b4e8b1586: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_instanceof_HtmlCanvasElement_6e58598b4e8b1586),\n/* harmony export */ __wbg_instanceof_Window_f2bf9e8e91f1be0d: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_instanceof_Window_f2bf9e8e91f1be0d),\n/* harmony export */ __wbg_length_d9c4ded7e708c6a1: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_length_d9c4ded7e708c6a1),\n/* harmony export */ __wbg_new_abda76e883ba8a5f: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_new_abda76e883ba8a5f),\n/* harmony export */ __wbg_new_bc5d9aad3f9ac80e: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_new_bc5d9aad3f9ac80e),\n/* harmony export */ __wbg_newnoargs_e643855c6572a4a8: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_newnoargs_e643855c6572a4a8),\n/* harmony export */ __wbg_newwithu8clampedarrayandsh_c90e0c3609c4ecc2: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_newwithu8clampedarrayandsh_c90e0c3609c4ecc2),\n/* harmony export */ __wbg_putImageData_0009acf77045dec6: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_putImageData_0009acf77045dec6),\n/* harmony export */ __wbg_random_f67f027fd89c6d9c: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_random_f67f027fd89c6d9c),\n/* harmony export */ __wbg_self_b9aad7f1c618bfaf: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_self_b9aad7f1c618bfaf),\n/* harmony export */ __wbg_set_4b3aa8445ac1e91c: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_set_4b3aa8445ac1e91c),\n/* harmony export */ __wbg_set_wasm: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_set_wasm),\n/* harmony export */ __wbg_setheight_0d2b445bb6a5a3f2: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_setheight_0d2b445bb6a5a3f2),\n/* harmony export */ __wbg_settextContent_ea2ce5e8fc889af7: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_settextContent_ea2ce5e8fc889af7),\n/* harmony export */ __wbg_setwidth_885d5dd3c7f48f41: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_setwidth_885d5dd3c7f48f41),\n/* harmony export */ __wbg_stack_658279fe44541cf6: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_stack_658279fe44541cf6),\n/* harmony export */ __wbg_width_020d7bde350571e9: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_width_020d7bde350571e9),\n/* harmony export */ __wbg_width_250e8da00ab1c884: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_width_250e8da00ab1c884),\n/* harmony export */ __wbg_width_3a395887a577233b: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_width_3a395887a577233b),\n/* harmony export */ __wbg_window_55e469842c98b086: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_window_55e469842c98b086),\n/* harmony export */ __wbindgen_debug_string: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_debug_string),\n/* harmony export */ __wbindgen_is_undefined: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_is_undefined),\n/* harmony export */ __wbindgen_memory: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_memory),\n/* harmony export */ __wbindgen_object_clone_ref: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_object_clone_ref),\n/* harmony export */ __wbindgen_object_drop_ref: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_object_drop_ref),\n/* harmony export */ __wbindgen_throw: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_throw),\n/* harmony export */ add_noise_rand: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.add_noise_rand),\n/* harmony export */ adjust_contrast: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.adjust_contrast),\n/* harmony export */ alter_blue_channel: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.alter_blue_channel),\n/* harmony export */ alter_channel: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.alter_channel),\n/* harmony export */ alter_channels: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.alter_channels),\n/* harmony export */ alter_green_channel: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.alter_green_channel),\n/* harmony export */ alter_red_channel: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.alter_red_channel),\n/* harmony export */ alter_two_channels: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.alter_two_channels),\n/* harmony export */ apply_gradient: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.apply_gradient),\n/* harmony export */ b_grayscale: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.b_grayscale),\n/* harmony export */ base64_to_image: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.base64_to_image),\n/* harmony export */ base64_to_vec: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.base64_to_vec),\n/* harmony export */ blend: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.blend),\n/* harmony export */ box_blur: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.box_blur),\n/* harmony export */ cali: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.cali),\n/* harmony export */ color_horizontal_strips: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.color_horizontal_strips),\n/* harmony export */ color_vertical_strips: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.color_vertical_strips),\n/* harmony export */ colorize: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.colorize),\n/* harmony export */ create_gradient: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.create_gradient),\n/* harmony export */ crop: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.crop),\n/* harmony export */ crop_img_browser: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.crop_img_browser),\n/* harmony export */ darken_hsl: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.darken_hsl),\n/* harmony export */ darken_hsluv: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.darken_hsluv),\n/* harmony export */ darken_hsv: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.darken_hsv),\n/* harmony export */ darken_lch: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.darken_lch),\n/* harmony export */ decompose_max: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.decompose_max),\n/* harmony export */ decompose_min: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.decompose_min),\n/* harmony export */ desaturate: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.desaturate),\n/* harmony export */ desaturate_hsl: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.desaturate_hsl),\n/* harmony export */ desaturate_hsluv: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.desaturate_hsluv),\n/* harmony export */ desaturate_hsv: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.desaturate_hsv),\n/* harmony export */ desaturate_lch: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.desaturate_lch),\n/* harmony export */ detect_135_deg_lines: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.detect_135_deg_lines),\n/* harmony export */ detect_45_deg_lines: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.detect_45_deg_lines),\n/* harmony export */ detect_horizontal_lines: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.detect_horizontal_lines),\n/* harmony export */ detect_vertical_lines: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.detect_vertical_lines),\n/* harmony export */ dither: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.dither),\n/* harmony export */ dramatic: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.dramatic),\n/* harmony export */ draw_text: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.draw_text),\n/* harmony export */ draw_text_with_border: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.draw_text_with_border),\n/* harmony export */ duotone: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.duotone),\n/* harmony export */ duotone_horizon: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.duotone_horizon),\n/* harmony export */ duotone_lilac: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.duotone_lilac),\n/* harmony export */ duotone_ochre: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.duotone_ochre),\n/* harmony export */ duotone_tint: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.duotone_tint),\n/* harmony export */ duotone_violette: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.duotone_violette),\n/* harmony export */ edge_detection: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.edge_detection),\n/* harmony export */ edge_one: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.edge_one),\n/* harmony export */ emboss: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.emboss),\n/* harmony export */ filter: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.filter),\n/* harmony export */ firenze: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.firenze),\n/* harmony export */ fliph: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.fliph),\n/* harmony export */ flipv: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.flipv),\n/* harmony export */ frosted_glass: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.frosted_glass),\n/* harmony export */ g_grayscale: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.g_grayscale),\n/* harmony export */ gamma_correction: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.gamma_correction),\n/* harmony export */ gaussian_blur: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.gaussian_blur),\n/* harmony export */ get_image_data: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.get_image_data),\n/* harmony export */ golden: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.golden),\n/* harmony export */ grayscale: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.grayscale),\n/* harmony export */ grayscale_human_corrected: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.grayscale_human_corrected),\n/* harmony export */ grayscale_shades: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.grayscale_shades),\n/* harmony export */ horizontal_strips: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.horizontal_strips),\n/* harmony export */ hsl: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.hsl),\n/* harmony export */ hsluv: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.hsluv),\n/* harmony export */ hsv: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.hsv),\n/* harmony export */ hue_rotate_hsl: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.hue_rotate_hsl),\n/* harmony export */ hue_rotate_hsluv: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.hue_rotate_hsluv),\n/* harmony export */ hue_rotate_hsv: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.hue_rotate_hsv),\n/* harmony export */ hue_rotate_lch: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.hue_rotate_lch),\n/* harmony export */ identity: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.identity),\n/* harmony export */ inc_brightness: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.inc_brightness),\n/* harmony export */ invert: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.invert),\n/* harmony export */ laplace: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.laplace),\n/* harmony export */ lch: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.lch),\n/* harmony export */ lighten_hsl: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.lighten_hsl),\n/* harmony export */ lighten_hsluv: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.lighten_hsluv),\n/* harmony export */ lighten_hsv: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.lighten_hsv),\n/* harmony export */ lighten_lch: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.lighten_lch),\n/* harmony export */ lix: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.lix),\n/* harmony export */ lofi: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.lofi),\n/* harmony export */ median: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.median),\n/* harmony export */ mix_with_colour: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.mix_with_colour),\n/* harmony export */ monochrome: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.monochrome),\n/* harmony export */ monochrome_tint: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.monochrome_tint),\n/* harmony export */ multiple_offsets: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.multiple_offsets),\n/* harmony export */ neue: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.neue),\n/* harmony export */ noise_reduction: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.noise_reduction),\n/* harmony export */ normalize: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.normalize),\n/* harmony export */ obsidian: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.obsidian),\n/* harmony export */ offset: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.offset),\n/* harmony export */ offset_blue: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.offset_blue),\n/* harmony export */ offset_green: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.offset_green),\n/* harmony export */ offset_red: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.offset_red),\n/* harmony export */ oil: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.oil),\n/* harmony export */ open_image: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.open_image),\n/* harmony export */ padding_bottom: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.padding_bottom),\n/* harmony export */ padding_left: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.padding_left),\n/* harmony export */ padding_right: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.padding_right),\n/* harmony export */ padding_top: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.padding_top),\n/* harmony export */ padding_uniform: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.padding_uniform),\n/* harmony export */ pastel_pink: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.pastel_pink),\n/* harmony export */ pink_noise: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.pink_noise),\n/* harmony export */ pixelize: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.pixelize),\n/* harmony export */ prewitt_horizontal: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.prewitt_horizontal),\n/* harmony export */ primary: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.primary),\n/* harmony export */ putImageData: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.putImageData),\n/* harmony export */ r_grayscale: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.r_grayscale),\n/* harmony export */ remove_blue_channel: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.remove_blue_channel),\n/* harmony export */ remove_channel: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.remove_channel),\n/* harmony export */ remove_green_channel: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.remove_green_channel),\n/* harmony export */ remove_red_channel: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.remove_red_channel),\n/* harmony export */ resample: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.resample),\n/* harmony export */ resize: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.resize),\n/* harmony export */ resize_img_browser: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.resize_img_browser),\n/* harmony export */ rotate: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.rotate),\n/* harmony export */ run: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.run),\n/* harmony export */ ryo: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.ryo),\n/* harmony export */ saturate_hsl: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.saturate_hsl),\n/* harmony export */ saturate_hsluv: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.saturate_hsluv),\n/* harmony export */ saturate_hsv: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.saturate_hsv),\n/* harmony export */ saturate_lch: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.saturate_lch),\n/* harmony export */ seam_carve: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.seam_carve),\n/* harmony export */ selective_color_convert: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.selective_color_convert),\n/* harmony export */ selective_desaturate: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.selective_desaturate),\n/* harmony export */ selective_greyscale: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.selective_greyscale),\n/* harmony export */ selective_hue_rotate: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.selective_hue_rotate),\n/* harmony export */ selective_lighten: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.selective_lighten),\n/* harmony export */ selective_saturate: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.selective_saturate),\n/* harmony export */ sepia: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.sepia),\n/* harmony export */ sharpen: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.sharpen),\n/* harmony export */ single_channel_grayscale: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.single_channel_grayscale),\n/* harmony export */ sobel_horizontal: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.sobel_horizontal),\n/* harmony export */ sobel_vertical: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.sobel_vertical),\n/* harmony export */ solarize: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.solarize),\n/* harmony export */ solarize_retimg: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.solarize_retimg),\n/* harmony export */ swap_channels: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.swap_channels),\n/* harmony export */ threshold: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.threshold),\n/* harmony export */ tint: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.tint),\n/* harmony export */ to_image_data: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.to_image_data),\n/* harmony export */ to_raw_pixels: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.to_raw_pixels),\n/* harmony export */ vertical_strips: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.vertical_strips),\n/* harmony export */ watermark: () => (/* reexport safe */ _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.watermark)\n/* harmony export */ });\n/* harmony import */ var _photon_rs_bg_wasm__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./photon_rs_bg.wasm */ \"../crate/pkg/photon_rs_bg.wasm\");\n/* harmony import */ var _photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./photon_rs_bg.js */ \"../crate/pkg/photon_rs_bg.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_photon_rs_bg_wasm__WEBPACK_IMPORTED_MODULE_1__]);\n_photon_rs_bg_wasm__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n(0,_photon_rs_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_set_wasm)(_photon_rs_bg_wasm__WEBPACK_IMPORTED_MODULE_1__);\n\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });\n\n//# sourceURL=webpack://photon-wasm/../crate/pkg/photon_rs.js?"); + +/***/ }), + +/***/ "../crate/pkg/photon_rs_bg.js": +/*!************************************!*\ + !*** ../crate/pkg/photon_rs_bg.js ***! + \************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PhotonImage: () => (/* binding */ PhotonImage),\n/* harmony export */ Rgb: () => (/* binding */ Rgb),\n/* harmony export */ Rgba: () => (/* binding */ Rgba),\n/* harmony export */ SamplingFilter: () => (/* binding */ SamplingFilter),\n/* harmony export */ __wbg_appendChild_173b88a25c048f2b: () => (/* binding */ __wbg_appendChild_173b88a25c048f2b),\n/* harmony export */ __wbg_body_483afe07b0958d3b: () => (/* binding */ __wbg_body_483afe07b0958d3b),\n/* harmony export */ __wbg_buffer_fcbfb6d88b2732e9: () => (/* binding */ __wbg_buffer_fcbfb6d88b2732e9),\n/* harmony export */ __wbg_call_f96b398515635514: () => (/* binding */ __wbg_call_f96b398515635514),\n/* harmony export */ __wbg_createElement_5281e2aae74efc9d: () => (/* binding */ __wbg_createElement_5281e2aae74efc9d),\n/* harmony export */ __wbg_data_f319d3380b214a26: () => (/* binding */ __wbg_data_f319d3380b214a26),\n/* harmony export */ __wbg_document_a11e2f345af07033: () => (/* binding */ __wbg_document_a11e2f345af07033),\n/* harmony export */ __wbg_drawImage_41f8e8a7fc2b0de3: () => (/* binding */ __wbg_drawImage_41f8e8a7fc2b0de3),\n/* harmony export */ __wbg_drawImage_fa7fd856fb164132: () => (/* binding */ __wbg_drawImage_fa7fd856fb164132),\n/* harmony export */ __wbg_error_f851667af71bcfc6: () => (/* binding */ __wbg_error_f851667af71bcfc6),\n/* harmony export */ __wbg_getContext_62ccb1aa0e6c8b86: () => (/* binding */ __wbg_getContext_62ccb1aa0e6c8b86),\n/* harmony export */ __wbg_getImageData_956c421f9b7cdfe7: () => (/* binding */ __wbg_getImageData_956c421f9b7cdfe7),\n/* harmony export */ __wbg_globalThis_d0957e302752547e: () => (/* binding */ __wbg_globalThis_d0957e302752547e),\n/* harmony export */ __wbg_global_ae2f87312b8987fb: () => (/* binding */ __wbg_global_ae2f87312b8987fb),\n/* harmony export */ __wbg_height_b7046017c4148386: () => (/* binding */ __wbg_height_b7046017c4148386),\n/* harmony export */ __wbg_height_d65d28af1b6f26d3: () => (/* binding */ __wbg_height_d65d28af1b6f26d3),\n/* harmony export */ __wbg_height_e41b71b2f3141e8e: () => (/* binding */ __wbg_height_e41b71b2f3141e8e),\n/* harmony export */ __wbg_instanceof_CanvasRenderingContext2d_b4050f3a451ac712: () => (/* binding */ __wbg_instanceof_CanvasRenderingContext2d_b4050f3a451ac712),\n/* harmony export */ __wbg_instanceof_HtmlCanvasElement_6e58598b4e8b1586: () => (/* binding */ __wbg_instanceof_HtmlCanvasElement_6e58598b4e8b1586),\n/* harmony export */ __wbg_instanceof_Window_f2bf9e8e91f1be0d: () => (/* binding */ __wbg_instanceof_Window_f2bf9e8e91f1be0d),\n/* harmony export */ __wbg_length_d9c4ded7e708c6a1: () => (/* binding */ __wbg_length_d9c4ded7e708c6a1),\n/* harmony export */ __wbg_new_abda76e883ba8a5f: () => (/* binding */ __wbg_new_abda76e883ba8a5f),\n/* harmony export */ __wbg_new_bc5d9aad3f9ac80e: () => (/* binding */ __wbg_new_bc5d9aad3f9ac80e),\n/* harmony export */ __wbg_newnoargs_e643855c6572a4a8: () => (/* binding */ __wbg_newnoargs_e643855c6572a4a8),\n/* harmony export */ __wbg_newwithu8clampedarrayandsh_c90e0c3609c4ecc2: () => (/* binding */ __wbg_newwithu8clampedarrayandsh_c90e0c3609c4ecc2),\n/* harmony export */ __wbg_putImageData_0009acf77045dec6: () => (/* binding */ __wbg_putImageData_0009acf77045dec6),\n/* harmony export */ __wbg_random_f67f027fd89c6d9c: () => (/* binding */ __wbg_random_f67f027fd89c6d9c),\n/* harmony export */ __wbg_self_b9aad7f1c618bfaf: () => (/* binding */ __wbg_self_b9aad7f1c618bfaf),\n/* harmony export */ __wbg_set_4b3aa8445ac1e91c: () => (/* binding */ __wbg_set_4b3aa8445ac1e91c),\n/* harmony export */ __wbg_set_wasm: () => (/* binding */ __wbg_set_wasm),\n/* harmony export */ __wbg_setheight_0d2b445bb6a5a3f2: () => (/* binding */ __wbg_setheight_0d2b445bb6a5a3f2),\n/* harmony export */ __wbg_settextContent_ea2ce5e8fc889af7: () => (/* binding */ __wbg_settextContent_ea2ce5e8fc889af7),\n/* harmony export */ __wbg_setwidth_885d5dd3c7f48f41: () => (/* binding */ __wbg_setwidth_885d5dd3c7f48f41),\n/* harmony export */ __wbg_stack_658279fe44541cf6: () => (/* binding */ __wbg_stack_658279fe44541cf6),\n/* harmony export */ __wbg_width_020d7bde350571e9: () => (/* binding */ __wbg_width_020d7bde350571e9),\n/* harmony export */ __wbg_width_250e8da00ab1c884: () => (/* binding */ __wbg_width_250e8da00ab1c884),\n/* harmony export */ __wbg_width_3a395887a577233b: () => (/* binding */ __wbg_width_3a395887a577233b),\n/* harmony export */ __wbg_window_55e469842c98b086: () => (/* binding */ __wbg_window_55e469842c98b086),\n/* harmony export */ __wbindgen_debug_string: () => (/* binding */ __wbindgen_debug_string),\n/* harmony export */ __wbindgen_is_undefined: () => (/* binding */ __wbindgen_is_undefined),\n/* harmony export */ __wbindgen_memory: () => (/* binding */ __wbindgen_memory),\n/* harmony export */ __wbindgen_object_clone_ref: () => (/* binding */ __wbindgen_object_clone_ref),\n/* harmony export */ __wbindgen_object_drop_ref: () => (/* binding */ __wbindgen_object_drop_ref),\n/* harmony export */ __wbindgen_throw: () => (/* binding */ __wbindgen_throw),\n/* harmony export */ add_noise_rand: () => (/* binding */ add_noise_rand),\n/* harmony export */ adjust_contrast: () => (/* binding */ adjust_contrast),\n/* harmony export */ alter_blue_channel: () => (/* binding */ alter_blue_channel),\n/* harmony export */ alter_channel: () => (/* binding */ alter_channel),\n/* harmony export */ alter_channels: () => (/* binding */ alter_channels),\n/* harmony export */ alter_green_channel: () => (/* binding */ alter_green_channel),\n/* harmony export */ alter_red_channel: () => (/* binding */ alter_red_channel),\n/* harmony export */ alter_two_channels: () => (/* binding */ alter_two_channels),\n/* harmony export */ apply_gradient: () => (/* binding */ apply_gradient),\n/* harmony export */ b_grayscale: () => (/* binding */ b_grayscale),\n/* harmony export */ base64_to_image: () => (/* binding */ base64_to_image),\n/* harmony export */ base64_to_vec: () => (/* binding */ base64_to_vec),\n/* harmony export */ blend: () => (/* binding */ blend),\n/* harmony export */ box_blur: () => (/* binding */ box_blur),\n/* harmony export */ cali: () => (/* binding */ cali),\n/* harmony export */ color_horizontal_strips: () => (/* binding */ color_horizontal_strips),\n/* harmony export */ color_vertical_strips: () => (/* binding */ color_vertical_strips),\n/* harmony export */ colorize: () => (/* binding */ colorize),\n/* harmony export */ create_gradient: () => (/* binding */ create_gradient),\n/* harmony export */ crop: () => (/* binding */ crop),\n/* harmony export */ crop_img_browser: () => (/* binding */ crop_img_browser),\n/* harmony export */ darken_hsl: () => (/* binding */ darken_hsl),\n/* harmony export */ darken_hsluv: () => (/* binding */ darken_hsluv),\n/* harmony export */ darken_hsv: () => (/* binding */ darken_hsv),\n/* harmony export */ darken_lch: () => (/* binding */ darken_lch),\n/* harmony export */ decompose_max: () => (/* binding */ decompose_max),\n/* harmony export */ decompose_min: () => (/* binding */ decompose_min),\n/* harmony export */ desaturate: () => (/* binding */ desaturate),\n/* harmony export */ desaturate_hsl: () => (/* binding */ desaturate_hsl),\n/* harmony export */ desaturate_hsluv: () => (/* binding */ desaturate_hsluv),\n/* harmony export */ desaturate_hsv: () => (/* binding */ desaturate_hsv),\n/* harmony export */ desaturate_lch: () => (/* binding */ desaturate_lch),\n/* harmony export */ detect_135_deg_lines: () => (/* binding */ detect_135_deg_lines),\n/* harmony export */ detect_45_deg_lines: () => (/* binding */ detect_45_deg_lines),\n/* harmony export */ detect_horizontal_lines: () => (/* binding */ detect_horizontal_lines),\n/* harmony export */ detect_vertical_lines: () => (/* binding */ detect_vertical_lines),\n/* harmony export */ dither: () => (/* binding */ dither),\n/* harmony export */ dramatic: () => (/* binding */ dramatic),\n/* harmony export */ draw_text: () => (/* binding */ draw_text),\n/* harmony export */ draw_text_with_border: () => (/* binding */ draw_text_with_border),\n/* harmony export */ duotone: () => (/* binding */ duotone),\n/* harmony export */ duotone_horizon: () => (/* binding */ duotone_horizon),\n/* harmony export */ duotone_lilac: () => (/* binding */ duotone_lilac),\n/* harmony export */ duotone_ochre: () => (/* binding */ duotone_ochre),\n/* harmony export */ duotone_tint: () => (/* binding */ duotone_tint),\n/* harmony export */ duotone_violette: () => (/* binding */ duotone_violette),\n/* harmony export */ edge_detection: () => (/* binding */ edge_detection),\n/* harmony export */ edge_one: () => (/* binding */ edge_one),\n/* harmony export */ emboss: () => (/* binding */ emboss),\n/* harmony export */ filter: () => (/* binding */ filter),\n/* harmony export */ firenze: () => (/* binding */ firenze),\n/* harmony export */ fliph: () => (/* binding */ fliph),\n/* harmony export */ flipv: () => (/* binding */ flipv),\n/* harmony export */ frosted_glass: () => (/* binding */ frosted_glass),\n/* harmony export */ g_grayscale: () => (/* binding */ g_grayscale),\n/* harmony export */ gamma_correction: () => (/* binding */ gamma_correction),\n/* harmony export */ gaussian_blur: () => (/* binding */ gaussian_blur),\n/* harmony export */ get_image_data: () => (/* binding */ get_image_data),\n/* harmony export */ golden: () => (/* binding */ golden),\n/* harmony export */ grayscale: () => (/* binding */ grayscale),\n/* harmony export */ grayscale_human_corrected: () => (/* binding */ grayscale_human_corrected),\n/* harmony export */ grayscale_shades: () => (/* binding */ grayscale_shades),\n/* harmony export */ horizontal_strips: () => (/* binding */ horizontal_strips),\n/* harmony export */ hsl: () => (/* binding */ hsl),\n/* harmony export */ hsluv: () => (/* binding */ hsluv),\n/* harmony export */ hsv: () => (/* binding */ hsv),\n/* harmony export */ hue_rotate_hsl: () => (/* binding */ hue_rotate_hsl),\n/* harmony export */ hue_rotate_hsluv: () => (/* binding */ hue_rotate_hsluv),\n/* harmony export */ hue_rotate_hsv: () => (/* binding */ hue_rotate_hsv),\n/* harmony export */ hue_rotate_lch: () => (/* binding */ hue_rotate_lch),\n/* harmony export */ identity: () => (/* binding */ identity),\n/* harmony export */ inc_brightness: () => (/* binding */ inc_brightness),\n/* harmony export */ invert: () => (/* binding */ invert),\n/* harmony export */ laplace: () => (/* binding */ laplace),\n/* harmony export */ lch: () => (/* binding */ lch),\n/* harmony export */ lighten_hsl: () => (/* binding */ lighten_hsl),\n/* harmony export */ lighten_hsluv: () => (/* binding */ lighten_hsluv),\n/* harmony export */ lighten_hsv: () => (/* binding */ lighten_hsv),\n/* harmony export */ lighten_lch: () => (/* binding */ lighten_lch),\n/* harmony export */ lix: () => (/* binding */ lix),\n/* harmony export */ lofi: () => (/* binding */ lofi),\n/* harmony export */ median: () => (/* binding */ median),\n/* harmony export */ mix_with_colour: () => (/* binding */ mix_with_colour),\n/* harmony export */ monochrome: () => (/* binding */ monochrome),\n/* harmony export */ monochrome_tint: () => (/* binding */ monochrome_tint),\n/* harmony export */ multiple_offsets: () => (/* binding */ multiple_offsets),\n/* harmony export */ neue: () => (/* binding */ neue),\n/* harmony export */ noise_reduction: () => (/* binding */ noise_reduction),\n/* harmony export */ normalize: () => (/* binding */ normalize),\n/* harmony export */ obsidian: () => (/* binding */ obsidian),\n/* harmony export */ offset: () => (/* binding */ offset),\n/* harmony export */ offset_blue: () => (/* binding */ offset_blue),\n/* harmony export */ offset_green: () => (/* binding */ offset_green),\n/* harmony export */ offset_red: () => (/* binding */ offset_red),\n/* harmony export */ oil: () => (/* binding */ oil),\n/* harmony export */ open_image: () => (/* binding */ open_image),\n/* harmony export */ padding_bottom: () => (/* binding */ padding_bottom),\n/* harmony export */ padding_left: () => (/* binding */ padding_left),\n/* harmony export */ padding_right: () => (/* binding */ padding_right),\n/* harmony export */ padding_top: () => (/* binding */ padding_top),\n/* harmony export */ padding_uniform: () => (/* binding */ padding_uniform),\n/* harmony export */ pastel_pink: () => (/* binding */ pastel_pink),\n/* harmony export */ pink_noise: () => (/* binding */ pink_noise),\n/* harmony export */ pixelize: () => (/* binding */ pixelize),\n/* harmony export */ prewitt_horizontal: () => (/* binding */ prewitt_horizontal),\n/* harmony export */ primary: () => (/* binding */ primary),\n/* harmony export */ putImageData: () => (/* binding */ putImageData),\n/* harmony export */ r_grayscale: () => (/* binding */ r_grayscale),\n/* harmony export */ remove_blue_channel: () => (/* binding */ remove_blue_channel),\n/* harmony export */ remove_channel: () => (/* binding */ remove_channel),\n/* harmony export */ remove_green_channel: () => (/* binding */ remove_green_channel),\n/* harmony export */ remove_red_channel: () => (/* binding */ remove_red_channel),\n/* harmony export */ resample: () => (/* binding */ resample),\n/* harmony export */ resize: () => (/* binding */ resize),\n/* harmony export */ resize_img_browser: () => (/* binding */ resize_img_browser),\n/* harmony export */ rotate: () => (/* binding */ rotate),\n/* harmony export */ run: () => (/* binding */ run),\n/* harmony export */ ryo: () => (/* binding */ ryo),\n/* harmony export */ saturate_hsl: () => (/* binding */ saturate_hsl),\n/* harmony export */ saturate_hsluv: () => (/* binding */ saturate_hsluv),\n/* harmony export */ saturate_hsv: () => (/* binding */ saturate_hsv),\n/* harmony export */ saturate_lch: () => (/* binding */ saturate_lch),\n/* harmony export */ seam_carve: () => (/* binding */ seam_carve),\n/* harmony export */ selective_color_convert: () => (/* binding */ selective_color_convert),\n/* harmony export */ selective_desaturate: () => (/* binding */ selective_desaturate),\n/* harmony export */ selective_greyscale: () => (/* binding */ selective_greyscale),\n/* harmony export */ selective_hue_rotate: () => (/* binding */ selective_hue_rotate),\n/* harmony export */ selective_lighten: () => (/* binding */ selective_lighten),\n/* harmony export */ selective_saturate: () => (/* binding */ selective_saturate),\n/* harmony export */ sepia: () => (/* binding */ sepia),\n/* harmony export */ sharpen: () => (/* binding */ sharpen),\n/* harmony export */ single_channel_grayscale: () => (/* binding */ single_channel_grayscale),\n/* harmony export */ sobel_horizontal: () => (/* binding */ sobel_horizontal),\n/* harmony export */ sobel_vertical: () => (/* binding */ sobel_vertical),\n/* harmony export */ solarize: () => (/* binding */ solarize),\n/* harmony export */ solarize_retimg: () => (/* binding */ solarize_retimg),\n/* harmony export */ swap_channels: () => (/* binding */ swap_channels),\n/* harmony export */ threshold: () => (/* binding */ threshold),\n/* harmony export */ tint: () => (/* binding */ tint),\n/* harmony export */ to_image_data: () => (/* binding */ to_image_data),\n/* harmony export */ to_raw_pixels: () => (/* binding */ to_raw_pixels),\n/* harmony export */ vertical_strips: () => (/* binding */ vertical_strips),\n/* harmony export */ watermark: () => (/* binding */ watermark)\n/* harmony export */ });\n/* module decorator */ module = __webpack_require__.hmd(module);\nlet wasm;\nfunction __wbg_set_wasm(val) {\n wasm = val;\n}\n\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nfunction _assertBoolean(n) {\n if (typeof(n) !== 'boolean') {\n throw new Error('expected a boolean argument');\n }\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n if (typeof(heap_next) !== 'number') throw new Error('corrupt heap');\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet cachedUint8Memory0 = null;\n\nfunction getUint8Memory0() {\n if (cachedUint8Memory0 === null || cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\n\nconst lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder;\n\nlet cachedTextEncoder = new lTextEncoder('utf-8');\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (typeof(arg) !== 'string') throw new Error('expected a string argument');\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length) >>> 0;\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len) >>> 0;\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3) >>> 0;\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n if (ret.read !== arg.length) throw new Error('failed to pass whole string');\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachedInt32Memory0 = null;\n\nfunction getInt32Memory0() {\n if (cachedInt32Memory0 === null || cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\n\nconst lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder;\n\nlet cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\n\nfunction _assertNum(n) {\n if (typeof(n) !== 'number') throw new Error('expected a number argument');\n}\n/**\n* Adds an offset to the image by a certain number of pixels.\n*\n* This creates an RGB shift effect.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `channel_index`: The index of the channel to increment. 0 for red, 1 for green and 2 for blue.\n* * `offset` - The offset is added to the pixels in the image.\n* # Example\n*\n* ```no_run\n* // For example, to offset pixels by 30 pixels on the red channel:\n* use photon_rs::effects::offset;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* offset(&mut img, 0_usize, 30_u32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} channel_index\n* @param {number} offset\n*/\nfunction offset(photon_image, channel_index, offset) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(channel_index);\n _assertNum(offset);\n wasm.offset(photon_image.__wbg_ptr, channel_index, offset);\n}\n\n/**\n* Adds an offset to the red channel by a certain number of pixels.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `offset` - The offset you want to move the red channel by.\n* # Example\n*\n* ```no_run\n* // For example, to add an offset to the red channel by 30 pixels.\n* use photon_rs::effects::offset_red;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* offset_red(&mut img, 30_u32);\n* ```\n* @param {PhotonImage} img\n* @param {number} offset_amt\n*/\nfunction offset_red(img, offset_amt) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(offset_amt);\n wasm.offset_red(img.__wbg_ptr, offset_amt);\n}\n\n/**\n* Adds an offset to the green channel by a certain number of pixels.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `offset` - The offset you want to move the green channel by.\n* # Example\n*\n* ```no_run\n* // For example, to add an offset to the green channel by 30 pixels.\n* use photon_rs::effects::offset_green;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* offset_green(&mut img, 30_u32);\n* ```\n* @param {PhotonImage} img\n* @param {number} offset_amt\n*/\nfunction offset_green(img, offset_amt) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(offset_amt);\n wasm.offset_green(img.__wbg_ptr, offset_amt);\n}\n\n/**\n* Adds an offset to the blue channel by a certain number of pixels.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `offset_amt` - The offset you want to move the blue channel by.\n* # Example\n* // For example, to add an offset to the green channel by 40 pixels.\n*\n* ```no_run\n* use photon_rs::effects::offset_blue;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* offset_blue(&mut img, 40_u32);\n* ```\n* @param {PhotonImage} img\n* @param {number} offset_amt\n*/\nfunction offset_blue(img, offset_amt) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(offset_amt);\n wasm.offset_blue(img.__wbg_ptr, offset_amt);\n}\n\n/**\n* Adds multiple offsets to the image by a certain number of pixels (on two channels).\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `offset` - The offset is added to the pixels in the image.\n* # Example\n*\n* ```no_run\n* // For example, to add a 30-pixel offset to both the red and blue channels:\n* use photon_rs::effects::multiple_offsets;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* multiple_offsets(&mut img, 30_u32, 0_usize, 2_usize);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} offset\n* @param {number} channel_index\n* @param {number} channel_index2\n*/\nfunction multiple_offsets(photon_image, offset, channel_index, channel_index2) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(offset);\n _assertNum(channel_index);\n _assertNum(channel_index2);\n wasm.multiple_offsets(photon_image.__wbg_ptr, offset, channel_index, channel_index2);\n}\n\n/**\n* Reduces an image to the primary colours.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* // For example, to add a primary colour effect to an image of type `DynamicImage`:\n* use photon_rs::effects::primary;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* primary(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction primary(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.primary(img.__wbg_ptr);\n}\n\n/**\n* Colorizes the green channels of the image.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* // For example, to colorize an image of type `PhotonImage`:\n* use photon_rs::effects::colorize;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* colorize(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction colorize(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.colorize(photon_image.__wbg_ptr);\n}\n\n/**\n* Applies a solarizing effect to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* // For example, to colorize an image of type `PhotonImage`:\n* use photon_rs::effects::solarize;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* solarize(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction solarize(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.solarize(photon_image.__wbg_ptr);\n}\n\n/**\n* Applies a solarizing effect to an image and returns the resulting PhotonImage.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* // For example, to solarize \"retimg\" an image of type `PhotonImage`:\n* use photon_rs::effects::solarize_retimg;\n* use photon_rs::native::open_image;\n* use photon_rs::PhotonImage;\n*\n* let img = open_image(\"img.jpg\").expect(\"File should open\");\n* let result: PhotonImage = solarize_retimg(&img);\n* ```\n* @param {PhotonImage} photon_image\n* @returns {PhotonImage}\n*/\nfunction solarize_retimg(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n const ret = wasm.solarize_retimg(photon_image.__wbg_ptr);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Increase the brightness of an image by a factor.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `brightness` - A u8 to add to the brightness.\n* # Example\n*\n* ```no_run\n* use photon_rs::effects::inc_brightness;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* inc_brightness(&mut img, 10_u8);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} brightness\n*/\nfunction inc_brightness(photon_image, brightness) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(brightness);\n wasm.inc_brightness(photon_image.__wbg_ptr, brightness);\n}\n\n/**\n* Adjust the contrast of an image by a factor.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage that contains a view into the image.\n* * `contrast` - An f32 factor used to adjust contrast. Between [-255.0, 255.0]. The algorithm will\n* clamp results if passed factor is out of range.\n* # Example\n*\n* ```no_run\n* use photon_rs::effects::adjust_contrast;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* adjust_contrast(&mut img, 30_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} contrast\n*/\nfunction adjust_contrast(photon_image, contrast) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.adjust_contrast(photon_image.__wbg_ptr, contrast);\n}\n\n/**\n* Tint an image by adding an offset to averaged RGB channel values.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `r_offset` - The amount the R channel should be incremented by.\n* * `g_offset` - The amount the G channel should be incremented by.\n* * `b_offset` - The amount the B channel should be incremented by.\n* # Example\n*\n* ```no_run\n* // For example, to tint an image of type `PhotonImage`:\n* use photon_rs::effects::tint;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* tint(&mut img, 10_u32, 20_u32, 15_u32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} r_offset\n* @param {number} g_offset\n* @param {number} b_offset\n*/\nfunction tint(photon_image, r_offset, g_offset, b_offset) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(r_offset);\n _assertNum(g_offset);\n _assertNum(b_offset);\n wasm.tint(photon_image.__wbg_ptr, r_offset, g_offset, b_offset);\n}\n\n/**\n* Horizontal strips. Divide an image into a series of equal-height strips, for an artistic effect.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `num_strips` - The number of strips\n* # Example\n*\n* ```no_run\n* // For example, to draw horizontal strips on a `PhotonImage`:\n* use photon_rs::effects::horizontal_strips;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* horizontal_strips(&mut img, 8u8);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} num_strips\n*/\nfunction horizontal_strips(photon_image, num_strips) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(num_strips);\n wasm.horizontal_strips(photon_image.__wbg_ptr, num_strips);\n}\n\n/**\n* Horizontal strips. Divide an image into a series of equal-width strips, for an artistic effect. Sepcify a color as well.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `num_strips` - The numbder of strips\n* * `color` - Color of strips.\n* # Example\n*\n* ```no_run\n* // For example, to draw blue horizontal strips on a `PhotonImage`:\n* use photon_rs::effects::color_horizontal_strips;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgb;\n*\n* let color = Rgb::new(255u8, 0u8, 0u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* color_horizontal_strips(&mut img, 8u8, color);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} num_strips\n* @param {Rgb} color\n*/\nfunction color_horizontal_strips(photon_image, num_strips, color) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(num_strips);\n _assertClass(color, Rgb);\n if (color.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = color.__destroy_into_raw();\n wasm.color_horizontal_strips(photon_image.__wbg_ptr, num_strips, ptr0);\n}\n\n/**\n* Vertical strips. Divide an image into a series of equal-width strips, for an artistic effect.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `num_strips` - The numbder of strips\n* # Example\n*\n* ```no_run\n* // For example, to draw vertical strips on a `PhotonImage`:\n* use photon_rs::effects::vertical_strips;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* vertical_strips(&mut img, 8u8);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} num_strips\n*/\nfunction vertical_strips(photon_image, num_strips) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(num_strips);\n wasm.vertical_strips(photon_image.__wbg_ptr, num_strips);\n}\n\n/**\n* Vertical strips. Divide an image into a series of equal-width strips, for an artistic effect. Sepcify a color as well.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `num_strips` - The numbder of strips\n* * `color` - Color of strips.\n* # Example\n*\n* ```no_run\n* // For example, to draw red vertical strips on a `PhotonImage`:\n* use photon_rs::effects::color_vertical_strips;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgb;\n*\n* let color = Rgb::new(255u8, 0u8, 0u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* color_vertical_strips(&mut img, 8u8, color);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} num_strips\n* @param {Rgb} color\n*/\nfunction color_vertical_strips(photon_image, num_strips, color) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(num_strips);\n _assertClass(color, Rgb);\n if (color.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = color.__destroy_into_raw();\n wasm.color_vertical_strips(photon_image.__wbg_ptr, num_strips, ptr0);\n}\n\n/**\n* Turn an image into an oil painting\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `radius` - Radius of each paint particle\n* * `intesnity` - How artsy an Image should be\n* # Example\n*\n* ```no_run\n* // For example, to oil an image of type `PhotonImage`:\n* use photon_rs::effects::oil;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* oil(&mut img, 4i32, 55.0);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} radius\n* @param {number} intensity\n*/\nfunction oil(photon_image, radius, intensity) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(radius);\n wasm.oil(photon_image.__wbg_ptr, radius, intensity);\n}\n\n/**\n* Turn an image into an frosted glass see through\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* // For example, to turn an image of type `PhotonImage` into frosted glass see through:\n* use photon_rs::effects::frosted_glass;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* frosted_glass(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction frosted_glass(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.frosted_glass(photon_image.__wbg_ptr);\n}\n\n/**\n* Pixelize an image.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage that contains a view into the image.\n* * `pixel_size` - Targeted pixel size of generated image.\n* # Example\n*\n* ```no_run\n* // For example, to turn an image of type `PhotonImage` into a pixelized image with 50 pixels blocks:\n* use photon_rs::effects::pixelize;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* pixelize(&mut img, 50);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} pixel_size\n*/\nfunction pixelize(photon_image, pixel_size) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(pixel_size);\n wasm.pixelize(photon_image.__wbg_ptr, pixel_size);\n}\n\n/**\n* Normalizes an image by remapping its range of pixels values. Only RGB\n* channels are processed and each channel is stretched to \\[0, 255\\] range\n* independently. This process is also known as contrast stretching.\n* # Arguments\n* * `photon_image` - A PhotonImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* // For example, to turn an image of type `PhotonImage` into a normalized image:\n* use photon_rs::effects::normalize;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* normalize(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction normalize(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.normalize(photon_image.__wbg_ptr);\n}\n\n/**\n* Applies Floyd-Steinberg dithering to an image.\n* Only RGB channels are processed, alpha remains unchanged.\n* # Arguments\n* * `photon_image` - A PhotonImage that contains a view into the image.\n* * `depth` - bits per channel. Clamped between 1 and 8.\n* # Example\n*\n* ```no_run\n* // For example, to turn an image of type `PhotonImage` into a dithered image:\n* use photon_rs::effects::dither;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let depth = 1;\n* dither(&mut img, depth);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} depth\n*/\nfunction dither(photon_image, depth) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(depth);\n wasm.dither(photon_image.__wbg_ptr, depth);\n}\n\n/**\n* @param {PhotonImage} photon_image\n* @param {Rgb} color_a\n* @param {Rgb} color_b\n*/\nfunction duotone(photon_image, color_a, color_b) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(color_a, Rgb);\n if (color_a.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = color_a.__destroy_into_raw();\n _assertClass(color_b, Rgb);\n if (color_b.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr1 = color_b.__destroy_into_raw();\n wasm.duotone(photon_image.__wbg_ptr, ptr0, ptr1);\n}\n\n/**\n* Alter a select channel by incrementing or decrementing its value by a constant.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `channel` - The channel you wish to alter, it should be either 0, 1 or 2,\n* representing R, G, or B respectively. (O=Red, 1=Green, 2=Blue)\n* * `amount` - The amount to increment/decrement the channel's value by for that pixel.\n* A positive value will increment/decrement the channel's value, a negative value will decrement the channel's value.\n*\n* ## Example\n*\n* ```no_run\n* // For example, to increase the Red channel for all pixels by 10:\n* use photon_rs::channels::alter_channel;\n* use photon_rs::native::{open_image};\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_channel(&mut img, 0_usize, 10_i16);\n* ```\n*\n* Adds a constant to a select R, G, or B channel's value.\n*\n* ### Decrease a channel's value\n* // For example, to decrease the Green channel for all pixels by 20:\n* ```no_run\n* use photon_rs::channels::alter_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_channel(&mut img, 1_usize, -20_i16);\n* ```\n* **Note**: Note the use of a minus symbol when decreasing the channel.\n* @param {PhotonImage} img\n* @param {number} channel\n* @param {number} amt\n*/\nfunction alter_channel(img, channel, amt) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(channel);\n _assertNum(amt);\n wasm.alter_channel(img.__wbg_ptr, channel, amt);\n}\n\n/**\n* Increment or decrement every pixel's Red channel by a constant.\n*\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `amt` - The amount to increment or decrement the channel's value by for that pixel.\n*\n* # Example\n*\n* ```no_run\n* // For example, to increase the Red channel for all pixels by 10:\n* use photon_rs::channels::alter_red_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_red_channel(&mut img, 10_i16);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} amt\n*/\nfunction alter_red_channel(photon_image, amt) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(amt);\n wasm.alter_red_channel(photon_image.__wbg_ptr, amt);\n}\n\n/**\n* Increment or decrement every pixel's Green channel by a constant.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `amt` - The amount to increment/decrement the channel's value by for that pixel.\n*\n* # Example\n*\n* ```no_run\n* // For example, to increase the Green channel for all pixels by 20:\n* use photon_rs::channels::alter_green_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_green_channel(&mut img, 20_i16);\n* ```\n* @param {PhotonImage} img\n* @param {number} amt\n*/\nfunction alter_green_channel(img, amt) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(amt);\n wasm.alter_green_channel(img.__wbg_ptr, amt);\n}\n\n/**\n* Increment or decrement every pixel's Blue channel by a constant.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `amt` - The amount to increment or decrement the channel's value by for that pixel.\n*\n* # Example\n*\n* ```no_run\n* // For example, to increase the Blue channel for all pixels by 10:\n* use photon_rs::channels::alter_blue_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_blue_channel(&mut img, 10_i16);\n* ```\n* @param {PhotonImage} img\n* @param {number} amt\n*/\nfunction alter_blue_channel(img, amt) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(amt);\n wasm.alter_blue_channel(img.__wbg_ptr, amt);\n}\n\n/**\n* Increment/decrement two channels' values simultaneously by adding an amt to each channel per pixel.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `channel1` - A usize from 0 to 2 that represents either the R, G or B channels.\n* * `amt1` - The amount to increment/decrement the channel's value by for that pixel.\n* * `channel2` -A usize from 0 to 2 that represents either the R, G or B channels.\n* * `amt2` - The amount to increment/decrement the channel's value by for that pixel.\n*\n* # Example\n*\n* ```no_run\n* // For example, to increase the values of the Red and Blue channels per pixel:\n* use photon_rs::channels::alter_two_channels;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_two_channels(&mut img, 0_usize, 10_i16, 2_usize, 20_i16);\n* ```\n* @param {PhotonImage} img\n* @param {number} channel1\n* @param {number} amt1\n* @param {number} channel2\n* @param {number} amt2\n*/\nfunction alter_two_channels(img, channel1, amt1, channel2, amt2) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(channel1);\n _assertNum(amt1);\n _assertNum(channel2);\n _assertNum(amt2);\n wasm.alter_two_channels(img.__wbg_ptr, channel1, amt1, channel2, amt2);\n}\n\n/**\n* Increment all 3 channels' values by adding an amt to each channel per pixel.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `r_amt` - The amount to increment/decrement the Red channel by.\n* * `g_amt` - The amount to increment/decrement the Green channel by.\n* * `b_amt` - The amount to increment/decrement the Blue channel by.\n*\n* # Example\n*\n* ```no_run\n* // For example, to increase the values of the Red channel by 10, the Green channel by 20,\n* // and the Blue channel by 50:\n* use photon_rs::channels::alter_channels;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_channels(&mut img, 10_i16, 20_i16, 50_i16);\n* ```\n* @param {PhotonImage} img\n* @param {number} r_amt\n* @param {number} g_amt\n* @param {number} b_amt\n*/\nfunction alter_channels(img, r_amt, g_amt, b_amt) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(r_amt);\n _assertNum(g_amt);\n _assertNum(b_amt);\n wasm.alter_channels(img.__wbg_ptr, r_amt, g_amt, b_amt);\n}\n\n/**\n* Set a certain channel to zero, thus removing the channel's influence in the pixels' final rendered colour.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `channel` - The channel to be removed; must be a usize from 0 to 2, with 0 representing Red, 1 representing Green, and 2 representing Blue.\n* * `min_filter` - Minimum filter. Value between 0 and 255. Only remove the channel if the current pixel's channel value is less than this minimum filter. To completely\n* remove the channel, set this value to 255, to leave the channel as is, set to 0, and to set a channel to zero for a pixel whose red value is greater than 50,\n* then channel would be 0 and min_filter would be 50.\n*\n* # Example\n*\n* ```no_run\n* // For example, to remove the Red channel with a min_filter of 100:\n* use photon_rs::channels::remove_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* remove_channel(&mut img, 0_usize, 100_u8);\n* ```\n* @param {PhotonImage} img\n* @param {number} channel\n* @param {number} min_filter\n*/\nfunction remove_channel(img, channel, min_filter) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(channel);\n _assertNum(min_filter);\n wasm.remove_channel(img.__wbg_ptr, channel, min_filter);\n}\n\n/**\n* Remove the Red channel's influence in an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `min_filter` - Only remove the channel if the current pixel's channel value is less than this minimum filter.\n*\n* # Example\n*\n* ```no_run\n* // For example, to remove the red channel for red channel pixel values less than 50:\n* use photon_rs::channels::remove_red_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* remove_red_channel(&mut img, 50_u8);\n* ```\n* @param {PhotonImage} img\n* @param {number} min_filter\n*/\nfunction remove_red_channel(img, min_filter) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(min_filter);\n wasm.remove_red_channel(img.__wbg_ptr, min_filter);\n}\n\n/**\n* Remove the Green channel's influence in an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `min_filter` - Only remove the channel if the current pixel's channel value is less than this minimum filter.\n*\n* # Example\n*\n* ```no_run\n* // For example, to remove the green channel for green channel pixel values less than 50:\n* use photon_rs::channels::remove_green_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* remove_green_channel(&mut img, 50_u8);\n* ```\n* @param {PhotonImage} img\n* @param {number} min_filter\n*/\nfunction remove_green_channel(img, min_filter) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(min_filter);\n wasm.remove_green_channel(img.__wbg_ptr, min_filter);\n}\n\n/**\n* Remove the Blue channel's influence in an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `min_filter` - Only remove the channel if the current pixel's channel value is less than this minimum filter.\n*\n* # Example\n*\n* ```no_run\n* // For example, to remove the blue channel for blue channel pixel values less than 50:\n* use photon_rs::channels::remove_blue_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* remove_blue_channel(&mut img, 50_u8);\n* ```\n* @param {PhotonImage} img\n* @param {number} min_filter\n*/\nfunction remove_blue_channel(img, min_filter) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(min_filter);\n wasm.remove_blue_channel(img.__wbg_ptr, min_filter);\n}\n\n/**\n* Swap two channels.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `channel1` - An index from 0 to 2, representing the Red, Green or Blue channels respectively. Red would be represented by 0, Green by 1, and Blue by 2.\n* * `channel2` - An index from 0 to 2, representing the Red, Green or Blue channels respectively. Same as above.\n*\n* # Example\n*\n* ```no_run\n* // For example, to swap the values of the Red channel with the values of the Blue channel:\n* use photon_rs::channels::swap_channels;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* swap_channels(&mut img, 0_usize, 2_usize);\n* ```\n* @param {PhotonImage} img\n* @param {number} channel1\n* @param {number} channel2\n*/\nfunction swap_channels(img, channel1, channel2) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(channel1);\n _assertNum(channel2);\n wasm.swap_channels(img.__wbg_ptr, channel1, channel2);\n}\n\n/**\n* Invert RGB value of an image.\n*\n* # Arguments\n* * `photon_image` - A DynamicImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* use photon_rs::channels::invert;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* invert(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction invert(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.invert(photon_image.__wbg_ptr);\n}\n\n/**\n* Selective hue rotation.\n*\n* Only rotate the hue of a pixel if its RGB values are within a specified range.\n* This function only rotates a pixel's hue to another if it is visually similar to the colour specified.\n* For example, if a user wishes all pixels that are blue to be changed to red, they can selectively specify only the blue pixels to be changed.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `ref_color` - The `RGB` value of the reference color (to be compared to)\n* * `degrees` - The amount of degrees to hue rotate by.\n*\n* # Example\n*\n* ```no_run\n* // For example, to only rotate the pixels that are of RGB value RGB{20, 40, 60}:\n* use photon_rs::Rgb;\n* use photon_rs::channels::selective_hue_rotate;\n* use photon_rs::native::open_image;\n*\n* let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* selective_hue_rotate(&mut img, ref_color, 180_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {Rgb} ref_color\n* @param {number} degrees\n*/\nfunction selective_hue_rotate(photon_image, ref_color, degrees) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(ref_color, Rgb);\n if (ref_color.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = ref_color.__destroy_into_raw();\n wasm.selective_hue_rotate(photon_image.__wbg_ptr, ptr0, degrees);\n}\n\n/**\n* Selectively change pixel colours which are similar to the reference colour provided.\n*\n* Similarity between two colours is calculated via the CIE76 formula.\n* Only changes the color of a pixel if its similarity to the reference colour is within the range in the algorithm.\n* For example, with this function, a user can change the color of all blue pixels by mixing them with red by 10%.\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `ref_color` - The `RGB` value of the reference color (to be compared to)\n* * `new_color` - The `RGB` value of the new color (to be mixed with the matched pixels)\n* * `fraction` - The amount of mixing the new colour with the matched pixels\n*\n* # Example\n*\n* ```no_run\n* // For example, to only change the color of pixels that are similar to the RGB value RGB{200, 120, 30} by mixing RGB{30, 120, 200} with 25%:\n* use photon_rs::Rgb;\n* use photon_rs::channels::selective_color_convert;\n* use photon_rs::native::open_image;\n*\n* let ref_color = Rgb::new(200, 120, 30);\n* let new_color = Rgb::new(30, 120, 200);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* selective_color_convert(&mut img, ref_color, new_color, 0.25);\n* ```\n* @param {PhotonImage} photon_image\n* @param {Rgb} ref_color\n* @param {Rgb} new_color\n* @param {number} fraction\n*/\nfunction selective_color_convert(photon_image, ref_color, new_color, fraction) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(ref_color, Rgb);\n if (ref_color.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = ref_color.__destroy_into_raw();\n _assertClass(new_color, Rgb);\n if (new_color.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr1 = new_color.__destroy_into_raw();\n wasm.selective_color_convert(photon_image.__wbg_ptr, ptr0, ptr1, fraction);\n}\n\n/**\n* Selectively lighten an image.\n*\n* Only lighten the hue of a pixel if its colour matches or is similar to the RGB colour specified.\n* For example, if a user wishes all pixels that are blue to be lightened, they can selectively specify only the blue pixels to be changed.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `ref_color` - The `RGB` value of the reference color (to be compared to)\n* * `amt` - The level from 0 to 1 to lighten the hue by. Increasing by 10% would have an `amt` of 0.1\n*\n* # Example\n*\n* ```no_run\n* // For example, to only lighten the pixels that are of or similar to RGB value RGB{20, 40, 60}:\n* use photon_rs::Rgb;\n* use photon_rs::channels::selective_lighten;\n* use photon_rs::native::open_image;\n*\n* let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* selective_lighten(&mut img, ref_color, 0.2_f32);\n* ```\n* @param {PhotonImage} img\n* @param {Rgb} ref_color\n* @param {number} amt\n*/\nfunction selective_lighten(img, ref_color, amt) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(ref_color, Rgb);\n if (ref_color.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = ref_color.__destroy_into_raw();\n wasm.selective_lighten(img.__wbg_ptr, ptr0, amt);\n}\n\n/**\n* Selectively desaturate pixel colours which are similar to the reference colour provided.\n*\n* Similarity between two colours is calculated via the CIE76 formula.\n* Only desaturates the hue of a pixel if its similarity to the reference colour is within the range in the algorithm.\n* For example, if a user wishes all pixels that are blue to be desaturated by 0.1, they can selectively specify only the blue pixels to be changed.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `ref_color` - The `RGB` value of the reference color (to be compared to)\n* * `amt` - The amount of desaturate the colour by.\n*\n* # Example\n*\n* ```no_run\n* // For example, to only desaturate the pixels that are similar to the RGB value RGB{20, 40, 60}:\n* use photon_rs::Rgb;\n* use photon_rs::channels::selective_desaturate;\n* use photon_rs::native::open_image;\n*\n* let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* selective_desaturate(&mut img, ref_color, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {Rgb} ref_color\n* @param {number} amt\n*/\nfunction selective_desaturate(img, ref_color, amt) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(ref_color, Rgb);\n if (ref_color.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = ref_color.__destroy_into_raw();\n wasm.selective_desaturate(img.__wbg_ptr, ptr0, amt);\n}\n\n/**\n* Selectively saturate pixel colours which are similar to the reference colour provided.\n*\n* Similarity between two colours is calculated via the CIE76 formula.\n* Only saturates the hue of a pixel if its similarity to the reference colour is within the range in the algorithm.\n* For example, if a user wishes all pixels that are blue to have an increase in saturation by 10%, they can selectively specify only the blue pixels to be changed.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `ref_color` - The `RGB` value of the reference color (to be compared to)\n* * `amt` - The amount of saturate the colour by.\n*\n* # Example\n*\n* ```no_run\n* // For example, to only increase the saturation of pixels that are similar to the RGB value RGB{20, 40, 60}:\n* use photon_rs::Rgb;\n* use photon_rs::channels::selective_saturate;\n* use photon_rs::native::open_image;\n*\n* let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* selective_saturate(&mut img, ref_color, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {Rgb} ref_color\n* @param {number} amt\n*/\nfunction selective_saturate(img, ref_color, amt) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(ref_color, Rgb);\n if (ref_color.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = ref_color.__destroy_into_raw();\n wasm.selective_saturate(img.__wbg_ptr, ptr0, amt);\n}\n\n/**\n* Selectively changes a pixel to greyscale if it is *not* visually similar or close to the colour specified.\n* Only changes the colour of a pixel if its RGB values are within a specified range.\n*\n* (Similarity between two colours is calculated via the CIE76 formula.)\n* For example, if a user wishes all pixels that are *NOT* blue to be displayed in greyscale, they can selectively specify only the blue pixels to be\n* kept in the photo.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `ref_color` - The `RGB` value of the reference color (to be compared to)\n*\n* # Example\n*\n* ```no_run\n* // For example, to greyscale all pixels that are *not* visually similar to the RGB colour RGB{20, 40, 60}:\n* use photon_rs::Rgb;\n* use photon_rs::channels::selective_greyscale;\n* use photon_rs::native::open_image;\n*\n* let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* selective_greyscale(img, ref_color);\n* ```\n* @param {PhotonImage} photon_image\n* @param {Rgb} ref_color\n*/\nfunction selective_greyscale(photon_image, ref_color) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = photon_image.__destroy_into_raw();\n _assertClass(ref_color, Rgb);\n if (ref_color.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr1 = ref_color.__destroy_into_raw();\n wasm.selective_greyscale(ptr0, ptr1);\n}\n\n/**\n* Add bordered-text to an image.\n* The only font available as of now is Roboto.\n* Note: A graphic design/text-drawing library is currently being developed, so stay tuned.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `text` - Text string to be drawn to the image.\n* * `x` - x-coordinate of where first letter's 1st pixel should be drawn.\n* * `y` - y-coordinate of where first letter's 1st pixel should be drawn.\n*\n* # Example\n*\n* ```no_run\n* // For example to draw the string \"Welcome to Photon!\" at 10, 10:\n* use photon_rs::native::open_image;\n* use photon_rs::text::draw_text_with_border;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* draw_text_with_border(&mut img, \"Welcome to Photon!\", 10_i32, 10_i32);\n* ```\n* @param {PhotonImage} photon_img\n* @param {string} text\n* @param {number} x\n* @param {number} y\n*/\nfunction draw_text_with_border(photon_img, text, x, y) {\n _assertClass(photon_img, PhotonImage);\n if (photon_img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertNum(x);\n _assertNum(y);\n wasm.draw_text_with_border(photon_img.__wbg_ptr, ptr0, len0, x, y);\n}\n\n/**\n* Add text to an image.\n* The only font available as of now is Roboto.\n* Note: A graphic design/text-drawing library is currently being developed, so stay tuned.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `text` - Text string to be drawn to the image.\n* * `x` - x-coordinate of where first letter's 1st pixel should be drawn.\n* * `y` - y-coordinate of where first letter's 1st pixel should be drawn.\n*\n* # Example\n*\n* ```no_run\n* // For example to draw the string \"Welcome to Photon!\" at 10, 10:\n* use photon_rs::native::open_image;\n* use photon_rs::text::draw_text;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* draw_text(&mut img, \"Welcome to Photon!\", 10_i32, 10_i32);\n* ```\n* @param {PhotonImage} photon_img\n* @param {string} text\n* @param {number} x\n* @param {number} y\n*/\nfunction draw_text(photon_img, text, x, y) {\n _assertClass(photon_img, PhotonImage);\n if (photon_img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n const ptr0 = passStringToWasm0(text, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertNum(x);\n _assertNum(y);\n wasm.draw_text(photon_img.__wbg_ptr, ptr0, len0, x, y);\n}\n\n/**\n* Apply a monochrome effect of a certain colour.\n*\n* It does so by averaging the R, G, and B values of a pixel, and then adding a\n* separate value to that averaged value for each channel to produce a tint.\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `r_offset` - The value to add to the Red channel per pixel.\n* * `g_offset` - The value to add to the Green channel per pixel.\n* * `b_offset` - The value to add to the Blue channel per pixel.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a monochrome effect to an image:\n* use photon_rs::monochrome::monochrome;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* monochrome(&mut img, 40_u32, 50_u32, 100_u32);\n* ```\n* @param {PhotonImage} img\n* @param {number} r_offset\n* @param {number} g_offset\n* @param {number} b_offset\n*/\nfunction monochrome(img, r_offset, g_offset, b_offset) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(r_offset);\n _assertNum(g_offset);\n _assertNum(b_offset);\n wasm.monochrome(img.__wbg_ptr, r_offset, g_offset, b_offset);\n}\n\n/**\n* Convert an image to sepia.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* // For example, to sepia an image of type `PhotonImage`:\n* use photon_rs::monochrome::sepia;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* sepia(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction sepia(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.sepia(img.__wbg_ptr);\n}\n\n/**\n* Convert an image to grayscale using the conventional averaging algorithm.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* // For example, to convert an image of type `PhotonImage` to grayscale:\n* use photon_rs::monochrome::grayscale;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* grayscale(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction grayscale(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.grayscale(img.__wbg_ptr);\n}\n\n/**\n* Convert an image to grayscale with a human corrected factor, to account for human vision.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* // For example, to convert an image of type `PhotonImage` to grayscale with a human corrected factor:\n* use photon_rs::monochrome::grayscale_human_corrected;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* grayscale_human_corrected(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction grayscale_human_corrected(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.grayscale_human_corrected(img.__wbg_ptr);\n}\n\n/**\n* Desaturate an image by getting the min/max of each pixel's RGB values.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* // For example, to desaturate an image:\n* use photon_rs::monochrome::desaturate;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* desaturate(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction desaturate(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.desaturate(img.__wbg_ptr);\n}\n\n/**\n* Uses a min. decomposition algorithm to convert an image to greyscale.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* // For example, to decompose an image with min decomposition:\n* use photon_rs::monochrome::decompose_min;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* decompose_min(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction decompose_min(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.decompose_min(img.__wbg_ptr);\n}\n\n/**\n* Uses a max. decomposition algorithm to convert an image to greyscale.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* // For example, to decompose an image with max decomposition:\n* use photon_rs::monochrome::decompose_max;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* decompose_max(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction decompose_max(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.decompose_max(img.__wbg_ptr);\n}\n\n/**\n* Employ only a limited number of gray shades in an image.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `num_shades` - The number of grayscale shades to be displayed in the image.\n* # Example\n*\n* ```no_run\n* // For example, to limit an image to four shades of gray only:\n* use photon_rs::monochrome::grayscale_shades;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* grayscale_shades(&mut img, 4_u8);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} num_shades\n*/\nfunction grayscale_shades(photon_image, num_shades) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(num_shades);\n wasm.grayscale_shades(photon_image.__wbg_ptr, num_shades);\n}\n\n/**\n* Convert an image to grayscale by setting a pixel's 3 RGB values to the Red channel's value.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::monochrome::r_grayscale;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* r_grayscale(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction r_grayscale(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.r_grayscale(photon_image.__wbg_ptr);\n}\n\n/**\n* Convert an image to grayscale by setting a pixel's 3 RGB values to the Green channel's value.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::monochrome::g_grayscale;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* g_grayscale(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction g_grayscale(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.g_grayscale(photon_image.__wbg_ptr);\n}\n\n/**\n* Convert an image to grayscale by setting a pixel's 3 RGB values to the Blue channel's value.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::monochrome::b_grayscale;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* b_grayscale(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction b_grayscale(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.b_grayscale(photon_image.__wbg_ptr);\n}\n\n/**\n* Convert an image to grayscale by setting a pixel's 3 RGB values to a chosen channel's value.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `channel` - A usize representing the channel from 0 to 2. O represents the Red channel, 1 the Green channel, and 2 the Blue channel.\n* # Example\n* To grayscale using only values from the Red channel:\n* ```no_run\n* use photon_rs::monochrome::single_channel_grayscale;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* single_channel_grayscale(&mut img, 0_usize);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} channel\n*/\nfunction single_channel_grayscale(photon_image, channel) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(channel);\n wasm.single_channel_grayscale(photon_image.__wbg_ptr, channel);\n}\n\n/**\n* Threshold an image using a standard thresholding algorithm.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `threshold` - The amount the image should be thresholded by from 0 to 255.\n* # Example\n*\n* ```no_run\n* // For example, to threshold an image of type `PhotonImage`:\n* use photon_rs::monochrome::threshold;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* threshold(&mut img, 30_u32);\n* ```\n* @param {PhotonImage} img\n* @param {number} threshold\n*/\nfunction threshold(img, threshold) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(threshold);\n wasm.threshold(img.__wbg_ptr, threshold);\n}\n\n/**\n* Add randomized noise to an image.\n* This function adds a Gaussian Noise Sample to each pixel through incrementing each channel by a randomized offset.\n* This randomized offset is generated by creating a randomized thread pool.\n* **[WASM SUPPORT IS AVAILABLE]**: Randomized thread pools cannot be created with WASM, but\n* a workaround using js_sys::Math::random works now.\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example:\n* use photon_rs::native::open_image;\n* use photon_rs::noise::add_noise_rand;\n* use photon_rs::PhotonImage;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* add_noise_rand(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction add_noise_rand(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.add_noise_rand(photon_image.__wbg_ptr);\n}\n\n/**\n* Add pink-tinted noise to an image.\n*\n* **[WASM SUPPORT IS AVAILABLE]**: Randomized thread pools cannot be created with WASM, but\n* a workaround using js_sys::Math::random works now.\n* # Arguments\n* * `name` - A PhotonImage that contains a view into the image.\n*\n* # Example\n*\n* ```no_run\n* // For example, to add pink-tinted noise to an image:\n* use photon_rs::native::open_image;\n* use photon_rs::noise::pink_noise;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* pink_noise(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction pink_noise(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.pink_noise(photon_image.__wbg_ptr);\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1) >>> 0;\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n*! [temp] Check if WASM is supported.\n*/\nfunction run() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.run(retptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\nlet stack_pointer = 128;\n\nfunction addBorrowedObject(obj) {\n if (stack_pointer == 1) throw new Error('out of js stack');\n heap[--stack_pointer] = obj;\n return stack_pointer;\n}\n/**\n* Get the ImageData from a 2D canvas context\n* @param {HTMLCanvasElement} canvas\n* @param {CanvasRenderingContext2D} ctx\n* @returns {ImageData}\n*/\nfunction get_image_data(canvas, ctx) {\n try {\n const ret = wasm.get_image_data(addBorrowedObject(canvas), addBorrowedObject(ctx));\n return takeObject(ret);\n } finally {\n heap[stack_pointer++] = undefined;\n heap[stack_pointer++] = undefined;\n }\n}\n\n/**\n* Place a PhotonImage onto a 2D canvas.\n* @param {HTMLCanvasElement} canvas\n* @param {CanvasRenderingContext2D} ctx\n* @param {PhotonImage} new_image\n*/\nfunction putImageData(canvas, ctx, new_image) {\n _assertClass(new_image, PhotonImage);\n if (new_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = new_image.__destroy_into_raw();\n wasm.putImageData(addHeapObject(canvas), addHeapObject(ctx), ptr0);\n}\n\n/**\n* Convert a HTML5 Canvas Element to a PhotonImage.\n*\n* This converts the ImageData found in the canvas context to a PhotonImage,\n* which can then have effects or filters applied to it.\n* @param {HTMLCanvasElement} canvas\n* @param {CanvasRenderingContext2D} ctx\n* @returns {PhotonImage}\n*/\nfunction open_image(canvas, ctx) {\n const ret = wasm.open_image(addHeapObject(canvas), addHeapObject(ctx));\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Convert ImageData to a raw pixel vec of u8s.\n* @param {ImageData} imgdata\n* @returns {Uint8Array}\n*/\nfunction to_raw_pixels(imgdata) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.to_raw_pixels(retptr, addHeapObject(imgdata));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* Convert a base64 string to a PhotonImage.\n* @param {string} base64\n* @returns {PhotonImage}\n*/\nfunction base64_to_image(base64) {\n const ptr0 = passStringToWasm0(base64, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.base64_to_image(ptr0, len0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Convert a base64 string to a Vec of u8s.\n* @param {string} base64\n* @returns {Uint8Array}\n*/\nfunction base64_to_vec(base64) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passStringToWasm0(base64, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.base64_to_vec(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v2 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v2;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* Convert a PhotonImage to JS-compatible ImageData.\n* @param {PhotonImage} photon_image\n* @returns {ImageData}\n*/\nfunction to_image_data(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = photon_image.__destroy_into_raw();\n const ret = wasm.to_image_data(ptr0);\n return takeObject(ret);\n}\n\n/**\n* Crop an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to crop an image at (0, 0) to (500, 800)\n* use photon_rs::native::{open_image};\n* use photon_rs::transform::crop;\n* use photon_rs::PhotonImage;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let cropped_img: PhotonImage = crop(&mut img, 0_u32, 0_u32, 500_u32, 800_u32);\n* // Write the contents of this image in JPG format.\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} x1\n* @param {number} y1\n* @param {number} x2\n* @param {number} y2\n* @returns {PhotonImage}\n*/\nfunction crop(photon_image, x1, y1, x2, y2) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(x1);\n _assertNum(y1);\n _assertNum(x2);\n _assertNum(y2);\n const ret = wasm.crop(photon_image.__wbg_ptr, x1, y1, x2, y2);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* @param {HTMLCanvasElement} source_canvas\n* @param {number} width\n* @param {number} height\n* @param {number} left\n* @param {number} top\n* @returns {HTMLCanvasElement}\n*/\nfunction crop_img_browser(source_canvas, width, height, left, top) {\n const ret = wasm.crop_img_browser(addHeapObject(source_canvas), width, height, left, top);\n return takeObject(ret);\n}\n\n/**\n* Flip an image horizontally.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to flip an image horizontally:\n* use photon_rs::native::open_image;\n* use photon_rs::transform::fliph;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* fliph(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction fliph(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.fliph(photon_image.__wbg_ptr);\n}\n\n/**\n* Flip an image vertically.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to flip an image vertically:\n* use photon_rs::native::open_image;\n* use photon_rs::transform::flipv;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* flipv(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction flipv(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.flipv(photon_image.__wbg_ptr);\n}\n\n/**\n* Resize an image on the web.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `width` - New width.\n* * `height` - New height.\n* * `sampling_filter` - Nearest = 1, Triangle = 2, CatmullRom = 3, Gaussian = 4, Lanczos3 = 5\n* @param {PhotonImage} photon_img\n* @param {number} width\n* @param {number} height\n* @param {number} sampling_filter\n* @returns {HTMLCanvasElement}\n*/\nfunction resize_img_browser(photon_img, width, height, sampling_filter) {\n _assertClass(photon_img, PhotonImage);\n if (photon_img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(width);\n _assertNum(height);\n _assertNum(sampling_filter);\n const ret = wasm.resize_img_browser(photon_img.__wbg_ptr, width, height, sampling_filter);\n return takeObject(ret);\n}\n\n/**\n* Resize an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `width` - New width.\n* * `height` - New height.\n* * `sampling_filter` - Nearest = 1, Triangle = 2, CatmullRom = 3, Gaussian = 4, Lanczos3 = 5\n* @param {PhotonImage} photon_img\n* @param {number} width\n* @param {number} height\n* @param {number} sampling_filter\n* @returns {PhotonImage}\n*/\nfunction resize(photon_img, width, height, sampling_filter) {\n _assertClass(photon_img, PhotonImage);\n if (photon_img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(width);\n _assertNum(height);\n _assertNum(sampling_filter);\n const ret = wasm.resize(photon_img.__wbg_ptr, width, height, sampling_filter);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Resize image using seam carver.\n* Resize only if new dimensions are smaller, than original image.\n* # NOTE: This is still experimental feature, and pretty slow.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `width` - New width.\n* * `height` - New height.\n*\n* # Example\n*\n* ```no_run\n* // For example, resize image using seam carver:\n* use photon_rs::native::open_image;\n* use photon_rs::transform::seam_carve;\n* use photon_rs::PhotonImage;\n*\n* let img = open_image(\"img.jpg\").expect(\"File should open\");\n* let result: PhotonImage = seam_carve(&img, 100_u32, 100_u32);\n* ```\n* @param {PhotonImage} img\n* @param {number} width\n* @param {number} height\n* @returns {PhotonImage}\n*/\nfunction seam_carve(img, width, height) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(width);\n _assertNum(height);\n const ret = wasm.seam_carve(img.__wbg_ptr, width, height);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Apply uniform padding around the PhotonImage\n* A padded PhotonImage is returned.\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `padding` - The amount of padding to be applied to the PhotonImage.\n* * `padding_rgba` - Tuple containing the RGBA code for padding color.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a padding of 10 pixels around a PhotonImage:\n* use photon_rs::transform::padding_uniform;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgba;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n* padding_uniform(&img, 10_u32, rgba);\n* ```\n* @param {PhotonImage} img\n* @param {number} padding\n* @param {Rgba} padding_rgba\n* @returns {PhotonImage}\n*/\nfunction padding_uniform(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(padding);\n _assertClass(padding_rgba, Rgba);\n if (padding_rgba.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_uniform(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Apply padding on the left side of the PhotonImage\n* A padded PhotonImage is returned.\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `padding` - The amount of padding to be applied to the PhotonImage.\n* * `padding_rgba` - Tuple containing the RGBA code for padding color.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a padding of 10 pixels on the left side of a PhotonImage:\n* use photon_rs::transform::padding_left;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgba;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n* padding_left(&img, 10_u32, rgba);\n* ```\n* @param {PhotonImage} img\n* @param {number} padding\n* @param {Rgba} padding_rgba\n* @returns {PhotonImage}\n*/\nfunction padding_left(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(padding);\n _assertClass(padding_rgba, Rgba);\n if (padding_rgba.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_left(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Apply padding on the left side of the PhotonImage\n* A padded PhotonImage is returned.\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `padding` - The amount of padding to be applied to the PhotonImage.\n* * `padding_rgba` - Tuple containing the RGBA code for padding color.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a padding of 10 pixels on the right side of a PhotonImage:\n* use photon_rs::transform::padding_right;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgba;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n* padding_right(&img, 10_u32, rgba);\n* ```\n* @param {PhotonImage} img\n* @param {number} padding\n* @param {Rgba} padding_rgba\n* @returns {PhotonImage}\n*/\nfunction padding_right(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(padding);\n _assertClass(padding_rgba, Rgba);\n if (padding_rgba.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_right(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Apply padding on the left side of the PhotonImage\n* A padded PhotonImage is returned.\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `padding` - The amount of padding to be applied to the PhotonImage.\n* * `padding_rgba` - Tuple containing the RGBA code for padding color.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a padding of 10 pixels on the top of a PhotonImage:\n* use photon_rs::transform::padding_top;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgba;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n* padding_top(&img, 10_u32, rgba);\n* ```\n* @param {PhotonImage} img\n* @param {number} padding\n* @param {Rgba} padding_rgba\n* @returns {PhotonImage}\n*/\nfunction padding_top(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(padding);\n _assertClass(padding_rgba, Rgba);\n if (padding_rgba.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_top(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Apply padding on the left side of the PhotonImage\n* A padded PhotonImage is returned.\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `padding` - The amount of padding to be applied to the PhotonImage.\n* * `padding_rgba` - Tuple containing the RGBA code for padding color.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a padding of 10 pixels on the bottom of a PhotonImage:\n* use photon_rs::transform::padding_bottom;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgba;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n* padding_bottom(&img, 10_u32, rgba);\n* ```\n* @param {PhotonImage} img\n* @param {number} padding\n* @param {Rgba} padding_rgba\n* @returns {PhotonImage}\n*/\nfunction padding_bottom(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(padding);\n _assertClass(padding_rgba, Rgba);\n if (padding_rgba.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = padding_rgba.__destroy_into_raw();\n const ret = wasm.padding_bottom(img.__wbg_ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Rotate the PhotonImage on an arbitrary angle\n* A rotated PhotonImage is returned.\n* # NOTE: This is a naive implementation. Paeth rotation should be faster.\n*\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `angle` - Rotation angle in degrees.\n*\n* # Example\n*\n* ```no_run\n* // For example, to rotate a PhotonImage by 30 degrees:\n* use photon_rs::native::open_image;\n* use photon_rs::transform::rotate;\n*\n* let img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rotated_img = rotate(&img, 30);\n* ```\n* @param {PhotonImage} img\n* @param {number} angle\n* @returns {PhotonImage}\n*/\nfunction rotate(img, angle) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(angle);\n const ret = wasm.rotate(img.__wbg_ptr, angle);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Resample the PhotonImage.\n*\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `dst_width` - Target width.\n* * `dst_height` - Target height.\n*\n* # Example\n*\n* ```no_run\n* // For example, to resample a PhotonImage to 1920x1080 size:\n* use photon_rs::native::open_image;\n* use photon_rs::transform::resample;\n*\n* let img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rotated_img = resample(&img, 1920, 1080);\n* ```\n* @param {PhotonImage} img\n* @param {number} dst_width\n* @param {number} dst_height\n* @returns {PhotonImage}\n*/\nfunction resample(img, dst_width, dst_height) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(dst_width);\n _assertNum(dst_height);\n const ret = wasm.resample(img.__wbg_ptr, dst_width, dst_height);\n return PhotonImage.__wrap(ret);\n}\n\nfunction _assertBigInt(n) {\n if (typeof(n) !== 'bigint') throw new Error('expected a bigint argument');\n}\n/**\n* Add a watermark to an image.\n*\n* # Arguments\n* * `img` - A DynamicImage that contains a view into the image.\n* * `watermark` - The watermark to be placed onto the `img` image.\n* * `x` - The x coordinate where the watermark's top corner should be positioned.\n* * `y` - The y coordinate where the watermark's top corner should be positioned.\n* # Example\n*\n* ```no_run\n* // For example, to add a watermark to an image at x: 30, y: 40:\n* use photon_rs::multiple::watermark;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let water_mark = open_image(\"watermark.jpg\").expect(\"File should open\");\n* watermark(&mut img, &water_mark, 30_i64, 40_i64);\n* ```\n* @param {PhotonImage} img\n* @param {PhotonImage} watermark\n* @param {bigint} x\n* @param {bigint} y\n*/\nfunction watermark(img, watermark, x, y) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(watermark, PhotonImage);\n if (watermark.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertBigInt(x);\n _assertBigInt(y);\n wasm.watermark(img.__wbg_ptr, watermark.__wbg_ptr, x, y);\n}\n\n/**\n* Blend two images together.\n*\n* The `blend_mode` (3rd param) determines which blending mode to use; change this for varying effects.\n* The blend modes available include: `overlay`, `over`, `atop`, `xor`, `multiply`, `burn`, `soft_light`, `hard_light`,\n* `difference`, `lighten`, `darken`, `dodge`, `plus`, `exclusion` (more to come)\n* NOTE: The first image must be smaller than the second image passed as params.\n* If the first image were larger than the second, then there would be overflowing pixels which would have no corresponding pixels\n* in the second image.\n* # Arguments\n* * `img` - A DynamicImage that contains a view into the image.\n* * `img2` - The 2nd DynamicImage to be blended with the first.\n* * `blend_mode` - The blending mode to use. See above for complete list of blend modes available.\n* # Example\n*\n* ```no_run\n* // For example, to blend two images with the `multiply` blend mode:\n* use photon_rs::multiple::blend;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let img2 = open_image(\"img2.jpg\").expect(\"File should open\");\n* blend(&mut img, &img2, \"multiply\");\n* ```\n* @param {PhotonImage} photon_image\n* @param {PhotonImage} photon_image2\n* @param {string} blend_mode\n*/\nfunction blend(photon_image, photon_image2, blend_mode) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(photon_image2, PhotonImage);\n if (photon_image2.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n const ptr0 = passStringToWasm0(blend_mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.blend(photon_image.__wbg_ptr, photon_image2.__wbg_ptr, ptr0, len0);\n}\n\n/**\n* @param {number} width\n* @param {number} height\n* @returns {PhotonImage}\n*/\nfunction create_gradient(width, height) {\n _assertNum(width);\n _assertNum(height);\n const ret = wasm.create_gradient(width, height);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Apply a gradient to an image.\n* @param {PhotonImage} image\n*/\nfunction apply_gradient(image) {\n _assertClass(image, PhotonImage);\n if (image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.apply_gradient(image.__wbg_ptr);\n}\n\n/**\n* Applies gamma correction to an image.\n* # Arguments\n* * `photon_image` - A PhotonImage that contains a view into the image.\n* * `red` - Gamma value for red channel.\n* * `green` - Gamma value for green channel.\n* * `blue` - Gamma value for blue channel.\n* # Example\n*\n* ```no_run\n* // For example, to turn an image of type `PhotonImage` into a gamma corrected image:\n* use photon_rs::colour_spaces::gamma_correction;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* gamma_correction(&mut img, 2.2, 2.2, 2.2);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} red\n* @param {number} green\n* @param {number} blue\n*/\nfunction gamma_correction(photon_image, red, green, blue) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.gamma_correction(photon_image.__wbg_ptr, red, green, blue);\n}\n\n/**\n* Image manipulation effects in the HSLuv colour space\n*\n* Effects include:\n* * **saturate** - Saturation increase.\n* * **desaturate** - Desaturate the image.\n* * **shift_hue** - Hue rotation by a specified number of degrees.\n* * **darken** - Decrease the brightness.\n* * **lighten** - Increase the brightness.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n* * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n* # Example\n* ```no_run\n* // For example to increase the saturation by 10%:\n* use photon_rs::colour_spaces::hsluv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hsluv(&mut img, \"saturate\", 0.1_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {string} mode\n* @param {number} amt\n*/\nfunction hsluv(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n const ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.hsluv(photon_image.__wbg_ptr, ptr0, len0, amt);\n}\n\n/**\n* Image manipulation effects in the LCh colour space\n*\n* Effects include:\n* * **saturate** - Saturation increase.\n* * **desaturate** - Desaturate the image.\n* * **shift_hue** - Hue rotation by a specified number of degrees.\n* * **darken** - Decrease the brightness.\n* * **lighten** - Increase the brightness.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n* * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n* # Example\n* ```no_run\n* // For example to increase the saturation by 10%:\n* use photon_rs::colour_spaces::lch;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lch(&mut img, \"saturate\", 0.1_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {string} mode\n* @param {number} amt\n*/\nfunction lch(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n const ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.lch(photon_image.__wbg_ptr, ptr0, len0, amt);\n}\n\n/**\n* Image manipulation effects in the HSL colour space.\n*\n* Effects include:\n* * **saturate** - Saturation increase.\n* * **desaturate** - Desaturate the image.\n* * **shift_hue** - Hue rotation by a specified number of degrees.\n* * **darken** - Decrease the brightness.\n* * **lighten** - Increase the brightness.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n* * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n* # Example\n* ```no_run\n* // For example to increase the saturation by 10%:\n* use photon_rs::colour_spaces::hsl;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hsl(&mut img, \"saturate\", 0.1_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {string} mode\n* @param {number} amt\n*/\nfunction hsl(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n const ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.hsl(photon_image.__wbg_ptr, ptr0, len0, amt);\n}\n\n/**\n* Image manipulation in the HSV colour space.\n*\n* Effects include:\n* * **saturate** - Saturation increase.\n* * **desaturate** - Desaturate the image.\n* * **shift_hue** - Hue rotation by a specified number of degrees.\n* * **darken** - Decrease the brightness.\n* * **lighten** - Increase the brightness.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n* * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n*\n* # Example\n* ```no_run\n* // For example to increase the saturation by 10%:\n* use photon_rs::colour_spaces::hsv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hsv(&mut img, \"saturate\", 0.1_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {string} mode\n* @param {number} amt\n*/\nfunction hsv(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n const ptr0 = passStringToWasm0(mode, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.hsv(photon_image.__wbg_ptr, ptr0, len0, amt);\n}\n\n/**\n* Shift hue by a specified number of degrees in the HSL colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n*\n* # Example\n* ```no_run\n* // For example to hue rotate/shift the hue by 120 degrees in the HSL colour space:\n* use photon_rs::colour_spaces::hue_rotate_hsl;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hue_rotate_hsl(&mut img, 120_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} degrees\n*/\nfunction hue_rotate_hsl(img, degrees) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.hue_rotate_hsl(img.__wbg_ptr, degrees);\n}\n\n/**\n* Shift hue by a specified number of degrees in the HSV colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n*\n* # Example\n* ```no_run\n* // For example to hue rotate/shift the hue by 120 degrees in the HSV colour space:\n* use photon_rs::colour_spaces::hue_rotate_hsv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hue_rotate_hsv(&mut img, 120_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} degrees\n*/\nfunction hue_rotate_hsv(img, degrees) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.hue_rotate_hsv(img.__wbg_ptr, degrees);\n}\n\n/**\n* Shift hue by a specified number of degrees in the LCh colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n*\n* # Example\n* ```no_run\n* // For example to hue rotate/shift the hue by 120 degrees in the HSL colour space:\n* use photon_rs::colour_spaces::hue_rotate_lch;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hue_rotate_lch(&mut img, 120_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} degrees\n*/\nfunction hue_rotate_lch(img, degrees) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.hue_rotate_lch(img.__wbg_ptr, degrees);\n}\n\n/**\n* Shift hue by a specified number of degrees in the HSLuv colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n*\n* # Example\n* ```no_run\n* // For example to hue rotate/shift the hue by 120 degrees in the HSL colour space:\n* use photon_rs::colour_spaces::hue_rotate_hsluv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hue_rotate_hsluv(&mut img, 120_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} degrees\n*/\nfunction hue_rotate_hsluv(img, degrees) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.hue_rotate_hsluv(img.__wbg_ptr, degrees);\n}\n\n/**\n* Increase the image's saturation by converting each pixel's colour to the HSL colour space\n* and increasing the colour's saturation.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to increase the saturation by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Increasing saturation by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to increase saturation by 10% in the HSL colour space:\n* use photon_rs::colour_spaces::saturate_hsl;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* saturate_hsl(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction saturate_hsl(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.saturate_hsl(img.__wbg_ptr, level);\n}\n\n/**\n* Increase the image's saturation in the LCh colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to increase the saturation by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Increasing saturation by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to increase saturation by 40% in the Lch colour space:\n* use photon_rs::colour_spaces::saturate_lch;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* saturate_lch(&mut img, 0.4_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction saturate_lch(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.saturate_lch(img.__wbg_ptr, level);\n}\n\n/**\n* Increase the image's saturation in the HSLuv colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to increase the saturation by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Increasing saturation by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to increase saturation by 40% in the HSLuv colour space:\n* use photon_rs::colour_spaces::saturate_hsluv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* saturate_hsluv(&mut img, 0.4_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction saturate_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.saturate_hsluv(img.__wbg_ptr, level);\n}\n\n/**\n* Increase the image's saturation in the HSV colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level by which to increase the saturation by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Increasing saturation by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to increase saturation by 30% in the HSV colour space:\n* use photon_rs::colour_spaces::saturate_hsv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* saturate_hsv(&mut img, 0.3_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction saturate_hsv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.saturate_hsv(img.__wbg_ptr, level);\n}\n\n/**\n* Lighten an image by a specified amount in the LCh colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Lightening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to lighten an image by 10% in the LCh colour space:\n* use photon_rs::colour_spaces::lighten_lch;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lighten_lch(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction lighten_lch(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.lighten_lch(img.__wbg_ptr, level);\n}\n\n/**\n* Lighten an image by a specified amount in the HSLuv colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Lightening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to lighten an image by 10% in the HSLuv colour space:\n* use photon_rs::colour_spaces::lighten_hsluv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lighten_hsluv(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction lighten_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.lighten_hsluv(img.__wbg_ptr, level);\n}\n\n/**\n* Lighten an image by a specified amount in the HSL colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Lightening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to lighten an image by 10% in the HSL colour space:\n* use photon_rs::colour_spaces::lighten_hsl;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lighten_hsl(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction lighten_hsl(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.lighten_hsl(img.__wbg_ptr, level);\n}\n\n/**\n* Lighten an image by a specified amount in the HSV colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Lightening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to lighten an image by 10% in the HSV colour space:\n* use photon_rs::colour_spaces::lighten_hsv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lighten_hsv(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction lighten_hsv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.lighten_hsv(img.__wbg_ptr, level);\n}\n\n/**\n* Darken the image by a specified amount in the LCh colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Darkening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to darken an image by 10% in the LCh colour space:\n* use photon_rs::colour_spaces::darken_lch;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* darken_lch(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction darken_lch(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.darken_lch(img.__wbg_ptr, level);\n}\n\n/**\n* Darken the image by a specified amount in the HSLuv colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Darkening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to darken an image by 10% in the HSLuv colour space:\n* use photon_rs::colour_spaces::darken_hsluv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* darken_hsluv(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction darken_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.darken_hsluv(img.__wbg_ptr, level);\n}\n\n/**\n* Darken the image by a specified amount in the HSL colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Darkening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to darken an image by 10% in the HSL colour space:\n* use photon_rs::colour_spaces::darken_hsl;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* darken_hsl(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction darken_hsl(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.darken_hsl(img.__wbg_ptr, level);\n}\n\n/**\n* Darken the image's colours by a specified amount in the HSV colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Darkening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to darken an image by 10% in the HSV colour space:\n* use photon_rs::colour_spaces::darken_hsv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* darken_hsv(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction darken_hsv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.darken_hsv(img.__wbg_ptr, level);\n}\n\n/**\n* Desaturate the image by a specified amount in the HSV colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Desaturating by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to desaturate an image by 10% in the HSV colour space:\n* use photon_rs::colour_spaces::desaturate_hsv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* desaturate_hsv(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction desaturate_hsv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.desaturate_hsv(img.__wbg_ptr, level);\n}\n\n/**\n* Desaturate the image by a specified amount in the HSL colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Desaturating by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to desaturate an image by 10% in the LCh colour space:\n* use photon_rs::colour_spaces::desaturate_hsl;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* desaturate_hsl(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction desaturate_hsl(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.desaturate_hsl(img.__wbg_ptr, level);\n}\n\n/**\n* Desaturate the image by a specified amount in the LCh colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Desaturating by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to desaturate an image by 10% in the LCh colour space:\n* use photon_rs::colour_spaces::desaturate_lch;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* desaturate_lch(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction desaturate_lch(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.desaturate_lch(img.__wbg_ptr, level);\n}\n\n/**\n* Desaturate the image by a specified amount in the HSLuv colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Desaturating by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to desaturate an image by 10% in the HSLuv colour space:\n* use photon_rs::colour_spaces::desaturate_hsluv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* desaturate_hsluv(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction desaturate_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.desaturate_hsluv(img.__wbg_ptr, level);\n}\n\n/**\n* Mix image with a single color, supporting passing `opacity`.\n* The algorithm comes from Jimp. See `function mix` and `function colorFn` at following link:\n* https://github.com/oliver-moran/jimp/blob/29679faa597228ff2f20d34c5758e4d2257065a3/packages/plugin-color/src/index.js\n* Specifically, result_value = (mix_color_value - origin_value) * opacity + origin_value =\n* mix_color_value * opacity + (1 - opacity) * origin_value for each\n* of RGB channel.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage that contains a view into the image.\n* * `mix_color` - the color to be mixed in, as an RGB value.\n* * `opacity` - the opacity of color when mixed to image. Float value from 0 to 1.\n* # Example\n*\n* ```no_run\n* // For example, to mix an image with rgb (50, 255, 254) and opacity 0.4:\n* use photon_rs::Rgb;\n* use photon_rs::colour_spaces::mix_with_colour;\n* use photon_rs::native::open_image;\n*\n* let mix_colour = Rgb::new(50_u8, 255_u8, 254_u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* mix_with_colour(&mut img, mix_colour, 0.4_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {Rgb} mix_colour\n* @param {number} opacity\n*/\nfunction mix_with_colour(photon_image, mix_colour, opacity) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(mix_colour, Rgb);\n if (mix_colour.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = mix_colour.__destroy_into_raw();\n wasm.mix_with_colour(photon_image.__wbg_ptr, ptr0, opacity);\n}\n\n/**\n* Solarization on the Blue channel.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::neue;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* neue(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction neue(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.neue(photon_image.__wbg_ptr);\n}\n\n/**\n* Solarization on the Red and Green channels.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::lix;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lix(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction lix(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.lix(photon_image.__wbg_ptr);\n}\n\n/**\n* Solarization on the Red and Blue channels.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::ryo;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* ryo(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction ryo(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.ryo(photon_image.__wbg_ptr);\n}\n\n/**\n* Apply a filter to an image. Over 20 filters are available.\n* The filters are as follows:\n* * **oceanic**: Add an aquamarine-tinted hue to an image.\n* * **islands**: Aquamarine tint.\n* * **marine**: Add a green/blue mixed hue to an image.\n* * **seagreen**: Dark green hue, with tones of blue.\n* * **flagblue**: Royal blue tint\n* * **liquid**: Blue-inspired tint.\n* * **diamante**: Custom filter with a blue/turquoise tint.\n* * **radio**: Fallout-style radio effect.\n* * **twenties**: Slight-blue tinted historical effect.\n* * **rosetint**: Rose-tinted filter.\n* * **mauve**: Purple-infused filter.\n* * **bluechrome**: Blue monochrome effect.\n* * **vintage**: Vintage filter with a red tint.\n* * **perfume**: Increase the blue channel, with moderate increases in the Red and Green channels.\n* * **serenity**: Custom filter with an increase in the Blue channel's values.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `filter_name` - The filter's name. Choose from the selection above, eg: \"oceanic\"\n* # Example\n*\n* ```no_run\n* // For example, to add a filter called \"vintage\" to an image:\n* use photon_rs::filters::filter;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* filter(&mut img, \"vintage\");\n* ```\n* @param {PhotonImage} img\n* @param {string} filter_name\n*/\nfunction filter(img, filter_name) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n const ptr0 = passStringToWasm0(filter_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.filter(img.__wbg_ptr, ptr0, len0);\n}\n\n/**\n* Apply a lofi effect to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::lofi;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lofi(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction lofi(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.lofi(img.__wbg_ptr);\n}\n\n/**\n* Apply a rose tint to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::pastel_pink;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* pastel_pink(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction pastel_pink(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.pastel_pink(img.__wbg_ptr);\n}\n\n/**\n* Apply a vintage, golden hue to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::golden;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* golden(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction golden(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.golden(img.__wbg_ptr);\n}\n\n/**\n* Increased contrast filter effect.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::cali;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* cali(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction cali(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.cali(img.__wbg_ptr);\n}\n\n/**\n* Greyscale effect with increased contrast.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::dramatic;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* dramatic(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction dramatic(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.dramatic(img.__wbg_ptr);\n}\n\n/**\n* Monochrome tint effect with increased contrast\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `rgb_color` - RGB color\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::monochrome_tint;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgb;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgb_color = Rgb::new(12, 12, 10);\n* monochrome_tint(&mut img, rgb_color);\n* ```\n* @param {PhotonImage} img\n* @param {Rgb} rgb_color\n*/\nfunction monochrome_tint(img, rgb_color) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(rgb_color, Rgb);\n if (rgb_color.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = rgb_color.__destroy_into_raw();\n wasm.monochrome_tint(img.__wbg_ptr, ptr0);\n}\n\n/**\n* Duotone effect with blue and purple tones.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::duotone_violette;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* duotone_violette(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction duotone_violette(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.duotone_violette(img.__wbg_ptr);\n}\n\n/**\n* Duotone effect with purple tones.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::duotone_horizon;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* duotone_horizon(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction duotone_horizon(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.duotone_horizon(img.__wbg_ptr);\n}\n\n/**\n* A duotone filter with a user-specified color and a gray color\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `rgb_color` - RGB color\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::duotone_tint;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgb;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgb_color = Rgb::new(12, 12, 10);\n* duotone_tint(&mut img, rgb_color);\n* ```\n* @param {PhotonImage} img\n* @param {Rgb} rgb_color\n*/\nfunction duotone_tint(img, rgb_color) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(rgb_color, Rgb);\n if (rgb_color.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = rgb_color.__destroy_into_raw();\n wasm.duotone_tint(img.__wbg_ptr, ptr0);\n}\n\n/**\n* Duotone effect with a lilac hue\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::duotone_lilac;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* duotone_lilac(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction duotone_lilac(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.duotone_lilac(img.__wbg_ptr);\n}\n\n/**\n* A duotone ochre tint effect\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::duotone_ochre;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* duotone_ochre(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction duotone_ochre(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.duotone_ochre(img.__wbg_ptr);\n}\n\n/**\n* Apply a red hue, with increased contrast and brightness.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::firenze;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* firenze(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction firenze(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.firenze(img.__wbg_ptr);\n}\n\n/**\n* Apply a greyscale effect with increased contrast.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::obsidian;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* obsidian(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction obsidian(img) {\n _assertClass(img, PhotonImage);\n if (img.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.obsidian(img.__wbg_ptr);\n}\n\n/**\n* sander says: The median was the message\n* @param {PhotonImage} image\n* @param {number} x_radius\n* @param {number} y_radius\n*/\nfunction median(image, x_radius, y_radius) {\n _assertClass(image, PhotonImage);\n if (image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(x_radius);\n _assertNum(y_radius);\n wasm.median(image.__wbg_ptr, x_radius, y_radius);\n}\n\n/**\n* Noise reduction.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to noise reduct an image:\n* use photon_rs::conv::noise_reduction;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* noise_reduction(&mut img);\n* ```\n* Adds a constant to a select R, G, or B channel's value.\n* @param {PhotonImage} photon_image\n*/\nfunction noise_reduction(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.noise_reduction(photon_image.__wbg_ptr);\n}\n\n/**\n* Sharpen an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to sharpen an image:\n* use photon_rs::conv::sharpen;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* sharpen(&mut img);\n* ```\n* Adds a constant to a select R, G, or B channel's value.\n* @param {PhotonImage} photon_image\n*/\nfunction sharpen(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.sharpen(photon_image.__wbg_ptr);\n}\n\n/**\n* Apply edge detection to an image, to create a dark version with its edges highlighted.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to increase the Red channel for all pixels by 10:\n* use photon_rs::conv::edge_detection;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* edge_detection(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction edge_detection(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.edge_detection(photon_image.__wbg_ptr);\n}\n\n/**\n* Apply an identity kernel convolution to an image.\n*\n* # Arguments\n* * `img` -A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply an identity kernel convolution:\n* use photon_rs::conv::identity;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* identity(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction identity(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.identity(photon_image.__wbg_ptr);\n}\n\n/**\n* Apply a box blur effect.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a box blur effect:\n* use photon_rs::conv::box_blur;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* box_blur(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction box_blur(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.box_blur(photon_image.__wbg_ptr);\n}\n\n/**\n* Gaussian blur in linear time.\n*\n* Reference: http://blog.ivank.net/fastest-gaussian-blur.html\n*\n* # Arguments\n* * `photon_image` - A PhotonImage\n* * `radius` - blur radius\n* # Example\n*\n* ```no_run\n* use photon_rs::conv::gaussian_blur;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* gaussian_blur(&mut img, 3_i32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} radius\n*/\nfunction gaussian_blur(photon_image, radius) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(radius);\n wasm.gaussian_blur(photon_image.__wbg_ptr, radius);\n}\n\n/**\n* Detect horizontal lines in an image, and highlight these only.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to display the horizontal lines in an image:\n* use photon_rs::conv::detect_horizontal_lines;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* detect_horizontal_lines(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction detect_horizontal_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.detect_horizontal_lines(photon_image.__wbg_ptr);\n}\n\n/**\n* Detect vertical lines in an image, and highlight these only.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to display the vertical lines in an image:\n* use photon_rs::conv::detect_vertical_lines;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* detect_vertical_lines(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction detect_vertical_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.detect_vertical_lines(photon_image.__wbg_ptr);\n}\n\n/**\n* Detect lines at a forty five degree angle in an image, and highlight these only.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to display the lines at a forty five degree angle in an image:\n* use photon_rs::conv::detect_45_deg_lines;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* detect_45_deg_lines(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction detect_45_deg_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.detect_45_deg_lines(photon_image.__wbg_ptr);\n}\n\n/**\n* Detect lines at a 135 degree angle in an image, and highlight these only.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to display the lines at a 135 degree angle in an image:\n* use photon_rs::conv::detect_135_deg_lines;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* detect_135_deg_lines(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction detect_135_deg_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.detect_135_deg_lines(photon_image.__wbg_ptr);\n}\n\n/**\n* Apply a standard laplace convolution.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a laplace effect:\n* use photon_rs::conv::laplace;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* laplace(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction laplace(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.laplace(photon_image.__wbg_ptr);\n}\n\n/**\n* Preset edge effect.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply this effect:\n* use photon_rs::conv::edge_one;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* edge_one(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction edge_one(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.edge_one(photon_image.__wbg_ptr);\n}\n\n/**\n* Apply an emboss effect to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply an emboss effect:\n* use photon_rs::conv::emboss;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* emboss(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction emboss(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.emboss(photon_image.__wbg_ptr);\n}\n\n/**\n* Apply a horizontal Sobel filter to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a horizontal Sobel filter:\n* use photon_rs::conv::sobel_horizontal;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* sobel_horizontal(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction sobel_horizontal(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.sobel_horizontal(photon_image.__wbg_ptr);\n}\n\n/**\n* Apply a horizontal Prewitt convolution to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a horizontal Prewitt convolution effect:\n* use photon_rs::conv::prewitt_horizontal;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* prewitt_horizontal(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction prewitt_horizontal(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.prewitt_horizontal(photon_image.__wbg_ptr);\n}\n\n/**\n* Apply a vertical Sobel filter to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a vertical Sobel filter:\n* use photon_rs::conv::sobel_vertical;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* sobel_vertical(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction sobel_vertical(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.__wbg_ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n wasm.sobel_vertical(photon_image.__wbg_ptr);\n}\n\nfunction logError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n let error = (function () {\n try {\n return e instanceof Error ? `${e.message}\\n\\nStack:\\n${e.stack}` : e.toString();\n } catch(_) {\n return \"\";\n }\n }());\n console.error(\"wasm-bindgen: imported JS function that was not marked as `catch` threw an error:\", error);\n throw e;\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n\nlet cachedUint8ClampedMemory0 = null;\n\nfunction getUint8ClampedMemory0() {\n if (cachedUint8ClampedMemory0 === null || cachedUint8ClampedMemory0.byteLength === 0) {\n cachedUint8ClampedMemory0 = new Uint8ClampedArray(wasm.memory.buffer);\n }\n return cachedUint8ClampedMemory0;\n}\n\nfunction getClampedArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ClampedMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n\nfunction notDefined(what) { return () => { throw new Error(`${what} is not defined`); }; }\n/**\n*/\nconst SamplingFilter = Object.freeze({ Nearest:1,\"1\":\"Nearest\",Triangle:2,\"2\":\"Triangle\",CatmullRom:3,\"3\":\"CatmullRom\",Gaussian:4,\"4\":\"Gaussian\",Lanczos3:5,\"5\":\"Lanczos3\", });\n/**\n* Provides the image's height, width, and contains the image's raw pixels.\n* For use when communicating between JS and WASM, and also natively.\n*/\nclass PhotonImage {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(PhotonImage.prototype);\n obj.__wbg_ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_photonimage_free(ptr);\n }\n /**\n * Create a new PhotonImage from a Vec of u8s, which represent raw pixels.\n * @param {Uint8Array} raw_pixels\n * @param {number} width\n * @param {number} height\n */\n constructor(raw_pixels, width, height) {\n const ptr0 = passArray8ToWasm0(raw_pixels, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertNum(width);\n _assertNum(height);\n const ret = wasm.photonimage_new(ptr0, len0, width, height);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Create a new PhotonImage from a base64 string.\n * @param {string} base64\n * @returns {PhotonImage}\n */\n static new_from_base64(base64) {\n const ptr0 = passStringToWasm0(base64, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.photonimage_new_from_base64(ptr0, len0);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Create a new PhotonImage from a byteslice.\n * @param {Uint8Array} vec\n * @returns {PhotonImage}\n */\n static new_from_byteslice(vec) {\n const ptr0 = passArray8ToWasm0(vec, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.photonimage_new_from_byteslice(ptr0, len0);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Create a new PhotonImage from a Blob/File.\n * @param {Blob} blob\n * @returns {PhotonImage}\n */\n static new_from_blob(blob) {\n const ret = wasm.photonimage_new_from_blob(addHeapObject(blob));\n return PhotonImage.__wrap(ret);\n }\n /**\n * Create a new PhotonImage from a HTMLImageElement\n * @param {HTMLImageElement} image\n * @returns {PhotonImage}\n */\n static new_from_image(image) {\n const ret = wasm.photonimage_new_from_image(addHeapObject(image));\n return PhotonImage.__wrap(ret);\n }\n /**\n * @returns {number}\n */\n get_width() {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n const ret = wasm.photonimage_get_width(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Get the PhotonImage's pixels as a Vec of u8s.\n * @returns {Uint8Array}\n */\n get_raw_pixels() {\n try {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertNum(this.__wbg_ptr);\n wasm.photonimage_get_raw_pixels(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Get the height of the PhotonImage.\n * @returns {number}\n */\n get_height() {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n const ret = wasm.photonimage_get_height(this.__wbg_ptr);\n return ret >>> 0;\n }\n /**\n * Convert the PhotonImage to base64.\n * @returns {string}\n */\n get_base64() {\n let deferred1_0;\n let deferred1_1;\n try {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertNum(this.__wbg_ptr);\n wasm.photonimage_get_base64(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n deferred1_0 = r0;\n deferred1_1 = r1;\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(deferred1_0, deferred1_1);\n }\n }\n /**\n * Convert the PhotonImage to raw bytes. Returns PNG.\n * @returns {Uint8Array}\n */\n get_bytes() {\n try {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertNum(this.__wbg_ptr);\n wasm.photonimage_get_bytes(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Convert the PhotonImage to raw bytes. Returns a JPEG.\n * @param {number} quality\n * @returns {Uint8Array}\n */\n get_bytes_jpeg(quality) {\n try {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertNum(this.__wbg_ptr);\n _assertNum(quality);\n wasm.photonimage_get_bytes_jpeg(retptr, this.__wbg_ptr, quality);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Convert the PhotonImage to raw bytes. Returns a WEBP.\n * @returns {Uint8Array}\n */\n get_bytes_webp() {\n try {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertNum(this.__wbg_ptr);\n wasm.photonimage_get_bytes_webp(retptr, this.__wbg_ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Convert the PhotonImage's raw pixels to JS-compatible ImageData.\n * @returns {ImageData}\n */\n get_image_data() {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n const ret = wasm.photonimage_get_image_data(this.__wbg_ptr);\n return takeObject(ret);\n }\n /**\n * Convert ImageData to raw pixels, and update the PhotonImage's raw pixels to this.\n * @param {ImageData} img_data\n */\n set_imgdata(img_data) {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n wasm.photonimage_set_imgdata(this.__wbg_ptr, addHeapObject(img_data));\n }\n}\n/**\n* RGB color type.\n*/\nclass Rgb {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Rgb.prototype);\n obj.__wbg_ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_rgb_free(ptr);\n }\n /**\n * Create a new RGB struct.\n * @param {number} r\n * @param {number} g\n * @param {number} b\n */\n constructor(r, g, b) {\n _assertNum(r);\n _assertNum(g);\n _assertNum(b);\n const ret = wasm.rgb_new(r, g, b);\n return Rgb.__wrap(ret);\n }\n /**\n * Set the Red value.\n * @param {number} r\n */\n set_red(r) {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n _assertNum(r);\n wasm.rgb_set_red(this.__wbg_ptr, r);\n }\n /**\n * Get the Green value.\n * @param {number} g\n */\n set_green(g) {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n _assertNum(g);\n wasm.rgb_set_green(this.__wbg_ptr, g);\n }\n /**\n * Set the Blue value.\n * @param {number} b\n */\n set_blue(b) {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n _assertNum(b);\n wasm.rgb_set_blue(this.__wbg_ptr, b);\n }\n /**\n * Get the Red value.\n * @returns {number}\n */\n get_red() {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n const ret = wasm.rgb_get_red(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the Green value.\n * @returns {number}\n */\n get_green() {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n const ret = wasm.rgb_get_green(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the Blue value.\n * @returns {number}\n */\n get_blue() {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n const ret = wasm.rgb_get_blue(this.__wbg_ptr);\n return ret;\n }\n}\n/**\n* RGBA color type.\n*/\nclass Rgba {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Rgba.prototype);\n obj.__wbg_ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_rgba_free(ptr);\n }\n /**\n * Create a new RGBA struct.\n * @param {number} r\n * @param {number} g\n * @param {number} b\n * @param {number} a\n */\n constructor(r, g, b, a) {\n _assertNum(r);\n _assertNum(g);\n _assertNum(b);\n _assertNum(a);\n const ret = wasm.rgba_new(r, g, b, a);\n return Rgba.__wrap(ret);\n }\n /**\n * Set the Red value.\n * @param {number} r\n */\n set_red(r) {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n _assertNum(r);\n wasm.rgba_set_red(this.__wbg_ptr, r);\n }\n /**\n * Get the Green value.\n * @param {number} g\n */\n set_green(g) {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n _assertNum(g);\n wasm.rgba_set_green(this.__wbg_ptr, g);\n }\n /**\n * Set the Blue value.\n * @param {number} b\n */\n set_blue(b) {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n _assertNum(b);\n wasm.rgba_set_blue(this.__wbg_ptr, b);\n }\n /**\n * Set the alpha value.\n * @param {number} a\n */\n set_alpha(a) {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n _assertNum(a);\n wasm.rgba_set_alpha(this.__wbg_ptr, a);\n }\n /**\n * Get the Red value.\n * @returns {number}\n */\n get_red() {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n const ret = wasm.rgba_get_red(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the Green value.\n * @returns {number}\n */\n get_green() {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n const ret = wasm.rgba_get_green(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the Blue value.\n * @returns {number}\n */\n get_blue() {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n const ret = wasm.rgba_get_blue(this.__wbg_ptr);\n return ret;\n }\n /**\n * Get the alpha value for this color.\n * @returns {number}\n */\n get_alpha() {\n if (this.__wbg_ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.__wbg_ptr);\n const ret = wasm.rgba_get_alpha(this.__wbg_ptr);\n return ret;\n }\n}\n\nfunction __wbindgen_object_drop_ref(arg0) {\n takeObject(arg0);\n};\n\nfunction __wbg_error_f851667af71bcfc6() { return logError(function (arg0, arg1) {\n let deferred0_0;\n let deferred0_1;\n try {\n deferred0_0 = arg0;\n deferred0_1 = arg1;\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(deferred0_0, deferred0_1);\n }\n}, arguments) };\n\nfunction __wbg_new_abda76e883ba8a5f() { return logError(function () {\n const ret = new Error();\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_stack_658279fe44541cf6() { return logError(function (arg0, arg1) {\n const ret = getObject(arg1).stack;\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n}, arguments) };\n\nfunction __wbg_instanceof_Window_f2bf9e8e91f1be0d() { return logError(function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Window;\n } catch {\n result = false;\n }\n const ret = result;\n _assertBoolean(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_document_a11e2f345af07033() { return logError(function (arg0) {\n const ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_body_483afe07b0958d3b() { return logError(function (arg0) {\n const ret = getObject(arg0).body;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_createElement_5281e2aae74efc9d() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_instanceof_CanvasRenderingContext2d_b4050f3a451ac712() { return logError(function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof CanvasRenderingContext2D;\n } catch {\n result = false;\n }\n const ret = result;\n _assertBoolean(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_drawImage_fa7fd856fb164132() { return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).drawImage(getObject(arg1), arg2, arg3);\n}, arguments) };\n\nfunction __wbg_drawImage_41f8e8a7fc2b0de3() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n getObject(arg0).drawImage(getObject(arg1), arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);\n}, arguments) };\n\nfunction __wbg_getImageData_956c421f9b7cdfe7() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n const ret = getObject(arg0).getImageData(arg1, arg2, arg3, arg4);\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_putImageData_0009acf77045dec6() { return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).putImageData(getObject(arg1), arg2, arg3);\n}, arguments) };\n\nfunction __wbg_width_250e8da00ab1c884() { return logError(function (arg0) {\n const ret = getObject(arg0).width;\n _assertNum(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_height_e41b71b2f3141e8e() { return logError(function (arg0) {\n const ret = getObject(arg0).height;\n _assertNum(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_width_020d7bde350571e9() { return logError(function (arg0) {\n const ret = getObject(arg0).width;\n _assertNum(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_height_d65d28af1b6f26d3() { return logError(function (arg0) {\n const ret = getObject(arg0).height;\n _assertNum(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_data_f319d3380b214a26() { return logError(function (arg0, arg1) {\n const ret = getObject(arg1).data;\n const ptr1 = passArray8ToWasm0(ret, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n}, arguments) };\n\nfunction __wbg_newwithu8clampedarrayandsh_c90e0c3609c4ecc2() { return handleError(function (arg0, arg1, arg2, arg3) {\n const ret = new ImageData(getClampedArrayU8FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0);\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_instanceof_HtmlCanvasElement_6e58598b4e8b1586() { return logError(function (arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof HTMLCanvasElement;\n } catch {\n result = false;\n }\n const ret = result;\n _assertBoolean(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_width_3a395887a577233b() { return logError(function (arg0) {\n const ret = getObject(arg0).width;\n _assertNum(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_setwidth_885d5dd3c7f48f41() { return logError(function (arg0, arg1) {\n getObject(arg0).width = arg1 >>> 0;\n}, arguments) };\n\nfunction __wbg_height_b7046017c4148386() { return logError(function (arg0) {\n const ret = getObject(arg0).height;\n _assertNum(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_setheight_0d2b445bb6a5a3f2() { return logError(function (arg0, arg1) {\n getObject(arg0).height = arg1 >>> 0;\n}, arguments) };\n\nfunction __wbg_getContext_62ccb1aa0e6c8b86() { return handleError(function (arg0, arg1, arg2) {\n const ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_settextContent_ea2ce5e8fc889af7() { return logError(function (arg0, arg1, arg2) {\n getObject(arg0).textContent = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2);\n}, arguments) };\n\nfunction __wbg_appendChild_173b88a25c048f2b() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).appendChild(getObject(arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_newnoargs_e643855c6572a4a8() { return logError(function (arg0, arg1) {\n const ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_call_f96b398515635514() { return handleError(function (arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_globalThis_d0957e302752547e() { return handleError(function () {\n const ret = globalThis.globalThis;\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_self_b9aad7f1c618bfaf() { return handleError(function () {\n const ret = self.self;\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_window_55e469842c98b086() { return handleError(function () {\n const ret = window.window;\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_global_ae2f87312b8987fb() { return handleError(function () {\n const ret = __webpack_require__.g.global;\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_new_bc5d9aad3f9ac80e() { return logError(function (arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_length_d9c4ded7e708c6a1() { return logError(function (arg0) {\n const ret = getObject(arg0).length;\n _assertNum(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_set_4b3aa8445ac1e91c() { return logError(function (arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n}, arguments) };\n\nconst __wbg_random_f67f027fd89c6d9c = typeof Math.random == 'function' ? Math.random : notDefined('Math.random');\n\nfunction __wbindgen_is_undefined(arg0) {\n const ret = getObject(arg0) === undefined;\n _assertBoolean(ret);\n return ret;\n};\n\nfunction __wbindgen_object_clone_ref(arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n};\n\nfunction __wbg_buffer_fcbfb6d88b2732e9() { return logError(function (arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbindgen_debug_string(arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len1 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len1;\n getInt32Memory0()[arg0 / 4 + 0] = ptr1;\n};\n\nfunction __wbindgen_throw(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n};\n\nfunction __wbindgen_memory() {\n const ret = wasm.memory;\n return addHeapObject(ret);\n};\n\n\n\n//# sourceURL=webpack://photon-wasm/../crate/pkg/photon_rs_bg.js?"); + +/***/ }), + +/***/ "../crate/pkg/photon_rs_bg.wasm": +/*!**************************************!*\ + !*** ../crate/pkg/photon_rs_bg.wasm ***! + \**************************************/ +/***/ ((module, exports, __webpack_require__) => { + +eval("/* harmony import */ var WEBPACK_IMPORTED_MODULE_0 = __webpack_require__(/*! ./photon_rs_bg.js */ \"../crate/pkg/photon_rs_bg.js\");\nmodule.exports = __webpack_require__.v(exports, module.id, \"66d531fb4651c57454ae\", {\n\t\"./photon_rs_bg.js\": {\n\t\t\"__wbindgen_object_drop_ref\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_object_drop_ref,\n\t\t\"__wbg_error_f851667af71bcfc6\": WEBPACK_IMPORTED_MODULE_0.__wbg_error_f851667af71bcfc6,\n\t\t\"__wbg_new_abda76e883ba8a5f\": WEBPACK_IMPORTED_MODULE_0.__wbg_new_abda76e883ba8a5f,\n\t\t\"__wbg_stack_658279fe44541cf6\": WEBPACK_IMPORTED_MODULE_0.__wbg_stack_658279fe44541cf6,\n\t\t\"__wbg_instanceof_Window_f2bf9e8e91f1be0d\": WEBPACK_IMPORTED_MODULE_0.__wbg_instanceof_Window_f2bf9e8e91f1be0d,\n\t\t\"__wbg_document_a11e2f345af07033\": WEBPACK_IMPORTED_MODULE_0.__wbg_document_a11e2f345af07033,\n\t\t\"__wbg_body_483afe07b0958d3b\": WEBPACK_IMPORTED_MODULE_0.__wbg_body_483afe07b0958d3b,\n\t\t\"__wbg_createElement_5281e2aae74efc9d\": WEBPACK_IMPORTED_MODULE_0.__wbg_createElement_5281e2aae74efc9d,\n\t\t\"__wbg_instanceof_CanvasRenderingContext2d_b4050f3a451ac712\": WEBPACK_IMPORTED_MODULE_0.__wbg_instanceof_CanvasRenderingContext2d_b4050f3a451ac712,\n\t\t\"__wbg_drawImage_fa7fd856fb164132\": WEBPACK_IMPORTED_MODULE_0.__wbg_drawImage_fa7fd856fb164132,\n\t\t\"__wbg_drawImage_41f8e8a7fc2b0de3\": WEBPACK_IMPORTED_MODULE_0.__wbg_drawImage_41f8e8a7fc2b0de3,\n\t\t\"__wbg_getImageData_956c421f9b7cdfe7\": WEBPACK_IMPORTED_MODULE_0.__wbg_getImageData_956c421f9b7cdfe7,\n\t\t\"__wbg_putImageData_0009acf77045dec6\": WEBPACK_IMPORTED_MODULE_0.__wbg_putImageData_0009acf77045dec6,\n\t\t\"__wbg_width_250e8da00ab1c884\": WEBPACK_IMPORTED_MODULE_0.__wbg_width_250e8da00ab1c884,\n\t\t\"__wbg_height_e41b71b2f3141e8e\": WEBPACK_IMPORTED_MODULE_0.__wbg_height_e41b71b2f3141e8e,\n\t\t\"__wbg_width_020d7bde350571e9\": WEBPACK_IMPORTED_MODULE_0.__wbg_width_020d7bde350571e9,\n\t\t\"__wbg_height_d65d28af1b6f26d3\": WEBPACK_IMPORTED_MODULE_0.__wbg_height_d65d28af1b6f26d3,\n\t\t\"__wbg_data_f319d3380b214a26\": WEBPACK_IMPORTED_MODULE_0.__wbg_data_f319d3380b214a26,\n\t\t\"__wbg_newwithu8clampedarrayandsh_c90e0c3609c4ecc2\": WEBPACK_IMPORTED_MODULE_0.__wbg_newwithu8clampedarrayandsh_c90e0c3609c4ecc2,\n\t\t\"__wbg_instanceof_HtmlCanvasElement_6e58598b4e8b1586\": WEBPACK_IMPORTED_MODULE_0.__wbg_instanceof_HtmlCanvasElement_6e58598b4e8b1586,\n\t\t\"__wbg_width_3a395887a577233b\": WEBPACK_IMPORTED_MODULE_0.__wbg_width_3a395887a577233b,\n\t\t\"__wbg_setwidth_885d5dd3c7f48f41\": WEBPACK_IMPORTED_MODULE_0.__wbg_setwidth_885d5dd3c7f48f41,\n\t\t\"__wbg_height_b7046017c4148386\": WEBPACK_IMPORTED_MODULE_0.__wbg_height_b7046017c4148386,\n\t\t\"__wbg_setheight_0d2b445bb6a5a3f2\": WEBPACK_IMPORTED_MODULE_0.__wbg_setheight_0d2b445bb6a5a3f2,\n\t\t\"__wbg_getContext_62ccb1aa0e6c8b86\": WEBPACK_IMPORTED_MODULE_0.__wbg_getContext_62ccb1aa0e6c8b86,\n\t\t\"__wbg_settextContent_ea2ce5e8fc889af7\": WEBPACK_IMPORTED_MODULE_0.__wbg_settextContent_ea2ce5e8fc889af7,\n\t\t\"__wbg_appendChild_173b88a25c048f2b\": WEBPACK_IMPORTED_MODULE_0.__wbg_appendChild_173b88a25c048f2b,\n\t\t\"__wbg_newnoargs_e643855c6572a4a8\": WEBPACK_IMPORTED_MODULE_0.__wbg_newnoargs_e643855c6572a4a8,\n\t\t\"__wbg_call_f96b398515635514\": WEBPACK_IMPORTED_MODULE_0.__wbg_call_f96b398515635514,\n\t\t\"__wbg_globalThis_d0957e302752547e\": WEBPACK_IMPORTED_MODULE_0.__wbg_globalThis_d0957e302752547e,\n\t\t\"__wbg_self_b9aad7f1c618bfaf\": WEBPACK_IMPORTED_MODULE_0.__wbg_self_b9aad7f1c618bfaf,\n\t\t\"__wbg_window_55e469842c98b086\": WEBPACK_IMPORTED_MODULE_0.__wbg_window_55e469842c98b086,\n\t\t\"__wbg_global_ae2f87312b8987fb\": WEBPACK_IMPORTED_MODULE_0.__wbg_global_ae2f87312b8987fb,\n\t\t\"__wbg_new_bc5d9aad3f9ac80e\": WEBPACK_IMPORTED_MODULE_0.__wbg_new_bc5d9aad3f9ac80e,\n\t\t\"__wbg_length_d9c4ded7e708c6a1\": WEBPACK_IMPORTED_MODULE_0.__wbg_length_d9c4ded7e708c6a1,\n\t\t\"__wbg_set_4b3aa8445ac1e91c\": WEBPACK_IMPORTED_MODULE_0.__wbg_set_4b3aa8445ac1e91c,\n\t\t\"__wbg_random_f67f027fd89c6d9c\": WEBPACK_IMPORTED_MODULE_0.__wbg_random_f67f027fd89c6d9c,\n\t\t\"__wbindgen_is_undefined\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_is_undefined,\n\t\t\"__wbindgen_object_clone_ref\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_object_clone_ref,\n\t\t\"__wbg_buffer_fcbfb6d88b2732e9\": WEBPACK_IMPORTED_MODULE_0.__wbg_buffer_fcbfb6d88b2732e9,\n\t\t\"__wbindgen_debug_string\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_debug_string,\n\t\t\"__wbindgen_throw\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_throw,\n\t\t\"__wbindgen_memory\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_memory\n\t}\n});\n\n//# sourceURL=webpack://photon-wasm/../crate/pkg/photon_rs_bg.wasm?"); + +/***/ }) + +}]); \ No newline at end of file diff --git a/dist/crate_pkg_spiegel_client_js.bundle.js b/dist/crate_pkg_spiegel_client_js.bundle.js new file mode 100644 index 0000000..fff1cfc --- /dev/null +++ b/dist/crate_pkg_spiegel_client_js.bundle.js @@ -0,0 +1,42 @@ +"use strict"; +/* + * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(self["webpackChunkphoton_wasm"] = self["webpackChunkphoton_wasm"] || []).push([["crate_pkg_spiegel_client_js"],{ + +/***/ "./crate/pkg/spiegel_client.js": +/*!*************************************!*\ + !*** ./crate/pkg/spiegel_client.js ***! + \*************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PhotonImage: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.PhotonImage),\n/* harmony export */ Rgb: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.Rgb),\n/* harmony export */ Rgba: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.Rgba),\n/* harmony export */ SamplingFilter: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.SamplingFilter),\n/* harmony export */ __wbg_appendChild_d318db34c4559916: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_appendChild_d318db34c4559916),\n/* harmony export */ __wbg_body_78ae4fd43b446013: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_body_78ae4fd43b446013),\n/* harmony export */ __wbg_call_888d259a5fefc347: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_call_888d259a5fefc347),\n/* harmony export */ __wbg_createElement_86c152812a141a62: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_createElement_86c152812a141a62),\n/* harmony export */ __wbg_data_1ae7496c58caf755: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_data_1ae7496c58caf755),\n/* harmony export */ __wbg_document_1c64944725c0d81d: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_document_1c64944725c0d81d),\n/* harmony export */ __wbg_drawImage_9e2d13329d92a0a3: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_drawImage_9e2d13329d92a0a3),\n/* harmony export */ __wbg_error_09919627ac0992f5: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_error_09919627ac0992f5),\n/* harmony export */ __wbg_getContext_f701d0231ae22393: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_getContext_f701d0231ae22393),\n/* harmony export */ __wbg_getImageData_9ffc3df78ca3dbc9: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_getImageData_9ffc3df78ca3dbc9),\n/* harmony export */ __wbg_globalThis_3f735a5746d41fbd: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_globalThis_3f735a5746d41fbd),\n/* harmony export */ __wbg_global_1bc0b39582740e95: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_global_1bc0b39582740e95),\n/* harmony export */ __wbg_height_368bb86c37d51bc9: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_height_368bb86c37d51bc9),\n/* harmony export */ __wbg_height_7153faec70fbaf7b: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_height_7153faec70fbaf7b),\n/* harmony export */ __wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae),\n/* harmony export */ __wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e),\n/* harmony export */ __wbg_instanceof_Window_c4b70662a0d2c5ec: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_instanceof_Window_c4b70662a0d2c5ec),\n/* harmony export */ __wbg_new_693216e109162396: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_new_693216e109162396),\n/* harmony export */ __wbg_newnoargs_be86524d73f67598: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_newnoargs_be86524d73f67598),\n/* harmony export */ __wbg_newwithu8clampedarrayandsh_1b8c6e1bede43657: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_newwithu8clampedarrayandsh_1b8c6e1bede43657),\n/* harmony export */ __wbg_putImageData_b9544b271e569392: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_putImageData_b9544b271e569392),\n/* harmony export */ __wbg_self_c6fbdfc2918d5e58: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_self_c6fbdfc2918d5e58),\n/* harmony export */ __wbg_setheight_88894b05710ff752: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_setheight_88894b05710ff752),\n/* harmony export */ __wbg_settextContent_799ebbf96e16265d: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_settextContent_799ebbf96e16265d),\n/* harmony export */ __wbg_setwidth_c1a7061891b71f25: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_setwidth_c1a7061891b71f25),\n/* harmony export */ __wbg_stack_0ddaca5d1abfb52f: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_stack_0ddaca5d1abfb52f),\n/* harmony export */ __wbg_width_16bd64d09cbf5661: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_width_16bd64d09cbf5661),\n/* harmony export */ __wbg_width_555f63ab09ba7d3f: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_width_555f63ab09ba7d3f),\n/* harmony export */ __wbg_window_baec038b5ab35c54: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbg_window_baec038b5ab35c54),\n/* harmony export */ __wbindgen_debug_string: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_debug_string),\n/* harmony export */ __wbindgen_is_undefined: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_is_undefined),\n/* harmony export */ __wbindgen_object_clone_ref: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_object_clone_ref),\n/* harmony export */ __wbindgen_object_drop_ref: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_object_drop_ref),\n/* harmony export */ __wbindgen_rethrow: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_rethrow),\n/* harmony export */ __wbindgen_throw: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_throw),\n/* harmony export */ adjust_contrast: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.adjust_contrast),\n/* harmony export */ alter_blue_channel: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.alter_blue_channel),\n/* harmony export */ alter_channel: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.alter_channel),\n/* harmony export */ alter_channels: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.alter_channels),\n/* harmony export */ alter_green_channel: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.alter_green_channel),\n/* harmony export */ alter_red_channel: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.alter_red_channel),\n/* harmony export */ alter_two_channels: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.alter_two_channels),\n/* harmony export */ apply_gradient: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.apply_gradient),\n/* harmony export */ b_grayscale: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.b_grayscale),\n/* harmony export */ base64_to_image: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.base64_to_image),\n/* harmony export */ base64_to_vec: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.base64_to_vec),\n/* harmony export */ blend: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.blend),\n/* harmony export */ box_blur: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.box_blur),\n/* harmony export */ cali: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.cali),\n/* harmony export */ color_horizontal_strips: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.color_horizontal_strips),\n/* harmony export */ color_vertical_strips: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.color_vertical_strips),\n/* harmony export */ colorize: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.colorize),\n/* harmony export */ create_gradient: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.create_gradient),\n/* harmony export */ crop: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.crop),\n/* harmony export */ crop_img_browser: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.crop_img_browser),\n/* harmony export */ darken_hsl: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.darken_hsl),\n/* harmony export */ darken_hsluv: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.darken_hsluv),\n/* harmony export */ darken_hsv: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.darken_hsv),\n/* harmony export */ darken_lch: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.darken_lch),\n/* harmony export */ decompose_max: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.decompose_max),\n/* harmony export */ decompose_min: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.decompose_min),\n/* harmony export */ desaturate: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.desaturate),\n/* harmony export */ desaturate_hsl: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.desaturate_hsl),\n/* harmony export */ desaturate_hsluv: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.desaturate_hsluv),\n/* harmony export */ desaturate_hsv: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.desaturate_hsv),\n/* harmony export */ desaturate_lch: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.desaturate_lch),\n/* harmony export */ detect_135_deg_lines: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.detect_135_deg_lines),\n/* harmony export */ detect_45_deg_lines: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.detect_45_deg_lines),\n/* harmony export */ detect_horizontal_lines: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.detect_horizontal_lines),\n/* harmony export */ detect_vertical_lines: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.detect_vertical_lines),\n/* harmony export */ dither: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.dither),\n/* harmony export */ dramatic: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.dramatic),\n/* harmony export */ draw_text: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.draw_text),\n/* harmony export */ draw_text_with_border: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.draw_text_with_border),\n/* harmony export */ duotone: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.duotone),\n/* harmony export */ duotone_horizon: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.duotone_horizon),\n/* harmony export */ duotone_lilac: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.duotone_lilac),\n/* harmony export */ duotone_ochre: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.duotone_ochre),\n/* harmony export */ duotone_tint: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.duotone_tint),\n/* harmony export */ duotone_violette: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.duotone_violette),\n/* harmony export */ edge_detection: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.edge_detection),\n/* harmony export */ edge_one: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.edge_one),\n/* harmony export */ emboss: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.emboss),\n/* harmony export */ filter: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.filter),\n/* harmony export */ firenze: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.firenze),\n/* harmony export */ fliph: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.fliph),\n/* harmony export */ flipv: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.flipv),\n/* harmony export */ frosted_glass: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.frosted_glass),\n/* harmony export */ g_grayscale: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.g_grayscale),\n/* harmony export */ gamma_correction: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.gamma_correction),\n/* harmony export */ gaussian_blur: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.gaussian_blur),\n/* harmony export */ get_image_data: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.get_image_data),\n/* harmony export */ golden: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.golden),\n/* harmony export */ grayscale: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.grayscale),\n/* harmony export */ grayscale_human_corrected: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.grayscale_human_corrected),\n/* harmony export */ grayscale_shades: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.grayscale_shades),\n/* harmony export */ horizontal_strips: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.horizontal_strips),\n/* harmony export */ hsl: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.hsl),\n/* harmony export */ hsluv: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.hsluv),\n/* harmony export */ hsv: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.hsv),\n/* harmony export */ hue_rotate_hsl: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.hue_rotate_hsl),\n/* harmony export */ hue_rotate_hsluv: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.hue_rotate_hsluv),\n/* harmony export */ hue_rotate_hsv: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.hue_rotate_hsv),\n/* harmony export */ hue_rotate_lch: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.hue_rotate_lch),\n/* harmony export */ identity: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.identity),\n/* harmony export */ inc_brightness: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.inc_brightness),\n/* harmony export */ invert: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.invert),\n/* harmony export */ laplace: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.laplace),\n/* harmony export */ lch: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.lch),\n/* harmony export */ lighten_hsl: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.lighten_hsl),\n/* harmony export */ lighten_hsluv: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.lighten_hsluv),\n/* harmony export */ lighten_hsv: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.lighten_hsv),\n/* harmony export */ lighten_lch: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.lighten_lch),\n/* harmony export */ lix: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.lix),\n/* harmony export */ lofi: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.lofi),\n/* harmony export */ mix_with_colour: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.mix_with_colour),\n/* harmony export */ monochrome: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.monochrome),\n/* harmony export */ monochrome_tint: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.monochrome_tint),\n/* harmony export */ multiple_offsets: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.multiple_offsets),\n/* harmony export */ neue: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.neue),\n/* harmony export */ noise_reduction: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.noise_reduction),\n/* harmony export */ normalize: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.normalize),\n/* harmony export */ obsidian: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.obsidian),\n/* harmony export */ offset: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.offset),\n/* harmony export */ offset_blue: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.offset_blue),\n/* harmony export */ offset_green: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.offset_green),\n/* harmony export */ offset_red: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.offset_red),\n/* harmony export */ oil: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.oil),\n/* harmony export */ open_image: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.open_image),\n/* harmony export */ padding_bottom: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.padding_bottom),\n/* harmony export */ padding_left: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.padding_left),\n/* harmony export */ padding_right: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.padding_right),\n/* harmony export */ padding_top: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.padding_top),\n/* harmony export */ padding_uniform: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.padding_uniform),\n/* harmony export */ pastel_pink: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.pastel_pink),\n/* harmony export */ pixelize: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.pixelize),\n/* harmony export */ prewitt_horizontal: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.prewitt_horizontal),\n/* harmony export */ primary: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.primary),\n/* harmony export */ putImageData: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.putImageData),\n/* harmony export */ r_grayscale: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.r_grayscale),\n/* harmony export */ remove_blue_channel: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.remove_blue_channel),\n/* harmony export */ remove_channel: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.remove_channel),\n/* harmony export */ remove_green_channel: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.remove_green_channel),\n/* harmony export */ remove_red_channel: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.remove_red_channel),\n/* harmony export */ resample: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.resample),\n/* harmony export */ resize: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.resize),\n/* harmony export */ resize_img_browser: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.resize_img_browser),\n/* harmony export */ rotate: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.rotate),\n/* harmony export */ run: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.run),\n/* harmony export */ ryo: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.ryo),\n/* harmony export */ saturate_hsl: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.saturate_hsl),\n/* harmony export */ saturate_hsluv: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.saturate_hsluv),\n/* harmony export */ saturate_hsv: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.saturate_hsv),\n/* harmony export */ saturate_lch: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.saturate_lch),\n/* harmony export */ seam_carve: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.seam_carve),\n/* harmony export */ selective_color_convert: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.selective_color_convert),\n/* harmony export */ selective_desaturate: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.selective_desaturate),\n/* harmony export */ selective_greyscale: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.selective_greyscale),\n/* harmony export */ selective_hue_rotate: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.selective_hue_rotate),\n/* harmony export */ selective_lighten: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.selective_lighten),\n/* harmony export */ selective_saturate: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.selective_saturate),\n/* harmony export */ sepia: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.sepia),\n/* harmony export */ sharpen: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.sharpen),\n/* harmony export */ single_channel_grayscale: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.single_channel_grayscale),\n/* harmony export */ sobel_horizontal: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.sobel_horizontal),\n/* harmony export */ sobel_vertical: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.sobel_vertical),\n/* harmony export */ solarize: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.solarize),\n/* harmony export */ solarize_retimg: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.solarize_retimg),\n/* harmony export */ swap_channels: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.swap_channels),\n/* harmony export */ threshold: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.threshold),\n/* harmony export */ tint: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.tint),\n/* harmony export */ to_image_data: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.to_image_data),\n/* harmony export */ to_raw_pixels: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.to_raw_pixels),\n/* harmony export */ vertical_strips: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.vertical_strips),\n/* harmony export */ watermark: () => (/* reexport safe */ _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__.watermark)\n/* harmony export */ });\n/* harmony import */ var _spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./spiegel_client_bg.js */ \"./crate/pkg/spiegel_client_bg.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__]);\n_spiegel_client_bg_js__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });\n\n//# sourceURL=webpack://photon-wasm/./crate/pkg/spiegel_client.js?"); + +/***/ }), + +/***/ "./crate/pkg/spiegel_client_bg.js": +/*!****************************************!*\ + !*** ./crate/pkg/spiegel_client_bg.js ***! + \****************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PhotonImage: () => (/* binding */ PhotonImage),\n/* harmony export */ Rgb: () => (/* binding */ Rgb),\n/* harmony export */ Rgba: () => (/* binding */ Rgba),\n/* harmony export */ SamplingFilter: () => (/* binding */ SamplingFilter),\n/* harmony export */ __wbg_appendChild_d318db34c4559916: () => (/* binding */ __wbg_appendChild_d318db34c4559916),\n/* harmony export */ __wbg_body_78ae4fd43b446013: () => (/* binding */ __wbg_body_78ae4fd43b446013),\n/* harmony export */ __wbg_call_888d259a5fefc347: () => (/* binding */ __wbg_call_888d259a5fefc347),\n/* harmony export */ __wbg_createElement_86c152812a141a62: () => (/* binding */ __wbg_createElement_86c152812a141a62),\n/* harmony export */ __wbg_data_1ae7496c58caf755: () => (/* binding */ __wbg_data_1ae7496c58caf755),\n/* harmony export */ __wbg_document_1c64944725c0d81d: () => (/* binding */ __wbg_document_1c64944725c0d81d),\n/* harmony export */ __wbg_drawImage_9e2d13329d92a0a3: () => (/* binding */ __wbg_drawImage_9e2d13329d92a0a3),\n/* harmony export */ __wbg_error_09919627ac0992f5: () => (/* binding */ __wbg_error_09919627ac0992f5),\n/* harmony export */ __wbg_getContext_f701d0231ae22393: () => (/* binding */ __wbg_getContext_f701d0231ae22393),\n/* harmony export */ __wbg_getImageData_9ffc3df78ca3dbc9: () => (/* binding */ __wbg_getImageData_9ffc3df78ca3dbc9),\n/* harmony export */ __wbg_globalThis_3f735a5746d41fbd: () => (/* binding */ __wbg_globalThis_3f735a5746d41fbd),\n/* harmony export */ __wbg_global_1bc0b39582740e95: () => (/* binding */ __wbg_global_1bc0b39582740e95),\n/* harmony export */ __wbg_height_368bb86c37d51bc9: () => (/* binding */ __wbg_height_368bb86c37d51bc9),\n/* harmony export */ __wbg_height_7153faec70fbaf7b: () => (/* binding */ __wbg_height_7153faec70fbaf7b),\n/* harmony export */ __wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae: () => (/* binding */ __wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae),\n/* harmony export */ __wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e: () => (/* binding */ __wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e),\n/* harmony export */ __wbg_instanceof_Window_c4b70662a0d2c5ec: () => (/* binding */ __wbg_instanceof_Window_c4b70662a0d2c5ec),\n/* harmony export */ __wbg_new_693216e109162396: () => (/* binding */ __wbg_new_693216e109162396),\n/* harmony export */ __wbg_newnoargs_be86524d73f67598: () => (/* binding */ __wbg_newnoargs_be86524d73f67598),\n/* harmony export */ __wbg_newwithu8clampedarrayandsh_1b8c6e1bede43657: () => (/* binding */ __wbg_newwithu8clampedarrayandsh_1b8c6e1bede43657),\n/* harmony export */ __wbg_putImageData_b9544b271e569392: () => (/* binding */ __wbg_putImageData_b9544b271e569392),\n/* harmony export */ __wbg_self_c6fbdfc2918d5e58: () => (/* binding */ __wbg_self_c6fbdfc2918d5e58),\n/* harmony export */ __wbg_setheight_88894b05710ff752: () => (/* binding */ __wbg_setheight_88894b05710ff752),\n/* harmony export */ __wbg_settextContent_799ebbf96e16265d: () => (/* binding */ __wbg_settextContent_799ebbf96e16265d),\n/* harmony export */ __wbg_setwidth_c1a7061891b71f25: () => (/* binding */ __wbg_setwidth_c1a7061891b71f25),\n/* harmony export */ __wbg_stack_0ddaca5d1abfb52f: () => (/* binding */ __wbg_stack_0ddaca5d1abfb52f),\n/* harmony export */ __wbg_width_16bd64d09cbf5661: () => (/* binding */ __wbg_width_16bd64d09cbf5661),\n/* harmony export */ __wbg_width_555f63ab09ba7d3f: () => (/* binding */ __wbg_width_555f63ab09ba7d3f),\n/* harmony export */ __wbg_window_baec038b5ab35c54: () => (/* binding */ __wbg_window_baec038b5ab35c54),\n/* harmony export */ __wbindgen_debug_string: () => (/* binding */ __wbindgen_debug_string),\n/* harmony export */ __wbindgen_is_undefined: () => (/* binding */ __wbindgen_is_undefined),\n/* harmony export */ __wbindgen_object_clone_ref: () => (/* binding */ __wbindgen_object_clone_ref),\n/* harmony export */ __wbindgen_object_drop_ref: () => (/* binding */ __wbindgen_object_drop_ref),\n/* harmony export */ __wbindgen_rethrow: () => (/* binding */ __wbindgen_rethrow),\n/* harmony export */ __wbindgen_throw: () => (/* binding */ __wbindgen_throw),\n/* harmony export */ adjust_contrast: () => (/* binding */ adjust_contrast),\n/* harmony export */ alter_blue_channel: () => (/* binding */ alter_blue_channel),\n/* harmony export */ alter_channel: () => (/* binding */ alter_channel),\n/* harmony export */ alter_channels: () => (/* binding */ alter_channels),\n/* harmony export */ alter_green_channel: () => (/* binding */ alter_green_channel),\n/* harmony export */ alter_red_channel: () => (/* binding */ alter_red_channel),\n/* harmony export */ alter_two_channels: () => (/* binding */ alter_two_channels),\n/* harmony export */ apply_gradient: () => (/* binding */ apply_gradient),\n/* harmony export */ b_grayscale: () => (/* binding */ b_grayscale),\n/* harmony export */ base64_to_image: () => (/* binding */ base64_to_image),\n/* harmony export */ base64_to_vec: () => (/* binding */ base64_to_vec),\n/* harmony export */ blend: () => (/* binding */ blend),\n/* harmony export */ box_blur: () => (/* binding */ box_blur),\n/* harmony export */ cali: () => (/* binding */ cali),\n/* harmony export */ color_horizontal_strips: () => (/* binding */ color_horizontal_strips),\n/* harmony export */ color_vertical_strips: () => (/* binding */ color_vertical_strips),\n/* harmony export */ colorize: () => (/* binding */ colorize),\n/* harmony export */ create_gradient: () => (/* binding */ create_gradient),\n/* harmony export */ crop: () => (/* binding */ crop),\n/* harmony export */ crop_img_browser: () => (/* binding */ crop_img_browser),\n/* harmony export */ darken_hsl: () => (/* binding */ darken_hsl),\n/* harmony export */ darken_hsluv: () => (/* binding */ darken_hsluv),\n/* harmony export */ darken_hsv: () => (/* binding */ darken_hsv),\n/* harmony export */ darken_lch: () => (/* binding */ darken_lch),\n/* harmony export */ decompose_max: () => (/* binding */ decompose_max),\n/* harmony export */ decompose_min: () => (/* binding */ decompose_min),\n/* harmony export */ desaturate: () => (/* binding */ desaturate),\n/* harmony export */ desaturate_hsl: () => (/* binding */ desaturate_hsl),\n/* harmony export */ desaturate_hsluv: () => (/* binding */ desaturate_hsluv),\n/* harmony export */ desaturate_hsv: () => (/* binding */ desaturate_hsv),\n/* harmony export */ desaturate_lch: () => (/* binding */ desaturate_lch),\n/* harmony export */ detect_135_deg_lines: () => (/* binding */ detect_135_deg_lines),\n/* harmony export */ detect_45_deg_lines: () => (/* binding */ detect_45_deg_lines),\n/* harmony export */ detect_horizontal_lines: () => (/* binding */ detect_horizontal_lines),\n/* harmony export */ detect_vertical_lines: () => (/* binding */ detect_vertical_lines),\n/* harmony export */ dither: () => (/* binding */ dither),\n/* harmony export */ dramatic: () => (/* binding */ dramatic),\n/* harmony export */ draw_text: () => (/* binding */ draw_text),\n/* harmony export */ draw_text_with_border: () => (/* binding */ draw_text_with_border),\n/* harmony export */ duotone: () => (/* binding */ duotone),\n/* harmony export */ duotone_horizon: () => (/* binding */ duotone_horizon),\n/* harmony export */ duotone_lilac: () => (/* binding */ duotone_lilac),\n/* harmony export */ duotone_ochre: () => (/* binding */ duotone_ochre),\n/* harmony export */ duotone_tint: () => (/* binding */ duotone_tint),\n/* harmony export */ duotone_violette: () => (/* binding */ duotone_violette),\n/* harmony export */ edge_detection: () => (/* binding */ edge_detection),\n/* harmony export */ edge_one: () => (/* binding */ edge_one),\n/* harmony export */ emboss: () => (/* binding */ emboss),\n/* harmony export */ filter: () => (/* binding */ filter),\n/* harmony export */ firenze: () => (/* binding */ firenze),\n/* harmony export */ fliph: () => (/* binding */ fliph),\n/* harmony export */ flipv: () => (/* binding */ flipv),\n/* harmony export */ frosted_glass: () => (/* binding */ frosted_glass),\n/* harmony export */ g_grayscale: () => (/* binding */ g_grayscale),\n/* harmony export */ gamma_correction: () => (/* binding */ gamma_correction),\n/* harmony export */ gaussian_blur: () => (/* binding */ gaussian_blur),\n/* harmony export */ get_image_data: () => (/* binding */ get_image_data),\n/* harmony export */ golden: () => (/* binding */ golden),\n/* harmony export */ grayscale: () => (/* binding */ grayscale),\n/* harmony export */ grayscale_human_corrected: () => (/* binding */ grayscale_human_corrected),\n/* harmony export */ grayscale_shades: () => (/* binding */ grayscale_shades),\n/* harmony export */ horizontal_strips: () => (/* binding */ horizontal_strips),\n/* harmony export */ hsl: () => (/* binding */ hsl),\n/* harmony export */ hsluv: () => (/* binding */ hsluv),\n/* harmony export */ hsv: () => (/* binding */ hsv),\n/* harmony export */ hue_rotate_hsl: () => (/* binding */ hue_rotate_hsl),\n/* harmony export */ hue_rotate_hsluv: () => (/* binding */ hue_rotate_hsluv),\n/* harmony export */ hue_rotate_hsv: () => (/* binding */ hue_rotate_hsv),\n/* harmony export */ hue_rotate_lch: () => (/* binding */ hue_rotate_lch),\n/* harmony export */ identity: () => (/* binding */ identity),\n/* harmony export */ inc_brightness: () => (/* binding */ inc_brightness),\n/* harmony export */ invert: () => (/* binding */ invert),\n/* harmony export */ laplace: () => (/* binding */ laplace),\n/* harmony export */ lch: () => (/* binding */ lch),\n/* harmony export */ lighten_hsl: () => (/* binding */ lighten_hsl),\n/* harmony export */ lighten_hsluv: () => (/* binding */ lighten_hsluv),\n/* harmony export */ lighten_hsv: () => (/* binding */ lighten_hsv),\n/* harmony export */ lighten_lch: () => (/* binding */ lighten_lch),\n/* harmony export */ lix: () => (/* binding */ lix),\n/* harmony export */ lofi: () => (/* binding */ lofi),\n/* harmony export */ mix_with_colour: () => (/* binding */ mix_with_colour),\n/* harmony export */ monochrome: () => (/* binding */ monochrome),\n/* harmony export */ monochrome_tint: () => (/* binding */ monochrome_tint),\n/* harmony export */ multiple_offsets: () => (/* binding */ multiple_offsets),\n/* harmony export */ neue: () => (/* binding */ neue),\n/* harmony export */ noise_reduction: () => (/* binding */ noise_reduction),\n/* harmony export */ normalize: () => (/* binding */ normalize),\n/* harmony export */ obsidian: () => (/* binding */ obsidian),\n/* harmony export */ offset: () => (/* binding */ offset),\n/* harmony export */ offset_blue: () => (/* binding */ offset_blue),\n/* harmony export */ offset_green: () => (/* binding */ offset_green),\n/* harmony export */ offset_red: () => (/* binding */ offset_red),\n/* harmony export */ oil: () => (/* binding */ oil),\n/* harmony export */ open_image: () => (/* binding */ open_image),\n/* harmony export */ padding_bottom: () => (/* binding */ padding_bottom),\n/* harmony export */ padding_left: () => (/* binding */ padding_left),\n/* harmony export */ padding_right: () => (/* binding */ padding_right),\n/* harmony export */ padding_top: () => (/* binding */ padding_top),\n/* harmony export */ padding_uniform: () => (/* binding */ padding_uniform),\n/* harmony export */ pastel_pink: () => (/* binding */ pastel_pink),\n/* harmony export */ pixelize: () => (/* binding */ pixelize),\n/* harmony export */ prewitt_horizontal: () => (/* binding */ prewitt_horizontal),\n/* harmony export */ primary: () => (/* binding */ primary),\n/* harmony export */ putImageData: () => (/* binding */ putImageData),\n/* harmony export */ r_grayscale: () => (/* binding */ r_grayscale),\n/* harmony export */ remove_blue_channel: () => (/* binding */ remove_blue_channel),\n/* harmony export */ remove_channel: () => (/* binding */ remove_channel),\n/* harmony export */ remove_green_channel: () => (/* binding */ remove_green_channel),\n/* harmony export */ remove_red_channel: () => (/* binding */ remove_red_channel),\n/* harmony export */ resample: () => (/* binding */ resample),\n/* harmony export */ resize: () => (/* binding */ resize),\n/* harmony export */ resize_img_browser: () => (/* binding */ resize_img_browser),\n/* harmony export */ rotate: () => (/* binding */ rotate),\n/* harmony export */ run: () => (/* binding */ run),\n/* harmony export */ ryo: () => (/* binding */ ryo),\n/* harmony export */ saturate_hsl: () => (/* binding */ saturate_hsl),\n/* harmony export */ saturate_hsluv: () => (/* binding */ saturate_hsluv),\n/* harmony export */ saturate_hsv: () => (/* binding */ saturate_hsv),\n/* harmony export */ saturate_lch: () => (/* binding */ saturate_lch),\n/* harmony export */ seam_carve: () => (/* binding */ seam_carve),\n/* harmony export */ selective_color_convert: () => (/* binding */ selective_color_convert),\n/* harmony export */ selective_desaturate: () => (/* binding */ selective_desaturate),\n/* harmony export */ selective_greyscale: () => (/* binding */ selective_greyscale),\n/* harmony export */ selective_hue_rotate: () => (/* binding */ selective_hue_rotate),\n/* harmony export */ selective_lighten: () => (/* binding */ selective_lighten),\n/* harmony export */ selective_saturate: () => (/* binding */ selective_saturate),\n/* harmony export */ sepia: () => (/* binding */ sepia),\n/* harmony export */ sharpen: () => (/* binding */ sharpen),\n/* harmony export */ single_channel_grayscale: () => (/* binding */ single_channel_grayscale),\n/* harmony export */ sobel_horizontal: () => (/* binding */ sobel_horizontal),\n/* harmony export */ sobel_vertical: () => (/* binding */ sobel_vertical),\n/* harmony export */ solarize: () => (/* binding */ solarize),\n/* harmony export */ solarize_retimg: () => (/* binding */ solarize_retimg),\n/* harmony export */ swap_channels: () => (/* binding */ swap_channels),\n/* harmony export */ threshold: () => (/* binding */ threshold),\n/* harmony export */ tint: () => (/* binding */ tint),\n/* harmony export */ to_image_data: () => (/* binding */ to_image_data),\n/* harmony export */ to_raw_pixels: () => (/* binding */ to_raw_pixels),\n/* harmony export */ vertical_strips: () => (/* binding */ vertical_strips),\n/* harmony export */ watermark: () => (/* binding */ watermark)\n/* harmony export */ });\n/* harmony import */ var _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./spiegel_client_bg.wasm */ \"./crate/pkg/spiegel_client_bg.wasm\");\n/* module decorator */ module = __webpack_require__.hmd(module);\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__]);\n_spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\nconst heap = new Array(32).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nfunction getObject(idx) { return heap[idx]; }\n\nlet heap_next = heap.length;\n\nfunction dropObject(idx) {\n if (idx < 36) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nfunction _assertBoolean(n) {\n if (typeof(n) !== 'boolean') {\n throw new Error('expected a boolean argument');\n }\n}\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n if (typeof(heap_next) !== 'number') throw new Error('corrupt heap');\n\n heap[idx] = obj;\n return idx;\n}\n\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for(let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet cachegetUint8Memory0 = null;\nfunction getUint8Memory0() {\n if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer) {\n cachegetUint8Memory0 = new Uint8Array(_spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer);\n }\n return cachegetUint8Memory0;\n}\n\nconst lTextEncoder = typeof TextEncoder === 'undefined' ? (0, module.require)('util').TextEncoder : TextEncoder;\n\nlet cachedTextEncoder = new lTextEncoder('utf-8');\n\nconst encodeString = (typeof cachedTextEncoder.encodeInto === 'function'\n ? function (arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n}\n : function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n});\n\nfunction passStringToWasm0(arg, malloc, realloc) {\n\n if (typeof(arg) !== 'string') throw new Error('expected a string argument');\n\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length);\n getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n\n let len = arg.length;\n let ptr = malloc(len);\n\n const mem = getUint8Memory0();\n\n let offset = 0;\n\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3);\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n if (ret.read !== arg.length) throw new Error('failed to pass whole string');\n offset += ret.written;\n }\n\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\n\nlet cachegetInt32Memory0 = null;\nfunction getInt32Memory0() {\n if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer) {\n cachegetInt32Memory0 = new Int32Array(_spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer);\n }\n return cachegetInt32Memory0;\n}\n\nconst lTextDecoder = typeof TextDecoder === 'undefined' ? (0, module.require)('util').TextDecoder : TextDecoder;\n\nlet cachedTextDecoder = new lTextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n\ncachedTextDecoder.decode();\n\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\n\nfunction _assertNum(n) {\n if (typeof(n) !== 'number') throw new Error('expected a number argument');\n}\n/**\n* Apply a monochrome effect of a certain colour.\n*\n* It does so by averaging the R, G, and B values of a pixel, and then adding a\n* separate value to that averaged value for each channel to produce a tint.\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `r_offset` - The value to add to the Red channel per pixel.\n* * `g_offset` - The value to add to the Green channel per pixel.\n* * `b_offset` - The value to add to the Blue channel per pixel.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a monochrome effect to an image:\n* use photon_rs::monochrome::monochrome;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* monochrome(&mut img, 40_u32, 50_u32, 100_u32);\n* ```\n* @param {PhotonImage} img\n* @param {number} r_offset\n* @param {number} g_offset\n* @param {number} b_offset\n*/\nfunction monochrome(img, r_offset, g_offset, b_offset) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(r_offset);\n _assertNum(g_offset);\n _assertNum(b_offset);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.monochrome(img.ptr, r_offset, g_offset, b_offset);\n}\n\n/**\n* Convert an image to sepia.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* // For example, to sepia an image of type `PhotonImage`:\n* use photon_rs::monochrome::sepia;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* sepia(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction sepia(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.sepia(img.ptr);\n}\n\n/**\n* Convert an image to grayscale using the conventional averaging algorithm.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* // For example, to convert an image of type `PhotonImage` to grayscale:\n* use photon_rs::monochrome::grayscale;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* grayscale(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction grayscale(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.grayscale(img.ptr);\n}\n\n/**\n* Convert an image to grayscale with a human corrected factor, to account for human vision.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* // For example, to convert an image of type `PhotonImage` to grayscale with a human corrected factor:\n* use photon_rs::monochrome::grayscale_human_corrected;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* grayscale_human_corrected(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction grayscale_human_corrected(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.grayscale_human_corrected(img.ptr);\n}\n\n/**\n* Desaturate an image by getting the min/max of each pixel's RGB values.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* // For example, to desaturate an image:\n* use photon_rs::monochrome::desaturate;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* desaturate(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction desaturate(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.desaturate(img.ptr);\n}\n\n/**\n* Uses a min. decomposition algorithm to convert an image to greyscale.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* // For example, to decompose an image with min decomposition:\n* use photon_rs::monochrome::decompose_min;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* decompose_min(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction decompose_min(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.decompose_min(img.ptr);\n}\n\n/**\n* Uses a max. decomposition algorithm to convert an image to greyscale.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* // For example, to decompose an image with max decomposition:\n* use photon_rs::monochrome::decompose_max;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* decompose_max(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction decompose_max(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.decompose_max(img.ptr);\n}\n\n/**\n* Employ only a limited number of gray shades in an image.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `num_shades` - The number of grayscale shades to be displayed in the image.\n* # Example\n*\n* ```no_run\n* // For example, to limit an image to four shades of gray only:\n* use photon_rs::monochrome::grayscale_shades;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* grayscale_shades(&mut img, 4_u8);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} num_shades\n*/\nfunction grayscale_shades(photon_image, num_shades) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(num_shades);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.grayscale_shades(photon_image.ptr, num_shades);\n}\n\n/**\n* Convert an image to grayscale by setting a pixel's 3 RGB values to the Red channel's value.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::monochrome::r_grayscale;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* r_grayscale(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction r_grayscale(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.r_grayscale(photon_image.ptr);\n}\n\n/**\n* Convert an image to grayscale by setting a pixel's 3 RGB values to the Green channel's value.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::monochrome::g_grayscale;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* g_grayscale(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction g_grayscale(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.g_grayscale(photon_image.ptr);\n}\n\n/**\n* Convert an image to grayscale by setting a pixel's 3 RGB values to the Blue channel's value.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::monochrome::b_grayscale;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* b_grayscale(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction b_grayscale(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.b_grayscale(photon_image.ptr);\n}\n\n/**\n* Convert an image to grayscale by setting a pixel's 3 RGB values to a chosen channel's value.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `channel` - A usize representing the channel from 0 to 2. O represents the Red channel, 1 the Green channel, and 2 the Blue channel.\n* # Example\n* To grayscale using only values from the Red channel:\n* ```no_run\n* use photon_rs::monochrome::single_channel_grayscale;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* single_channel_grayscale(&mut img, 0_usize);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} channel\n*/\nfunction single_channel_grayscale(photon_image, channel) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(channel);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.single_channel_grayscale(photon_image.ptr, channel);\n}\n\n/**\n* Threshold an image using a standard thresholding algorithm.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `threshold` - The amount the image should be thresholded by from 0 to 255.\n* # Example\n*\n* ```no_run\n* // For example, to threshold an image of type `PhotonImage`:\n* use photon_rs::monochrome::threshold;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* threshold(&mut img, 30_u32);\n* ```\n* @param {PhotonImage} img\n* @param {number} threshold\n*/\nfunction threshold(img, threshold) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(threshold);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.threshold(img.ptr, threshold);\n}\n\n/**\n* Add a watermark to an image.\n*\n* # Arguments\n* * `img` - A DynamicImage that contains a view into the image.\n* * `watermark` - The watermark to be placed onto the `img` image.\n* * `x` - The x coordinate where the watermark's top corner should be positioned.\n* * `y` - The y coordinate where the watermark's top corner should be positioned.\n* # Example\n*\n* ```no_run\n* // For example, to add a watermark to an image at x: 30, y: 40:\n* use photon_rs::multiple::watermark;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let water_mark = open_image(\"watermark.jpg\").expect(\"File should open\");\n* watermark(&mut img, &water_mark, 30_u32, 40_u32);\n* ```\n* @param {PhotonImage} img\n* @param {PhotonImage} watermark\n* @param {number} x\n* @param {number} y\n*/\nfunction watermark(img, watermark, x, y) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(watermark, PhotonImage);\n if (watermark.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(x);\n _assertNum(y);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.watermark(img.ptr, watermark.ptr, x, y);\n}\n\n/**\n* Blend two images together.\n*\n* The `blend_mode` (3rd param) determines which blending mode to use; change this for varying effects.\n* The blend modes available include: `overlay`, `over`, `atop`, `xor`, `multiply`, `burn`, `soft_light`, `hard_light`,\n* `difference`, `lighten`, `darken`, `dodge`, `plus`, `exclusion` (more to come)\n* NOTE: The first image must be smaller than the second image passed as params.\n* If the first image were larger than the second, then there would be overflowing pixels which would have no corresponding pixels\n* in the second image.\n* # Arguments\n* * `img` - A DynamicImage that contains a view into the image.\n* * `img2` - The 2nd DynamicImage to be blended with the first.\n* * `blend_mode` - The blending mode to use. See above for complete list of blend modes available.\n* # Example\n*\n* ```no_run\n* // For example, to blend two images with the `multiply` blend mode:\n* use photon_rs::multiple::blend;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let img2 = open_image(\"img2.jpg\").expect(\"File should open\");\n* blend(&mut img, &img2, \"multiply\");\n* ```\n* @param {PhotonImage} photon_image\n* @param {PhotonImage} photon_image2\n* @param {string} blend_mode\n*/\nfunction blend(photon_image, photon_image2, blend_mode) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(photon_image2, PhotonImage);\n if (photon_image2.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = passStringToWasm0(blend_mode, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.blend(photon_image.ptr, photon_image2.ptr, ptr0, len0);\n}\n\n/**\n* @param {number} width\n* @param {number} height\n* @returns {PhotonImage}\n*/\nfunction create_gradient(width, height) {\n _assertNum(width);\n _assertNum(height);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.create_gradient(width, height);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Apply a gradient to an image.\n* @param {PhotonImage} image\n*/\nfunction apply_gradient(image) {\n _assertClass(image, PhotonImage);\n if (image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.apply_gradient(image.ptr);\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n*! [temp] Check if WASM is supported.\n*/\nfunction run() {\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.run();\n}\n\nlet stack_pointer = 32;\n\nfunction addBorrowedObject(obj) {\n if (stack_pointer == 1) throw new Error('out of js stack');\n heap[--stack_pointer] = obj;\n return stack_pointer;\n}\n/**\n* Get the ImageData from a 2D canvas context\n* @param {HTMLCanvasElement} canvas\n* @param {CanvasRenderingContext2D} ctx\n* @returns {ImageData}\n*/\nfunction get_image_data(canvas, ctx) {\n try {\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.get_image_data(addBorrowedObject(canvas), addBorrowedObject(ctx));\n return takeObject(ret);\n } finally {\n heap[stack_pointer++] = undefined;\n heap[stack_pointer++] = undefined;\n }\n}\n\n/**\n* Place a PhotonImage onto a 2D canvas.\n* @param {HTMLCanvasElement} canvas\n* @param {CanvasRenderingContext2D} ctx\n* @param {PhotonImage} new_image\n*/\nfunction putImageData(canvas, ctx, new_image) {\n _assertClass(new_image, PhotonImage);\n if (new_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = new_image.ptr;\n new_image.ptr = 0;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.putImageData(addHeapObject(canvas), addHeapObject(ctx), ptr0);\n}\n\n/**\n* Convert a HTML5 Canvas Element to a PhotonImage.\n*\n* This converts the ImageData found in the canvas context to a PhotonImage,\n* which can then have effects or filters applied to it.\n* @param {HTMLCanvasElement} canvas\n* @param {CanvasRenderingContext2D} ctx\n* @returns {PhotonImage}\n*/\nfunction open_image(canvas, ctx) {\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.open_image(addHeapObject(canvas), addHeapObject(ctx));\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Convert ImageData to a raw pixel vec of u8s.\n* @param {ImageData} imgdata\n* @returns {Uint8Array}\n*/\nfunction to_raw_pixels(imgdata) {\n try {\n const retptr = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(-16);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.to_raw_pixels(retptr, addHeapObject(imgdata));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* Convert a base64 string to a PhotonImage.\n* @param {string} base64\n* @returns {PhotonImage}\n*/\nfunction base64_to_image(base64) {\n var ptr0 = passStringToWasm0(base64, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.base64_to_image(ptr0, len0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Convert a base64 string to a Vec of u8s.\n* @param {string} base64\n* @returns {Uint8Array}\n*/\nfunction base64_to_vec(base64) {\n try {\n const retptr = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(-16);\n var ptr0 = passStringToWasm0(base64, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.base64_to_vec(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v1 = getArrayU8FromWasm0(r0, r1).slice();\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_free(r0, r1 * 1);\n return v1;\n } finally {\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* Convert a PhotonImage to JS-compatible ImageData.\n* @param {PhotonImage} photon_image\n* @returns {ImageData}\n*/\nfunction to_image_data(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = photon_image.ptr;\n photon_image.ptr = 0;\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.to_image_data(ptr0);\n return takeObject(ret);\n}\n\n/**\n* Solarization on the Blue channel.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::neue;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* neue(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction neue(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.neue(photon_image.ptr);\n}\n\n/**\n* Solarization on the Red and Green channels.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::lix;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lix(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction lix(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.lix(photon_image.ptr);\n}\n\n/**\n* Solarization on the Red and Blue channels.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::ryo;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* ryo(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction ryo(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.ryo(photon_image.ptr);\n}\n\n/**\n* Apply a filter to an image. Over 20 filters are available.\n* The filters are as follows:\n* * **oceanic**: Add an aquamarine-tinted hue to an image.\n* * **islands**: Aquamarine tint.\n* * **marine**: Add a green/blue mixed hue to an image.\n* * **seagreen**: Dark green hue, with tones of blue.\n* * **flagblue**: Royal blue tint\n* * **liquid**: Blue-inspired tint.\n* * **diamante**: Custom filter with a blue/turquoise tint.\n* * **radio**: Fallout-style radio effect.\n* * **twenties**: Slight-blue tinted historical effect.\n* * **rosetint**: Rose-tinted filter.\n* * **mauve**: Purple-infused filter.\n* * **bluechrome**: Blue monochrome effect.\n* * **vintage**: Vintage filter with a red tint.\n* * **perfume**: Increase the blue channel, with moderate increases in the Red and Green channels.\n* * **serenity**: Custom filter with an increase in the Blue channel's values.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `filter_name` - The filter's name. Choose from the selection above, eg: \"oceanic\"\n* # Example\n*\n* ```no_run\n* // For example, to add a filter called \"vintage\" to an image:\n* use photon_rs::filters::filter;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* filter(&mut img, \"vintage\");\n* ```\n* @param {PhotonImage} img\n* @param {string} filter_name\n*/\nfunction filter(img, filter_name) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = passStringToWasm0(filter_name, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.filter(img.ptr, ptr0, len0);\n}\n\n/**\n* Apply a lofi effect to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::lofi;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lofi(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction lofi(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.lofi(img.ptr);\n}\n\n/**\n* Apply a rose tint to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::pastel_pink;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* pastel_pink(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction pastel_pink(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.pastel_pink(img.ptr);\n}\n\n/**\n* Apply a vintage, golden hue to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::golden;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* golden(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction golden(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.golden(img.ptr);\n}\n\n/**\n* Increased contrast filter effect.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::cali;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* cali(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction cali(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.cali(img.ptr);\n}\n\n/**\n* Greyscale effect with increased contrast.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::dramatic;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* dramatic(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction dramatic(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.dramatic(img.ptr);\n}\n\n/**\n* Monochrome tint effect with increased contrast\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `rgb_color` - RGB color\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::monochrome_tint;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgb;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgb_color = Rgb::new(12, 12, 10);\n* monochrome_tint(&mut img, rgb_color);\n* ```\n* @param {PhotonImage} img\n* @param {Rgb} rgb_color\n*/\nfunction monochrome_tint(img, rgb_color) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(rgb_color, Rgb);\n if (rgb_color.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = rgb_color.ptr;\n rgb_color.ptr = 0;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.monochrome_tint(img.ptr, ptr0);\n}\n\n/**\n* Duotone effect with blue and purple tones.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::duotone_violette;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* duotone_violette(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction duotone_violette(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.duotone_violette(img.ptr);\n}\n\n/**\n* Duotone effect with purple tones.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::duotone_horizon;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* duotone_horizon(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction duotone_horizon(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.duotone_horizon(img.ptr);\n}\n\n/**\n* A duotone filter with a user-specified color and a gray color\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `rgb_color` - RGB color\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::duotone_tint;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgb;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgb_color = Rgb::new(12, 12, 10);\n* duotone_tint(&mut img, rgb_color);\n* ```\n* @param {PhotonImage} img\n* @param {Rgb} rgb_color\n*/\nfunction duotone_tint(img, rgb_color) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(rgb_color, Rgb);\n if (rgb_color.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = rgb_color.ptr;\n rgb_color.ptr = 0;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.duotone_tint(img.ptr, ptr0);\n}\n\n/**\n* Duotone effect with a lilac hue\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::duotone_lilac;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* duotone_lilac(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction duotone_lilac(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.duotone_lilac(img.ptr);\n}\n\n/**\n* A duotone ochre tint effect\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::duotone_ochre;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* duotone_ochre(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction duotone_ochre(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.duotone_ochre(img.ptr);\n}\n\n/**\n* Apply a red hue, with increased contrast and brightness.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::firenze;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* firenze(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction firenze(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.firenze(img.ptr);\n}\n\n/**\n* Apply a greyscale effect with increased contrast.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* # Example\n*\n* ```no_run\n* use photon_rs::filters::obsidian;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* obsidian(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction obsidian(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.obsidian(img.ptr);\n}\n\n/**\n* Applies gamma correction to an image.\n* # Arguments\n* * `photon_image` - A PhotonImage that contains a view into the image.\n* * `red` - Gamma value for red channel.\n* * `green` - Gamma value for green channel.\n* * `blue` - Gamma value for blue channel.\n* # Example\n*\n* ```no_run\n* // For example, to turn an image of type `PhotonImage` into a gamma corrected image:\n* use photon_rs::colour_spaces::gamma_correction;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* gamma_correction(&mut img, 2.2, 2.2, 2.2);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} red\n* @param {number} green\n* @param {number} blue\n*/\nfunction gamma_correction(photon_image, red, green, blue) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.gamma_correction(photon_image.ptr, red, green, blue);\n}\n\n/**\n* Image manipulation effects in the HSLuv colour space\n*\n* Effects include:\n* * **saturate** - Saturation increase.\n* * **desaturate** - Desaturate the image.\n* * **shift_hue** - Hue rotation by a specified number of degrees.\n* * **darken** - Decrease the brightness.\n* * **lighten** - Increase the brightness.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n* * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n* # Example\n* ```no_run\n* // For example to increase the saturation by 10%:\n* use photon_rs::colour_spaces::hsluv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hsluv(&mut img, \"saturate\", 0.1_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {string} mode\n* @param {number} amt\n*/\nfunction hsluv(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = passStringToWasm0(mode, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.hsluv(photon_image.ptr, ptr0, len0, amt);\n}\n\n/**\n* Image manipulation effects in the LCh colour space\n*\n* Effects include:\n* * **saturate** - Saturation increase.\n* * **desaturate** - Desaturate the image.\n* * **shift_hue** - Hue rotation by a specified number of degrees.\n* * **darken** - Decrease the brightness.\n* * **lighten** - Increase the brightness.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n* * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n* # Example\n* ```no_run\n* // For example to increase the saturation by 10%:\n* use photon_rs::colour_spaces::lch;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lch(&mut img, \"saturate\", 0.1_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {string} mode\n* @param {number} amt\n*/\nfunction lch(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = passStringToWasm0(mode, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.lch(photon_image.ptr, ptr0, len0, amt);\n}\n\n/**\n* Image manipulation effects in the HSL colour space.\n*\n* Effects include:\n* * **saturate** - Saturation increase.\n* * **desaturate** - Desaturate the image.\n* * **shift_hue** - Hue rotation by a specified number of degrees.\n* * **darken** - Decrease the brightness.\n* * **lighten** - Increase the brightness.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n* * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n* # Example\n* ```no_run\n* // For example to increase the saturation by 10%:\n* use photon_rs::colour_spaces::hsl;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hsl(&mut img, \"saturate\", 0.1_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {string} mode\n* @param {number} amt\n*/\nfunction hsl(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = passStringToWasm0(mode, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.hsl(photon_image.ptr, ptr0, len0, amt);\n}\n\n/**\n* Image manipulation in the HSV colour space.\n*\n* Effects include:\n* * **saturate** - Saturation increase.\n* * **desaturate** - Desaturate the image.\n* * **shift_hue** - Hue rotation by a specified number of degrees.\n* * **darken** - Decrease the brightness.\n* * **lighten** - Increase the brightness.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `mode` - The effect desired to be applied. Choose from: `saturate`, `desaturate`, `shift_hue`, `darken`, `lighten`\n* * `amt` - A float value from 0 to 1 which represents the amount the effect should be increased by.\n*\n* # Example\n* ```no_run\n* // For example to increase the saturation by 10%:\n* use photon_rs::colour_spaces::hsv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hsv(&mut img, \"saturate\", 0.1_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {string} mode\n* @param {number} amt\n*/\nfunction hsv(photon_image, mode, amt) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = passStringToWasm0(mode, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.hsv(photon_image.ptr, ptr0, len0, amt);\n}\n\n/**\n* Shift hue by a specified number of degrees in the HSL colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n*\n* # Example\n* ```no_run\n* // For example to hue rotate/shift the hue by 120 degrees in the HSL colour space:\n* use photon_rs::colour_spaces::hue_rotate_hsl;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hue_rotate_hsl(&mut img, 120_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} degrees\n*/\nfunction hue_rotate_hsl(img, degrees) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.hue_rotate_hsl(img.ptr, degrees);\n}\n\n/**\n* Shift hue by a specified number of degrees in the HSV colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n*\n* # Example\n* ```no_run\n* // For example to hue rotate/shift the hue by 120 degrees in the HSV colour space:\n* use photon_rs::colour_spaces::hue_rotate_hsv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hue_rotate_hsv(&mut img, 120_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} degrees\n*/\nfunction hue_rotate_hsv(img, degrees) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.hue_rotate_hsv(img.ptr, degrees);\n}\n\n/**\n* Shift hue by a specified number of degrees in the LCh colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n*\n* # Example\n* ```no_run\n* // For example to hue rotate/shift the hue by 120 degrees in the HSL colour space:\n* use photon_rs::colour_spaces::hue_rotate_lch;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hue_rotate_lch(&mut img, 120_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} degrees\n*/\nfunction hue_rotate_lch(img, degrees) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.hue_rotate_lch(img.ptr, degrees);\n}\n\n/**\n* Shift hue by a specified number of degrees in the HSLuv colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `mode` - A float value from 0 to 1 which is the amount to shift the hue by, or hue rotate by.\n*\n* # Example\n* ```no_run\n* // For example to hue rotate/shift the hue by 120 degrees in the HSL colour space:\n* use photon_rs::colour_spaces::hue_rotate_hsluv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* hue_rotate_hsluv(&mut img, 120_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} degrees\n*/\nfunction hue_rotate_hsluv(img, degrees) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.hue_rotate_hsluv(img.ptr, degrees);\n}\n\n/**\n* Increase the image's saturation by converting each pixel's colour to the HSL colour space\n* and increasing the colour's saturation.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to increase the saturation by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Increasing saturation by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to increase saturation by 10% in the HSL colour space:\n* use photon_rs::colour_spaces::saturate_hsl;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* saturate_hsl(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction saturate_hsl(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.saturate_hsl(img.ptr, level);\n}\n\n/**\n* Increase the image's saturation in the LCh colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to increase the saturation by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Increasing saturation by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to increase saturation by 40% in the Lch colour space:\n* use photon_rs::colour_spaces::saturate_lch;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* saturate_lch(&mut img, 0.4_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction saturate_lch(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.saturate_lch(img.ptr, level);\n}\n\n/**\n* Increase the image's saturation in the HSLuv colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to increase the saturation by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Increasing saturation by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to increase saturation by 40% in the HSLuv colour space:\n* use photon_rs::colour_spaces::saturate_hsluv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* saturate_hsluv(&mut img, 0.4_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction saturate_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.saturate_hsluv(img.ptr, level);\n}\n\n/**\n* Increase the image's saturation in the HSV colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level by which to increase the saturation by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Increasing saturation by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to increase saturation by 30% in the HSV colour space:\n* use photon_rs::colour_spaces::saturate_hsv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* saturate_hsv(&mut img, 0.3_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction saturate_hsv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.saturate_hsv(img.ptr, level);\n}\n\n/**\n* Lighten an image by a specified amount in the LCh colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Lightening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to lighten an image by 10% in the LCh colour space:\n* use photon_rs::colour_spaces::lighten_lch;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lighten_lch(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction lighten_lch(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.lighten_lch(img.ptr, level);\n}\n\n/**\n* Lighten an image by a specified amount in the HSLuv colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Lightening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to lighten an image by 10% in the HSLuv colour space:\n* use photon_rs::colour_spaces::lighten_hsluv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lighten_hsluv(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction lighten_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.lighten_hsluv(img.ptr, level);\n}\n\n/**\n* Lighten an image by a specified amount in the HSL colour space.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Lightening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to lighten an image by 10% in the HSL colour space:\n* use photon_rs::colour_spaces::lighten_hsl;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lighten_hsl(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction lighten_hsl(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.lighten_hsl(img.ptr, level);\n}\n\n/**\n* Lighten an image by a specified amount in the HSV colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to lighten the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Lightening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to lighten an image by 10% in the HSV colour space:\n* use photon_rs::colour_spaces::lighten_hsv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* lighten_hsv(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction lighten_hsv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.lighten_hsv(img.ptr, level);\n}\n\n/**\n* Darken the image by a specified amount in the LCh colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Darkening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to darken an image by 10% in the LCh colour space:\n* use photon_rs::colour_spaces::darken_lch;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* darken_lch(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction darken_lch(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.darken_lch(img.ptr, level);\n}\n\n/**\n* Darken the image by a specified amount in the HSLuv colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Darkening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to darken an image by 10% in the HSLuv colour space:\n* use photon_rs::colour_spaces::darken_hsluv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* darken_hsluv(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction darken_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.darken_hsluv(img.ptr, level);\n}\n\n/**\n* Darken the image by a specified amount in the HSL colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Darkening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to darken an image by 10% in the HSL colour space:\n* use photon_rs::colour_spaces::darken_hsl;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* darken_hsl(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction darken_hsl(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.darken_hsl(img.ptr, level);\n}\n\n/**\n* Darken the image's colours by a specified amount in the HSV colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to darken the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Darkening by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to darken an image by 10% in the HSV colour space:\n* use photon_rs::colour_spaces::darken_hsv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* darken_hsv(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction darken_hsv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.darken_hsv(img.ptr, level);\n}\n\n/**\n* Desaturate the image by a specified amount in the HSV colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Desaturating by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to desaturate an image by 10% in the HSV colour space:\n* use photon_rs::colour_spaces::desaturate_hsv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* desaturate_hsv(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction desaturate_hsv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.desaturate_hsv(img.ptr, level);\n}\n\n/**\n* Desaturate the image by a specified amount in the HSL colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Desaturating by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to desaturate an image by 10% in the LCh colour space:\n* use photon_rs::colour_spaces::desaturate_hsl;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* desaturate_hsl(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction desaturate_hsl(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.desaturate_hsl(img.ptr, level);\n}\n\n/**\n* Desaturate the image by a specified amount in the LCh colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Desaturating by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to desaturate an image by 10% in the LCh colour space:\n* use photon_rs::colour_spaces::desaturate_lch;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* desaturate_lch(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction desaturate_lch(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.desaturate_lch(img.ptr, level);\n}\n\n/**\n* Desaturate the image by a specified amount in the HSLuv colour space.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `level` - Float value from 0 to 1 representing the level to which to desaturate the image by.\n* The `level` must be from 0 to 1 in floating-point, `f32` format.\n* Desaturating by 80% would be represented by a `level` of 0.8\n*\n* # Example\n* ```no_run\n* // For example to desaturate an image by 10% in the HSLuv colour space:\n* use photon_rs::colour_spaces::desaturate_hsluv;\n* use photon_rs::native::open_image;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* desaturate_hsluv(&mut img, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {number} level\n*/\nfunction desaturate_hsluv(img, level) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.desaturate_hsluv(img.ptr, level);\n}\n\n/**\n* Mix image with a single color, supporting passing `opacity`.\n* The algorithm comes from Jimp. See `function mix` and `function colorFn` at following link:\n* https://github.com/oliver-moran/jimp/blob/29679faa597228ff2f20d34c5758e4d2257065a3/packages/plugin-color/src/index.js\n* Specifically, result_value = (mix_color_value - origin_value) * opacity + origin_value =\n* mix_color_value * opacity + (1 - opacity) * origin_value for each\n* of RGB channel.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage that contains a view into the image.\n* * `mix_color` - the color to be mixed in, as an RGB value.\n* * `opacity` - the opacity of color when mixed to image. Float value from 0 to 1.\n* # Example\n*\n* ```no_run\n* // For example, to mix an image with rgb (50, 255, 254) and opacity 0.4:\n* use photon_rs::Rgb;\n* use photon_rs::colour_spaces::mix_with_colour;\n* use photon_rs::native::open_image;\n*\n* let mix_colour = Rgb::new(50_u8, 255_u8, 254_u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* mix_with_colour(&mut img, mix_colour, 0.4_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {Rgb} mix_colour\n* @param {number} opacity\n*/\nfunction mix_with_colour(photon_image, mix_colour, opacity) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(mix_colour, Rgb);\n if (mix_colour.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = mix_colour.ptr;\n mix_colour.ptr = 0;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.mix_with_colour(photon_image.ptr, ptr0, opacity);\n}\n\n/**\n* Alter a select channel by incrementing or decrementing its value by a constant.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `channel` - The channel you wish to alter, it should be either 0, 1 or 2,\n* representing R, G, or B respectively. (O=Red, 1=Green, 2=Blue)\n* * `amount` - The amount to increment/decrement the channel's value by for that pixel.\n* A positive value will increment/decrement the channel's value, a negative value will decrement the channel's value.\n*\n* ## Example\n*\n* ```no_run\n* // For example, to increase the Red channel for all pixels by 10:\n* use photon_rs::channels::alter_channel;\n* use photon_rs::native::{open_image};\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_channel(&mut img, 0_usize, 10_i16);\n* ```\n*\n* Adds a constant to a select R, G, or B channel's value.\n*\n* ### Decrease a channel's value\n* // For example, to decrease the Green channel for all pixels by 20:\n* ```no_run\n* use photon_rs::channels::alter_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_channel(&mut img, 1_usize, -20_i16);\n* ```\n* **Note**: Note the use of a minus symbol when decreasing the channel.\n* @param {PhotonImage} img\n* @param {number} channel\n* @param {number} amt\n*/\nfunction alter_channel(img, channel, amt) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(channel);\n _assertNum(amt);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.alter_channel(img.ptr, channel, amt);\n}\n\n/**\n* Increment or decrement every pixel's Red channel by a constant.\n*\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `amt` - The amount to increment or decrement the channel's value by for that pixel.\n*\n* # Example\n*\n* ```no_run\n* // For example, to increase the Red channel for all pixels by 10:\n* use photon_rs::channels::alter_red_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_red_channel(&mut img, 10_i16);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} amt\n*/\nfunction alter_red_channel(photon_image, amt) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(amt);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.alter_red_channel(photon_image.ptr, amt);\n}\n\n/**\n* Increment or decrement every pixel's Green channel by a constant.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `amt` - The amount to increment/decrement the channel's value by for that pixel.\n*\n* # Example\n*\n* ```no_run\n* // For example, to increase the Green channel for all pixels by 20:\n* use photon_rs::channels::alter_green_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_green_channel(&mut img, 20_i16);\n* ```\n* @param {PhotonImage} img\n* @param {number} amt\n*/\nfunction alter_green_channel(img, amt) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(amt);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.alter_green_channel(img.ptr, amt);\n}\n\n/**\n* Increment or decrement every pixel's Blue channel by a constant.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `amt` - The amount to increment or decrement the channel's value by for that pixel.\n*\n* # Example\n*\n* ```no_run\n* // For example, to increase the Blue channel for all pixels by 10:\n* use photon_rs::channels::alter_blue_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_blue_channel(&mut img, 10_i16);\n* ```\n* @param {PhotonImage} img\n* @param {number} amt\n*/\nfunction alter_blue_channel(img, amt) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(amt);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.alter_blue_channel(img.ptr, amt);\n}\n\n/**\n* Increment/decrement two channels' values simultaneously by adding an amt to each channel per pixel.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `channel1` - A usize from 0 to 2 that represents either the R, G or B channels.\n* * `amt1` - The amount to increment/decrement the channel's value by for that pixel.\n* * `channel2` -A usize from 0 to 2 that represents either the R, G or B channels.\n* * `amt2` - The amount to increment/decrement the channel's value by for that pixel.\n*\n* # Example\n*\n* ```no_run\n* // For example, to increase the values of the Red and Blue channels per pixel:\n* use photon_rs::channels::alter_two_channels;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_two_channels(&mut img, 0_usize, 10_i16, 2_usize, 20_i16);\n* ```\n* @param {PhotonImage} img\n* @param {number} channel1\n* @param {number} amt1\n* @param {number} channel2\n* @param {number} amt2\n*/\nfunction alter_two_channels(img, channel1, amt1, channel2, amt2) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(channel1);\n _assertNum(amt1);\n _assertNum(channel2);\n _assertNum(amt2);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.alter_two_channels(img.ptr, channel1, amt1, channel2, amt2);\n}\n\n/**\n* Increment all 3 channels' values by adding an amt to each channel per pixel.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `r_amt` - The amount to increment/decrement the Red channel by.\n* * `g_amt` - The amount to increment/decrement the Green channel by.\n* * `b_amt` - The amount to increment/decrement the Blue channel by.\n*\n* # Example\n*\n* ```no_run\n* // For example, to increase the values of the Red channel by 10, the Green channel by 20,\n* // and the Blue channel by 50:\n* use photon_rs::channels::alter_channels;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* alter_channels(&mut img, 10_i16, 20_i16, 50_i16);\n* ```\n* @param {PhotonImage} img\n* @param {number} r_amt\n* @param {number} g_amt\n* @param {number} b_amt\n*/\nfunction alter_channels(img, r_amt, g_amt, b_amt) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(r_amt);\n _assertNum(g_amt);\n _assertNum(b_amt);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.alter_channels(img.ptr, r_amt, g_amt, b_amt);\n}\n\n/**\n* Set a certain channel to zero, thus removing the channel's influence in the pixels' final rendered colour.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `channel` - The channel to be removed; must be a usize from 0 to 2, with 0 representing Red, 1 representing Green, and 2 representing Blue.\n* * `min_filter` - Minimum filter. Value between 0 and 255. Only remove the channel if the current pixel's channel value is less than this minimum filter. To completely\n* remove the channel, set this value to 255, to leave the channel as is, set to 0, and to set a channel to zero for a pixel whose red value is greater than 50,\n* then channel would be 0 and min_filter would be 50.\n*\n* # Example\n*\n* ```no_run\n* // For example, to remove the Red channel with a min_filter of 100:\n* use photon_rs::channels::remove_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* remove_channel(&mut img, 0_usize, 100_u8);\n* ```\n* @param {PhotonImage} img\n* @param {number} channel\n* @param {number} min_filter\n*/\nfunction remove_channel(img, channel, min_filter) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(channel);\n _assertNum(min_filter);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.remove_channel(img.ptr, channel, min_filter);\n}\n\n/**\n* Remove the Red channel's influence in an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `min_filter` - Only remove the channel if the current pixel's channel value is less than this minimum filter.\n*\n* # Example\n*\n* ```no_run\n* // For example, to remove the red channel for red channel pixel values less than 50:\n* use photon_rs::channels::remove_red_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* remove_red_channel(&mut img, 50_u8);\n* ```\n* @param {PhotonImage} img\n* @param {number} min_filter\n*/\nfunction remove_red_channel(img, min_filter) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(min_filter);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.remove_red_channel(img.ptr, min_filter);\n}\n\n/**\n* Remove the Green channel's influence in an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `min_filter` - Only remove the channel if the current pixel's channel value is less than this minimum filter.\n*\n* # Example\n*\n* ```no_run\n* // For example, to remove the green channel for green channel pixel values less than 50:\n* use photon_rs::channels::remove_green_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* remove_green_channel(&mut img, 50_u8);\n* ```\n* @param {PhotonImage} img\n* @param {number} min_filter\n*/\nfunction remove_green_channel(img, min_filter) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(min_filter);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.remove_green_channel(img.ptr, min_filter);\n}\n\n/**\n* Remove the Blue channel's influence in an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `min_filter` - Only remove the channel if the current pixel's channel value is less than this minimum filter.\n*\n* # Example\n*\n* ```no_run\n* // For example, to remove the blue channel for blue channel pixel values less than 50:\n* use photon_rs::channels::remove_blue_channel;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* remove_blue_channel(&mut img, 50_u8);\n* ```\n* @param {PhotonImage} img\n* @param {number} min_filter\n*/\nfunction remove_blue_channel(img, min_filter) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(min_filter);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.remove_blue_channel(img.ptr, min_filter);\n}\n\n/**\n* Swap two channels.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `channel1` - An index from 0 to 2, representing the Red, Green or Blue channels respectively. Red would be represented by 0, Green by 1, and Blue by 2.\n* * `channel2` - An index from 0 to 2, representing the Red, Green or Blue channels respectively. Same as above.\n*\n* # Example\n*\n* ```no_run\n* // For example, to swap the values of the Red channel with the values of the Blue channel:\n* use photon_rs::channels::swap_channels;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* swap_channels(&mut img, 0_usize, 2_usize);\n* ```\n* @param {PhotonImage} img\n* @param {number} channel1\n* @param {number} channel2\n*/\nfunction swap_channels(img, channel1, channel2) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(channel1);\n _assertNum(channel2);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.swap_channels(img.ptr, channel1, channel2);\n}\n\n/**\n* Invert RGB value of an image.\n*\n* # Arguments\n* * `photon_image` - A DynamicImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* use photon_rs::channels::invert;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* invert(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction invert(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.invert(photon_image.ptr);\n}\n\n/**\n* Selective hue rotation.\n*\n* Only rotate the hue of a pixel if its RGB values are within a specified range.\n* This function only rotates a pixel's hue to another if it is visually similar to the colour specified.\n* For example, if a user wishes all pixels that are blue to be changed to red, they can selectively specify only the blue pixels to be changed.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `ref_color` - The `RGB` value of the reference color (to be compared to)\n* * `degrees` - The amount of degrees to hue rotate by.\n*\n* # Example\n*\n* ```no_run\n* // For example, to only rotate the pixels that are of RGB value RGB{20, 40, 60}:\n* use photon_rs::Rgb;\n* use photon_rs::channels::selective_hue_rotate;\n* use photon_rs::native::open_image;\n*\n* let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* selective_hue_rotate(&mut img, ref_color, 180_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {Rgb} ref_color\n* @param {number} degrees\n*/\nfunction selective_hue_rotate(photon_image, ref_color, degrees) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(ref_color, Rgb);\n if (ref_color.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = ref_color.ptr;\n ref_color.ptr = 0;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.selective_hue_rotate(photon_image.ptr, ptr0, degrees);\n}\n\n/**\n* Selectively change pixel colours which are similar to the reference colour provided.\n*\n* Similarity between two colours is calculated via the CIE76 formula.\n* Only changes the color of a pixel if its similarity to the reference colour is within the range in the algorithm.\n* For example, with this function, a user can change the color of all blue pixels by mixing them with red by 10%.\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `ref_color` - The `RGB` value of the reference color (to be compared to)\n* * `new_color` - The `RGB` value of the new color (to be mixed with the matched pixels)\n* * `fraction` - The amount of mixing the new colour with the matched pixels\n*\n* # Example\n*\n* ```no_run\n* // For example, to only change the color of pixels that are similar to the RGB value RGB{200, 120, 30} by mixing RGB{30, 120, 200} with 25%:\n* use photon_rs::Rgb;\n* use photon_rs::channels::selective_color_convert;\n* use photon_rs::native::open_image;\n*\n* let ref_color = Rgb::new(200, 120, 30);\n* let new_color = Rgb::new(30, 120, 200);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* selective_color_convert(&mut img, ref_color, new_color, 0.25);\n* ```\n* @param {PhotonImage} photon_image\n* @param {Rgb} ref_color\n* @param {Rgb} new_color\n* @param {number} fraction\n*/\nfunction selective_color_convert(photon_image, ref_color, new_color, fraction) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(ref_color, Rgb);\n if (ref_color.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = ref_color.ptr;\n ref_color.ptr = 0;\n _assertClass(new_color, Rgb);\n if (new_color.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr1 = new_color.ptr;\n new_color.ptr = 0;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.selective_color_convert(photon_image.ptr, ptr0, ptr1, fraction);\n}\n\n/**\n* Selectively lighten an image.\n*\n* Only lighten the hue of a pixel if its colour matches or is similar to the RGB colour specified.\n* For example, if a user wishes all pixels that are blue to be lightened, they can selectively specify only the blue pixels to be changed.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `ref_color` - The `RGB` value of the reference color (to be compared to)\n* * `amt` - The level from 0 to 1 to lighten the hue by. Increasing by 10% would have an `amt` of 0.1\n*\n* # Example\n*\n* ```no_run\n* // For example, to only lighten the pixels that are of or similar to RGB value RGB{20, 40, 60}:\n* use photon_rs::Rgb;\n* use photon_rs::channels::selective_lighten;\n* use photon_rs::native::open_image;\n*\n* let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* selective_lighten(&mut img, ref_color, 0.2_f32);\n* ```\n* @param {PhotonImage} img\n* @param {Rgb} ref_color\n* @param {number} amt\n*/\nfunction selective_lighten(img, ref_color, amt) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(ref_color, Rgb);\n if (ref_color.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = ref_color.ptr;\n ref_color.ptr = 0;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.selective_lighten(img.ptr, ptr0, amt);\n}\n\n/**\n* Selectively desaturate pixel colours which are similar to the reference colour provided.\n*\n* Similarity between two colours is calculated via the CIE76 formula.\n* Only desaturates the hue of a pixel if its similarity to the reference colour is within the range in the algorithm.\n* For example, if a user wishes all pixels that are blue to be desaturated by 0.1, they can selectively specify only the blue pixels to be changed.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `ref_color` - The `RGB` value of the reference color (to be compared to)\n* * `amt` - The amount of desaturate the colour by.\n*\n* # Example\n*\n* ```no_run\n* // For example, to only desaturate the pixels that are similar to the RGB value RGB{20, 40, 60}:\n* use photon_rs::Rgb;\n* use photon_rs::channels::selective_desaturate;\n* use photon_rs::native::open_image;\n*\n* let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* selective_desaturate(&mut img, ref_color, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {Rgb} ref_color\n* @param {number} amt\n*/\nfunction selective_desaturate(img, ref_color, amt) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(ref_color, Rgb);\n if (ref_color.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = ref_color.ptr;\n ref_color.ptr = 0;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.selective_desaturate(img.ptr, ptr0, amt);\n}\n\n/**\n* Selectively saturate pixel colours which are similar to the reference colour provided.\n*\n* Similarity between two colours is calculated via the CIE76 formula.\n* Only saturates the hue of a pixel if its similarity to the reference colour is within the range in the algorithm.\n* For example, if a user wishes all pixels that are blue to have an increase in saturation by 10%, they can selectively specify only the blue pixels to be changed.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `ref_color` - The `RGB` value of the reference color (to be compared to)\n* * `amt` - The amount of saturate the colour by.\n*\n* # Example\n*\n* ```no_run\n* // For example, to only increase the saturation of pixels that are similar to the RGB value RGB{20, 40, 60}:\n* use photon_rs::Rgb;\n* use photon_rs::channels::selective_saturate;\n* use photon_rs::native::open_image;\n*\n* let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* selective_saturate(&mut img, ref_color, 0.1_f32);\n* ```\n* @param {PhotonImage} img\n* @param {Rgb} ref_color\n* @param {number} amt\n*/\nfunction selective_saturate(img, ref_color, amt) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(ref_color, Rgb);\n if (ref_color.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = ref_color.ptr;\n ref_color.ptr = 0;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.selective_saturate(img.ptr, ptr0, amt);\n}\n\n/**\n* Selectively changes a pixel to greyscale if it is *not* visually similar or close to the colour specified.\n* Only changes the colour of a pixel if its RGB values are within a specified range.\n*\n* (Similarity between two colours is calculated via the CIE76 formula.)\n* For example, if a user wishes all pixels that are *NOT* blue to be displayed in greyscale, they can selectively specify only the blue pixels to be\n* kept in the photo.\n* # Arguments\n* * `img` - A PhotonImage.\n* * `ref_color` - The `RGB` value of the reference color (to be compared to)\n*\n* # Example\n*\n* ```no_run\n* // For example, to greyscale all pixels that are *not* visually similar to the RGB colour RGB{20, 40, 60}:\n* use photon_rs::Rgb;\n* use photon_rs::channels::selective_greyscale;\n* use photon_rs::native::open_image;\n*\n* let ref_color = Rgb::new(20_u8, 40_u8, 60_u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* selective_greyscale(img, ref_color);\n* ```\n* @param {PhotonImage} photon_image\n* @param {Rgb} ref_color\n*/\nfunction selective_greyscale(photon_image, ref_color) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = photon_image.ptr;\n photon_image.ptr = 0;\n _assertClass(ref_color, Rgb);\n if (ref_color.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr1 = ref_color.ptr;\n ref_color.ptr = 0;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.selective_greyscale(ptr0, ptr1);\n}\n\n/**\n* Add bordered-text to an image.\n* The only font available as of now is Roboto.\n* Note: A graphic design/text-drawing library is currently being developed, so stay tuned.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `text` - Text string to be drawn to the image.\n* * `x` - x-coordinate of where first letter's 1st pixel should be drawn.\n* * `y` - y-coordinate of where first letter's 1st pixel should be drawn.\n*\n* # Example\n*\n* ```no_run\n* // For example to draw the string \"Welcome to Photon!\" at 10, 10:\n* use photon_rs::native::open_image;\n* use photon_rs::text::draw_text_with_border;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* draw_text_with_border(&mut img, \"Welcome to Photon!\", 10_u32, 10_u32);\n* ```\n* @param {PhotonImage} photon_img\n* @param {string} text\n* @param {number} x\n* @param {number} y\n*/\nfunction draw_text_with_border(photon_img, text, x, y) {\n _assertClass(photon_img, PhotonImage);\n if (photon_img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = passStringToWasm0(text, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n _assertNum(x);\n _assertNum(y);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.draw_text_with_border(photon_img.ptr, ptr0, len0, x, y);\n}\n\n/**\n* Add text to an image.\n* The only font available as of now is Roboto.\n* Note: A graphic design/text-drawing library is currently being developed, so stay tuned.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage.\n* * `text` - Text string to be drawn to the image.\n* * `x` - x-coordinate of where first letter's 1st pixel should be drawn.\n* * `y` - y-coordinate of where first letter's 1st pixel should be drawn.\n*\n* # Example\n*\n* ```no_run\n* // For example to draw the string \"Welcome to Photon!\" at 10, 10:\n* use photon_rs::native::open_image;\n* use photon_rs::text::draw_text;\n*\n* // Open the image. A PhotonImage is returned.\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* draw_text(&mut img, \"Welcome to Photon!\", 10_u32, 10_u32);\n* ```\n* @param {PhotonImage} photon_img\n* @param {string} text\n* @param {number} x\n* @param {number} y\n*/\nfunction draw_text(photon_img, text, x, y) {\n _assertClass(photon_img, PhotonImage);\n if (photon_img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = passStringToWasm0(text, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n _assertNum(x);\n _assertNum(y);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.draw_text(photon_img.ptr, ptr0, len0, x, y);\n}\n\n/**\n* Crop an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to crop an image at (0, 0) to (500, 800)\n* use photon_rs::native::{open_image};\n* use photon_rs::transform::crop;\n* use photon_rs::PhotonImage;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let cropped_img: PhotonImage = crop(&mut img, 0_u32, 0_u32, 500_u32, 800_u32);\n* // Write the contents of this image in JPG format.\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} x1\n* @param {number} y1\n* @param {number} x2\n* @param {number} y2\n* @returns {PhotonImage}\n*/\nfunction crop(photon_image, x1, y1, x2, y2) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(x1);\n _assertNum(y1);\n _assertNum(x2);\n _assertNum(y2);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.crop(photon_image.ptr, x1, y1, x2, y2);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* @param {HTMLCanvasElement} source_canvas\n* @param {number} width\n* @param {number} height\n* @param {number} left\n* @param {number} top\n* @returns {HTMLCanvasElement}\n*/\nfunction crop_img_browser(source_canvas, width, height, left, top) {\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.crop_img_browser(addHeapObject(source_canvas), width, height, left, top);\n return takeObject(ret);\n}\n\n/**\n* Flip an image horizontally.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to flip an image horizontally:\n* use photon_rs::native::open_image;\n* use photon_rs::transform::fliph;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* fliph(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction fliph(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.fliph(photon_image.ptr);\n}\n\n/**\n* Flip an image vertically.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to flip an image vertically:\n* use photon_rs::native::open_image;\n* use photon_rs::transform::flipv;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* flipv(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction flipv(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.flipv(photon_image.ptr);\n}\n\n/**\n* Resize an image on the web.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `width` - New width.\n* * `height` - New height.\n* * `sampling_filter` - Nearest = 1, Triangle = 2, CatmullRom = 3, Gaussian = 4, Lanczos3 = 5\n* @param {PhotonImage} photon_img\n* @param {number} width\n* @param {number} height\n* @param {number} sampling_filter\n* @returns {HTMLCanvasElement}\n*/\nfunction resize_img_browser(photon_img, width, height, sampling_filter) {\n _assertClass(photon_img, PhotonImage);\n if (photon_img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(width);\n _assertNum(height);\n _assertNum(sampling_filter);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.resize_img_browser(photon_img.ptr, width, height, sampling_filter);\n return takeObject(ret);\n}\n\n/**\n* Resize an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `width` - New width.\n* * `height` - New height.\n* * `sampling_filter` - Nearest = 1, Triangle = 2, CatmullRom = 3, Gaussian = 4, Lanczos3 = 5\n* @param {PhotonImage} photon_img\n* @param {number} width\n* @param {number} height\n* @param {number} sampling_filter\n* @returns {PhotonImage}\n*/\nfunction resize(photon_img, width, height, sampling_filter) {\n _assertClass(photon_img, PhotonImage);\n if (photon_img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(width);\n _assertNum(height);\n _assertNum(sampling_filter);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.resize(photon_img.ptr, width, height, sampling_filter);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Resize image using seam carver.\n* Resize only if new dimensions are smaller, than original image.\n* # NOTE: This is still experimental feature, and pretty slow.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n* * `width` - New width.\n* * `height` - New height.\n*\n* # Example\n*\n* ```no_run\n* // For example, resize image using seam carver:\n* use photon_rs::native::open_image;\n* use photon_rs::transform::seam_carve;\n* use photon_rs::PhotonImage;\n*\n* let img = open_image(\"img.jpg\").expect(\"File should open\");\n* let result: PhotonImage = seam_carve(&img, 100_u32, 100_u32);\n* ```\n* @param {PhotonImage} img\n* @param {number} width\n* @param {number} height\n* @returns {PhotonImage}\n*/\nfunction seam_carve(img, width, height) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(width);\n _assertNum(height);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.seam_carve(img.ptr, width, height);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Apply uniform padding around the PhotonImage\n* A padded PhotonImage is returned.\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `padding` - The amount of padding to be applied to the PhotonImage.\n* * `padding_rgba` - Tuple containing the RGBA code for padding color.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a padding of 10 pixels around a PhotonImage:\n* use photon_rs::transform::padding_uniform;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgba;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n* padding_uniform(&img, 10_u32, rgba);\n* ```\n* @param {PhotonImage} img\n* @param {number} padding\n* @param {Rgba} padding_rgba\n* @returns {PhotonImage}\n*/\nfunction padding_uniform(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(padding);\n _assertClass(padding_rgba, Rgba);\n if (padding_rgba.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = padding_rgba.ptr;\n padding_rgba.ptr = 0;\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.padding_uniform(img.ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Apply padding on the left side of the PhotonImage\n* A padded PhotonImage is returned.\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `padding` - The amount of padding to be applied to the PhotonImage.\n* * `padding_rgba` - Tuple containing the RGBA code for padding color.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a padding of 10 pixels on the left side of a PhotonImage:\n* use photon_rs::transform::padding_left;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgba;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n* padding_left(&img, 10_u32, rgba);\n* ```\n* @param {PhotonImage} img\n* @param {number} padding\n* @param {Rgba} padding_rgba\n* @returns {PhotonImage}\n*/\nfunction padding_left(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(padding);\n _assertClass(padding_rgba, Rgba);\n if (padding_rgba.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = padding_rgba.ptr;\n padding_rgba.ptr = 0;\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.padding_left(img.ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Apply padding on the left side of the PhotonImage\n* A padded PhotonImage is returned.\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `padding` - The amount of padding to be applied to the PhotonImage.\n* * `padding_rgba` - Tuple containing the RGBA code for padding color.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a padding of 10 pixels on the right side of a PhotonImage:\n* use photon_rs::transform::padding_right;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgba;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n* padding_right(&img, 10_u32, rgba);\n* ```\n* @param {PhotonImage} img\n* @param {number} padding\n* @param {Rgba} padding_rgba\n* @returns {PhotonImage}\n*/\nfunction padding_right(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(padding);\n _assertClass(padding_rgba, Rgba);\n if (padding_rgba.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = padding_rgba.ptr;\n padding_rgba.ptr = 0;\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.padding_right(img.ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Apply padding on the left side of the PhotonImage\n* A padded PhotonImage is returned.\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `padding` - The amount of padding to be applied to the PhotonImage.\n* * `padding_rgba` - Tuple containing the RGBA code for padding color.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a padding of 10 pixels on the top of a PhotonImage:\n* use photon_rs::transform::padding_top;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgba;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n* padding_top(&img, 10_u32, rgba);\n* ```\n* @param {PhotonImage} img\n* @param {number} padding\n* @param {Rgba} padding_rgba\n* @returns {PhotonImage}\n*/\nfunction padding_top(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(padding);\n _assertClass(padding_rgba, Rgba);\n if (padding_rgba.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = padding_rgba.ptr;\n padding_rgba.ptr = 0;\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.padding_top(img.ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Apply padding on the left side of the PhotonImage\n* A padded PhotonImage is returned.\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `padding` - The amount of padding to be applied to the PhotonImage.\n* * `padding_rgba` - Tuple containing the RGBA code for padding color.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a padding of 10 pixels on the bottom of a PhotonImage:\n* use photon_rs::transform::padding_bottom;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgba;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rgba = Rgba::new(200_u8, 100_u8, 150_u8, 255_u8);\n* padding_bottom(&img, 10_u32, rgba);\n* ```\n* @param {PhotonImage} img\n* @param {number} padding\n* @param {Rgba} padding_rgba\n* @returns {PhotonImage}\n*/\nfunction padding_bottom(img, padding, padding_rgba) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(padding);\n _assertClass(padding_rgba, Rgba);\n if (padding_rgba.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = padding_rgba.ptr;\n padding_rgba.ptr = 0;\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.padding_bottom(img.ptr, padding, ptr0);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Rotate the PhotonImage on an arbitrary angle\n* A rotated PhotonImage is returned.\n* # NOTE: This is a naive implementation. Paeth rotation should be faster.\n*\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `angle` - Rotation angle in degrees.\n*\n* # Example\n*\n* ```no_run\n* // For example, to rotate a PhotonImage by 30 degrees:\n* use photon_rs::native::open_image;\n* use photon_rs::transform::rotate;\n*\n* let img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rotated_img = rotate(&img, 30);\n* ```\n* @param {PhotonImage} img\n* @param {number} angle\n* @returns {PhotonImage}\n*/\nfunction rotate(img, angle) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(angle);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rotate(img.ptr, angle);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Resample the PhotonImage.\n*\n* # Arguments\n* * `img` - A PhotonImage. See the PhotonImage struct for details.\n* * `dst_width` - Target width.\n* * `dst_height` - Target height.\n*\n* # Example\n*\n* ```no_run\n* // For example, to resample a PhotonImage to 1920x1080 size:\n* use photon_rs::native::open_image;\n* use photon_rs::transform::resample;\n*\n* let img = open_image(\"img.jpg\").expect(\"File should open\");\n* let rotated_img = resample(&img, 1920, 1080);\n* ```\n* @param {PhotonImage} img\n* @param {number} dst_width\n* @param {number} dst_height\n* @returns {PhotonImage}\n*/\nfunction resample(img, dst_width, dst_height) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(dst_width);\n _assertNum(dst_height);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.resample(img.ptr, dst_width, dst_height);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Adds an offset to the image by a certain number of pixels.\n*\n* This creates an RGB shift effect.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `channel_index`: The index of the channel to increment. 0 for red, 1 for green and 2 for blue.\n* * `offset` - The offset is added to the pixels in the image.\n* # Example\n*\n* ```no_run\n* // For example, to offset pixels by 30 pixels on the red channel:\n* use photon_rs::effects::offset;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* offset(&mut img, 0_usize, 30_u32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} channel_index\n* @param {number} offset\n*/\nfunction offset(photon_image, channel_index, offset) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(channel_index);\n _assertNum(offset);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.offset(photon_image.ptr, channel_index, offset);\n}\n\n/**\n* Adds an offset to the red channel by a certain number of pixels.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `offset` - The offset you want to move the red channel by.\n* # Example\n*\n* ```no_run\n* // For example, to add an offset to the red channel by 30 pixels.\n* use photon_rs::effects::offset_red;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* offset_red(&mut img, 30_u32);\n* ```\n* @param {PhotonImage} img\n* @param {number} offset_amt\n*/\nfunction offset_red(img, offset_amt) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(offset_amt);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.offset_red(img.ptr, offset_amt);\n}\n\n/**\n* Adds an offset to the green channel by a certain number of pixels.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `offset` - The offset you want to move the green channel by.\n* # Example\n*\n* ```no_run\n* // For example, to add an offset to the green channel by 30 pixels.\n* use photon_rs::effects::offset_green;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* offset_green(&mut img, 30_u32);\n* ```\n* @param {PhotonImage} img\n* @param {number} offset_amt\n*/\nfunction offset_green(img, offset_amt) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(offset_amt);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.offset_green(img.ptr, offset_amt);\n}\n\n/**\n* Adds an offset to the blue channel by a certain number of pixels.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `offset_amt` - The offset you want to move the blue channel by.\n* # Example\n* // For example, to add an offset to the green channel by 40 pixels.\n*\n* ```no_run\n* use photon_rs::effects::offset_blue;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* offset_blue(&mut img, 40_u32);\n* ```\n* @param {PhotonImage} img\n* @param {number} offset_amt\n*/\nfunction offset_blue(img, offset_amt) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(offset_amt);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.offset_blue(img.ptr, offset_amt);\n}\n\n/**\n* Adds multiple offsets to the image by a certain number of pixels (on two channels).\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `offset` - The offset is added to the pixels in the image.\n* # Example\n*\n* ```no_run\n* // For example, to add a 30-pixel offset to both the red and blue channels:\n* use photon_rs::effects::multiple_offsets;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* multiple_offsets(&mut img, 30_u32, 0_usize, 2_usize);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} offset\n* @param {number} channel_index\n* @param {number} channel_index2\n*/\nfunction multiple_offsets(photon_image, offset, channel_index, channel_index2) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(offset);\n _assertNum(channel_index);\n _assertNum(channel_index2);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.multiple_offsets(photon_image.ptr, offset, channel_index, channel_index2);\n}\n\n/**\n* Reduces an image to the primary colours.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* // For example, to add a primary colour effect to an image of type `DynamicImage`:\n* use photon_rs::effects::primary;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* primary(&mut img);\n* ```\n* @param {PhotonImage} img\n*/\nfunction primary(img) {\n _assertClass(img, PhotonImage);\n if (img.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.primary(img.ptr);\n}\n\n/**\n* Colorizes the green channels of the image.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* // For example, to colorize an image of type `PhotonImage`:\n* use photon_rs::effects::colorize;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* colorize(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction colorize(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.colorize(photon_image.ptr);\n}\n\n/**\n* Applies a solarizing effect to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* // For example, to colorize an image of type `PhotonImage`:\n* use photon_rs::effects::solarize;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* solarize(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction solarize(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.solarize(photon_image.ptr);\n}\n\n/**\n* Applies a solarizing effect to an image and returns the resulting PhotonImage.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* // For example, to solarize \"retimg\" an image of type `PhotonImage`:\n* use photon_rs::effects::solarize_retimg;\n* use photon_rs::native::open_image;\n* use photon_rs::PhotonImage;\n*\n* let img = open_image(\"img.jpg\").expect(\"File should open\");\n* let result: PhotonImage = solarize_retimg(&img);\n* ```\n* @param {PhotonImage} photon_image\n* @returns {PhotonImage}\n*/\nfunction solarize_retimg(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.solarize_retimg(photon_image.ptr);\n return PhotonImage.__wrap(ret);\n}\n\n/**\n* Increase the brightness of an image by a factor.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `brightness` - A u8 to add to the brightness.\n* # Example\n*\n* ```no_run\n* use photon_rs::effects::inc_brightness;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* inc_brightness(&mut img, 10_u8);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} brightness\n*/\nfunction inc_brightness(photon_image, brightness) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(brightness);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.inc_brightness(photon_image.ptr, brightness);\n}\n\n/**\n* Adjust the contrast of an image by a factor.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage that contains a view into the image.\n* * `contrast` - An f32 factor used to adjust contrast. Between [-255.0, 255.0]. The algorithm will\n* clamp results if passed factor is out of range.\n* # Example\n*\n* ```no_run\n* use photon_rs::effects::adjust_contrast;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* adjust_contrast(&mut img, 30_f32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} contrast\n*/\nfunction adjust_contrast(photon_image, contrast) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.adjust_contrast(photon_image.ptr, contrast);\n}\n\n/**\n* Tint an image by adding an offset to averaged RGB channel values.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `r_offset` - The amount the R channel should be incremented by.\n* * `g_offset` - The amount the G channel should be incremented by.\n* * `b_offset` - The amount the B channel should be incremented by.\n* # Example\n*\n* ```no_run\n* // For example, to tint an image of type `PhotonImage`:\n* use photon_rs::effects::tint;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* tint(&mut img, 10_u32, 20_u32, 15_u32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} r_offset\n* @param {number} g_offset\n* @param {number} b_offset\n*/\nfunction tint(photon_image, r_offset, g_offset, b_offset) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(r_offset);\n _assertNum(g_offset);\n _assertNum(b_offset);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.tint(photon_image.ptr, r_offset, g_offset, b_offset);\n}\n\n/**\n* Horizontal strips. Divide an image into a series of equal-height strips, for an artistic effect.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `num_strips` - The number of strips\n* # Example\n*\n* ```no_run\n* // For example, to draw horizontal strips on a `PhotonImage`:\n* use photon_rs::effects::horizontal_strips;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* horizontal_strips(&mut img, 8u8);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} num_strips\n*/\nfunction horizontal_strips(photon_image, num_strips) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(num_strips);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.horizontal_strips(photon_image.ptr, num_strips);\n}\n\n/**\n* Horizontal strips. Divide an image into a series of equal-width strips, for an artistic effect. Sepcify a color as well.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `num_strips` - The numbder of strips\n* * `color` - Color of strips.\n* # Example\n*\n* ```no_run\n* // For example, to draw blue horizontal strips on a `PhotonImage`:\n* use photon_rs::effects::color_horizontal_strips;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgb;\n*\n* let color = Rgb::new(255u8, 0u8, 0u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* color_horizontal_strips(&mut img, 8u8, color);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} num_strips\n* @param {Rgb} color\n*/\nfunction color_horizontal_strips(photon_image, num_strips, color) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(num_strips);\n _assertClass(color, Rgb);\n if (color.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = color.ptr;\n color.ptr = 0;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.color_horizontal_strips(photon_image.ptr, num_strips, ptr0);\n}\n\n/**\n* Vertical strips. Divide an image into a series of equal-width strips, for an artistic effect.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `num_strips` - The numbder of strips\n* # Example\n*\n* ```no_run\n* // For example, to draw vertical strips on a `PhotonImage`:\n* use photon_rs::effects::vertical_strips;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* vertical_strips(&mut img, 8u8);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} num_strips\n*/\nfunction vertical_strips(photon_image, num_strips) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(num_strips);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.vertical_strips(photon_image.ptr, num_strips);\n}\n\n/**\n* Vertical strips. Divide an image into a series of equal-width strips, for an artistic effect. Sepcify a color as well.\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `num_strips` - The numbder of strips\n* * `color` - Color of strips.\n* # Example\n*\n* ```no_run\n* // For example, to draw red vertical strips on a `PhotonImage`:\n* use photon_rs::effects::color_vertical_strips;\n* use photon_rs::native::open_image;\n* use photon_rs::Rgb;\n*\n* let color = Rgb::new(255u8, 0u8, 0u8);\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* color_vertical_strips(&mut img, 8u8, color);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} num_strips\n* @param {Rgb} color\n*/\nfunction color_vertical_strips(photon_image, num_strips, color) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(num_strips);\n _assertClass(color, Rgb);\n if (color.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = color.ptr;\n color.ptr = 0;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.color_vertical_strips(photon_image.ptr, num_strips, ptr0);\n}\n\n/**\n* Turn an image into an oil painting\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* * `radius` - Radius of each paint particle\n* * `intesnity` - How artsy an Image should be\n* # Example\n*\n* ```no_run\n* // For example, to oil an image of type `PhotonImage`:\n* use photon_rs::effects::oil;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* oil(&mut img, 4i32, 55.0);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} radius\n* @param {number} intensity\n*/\nfunction oil(photon_image, radius, intensity) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(radius);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.oil(photon_image.ptr, radius, intensity);\n}\n\n/**\n* Turn an image into an frosted glass see through\n*\n* # Arguments\n* * `img` - A PhotonImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* // For example, to turn an image of type `PhotonImage` into frosted glass see through:\n* use photon_rs::effects::frosted_glass;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* frosted_glass(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction frosted_glass(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.frosted_glass(photon_image.ptr);\n}\n\n/**\n* Pixelize an image.\n*\n* # Arguments\n* * `photon_image` - A PhotonImage that contains a view into the image.\n* * `pixel_size` - Targeted pixel size of generated image.\n* # Example\n*\n* ```no_run\n* // For example, to turn an image of type `PhotonImage` into a pixelized image with 50 pixels blocks:\n* use photon_rs::effects::pixelize;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* pixelize(&mut img, 50);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} pixel_size\n*/\nfunction pixelize(photon_image, pixel_size) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(pixel_size);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.pixelize(photon_image.ptr, pixel_size);\n}\n\n/**\n* Normalizes an image by remapping its range of pixels values. Only RGB\n* channels are processed and each channel is stretched to \\[0, 255\\] range\n* independently. This process is also known as contrast stretching.\n* # Arguments\n* * `photon_image` - A PhotonImage that contains a view into the image.\n* # Example\n*\n* ```no_run\n* // For example, to turn an image of type `PhotonImage` into a normalized image:\n* use photon_rs::effects::normalize;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* normalize(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction normalize(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.normalize(photon_image.ptr);\n}\n\n/**\n* Applies Floyd-Steinberg dithering to an image.\n* Only RGB channels are processed, alpha remains unchanged.\n* # Arguments\n* * `photon_image` - A PhotonImage that contains a view into the image.\n* * `depth` - bits per channel. Clamped between 1 and 8.\n* # Example\n*\n* ```no_run\n* // For example, to turn an image of type `PhotonImage` into a dithered image:\n* use photon_rs::effects::dither;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* let depth = 1;\n* dither(&mut img, depth);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} depth\n*/\nfunction dither(photon_image, depth) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(depth);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.dither(photon_image.ptr, depth);\n}\n\n/**\n* @param {PhotonImage} photon_image\n* @param {Rgb} color_a\n* @param {Rgb} color_b\n*/\nfunction duotone(photon_image, color_a, color_b) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertClass(color_a, Rgb);\n if (color_a.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr0 = color_a.ptr;\n color_a.ptr = 0;\n _assertClass(color_b, Rgb);\n if (color_b.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n var ptr1 = color_b.ptr;\n color_b.ptr = 0;\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.duotone(photon_image.ptr, ptr0, ptr1);\n}\n\n/**\n* Noise reduction.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to noise reduct an image:\n* use photon_rs::conv::noise_reduction;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* noise_reduction(&mut img);\n* ```\n* Adds a constant to a select R, G, or B channel's value.\n* @param {PhotonImage} photon_image\n*/\nfunction noise_reduction(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.noise_reduction(photon_image.ptr);\n}\n\n/**\n* Sharpen an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to sharpen an image:\n* use photon_rs::conv::sharpen;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* sharpen(&mut img);\n* ```\n* Adds a constant to a select R, G, or B channel's value.\n* @param {PhotonImage} photon_image\n*/\nfunction sharpen(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.sharpen(photon_image.ptr);\n}\n\n/**\n* Apply edge detection to an image, to create a dark version with its edges highlighted.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to increase the Red channel for all pixels by 10:\n* use photon_rs::conv::edge_detection;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* edge_detection(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction edge_detection(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.edge_detection(photon_image.ptr);\n}\n\n/**\n* Apply an identity kernel convolution to an image.\n*\n* # Arguments\n* * `img` -A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply an identity kernel convolution:\n* use photon_rs::conv::identity;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* identity(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction identity(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.identity(photon_image.ptr);\n}\n\n/**\n* Apply a box blur effect.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a box blur effect:\n* use photon_rs::conv::box_blur;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* box_blur(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction box_blur(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.box_blur(photon_image.ptr);\n}\n\n/**\n* Gaussian blur in linear time.\n*\n* Reference: http://blog.ivank.net/fastest-gaussian-blur.html\n*\n* # Arguments\n* * `photon_image` - A PhotonImage\n* * `radius` - blur radius\n* # Example\n*\n* ```no_run\n* use photon_rs::conv::gaussian_blur;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* gaussian_blur(&mut img, 3_i32);\n* ```\n* @param {PhotonImage} photon_image\n* @param {number} radius\n*/\nfunction gaussian_blur(photon_image, radius) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _assertNum(radius);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.gaussian_blur(photon_image.ptr, radius);\n}\n\n/**\n* Detect horizontal lines in an image, and highlight these only.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to display the horizontal lines in an image:\n* use photon_rs::conv::detect_horizontal_lines;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* detect_horizontal_lines(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction detect_horizontal_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.detect_horizontal_lines(photon_image.ptr);\n}\n\n/**\n* Detect vertical lines in an image, and highlight these only.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to display the vertical lines in an image:\n* use photon_rs::conv::detect_vertical_lines;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* detect_vertical_lines(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction detect_vertical_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.detect_vertical_lines(photon_image.ptr);\n}\n\n/**\n* Detect lines at a forty five degree angle in an image, and highlight these only.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to display the lines at a forty five degree angle in an image:\n* use photon_rs::conv::detect_45_deg_lines;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* detect_45_deg_lines(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction detect_45_deg_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.detect_45_deg_lines(photon_image.ptr);\n}\n\n/**\n* Detect lines at a 135 degree angle in an image, and highlight these only.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to display the lines at a 135 degree angle in an image:\n* use photon_rs::conv::detect_135_deg_lines;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* detect_135_deg_lines(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction detect_135_deg_lines(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.detect_135_deg_lines(photon_image.ptr);\n}\n\n/**\n* Apply a standard laplace convolution.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a laplace effect:\n* use photon_rs::conv::laplace;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* laplace(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction laplace(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.laplace(photon_image.ptr);\n}\n\n/**\n* Preset edge effect.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply this effect:\n* use photon_rs::conv::edge_one;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* edge_one(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction edge_one(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.edge_one(photon_image.ptr);\n}\n\n/**\n* Apply an emboss effect to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply an emboss effect:\n* use photon_rs::conv::emboss;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* emboss(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction emboss(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.emboss(photon_image.ptr);\n}\n\n/**\n* Apply a horizontal Sobel filter to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a horizontal Sobel filter:\n* use photon_rs::conv::sobel_horizontal;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* sobel_horizontal(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction sobel_horizontal(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.sobel_horizontal(photon_image.ptr);\n}\n\n/**\n* Apply a horizontal Prewitt convolution to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a horizontal Prewitt convolution effect:\n* use photon_rs::conv::prewitt_horizontal;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* prewitt_horizontal(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction prewitt_horizontal(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.prewitt_horizontal(photon_image.ptr);\n}\n\n/**\n* Apply a vertical Sobel filter to an image.\n*\n* # Arguments\n* * `img` - A PhotonImage.\n*\n* # Example\n*\n* ```no_run\n* // For example, to apply a vertical Sobel filter:\n* use photon_rs::conv::sobel_vertical;\n* use photon_rs::native::open_image;\n*\n* let mut img = open_image(\"img.jpg\").expect(\"File should open\");\n* sobel_vertical(&mut img);\n* ```\n* @param {PhotonImage} photon_image\n*/\nfunction sobel_vertical(photon_image) {\n _assertClass(photon_image, PhotonImage);\n if (photon_image.ptr === 0) {\n throw new Error('Attempt to use a moved value');\n }\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.sobel_vertical(photon_image.ptr);\n}\n\nfunction logError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n let error = (function () {\n try {\n return e instanceof Error ? `${e.message}\\n\\nStack:\\n${e.stack}` : e.toString();\n } catch(_) {\n return \"\";\n }\n }());\n console.error(\"wasm-bindgen: imported JS function that was not marked as `catch` threw an error:\", error);\n throw e;\n }\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_exn_store(addHeapObject(e));\n }\n}\n\nlet cachegetUint8ClampedMemory0 = null;\nfunction getUint8ClampedMemory0() {\n if (cachegetUint8ClampedMemory0 === null || cachegetUint8ClampedMemory0.buffer !== _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer) {\n cachegetUint8ClampedMemory0 = new Uint8ClampedArray(_spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.memory.buffer);\n }\n return cachegetUint8ClampedMemory0;\n}\n\nfunction getClampedArrayU8FromWasm0(ptr, len) {\n return getUint8ClampedMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n*/\nconst SamplingFilter = Object.freeze({ Nearest:1,\"1\":\"Nearest\",Triangle:2,\"2\":\"Triangle\",CatmullRom:3,\"3\":\"CatmullRom\",Gaussian:4,\"4\":\"Gaussian\",Lanczos3:5,\"5\":\"Lanczos3\", });\n/**\n* Provides the image's height, width, and contains the image's raw pixels.\n* For use when communicating between JS and WASM, and also natively.\n*/\nclass PhotonImage {\n\n static __wrap(ptr) {\n const obj = Object.create(PhotonImage.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbg_photonimage_free(ptr);\n }\n /**\n * Create a new PhotonImage from a Vec of u8s, which represent raw pixels.\n * @param {Uint8Array} raw_pixels\n * @param {number} width\n * @param {number} height\n */\n constructor(raw_pixels, width, height) {\n var ptr0 = passArray8ToWasm0(raw_pixels, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n _assertNum(width);\n _assertNum(height);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.photonimage_new(ptr0, len0, width, height);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Create a new PhotonImage from a base64 string.\n * @param {string} base64\n * @returns {PhotonImage}\n */\n static new_from_base64(base64) {\n var ptr0 = passStringToWasm0(base64, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.photonimage_new_from_base64(ptr0, len0);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Create a new PhotonImage from a byteslice.\n * @param {Uint8Array} vec\n * @returns {PhotonImage}\n */\n static new_from_byteslice(vec) {\n var ptr0 = passArray8ToWasm0(vec, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.photonimage_new_from_byteslice(ptr0, len0);\n return PhotonImage.__wrap(ret);\n }\n /**\n * Get the width of the PhotonImage.\n * @returns {number}\n */\n get_width() {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.photonimage_get_width(this.ptr);\n return ret >>> 0;\n }\n /**\n * Get the PhotonImage's pixels as a Vec of u8s.\n * @returns {Uint8Array}\n */\n get_raw_pixels() {\n try {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n const retptr = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(-16);\n _assertNum(this.ptr);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.photonimage_get_raw_pixels(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Get the height of the PhotonImage.\n * @returns {number}\n */\n get_height() {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.photonimage_get_height(this.ptr);\n return ret >>> 0;\n }\n /**\n * Convert the PhotonImage to base64.\n * @returns {string}\n */\n get_base64() {\n try {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n const retptr = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(-16);\n _assertNum(this.ptr);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.photonimage_get_base64(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(16);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_free(r0, r1);\n }\n }\n /**\n * Convert the PhotonImage to raw bytes. Returns JPEG.\n * @returns {Uint8Array}\n */\n get_bytes() {\n try {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n const retptr = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(-16);\n _assertNum(this.ptr);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.photonimage_get_bytes(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Convert the PhotonImage to raw bytes. Returns a JPEG.\n * @param {number} quality\n * @returns {Uint8Array}\n */\n get_bytes_jpeg(quality) {\n try {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n const retptr = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(-16);\n _assertNum(this.ptr);\n _assertNum(quality);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.photonimage_get_bytes_jpeg(retptr, this.ptr, quality);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * Convert the PhotonImage's raw pixels to JS-compatible ImageData.\n * @returns {ImageData}\n */\n get_image_data() {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.photonimage_get_image_data(this.ptr);\n return takeObject(ret);\n }\n /**\n * Convert ImageData to raw pixels, and update the PhotonImage's raw pixels to this.\n * @param {ImageData} img_data\n */\n set_imgdata(img_data) {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.photonimage_set_imgdata(this.ptr, addHeapObject(img_data));\n }\n}\n/**\n* RGB color type.\n*/\nclass Rgb {\n\n static __wrap(ptr) {\n const obj = Object.create(Rgb.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbg_rgb_free(ptr);\n }\n /**\n * Create a new RGB struct.\n * @param {number} r\n * @param {number} g\n * @param {number} b\n */\n constructor(r, g, b) {\n _assertNum(r);\n _assertNum(g);\n _assertNum(b);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgb_new(r, g, b);\n return Rgb.__wrap(ret);\n }\n /**\n * Set the Red value.\n * @param {number} r\n */\n set_red(r) {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n _assertNum(r);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgb_set_red(this.ptr, r);\n }\n /**\n * Get the Green value.\n * @param {number} g\n */\n set_green(g) {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n _assertNum(g);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgb_set_green(this.ptr, g);\n }\n /**\n * Set the Blue value.\n * @param {number} b\n */\n set_blue(b) {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n _assertNum(b);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgb_set_blue(this.ptr, b);\n }\n /**\n * Get the Red value.\n * @returns {number}\n */\n get_red() {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgb_get_red(this.ptr);\n return ret;\n }\n /**\n * Get the Green value.\n * @returns {number}\n */\n get_green() {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgb_get_green(this.ptr);\n return ret;\n }\n /**\n * Get the Blue value.\n * @returns {number}\n */\n get_blue() {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgb_get_blue(this.ptr);\n return ret;\n }\n}\n/**\n* RGBA color type.\n*/\nclass Rgba {\n\n static __wrap(ptr) {\n const obj = Object.create(Rgba.prototype);\n obj.ptr = ptr;\n\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbg_rgba_free(ptr);\n }\n /**\n * Create a new RGBA struct.\n * @param {number} r\n * @param {number} g\n * @param {number} b\n * @param {number} a\n */\n constructor(r, g, b, a) {\n _assertNum(r);\n _assertNum(g);\n _assertNum(b);\n _assertNum(a);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgba_new(r, g, b, a);\n return Rgba.__wrap(ret);\n }\n /**\n * Set the Red value.\n * @param {number} r\n */\n set_red(r) {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n _assertNum(r);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgba_set_red(this.ptr, r);\n }\n /**\n * Get the Green value.\n * @param {number} g\n */\n set_green(g) {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n _assertNum(g);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgba_set_green(this.ptr, g);\n }\n /**\n * Set the Blue value.\n * @param {number} b\n */\n set_blue(b) {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n _assertNum(b);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgba_set_blue(this.ptr, b);\n }\n /**\n * Set the alpha value.\n * @param {number} a\n */\n set_alpha(a) {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n _assertNum(a);\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgba_set_alpha(this.ptr, a);\n }\n /**\n * Get the Red value.\n * @returns {number}\n */\n get_red() {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgba_get_red(this.ptr);\n return ret;\n }\n /**\n * Get the Green value.\n * @returns {number}\n */\n get_green() {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgba_get_green(this.ptr);\n return ret;\n }\n /**\n * Get the Blue value.\n * @returns {number}\n */\n get_blue() {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgba_get_blue(this.ptr);\n return ret;\n }\n /**\n * Get the alpha value for this color.\n * @returns {number}\n */\n get_alpha() {\n if (this.ptr == 0) throw new Error('Attempt to use a moved value');\n _assertNum(this.ptr);\n var ret = _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.rgba_get_alpha(this.ptr);\n return ret;\n }\n}\n\nfunction __wbindgen_object_drop_ref(arg0) {\n takeObject(arg0);\n};\n\nfunction __wbg_error_09919627ac0992f5() { return logError(function (arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_free(arg0, arg1);\n }\n}, arguments) };\n\nfunction __wbg_new_693216e109162396() { return logError(function () {\n var ret = new Error();\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_stack_0ddaca5d1abfb52f() { return logError(function (arg0, arg1) {\n var ret = getObject(arg1).stack;\n var ptr0 = passStringToWasm0(ret, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n}, arguments) };\n\nfunction __wbg_instanceof_Window_c4b70662a0d2c5ec() { return logError(function (arg0) {\n var ret = getObject(arg0) instanceof Window;\n _assertBoolean(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_document_1c64944725c0d81d() { return logError(function (arg0) {\n var ret = getObject(arg0).document;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_body_78ae4fd43b446013() { return logError(function (arg0) {\n var ret = getObject(arg0).body;\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_createElement_86c152812a141a62() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae() { return logError(function (arg0) {\n var ret = getObject(arg0) instanceof CanvasRenderingContext2D;\n _assertBoolean(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_drawImage_9e2d13329d92a0a3() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n getObject(arg0).drawImage(getObject(arg1), arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);\n}, arguments) };\n\nfunction __wbg_getImageData_9ffc3df78ca3dbc9() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {\n var ret = getObject(arg0).getImageData(arg1, arg2, arg3, arg4);\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_putImageData_b9544b271e569392() { return handleError(function (arg0, arg1, arg2, arg3) {\n getObject(arg0).putImageData(getObject(arg1), arg2, arg3);\n}, arguments) };\n\nfunction __wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e() { return logError(function (arg0) {\n var ret = getObject(arg0) instanceof HTMLCanvasElement;\n _assertBoolean(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_width_555f63ab09ba7d3f() { return logError(function (arg0) {\n var ret = getObject(arg0).width;\n _assertNum(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_setwidth_c1a7061891b71f25() { return logError(function (arg0, arg1) {\n getObject(arg0).width = arg1 >>> 0;\n}, arguments) };\n\nfunction __wbg_height_7153faec70fbaf7b() { return logError(function (arg0) {\n var ret = getObject(arg0).height;\n _assertNum(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_setheight_88894b05710ff752() { return logError(function (arg0, arg1) {\n getObject(arg0).height = arg1 >>> 0;\n}, arguments) };\n\nfunction __wbg_getContext_f701d0231ae22393() { return handleError(function (arg0, arg1, arg2) {\n var ret = getObject(arg0).getContext(getStringFromWasm0(arg1, arg2));\n return isLikeNone(ret) ? 0 : addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_width_16bd64d09cbf5661() { return logError(function (arg0) {\n var ret = getObject(arg0).width;\n _assertNum(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_height_368bb86c37d51bc9() { return logError(function (arg0) {\n var ret = getObject(arg0).height;\n _assertNum(ret);\n return ret;\n}, arguments) };\n\nfunction __wbg_data_1ae7496c58caf755() { return logError(function (arg0, arg1) {\n var ret = getObject(arg1).data;\n var ptr0 = passArray8ToWasm0(ret, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n}, arguments) };\n\nfunction __wbg_newwithu8clampedarrayandsh_1b8c6e1bede43657() { return handleError(function (arg0, arg1, arg2, arg3) {\n var ret = new ImageData(getClampedArrayU8FromWasm0(arg0, arg1), arg2 >>> 0, arg3 >>> 0);\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_settextContent_799ebbf96e16265d() { return logError(function (arg0, arg1, arg2) {\n getObject(arg0).textContent = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2);\n}, arguments) };\n\nfunction __wbg_appendChild_d318db34c4559916() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).appendChild(getObject(arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_newnoargs_be86524d73f67598() { return logError(function (arg0, arg1) {\n var ret = new Function(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_call_888d259a5fefc347() { return handleError(function (arg0, arg1) {\n var ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_globalThis_3f735a5746d41fbd() { return handleError(function () {\n var ret = globalThis.globalThis;\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_self_c6fbdfc2918d5e58() { return handleError(function () {\n var ret = self.self;\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_window_baec038b5ab35c54() { return handleError(function () {\n var ret = window.window;\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbg_global_1bc0b39582740e95() { return handleError(function () {\n var ret = __webpack_require__.g.global;\n return addHeapObject(ret);\n}, arguments) };\n\nfunction __wbindgen_is_undefined(arg0) {\n var ret = getObject(arg0) === undefined;\n _assertBoolean(ret);\n return ret;\n};\n\nfunction __wbindgen_object_clone_ref(arg0) {\n var ret = getObject(arg0);\n return addHeapObject(ret);\n};\n\nfunction __wbindgen_debug_string(arg0, arg1) {\n var ret = debugString(getObject(arg1));\n var ptr0 = passStringToWasm0(ret, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_malloc, _spiegel_client_bg_wasm__WEBPACK_IMPORTED_MODULE_0__.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n};\n\nfunction __wbindgen_throw(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n};\n\nfunction __wbindgen_rethrow(arg0) {\n throw takeObject(arg0);\n};\n\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });\n\n//# sourceURL=webpack://photon-wasm/./crate/pkg/spiegel_client_bg.js?"); + +/***/ }), + +/***/ "./crate/pkg/spiegel_client_bg.wasm": +/*!******************************************!*\ + !*** ./crate/pkg/spiegel_client_bg.wasm ***! + \******************************************/ +/***/ ((module, exports, __webpack_require__) => { + +eval("var __webpack_instantiate__ = ([WEBPACK_IMPORTED_MODULE_0]) => {\n\treturn __webpack_require__.v(exports, module.id, \"df3fbe72e3ad368ae5bf\", {\n\t\t\"./spiegel_client_bg.js\": {\n\t\t\t\"__wbindgen_object_drop_ref\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_object_drop_ref,\n\t\t\t\"__wbg_error_09919627ac0992f5\": WEBPACK_IMPORTED_MODULE_0.__wbg_error_09919627ac0992f5,\n\t\t\t\"__wbg_new_693216e109162396\": WEBPACK_IMPORTED_MODULE_0.__wbg_new_693216e109162396,\n\t\t\t\"__wbg_stack_0ddaca5d1abfb52f\": WEBPACK_IMPORTED_MODULE_0.__wbg_stack_0ddaca5d1abfb52f,\n\t\t\t\"__wbg_instanceof_Window_c4b70662a0d2c5ec\": WEBPACK_IMPORTED_MODULE_0.__wbg_instanceof_Window_c4b70662a0d2c5ec,\n\t\t\t\"__wbg_document_1c64944725c0d81d\": WEBPACK_IMPORTED_MODULE_0.__wbg_document_1c64944725c0d81d,\n\t\t\t\"__wbg_body_78ae4fd43b446013\": WEBPACK_IMPORTED_MODULE_0.__wbg_body_78ae4fd43b446013,\n\t\t\t\"__wbg_createElement_86c152812a141a62\": WEBPACK_IMPORTED_MODULE_0.__wbg_createElement_86c152812a141a62,\n\t\t\t\"__wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae\": WEBPACK_IMPORTED_MODULE_0.__wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae,\n\t\t\t\"__wbg_drawImage_9e2d13329d92a0a3\": WEBPACK_IMPORTED_MODULE_0.__wbg_drawImage_9e2d13329d92a0a3,\n\t\t\t\"__wbg_getImageData_9ffc3df78ca3dbc9\": WEBPACK_IMPORTED_MODULE_0.__wbg_getImageData_9ffc3df78ca3dbc9,\n\t\t\t\"__wbg_putImageData_b9544b271e569392\": WEBPACK_IMPORTED_MODULE_0.__wbg_putImageData_b9544b271e569392,\n\t\t\t\"__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e\": WEBPACK_IMPORTED_MODULE_0.__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e,\n\t\t\t\"__wbg_width_555f63ab09ba7d3f\": WEBPACK_IMPORTED_MODULE_0.__wbg_width_555f63ab09ba7d3f,\n\t\t\t\"__wbg_setwidth_c1a7061891b71f25\": WEBPACK_IMPORTED_MODULE_0.__wbg_setwidth_c1a7061891b71f25,\n\t\t\t\"__wbg_height_7153faec70fbaf7b\": WEBPACK_IMPORTED_MODULE_0.__wbg_height_7153faec70fbaf7b,\n\t\t\t\"__wbg_setheight_88894b05710ff752\": WEBPACK_IMPORTED_MODULE_0.__wbg_setheight_88894b05710ff752,\n\t\t\t\"__wbg_getContext_f701d0231ae22393\": WEBPACK_IMPORTED_MODULE_0.__wbg_getContext_f701d0231ae22393,\n\t\t\t\"__wbg_width_16bd64d09cbf5661\": WEBPACK_IMPORTED_MODULE_0.__wbg_width_16bd64d09cbf5661,\n\t\t\t\"__wbg_height_368bb86c37d51bc9\": WEBPACK_IMPORTED_MODULE_0.__wbg_height_368bb86c37d51bc9,\n\t\t\t\"__wbg_data_1ae7496c58caf755\": WEBPACK_IMPORTED_MODULE_0.__wbg_data_1ae7496c58caf755,\n\t\t\t\"__wbg_newwithu8clampedarrayandsh_1b8c6e1bede43657\": WEBPACK_IMPORTED_MODULE_0.__wbg_newwithu8clampedarrayandsh_1b8c6e1bede43657,\n\t\t\t\"__wbg_settextContent_799ebbf96e16265d\": WEBPACK_IMPORTED_MODULE_0.__wbg_settextContent_799ebbf96e16265d,\n\t\t\t\"__wbg_appendChild_d318db34c4559916\": WEBPACK_IMPORTED_MODULE_0.__wbg_appendChild_d318db34c4559916,\n\t\t\t\"__wbg_newnoargs_be86524d73f67598\": WEBPACK_IMPORTED_MODULE_0.__wbg_newnoargs_be86524d73f67598,\n\t\t\t\"__wbg_call_888d259a5fefc347\": WEBPACK_IMPORTED_MODULE_0.__wbg_call_888d259a5fefc347,\n\t\t\t\"__wbg_globalThis_3f735a5746d41fbd\": WEBPACK_IMPORTED_MODULE_0.__wbg_globalThis_3f735a5746d41fbd,\n\t\t\t\"__wbg_self_c6fbdfc2918d5e58\": WEBPACK_IMPORTED_MODULE_0.__wbg_self_c6fbdfc2918d5e58,\n\t\t\t\"__wbg_window_baec038b5ab35c54\": WEBPACK_IMPORTED_MODULE_0.__wbg_window_baec038b5ab35c54,\n\t\t\t\"__wbg_global_1bc0b39582740e95\": WEBPACK_IMPORTED_MODULE_0.__wbg_global_1bc0b39582740e95,\n\t\t\t\"__wbindgen_is_undefined\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_is_undefined,\n\t\t\t\"__wbindgen_object_clone_ref\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_object_clone_ref,\n\t\t\t\"__wbindgen_debug_string\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_debug_string,\n\t\t\t\"__wbindgen_throw\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_throw,\n\t\t\t\"__wbindgen_rethrow\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_rethrow\n\t\t}\n\t});\n}\n__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => {\n\ttry {\n\t/* harmony import */ var WEBPACK_IMPORTED_MODULE_0 = __webpack_require__(/*! ./spiegel_client_bg.js */ \"./crate/pkg/spiegel_client_bg.js\");\n\tvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([WEBPACK_IMPORTED_MODULE_0]);\n\tvar [WEBPACK_IMPORTED_MODULE_0] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__;\n\tawait __webpack_require__.v(exports, module.id, \"df3fbe72e3ad368ae5bf\", {\n\t\t\"./spiegel_client_bg.js\": {\n\t\t\t\"__wbindgen_object_drop_ref\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_object_drop_ref,\n\t\t\t\"__wbg_error_09919627ac0992f5\": WEBPACK_IMPORTED_MODULE_0.__wbg_error_09919627ac0992f5,\n\t\t\t\"__wbg_new_693216e109162396\": WEBPACK_IMPORTED_MODULE_0.__wbg_new_693216e109162396,\n\t\t\t\"__wbg_stack_0ddaca5d1abfb52f\": WEBPACK_IMPORTED_MODULE_0.__wbg_stack_0ddaca5d1abfb52f,\n\t\t\t\"__wbg_instanceof_Window_c4b70662a0d2c5ec\": WEBPACK_IMPORTED_MODULE_0.__wbg_instanceof_Window_c4b70662a0d2c5ec,\n\t\t\t\"__wbg_document_1c64944725c0d81d\": WEBPACK_IMPORTED_MODULE_0.__wbg_document_1c64944725c0d81d,\n\t\t\t\"__wbg_body_78ae4fd43b446013\": WEBPACK_IMPORTED_MODULE_0.__wbg_body_78ae4fd43b446013,\n\t\t\t\"__wbg_createElement_86c152812a141a62\": WEBPACK_IMPORTED_MODULE_0.__wbg_createElement_86c152812a141a62,\n\t\t\t\"__wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae\": WEBPACK_IMPORTED_MODULE_0.__wbg_instanceof_CanvasRenderingContext2d_3abbe7ec7af32cae,\n\t\t\t\"__wbg_drawImage_9e2d13329d92a0a3\": WEBPACK_IMPORTED_MODULE_0.__wbg_drawImage_9e2d13329d92a0a3,\n\t\t\t\"__wbg_getImageData_9ffc3df78ca3dbc9\": WEBPACK_IMPORTED_MODULE_0.__wbg_getImageData_9ffc3df78ca3dbc9,\n\t\t\t\"__wbg_putImageData_b9544b271e569392\": WEBPACK_IMPORTED_MODULE_0.__wbg_putImageData_b9544b271e569392,\n\t\t\t\"__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e\": WEBPACK_IMPORTED_MODULE_0.__wbg_instanceof_HtmlCanvasElement_25d964a0dde6717e,\n\t\t\t\"__wbg_width_555f63ab09ba7d3f\": WEBPACK_IMPORTED_MODULE_0.__wbg_width_555f63ab09ba7d3f,\n\t\t\t\"__wbg_setwidth_c1a7061891b71f25\": WEBPACK_IMPORTED_MODULE_0.__wbg_setwidth_c1a7061891b71f25,\n\t\t\t\"__wbg_height_7153faec70fbaf7b\": WEBPACK_IMPORTED_MODULE_0.__wbg_height_7153faec70fbaf7b,\n\t\t\t\"__wbg_setheight_88894b05710ff752\": WEBPACK_IMPORTED_MODULE_0.__wbg_setheight_88894b05710ff752,\n\t\t\t\"__wbg_getContext_f701d0231ae22393\": WEBPACK_IMPORTED_MODULE_0.__wbg_getContext_f701d0231ae22393,\n\t\t\t\"__wbg_width_16bd64d09cbf5661\": WEBPACK_IMPORTED_MODULE_0.__wbg_width_16bd64d09cbf5661,\n\t\t\t\"__wbg_height_368bb86c37d51bc9\": WEBPACK_IMPORTED_MODULE_0.__wbg_height_368bb86c37d51bc9,\n\t\t\t\"__wbg_data_1ae7496c58caf755\": WEBPACK_IMPORTED_MODULE_0.__wbg_data_1ae7496c58caf755,\n\t\t\t\"__wbg_newwithu8clampedarrayandsh_1b8c6e1bede43657\": WEBPACK_IMPORTED_MODULE_0.__wbg_newwithu8clampedarrayandsh_1b8c6e1bede43657,\n\t\t\t\"__wbg_settextContent_799ebbf96e16265d\": WEBPACK_IMPORTED_MODULE_0.__wbg_settextContent_799ebbf96e16265d,\n\t\t\t\"__wbg_appendChild_d318db34c4559916\": WEBPACK_IMPORTED_MODULE_0.__wbg_appendChild_d318db34c4559916,\n\t\t\t\"__wbg_newnoargs_be86524d73f67598\": WEBPACK_IMPORTED_MODULE_0.__wbg_newnoargs_be86524d73f67598,\n\t\t\t\"__wbg_call_888d259a5fefc347\": WEBPACK_IMPORTED_MODULE_0.__wbg_call_888d259a5fefc347,\n\t\t\t\"__wbg_globalThis_3f735a5746d41fbd\": WEBPACK_IMPORTED_MODULE_0.__wbg_globalThis_3f735a5746d41fbd,\n\t\t\t\"__wbg_self_c6fbdfc2918d5e58\": WEBPACK_IMPORTED_MODULE_0.__wbg_self_c6fbdfc2918d5e58,\n\t\t\t\"__wbg_window_baec038b5ab35c54\": WEBPACK_IMPORTED_MODULE_0.__wbg_window_baec038b5ab35c54,\n\t\t\t\"__wbg_global_1bc0b39582740e95\": WEBPACK_IMPORTED_MODULE_0.__wbg_global_1bc0b39582740e95,\n\t\t\t\"__wbindgen_is_undefined\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_is_undefined,\n\t\t\t\"__wbindgen_object_clone_ref\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_object_clone_ref,\n\t\t\t\"__wbindgen_debug_string\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_debug_string,\n\t\t\t\"__wbindgen_throw\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_throw,\n\t\t\t\"__wbindgen_rethrow\": WEBPACK_IMPORTED_MODULE_0.__wbindgen_rethrow\n\t\t}\n\t});\n\t__webpack_async_result__();\n\t} catch(e) { __webpack_async_result__(e); }\n}, 1);\n\n//# sourceURL=webpack://photon-wasm/./crate/pkg/spiegel_client_bg.wasm?"); + +/***/ }) + +}]); \ No newline at end of file diff --git a/dist/df3fbe72e3ad368ae5bf.module.wasm b/dist/df3fbe72e3ad368ae5bf.module.wasm new file mode 100644 index 0000000..59e097b Binary files /dev/null and b/dist/df3fbe72e3ad368ae5bf.module.wasm differ diff --git a/dist/ea872833a419652a23b47d50be7fe0ef.jpg b/dist/ea872833a419652a23b47d50be7fe0ef.jpg new file mode 100644 index 0000000..05b1e39 Binary files /dev/null and b/dist/ea872833a419652a23b47d50be7fe0ef.jpg differ diff --git a/dist/f49f7893ad0a3ad10176.module.wasm b/dist/f49f7893ad0a3ad10176.module.wasm new file mode 100644 index 0000000..b373c47 Binary files /dev/null and b/dist/f49f7893ad0a3ad10176.module.wasm differ diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..e5f614d --- /dev/null +++ b/dist/index.html @@ -0,0 +1,29 @@ + + + + + + Spiegel + + + +
+
+
+
+ + + diff --git a/index.html b/index.html new file mode 100644 index 0000000..fe0f8f6 --- /dev/null +++ b/index.html @@ -0,0 +1,30 @@ + + + + + + Spiegel + + + +
+ +
+ +
+ +
+
+
+
+ + +
+
+
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..f7139b2 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6753 @@ +{ + "name": "photon-wasm", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "photon-wasm", + "version": "0.1.0", + "license": "Apache-2.0", + "dependencies": { + "@silvia-odwyer/photon": "^0.1.0" + }, + "bin": { + "create-rust-webpack": ".bin/create-rust-webpack.js" + }, + "devDependencies": { + "@wasm-tool/wasm-pack-plugin": "0.1.6", + "clean-webpack-plugin": "^4.0.0", + "css-loader": "^6.10.0", + "file-loader": "^6.2.0", + "html-webpack-plugin": "^5.6.0", + "js-loader": "^0.1.1", + "style-loader": "^3.3.4", + "webpack": "^5.91.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.0.4" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@silvia-odwyer/photon": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@silvia-odwyer/photon/-/photon-0.1.0.tgz", + "integrity": "sha512-7dPuzcHvnI7A/6C29xTDxzEhKIQJ0KsjwlPXKKqxs+PJNbqK1gKQj/GMQUbzX3Ec+MB4JBKElsUS920vNL7MAw==" + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.6.tgz", + "integrity": "sha512-ymwc+qb1XkjT/gfoQwxIeHZ6ixH23A+tCT2ADSA/DPVKzAjwYkTXBMCQ/f6fe4wEa85Lhp26VPeUxI7wMhAi7A==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.43", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", + "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz", + "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.11.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", + "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.14", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.14.tgz", + "integrity": "sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@wasm-tool/wasm-pack-plugin": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@wasm-tool/wasm-pack-plugin/-/wasm-pack-plugin-0.1.6.tgz", + "integrity": "sha512-Nk6IqWSpvSnfjHOIElcol4aXLusl+/XKeuC2ViqbHOKHIClfN1r9KK9/KvGTslw7Qyjg4pVBYjGrTTRFqvvvvw==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "command-exists": "^1.2.7", + "glob": "^7.1.2", + "watchpack": "^1.6.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/async-each": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.6.tgz", + "integrity": "sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "optional": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "optional": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "optional": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "optional": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "optional": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001600", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz", + "integrity": "sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "optional": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "optional": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "optional": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/clean-css": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-WuWE1nyTNAyW5T7oNyys2EN0cfP2fdRxhxnIQWiAp0bMabPdHhoGxM8A6YL2GhqwgrPnnaemVE7nv5XJ2Fhh2w==", + "dev": true, + "dependencies": { + "del": "^4.1.1" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "webpack": ">=4.0.0 <6.0.0" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "optional": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "optional": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/connect/-/connect-0.5.8.tgz", + "integrity": "sha512-N/eXBtibhXlXU/M3mYaIaTAg9OPx0560l48h+kxbuY7FQ4+6ByrJLTZe6q//Kw7wBTy1d4eQGW3fqBDMLoK6/g==", + "deprecated": "connect 0.x series is deprecated", + "dev": true, + "dependencies": { + "qs": ">= 0.0.1" + }, + "engines": { + "node": ">= 0.2.5" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-loader": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "dependencies": { + "utila": "~0.4" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.715", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz", + "integrity": "sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", + "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/envinfo": { + "version": "7.11.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.1.tgz", + "integrity": "sha512-8PiZgZNIB4q/Lw4AhOvAfB/ityHAd2bli3lESSWmWSzSsl5dKpy5N1d1Rfkd2teq/g9xN90lc6o98DOjMeYHpg==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.2.tgz", + "integrity": "sha512-7nOqkomXZEaxUDJw21XZNtRk739QvrPSoZoRtbsEfcii00vdzZUh6zh1CQwHhrib8MdEtJfv5rJiGeb4KuV/vw==", + "dev": true + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "optional": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "optional": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/express": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.1.tgz", + "integrity": "sha512-K4w1/Bp7y8iSiVObmCrtq8Cs79XjJc/RU2YYkZQ7wpUu5ZyZ7MtPHkqoMz4pf+mgXfNvo2qft8D9OnrH2ABk9w==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "optional": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "optional": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "optional": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eyes": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", + "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", + "dev": true, + "engines": { + "node": "> 0.1.90" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "optional": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/globby/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "optional": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-webpack-plugin": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", + "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "dev": true, + "dependencies": { + "@types/html-minifier-terser": "^6.0.0", + "html-minifier-terser": "^6.0.2", + "lodash": "^4.17.21", + "pretty-error": "^4.0.0", + "tapable": "^2.0.0" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/html-webpack-plugin" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.20.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/html-webpack-plugin/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/html-webpack-plugin/node_modules/html-minifier-terser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.2", + "clean-css": "^5.2.2", + "commander": "^8.3.0", + "he": "^1.2.0", + "param-case": "^3.0.4", + "relateurl": "^0.2.7", + "terser": "^5.10.0" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/htmlparser2": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.0.0", + "domutils": "^2.5.2", + "entities": "^2.0.0" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy-middleware/node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ipaddr.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.1.0.tgz", + "integrity": "sha512-LlbxQ7xKzfBusov6UMi4MFpEg0m+mAm9xyNGEduwXMEDuf4WfzB/RZwMVYEd7IKGvh4IUkEXYxtAVu9T3OelJQ==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "dev": true, + "optional": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "optional": true + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "dev": true, + "optional": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "optional": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "optional": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "dependencies": { + "is-path-inside": "^2.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "dependencies": { + "path-is-inside": "^1.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jackspeak": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-loader": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/js-loader/-/js-loader-0.1.1.tgz", + "integrity": "sha512-3QBYVT2BkoyzBVYjPBiJ1w0Bpclhww+SH9OdObgODb1KxjtYyjb4MH3kwGqZVuGBIQK2lmPJkFL2ohouMQzQUA==", + "dev": true, + "dependencies": { + "connect": "=0.5.8", + "temp": "=0.2.0", + "uglify-js": "=0.0.4", + "vows": "=0.5.6" + }, + "bin": { + "jsloader": "bin/jsloader" + }, + "engines": { + "node": "*" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/launch-editor": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.6.1.tgz", + "integrity": "sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "optional": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.8.0.tgz", + "integrity": "sha512-fcs7trFxZlOMadmTw5nyfOwS3il9pr3y+6xzLfXNwmuR/D0i4wz6rJURxArAbcJDGalbpbMvQ/IFI0NojRZgRg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "optional": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/micromatch/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minipass": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "optional": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nan": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", + "integrity": "sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==", + "dev": true, + "optional": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "optional": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "optional": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "optional": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "optional": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "optional": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "optional": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-retry": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.0.tgz", + "integrity": "sha512-JA6nkq6hKyWLLasXQXUrO4z8BUZGUt/LjlJxx8Gb2+2ntodU/SS63YZ8b0LUTbQ8ZB9iwOfhEPhg4ykKnn2KsA==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true, + "optional": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "dev": true, + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postcss": { + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.4.tgz", + "integrity": "sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.1.1.tgz", + "integrity": "sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.16", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", + "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pretty-error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", + "dev": true, + "dependencies": { + "lodash": "^4.17.20", + "renderkid": "^3.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "optional": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true, + "optional": true + }, + "node_modules/renderkid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", + "dev": true, + "dependencies": { + "css-select": "^4.1.3", + "dom-converter": "^0.2.0", + "htmlparser2": "^6.1.0", + "lodash": "^4.17.21", + "strip-ansi": "^6.0.1" + } + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true, + "optional": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "optional": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "optional": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "optional": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "optional": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "optional": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "optional": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "optional": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true, + "optional": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy-transport/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/spdy/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/spdy/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "optional": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "optional": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "optional": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "optional": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/temp": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.2.0.tgz", + "integrity": "sha512-YDBo1L4ZLi2+8u7rcY8asynPBwrXuNQ97sdemNwv/v8OJLCj/duAiuGYMtFIMUNKZG4zO1O5oQD7u+Y0c2O6ZA==", + "dev": true, + "engines": [ + "node >=0.1.90" + ] + }, + "node_modules/terser": { + "version": "5.29.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.2.tgz", + "integrity": "sha512-ZiGkhUBIM+7LwkNjXYJq8svgkd+QK3UUr0wJqY4MieaezBSAIPgbSPZyIx0idM6XWK5CMzSWa8MJIzmRcB8Caw==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser/node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "optional": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/uglify-js": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-0.0.4.tgz", + "integrity": "sha512-cGiAIcNECVjqL3wNiWiBctBJr94T6WS+q0c/H/I+pGsAQ/+8ZKbJxw9GJiaL+ZYbGDU275Shz+h2Gq4S2Oc35Q==", + "dev": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": "*" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "optional": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "optional": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "optional": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "optional": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true, + "optional": true + }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true, + "optional": true + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vows": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/vows/-/vows-0.5.6.tgz", + "integrity": "sha512-IGLEetjz/nPKHYPlA3LTGMxj6nbfsyZ3CwFTR6hzE6zRLLY7yu5ya4v9ymY7cit9wnogDv6Cj12nU/myCeDwgQ==", + "dev": true, + "dependencies": { + "eyes": ">=0.1.6" + }, + "bin": { + "vows": "bin/vows" + }, + "engines": { + "node": ">=0.2.6" + } + }, + "node_modules/watchpack": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + }, + "optionalDependencies": { + "chokidar": "^3.4.1", + "watchpack-chokidar2": "^2.0.1" + } + }, + "node_modules/watchpack-chokidar2": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", + "dev": true, + "optional": true, + "dependencies": { + "chokidar": "^2.1.8" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "optional": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/watchpack-chokidar2/node_modules/anymatch/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "optional": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "optional": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "deprecated": "Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies", + "dev": true, + "optional": true, + "dependencies": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + }, + "optionalDependencies": { + "fsevents": "^1.2.7" + } + }, + "node_modules/watchpack-chokidar2/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "optional": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "dependencies": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "optional": true, + "dependencies": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/glob-parent/node_modules/is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "optional": true, + "dependencies": { + "is-extglob": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "optional": true, + "dependencies": { + "binary-extensions": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "optional": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "optional": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack-chokidar2/node_modules/readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/watchpack-chokidar2/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "optional": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.91.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", + "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.16.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", + "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.1.1", + "@webpack-cli/info": "^2.0.2", + "@webpack-cli/serve": "^2.0.5", + "colorette": "^2.0.14", + "commander": "^10.0.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/webpack-dev-middleware": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.1.1.tgz", + "integrity": "sha512-NmRVq4AvRQs66dFWyDR4GsFDJggtSi2Yn38MXLk0nffgF9n/AIP4TFBg2TQKYaRAN4sHuKOTiz9BnNCENDLEVA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.6.0", + "mime-types": "^2.1.31", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.0.4.tgz", + "integrity": "sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.4.0", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "rimraf": "^5.0.5", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.1.0", + "ws": "^8.16.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webpack-dev-server/node_modules/rimraf": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", + "dev": true, + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack/node_modules/watchpack": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..4e98018 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "author": "Silvia O'Dwyer ", + "name": "photon-wasm", + "version": "0.1.0", + "repository": "https://github.com/silvia-odwyer/photon", + "license": "Apache-2.0", + "scripts": { + "start": "webpack-dev-server", + "build": "webpack" + }, + "bin": { + "create-rust-webpack": ".bin/create-rust-webpack.js" + }, + "devDependencies": { + "@wasm-tool/wasm-pack-plugin": "0.1.6", + "clean-webpack-plugin": "^4.0.0", + "css-loader": "^6.10.0", + "file-loader": "^6.2.0", + "html-webpack-plugin": "^5.6.0", + "style-loader": "^3.3.4", + "webpack": "^5.91.0", + "webpack-cli": "^5.1.4", + "webpack-dev-server": "^5.0.4" + } +} diff --git a/server/Cargo.lock b/server/Cargo.lock new file mode 100644 index 0000000..e8b35a2 --- /dev/null +++ b/server/Cargo.lock @@ -0,0 +1,1353 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "anyhow" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0952808a6c2afd1aa8947271f3a60f1a6763c7b912d210184c5149b5cf147247" + +[[package]] +name = "async-trait" +version = "0.1.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507401cad91ec6a857ed5513a2073c82a9b9048762b885bb98655b306964681" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "axum" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf" +dependencies = [ + "async-trait", + "axum-core", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "itoa", + "matchit", + "memchr", + "mime", + "percent-encoding", + "pin-project-lite", + "rustversion", + "serde", + "serde_json", + "serde_path_to_error", + "serde_urlencoded", + "sync_wrapper 1.0.0", + "tokio", + "tower", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "axum-core" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3" +dependencies = [ + "async-trait", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper 0.1.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" + +[[package]] +name = "bytemuck" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" + +[[package]] +name = "cc" +version = "1.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "crc32fast" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "either" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" + +[[package]] +name = "exr" +version = "1.72.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" +dependencies = [ + "bit_field", + "flume", + "half", + "lebe", + "miniz_oxide", + "rayon-core", + "smallvec", + "zune-inflate", +] + +[[package]] +name = "fdeflate" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "spin", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "form_urlencoded" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" + +[[package]] +name = "futures-sink" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" + +[[package]] +name = "futures-task" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" + +[[package]] +name = "futures-util" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", +] + +[[package]] +name = "gif" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + +[[package]] +name = "half" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "http-range-header" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ce4ef31cda248bbdb6e6820603b82dfcd9e833db65a43e997a0ccec777d11fe" + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" + +[[package]] +name = "hyper" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186548d73ac615b32a73aafe38fb4f56c0d340e110e5a200bcadbaf2e199263a" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", +] + +[[package]] +name = "hyper-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" +dependencies = [ + "bytes", + "futures-util", + "http", + "http-body", + "hyper", + "pin-project-lite", + "socket2", + "tokio", +] + +[[package]] +name = "image" +version = "0.24.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "exr", + "gif", + "jpeg-decoder", + "num-traits", + "png", + "qoi", + "tiff", +] + +[[package]] +name = "include_dir" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "itoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" + +[[package]] +name = "jpeg-decoder" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" +dependencies = [ + "rayon", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "lock_api" +version = "0.4.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matchit" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" + +[[package]] +name = "memchr" +version = "2.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.48.0", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.48.5", +] + +[[package]] +name = "percent-encoding" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" + +[[package]] +name = "pin-project" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "png" +version = "0.17.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "proc-macro2" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rayon" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "regex" +version = "1.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.4.6", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "ryu" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "serde" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +dependencies = [ + "itoa", + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" + +[[package]] +name = "socket2" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "spiegel-server" +version = "0.1.0" +dependencies = [ + "anyhow", + "axum", + "image", + "include_dir", + "serde", + "serde_json", + "tokio", + "tokio-util", + "tower", + "tower-http", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "syn" +version = "2.0.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "sync_wrapper" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384595c11a4e2969895cad5a8c4029115f5ab956a9e5ef4de79d11a426e5f20c" + +[[package]] +name = "thread_local" +version = "1.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "tiff" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +dependencies = [ + "flate2", + "jpeg-decoder", + "weezl", +] + +[[package]] +name = "tokio" +version = "1.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-util" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "futures-core", + "futures-util", + "pin-project", + "pin-project-lite", + "tokio", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-http" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" +dependencies = [ + "bitflags 2.5.0", + "bytes", + "futures-util", + "http", + "http-body", + "http-body-util", + "http-range-header", + "httpdate", + "mime", + "mime_guess", + "percent-encoding", + "pin-project-lite", + "tokio", + "tokio-util", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +dependencies = [ + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "unicase" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "weezl" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.4", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +dependencies = [ + "windows_aarch64_gnullvm 0.52.4", + "windows_aarch64_msvc 0.52.4", + "windows_i686_gnu 0.52.4", + "windows_i686_msvc 0.52.4", + "windows_x86_64_gnu 0.52.4", + "windows_x86_64_gnullvm 0.52.4", + "windows_x86_64_msvc 0.52.4", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] diff --git a/server/Cargo.toml b/server/Cargo.toml new file mode 100644 index 0000000..8c206b7 --- /dev/null +++ b/server/Cargo.toml @@ -0,0 +1,20 @@ +[package] +edition = "2021" +name = "spiegel-server" +version = "0.1.0" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +axum = { version = "0.7" } +serde = { version = "1.0", features = ["derive"] } +serde_json = "1.0" +tokio = { version = "1.36", features = ["full"] } +tracing = "0.1" +tracing-subscriber = { version = "0.3", features = ["env-filter"] } +image = "0.24.1" +anyhow = "1.0" +include_dir = "0.7.3" +tokio-util = { version = "0.7", features = ["io"] } +tower = { version = "0.4", features = ["util"] } +tower-http = { version = "0.5.0", features = ["fs", "trace"] } diff --git a/server/src/lib.rs b/server/src/lib.rs new file mode 100644 index 0000000..0b24ebd --- /dev/null +++ b/server/src/lib.rs @@ -0,0 +1,74 @@ +use std::sync::OnceLock; + +use include_dir::{include_dir, Dir, DirEntry}; + +static SAMPLES: OnceLock> = OnceLock::new(); +static SAMPLES_DIR: Dir = include_dir!("src/samples"); + +pub fn init() { + SAMPLES.get_or_init(|| { + println!("reading image samples"); + read_color_samples().unwrap() + }); +} + +pub fn get_closest_color<'a>(color: &String) -> &'a ColorSample { + let color_samples = SAMPLES.get().unwrap(); + let mut closest = None; + let mut min_diff: f32 = 4294967295.0; //0xFFFFFFFF + for sample in color_samples { + let diff = get_distance(sample.r, sample.g, sample.b, color); + if diff < min_diff { + closest = Some(sample); + min_diff = diff; + } + } + + closest.unwrap() +} + +/// returns squared euclidian color distance +/// as if colors were points in 3d space +fn get_distance(r1: u8, g1: u8, b1: u8, rgb: &String) -> f32 { + let r2 = u8::from_str_radix(&rgb[0..2], 16).unwrap(); + let g2 = u8::from_str_radix(&rgb[2..4], 16).unwrap(); + let b2 = u8::from_str_radix(&rgb[4..6], 16).unwrap(); + let red_dif = r1 as f32 - r2 as f32; + let green_dif = g1 as f32 - g2 as f32; + let blue_dif = b1 as f32 - b2 as f32; + return red_dif * red_dif + green_dif * green_dif + blue_dif * blue_dif; +} + +/// read all sample jpegs into memory +pub fn read_color_samples() -> anyhow::Result> { + let mut color_samples: Vec = Vec::new(); + + for entry in SAMPLES_DIR.entries() { + if let DirEntry::File(f) = entry { + let sample_image = f.contents(); + + let filename = entry.path().file_name().unwrap().to_str().unwrap(); + let hex_r = &filename[0..2]; + let hex_g = &filename[2..4]; + let hex_b = &filename[4..6]; + color_samples.push(ColorSample { + filename: filename.into(), + r: u8::from_str_radix(&hex_r, 16)?, + g: u8::from_str_radix(&hex_g, 16)?, + b: u8::from_str_radix(&hex_b, 16)?, + image: sample_image, + }); + } + } + println!("Done reading image samples"); + Ok(color_samples) +} + +#[derive(Debug)] +pub struct ColorSample { + pub filename: String, + pub r: u8, + pub g: u8, + pub b: u8, + pub image: &'static [u8], +} diff --git a/server/src/main.rs b/server/src/main.rs new file mode 100644 index 0000000..c54555c --- /dev/null +++ b/server/src/main.rs @@ -0,0 +1,32 @@ +use axum::extract::Path; +use axum::http::{header, StatusCode}; +use axum::response::IntoResponse; +use axum::{routing::get, Router}; +use spiegel_server::{get_closest_color, init}; + +/// serves images from memory +#[tokio::main] +async fn main() -> anyhow::Result<()> { + tracing_subscriber::fmt::init(); + init(); + let app = Router::new().route("/color/:rgb_hex", get(fetch_nearest_color)); + + let listener = tokio::net::TcpListener::bind("0.0.0.0:3000").await.unwrap(); + axum::serve(listener, app).await.unwrap(); + Ok(()) +} + +async fn fetch_nearest_color( + Path(rgb_hex): Path, +) -> Result { + if rgb_hex.len() != 6 { + return Err(( + StatusCode::BAD_REQUEST, + "input should be color hex, eg AA11CC".into(), + )); + } + let closest = get_closest_color(&rgb_hex); + + let headers = [(header::CONTENT_TYPE, "image/jpeg")]; + Ok((headers, closest.image)) +} diff --git a/server/src/samples/12110f.jpg b/server/src/samples/12110f.jpg new file mode 100644 index 0000000..04bc9c1 Binary files /dev/null and b/server/src/samples/12110f.jpg differ diff --git a/server/src/samples/131211.jpg b/server/src/samples/131211.jpg new file mode 100644 index 0000000..5fa1ca7 Binary files /dev/null and b/server/src/samples/131211.jpg differ diff --git a/server/src/samples/21201b.jpg b/server/src/samples/21201b.jpg new file mode 100644 index 0000000..09fc7db Binary files /dev/null and b/server/src/samples/21201b.jpg differ diff --git a/server/src/samples/21201d.jpg b/server/src/samples/21201d.jpg new file mode 100644 index 0000000..eaef8a9 Binary files /dev/null and b/server/src/samples/21201d.jpg differ diff --git a/server/src/samples/212213.jpg b/server/src/samples/212213.jpg new file mode 100644 index 0000000..63ecd82 Binary files /dev/null and b/server/src/samples/212213.jpg differ diff --git a/server/src/samples/22211b.jpg b/server/src/samples/22211b.jpg new file mode 100644 index 0000000..8182973 Binary files /dev/null and b/server/src/samples/22211b.jpg differ diff --git a/server/src/samples/23221d.jpg b/server/src/samples/23221d.jpg new file mode 100644 index 0000000..9fe1a5c Binary files /dev/null and b/server/src/samples/23221d.jpg differ diff --git a/server/src/samples/23221f.jpg b/server/src/samples/23221f.jpg new file mode 100644 index 0000000..3990104 Binary files /dev/null and b/server/src/samples/23221f.jpg differ diff --git a/server/src/samples/24231d.jpg b/server/src/samples/24231d.jpg new file mode 100644 index 0000000..f015308 Binary files /dev/null and b/server/src/samples/24231d.jpg differ diff --git a/server/src/samples/252520.jpg b/server/src/samples/252520.jpg new file mode 100644 index 0000000..a78613b Binary files /dev/null and b/server/src/samples/252520.jpg differ diff --git a/server/src/samples/262527.jpg b/server/src/samples/262527.jpg new file mode 100644 index 0000000..9025a02 Binary files /dev/null and b/server/src/samples/262527.jpg differ diff --git a/server/src/samples/262628.jpg b/server/src/samples/262628.jpg new file mode 100644 index 0000000..921ec09 Binary files /dev/null and b/server/src/samples/262628.jpg differ diff --git a/server/src/samples/272826.jpg b/server/src/samples/272826.jpg new file mode 100644 index 0000000..9c98255 Binary files /dev/null and b/server/src/samples/272826.jpg differ diff --git a/server/src/samples/291f19.jpg b/server/src/samples/291f19.jpg new file mode 100644 index 0000000..f5ce849 Binary files /dev/null and b/server/src/samples/291f19.jpg differ diff --git a/server/src/samples/292927.jpg b/server/src/samples/292927.jpg new file mode 100644 index 0000000..497f3a4 Binary files /dev/null and b/server/src/samples/292927.jpg differ diff --git a/server/src/samples/292a29.jpg b/server/src/samples/292a29.jpg new file mode 100644 index 0000000..b7ea79f Binary files /dev/null and b/server/src/samples/292a29.jpg differ diff --git a/server/src/samples/2a2a28.jpg b/server/src/samples/2a2a28.jpg new file mode 100644 index 0000000..18709a7 Binary files /dev/null and b/server/src/samples/2a2a28.jpg differ diff --git a/server/src/samples/2a3960.jpg b/server/src/samples/2a3960.jpg new file mode 100644 index 0000000..5b1dff5 Binary files /dev/null and b/server/src/samples/2a3960.jpg differ diff --git a/server/src/samples/2b3a5f.jpg b/server/src/samples/2b3a5f.jpg new file mode 100644 index 0000000..251a416 Binary files /dev/null and b/server/src/samples/2b3a5f.jpg differ diff --git a/server/src/samples/2c2c24.jpg b/server/src/samples/2c2c24.jpg new file mode 100644 index 0000000..c245028 Binary files /dev/null and b/server/src/samples/2c2c24.jpg differ diff --git a/server/src/samples/2c3b64.jpg b/server/src/samples/2c3b64.jpg new file mode 100644 index 0000000..c7a4930 Binary files /dev/null and b/server/src/samples/2c3b64.jpg differ diff --git a/server/src/samples/2c3c40.jpg b/server/src/samples/2c3c40.jpg new file mode 100644 index 0000000..09b2061 Binary files /dev/null and b/server/src/samples/2c3c40.jpg differ diff --git a/server/src/samples/2e2d26.jpg b/server/src/samples/2e2d26.jpg new file mode 100644 index 0000000..597b323 Binary files /dev/null and b/server/src/samples/2e2d26.jpg differ diff --git a/server/src/samples/2e2d28.jpg b/server/src/samples/2e2d28.jpg new file mode 100644 index 0000000..3101f77 Binary files /dev/null and b/server/src/samples/2e2d28.jpg differ diff --git a/server/src/samples/30301c.jpg b/server/src/samples/30301c.jpg new file mode 100644 index 0000000..7c84e27 Binary files /dev/null and b/server/src/samples/30301c.jpg differ diff --git a/server/src/samples/303030.jpg b/server/src/samples/303030.jpg new file mode 100644 index 0000000..fd2d662 Binary files /dev/null and b/server/src/samples/303030.jpg differ diff --git a/server/src/samples/303131.jpg b/server/src/samples/303131.jpg new file mode 100644 index 0000000..e944d95 Binary files /dev/null and b/server/src/samples/303131.jpg differ diff --git a/server/src/samples/303632.jpg b/server/src/samples/303632.jpg new file mode 100644 index 0000000..da95bb8 Binary files /dev/null and b/server/src/samples/303632.jpg differ diff --git a/server/src/samples/31302b.jpg b/server/src/samples/31302b.jpg new file mode 100644 index 0000000..97d260e Binary files /dev/null and b/server/src/samples/31302b.jpg differ diff --git a/server/src/samples/313131.jpg b/server/src/samples/313131.jpg new file mode 100644 index 0000000..076fcc8 Binary files /dev/null and b/server/src/samples/313131.jpg differ diff --git a/server/src/samples/32373a.jpg b/server/src/samples/32373a.jpg new file mode 100644 index 0000000..9c72c1d Binary files /dev/null and b/server/src/samples/32373a.jpg differ diff --git a/server/src/samples/32373b.jpg b/server/src/samples/32373b.jpg new file mode 100644 index 0000000..ee0dcc6 Binary files /dev/null and b/server/src/samples/32373b.jpg differ diff --git a/server/src/samples/333a73.jpg b/server/src/samples/333a73.jpg new file mode 100644 index 0000000..673154a Binary files /dev/null and b/server/src/samples/333a73.jpg differ diff --git a/server/src/samples/334840.jpg b/server/src/samples/334840.jpg new file mode 100644 index 0000000..83db569 Binary files /dev/null and b/server/src/samples/334840.jpg differ diff --git a/server/src/samples/343a6f.jpg b/server/src/samples/343a6f.jpg new file mode 100644 index 0000000..7a9544b Binary files /dev/null and b/server/src/samples/343a6f.jpg differ diff --git a/server/src/samples/343b73.jpg b/server/src/samples/343b73.jpg new file mode 100644 index 0000000..821eb18 Binary files /dev/null and b/server/src/samples/343b73.jpg differ diff --git a/server/src/samples/344845.jpg b/server/src/samples/344845.jpg new file mode 100644 index 0000000..eaab2b9 Binary files /dev/null and b/server/src/samples/344845.jpg differ diff --git a/server/src/samples/353420.jpg b/server/src/samples/353420.jpg new file mode 100644 index 0000000..ba5160a Binary files /dev/null and b/server/src/samples/353420.jpg differ diff --git a/server/src/samples/35342f.jpg b/server/src/samples/35342f.jpg new file mode 100644 index 0000000..1cdd4dc Binary files /dev/null and b/server/src/samples/35342f.jpg differ diff --git a/server/src/samples/353a39.jpg b/server/src/samples/353a39.jpg new file mode 100644 index 0000000..c3fcc93 Binary files /dev/null and b/server/src/samples/353a39.jpg differ diff --git a/server/src/samples/353b43.jpg b/server/src/samples/353b43.jpg new file mode 100644 index 0000000..3681952 Binary files /dev/null and b/server/src/samples/353b43.jpg differ diff --git a/server/src/samples/363531.jpg b/server/src/samples/363531.jpg new file mode 100644 index 0000000..df9193c Binary files /dev/null and b/server/src/samples/363531.jpg differ diff --git a/server/src/samples/363c71.jpg b/server/src/samples/363c71.jpg new file mode 100644 index 0000000..43da75e Binary files /dev/null and b/server/src/samples/363c71.jpg differ diff --git a/server/src/samples/36414c.jpg b/server/src/samples/36414c.jpg new file mode 100644 index 0000000..2c6ab54 Binary files /dev/null and b/server/src/samples/36414c.jpg differ diff --git a/server/src/samples/364968.jpg b/server/src/samples/364968.jpg new file mode 100644 index 0000000..415adc0 Binary files /dev/null and b/server/src/samples/364968.jpg differ diff --git a/server/src/samples/373530.jpg b/server/src/samples/373530.jpg new file mode 100644 index 0000000..14cfeb2 Binary files /dev/null and b/server/src/samples/373530.jpg differ diff --git a/server/src/samples/373a54.jpg b/server/src/samples/373a54.jpg new file mode 100644 index 0000000..a8781aa Binary files /dev/null and b/server/src/samples/373a54.jpg differ diff --git a/server/src/samples/373b46.jpg b/server/src/samples/373b46.jpg new file mode 100644 index 0000000..c35d3c0 Binary files /dev/null and b/server/src/samples/373b46.jpg differ diff --git a/server/src/samples/373d2f.jpg b/server/src/samples/373d2f.jpg new file mode 100644 index 0000000..5ef7dc6 Binary files /dev/null and b/server/src/samples/373d2f.jpg differ diff --git a/server/src/samples/373d47.jpg b/server/src/samples/373d47.jpg new file mode 100644 index 0000000..3f1e401 Binary files /dev/null and b/server/src/samples/373d47.jpg differ diff --git a/server/src/samples/373d71.jpg b/server/src/samples/373d71.jpg new file mode 100644 index 0000000..2e29df9 Binary files /dev/null and b/server/src/samples/373d71.jpg differ diff --git a/server/src/samples/382f1f.jpg b/server/src/samples/382f1f.jpg new file mode 100644 index 0000000..8341c93 Binary files /dev/null and b/server/src/samples/382f1f.jpg differ diff --git a/server/src/samples/383732.jpg b/server/src/samples/383732.jpg new file mode 100644 index 0000000..296291c Binary files /dev/null and b/server/src/samples/383732.jpg differ diff --git a/server/src/samples/383831.jpg b/server/src/samples/383831.jpg new file mode 100644 index 0000000..a399a8a Binary files /dev/null and b/server/src/samples/383831.jpg differ diff --git a/server/src/samples/383832.jpg b/server/src/samples/383832.jpg new file mode 100644 index 0000000..482c466 Binary files /dev/null and b/server/src/samples/383832.jpg differ diff --git a/server/src/samples/383a46.jpg b/server/src/samples/383a46.jpg new file mode 100644 index 0000000..d7f288c Binary files /dev/null and b/server/src/samples/383a46.jpg differ diff --git a/server/src/samples/383c4f.jpg b/server/src/samples/383c4f.jpg new file mode 100644 index 0000000..37ce6f9 Binary files /dev/null and b/server/src/samples/383c4f.jpg differ diff --git a/server/src/samples/383d48.jpg b/server/src/samples/383d48.jpg new file mode 100644 index 0000000..27e480f Binary files /dev/null and b/server/src/samples/383d48.jpg differ diff --git a/server/src/samples/384142.jpg b/server/src/samples/384142.jpg new file mode 100644 index 0000000..2ff385f Binary files /dev/null and b/server/src/samples/384142.jpg differ diff --git a/server/src/samples/38495a.jpg b/server/src/samples/38495a.jpg new file mode 100644 index 0000000..27a00c6 Binary files /dev/null and b/server/src/samples/38495a.jpg differ diff --git a/server/src/samples/384b51.jpg b/server/src/samples/384b51.jpg new file mode 100644 index 0000000..3af4055 Binary files /dev/null and b/server/src/samples/384b51.jpg differ diff --git a/server/src/samples/393b39.jpg b/server/src/samples/393b39.jpg new file mode 100644 index 0000000..ab35b17 Binary files /dev/null and b/server/src/samples/393b39.jpg differ diff --git a/server/src/samples/394235.jpg b/server/src/samples/394235.jpg new file mode 100644 index 0000000..d481e58 Binary files /dev/null and b/server/src/samples/394235.jpg differ diff --git a/server/src/samples/3a4042.jpg b/server/src/samples/3a4042.jpg new file mode 100644 index 0000000..9922690 Binary files /dev/null and b/server/src/samples/3a4042.jpg differ diff --git a/server/src/samples/3a4242.jpg b/server/src/samples/3a4242.jpg new file mode 100644 index 0000000..f2a3ff7 Binary files /dev/null and b/server/src/samples/3a4242.jpg differ diff --git a/server/src/samples/3b4435.jpg b/server/src/samples/3b4435.jpg new file mode 100644 index 0000000..bc7f7a1 Binary files /dev/null and b/server/src/samples/3b4435.jpg differ diff --git a/server/src/samples/3b4a6b.jpg b/server/src/samples/3b4a6b.jpg new file mode 100644 index 0000000..9ebcdf0 Binary files /dev/null and b/server/src/samples/3b4a6b.jpg differ diff --git a/server/src/samples/3b4f6b.jpg b/server/src/samples/3b4f6b.jpg new file mode 100644 index 0000000..5f2db99 Binary files /dev/null and b/server/src/samples/3b4f6b.jpg differ diff --git a/server/src/samples/3c3b34.jpg b/server/src/samples/3c3b34.jpg new file mode 100644 index 0000000..62d2d7a Binary files /dev/null and b/server/src/samples/3c3b34.jpg differ diff --git a/server/src/samples/3c4d5f.jpg b/server/src/samples/3c4d5f.jpg new file mode 100644 index 0000000..b4044a1 Binary files /dev/null and b/server/src/samples/3c4d5f.jpg differ diff --git a/server/src/samples/3d342a.jpg b/server/src/samples/3d342a.jpg new file mode 100644 index 0000000..c1d4499 Binary files /dev/null and b/server/src/samples/3d342a.jpg differ diff --git a/server/src/samples/3d4343.jpg b/server/src/samples/3d4343.jpg new file mode 100644 index 0000000..a57b7ed Binary files /dev/null and b/server/src/samples/3d4343.jpg differ diff --git a/server/src/samples/3d4a63.jpg b/server/src/samples/3d4a63.jpg new file mode 100644 index 0000000..e286ab9 Binary files /dev/null and b/server/src/samples/3d4a63.jpg differ diff --git a/server/src/samples/3e3524.jpg b/server/src/samples/3e3524.jpg new file mode 100644 index 0000000..bdf8286 Binary files /dev/null and b/server/src/samples/3e3524.jpg differ diff --git a/server/src/samples/3e3830.jpg b/server/src/samples/3e3830.jpg new file mode 100644 index 0000000..9c4de20 Binary files /dev/null and b/server/src/samples/3e3830.jpg differ diff --git a/server/src/samples/3e3e32.jpg b/server/src/samples/3e3e32.jpg new file mode 100644 index 0000000..fe8df32 Binary files /dev/null and b/server/src/samples/3e3e32.jpg differ diff --git a/server/src/samples/3e3e4a.jpg b/server/src/samples/3e3e4a.jpg new file mode 100644 index 0000000..0ef06e7 Binary files /dev/null and b/server/src/samples/3e3e4a.jpg differ diff --git a/server/src/samples/3e3f27.jpg b/server/src/samples/3e3f27.jpg new file mode 100644 index 0000000..ad36bd3 Binary files /dev/null and b/server/src/samples/3e3f27.jpg differ diff --git a/server/src/samples/3e4543.jpg b/server/src/samples/3e4543.jpg new file mode 100644 index 0000000..a4fc3e5 Binary files /dev/null and b/server/src/samples/3e4543.jpg differ diff --git a/server/src/samples/3f3f3a.jpg b/server/src/samples/3f3f3a.jpg new file mode 100644 index 0000000..b8c4e9b Binary files /dev/null and b/server/src/samples/3f3f3a.jpg differ diff --git a/server/src/samples/3f404f.jpg b/server/src/samples/3f404f.jpg new file mode 100644 index 0000000..5e14558 Binary files /dev/null and b/server/src/samples/3f404f.jpg differ diff --git a/server/src/samples/3f423b.jpg b/server/src/samples/3f423b.jpg new file mode 100644 index 0000000..8bbd04e Binary files /dev/null and b/server/src/samples/3f423b.jpg differ diff --git a/server/src/samples/3f4b56.jpg b/server/src/samples/3f4b56.jpg new file mode 100644 index 0000000..403d511 Binary files /dev/null and b/server/src/samples/3f4b56.jpg differ diff --git a/server/src/samples/3f527a.jpg b/server/src/samples/3f527a.jpg new file mode 100644 index 0000000..cbeeb3a Binary files /dev/null and b/server/src/samples/3f527a.jpg differ diff --git a/server/src/samples/3f5352.jpg b/server/src/samples/3f5352.jpg new file mode 100644 index 0000000..efe255f Binary files /dev/null and b/server/src/samples/3f5352.jpg differ diff --git a/server/src/samples/40434b.jpg b/server/src/samples/40434b.jpg new file mode 100644 index 0000000..9102eac Binary files /dev/null and b/server/src/samples/40434b.jpg differ diff --git a/server/src/samples/404358.jpg b/server/src/samples/404358.jpg new file mode 100644 index 0000000..1c43406 Binary files /dev/null and b/server/src/samples/404358.jpg differ diff --git a/server/src/samples/413327.jpg b/server/src/samples/413327.jpg new file mode 100644 index 0000000..3d033eb Binary files /dev/null and b/server/src/samples/413327.jpg differ diff --git a/server/src/samples/413d2c.jpg b/server/src/samples/413d2c.jpg new file mode 100644 index 0000000..d915b86 Binary files /dev/null and b/server/src/samples/413d2c.jpg differ diff --git a/server/src/samples/413f56.jpg b/server/src/samples/413f56.jpg new file mode 100644 index 0000000..6d1b936 Binary files /dev/null and b/server/src/samples/413f56.jpg differ diff --git a/server/src/samples/41403d.jpg b/server/src/samples/41403d.jpg new file mode 100644 index 0000000..724a99e Binary files /dev/null and b/server/src/samples/41403d.jpg differ diff --git a/server/src/samples/414646.jpg b/server/src/samples/414646.jpg new file mode 100644 index 0000000..142afe1 Binary files /dev/null and b/server/src/samples/414646.jpg differ diff --git a/server/src/samples/41494e.jpg b/server/src/samples/41494e.jpg new file mode 100644 index 0000000..ff09777 Binary files /dev/null and b/server/src/samples/41494e.jpg differ diff --git a/server/src/samples/424b4a.jpg b/server/src/samples/424b4a.jpg new file mode 100644 index 0000000..b98af64 Binary files /dev/null and b/server/src/samples/424b4a.jpg differ diff --git a/server/src/samples/43423c.jpg b/server/src/samples/43423c.jpg new file mode 100644 index 0000000..918dd1a Binary files /dev/null and b/server/src/samples/43423c.jpg differ diff --git a/server/src/samples/43475c.jpg b/server/src/samples/43475c.jpg new file mode 100644 index 0000000..fd25342 Binary files /dev/null and b/server/src/samples/43475c.jpg differ diff --git a/server/src/samples/434943.jpg b/server/src/samples/434943.jpg new file mode 100644 index 0000000..a531083 Binary files /dev/null and b/server/src/samples/434943.jpg differ diff --git a/server/src/samples/434a54.jpg b/server/src/samples/434a54.jpg new file mode 100644 index 0000000..fcfac7d Binary files /dev/null and b/server/src/samples/434a54.jpg differ diff --git a/server/src/samples/435969.jpg b/server/src/samples/435969.jpg new file mode 100644 index 0000000..30c9093 Binary files /dev/null and b/server/src/samples/435969.jpg differ diff --git a/server/src/samples/44414a.jpg b/server/src/samples/44414a.jpg new file mode 100644 index 0000000..29f530e Binary files /dev/null and b/server/src/samples/44414a.jpg differ diff --git a/server/src/samples/444933.jpg b/server/src/samples/444933.jpg new file mode 100644 index 0000000..6f658c2 Binary files /dev/null and b/server/src/samples/444933.jpg differ diff --git a/server/src/samples/444d4e.jpg b/server/src/samples/444d4e.jpg new file mode 100644 index 0000000..a258b3a Binary files /dev/null and b/server/src/samples/444d4e.jpg differ diff --git a/server/src/samples/453a2c.jpg b/server/src/samples/453a2c.jpg new file mode 100644 index 0000000..c39687a Binary files /dev/null and b/server/src/samples/453a2c.jpg differ diff --git a/server/src/samples/453b2f.jpg b/server/src/samples/453b2f.jpg new file mode 100644 index 0000000..0fc5977 Binary files /dev/null and b/server/src/samples/453b2f.jpg differ diff --git a/server/src/samples/454048.jpg b/server/src/samples/454048.jpg new file mode 100644 index 0000000..614d5fb Binary files /dev/null and b/server/src/samples/454048.jpg differ diff --git a/server/src/samples/454534.jpg b/server/src/samples/454534.jpg new file mode 100644 index 0000000..9063880 Binary files /dev/null and b/server/src/samples/454534.jpg differ diff --git a/server/src/samples/45453e.jpg b/server/src/samples/45453e.jpg new file mode 100644 index 0000000..fd8b33a Binary files /dev/null and b/server/src/samples/45453e.jpg differ diff --git a/server/src/samples/454c48.jpg b/server/src/samples/454c48.jpg new file mode 100644 index 0000000..117df52 Binary files /dev/null and b/server/src/samples/454c48.jpg differ diff --git a/server/src/samples/454c4c.jpg b/server/src/samples/454c4c.jpg new file mode 100644 index 0000000..5e2ed4e Binary files /dev/null and b/server/src/samples/454c4c.jpg differ diff --git a/server/src/samples/463728.jpg b/server/src/samples/463728.jpg new file mode 100644 index 0000000..d90b08e Binary files /dev/null and b/server/src/samples/463728.jpg differ diff --git a/server/src/samples/463e36.jpg b/server/src/samples/463e36.jpg new file mode 100644 index 0000000..0961ecb Binary files /dev/null and b/server/src/samples/463e36.jpg differ diff --git a/server/src/samples/464226.jpg b/server/src/samples/464226.jpg new file mode 100644 index 0000000..03bb715 Binary files /dev/null and b/server/src/samples/464226.jpg differ diff --git a/server/src/samples/464540.jpg b/server/src/samples/464540.jpg new file mode 100644 index 0000000..e11d411 Binary files /dev/null and b/server/src/samples/464540.jpg differ diff --git a/server/src/samples/464832.jpg b/server/src/samples/464832.jpg new file mode 100644 index 0000000..3562c17 Binary files /dev/null and b/server/src/samples/464832.jpg differ diff --git a/server/src/samples/464e4d.jpg b/server/src/samples/464e4d.jpg new file mode 100644 index 0000000..e867381 Binary files /dev/null and b/server/src/samples/464e4d.jpg differ diff --git a/server/src/samples/473e2f.jpg b/server/src/samples/473e2f.jpg new file mode 100644 index 0000000..25e7fe2 Binary files /dev/null and b/server/src/samples/473e2f.jpg differ diff --git a/server/src/samples/47443b.jpg b/server/src/samples/47443b.jpg new file mode 100644 index 0000000..6dcbf3e Binary files /dev/null and b/server/src/samples/47443b.jpg differ diff --git a/server/src/samples/474550.jpg b/server/src/samples/474550.jpg new file mode 100644 index 0000000..3495e51 Binary files /dev/null and b/server/src/samples/474550.jpg differ diff --git a/server/src/samples/475141.jpg b/server/src/samples/475141.jpg new file mode 100644 index 0000000..e3115da Binary files /dev/null and b/server/src/samples/475141.jpg differ diff --git a/server/src/samples/475237.jpg b/server/src/samples/475237.jpg new file mode 100644 index 0000000..74eca32 Binary files /dev/null and b/server/src/samples/475237.jpg differ diff --git a/server/src/samples/475f6e.jpg b/server/src/samples/475f6e.jpg new file mode 100644 index 0000000..e16d948 Binary files /dev/null and b/server/src/samples/475f6e.jpg differ diff --git a/server/src/samples/484841.jpg b/server/src/samples/484841.jpg new file mode 100644 index 0000000..4486ece Binary files /dev/null and b/server/src/samples/484841.jpg differ diff --git a/server/src/samples/484846.jpg b/server/src/samples/484846.jpg new file mode 100644 index 0000000..644cdbf Binary files /dev/null and b/server/src/samples/484846.jpg differ diff --git a/server/src/samples/484853.jpg b/server/src/samples/484853.jpg new file mode 100644 index 0000000..77ac4bc Binary files /dev/null and b/server/src/samples/484853.jpg differ diff --git a/server/src/samples/484b43.jpg b/server/src/samples/484b43.jpg new file mode 100644 index 0000000..eb40454 Binary files /dev/null and b/server/src/samples/484b43.jpg differ diff --git a/server/src/samples/484c49.jpg b/server/src/samples/484c49.jpg new file mode 100644 index 0000000..4a54de6 Binary files /dev/null and b/server/src/samples/484c49.jpg differ diff --git a/server/src/samples/485162.jpg b/server/src/samples/485162.jpg new file mode 100644 index 0000000..cc28b52 Binary files /dev/null and b/server/src/samples/485162.jpg differ diff --git a/server/src/samples/49323c.jpg b/server/src/samples/49323c.jpg new file mode 100644 index 0000000..affa776 Binary files /dev/null and b/server/src/samples/49323c.jpg differ diff --git a/server/src/samples/493c3b.jpg b/server/src/samples/493c3b.jpg new file mode 100644 index 0000000..a6a79a4 Binary files /dev/null and b/server/src/samples/493c3b.jpg differ diff --git a/server/src/samples/494941.jpg b/server/src/samples/494941.jpg new file mode 100644 index 0000000..cc41f3e Binary files /dev/null and b/server/src/samples/494941.jpg differ diff --git a/server/src/samples/494a3b.jpg b/server/src/samples/494a3b.jpg new file mode 100644 index 0000000..5f0e028 Binary files /dev/null and b/server/src/samples/494a3b.jpg differ diff --git a/server/src/samples/495950.jpg b/server/src/samples/495950.jpg new file mode 100644 index 0000000..c0c81b2 Binary files /dev/null and b/server/src/samples/495950.jpg differ diff --git a/server/src/samples/495c62.jpg b/server/src/samples/495c62.jpg new file mode 100644 index 0000000..1ed18cb Binary files /dev/null and b/server/src/samples/495c62.jpg differ diff --git a/server/src/samples/495d6d.jpg b/server/src/samples/495d6d.jpg new file mode 100644 index 0000000..4e35d7b Binary files /dev/null and b/server/src/samples/495d6d.jpg differ diff --git a/server/src/samples/4a4052.jpg b/server/src/samples/4a4052.jpg new file mode 100644 index 0000000..266d92a Binary files /dev/null and b/server/src/samples/4a4052.jpg differ diff --git a/server/src/samples/4a4326.jpg b/server/src/samples/4a4326.jpg new file mode 100644 index 0000000..6c26f94 Binary files /dev/null and b/server/src/samples/4a4326.jpg differ diff --git a/server/src/samples/4a4a42.jpg b/server/src/samples/4a4a42.jpg new file mode 100644 index 0000000..b28e5a4 Binary files /dev/null and b/server/src/samples/4a4a42.jpg differ diff --git a/server/src/samples/4a4c3f.jpg b/server/src/samples/4a4c3f.jpg new file mode 100644 index 0000000..4c3d6db Binary files /dev/null and b/server/src/samples/4a4c3f.jpg differ diff --git a/server/src/samples/4a4c41.jpg b/server/src/samples/4a4c41.jpg new file mode 100644 index 0000000..8b55429 Binary files /dev/null and b/server/src/samples/4a4c41.jpg differ diff --git a/server/src/samples/4a5050.jpg b/server/src/samples/4a5050.jpg new file mode 100644 index 0000000..5b621bd Binary files /dev/null and b/server/src/samples/4a5050.jpg differ diff --git a/server/src/samples/4a5159.jpg b/server/src/samples/4a5159.jpg new file mode 100644 index 0000000..25de1c6 Binary files /dev/null and b/server/src/samples/4a5159.jpg differ diff --git a/server/src/samples/4a5f6e.jpg b/server/src/samples/4a5f6e.jpg new file mode 100644 index 0000000..c2e45b1 Binary files /dev/null and b/server/src/samples/4a5f6e.jpg differ diff --git a/server/src/samples/4b3541.jpg b/server/src/samples/4b3541.jpg new file mode 100644 index 0000000..702c9ff Binary files /dev/null and b/server/src/samples/4b3541.jpg differ diff --git a/server/src/samples/4b4737.jpg b/server/src/samples/4b4737.jpg new file mode 100644 index 0000000..3ee9a56 Binary files /dev/null and b/server/src/samples/4b4737.jpg differ diff --git a/server/src/samples/4b4941.jpg b/server/src/samples/4b4941.jpg new file mode 100644 index 0000000..2679517 Binary files /dev/null and b/server/src/samples/4b4941.jpg differ diff --git a/server/src/samples/4b4b44.jpg b/server/src/samples/4b4b44.jpg new file mode 100644 index 0000000..c69198d Binary files /dev/null and b/server/src/samples/4b4b44.jpg differ diff --git a/server/src/samples/4b4b57.jpg b/server/src/samples/4b4b57.jpg new file mode 100644 index 0000000..114dfd4 Binary files /dev/null and b/server/src/samples/4b4b57.jpg differ diff --git a/server/src/samples/4b4c4b.jpg b/server/src/samples/4b4c4b.jpg new file mode 100644 index 0000000..1aaa067 Binary files /dev/null and b/server/src/samples/4b4c4b.jpg differ diff --git a/server/src/samples/4b4d4c.jpg b/server/src/samples/4b4d4c.jpg new file mode 100644 index 0000000..d8346f1 Binary files /dev/null and b/server/src/samples/4b4d4c.jpg differ diff --git a/server/src/samples/4b4f41.jpg b/server/src/samples/4b4f41.jpg new file mode 100644 index 0000000..30e8f37 Binary files /dev/null and b/server/src/samples/4b4f41.jpg differ diff --git a/server/src/samples/4c4b57.jpg b/server/src/samples/4c4b57.jpg new file mode 100644 index 0000000..1e864cb Binary files /dev/null and b/server/src/samples/4c4b57.jpg differ diff --git a/server/src/samples/4c4f59.jpg b/server/src/samples/4c4f59.jpg new file mode 100644 index 0000000..699284e Binary files /dev/null and b/server/src/samples/4c4f59.jpg differ diff --git a/server/src/samples/4c505b.jpg b/server/src/samples/4c505b.jpg new file mode 100644 index 0000000..1576ccc Binary files /dev/null and b/server/src/samples/4c505b.jpg differ diff --git a/server/src/samples/4d4533.jpg b/server/src/samples/4d4533.jpg new file mode 100644 index 0000000..54c0265 Binary files /dev/null and b/server/src/samples/4d4533.jpg differ diff --git a/server/src/samples/4d4b4b.jpg b/server/src/samples/4d4b4b.jpg new file mode 100644 index 0000000..731eddd Binary files /dev/null and b/server/src/samples/4d4b4b.jpg differ diff --git a/server/src/samples/4d4b58.jpg b/server/src/samples/4d4b58.jpg new file mode 100644 index 0000000..aba1eba Binary files /dev/null and b/server/src/samples/4d4b58.jpg differ diff --git a/server/src/samples/4d4d44.jpg b/server/src/samples/4d4d44.jpg new file mode 100644 index 0000000..8838602 Binary files /dev/null and b/server/src/samples/4d4d44.jpg differ diff --git a/server/src/samples/4d4e47.jpg b/server/src/samples/4d4e47.jpg new file mode 100644 index 0000000..1db2e85 Binary files /dev/null and b/server/src/samples/4d4e47.jpg differ diff --git a/server/src/samples/4d4f39.jpg b/server/src/samples/4d4f39.jpg new file mode 100644 index 0000000..65ff608 Binary files /dev/null and b/server/src/samples/4d4f39.jpg differ diff --git a/server/src/samples/4d545d.jpg b/server/src/samples/4d545d.jpg new file mode 100644 index 0000000..52e9aeb Binary files /dev/null and b/server/src/samples/4d545d.jpg differ diff --git a/server/src/samples/4d5554.jpg b/server/src/samples/4d5554.jpg new file mode 100644 index 0000000..87f9648 Binary files /dev/null and b/server/src/samples/4d5554.jpg differ diff --git a/server/src/samples/4d5656.jpg b/server/src/samples/4d5656.jpg new file mode 100644 index 0000000..474dbd1 Binary files /dev/null and b/server/src/samples/4d5656.jpg differ diff --git a/server/src/samples/4d616e.jpg b/server/src/samples/4d616e.jpg new file mode 100644 index 0000000..4885b99 Binary files /dev/null and b/server/src/samples/4d616e.jpg differ diff --git a/server/src/samples/4e3b2e.jpg b/server/src/samples/4e3b2e.jpg new file mode 100644 index 0000000..15aad5d Binary files /dev/null and b/server/src/samples/4e3b2e.jpg differ diff --git a/server/src/samples/4e3d1d.jpg b/server/src/samples/4e3d1d.jpg new file mode 100644 index 0000000..ddb73e1 Binary files /dev/null and b/server/src/samples/4e3d1d.jpg differ diff --git a/server/src/samples/4e4752.jpg b/server/src/samples/4e4752.jpg new file mode 100644 index 0000000..c9c005b Binary files /dev/null and b/server/src/samples/4e4752.jpg differ diff --git a/server/src/samples/4e4f4b.jpg b/server/src/samples/4e4f4b.jpg new file mode 100644 index 0000000..2aa6f89 Binary files /dev/null and b/server/src/samples/4e4f4b.jpg differ diff --git a/server/src/samples/4e5454.jpg b/server/src/samples/4e5454.jpg new file mode 100644 index 0000000..f503edb Binary files /dev/null and b/server/src/samples/4e5454.jpg differ diff --git a/server/src/samples/4f3124.jpg b/server/src/samples/4f3124.jpg new file mode 100644 index 0000000..bcba86b Binary files /dev/null and b/server/src/samples/4f3124.jpg differ diff --git a/server/src/samples/4f3d29.jpg b/server/src/samples/4f3d29.jpg new file mode 100644 index 0000000..8d40edb Binary files /dev/null and b/server/src/samples/4f3d29.jpg differ diff --git a/server/src/samples/4f4735.jpg b/server/src/samples/4f4735.jpg new file mode 100644 index 0000000..bbd68e4 Binary files /dev/null and b/server/src/samples/4f4735.jpg differ diff --git a/server/src/samples/4f4b47.jpg b/server/src/samples/4f4b47.jpg new file mode 100644 index 0000000..8e45393 Binary files /dev/null and b/server/src/samples/4f4b47.jpg differ diff --git a/server/src/samples/4f4e43.jpg b/server/src/samples/4f4e43.jpg new file mode 100644 index 0000000..dc2c510 Binary files /dev/null and b/server/src/samples/4f4e43.jpg differ diff --git a/server/src/samples/4f4f4e.jpg b/server/src/samples/4f4f4e.jpg new file mode 100644 index 0000000..80d5235 Binary files /dev/null and b/server/src/samples/4f4f4e.jpg differ diff --git a/server/src/samples/4f5145.jpg b/server/src/samples/4f5145.jpg new file mode 100644 index 0000000..335f215 Binary files /dev/null and b/server/src/samples/4f5145.jpg differ diff --git a/server/src/samples/4f514f.jpg b/server/src/samples/4f514f.jpg new file mode 100644 index 0000000..be7156f Binary files /dev/null and b/server/src/samples/4f514f.jpg differ diff --git a/server/src/samples/4f584f.jpg b/server/src/samples/4f584f.jpg new file mode 100644 index 0000000..e9d13b8 Binary files /dev/null and b/server/src/samples/4f584f.jpg differ diff --git a/server/src/samples/4f5857.jpg b/server/src/samples/4f5857.jpg new file mode 100644 index 0000000..add1599 Binary files /dev/null and b/server/src/samples/4f5857.jpg differ diff --git a/server/src/samples/50281e.jpg b/server/src/samples/50281e.jpg new file mode 100644 index 0000000..f67ff83 Binary files /dev/null and b/server/src/samples/50281e.jpg differ diff --git a/server/src/samples/50393a.jpg b/server/src/samples/50393a.jpg new file mode 100644 index 0000000..9e45156 Binary files /dev/null and b/server/src/samples/50393a.jpg differ diff --git a/server/src/samples/504543.jpg b/server/src/samples/504543.jpg new file mode 100644 index 0000000..9a9aa7c Binary files /dev/null and b/server/src/samples/504543.jpg differ diff --git a/server/src/samples/504729.jpg b/server/src/samples/504729.jpg new file mode 100644 index 0000000..3ed1982 Binary files /dev/null and b/server/src/samples/504729.jpg differ diff --git a/server/src/samples/504f3b.jpg b/server/src/samples/504f3b.jpg new file mode 100644 index 0000000..1380ea4 Binary files /dev/null and b/server/src/samples/504f3b.jpg differ diff --git a/server/src/samples/505052.jpg b/server/src/samples/505052.jpg new file mode 100644 index 0000000..c39c9e5 Binary files /dev/null and b/server/src/samples/505052.jpg differ diff --git a/server/src/samples/505440.jpg b/server/src/samples/505440.jpg new file mode 100644 index 0000000..1a9d4f7 Binary files /dev/null and b/server/src/samples/505440.jpg differ diff --git a/server/src/samples/505542.jpg b/server/src/samples/505542.jpg new file mode 100644 index 0000000..18ce040 Binary files /dev/null and b/server/src/samples/505542.jpg differ diff --git a/server/src/samples/50574e.jpg b/server/src/samples/50574e.jpg new file mode 100644 index 0000000..5eee00e Binary files /dev/null and b/server/src/samples/50574e.jpg differ diff --git a/server/src/samples/505968.jpg b/server/src/samples/505968.jpg new file mode 100644 index 0000000..c9c9337 Binary files /dev/null and b/server/src/samples/505968.jpg differ diff --git a/server/src/samples/50656a.jpg b/server/src/samples/50656a.jpg new file mode 100644 index 0000000..3cba337 Binary files /dev/null and b/server/src/samples/50656a.jpg differ diff --git a/server/src/samples/513c2e.jpg b/server/src/samples/513c2e.jpg new file mode 100644 index 0000000..2e98da2 Binary files /dev/null and b/server/src/samples/513c2e.jpg differ diff --git a/server/src/samples/514131.jpg b/server/src/samples/514131.jpg new file mode 100644 index 0000000..171930a Binary files /dev/null and b/server/src/samples/514131.jpg differ diff --git a/server/src/samples/514636.jpg b/server/src/samples/514636.jpg new file mode 100644 index 0000000..1a7de0a Binary files /dev/null and b/server/src/samples/514636.jpg differ diff --git a/server/src/samples/514c39.jpg b/server/src/samples/514c39.jpg new file mode 100644 index 0000000..d444f44 Binary files /dev/null and b/server/src/samples/514c39.jpg differ diff --git a/server/src/samples/515145.jpg b/server/src/samples/515145.jpg new file mode 100644 index 0000000..2f68ce9 Binary files /dev/null and b/server/src/samples/515145.jpg differ diff --git a/server/src/samples/515241.jpg b/server/src/samples/515241.jpg new file mode 100644 index 0000000..1225ae3 Binary files /dev/null and b/server/src/samples/515241.jpg differ diff --git a/server/src/samples/515762.jpg b/server/src/samples/515762.jpg new file mode 100644 index 0000000..5efc10a Binary files /dev/null and b/server/src/samples/515762.jpg differ diff --git a/server/src/samples/515a57.jpg b/server/src/samples/515a57.jpg new file mode 100644 index 0000000..f5a2edf Binary files /dev/null and b/server/src/samples/515a57.jpg differ diff --git a/server/src/samples/51646b.jpg b/server/src/samples/51646b.jpg new file mode 100644 index 0000000..485875e Binary files /dev/null and b/server/src/samples/51646b.jpg differ diff --git a/server/src/samples/52524a.jpg b/server/src/samples/52524a.jpg new file mode 100644 index 0000000..26feaf8 Binary files /dev/null and b/server/src/samples/52524a.jpg differ diff --git a/server/src/samples/525a61.jpg b/server/src/samples/525a61.jpg new file mode 100644 index 0000000..fac0a17 Binary files /dev/null and b/server/src/samples/525a61.jpg differ diff --git a/server/src/samples/525c55.jpg b/server/src/samples/525c55.jpg new file mode 100644 index 0000000..db6f405 Binary files /dev/null and b/server/src/samples/525c55.jpg differ diff --git a/server/src/samples/534836.jpg b/server/src/samples/534836.jpg new file mode 100644 index 0000000..f06bffa Binary files /dev/null and b/server/src/samples/534836.jpg differ diff --git a/server/src/samples/534a31.jpg b/server/src/samples/534a31.jpg new file mode 100644 index 0000000..be99cae Binary files /dev/null and b/server/src/samples/534a31.jpg differ diff --git a/server/src/samples/535250.jpg b/server/src/samples/535250.jpg new file mode 100644 index 0000000..3ed4bc9 Binary files /dev/null and b/server/src/samples/535250.jpg differ diff --git a/server/src/samples/535959.jpg b/server/src/samples/535959.jpg new file mode 100644 index 0000000..c72238d Binary files /dev/null and b/server/src/samples/535959.jpg differ diff --git a/server/src/samples/544b3b.jpg b/server/src/samples/544b3b.jpg new file mode 100644 index 0000000..a4bfe80 Binary files /dev/null and b/server/src/samples/544b3b.jpg differ diff --git a/server/src/samples/544c3a.jpg b/server/src/samples/544c3a.jpg new file mode 100644 index 0000000..8a8a35f Binary files /dev/null and b/server/src/samples/544c3a.jpg differ diff --git a/server/src/samples/545447.jpg b/server/src/samples/545447.jpg new file mode 100644 index 0000000..670e8ff Binary files /dev/null and b/server/src/samples/545447.jpg differ diff --git a/server/src/samples/54544c.jpg b/server/src/samples/54544c.jpg new file mode 100644 index 0000000..b4c3864 Binary files /dev/null and b/server/src/samples/54544c.jpg differ diff --git a/server/src/samples/545531.jpg b/server/src/samples/545531.jpg new file mode 100644 index 0000000..edfab9c Binary files /dev/null and b/server/src/samples/545531.jpg differ diff --git a/server/src/samples/545650.jpg b/server/src/samples/545650.jpg new file mode 100644 index 0000000..f4a6155 Binary files /dev/null and b/server/src/samples/545650.jpg differ diff --git a/server/src/samples/545863.jpg b/server/src/samples/545863.jpg new file mode 100644 index 0000000..c0e5df0 Binary files /dev/null and b/server/src/samples/545863.jpg differ diff --git a/server/src/samples/553d28.jpg b/server/src/samples/553d28.jpg new file mode 100644 index 0000000..5abb6a0 Binary files /dev/null and b/server/src/samples/553d28.jpg differ diff --git a/server/src/samples/55442a.jpg b/server/src/samples/55442a.jpg new file mode 100644 index 0000000..4da5a68 Binary files /dev/null and b/server/src/samples/55442a.jpg differ diff --git a/server/src/samples/554936.jpg b/server/src/samples/554936.jpg new file mode 100644 index 0000000..8890350 Binary files /dev/null and b/server/src/samples/554936.jpg differ diff --git a/server/src/samples/554a39.jpg b/server/src/samples/554a39.jpg new file mode 100644 index 0000000..21f2da1 Binary files /dev/null and b/server/src/samples/554a39.jpg differ diff --git a/server/src/samples/554e30.jpg b/server/src/samples/554e30.jpg new file mode 100644 index 0000000..8200a4f Binary files /dev/null and b/server/src/samples/554e30.jpg differ diff --git a/server/src/samples/554e31.jpg b/server/src/samples/554e31.jpg new file mode 100644 index 0000000..17d579d Binary files /dev/null and b/server/src/samples/554e31.jpg differ diff --git a/server/src/samples/555133.jpg b/server/src/samples/555133.jpg new file mode 100644 index 0000000..88ca206 Binary files /dev/null and b/server/src/samples/555133.jpg differ diff --git a/server/src/samples/555556.jpg b/server/src/samples/555556.jpg new file mode 100644 index 0000000..3c748cb Binary files /dev/null and b/server/src/samples/555556.jpg differ diff --git a/server/src/samples/555f54.jpg b/server/src/samples/555f54.jpg new file mode 100644 index 0000000..0e41cdd Binary files /dev/null and b/server/src/samples/555f54.jpg differ diff --git a/server/src/samples/55698e.jpg b/server/src/samples/55698e.jpg new file mode 100644 index 0000000..0486c63 Binary files /dev/null and b/server/src/samples/55698e.jpg differ diff --git a/server/src/samples/556f73.jpg b/server/src/samples/556f73.jpg new file mode 100644 index 0000000..3a89b00 Binary files /dev/null and b/server/src/samples/556f73.jpg differ diff --git a/server/src/samples/56422d.jpg b/server/src/samples/56422d.jpg new file mode 100644 index 0000000..bf654a4 Binary files /dev/null and b/server/src/samples/56422d.jpg differ diff --git a/server/src/samples/564635.jpg b/server/src/samples/564635.jpg new file mode 100644 index 0000000..3d083d0 Binary files /dev/null and b/server/src/samples/564635.jpg differ diff --git a/server/src/samples/565648.jpg b/server/src/samples/565648.jpg new file mode 100644 index 0000000..6acc299 Binary files /dev/null and b/server/src/samples/565648.jpg differ diff --git a/server/src/samples/565656.jpg b/server/src/samples/565656.jpg new file mode 100644 index 0000000..f477b75 Binary files /dev/null and b/server/src/samples/565656.jpg differ diff --git a/server/src/samples/565843.jpg b/server/src/samples/565843.jpg new file mode 100644 index 0000000..bc58c19 Binary files /dev/null and b/server/src/samples/565843.jpg differ diff --git a/server/src/samples/565e46.jpg b/server/src/samples/565e46.jpg new file mode 100644 index 0000000..2938bf2 Binary files /dev/null and b/server/src/samples/565e46.jpg differ diff --git a/server/src/samples/566448.jpg b/server/src/samples/566448.jpg new file mode 100644 index 0000000..c0ace68 Binary files /dev/null and b/server/src/samples/566448.jpg differ diff --git a/server/src/samples/566454.jpg b/server/src/samples/566454.jpg new file mode 100644 index 0000000..750dd9e Binary files /dev/null and b/server/src/samples/566454.jpg differ diff --git a/server/src/samples/573823.jpg b/server/src/samples/573823.jpg new file mode 100644 index 0000000..b11fa35 Binary files /dev/null and b/server/src/samples/573823.jpg differ diff --git a/server/src/samples/57422c.jpg b/server/src/samples/57422c.jpg new file mode 100644 index 0000000..35d47e2 Binary files /dev/null and b/server/src/samples/57422c.jpg differ diff --git a/server/src/samples/574642.jpg b/server/src/samples/574642.jpg new file mode 100644 index 0000000..0b3374e Binary files /dev/null and b/server/src/samples/574642.jpg differ diff --git a/server/src/samples/574e3e.jpg b/server/src/samples/574e3e.jpg new file mode 100644 index 0000000..5dfd9c1 Binary files /dev/null and b/server/src/samples/574e3e.jpg differ diff --git a/server/src/samples/575651.jpg b/server/src/samples/575651.jpg new file mode 100644 index 0000000..8d2c07c Binary files /dev/null and b/server/src/samples/575651.jpg differ diff --git a/server/src/samples/57574f.jpg b/server/src/samples/57574f.jpg new file mode 100644 index 0000000..603ae2e Binary files /dev/null and b/server/src/samples/57574f.jpg differ diff --git a/server/src/samples/57584b.jpg b/server/src/samples/57584b.jpg new file mode 100644 index 0000000..f5b400b Binary files /dev/null and b/server/src/samples/57584b.jpg differ diff --git a/server/src/samples/575d54.jpg b/server/src/samples/575d54.jpg new file mode 100644 index 0000000..4dce9f5 Binary files /dev/null and b/server/src/samples/575d54.jpg differ diff --git a/server/src/samples/583f2d.jpg b/server/src/samples/583f2d.jpg new file mode 100644 index 0000000..bcbfb6a Binary files /dev/null and b/server/src/samples/583f2d.jpg differ diff --git a/server/src/samples/58462c.jpg b/server/src/samples/58462c.jpg new file mode 100644 index 0000000..611f393 Binary files /dev/null and b/server/src/samples/58462c.jpg differ diff --git a/server/src/samples/584c3c.jpg b/server/src/samples/584c3c.jpg new file mode 100644 index 0000000..c5f441a Binary files /dev/null and b/server/src/samples/584c3c.jpg differ diff --git a/server/src/samples/58503f.jpg b/server/src/samples/58503f.jpg new file mode 100644 index 0000000..6341908 Binary files /dev/null and b/server/src/samples/58503f.jpg differ diff --git a/server/src/samples/585348.jpg b/server/src/samples/585348.jpg new file mode 100644 index 0000000..e17f34a Binary files /dev/null and b/server/src/samples/585348.jpg differ diff --git a/server/src/samples/585763.jpg b/server/src/samples/585763.jpg new file mode 100644 index 0000000..508e7be Binary files /dev/null and b/server/src/samples/585763.jpg differ diff --git a/server/src/samples/585a56.jpg b/server/src/samples/585a56.jpg new file mode 100644 index 0000000..2cf26a3 Binary files /dev/null and b/server/src/samples/585a56.jpg differ diff --git a/server/src/samples/585f69.jpg b/server/src/samples/585f69.jpg new file mode 100644 index 0000000..ad727cf Binary files /dev/null and b/server/src/samples/585f69.jpg differ diff --git a/server/src/samples/594a35.jpg b/server/src/samples/594a35.jpg new file mode 100644 index 0000000..a6395c1 Binary files /dev/null and b/server/src/samples/594a35.jpg differ diff --git a/server/src/samples/59594d.jpg b/server/src/samples/59594d.jpg new file mode 100644 index 0000000..ba889e9 Binary files /dev/null and b/server/src/samples/59594d.jpg differ diff --git a/server/src/samples/596063.jpg b/server/src/samples/596063.jpg new file mode 100644 index 0000000..62d0528 Binary files /dev/null and b/server/src/samples/596063.jpg differ diff --git a/server/src/samples/596068.jpg b/server/src/samples/596068.jpg new file mode 100644 index 0000000..c5eb00b Binary files /dev/null and b/server/src/samples/596068.jpg differ diff --git a/server/src/samples/596562.jpg b/server/src/samples/596562.jpg new file mode 100644 index 0000000..2c2fd9f Binary files /dev/null and b/server/src/samples/596562.jpg differ diff --git a/server/src/samples/596e6f.jpg b/server/src/samples/596e6f.jpg new file mode 100644 index 0000000..baddc78 Binary files /dev/null and b/server/src/samples/596e6f.jpg differ diff --git a/server/src/samples/5a4826.jpg b/server/src/samples/5a4826.jpg new file mode 100644 index 0000000..7767fb7 Binary files /dev/null and b/server/src/samples/5a4826.jpg differ diff --git a/server/src/samples/5a4a38.jpg b/server/src/samples/5a4a38.jpg new file mode 100644 index 0000000..ab00301 Binary files /dev/null and b/server/src/samples/5a4a38.jpg differ diff --git a/server/src/samples/5a4a3b.jpg b/server/src/samples/5a4a3b.jpg new file mode 100644 index 0000000..3aded75 Binary files /dev/null and b/server/src/samples/5a4a3b.jpg differ diff --git a/server/src/samples/5a552e.jpg b/server/src/samples/5a552e.jpg new file mode 100644 index 0000000..5bb6702 Binary files /dev/null and b/server/src/samples/5a552e.jpg differ diff --git a/server/src/samples/5a5b4e.jpg b/server/src/samples/5a5b4e.jpg new file mode 100644 index 0000000..c482b02 Binary files /dev/null and b/server/src/samples/5a5b4e.jpg differ diff --git a/server/src/samples/5a5f49.jpg b/server/src/samples/5a5f49.jpg new file mode 100644 index 0000000..1d66606 Binary files /dev/null and b/server/src/samples/5a5f49.jpg differ diff --git a/server/src/samples/5a6168.jpg b/server/src/samples/5a6168.jpg new file mode 100644 index 0000000..325cd31 Binary files /dev/null and b/server/src/samples/5a6168.jpg differ diff --git a/server/src/samples/5a624d.jpg b/server/src/samples/5a624d.jpg new file mode 100644 index 0000000..d69238f Binary files /dev/null and b/server/src/samples/5a624d.jpg differ diff --git a/server/src/samples/5a6674.jpg b/server/src/samples/5a6674.jpg new file mode 100644 index 0000000..793ba87 Binary files /dev/null and b/server/src/samples/5a6674.jpg differ diff --git a/server/src/samples/5b4332.jpg b/server/src/samples/5b4332.jpg new file mode 100644 index 0000000..c2ed7e8 Binary files /dev/null and b/server/src/samples/5b4332.jpg differ diff --git a/server/src/samples/5b4636.jpg b/server/src/samples/5b4636.jpg new file mode 100644 index 0000000..9599160 Binary files /dev/null and b/server/src/samples/5b4636.jpg differ diff --git a/server/src/samples/5b492c.jpg b/server/src/samples/5b492c.jpg new file mode 100644 index 0000000..1a4595c Binary files /dev/null and b/server/src/samples/5b492c.jpg differ diff --git a/server/src/samples/5b4a22.jpg b/server/src/samples/5b4a22.jpg new file mode 100644 index 0000000..b483fdd Binary files /dev/null and b/server/src/samples/5b4a22.jpg differ diff --git a/server/src/samples/5b5237.jpg b/server/src/samples/5b5237.jpg new file mode 100644 index 0000000..dc8ec19 Binary files /dev/null and b/server/src/samples/5b5237.jpg differ diff --git a/server/src/samples/5b542f.jpg b/server/src/samples/5b542f.jpg new file mode 100644 index 0000000..b447e7f Binary files /dev/null and b/server/src/samples/5b542f.jpg differ diff --git a/server/src/samples/5b5b50.jpg b/server/src/samples/5b5b50.jpg new file mode 100644 index 0000000..607a69e Binary files /dev/null and b/server/src/samples/5b5b50.jpg differ diff --git a/server/src/samples/5b626c.jpg b/server/src/samples/5b626c.jpg new file mode 100644 index 0000000..8871cbf Binary files /dev/null and b/server/src/samples/5b626c.jpg differ diff --git a/server/src/samples/5b6651.jpg b/server/src/samples/5b6651.jpg new file mode 100644 index 0000000..9ffeae4 Binary files /dev/null and b/server/src/samples/5b6651.jpg differ diff --git a/server/src/samples/5b666e.jpg b/server/src/samples/5b666e.jpg new file mode 100644 index 0000000..b501e47 Binary files /dev/null and b/server/src/samples/5b666e.jpg differ diff --git a/server/src/samples/5c4331.jpg b/server/src/samples/5c4331.jpg new file mode 100644 index 0000000..c0ee982 Binary files /dev/null and b/server/src/samples/5c4331.jpg differ diff --git a/server/src/samples/5c462e.jpg b/server/src/samples/5c462e.jpg new file mode 100644 index 0000000..7e25a93 Binary files /dev/null and b/server/src/samples/5c462e.jpg differ diff --git a/server/src/samples/5c4831.jpg b/server/src/samples/5c4831.jpg new file mode 100644 index 0000000..0d65387 Binary files /dev/null and b/server/src/samples/5c4831.jpg differ diff --git a/server/src/samples/5c4a37.jpg b/server/src/samples/5c4a37.jpg new file mode 100644 index 0000000..e7c00bb Binary files /dev/null and b/server/src/samples/5c4a37.jpg differ diff --git a/server/src/samples/5c4f2b.jpg b/server/src/samples/5c4f2b.jpg new file mode 100644 index 0000000..dcacc48 Binary files /dev/null and b/server/src/samples/5c4f2b.jpg differ diff --git a/server/src/samples/5c534e.jpg b/server/src/samples/5c534e.jpg new file mode 100644 index 0000000..b769b75 Binary files /dev/null and b/server/src/samples/5c534e.jpg differ diff --git a/server/src/samples/5c5c5c.jpg b/server/src/samples/5c5c5c.jpg new file mode 100644 index 0000000..aac1e9e Binary files /dev/null and b/server/src/samples/5c5c5c.jpg differ diff --git a/server/src/samples/5c5f68.jpg b/server/src/samples/5c5f68.jpg new file mode 100644 index 0000000..64f1ff3 Binary files /dev/null and b/server/src/samples/5c5f68.jpg differ diff --git a/server/src/samples/5c655f.jpg b/server/src/samples/5c655f.jpg new file mode 100644 index 0000000..7785d56 Binary files /dev/null and b/server/src/samples/5c655f.jpg differ diff --git a/server/src/samples/5c6f70.jpg b/server/src/samples/5c6f70.jpg new file mode 100644 index 0000000..65d9692 Binary files /dev/null and b/server/src/samples/5c6f70.jpg differ diff --git a/server/src/samples/5d3c2b.jpg b/server/src/samples/5d3c2b.jpg new file mode 100644 index 0000000..7696f64 Binary files /dev/null and b/server/src/samples/5d3c2b.jpg differ diff --git a/server/src/samples/5d3c2c.jpg b/server/src/samples/5d3c2c.jpg new file mode 100644 index 0000000..9b3473e Binary files /dev/null and b/server/src/samples/5d3c2c.jpg differ diff --git a/server/src/samples/5d4520.jpg b/server/src/samples/5d4520.jpg new file mode 100644 index 0000000..a1fea36 Binary files /dev/null and b/server/src/samples/5d4520.jpg differ diff --git a/server/src/samples/5d4625.jpg b/server/src/samples/5d4625.jpg new file mode 100644 index 0000000..1ae1b68 Binary files /dev/null and b/server/src/samples/5d4625.jpg differ diff --git a/server/src/samples/5d495c.jpg b/server/src/samples/5d495c.jpg new file mode 100644 index 0000000..7fae552 Binary files /dev/null and b/server/src/samples/5d495c.jpg differ diff --git a/server/src/samples/5d4b31.jpg b/server/src/samples/5d4b31.jpg new file mode 100644 index 0000000..c1c3a80 Binary files /dev/null and b/server/src/samples/5d4b31.jpg differ diff --git a/server/src/samples/5d4b32.jpg b/server/src/samples/5d4b32.jpg new file mode 100644 index 0000000..03e01f2 Binary files /dev/null and b/server/src/samples/5d4b32.jpg differ diff --git a/server/src/samples/5d4f4a.jpg b/server/src/samples/5d4f4a.jpg new file mode 100644 index 0000000..2e8f2fd Binary files /dev/null and b/server/src/samples/5d4f4a.jpg differ diff --git a/server/src/samples/5d5539.jpg b/server/src/samples/5d5539.jpg new file mode 100644 index 0000000..ae87958 Binary files /dev/null and b/server/src/samples/5d5539.jpg differ diff --git a/server/src/samples/5d5644.jpg b/server/src/samples/5d5644.jpg new file mode 100644 index 0000000..b2c0507 Binary files /dev/null and b/server/src/samples/5d5644.jpg differ diff --git a/server/src/samples/5d5d55.jpg b/server/src/samples/5d5d55.jpg new file mode 100644 index 0000000..e1e0307 Binary files /dev/null and b/server/src/samples/5d5d55.jpg differ diff --git a/server/src/samples/5d5e4f.jpg b/server/src/samples/5d5e4f.jpg new file mode 100644 index 0000000..1442aed Binary files /dev/null and b/server/src/samples/5d5e4f.jpg differ diff --git a/server/src/samples/5e3d30.jpg b/server/src/samples/5e3d30.jpg new file mode 100644 index 0000000..ddfc285 Binary files /dev/null and b/server/src/samples/5e3d30.jpg differ diff --git a/server/src/samples/5e3f32.jpg b/server/src/samples/5e3f32.jpg new file mode 100644 index 0000000..e222f16 Binary files /dev/null and b/server/src/samples/5e3f32.jpg differ diff --git a/server/src/samples/5e4625.jpg b/server/src/samples/5e4625.jpg new file mode 100644 index 0000000..10bfe13 Binary files /dev/null and b/server/src/samples/5e4625.jpg differ diff --git a/server/src/samples/5e4c29.jpg b/server/src/samples/5e4c29.jpg new file mode 100644 index 0000000..e81f485 Binary files /dev/null and b/server/src/samples/5e4c29.jpg differ diff --git a/server/src/samples/5e4c3a.jpg b/server/src/samples/5e4c3a.jpg new file mode 100644 index 0000000..25c8af6 Binary files /dev/null and b/server/src/samples/5e4c3a.jpg differ diff --git a/server/src/samples/5e4d34.jpg b/server/src/samples/5e4d34.jpg new file mode 100644 index 0000000..2c15e45 Binary files /dev/null and b/server/src/samples/5e4d34.jpg differ diff --git a/server/src/samples/5e504c.jpg b/server/src/samples/5e504c.jpg new file mode 100644 index 0000000..1b3f2e1 Binary files /dev/null and b/server/src/samples/5e504c.jpg differ diff --git a/server/src/samples/5e685d.jpg b/server/src/samples/5e685d.jpg new file mode 100644 index 0000000..283370a Binary files /dev/null and b/server/src/samples/5e685d.jpg differ diff --git a/server/src/samples/5e693e.jpg b/server/src/samples/5e693e.jpg new file mode 100644 index 0000000..cfb100b Binary files /dev/null and b/server/src/samples/5e693e.jpg differ diff --git a/server/src/samples/5e6b51.jpg b/server/src/samples/5e6b51.jpg new file mode 100644 index 0000000..b05b9b8 Binary files /dev/null and b/server/src/samples/5e6b51.jpg differ diff --git a/server/src/samples/5f402b.jpg b/server/src/samples/5f402b.jpg new file mode 100644 index 0000000..bc8fe9f Binary files /dev/null and b/server/src/samples/5f402b.jpg differ diff --git a/server/src/samples/5f4827.jpg b/server/src/samples/5f4827.jpg new file mode 100644 index 0000000..69efc46 Binary files /dev/null and b/server/src/samples/5f4827.jpg differ diff --git a/server/src/samples/5f4e28.jpg b/server/src/samples/5f4e28.jpg new file mode 100644 index 0000000..91f6617 Binary files /dev/null and b/server/src/samples/5f4e28.jpg differ diff --git a/server/src/samples/5f5443.jpg b/server/src/samples/5f5443.jpg new file mode 100644 index 0000000..25ea4d1 Binary files /dev/null and b/server/src/samples/5f5443.jpg differ diff --git a/server/src/samples/5f544f.jpg b/server/src/samples/5f544f.jpg new file mode 100644 index 0000000..3312f99 Binary files /dev/null and b/server/src/samples/5f544f.jpg differ diff --git a/server/src/samples/5f5741.jpg b/server/src/samples/5f5741.jpg new file mode 100644 index 0000000..86ed54f Binary files /dev/null and b/server/src/samples/5f5741.jpg differ diff --git a/server/src/samples/5f5a33.jpg b/server/src/samples/5f5a33.jpg new file mode 100644 index 0000000..64d1b15 Binary files /dev/null and b/server/src/samples/5f5a33.jpg differ diff --git a/server/src/samples/5f6259.jpg b/server/src/samples/5f6259.jpg new file mode 100644 index 0000000..75c3cda Binary files /dev/null and b/server/src/samples/5f6259.jpg differ diff --git a/server/src/samples/5f664f.jpg b/server/src/samples/5f664f.jpg new file mode 100644 index 0000000..1d60b21 Binary files /dev/null and b/server/src/samples/5f664f.jpg differ diff --git a/server/src/samples/5f6670.jpg b/server/src/samples/5f6670.jpg new file mode 100644 index 0000000..0851149 Binary files /dev/null and b/server/src/samples/5f6670.jpg differ diff --git a/server/src/samples/5f6768.jpg b/server/src/samples/5f6768.jpg new file mode 100644 index 0000000..6da0821 Binary files /dev/null and b/server/src/samples/5f6768.jpg differ diff --git a/server/src/samples/5f6a4a.jpg b/server/src/samples/5f6a4a.jpg new file mode 100644 index 0000000..77616b0 Binary files /dev/null and b/server/src/samples/5f6a4a.jpg differ diff --git a/server/src/samples/60432b.jpg b/server/src/samples/60432b.jpg new file mode 100644 index 0000000..a434dba Binary files /dev/null and b/server/src/samples/60432b.jpg differ diff --git a/server/src/samples/60452b.jpg b/server/src/samples/60452b.jpg new file mode 100644 index 0000000..5bb5b80 Binary files /dev/null and b/server/src/samples/60452b.jpg differ diff --git a/server/src/samples/604931.jpg b/server/src/samples/604931.jpg new file mode 100644 index 0000000..b1915cd Binary files /dev/null and b/server/src/samples/604931.jpg differ diff --git a/server/src/samples/60503a.jpg b/server/src/samples/60503a.jpg new file mode 100644 index 0000000..8a0c9e3 Binary files /dev/null and b/server/src/samples/60503a.jpg differ diff --git a/server/src/samples/606a3e.jpg b/server/src/samples/606a3e.jpg new file mode 100644 index 0000000..fd4d7d3 Binary files /dev/null and b/server/src/samples/606a3e.jpg differ diff --git a/server/src/samples/607c7b.jpg b/server/src/samples/607c7b.jpg new file mode 100644 index 0000000..f9a1e07 Binary files /dev/null and b/server/src/samples/607c7b.jpg differ diff --git a/server/src/samples/614336.jpg b/server/src/samples/614336.jpg new file mode 100644 index 0000000..d7066fd Binary files /dev/null and b/server/src/samples/614336.jpg differ diff --git a/server/src/samples/616451.jpg b/server/src/samples/616451.jpg new file mode 100644 index 0000000..5eb8b77 Binary files /dev/null and b/server/src/samples/616451.jpg differ diff --git a/server/src/samples/616839.jpg b/server/src/samples/616839.jpg new file mode 100644 index 0000000..20efbe1 Binary files /dev/null and b/server/src/samples/616839.jpg differ diff --git a/server/src/samples/616a69.jpg b/server/src/samples/616a69.jpg new file mode 100644 index 0000000..1a28314 Binary files /dev/null and b/server/src/samples/616a69.jpg differ diff --git a/server/src/samples/616d9d.jpg b/server/src/samples/616d9d.jpg new file mode 100644 index 0000000..d8ec1ef Binary files /dev/null and b/server/src/samples/616d9d.jpg differ diff --git a/server/src/samples/61786a.jpg b/server/src/samples/61786a.jpg new file mode 100644 index 0000000..874e075 Binary files /dev/null and b/server/src/samples/61786a.jpg differ diff --git a/server/src/samples/617963.jpg b/server/src/samples/617963.jpg new file mode 100644 index 0000000..75bb855 Binary files /dev/null and b/server/src/samples/617963.jpg differ diff --git a/server/src/samples/622f24.jpg b/server/src/samples/622f24.jpg new file mode 100644 index 0000000..8d0df02 Binary files /dev/null and b/server/src/samples/622f24.jpg differ diff --git a/server/src/samples/623a26.jpg b/server/src/samples/623a26.jpg new file mode 100644 index 0000000..4998713 Binary files /dev/null and b/server/src/samples/623a26.jpg differ diff --git a/server/src/samples/623a27.jpg b/server/src/samples/623a27.jpg new file mode 100644 index 0000000..17b6dc5 Binary files /dev/null and b/server/src/samples/623a27.jpg differ diff --git a/server/src/samples/623e2b.jpg b/server/src/samples/623e2b.jpg new file mode 100644 index 0000000..f0b4fd1 Binary files /dev/null and b/server/src/samples/623e2b.jpg differ diff --git a/server/src/samples/624035.jpg b/server/src/samples/624035.jpg new file mode 100644 index 0000000..697d733 Binary files /dev/null and b/server/src/samples/624035.jpg differ diff --git a/server/src/samples/62432b.jpg b/server/src/samples/62432b.jpg new file mode 100644 index 0000000..f004fab Binary files /dev/null and b/server/src/samples/62432b.jpg differ diff --git a/server/src/samples/62492e.jpg b/server/src/samples/62492e.jpg new file mode 100644 index 0000000..1eef722 Binary files /dev/null and b/server/src/samples/62492e.jpg differ diff --git a/server/src/samples/62502f.jpg b/server/src/samples/62502f.jpg new file mode 100644 index 0000000..63b84d6 Binary files /dev/null and b/server/src/samples/62502f.jpg differ diff --git a/server/src/samples/625a3a.jpg b/server/src/samples/625a3a.jpg new file mode 100644 index 0000000..4f3ac68 Binary files /dev/null and b/server/src/samples/625a3a.jpg differ diff --git a/server/src/samples/625b45.jpg b/server/src/samples/625b45.jpg new file mode 100644 index 0000000..820b68d Binary files /dev/null and b/server/src/samples/625b45.jpg differ diff --git a/server/src/samples/626361.jpg b/server/src/samples/626361.jpg new file mode 100644 index 0000000..c822723 Binary files /dev/null and b/server/src/samples/626361.jpg differ diff --git a/server/src/samples/63453b.jpg b/server/src/samples/63453b.jpg new file mode 100644 index 0000000..148932c Binary files /dev/null and b/server/src/samples/63453b.jpg differ diff --git a/server/src/samples/636547.jpg b/server/src/samples/636547.jpg new file mode 100644 index 0000000..294cd6d Binary files /dev/null and b/server/src/samples/636547.jpg differ diff --git a/server/src/samples/636563.jpg b/server/src/samples/636563.jpg new file mode 100644 index 0000000..b12b2b2 Binary files /dev/null and b/server/src/samples/636563.jpg differ diff --git a/server/src/samples/636744.jpg b/server/src/samples/636744.jpg new file mode 100644 index 0000000..bacd845 Binary files /dev/null and b/server/src/samples/636744.jpg differ diff --git a/server/src/samples/63674c.jpg b/server/src/samples/63674c.jpg new file mode 100644 index 0000000..9694ea2 Binary files /dev/null and b/server/src/samples/63674c.jpg differ diff --git a/server/src/samples/636a61.jpg b/server/src/samples/636a61.jpg new file mode 100644 index 0000000..135e8b5 Binary files /dev/null and b/server/src/samples/636a61.jpg differ diff --git a/server/src/samples/636c51.jpg b/server/src/samples/636c51.jpg new file mode 100644 index 0000000..fac7f75 Binary files /dev/null and b/server/src/samples/636c51.jpg differ diff --git a/server/src/samples/638f7c.jpg b/server/src/samples/638f7c.jpg new file mode 100644 index 0000000..bb2c03e Binary files /dev/null and b/server/src/samples/638f7c.jpg differ diff --git a/server/src/samples/638f7d.jpg b/server/src/samples/638f7d.jpg new file mode 100644 index 0000000..48ace8c Binary files /dev/null and b/server/src/samples/638f7d.jpg differ diff --git a/server/src/samples/643327.jpg b/server/src/samples/643327.jpg new file mode 100644 index 0000000..3ef02f5 Binary files /dev/null and b/server/src/samples/643327.jpg differ diff --git a/server/src/samples/64391f.jpg b/server/src/samples/64391f.jpg new file mode 100644 index 0000000..e913084 Binary files /dev/null and b/server/src/samples/64391f.jpg differ diff --git a/server/src/samples/64482c.jpg b/server/src/samples/64482c.jpg new file mode 100644 index 0000000..f2abf86 Binary files /dev/null and b/server/src/samples/64482c.jpg differ diff --git a/server/src/samples/644e3b.jpg b/server/src/samples/644e3b.jpg new file mode 100644 index 0000000..ffc399c Binary files /dev/null and b/server/src/samples/644e3b.jpg differ diff --git a/server/src/samples/644f2e.jpg b/server/src/samples/644f2e.jpg new file mode 100644 index 0000000..2161474 Binary files /dev/null and b/server/src/samples/644f2e.jpg differ diff --git a/server/src/samples/645466.jpg b/server/src/samples/645466.jpg new file mode 100644 index 0000000..3c42630 Binary files /dev/null and b/server/src/samples/645466.jpg differ diff --git a/server/src/samples/64586c.jpg b/server/src/samples/64586c.jpg new file mode 100644 index 0000000..8af5ae6 Binary files /dev/null and b/server/src/samples/64586c.jpg differ diff --git a/server/src/samples/645a70.jpg b/server/src/samples/645a70.jpg new file mode 100644 index 0000000..fd36d64 Binary files /dev/null and b/server/src/samples/645a70.jpg differ diff --git a/server/src/samples/645e37.jpg b/server/src/samples/645e37.jpg new file mode 100644 index 0000000..f14aa39 Binary files /dev/null and b/server/src/samples/645e37.jpg differ diff --git a/server/src/samples/64645b.jpg b/server/src/samples/64645b.jpg new file mode 100644 index 0000000..db7f0bd Binary files /dev/null and b/server/src/samples/64645b.jpg differ diff --git a/server/src/samples/646463.jpg b/server/src/samples/646463.jpg new file mode 100644 index 0000000..d598885 Binary files /dev/null and b/server/src/samples/646463.jpg differ diff --git a/server/src/samples/653933.jpg b/server/src/samples/653933.jpg new file mode 100644 index 0000000..8083e1f Binary files /dev/null and b/server/src/samples/653933.jpg differ diff --git a/server/src/samples/654131.jpg b/server/src/samples/654131.jpg new file mode 100644 index 0000000..0036fc2 Binary files /dev/null and b/server/src/samples/654131.jpg differ diff --git a/server/src/samples/654333.jpg b/server/src/samples/654333.jpg new file mode 100644 index 0000000..2ba8853 Binary files /dev/null and b/server/src/samples/654333.jpg differ diff --git a/server/src/samples/654438.jpg b/server/src/samples/654438.jpg new file mode 100644 index 0000000..e995e8b Binary files /dev/null and b/server/src/samples/654438.jpg differ diff --git a/server/src/samples/65473a.jpg b/server/src/samples/65473a.jpg new file mode 100644 index 0000000..a1d8d57 Binary files /dev/null and b/server/src/samples/65473a.jpg differ diff --git a/server/src/samples/654f30.jpg b/server/src/samples/654f30.jpg new file mode 100644 index 0000000..bdce62c Binary files /dev/null and b/server/src/samples/654f30.jpg differ diff --git a/server/src/samples/654f42.jpg b/server/src/samples/654f42.jpg new file mode 100644 index 0000000..045ebf4 Binary files /dev/null and b/server/src/samples/654f42.jpg differ diff --git a/server/src/samples/655230.jpg b/server/src/samples/655230.jpg new file mode 100644 index 0000000..0695cf5 Binary files /dev/null and b/server/src/samples/655230.jpg differ diff --git a/server/src/samples/65532e.jpg b/server/src/samples/65532e.jpg new file mode 100644 index 0000000..2281e57 Binary files /dev/null and b/server/src/samples/65532e.jpg differ diff --git a/server/src/samples/655f4e.jpg b/server/src/samples/655f4e.jpg new file mode 100644 index 0000000..0e1cc9b Binary files /dev/null and b/server/src/samples/655f4e.jpg differ diff --git a/server/src/samples/656160.jpg b/server/src/samples/656160.jpg new file mode 100644 index 0000000..4b164c8 Binary files /dev/null and b/server/src/samples/656160.jpg differ diff --git a/server/src/samples/656366.jpg b/server/src/samples/656366.jpg new file mode 100644 index 0000000..2b25d8e Binary files /dev/null and b/server/src/samples/656366.jpg differ diff --git a/server/src/samples/656559.jpg b/server/src/samples/656559.jpg new file mode 100644 index 0000000..9c0d581 Binary files /dev/null and b/server/src/samples/656559.jpg differ diff --git a/server/src/samples/656c64.jpg b/server/src/samples/656c64.jpg new file mode 100644 index 0000000..66c6e6a Binary files /dev/null and b/server/src/samples/656c64.jpg differ diff --git a/server/src/samples/656c72.jpg b/server/src/samples/656c72.jpg new file mode 100644 index 0000000..4661ccd Binary files /dev/null and b/server/src/samples/656c72.jpg differ diff --git a/server/src/samples/656c75.jpg b/server/src/samples/656c75.jpg new file mode 100644 index 0000000..dbffb97 Binary files /dev/null and b/server/src/samples/656c75.jpg differ diff --git a/server/src/samples/65705a.jpg b/server/src/samples/65705a.jpg new file mode 100644 index 0000000..743fde6 Binary files /dev/null and b/server/src/samples/65705a.jpg differ diff --git a/server/src/samples/663429.jpg b/server/src/samples/663429.jpg new file mode 100644 index 0000000..1f58274 Binary files /dev/null and b/server/src/samples/663429.jpg differ diff --git a/server/src/samples/664720.jpg b/server/src/samples/664720.jpg new file mode 100644 index 0000000..5f56659 Binary files /dev/null and b/server/src/samples/664720.jpg differ diff --git a/server/src/samples/66513d.jpg b/server/src/samples/66513d.jpg new file mode 100644 index 0000000..18f6412 Binary files /dev/null and b/server/src/samples/66513d.jpg differ diff --git a/server/src/samples/665d50.jpg b/server/src/samples/665d50.jpg new file mode 100644 index 0000000..15927e8 Binary files /dev/null and b/server/src/samples/665d50.jpg differ diff --git a/server/src/samples/665e4c.jpg b/server/src/samples/665e4c.jpg new file mode 100644 index 0000000..92b867d Binary files /dev/null and b/server/src/samples/665e4c.jpg differ diff --git a/server/src/samples/666047.jpg b/server/src/samples/666047.jpg new file mode 100644 index 0000000..893e405 Binary files /dev/null and b/server/src/samples/666047.jpg differ diff --git a/server/src/samples/66655e.jpg b/server/src/samples/66655e.jpg new file mode 100644 index 0000000..4060c28 Binary files /dev/null and b/server/src/samples/66655e.jpg differ diff --git a/server/src/samples/667e69.jpg b/server/src/samples/667e69.jpg new file mode 100644 index 0000000..d808479 Binary files /dev/null and b/server/src/samples/667e69.jpg differ diff --git a/server/src/samples/673d2a.jpg b/server/src/samples/673d2a.jpg new file mode 100644 index 0000000..d5f4fb7 Binary files /dev/null and b/server/src/samples/673d2a.jpg differ diff --git a/server/src/samples/674154.jpg b/server/src/samples/674154.jpg new file mode 100644 index 0000000..81f1ea2 Binary files /dev/null and b/server/src/samples/674154.jpg differ diff --git a/server/src/samples/674232.jpg b/server/src/samples/674232.jpg new file mode 100644 index 0000000..19e6354 Binary files /dev/null and b/server/src/samples/674232.jpg differ diff --git a/server/src/samples/674737.jpg b/server/src/samples/674737.jpg new file mode 100644 index 0000000..07094a8 Binary files /dev/null and b/server/src/samples/674737.jpg differ diff --git a/server/src/samples/674a2c.jpg b/server/src/samples/674a2c.jpg new file mode 100644 index 0000000..3568bec Binary files /dev/null and b/server/src/samples/674a2c.jpg differ diff --git a/server/src/samples/674d37.jpg b/server/src/samples/674d37.jpg new file mode 100644 index 0000000..17ad2d7 Binary files /dev/null and b/server/src/samples/674d37.jpg differ diff --git a/server/src/samples/67514b.jpg b/server/src/samples/67514b.jpg new file mode 100644 index 0000000..182b6ab Binary files /dev/null and b/server/src/samples/67514b.jpg differ diff --git a/server/src/samples/675339.jpg b/server/src/samples/675339.jpg new file mode 100644 index 0000000..6556774 Binary files /dev/null and b/server/src/samples/675339.jpg differ diff --git a/server/src/samples/675a3e.jpg b/server/src/samples/675a3e.jpg new file mode 100644 index 0000000..290e550 Binary files /dev/null and b/server/src/samples/675a3e.jpg differ diff --git a/server/src/samples/675d51.jpg b/server/src/samples/675d51.jpg new file mode 100644 index 0000000..34d81ce Binary files /dev/null and b/server/src/samples/675d51.jpg differ diff --git a/server/src/samples/676568.jpg b/server/src/samples/676568.jpg new file mode 100644 index 0000000..0667c4b Binary files /dev/null and b/server/src/samples/676568.jpg differ diff --git a/server/src/samples/676b48.jpg b/server/src/samples/676b48.jpg new file mode 100644 index 0000000..87fa4a7 Binary files /dev/null and b/server/src/samples/676b48.jpg differ diff --git a/server/src/samples/676b5b.jpg b/server/src/samples/676b5b.jpg new file mode 100644 index 0000000..c144a30 Binary files /dev/null and b/server/src/samples/676b5b.jpg differ diff --git a/server/src/samples/678353.jpg b/server/src/samples/678353.jpg new file mode 100644 index 0000000..f3f24f1 Binary files /dev/null and b/server/src/samples/678353.jpg differ diff --git a/server/src/samples/682626.jpg b/server/src/samples/682626.jpg new file mode 100644 index 0000000..a84ea8a Binary files /dev/null and b/server/src/samples/682626.jpg differ diff --git a/server/src/samples/682726.jpg b/server/src/samples/682726.jpg new file mode 100644 index 0000000..9612a6a Binary files /dev/null and b/server/src/samples/682726.jpg differ diff --git a/server/src/samples/683326.jpg b/server/src/samples/683326.jpg new file mode 100644 index 0000000..fc16f83 Binary files /dev/null and b/server/src/samples/683326.jpg differ diff --git a/server/src/samples/683849.jpg b/server/src/samples/683849.jpg new file mode 100644 index 0000000..4a1bdb1 Binary files /dev/null and b/server/src/samples/683849.jpg differ diff --git a/server/src/samples/683d2a.jpg b/server/src/samples/683d2a.jpg new file mode 100644 index 0000000..7658ace Binary files /dev/null and b/server/src/samples/683d2a.jpg differ diff --git a/server/src/samples/684230.jpg b/server/src/samples/684230.jpg new file mode 100644 index 0000000..3f8237d Binary files /dev/null and b/server/src/samples/684230.jpg differ diff --git a/server/src/samples/684635.jpg b/server/src/samples/684635.jpg new file mode 100644 index 0000000..6cfa703 Binary files /dev/null and b/server/src/samples/684635.jpg differ diff --git a/server/src/samples/684d3f.jpg b/server/src/samples/684d3f.jpg new file mode 100644 index 0000000..792ba36 Binary files /dev/null and b/server/src/samples/684d3f.jpg differ diff --git a/server/src/samples/68533a.jpg b/server/src/samples/68533a.jpg new file mode 100644 index 0000000..09e4043 Binary files /dev/null and b/server/src/samples/68533a.jpg differ diff --git a/server/src/samples/685340.jpg b/server/src/samples/685340.jpg new file mode 100644 index 0000000..bc63c67 Binary files /dev/null and b/server/src/samples/685340.jpg differ diff --git a/server/src/samples/68604e.jpg b/server/src/samples/68604e.jpg new file mode 100644 index 0000000..93f4c17 Binary files /dev/null and b/server/src/samples/68604e.jpg differ diff --git a/server/src/samples/686148.jpg b/server/src/samples/686148.jpg new file mode 100644 index 0000000..1ef1d6f Binary files /dev/null and b/server/src/samples/686148.jpg differ diff --git a/server/src/samples/68716a.jpg b/server/src/samples/68716a.jpg new file mode 100644 index 0000000..e637d9e Binary files /dev/null and b/server/src/samples/68716a.jpg differ diff --git a/server/src/samples/68726a.jpg b/server/src/samples/68726a.jpg new file mode 100644 index 0000000..051d2dd Binary files /dev/null and b/server/src/samples/68726a.jpg differ diff --git a/server/src/samples/68807d.jpg b/server/src/samples/68807d.jpg new file mode 100644 index 0000000..69f12ea Binary files /dev/null and b/server/src/samples/68807d.jpg differ diff --git a/server/src/samples/691e2c.jpg b/server/src/samples/691e2c.jpg new file mode 100644 index 0000000..24736b6 Binary files /dev/null and b/server/src/samples/691e2c.jpg differ diff --git a/server/src/samples/69432f.jpg b/server/src/samples/69432f.jpg new file mode 100644 index 0000000..99b7d67 Binary files /dev/null and b/server/src/samples/69432f.jpg differ diff --git a/server/src/samples/694d24.jpg b/server/src/samples/694d24.jpg new file mode 100644 index 0000000..90a672e Binary files /dev/null and b/server/src/samples/694d24.jpg differ diff --git a/server/src/samples/695857.jpg b/server/src/samples/695857.jpg new file mode 100644 index 0000000..862da24 Binary files /dev/null and b/server/src/samples/695857.jpg differ diff --git a/server/src/samples/696051.jpg b/server/src/samples/696051.jpg new file mode 100644 index 0000000..89541a9 Binary files /dev/null and b/server/src/samples/696051.jpg differ diff --git a/server/src/samples/696343.jpg b/server/src/samples/696343.jpg new file mode 100644 index 0000000..0fe2e9e Binary files /dev/null and b/server/src/samples/696343.jpg differ diff --git a/server/src/samples/696960.jpg b/server/src/samples/696960.jpg new file mode 100644 index 0000000..2fd4b55 Binary files /dev/null and b/server/src/samples/696960.jpg differ diff --git a/server/src/samples/696f47.jpg b/server/src/samples/696f47.jpg new file mode 100644 index 0000000..bc9b0b8 Binary files /dev/null and b/server/src/samples/696f47.jpg differ diff --git a/server/src/samples/697c90.jpg b/server/src/samples/697c90.jpg new file mode 100644 index 0000000..729ee29 Binary files /dev/null and b/server/src/samples/697c90.jpg differ diff --git a/server/src/samples/6a1f2d.jpg b/server/src/samples/6a1f2d.jpg new file mode 100644 index 0000000..c043ad2 Binary files /dev/null and b/server/src/samples/6a1f2d.jpg differ diff --git a/server/src/samples/6a4029.jpg b/server/src/samples/6a4029.jpg new file mode 100644 index 0000000..d7ec25e Binary files /dev/null and b/server/src/samples/6a4029.jpg differ diff --git a/server/src/samples/6a4125.jpg b/server/src/samples/6a4125.jpg new file mode 100644 index 0000000..3f5b719 Binary files /dev/null and b/server/src/samples/6a4125.jpg differ diff --git a/server/src/samples/6a4428.jpg b/server/src/samples/6a4428.jpg new file mode 100644 index 0000000..744057a Binary files /dev/null and b/server/src/samples/6a4428.jpg differ diff --git a/server/src/samples/6a4631.jpg b/server/src/samples/6a4631.jpg new file mode 100644 index 0000000..cc05dd1 Binary files /dev/null and b/server/src/samples/6a4631.jpg differ diff --git a/server/src/samples/6a493a.jpg b/server/src/samples/6a493a.jpg new file mode 100644 index 0000000..70a7cf3 Binary files /dev/null and b/server/src/samples/6a493a.jpg differ diff --git a/server/src/samples/6a4a29.jpg b/server/src/samples/6a4a29.jpg new file mode 100644 index 0000000..7d4abbf Binary files /dev/null and b/server/src/samples/6a4a29.jpg differ diff --git a/server/src/samples/6a4e21.jpg b/server/src/samples/6a4e21.jpg new file mode 100644 index 0000000..ef7c081 Binary files /dev/null and b/server/src/samples/6a4e21.jpg differ diff --git a/server/src/samples/6a4e2f.jpg b/server/src/samples/6a4e2f.jpg new file mode 100644 index 0000000..07450af Binary files /dev/null and b/server/src/samples/6a4e2f.jpg differ diff --git a/server/src/samples/6a6a62.jpg b/server/src/samples/6a6a62.jpg new file mode 100644 index 0000000..31d140e Binary files /dev/null and b/server/src/samples/6a6a62.jpg differ diff --git a/server/src/samples/6a7360.jpg b/server/src/samples/6a7360.jpg new file mode 100644 index 0000000..807e861 Binary files /dev/null and b/server/src/samples/6a7360.jpg differ diff --git a/server/src/samples/6b2231.jpg b/server/src/samples/6b2231.jpg new file mode 100644 index 0000000..9ecae69 Binary files /dev/null and b/server/src/samples/6b2231.jpg differ diff --git a/server/src/samples/6b3a21.jpg b/server/src/samples/6b3a21.jpg new file mode 100644 index 0000000..c57e7b9 Binary files /dev/null and b/server/src/samples/6b3a21.jpg differ diff --git a/server/src/samples/6b4026.jpg b/server/src/samples/6b4026.jpg new file mode 100644 index 0000000..cebc10f Binary files /dev/null and b/server/src/samples/6b4026.jpg differ diff --git a/server/src/samples/6b523b.jpg b/server/src/samples/6b523b.jpg new file mode 100644 index 0000000..e73c428 Binary files /dev/null and b/server/src/samples/6b523b.jpg differ diff --git a/server/src/samples/6b5933.jpg b/server/src/samples/6b5933.jpg new file mode 100644 index 0000000..8d0523b Binary files /dev/null and b/server/src/samples/6b5933.jpg differ diff --git a/server/src/samples/6b6251.jpg b/server/src/samples/6b6251.jpg new file mode 100644 index 0000000..9313982 Binary files /dev/null and b/server/src/samples/6b6251.jpg differ diff --git a/server/src/samples/6b6f5c.jpg b/server/src/samples/6b6f5c.jpg new file mode 100644 index 0000000..4d6fb4b Binary files /dev/null and b/server/src/samples/6b6f5c.jpg differ diff --git a/server/src/samples/6b705a.jpg b/server/src/samples/6b705a.jpg new file mode 100644 index 0000000..2860e7e Binary files /dev/null and b/server/src/samples/6b705a.jpg differ diff --git a/server/src/samples/6b7375.jpg b/server/src/samples/6b7375.jpg new file mode 100644 index 0000000..6bdcb99 Binary files /dev/null and b/server/src/samples/6b7375.jpg differ diff --git a/server/src/samples/6c312d.jpg b/server/src/samples/6c312d.jpg new file mode 100644 index 0000000..2a23210 Binary files /dev/null and b/server/src/samples/6c312d.jpg differ diff --git a/server/src/samples/6c3727.jpg b/server/src/samples/6c3727.jpg new file mode 100644 index 0000000..1ce6db4 Binary files /dev/null and b/server/src/samples/6c3727.jpg differ diff --git a/server/src/samples/6c372b.jpg b/server/src/samples/6c372b.jpg new file mode 100644 index 0000000..0af5a8c Binary files /dev/null and b/server/src/samples/6c372b.jpg differ diff --git a/server/src/samples/6c392a.jpg b/server/src/samples/6c392a.jpg new file mode 100644 index 0000000..2f5ff05 Binary files /dev/null and b/server/src/samples/6c392a.jpg differ diff --git a/server/src/samples/6c412b.jpg b/server/src/samples/6c412b.jpg new file mode 100644 index 0000000..bc4c593 Binary files /dev/null and b/server/src/samples/6c412b.jpg differ diff --git a/server/src/samples/6c4331.jpg b/server/src/samples/6c4331.jpg new file mode 100644 index 0000000..1e0a34b Binary files /dev/null and b/server/src/samples/6c4331.jpg differ diff --git a/server/src/samples/6c4738.jpg b/server/src/samples/6c4738.jpg new file mode 100644 index 0000000..b93725c Binary files /dev/null and b/server/src/samples/6c4738.jpg differ diff --git a/server/src/samples/6c5928.jpg b/server/src/samples/6c5928.jpg new file mode 100644 index 0000000..7f7a9af Binary files /dev/null and b/server/src/samples/6c5928.jpg differ diff --git a/server/src/samples/6c5937.jpg b/server/src/samples/6c5937.jpg new file mode 100644 index 0000000..38e3e47 Binary files /dev/null and b/server/src/samples/6c5937.jpg differ diff --git a/server/src/samples/6c5a37.jpg b/server/src/samples/6c5a37.jpg new file mode 100644 index 0000000..f4b20c2 Binary files /dev/null and b/server/src/samples/6c5a37.jpg differ diff --git a/server/src/samples/6c5b34.jpg b/server/src/samples/6c5b34.jpg new file mode 100644 index 0000000..f8ae123 Binary files /dev/null and b/server/src/samples/6c5b34.jpg differ diff --git a/server/src/samples/6c5e64.jpg b/server/src/samples/6c5e64.jpg new file mode 100644 index 0000000..0a8ae68 Binary files /dev/null and b/server/src/samples/6c5e64.jpg differ diff --git a/server/src/samples/6c616a.jpg b/server/src/samples/6c616a.jpg new file mode 100644 index 0000000..2512a35 Binary files /dev/null and b/server/src/samples/6c616a.jpg differ diff --git a/server/src/samples/6c633a.jpg b/server/src/samples/6c633a.jpg new file mode 100644 index 0000000..568b36e Binary files /dev/null and b/server/src/samples/6c633a.jpg differ diff --git a/server/src/samples/6c6641.jpg b/server/src/samples/6c6641.jpg new file mode 100644 index 0000000..4982809 Binary files /dev/null and b/server/src/samples/6c6641.jpg differ diff --git a/server/src/samples/6c7370.jpg b/server/src/samples/6c7370.jpg new file mode 100644 index 0000000..f156bd2 Binary files /dev/null and b/server/src/samples/6c7370.jpg differ diff --git a/server/src/samples/6c8c6e.jpg b/server/src/samples/6c8c6e.jpg new file mode 100644 index 0000000..e41e2ab Binary files /dev/null and b/server/src/samples/6c8c6e.jpg differ diff --git a/server/src/samples/6d4624.jpg b/server/src/samples/6d4624.jpg new file mode 100644 index 0000000..18a9741 Binary files /dev/null and b/server/src/samples/6d4624.jpg differ diff --git a/server/src/samples/6d4834.jpg b/server/src/samples/6d4834.jpg new file mode 100644 index 0000000..c21bd85 Binary files /dev/null and b/server/src/samples/6d4834.jpg differ diff --git a/server/src/samples/6d492a.jpg b/server/src/samples/6d492a.jpg new file mode 100644 index 0000000..896965b Binary files /dev/null and b/server/src/samples/6d492a.jpg differ diff --git a/server/src/samples/6d4f23.jpg b/server/src/samples/6d4f23.jpg new file mode 100644 index 0000000..f885cab Binary files /dev/null and b/server/src/samples/6d4f23.jpg differ diff --git a/server/src/samples/6d5058.jpg b/server/src/samples/6d5058.jpg new file mode 100644 index 0000000..4ae4c61 Binary files /dev/null and b/server/src/samples/6d5058.jpg differ diff --git a/server/src/samples/6d522d.jpg b/server/src/samples/6d522d.jpg new file mode 100644 index 0000000..2b15b4c Binary files /dev/null and b/server/src/samples/6d522d.jpg differ diff --git a/server/src/samples/6d5732.jpg b/server/src/samples/6d5732.jpg new file mode 100644 index 0000000..68e4d3b Binary files /dev/null and b/server/src/samples/6d5732.jpg differ diff --git a/server/src/samples/6d5a31.jpg b/server/src/samples/6d5a31.jpg new file mode 100644 index 0000000..c88d839 Binary files /dev/null and b/server/src/samples/6d5a31.jpg differ diff --git a/server/src/samples/6d5a33.jpg b/server/src/samples/6d5a33.jpg new file mode 100644 index 0000000..f200181 Binary files /dev/null and b/server/src/samples/6d5a33.jpg differ diff --git a/server/src/samples/6d5a43.jpg b/server/src/samples/6d5a43.jpg new file mode 100644 index 0000000..187b7c4 Binary files /dev/null and b/server/src/samples/6d5a43.jpg differ diff --git a/server/src/samples/6d6d65.jpg b/server/src/samples/6d6d65.jpg new file mode 100644 index 0000000..fb55164 Binary files /dev/null and b/server/src/samples/6d6d65.jpg differ diff --git a/server/src/samples/6d6e5f.jpg b/server/src/samples/6d6e5f.jpg new file mode 100644 index 0000000..30ea42a Binary files /dev/null and b/server/src/samples/6d6e5f.jpg differ diff --git a/server/src/samples/6d8759.jpg b/server/src/samples/6d8759.jpg new file mode 100644 index 0000000..f3e7969 Binary files /dev/null and b/server/src/samples/6d8759.jpg differ diff --git a/server/src/samples/6e4028.jpg b/server/src/samples/6e4028.jpg new file mode 100644 index 0000000..56e5052 Binary files /dev/null and b/server/src/samples/6e4028.jpg differ diff --git a/server/src/samples/6e4624.jpg b/server/src/samples/6e4624.jpg new file mode 100644 index 0000000..5b78e95 Binary files /dev/null and b/server/src/samples/6e4624.jpg differ diff --git a/server/src/samples/6e4a2e.jpg b/server/src/samples/6e4a2e.jpg new file mode 100644 index 0000000..81c067a Binary files /dev/null and b/server/src/samples/6e4a2e.jpg differ diff --git a/server/src/samples/6e5034.jpg b/server/src/samples/6e5034.jpg new file mode 100644 index 0000000..4892d19 Binary files /dev/null and b/server/src/samples/6e5034.jpg differ diff --git a/server/src/samples/6e5631.jpg b/server/src/samples/6e5631.jpg new file mode 100644 index 0000000..85f1cb8 Binary files /dev/null and b/server/src/samples/6e5631.jpg differ diff --git a/server/src/samples/6e5b60.jpg b/server/src/samples/6e5b60.jpg new file mode 100644 index 0000000..94b282a Binary files /dev/null and b/server/src/samples/6e5b60.jpg differ diff --git a/server/src/samples/6e635f.jpg b/server/src/samples/6e635f.jpg new file mode 100644 index 0000000..f0d9dff Binary files /dev/null and b/server/src/samples/6e635f.jpg differ diff --git a/server/src/samples/6e6a3b.jpg b/server/src/samples/6e6a3b.jpg new file mode 100644 index 0000000..7421ad2 Binary files /dev/null and b/server/src/samples/6e6a3b.jpg differ diff --git a/server/src/samples/6e7251.jpg b/server/src/samples/6e7251.jpg new file mode 100644 index 0000000..bf5e427 Binary files /dev/null and b/server/src/samples/6e7251.jpg differ diff --git a/server/src/samples/6e7776.jpg b/server/src/samples/6e7776.jpg new file mode 100644 index 0000000..9260996 Binary files /dev/null and b/server/src/samples/6e7776.jpg differ diff --git a/server/src/samples/6e8a7f.jpg b/server/src/samples/6e8a7f.jpg new file mode 100644 index 0000000..62e8aff Binary files /dev/null and b/server/src/samples/6e8a7f.jpg differ diff --git a/server/src/samples/6f4b39.jpg b/server/src/samples/6f4b39.jpg new file mode 100644 index 0000000..9d99dc7 Binary files /dev/null and b/server/src/samples/6f4b39.jpg differ diff --git a/server/src/samples/6f5233.jpg b/server/src/samples/6f5233.jpg new file mode 100644 index 0000000..07c7383 Binary files /dev/null and b/server/src/samples/6f5233.jpg differ diff --git a/server/src/samples/6f542f.jpg b/server/src/samples/6f542f.jpg new file mode 100644 index 0000000..4765751 Binary files /dev/null and b/server/src/samples/6f542f.jpg differ diff --git a/server/src/samples/6f5830.jpg b/server/src/samples/6f5830.jpg new file mode 100644 index 0000000..8400fa7 Binary files /dev/null and b/server/src/samples/6f5830.jpg differ diff --git a/server/src/samples/6f5936.jpg b/server/src/samples/6f5936.jpg new file mode 100644 index 0000000..3d25528 Binary files /dev/null and b/server/src/samples/6f5936.jpg differ diff --git a/server/src/samples/6f5958.jpg b/server/src/samples/6f5958.jpg new file mode 100644 index 0000000..1871fbc Binary files /dev/null and b/server/src/samples/6f5958.jpg differ diff --git a/server/src/samples/6f5d3a.jpg b/server/src/samples/6f5d3a.jpg new file mode 100644 index 0000000..b2375b7 Binary files /dev/null and b/server/src/samples/6f5d3a.jpg differ diff --git a/server/src/samples/6f5e33.jpg b/server/src/samples/6f5e33.jpg new file mode 100644 index 0000000..3a7e5e1 Binary files /dev/null and b/server/src/samples/6f5e33.jpg differ diff --git a/server/src/samples/6f6072.jpg b/server/src/samples/6f6072.jpg new file mode 100644 index 0000000..58dedec Binary files /dev/null and b/server/src/samples/6f6072.jpg differ diff --git a/server/src/samples/6f7d76.jpg b/server/src/samples/6f7d76.jpg new file mode 100644 index 0000000..7f1a29d Binary files /dev/null and b/server/src/samples/6f7d76.jpg differ diff --git a/server/src/samples/6f828c.jpg b/server/src/samples/6f828c.jpg new file mode 100644 index 0000000..541172d Binary files /dev/null and b/server/src/samples/6f828c.jpg differ diff --git a/server/src/samples/6f8f71.jpg b/server/src/samples/6f8f71.jpg new file mode 100644 index 0000000..dd6417a Binary files /dev/null and b/server/src/samples/6f8f71.jpg differ diff --git a/server/src/samples/70391d.jpg b/server/src/samples/70391d.jpg new file mode 100644 index 0000000..583feed Binary files /dev/null and b/server/src/samples/70391d.jpg differ diff --git a/server/src/samples/704022.jpg b/server/src/samples/704022.jpg new file mode 100644 index 0000000..06ad73a Binary files /dev/null and b/server/src/samples/704022.jpg differ diff --git a/server/src/samples/704620.jpg b/server/src/samples/704620.jpg new file mode 100644 index 0000000..a676024 Binary files /dev/null and b/server/src/samples/704620.jpg differ diff --git a/server/src/samples/704f27.jpg b/server/src/samples/704f27.jpg new file mode 100644 index 0000000..7005636 Binary files /dev/null and b/server/src/samples/704f27.jpg differ diff --git a/server/src/samples/705022.jpg b/server/src/samples/705022.jpg new file mode 100644 index 0000000..f5f4a97 Binary files /dev/null and b/server/src/samples/705022.jpg differ diff --git a/server/src/samples/70543b.jpg b/server/src/samples/70543b.jpg new file mode 100644 index 0000000..801d8ca Binary files /dev/null and b/server/src/samples/70543b.jpg differ diff --git a/server/src/samples/705528.jpg b/server/src/samples/705528.jpg new file mode 100644 index 0000000..646fc0e Binary files /dev/null and b/server/src/samples/705528.jpg differ diff --git a/server/src/samples/70554f.jpg b/server/src/samples/70554f.jpg new file mode 100644 index 0000000..f225aa1 Binary files /dev/null and b/server/src/samples/70554f.jpg differ diff --git a/server/src/samples/70673e.jpg b/server/src/samples/70673e.jpg new file mode 100644 index 0000000..d79e0bc Binary files /dev/null and b/server/src/samples/70673e.jpg differ diff --git a/server/src/samples/70693e.jpg b/server/src/samples/70693e.jpg new file mode 100644 index 0000000..c0d8b2f Binary files /dev/null and b/server/src/samples/70693e.jpg differ diff --git a/server/src/samples/706b45.jpg b/server/src/samples/706b45.jpg new file mode 100644 index 0000000..d38a288 Binary files /dev/null and b/server/src/samples/706b45.jpg differ diff --git a/server/src/samples/707369.jpg b/server/src/samples/707369.jpg new file mode 100644 index 0000000..153b996 Binary files /dev/null and b/server/src/samples/707369.jpg differ diff --git a/server/src/samples/70796e.jpg b/server/src/samples/70796e.jpg new file mode 100644 index 0000000..bec5d73 Binary files /dev/null and b/server/src/samples/70796e.jpg differ diff --git a/server/src/samples/70916b.jpg b/server/src/samples/70916b.jpg new file mode 100644 index 0000000..2adbed5 Binary files /dev/null and b/server/src/samples/70916b.jpg differ diff --git a/server/src/samples/71301e.jpg b/server/src/samples/71301e.jpg new file mode 100644 index 0000000..077ecba Binary files /dev/null and b/server/src/samples/71301e.jpg differ diff --git a/server/src/samples/714728.jpg b/server/src/samples/714728.jpg new file mode 100644 index 0000000..8102eca Binary files /dev/null and b/server/src/samples/714728.jpg differ diff --git a/server/src/samples/714730.jpg b/server/src/samples/714730.jpg new file mode 100644 index 0000000..e66be28 Binary files /dev/null and b/server/src/samples/714730.jpg differ diff --git a/server/src/samples/714831.jpg b/server/src/samples/714831.jpg new file mode 100644 index 0000000..de75259 Binary files /dev/null and b/server/src/samples/714831.jpg differ diff --git a/server/src/samples/714a30.jpg b/server/src/samples/714a30.jpg new file mode 100644 index 0000000..4783919 Binary files /dev/null and b/server/src/samples/714a30.jpg differ diff --git a/server/src/samples/715c2d.jpg b/server/src/samples/715c2d.jpg new file mode 100644 index 0000000..7f249db Binary files /dev/null and b/server/src/samples/715c2d.jpg differ diff --git a/server/src/samples/716068.jpg b/server/src/samples/716068.jpg new file mode 100644 index 0000000..3291f48 Binary files /dev/null and b/server/src/samples/716068.jpg differ diff --git a/server/src/samples/716235.jpg b/server/src/samples/716235.jpg new file mode 100644 index 0000000..98cf228 Binary files /dev/null and b/server/src/samples/716235.jpg differ diff --git a/server/src/samples/716857.jpg b/server/src/samples/716857.jpg new file mode 100644 index 0000000..bae6f15 Binary files /dev/null and b/server/src/samples/716857.jpg differ diff --git a/server/src/samples/716a3c.jpg b/server/src/samples/716a3c.jpg new file mode 100644 index 0000000..3c07267 Binary files /dev/null and b/server/src/samples/716a3c.jpg differ diff --git a/server/src/samples/723932.jpg b/server/src/samples/723932.jpg new file mode 100644 index 0000000..7da1d91 Binary files /dev/null and b/server/src/samples/723932.jpg differ diff --git a/server/src/samples/72422c.jpg b/server/src/samples/72422c.jpg new file mode 100644 index 0000000..3fb84d4 Binary files /dev/null and b/server/src/samples/72422c.jpg differ diff --git a/server/src/samples/72492d.jpg b/server/src/samples/72492d.jpg new file mode 100644 index 0000000..c56e9d1 Binary files /dev/null and b/server/src/samples/72492d.jpg differ diff --git a/server/src/samples/725627.jpg b/server/src/samples/725627.jpg new file mode 100644 index 0000000..193cd35 Binary files /dev/null and b/server/src/samples/725627.jpg differ diff --git a/server/src/samples/725733.jpg b/server/src/samples/725733.jpg new file mode 100644 index 0000000..ba1c4fe Binary files /dev/null and b/server/src/samples/725733.jpg differ diff --git a/server/src/samples/725922.jpg b/server/src/samples/725922.jpg new file mode 100644 index 0000000..d5b1a49 Binary files /dev/null and b/server/src/samples/725922.jpg differ diff --git a/server/src/samples/725a22.jpg b/server/src/samples/725a22.jpg new file mode 100644 index 0000000..22b22f9 Binary files /dev/null and b/server/src/samples/725a22.jpg differ diff --git a/server/src/samples/725f40.jpg b/server/src/samples/725f40.jpg new file mode 100644 index 0000000..c9dbed0 Binary files /dev/null and b/server/src/samples/725f40.jpg differ diff --git a/server/src/samples/72603c.jpg b/server/src/samples/72603c.jpg new file mode 100644 index 0000000..57059f6 Binary files /dev/null and b/server/src/samples/72603c.jpg differ diff --git a/server/src/samples/72613a.jpg b/server/src/samples/72613a.jpg new file mode 100644 index 0000000..31989ab Binary files /dev/null and b/server/src/samples/72613a.jpg differ diff --git a/server/src/samples/72726a.jpg b/server/src/samples/72726a.jpg new file mode 100644 index 0000000..48b93d4 Binary files /dev/null and b/server/src/samples/72726a.jpg differ diff --git a/server/src/samples/73342e.jpg b/server/src/samples/73342e.jpg new file mode 100644 index 0000000..dae5f88 Binary files /dev/null and b/server/src/samples/73342e.jpg differ diff --git a/server/src/samples/733834.jpg b/server/src/samples/733834.jpg new file mode 100644 index 0000000..f812e08 Binary files /dev/null and b/server/src/samples/733834.jpg differ diff --git a/server/src/samples/733e24.jpg b/server/src/samples/733e24.jpg new file mode 100644 index 0000000..a1a5710 Binary files /dev/null and b/server/src/samples/733e24.jpg differ diff --git a/server/src/samples/735544.jpg b/server/src/samples/735544.jpg new file mode 100644 index 0000000..1e79be3 Binary files /dev/null and b/server/src/samples/735544.jpg differ diff --git a/server/src/samples/73572d.jpg b/server/src/samples/73572d.jpg new file mode 100644 index 0000000..51ac0a6 Binary files /dev/null and b/server/src/samples/73572d.jpg differ diff --git a/server/src/samples/735b5b.jpg b/server/src/samples/735b5b.jpg new file mode 100644 index 0000000..ed2fa87 Binary files /dev/null and b/server/src/samples/735b5b.jpg differ diff --git a/server/src/samples/735e4e.jpg b/server/src/samples/735e4e.jpg new file mode 100644 index 0000000..aa9869d Binary files /dev/null and b/server/src/samples/735e4e.jpg differ diff --git a/server/src/samples/737365.jpg b/server/src/samples/737365.jpg new file mode 100644 index 0000000..1d1fdb5 Binary files /dev/null and b/server/src/samples/737365.jpg differ diff --git a/server/src/samples/73794b.jpg b/server/src/samples/73794b.jpg new file mode 100644 index 0000000..27fc15a Binary files /dev/null and b/server/src/samples/73794b.jpg differ diff --git a/server/src/samples/73795b.jpg b/server/src/samples/73795b.jpg new file mode 100644 index 0000000..5fc4ff3 Binary files /dev/null and b/server/src/samples/73795b.jpg differ diff --git a/server/src/samples/737963.jpg b/server/src/samples/737963.jpg new file mode 100644 index 0000000..c9776f3 Binary files /dev/null and b/server/src/samples/737963.jpg differ diff --git a/server/src/samples/737f77.jpg b/server/src/samples/737f77.jpg new file mode 100644 index 0000000..98cd8e6 Binary files /dev/null and b/server/src/samples/737f77.jpg differ diff --git a/server/src/samples/742e34.jpg b/server/src/samples/742e34.jpg new file mode 100644 index 0000000..487fbb7 Binary files /dev/null and b/server/src/samples/742e34.jpg differ diff --git a/server/src/samples/742f32.jpg b/server/src/samples/742f32.jpg new file mode 100644 index 0000000..196d483 Binary files /dev/null and b/server/src/samples/742f32.jpg differ diff --git a/server/src/samples/74352d.jpg b/server/src/samples/74352d.jpg new file mode 100644 index 0000000..2af10d4 Binary files /dev/null and b/server/src/samples/74352d.jpg differ diff --git a/server/src/samples/743d2e.jpg b/server/src/samples/743d2e.jpg new file mode 100644 index 0000000..5571ed9 Binary files /dev/null and b/server/src/samples/743d2e.jpg differ diff --git a/server/src/samples/744833.jpg b/server/src/samples/744833.jpg new file mode 100644 index 0000000..c3f6377 Binary files /dev/null and b/server/src/samples/744833.jpg differ diff --git a/server/src/samples/744f35.jpg b/server/src/samples/744f35.jpg new file mode 100644 index 0000000..69992fe Binary files /dev/null and b/server/src/samples/744f35.jpg differ diff --git a/server/src/samples/745045.jpg b/server/src/samples/745045.jpg new file mode 100644 index 0000000..09f5553 Binary files /dev/null and b/server/src/samples/745045.jpg differ diff --git a/server/src/samples/745325.jpg b/server/src/samples/745325.jpg new file mode 100644 index 0000000..0c03894 Binary files /dev/null and b/server/src/samples/745325.jpg differ diff --git a/server/src/samples/745739.jpg b/server/src/samples/745739.jpg new file mode 100644 index 0000000..eb8a75b Binary files /dev/null and b/server/src/samples/745739.jpg differ diff --git a/server/src/samples/74573c.jpg b/server/src/samples/74573c.jpg new file mode 100644 index 0000000..f1ca78f Binary files /dev/null and b/server/src/samples/74573c.jpg differ diff --git a/server/src/samples/746234.jpg b/server/src/samples/746234.jpg new file mode 100644 index 0000000..6068f5c Binary files /dev/null and b/server/src/samples/746234.jpg differ diff --git a/server/src/samples/746264.jpg b/server/src/samples/746264.jpg new file mode 100644 index 0000000..d967fb0 Binary files /dev/null and b/server/src/samples/746264.jpg differ diff --git a/server/src/samples/746457.jpg b/server/src/samples/746457.jpg new file mode 100644 index 0000000..80c4bee Binary files /dev/null and b/server/src/samples/746457.jpg differ diff --git a/server/src/samples/74705d.jpg b/server/src/samples/74705d.jpg new file mode 100644 index 0000000..0833349 Binary files /dev/null and b/server/src/samples/74705d.jpg differ diff --git a/server/src/samples/747848.jpg b/server/src/samples/747848.jpg new file mode 100644 index 0000000..51b2e50 Binary files /dev/null and b/server/src/samples/747848.jpg differ diff --git a/server/src/samples/747d78.jpg b/server/src/samples/747d78.jpg new file mode 100644 index 0000000..76dfdb8 Binary files /dev/null and b/server/src/samples/747d78.jpg differ diff --git a/server/src/samples/753034.jpg b/server/src/samples/753034.jpg new file mode 100644 index 0000000..0414f1d Binary files /dev/null and b/server/src/samples/753034.jpg differ diff --git a/server/src/samples/753d1f.jpg b/server/src/samples/753d1f.jpg new file mode 100644 index 0000000..8518e1d Binary files /dev/null and b/server/src/samples/753d1f.jpg differ diff --git a/server/src/samples/755d30.jpg b/server/src/samples/755d30.jpg new file mode 100644 index 0000000..a620877 Binary files /dev/null and b/server/src/samples/755d30.jpg differ diff --git a/server/src/samples/756535.jpg b/server/src/samples/756535.jpg new file mode 100644 index 0000000..1053ae5 Binary files /dev/null and b/server/src/samples/756535.jpg differ diff --git a/server/src/samples/756a44.jpg b/server/src/samples/756a44.jpg new file mode 100644 index 0000000..b9d1bfc Binary files /dev/null and b/server/src/samples/756a44.jpg differ diff --git a/server/src/samples/757144.jpg b/server/src/samples/757144.jpg new file mode 100644 index 0000000..b09ffe3 Binary files /dev/null and b/server/src/samples/757144.jpg differ diff --git a/server/src/samples/757365.jpg b/server/src/samples/757365.jpg new file mode 100644 index 0000000..192c212 Binary files /dev/null and b/server/src/samples/757365.jpg differ diff --git a/server/src/samples/757568.jpg b/server/src/samples/757568.jpg new file mode 100644 index 0000000..683f829 Binary files /dev/null and b/server/src/samples/757568.jpg differ diff --git a/server/src/samples/7583a6.jpg b/server/src/samples/7583a6.jpg new file mode 100644 index 0000000..1d7f743 Binary files /dev/null and b/server/src/samples/7583a6.jpg differ diff --git a/server/src/samples/758d72.jpg b/server/src/samples/758d72.jpg new file mode 100644 index 0000000..c44eaf2 Binary files /dev/null and b/server/src/samples/758d72.jpg differ diff --git a/server/src/samples/763d34.jpg b/server/src/samples/763d34.jpg new file mode 100644 index 0000000..d84fcca Binary files /dev/null and b/server/src/samples/763d34.jpg differ diff --git a/server/src/samples/764650.jpg b/server/src/samples/764650.jpg new file mode 100644 index 0000000..827d680 Binary files /dev/null and b/server/src/samples/764650.jpg differ diff --git a/server/src/samples/764d31.jpg b/server/src/samples/764d31.jpg new file mode 100644 index 0000000..ac38299 Binary files /dev/null and b/server/src/samples/764d31.jpg differ diff --git a/server/src/samples/765c4e.jpg b/server/src/samples/765c4e.jpg new file mode 100644 index 0000000..f553173 Binary files /dev/null and b/server/src/samples/765c4e.jpg differ diff --git a/server/src/samples/766452.jpg b/server/src/samples/766452.jpg new file mode 100644 index 0000000..1249424 Binary files /dev/null and b/server/src/samples/766452.jpg differ diff --git a/server/src/samples/766f52.jpg b/server/src/samples/766f52.jpg new file mode 100644 index 0000000..ffb70d4 Binary files /dev/null and b/server/src/samples/766f52.jpg differ diff --git a/server/src/samples/767241.jpg b/server/src/samples/767241.jpg new file mode 100644 index 0000000..a2590e7 Binary files /dev/null and b/server/src/samples/767241.jpg differ diff --git a/server/src/samples/767244.jpg b/server/src/samples/767244.jpg new file mode 100644 index 0000000..b0cd86e Binary files /dev/null and b/server/src/samples/767244.jpg differ diff --git a/server/src/samples/767251.jpg b/server/src/samples/767251.jpg new file mode 100644 index 0000000..8d0577e Binary files /dev/null and b/server/src/samples/767251.jpg differ diff --git a/server/src/samples/76766d.jpg b/server/src/samples/76766d.jpg new file mode 100644 index 0000000..e55ea47 Binary files /dev/null and b/server/src/samples/76766d.jpg differ diff --git a/server/src/samples/773a3a.jpg b/server/src/samples/773a3a.jpg new file mode 100644 index 0000000..58ba407 Binary files /dev/null and b/server/src/samples/773a3a.jpg differ diff --git a/server/src/samples/774320.jpg b/server/src/samples/774320.jpg new file mode 100644 index 0000000..a54e889 Binary files /dev/null and b/server/src/samples/774320.jpg differ diff --git a/server/src/samples/774429.jpg b/server/src/samples/774429.jpg new file mode 100644 index 0000000..b5d30b8 Binary files /dev/null and b/server/src/samples/774429.jpg differ diff --git a/server/src/samples/77452d.jpg b/server/src/samples/77452d.jpg new file mode 100644 index 0000000..167658c Binary files /dev/null and b/server/src/samples/77452d.jpg differ diff --git a/server/src/samples/774b34.jpg b/server/src/samples/774b34.jpg new file mode 100644 index 0000000..4c9bece Binary files /dev/null and b/server/src/samples/774b34.jpg differ diff --git a/server/src/samples/775245.jpg b/server/src/samples/775245.jpg new file mode 100644 index 0000000..a405f1e Binary files /dev/null and b/server/src/samples/775245.jpg differ diff --git a/server/src/samples/77593a.jpg b/server/src/samples/77593a.jpg new file mode 100644 index 0000000..b6b7b84 Binary files /dev/null and b/server/src/samples/77593a.jpg differ diff --git a/server/src/samples/775c2f.jpg b/server/src/samples/775c2f.jpg new file mode 100644 index 0000000..074ee63 Binary files /dev/null and b/server/src/samples/775c2f.jpg differ diff --git a/server/src/samples/77653f.jpg b/server/src/samples/77653f.jpg new file mode 100644 index 0000000..d517a9c Binary files /dev/null and b/server/src/samples/77653f.jpg differ diff --git a/server/src/samples/776541.jpg b/server/src/samples/776541.jpg new file mode 100644 index 0000000..e8bf9df Binary files /dev/null and b/server/src/samples/776541.jpg differ diff --git a/server/src/samples/777568.jpg b/server/src/samples/777568.jpg new file mode 100644 index 0000000..8a954f9 Binary files /dev/null and b/server/src/samples/777568.jpg differ diff --git a/server/src/samples/777767.jpg b/server/src/samples/777767.jpg new file mode 100644 index 0000000..e75f7ea Binary files /dev/null and b/server/src/samples/777767.jpg differ diff --git a/server/src/samples/783620.jpg b/server/src/samples/783620.jpg new file mode 100644 index 0000000..609d979 Binary files /dev/null and b/server/src/samples/783620.jpg differ diff --git a/server/src/samples/783836.jpg b/server/src/samples/783836.jpg new file mode 100644 index 0000000..9822867 Binary files /dev/null and b/server/src/samples/783836.jpg differ diff --git a/server/src/samples/78383b.jpg b/server/src/samples/78383b.jpg new file mode 100644 index 0000000..24821cc Binary files /dev/null and b/server/src/samples/78383b.jpg differ diff --git a/server/src/samples/78452a.jpg b/server/src/samples/78452a.jpg new file mode 100644 index 0000000..7440347 Binary files /dev/null and b/server/src/samples/78452a.jpg differ diff --git a/server/src/samples/78472f.jpg b/server/src/samples/78472f.jpg new file mode 100644 index 0000000..16ccc42 Binary files /dev/null and b/server/src/samples/78472f.jpg differ diff --git a/server/src/samples/78482f.jpg b/server/src/samples/78482f.jpg new file mode 100644 index 0000000..da473ca Binary files /dev/null and b/server/src/samples/78482f.jpg differ diff --git a/server/src/samples/785237.jpg b/server/src/samples/785237.jpg new file mode 100644 index 0000000..af439de Binary files /dev/null and b/server/src/samples/785237.jpg differ diff --git a/server/src/samples/785433.jpg b/server/src/samples/785433.jpg new file mode 100644 index 0000000..311a30c Binary files /dev/null and b/server/src/samples/785433.jpg differ diff --git a/server/src/samples/785737.jpg b/server/src/samples/785737.jpg new file mode 100644 index 0000000..39bc797 Binary files /dev/null and b/server/src/samples/785737.jpg differ diff --git a/server/src/samples/785825.jpg b/server/src/samples/785825.jpg new file mode 100644 index 0000000..e413074 Binary files /dev/null and b/server/src/samples/785825.jpg differ diff --git a/server/src/samples/785f3f.jpg b/server/src/samples/785f3f.jpg new file mode 100644 index 0000000..0e68d84 Binary files /dev/null and b/server/src/samples/785f3f.jpg differ diff --git a/server/src/samples/78612c.jpg b/server/src/samples/78612c.jpg new file mode 100644 index 0000000..5a45cb7 Binary files /dev/null and b/server/src/samples/78612c.jpg differ diff --git a/server/src/samples/786539.jpg b/server/src/samples/786539.jpg new file mode 100644 index 0000000..7aec4a3 Binary files /dev/null and b/server/src/samples/786539.jpg differ diff --git a/server/src/samples/786879.jpg b/server/src/samples/786879.jpg new file mode 100644 index 0000000..cd593f5 Binary files /dev/null and b/server/src/samples/786879.jpg differ diff --git a/server/src/samples/787245.jpg b/server/src/samples/787245.jpg new file mode 100644 index 0000000..25e60c4 Binary files /dev/null and b/server/src/samples/787245.jpg differ diff --git a/server/src/samples/78766b.jpg b/server/src/samples/78766b.jpg new file mode 100644 index 0000000..2a69ccf Binary files /dev/null and b/server/src/samples/78766b.jpg differ diff --git a/server/src/samples/787870.jpg b/server/src/samples/787870.jpg new file mode 100644 index 0000000..a8b1607 Binary files /dev/null and b/server/src/samples/787870.jpg differ diff --git a/server/src/samples/787e67.jpg b/server/src/samples/787e67.jpg new file mode 100644 index 0000000..654a478 Binary files /dev/null and b/server/src/samples/787e67.jpg differ diff --git a/server/src/samples/793135.jpg b/server/src/samples/793135.jpg new file mode 100644 index 0000000..e98bee1 Binary files /dev/null and b/server/src/samples/793135.jpg differ diff --git a/server/src/samples/793620.jpg b/server/src/samples/793620.jpg new file mode 100644 index 0000000..fd32e4e Binary files /dev/null and b/server/src/samples/793620.jpg differ diff --git a/server/src/samples/79383b.jpg b/server/src/samples/79383b.jpg new file mode 100644 index 0000000..fde89fa Binary files /dev/null and b/server/src/samples/79383b.jpg differ diff --git a/server/src/samples/79404d.jpg b/server/src/samples/79404d.jpg new file mode 100644 index 0000000..ec5bc2e Binary files /dev/null and b/server/src/samples/79404d.jpg differ diff --git a/server/src/samples/794456.jpg b/server/src/samples/794456.jpg new file mode 100644 index 0000000..07e4c2f Binary files /dev/null and b/server/src/samples/794456.jpg differ diff --git a/server/src/samples/795b29.jpg b/server/src/samples/795b29.jpg new file mode 100644 index 0000000..b973b76 Binary files /dev/null and b/server/src/samples/795b29.jpg differ diff --git a/server/src/samples/79616b.jpg b/server/src/samples/79616b.jpg new file mode 100644 index 0000000..aaad578 Binary files /dev/null and b/server/src/samples/79616b.jpg differ diff --git a/server/src/samples/796853.jpg b/server/src/samples/796853.jpg new file mode 100644 index 0000000..47d11a3 Binary files /dev/null and b/server/src/samples/796853.jpg differ diff --git a/server/src/samples/79827e.jpg b/server/src/samples/79827e.jpg new file mode 100644 index 0000000..fab602c Binary files /dev/null and b/server/src/samples/79827e.jpg differ diff --git a/server/src/samples/7a3638.jpg b/server/src/samples/7a3638.jpg new file mode 100644 index 0000000..c14a6da Binary files /dev/null and b/server/src/samples/7a3638.jpg differ diff --git a/server/src/samples/7a3c48.jpg b/server/src/samples/7a3c48.jpg new file mode 100644 index 0000000..8a495d0 Binary files /dev/null and b/server/src/samples/7a3c48.jpg differ diff --git a/server/src/samples/7a432c.jpg b/server/src/samples/7a432c.jpg new file mode 100644 index 0000000..83f229d Binary files /dev/null and b/server/src/samples/7a432c.jpg differ diff --git a/server/src/samples/7a452d.jpg b/server/src/samples/7a452d.jpg new file mode 100644 index 0000000..5b8899f Binary files /dev/null and b/server/src/samples/7a452d.jpg differ diff --git a/server/src/samples/7a492d.jpg b/server/src/samples/7a492d.jpg new file mode 100644 index 0000000..83c09d8 Binary files /dev/null and b/server/src/samples/7a492d.jpg differ diff --git a/server/src/samples/7a4b2f.jpg b/server/src/samples/7a4b2f.jpg new file mode 100644 index 0000000..2c9bb2f Binary files /dev/null and b/server/src/samples/7a4b2f.jpg differ diff --git a/server/src/samples/7a5628.jpg b/server/src/samples/7a5628.jpg new file mode 100644 index 0000000..880b515 Binary files /dev/null and b/server/src/samples/7a5628.jpg differ diff --git a/server/src/samples/7a5b29.jpg b/server/src/samples/7a5b29.jpg new file mode 100644 index 0000000..dfa0edc Binary files /dev/null and b/server/src/samples/7a5b29.jpg differ diff --git a/server/src/samples/7a5d24.jpg b/server/src/samples/7a5d24.jpg new file mode 100644 index 0000000..475c3dd Binary files /dev/null and b/server/src/samples/7a5d24.jpg differ diff --git a/server/src/samples/7a6950.jpg b/server/src/samples/7a6950.jpg new file mode 100644 index 0000000..3047ef5 Binary files /dev/null and b/server/src/samples/7a6950.jpg differ diff --git a/server/src/samples/7a754a.jpg b/server/src/samples/7a754a.jpg new file mode 100644 index 0000000..afbf997 Binary files /dev/null and b/server/src/samples/7a754a.jpg differ diff --git a/server/src/samples/7a7e67.jpg b/server/src/samples/7a7e67.jpg new file mode 100644 index 0000000..f29da3e Binary files /dev/null and b/server/src/samples/7a7e67.jpg differ diff --git a/server/src/samples/7a8347.jpg b/server/src/samples/7a8347.jpg new file mode 100644 index 0000000..30d84c0 Binary files /dev/null and b/server/src/samples/7a8347.jpg differ diff --git a/server/src/samples/7a8665.jpg b/server/src/samples/7a8665.jpg new file mode 100644 index 0000000..3405a3e Binary files /dev/null and b/server/src/samples/7a8665.jpg differ diff --git a/server/src/samples/7b3a27.jpg b/server/src/samples/7b3a27.jpg new file mode 100644 index 0000000..194a93c Binary files /dev/null and b/server/src/samples/7b3a27.jpg differ diff --git a/server/src/samples/7b3c48.jpg b/server/src/samples/7b3c48.jpg new file mode 100644 index 0000000..9f805b7 Binary files /dev/null and b/server/src/samples/7b3c48.jpg differ diff --git a/server/src/samples/7b3f21.jpg b/server/src/samples/7b3f21.jpg new file mode 100644 index 0000000..e14cc2b Binary files /dev/null and b/server/src/samples/7b3f21.jpg differ diff --git a/server/src/samples/7b472a.jpg b/server/src/samples/7b472a.jpg new file mode 100644 index 0000000..aa51cab Binary files /dev/null and b/server/src/samples/7b472a.jpg differ diff --git a/server/src/samples/7b5139.jpg b/server/src/samples/7b5139.jpg new file mode 100644 index 0000000..d668ad5 Binary files /dev/null and b/server/src/samples/7b5139.jpg differ diff --git a/server/src/samples/7b5c2e.jpg b/server/src/samples/7b5c2e.jpg new file mode 100644 index 0000000..1e3a64d Binary files /dev/null and b/server/src/samples/7b5c2e.jpg differ diff --git a/server/src/samples/7b5f39.jpg b/server/src/samples/7b5f39.jpg new file mode 100644 index 0000000..197b84a Binary files /dev/null and b/server/src/samples/7b5f39.jpg differ diff --git a/server/src/samples/7b604e.jpg b/server/src/samples/7b604e.jpg new file mode 100644 index 0000000..38f8f1e Binary files /dev/null and b/server/src/samples/7b604e.jpg differ diff --git a/server/src/samples/7b6125.jpg b/server/src/samples/7b6125.jpg new file mode 100644 index 0000000..06d752f Binary files /dev/null and b/server/src/samples/7b6125.jpg differ diff --git a/server/src/samples/7b6224.jpg b/server/src/samples/7b6224.jpg new file mode 100644 index 0000000..ccfe321 Binary files /dev/null and b/server/src/samples/7b6224.jpg differ diff --git a/server/src/samples/7b625c.jpg b/server/src/samples/7b625c.jpg new file mode 100644 index 0000000..28ffc41 Binary files /dev/null and b/server/src/samples/7b625c.jpg differ diff --git a/server/src/samples/7b6656.jpg b/server/src/samples/7b6656.jpg new file mode 100644 index 0000000..0a52ca9 Binary files /dev/null and b/server/src/samples/7b6656.jpg differ diff --git a/server/src/samples/7b6944.jpg b/server/src/samples/7b6944.jpg new file mode 100644 index 0000000..741f31b Binary files /dev/null and b/server/src/samples/7b6944.jpg differ diff --git a/server/src/samples/7b7563.jpg b/server/src/samples/7b7563.jpg new file mode 100644 index 0000000..55c4ec2 Binary files /dev/null and b/server/src/samples/7b7563.jpg differ diff --git a/server/src/samples/7b7a6b.jpg b/server/src/samples/7b7a6b.jpg new file mode 100644 index 0000000..af112c9 Binary files /dev/null and b/server/src/samples/7b7a6b.jpg differ diff --git a/server/src/samples/7b7c6f.jpg b/server/src/samples/7b7c6f.jpg new file mode 100644 index 0000000..1105658 Binary files /dev/null and b/server/src/samples/7b7c6f.jpg differ diff --git a/server/src/samples/7c3b34.jpg b/server/src/samples/7c3b34.jpg new file mode 100644 index 0000000..84a676e Binary files /dev/null and b/server/src/samples/7c3b34.jpg differ diff --git a/server/src/samples/7c3e2a.jpg b/server/src/samples/7c3e2a.jpg new file mode 100644 index 0000000..12b5108 Binary files /dev/null and b/server/src/samples/7c3e2a.jpg differ diff --git a/server/src/samples/7c402d.jpg b/server/src/samples/7c402d.jpg new file mode 100644 index 0000000..c1331fb Binary files /dev/null and b/server/src/samples/7c402d.jpg differ diff --git a/server/src/samples/7c452b.jpg b/server/src/samples/7c452b.jpg new file mode 100644 index 0000000..59cac1e Binary files /dev/null and b/server/src/samples/7c452b.jpg differ diff --git a/server/src/samples/7c4542.jpg b/server/src/samples/7c4542.jpg new file mode 100644 index 0000000..7b455f0 Binary files /dev/null and b/server/src/samples/7c4542.jpg differ diff --git a/server/src/samples/7c4a30.jpg b/server/src/samples/7c4a30.jpg new file mode 100644 index 0000000..39fc34f Binary files /dev/null and b/server/src/samples/7c4a30.jpg differ diff --git a/server/src/samples/7c4b2e.jpg b/server/src/samples/7c4b2e.jpg new file mode 100644 index 0000000..ae60c3f Binary files /dev/null and b/server/src/samples/7c4b2e.jpg differ diff --git a/server/src/samples/7c5032.jpg b/server/src/samples/7c5032.jpg new file mode 100644 index 0000000..7717045 Binary files /dev/null and b/server/src/samples/7c5032.jpg differ diff --git a/server/src/samples/7c5437.jpg b/server/src/samples/7c5437.jpg new file mode 100644 index 0000000..faa73c4 Binary files /dev/null and b/server/src/samples/7c5437.jpg differ diff --git a/server/src/samples/7c5928.jpg b/server/src/samples/7c5928.jpg new file mode 100644 index 0000000..37731dd Binary files /dev/null and b/server/src/samples/7c5928.jpg differ diff --git a/server/src/samples/7c5e31.jpg b/server/src/samples/7c5e31.jpg new file mode 100644 index 0000000..44a7d95 Binary files /dev/null and b/server/src/samples/7c5e31.jpg differ diff --git a/server/src/samples/7c8164.jpg b/server/src/samples/7c8164.jpg new file mode 100644 index 0000000..4be88ac Binary files /dev/null and b/server/src/samples/7c8164.jpg differ diff --git a/server/src/samples/7c8379.jpg b/server/src/samples/7c8379.jpg new file mode 100644 index 0000000..ba4d329 Binary files /dev/null and b/server/src/samples/7c8379.jpg differ diff --git a/server/src/samples/7c867f.jpg b/server/src/samples/7c867f.jpg new file mode 100644 index 0000000..b667b54 Binary files /dev/null and b/server/src/samples/7c867f.jpg differ diff --git a/server/src/samples/7c8c5d.jpg b/server/src/samples/7c8c5d.jpg new file mode 100644 index 0000000..58bf42a Binary files /dev/null and b/server/src/samples/7c8c5d.jpg differ diff --git a/server/src/samples/7d4624.jpg b/server/src/samples/7d4624.jpg new file mode 100644 index 0000000..6dbdcc3 Binary files /dev/null and b/server/src/samples/7d4624.jpg differ diff --git a/server/src/samples/7d4d34.jpg b/server/src/samples/7d4d34.jpg new file mode 100644 index 0000000..8c2588e Binary files /dev/null and b/server/src/samples/7d4d34.jpg differ diff --git a/server/src/samples/7d5645.jpg b/server/src/samples/7d5645.jpg new file mode 100644 index 0000000..fa2e20c Binary files /dev/null and b/server/src/samples/7d5645.jpg differ diff --git a/server/src/samples/7d5926.jpg b/server/src/samples/7d5926.jpg new file mode 100644 index 0000000..c1f87fd Binary files /dev/null and b/server/src/samples/7d5926.jpg differ diff --git a/server/src/samples/7d5928.jpg b/server/src/samples/7d5928.jpg new file mode 100644 index 0000000..58b8d25 Binary files /dev/null and b/server/src/samples/7d5928.jpg differ diff --git a/server/src/samples/7d602e.jpg b/server/src/samples/7d602e.jpg new file mode 100644 index 0000000..2f61599 Binary files /dev/null and b/server/src/samples/7d602e.jpg differ diff --git a/server/src/samples/7d6134.jpg b/server/src/samples/7d6134.jpg new file mode 100644 index 0000000..6d8514f Binary files /dev/null and b/server/src/samples/7d6134.jpg differ diff --git a/server/src/samples/7d806b.jpg b/server/src/samples/7d806b.jpg new file mode 100644 index 0000000..f0fad80 Binary files /dev/null and b/server/src/samples/7d806b.jpg differ diff --git a/server/src/samples/7d8577.jpg b/server/src/samples/7d8577.jpg new file mode 100644 index 0000000..7a02835 Binary files /dev/null and b/server/src/samples/7d8577.jpg differ diff --git a/server/src/samples/7d877c.jpg b/server/src/samples/7d877c.jpg new file mode 100644 index 0000000..a091a80 Binary files /dev/null and b/server/src/samples/7d877c.jpg differ diff --git a/server/src/samples/7d877d.jpg b/server/src/samples/7d877d.jpg new file mode 100644 index 0000000..52ea59a Binary files /dev/null and b/server/src/samples/7d877d.jpg differ diff --git a/server/src/samples/7d8965.jpg b/server/src/samples/7d8965.jpg new file mode 100644 index 0000000..8d45565 Binary files /dev/null and b/server/src/samples/7d8965.jpg differ diff --git a/server/src/samples/7e4120.jpg b/server/src/samples/7e4120.jpg new file mode 100644 index 0000000..d937a78 Binary files /dev/null and b/server/src/samples/7e4120.jpg differ diff --git a/server/src/samples/7e472f.jpg b/server/src/samples/7e472f.jpg new file mode 100644 index 0000000..e0b01da Binary files /dev/null and b/server/src/samples/7e472f.jpg differ diff --git a/server/src/samples/7e4925.jpg b/server/src/samples/7e4925.jpg new file mode 100644 index 0000000..144730c Binary files /dev/null and b/server/src/samples/7e4925.jpg differ diff --git a/server/src/samples/7e4a37.jpg b/server/src/samples/7e4a37.jpg new file mode 100644 index 0000000..bb92544 Binary files /dev/null and b/server/src/samples/7e4a37.jpg differ diff --git a/server/src/samples/7e562d.jpg b/server/src/samples/7e562d.jpg new file mode 100644 index 0000000..67d705d Binary files /dev/null and b/server/src/samples/7e562d.jpg differ diff --git a/server/src/samples/7e592d.jpg b/server/src/samples/7e592d.jpg new file mode 100644 index 0000000..ac70fef Binary files /dev/null and b/server/src/samples/7e592d.jpg differ diff --git a/server/src/samples/7e5d28.jpg b/server/src/samples/7e5d28.jpg new file mode 100644 index 0000000..13fb983 Binary files /dev/null and b/server/src/samples/7e5d28.jpg differ diff --git a/server/src/samples/7e7266.jpg b/server/src/samples/7e7266.jpg new file mode 100644 index 0000000..3a75091 Binary files /dev/null and b/server/src/samples/7e7266.jpg differ diff --git a/server/src/samples/7e726e.jpg b/server/src/samples/7e726e.jpg new file mode 100644 index 0000000..c6c417e Binary files /dev/null and b/server/src/samples/7e726e.jpg differ diff --git a/server/src/samples/7e7763.jpg b/server/src/samples/7e7763.jpg new file mode 100644 index 0000000..3b9f668 Binary files /dev/null and b/server/src/samples/7e7763.jpg differ diff --git a/server/src/samples/7e7764.jpg b/server/src/samples/7e7764.jpg new file mode 100644 index 0000000..c2f33de Binary files /dev/null and b/server/src/samples/7e7764.jpg differ diff --git a/server/src/samples/7e7964.jpg b/server/src/samples/7e7964.jpg new file mode 100644 index 0000000..4142bf0 Binary files /dev/null and b/server/src/samples/7e7964.jpg differ diff --git a/server/src/samples/7e887d.jpg b/server/src/samples/7e887d.jpg new file mode 100644 index 0000000..790d2fc Binary files /dev/null and b/server/src/samples/7e887d.jpg differ diff --git a/server/src/samples/7e8c71.jpg b/server/src/samples/7e8c71.jpg new file mode 100644 index 0000000..d66a53f Binary files /dev/null and b/server/src/samples/7e8c71.jpg differ diff --git a/server/src/samples/7e8e52.jpg b/server/src/samples/7e8e52.jpg new file mode 100644 index 0000000..856c62f Binary files /dev/null and b/server/src/samples/7e8e52.jpg differ diff --git a/server/src/samples/7e9b69.jpg b/server/src/samples/7e9b69.jpg new file mode 100644 index 0000000..1d45624 Binary files /dev/null and b/server/src/samples/7e9b69.jpg differ diff --git a/server/src/samples/7f401e.jpg b/server/src/samples/7f401e.jpg new file mode 100644 index 0000000..a945b46 Binary files /dev/null and b/server/src/samples/7f401e.jpg differ diff --git a/server/src/samples/7f4838.jpg b/server/src/samples/7f4838.jpg new file mode 100644 index 0000000..bd0570f Binary files /dev/null and b/server/src/samples/7f4838.jpg differ diff --git a/server/src/samples/7f4d37.jpg b/server/src/samples/7f4d37.jpg new file mode 100644 index 0000000..51431e2 Binary files /dev/null and b/server/src/samples/7f4d37.jpg differ diff --git a/server/src/samples/7f5639.jpg b/server/src/samples/7f5639.jpg new file mode 100644 index 0000000..7cf5148 Binary files /dev/null and b/server/src/samples/7f5639.jpg differ diff --git a/server/src/samples/7f5827.jpg b/server/src/samples/7f5827.jpg new file mode 100644 index 0000000..1ead189 Binary files /dev/null and b/server/src/samples/7f5827.jpg differ diff --git a/server/src/samples/7f5e60.jpg b/server/src/samples/7f5e60.jpg new file mode 100644 index 0000000..980cd29 Binary files /dev/null and b/server/src/samples/7f5e60.jpg differ diff --git a/server/src/samples/7f604d.jpg b/server/src/samples/7f604d.jpg new file mode 100644 index 0000000..1acf211 Binary files /dev/null and b/server/src/samples/7f604d.jpg differ diff --git a/server/src/samples/7f6156.jpg b/server/src/samples/7f6156.jpg new file mode 100644 index 0000000..4ee3374 Binary files /dev/null and b/server/src/samples/7f6156.jpg differ diff --git a/server/src/samples/7f633d.jpg b/server/src/samples/7f633d.jpg new file mode 100644 index 0000000..730fd21 Binary files /dev/null and b/server/src/samples/7f633d.jpg differ diff --git a/server/src/samples/7f6b2e.jpg b/server/src/samples/7f6b2e.jpg new file mode 100644 index 0000000..c7429b9 Binary files /dev/null and b/server/src/samples/7f6b2e.jpg differ diff --git a/server/src/samples/7f7347.jpg b/server/src/samples/7f7347.jpg new file mode 100644 index 0000000..3bde96e Binary files /dev/null and b/server/src/samples/7f7347.jpg differ diff --git a/server/src/samples/7f827a.jpg b/server/src/samples/7f827a.jpg new file mode 100644 index 0000000..aec3e15 Binary files /dev/null and b/server/src/samples/7f827a.jpg differ diff --git a/server/src/samples/7f846a.jpg b/server/src/samples/7f846a.jpg new file mode 100644 index 0000000..8f66c58 Binary files /dev/null and b/server/src/samples/7f846a.jpg differ diff --git a/server/src/samples/803d29.jpg b/server/src/samples/803d29.jpg new file mode 100644 index 0000000..a31ca40 Binary files /dev/null and b/server/src/samples/803d29.jpg differ diff --git a/server/src/samples/803f2b.jpg b/server/src/samples/803f2b.jpg new file mode 100644 index 0000000..00cab38 Binary files /dev/null and b/server/src/samples/803f2b.jpg differ diff --git a/server/src/samples/80403b.jpg b/server/src/samples/80403b.jpg new file mode 100644 index 0000000..b6a7205 Binary files /dev/null and b/server/src/samples/80403b.jpg differ diff --git a/server/src/samples/804937.jpg b/server/src/samples/804937.jpg new file mode 100644 index 0000000..c7af355 Binary files /dev/null and b/server/src/samples/804937.jpg differ diff --git a/server/src/samples/804b3d.jpg b/server/src/samples/804b3d.jpg new file mode 100644 index 0000000..539e3f5 Binary files /dev/null and b/server/src/samples/804b3d.jpg differ diff --git a/server/src/samples/804e29.jpg b/server/src/samples/804e29.jpg new file mode 100644 index 0000000..a5f9f96 Binary files /dev/null and b/server/src/samples/804e29.jpg differ diff --git a/server/src/samples/804e2c.jpg b/server/src/samples/804e2c.jpg new file mode 100644 index 0000000..76fcf20 Binary files /dev/null and b/server/src/samples/804e2c.jpg differ diff --git a/server/src/samples/805130.jpg b/server/src/samples/805130.jpg new file mode 100644 index 0000000..3173a45 Binary files /dev/null and b/server/src/samples/805130.jpg differ diff --git a/server/src/samples/805335.jpg b/server/src/samples/805335.jpg new file mode 100644 index 0000000..96c69c5 Binary files /dev/null and b/server/src/samples/805335.jpg differ diff --git a/server/src/samples/805441.jpg b/server/src/samples/805441.jpg new file mode 100644 index 0000000..b1f39e9 Binary files /dev/null and b/server/src/samples/805441.jpg differ diff --git a/server/src/samples/805644.jpg b/server/src/samples/805644.jpg new file mode 100644 index 0000000..3fcf968 Binary files /dev/null and b/server/src/samples/805644.jpg differ diff --git a/server/src/samples/805d44.jpg b/server/src/samples/805d44.jpg new file mode 100644 index 0000000..8849194 Binary files /dev/null and b/server/src/samples/805d44.jpg differ diff --git a/server/src/samples/806051.jpg b/server/src/samples/806051.jpg new file mode 100644 index 0000000..fcf279e Binary files /dev/null and b/server/src/samples/806051.jpg differ diff --git a/server/src/samples/806c51.jpg b/server/src/samples/806c51.jpg new file mode 100644 index 0000000..6f04b10 Binary files /dev/null and b/server/src/samples/806c51.jpg differ diff --git a/server/src/samples/807a63.jpg b/server/src/samples/807a63.jpg new file mode 100644 index 0000000..8473a71 Binary files /dev/null and b/server/src/samples/807a63.jpg differ diff --git a/server/src/samples/807c53.jpg b/server/src/samples/807c53.jpg new file mode 100644 index 0000000..2128db6 Binary files /dev/null and b/server/src/samples/807c53.jpg differ diff --git a/server/src/samples/807e71.jpg b/server/src/samples/807e71.jpg new file mode 100644 index 0000000..6b1d0f2 Binary files /dev/null and b/server/src/samples/807e71.jpg differ diff --git a/server/src/samples/80855b.jpg b/server/src/samples/80855b.jpg new file mode 100644 index 0000000..b64eab8 Binary files /dev/null and b/server/src/samples/80855b.jpg differ diff --git a/server/src/samples/808c68.jpg b/server/src/samples/808c68.jpg new file mode 100644 index 0000000..9679171 Binary files /dev/null and b/server/src/samples/808c68.jpg differ diff --git a/server/src/samples/813a26.jpg b/server/src/samples/813a26.jpg new file mode 100644 index 0000000..643bd10 Binary files /dev/null and b/server/src/samples/813a26.jpg differ diff --git a/server/src/samples/813e31.jpg b/server/src/samples/813e31.jpg new file mode 100644 index 0000000..0213ae7 Binary files /dev/null and b/server/src/samples/813e31.jpg differ diff --git a/server/src/samples/813f31.jpg b/server/src/samples/813f31.jpg new file mode 100644 index 0000000..4829536 Binary files /dev/null and b/server/src/samples/813f31.jpg differ diff --git a/server/src/samples/814f30.jpg b/server/src/samples/814f30.jpg new file mode 100644 index 0000000..6d5c11e Binary files /dev/null and b/server/src/samples/814f30.jpg differ diff --git a/server/src/samples/815230.jpg b/server/src/samples/815230.jpg new file mode 100644 index 0000000..0b27723 Binary files /dev/null and b/server/src/samples/815230.jpg differ diff --git a/server/src/samples/815737.jpg b/server/src/samples/815737.jpg new file mode 100644 index 0000000..556e356 Binary files /dev/null and b/server/src/samples/815737.jpg differ diff --git a/server/src/samples/81583d.jpg b/server/src/samples/81583d.jpg new file mode 100644 index 0000000..cd41385 Binary files /dev/null and b/server/src/samples/81583d.jpg differ diff --git a/server/src/samples/815a32.jpg b/server/src/samples/815a32.jpg new file mode 100644 index 0000000..ca7bbd8 Binary files /dev/null and b/server/src/samples/815a32.jpg differ diff --git a/server/src/samples/815b3d.jpg b/server/src/samples/815b3d.jpg new file mode 100644 index 0000000..e96953a Binary files /dev/null and b/server/src/samples/815b3d.jpg differ diff --git a/server/src/samples/816b5b.jpg b/server/src/samples/816b5b.jpg new file mode 100644 index 0000000..f0722cf Binary files /dev/null and b/server/src/samples/816b5b.jpg differ diff --git a/server/src/samples/81734d.jpg b/server/src/samples/81734d.jpg new file mode 100644 index 0000000..ae3ad67 Binary files /dev/null and b/server/src/samples/81734d.jpg differ diff --git a/server/src/samples/817b5a.jpg b/server/src/samples/817b5a.jpg new file mode 100644 index 0000000..ab69d3b Binary files /dev/null and b/server/src/samples/817b5a.jpg differ diff --git a/server/src/samples/81826e.jpg b/server/src/samples/81826e.jpg new file mode 100644 index 0000000..580516e Binary files /dev/null and b/server/src/samples/81826e.jpg differ diff --git a/server/src/samples/818370.jpg b/server/src/samples/818370.jpg new file mode 100644 index 0000000..5433821 Binary files /dev/null and b/server/src/samples/818370.jpg differ diff --git a/server/src/samples/824432.jpg b/server/src/samples/824432.jpg new file mode 100644 index 0000000..96fa126 Binary files /dev/null and b/server/src/samples/824432.jpg differ diff --git a/server/src/samples/824e2c.jpg b/server/src/samples/824e2c.jpg new file mode 100644 index 0000000..67a3eb7 Binary files /dev/null and b/server/src/samples/824e2c.jpg differ diff --git a/server/src/samples/825037.jpg b/server/src/samples/825037.jpg new file mode 100644 index 0000000..8b0f05b Binary files /dev/null and b/server/src/samples/825037.jpg differ diff --git a/server/src/samples/82552e.jpg b/server/src/samples/82552e.jpg new file mode 100644 index 0000000..65f4034 Binary files /dev/null and b/server/src/samples/82552e.jpg differ diff --git a/server/src/samples/82562e.jpg b/server/src/samples/82562e.jpg new file mode 100644 index 0000000..b4a1593 Binary files /dev/null and b/server/src/samples/82562e.jpg differ diff --git a/server/src/samples/825e50.jpg b/server/src/samples/825e50.jpg new file mode 100644 index 0000000..0023b45 Binary files /dev/null and b/server/src/samples/825e50.jpg differ diff --git a/server/src/samples/826130.jpg b/server/src/samples/826130.jpg new file mode 100644 index 0000000..a981a95 Binary files /dev/null and b/server/src/samples/826130.jpg differ diff --git a/server/src/samples/826243.jpg b/server/src/samples/826243.jpg new file mode 100644 index 0000000..97721de Binary files /dev/null and b/server/src/samples/826243.jpg differ diff --git a/server/src/samples/826321.jpg b/server/src/samples/826321.jpg new file mode 100644 index 0000000..f7654e3 Binary files /dev/null and b/server/src/samples/826321.jpg differ diff --git a/server/src/samples/826d37.jpg b/server/src/samples/826d37.jpg new file mode 100644 index 0000000..ed40855 Binary files /dev/null and b/server/src/samples/826d37.jpg differ diff --git a/server/src/samples/827443.jpg b/server/src/samples/827443.jpg new file mode 100644 index 0000000..8874c4b Binary files /dev/null and b/server/src/samples/827443.jpg differ diff --git a/server/src/samples/82846f.jpg b/server/src/samples/82846f.jpg new file mode 100644 index 0000000..8113d28 Binary files /dev/null and b/server/src/samples/82846f.jpg differ diff --git a/server/src/samples/828b5e.jpg b/server/src/samples/828b5e.jpg new file mode 100644 index 0000000..1250656 Binary files /dev/null and b/server/src/samples/828b5e.jpg differ diff --git a/server/src/samples/829399.jpg b/server/src/samples/829399.jpg new file mode 100644 index 0000000..6bc28d3 Binary files /dev/null and b/server/src/samples/829399.jpg differ diff --git a/server/src/samples/833128.jpg b/server/src/samples/833128.jpg new file mode 100644 index 0000000..b0df4c7 Binary files /dev/null and b/server/src/samples/833128.jpg differ diff --git a/server/src/samples/834b31.jpg b/server/src/samples/834b31.jpg new file mode 100644 index 0000000..da2b8a0 Binary files /dev/null and b/server/src/samples/834b31.jpg differ diff --git a/server/src/samples/835231.jpg b/server/src/samples/835231.jpg new file mode 100644 index 0000000..9cf9afd Binary files /dev/null and b/server/src/samples/835231.jpg differ diff --git a/server/src/samples/835341.jpg b/server/src/samples/835341.jpg new file mode 100644 index 0000000..29325fd Binary files /dev/null and b/server/src/samples/835341.jpg differ diff --git a/server/src/samples/835747.jpg b/server/src/samples/835747.jpg new file mode 100644 index 0000000..f664f85 Binary files /dev/null and b/server/src/samples/835747.jpg differ diff --git a/server/src/samples/835949.jpg b/server/src/samples/835949.jpg new file mode 100644 index 0000000..554499b Binary files /dev/null and b/server/src/samples/835949.jpg differ diff --git a/server/src/samples/835f56.jpg b/server/src/samples/835f56.jpg new file mode 100644 index 0000000..d0aa8d8 Binary files /dev/null and b/server/src/samples/835f56.jpg differ diff --git a/server/src/samples/836559.jpg b/server/src/samples/836559.jpg new file mode 100644 index 0000000..00b0189 Binary files /dev/null and b/server/src/samples/836559.jpg differ diff --git a/server/src/samples/836934.jpg b/server/src/samples/836934.jpg new file mode 100644 index 0000000..999c83e Binary files /dev/null and b/server/src/samples/836934.jpg differ diff --git a/server/src/samples/836e42.jpg b/server/src/samples/836e42.jpg new file mode 100644 index 0000000..e627dcf Binary files /dev/null and b/server/src/samples/836e42.jpg differ diff --git a/server/src/samples/83856c.jpg b/server/src/samples/83856c.jpg new file mode 100644 index 0000000..c5328e8 Binary files /dev/null and b/server/src/samples/83856c.jpg differ diff --git a/server/src/samples/838b4d.jpg b/server/src/samples/838b4d.jpg new file mode 100644 index 0000000..0ae9923 Binary files /dev/null and b/server/src/samples/838b4d.jpg differ diff --git a/server/src/samples/84492a.jpg b/server/src/samples/84492a.jpg new file mode 100644 index 0000000..333e590 Binary files /dev/null and b/server/src/samples/84492a.jpg differ diff --git a/server/src/samples/844d2b.jpg b/server/src/samples/844d2b.jpg new file mode 100644 index 0000000..e047881 Binary files /dev/null and b/server/src/samples/844d2b.jpg differ diff --git a/server/src/samples/844f39.jpg b/server/src/samples/844f39.jpg new file mode 100644 index 0000000..d8edc93 Binary files /dev/null and b/server/src/samples/844f39.jpg differ diff --git a/server/src/samples/845028.jpg b/server/src/samples/845028.jpg new file mode 100644 index 0000000..1b942ea Binary files /dev/null and b/server/src/samples/845028.jpg differ diff --git a/server/src/samples/845231.jpg b/server/src/samples/845231.jpg new file mode 100644 index 0000000..9589951 Binary files /dev/null and b/server/src/samples/845231.jpg differ diff --git a/server/src/samples/845439.jpg b/server/src/samples/845439.jpg new file mode 100644 index 0000000..d4a8882 Binary files /dev/null and b/server/src/samples/845439.jpg differ diff --git a/server/src/samples/84644f.jpg b/server/src/samples/84644f.jpg new file mode 100644 index 0000000..ca9cf98 Binary files /dev/null and b/server/src/samples/84644f.jpg differ diff --git a/server/src/samples/84655a.jpg b/server/src/samples/84655a.jpg new file mode 100644 index 0000000..8653d08 Binary files /dev/null and b/server/src/samples/84655a.jpg differ diff --git a/server/src/samples/847b47.jpg b/server/src/samples/847b47.jpg new file mode 100644 index 0000000..9a8298c Binary files /dev/null and b/server/src/samples/847b47.jpg differ diff --git a/server/src/samples/847e68.jpg b/server/src/samples/847e68.jpg new file mode 100644 index 0000000..d7582ef Binary files /dev/null and b/server/src/samples/847e68.jpg differ diff --git a/server/src/samples/84a162.jpg b/server/src/samples/84a162.jpg new file mode 100644 index 0000000..726c65a Binary files /dev/null and b/server/src/samples/84a162.jpg differ diff --git a/server/src/samples/853022.jpg b/server/src/samples/853022.jpg new file mode 100644 index 0000000..19771fe Binary files /dev/null and b/server/src/samples/853022.jpg differ diff --git a/server/src/samples/85481e.jpg b/server/src/samples/85481e.jpg new file mode 100644 index 0000000..d2795a4 Binary files /dev/null and b/server/src/samples/85481e.jpg differ diff --git a/server/src/samples/854854.jpg b/server/src/samples/854854.jpg new file mode 100644 index 0000000..de7fad3 Binary files /dev/null and b/server/src/samples/854854.jpg differ diff --git a/server/src/samples/854c58.jpg b/server/src/samples/854c58.jpg new file mode 100644 index 0000000..dd8a78a Binary files /dev/null and b/server/src/samples/854c58.jpg differ diff --git a/server/src/samples/855437.jpg b/server/src/samples/855437.jpg new file mode 100644 index 0000000..65aef69 Binary files /dev/null and b/server/src/samples/855437.jpg differ diff --git a/server/src/samples/855535.jpg b/server/src/samples/855535.jpg new file mode 100644 index 0000000..67528d3 Binary files /dev/null and b/server/src/samples/855535.jpg differ diff --git a/server/src/samples/85553e.jpg b/server/src/samples/85553e.jpg new file mode 100644 index 0000000..e2f0801 Binary files /dev/null and b/server/src/samples/85553e.jpg differ diff --git a/server/src/samples/855b1f.jpg b/server/src/samples/855b1f.jpg new file mode 100644 index 0000000..5d89d23 Binary files /dev/null and b/server/src/samples/855b1f.jpg differ diff --git a/server/src/samples/855e2e.jpg b/server/src/samples/855e2e.jpg new file mode 100644 index 0000000..0dfa621 Binary files /dev/null and b/server/src/samples/855e2e.jpg differ diff --git a/server/src/samples/855e51.jpg b/server/src/samples/855e51.jpg new file mode 100644 index 0000000..cfdef05 Binary files /dev/null and b/server/src/samples/855e51.jpg differ diff --git a/server/src/samples/856128.jpg b/server/src/samples/856128.jpg new file mode 100644 index 0000000..66134cc Binary files /dev/null and b/server/src/samples/856128.jpg differ diff --git a/server/src/samples/856836.jpg b/server/src/samples/856836.jpg new file mode 100644 index 0000000..e459520 Binary files /dev/null and b/server/src/samples/856836.jpg differ diff --git a/server/src/samples/856b35.jpg b/server/src/samples/856b35.jpg new file mode 100644 index 0000000..2dc4b91 Binary files /dev/null and b/server/src/samples/856b35.jpg differ diff --git a/server/src/samples/857a66.jpg b/server/src/samples/857a66.jpg new file mode 100644 index 0000000..a3c2c53 Binary files /dev/null and b/server/src/samples/857a66.jpg differ diff --git a/server/src/samples/85887c.jpg b/server/src/samples/85887c.jpg new file mode 100644 index 0000000..17421f6 Binary files /dev/null and b/server/src/samples/85887c.jpg differ diff --git a/server/src/samples/859156.jpg b/server/src/samples/859156.jpg new file mode 100644 index 0000000..738bf67 Binary files /dev/null and b/server/src/samples/859156.jpg differ diff --git a/server/src/samples/85b0ad.jpg b/server/src/samples/85b0ad.jpg new file mode 100644 index 0000000..a453d14 Binary files /dev/null and b/server/src/samples/85b0ad.jpg differ diff --git a/server/src/samples/863d37.jpg b/server/src/samples/863d37.jpg new file mode 100644 index 0000000..61eb462 Binary files /dev/null and b/server/src/samples/863d37.jpg differ diff --git a/server/src/samples/864536.jpg b/server/src/samples/864536.jpg new file mode 100644 index 0000000..9e6494a Binary files /dev/null and b/server/src/samples/864536.jpg differ diff --git a/server/src/samples/864a2b.jpg b/server/src/samples/864a2b.jpg new file mode 100644 index 0000000..c0bde6a Binary files /dev/null and b/server/src/samples/864a2b.jpg differ diff --git a/server/src/samples/864c25.jpg b/server/src/samples/864c25.jpg new file mode 100644 index 0000000..9d69bad Binary files /dev/null and b/server/src/samples/864c25.jpg differ diff --git a/server/src/samples/86532e.jpg b/server/src/samples/86532e.jpg new file mode 100644 index 0000000..bd36220 Binary files /dev/null and b/server/src/samples/86532e.jpg differ diff --git a/server/src/samples/865a33.jpg b/server/src/samples/865a33.jpg new file mode 100644 index 0000000..2be426c Binary files /dev/null and b/server/src/samples/865a33.jpg differ diff --git a/server/src/samples/866345.jpg b/server/src/samples/866345.jpg new file mode 100644 index 0000000..dd0f87c Binary files /dev/null and b/server/src/samples/866345.jpg differ diff --git a/server/src/samples/866c3b.jpg b/server/src/samples/866c3b.jpg new file mode 100644 index 0000000..910586e Binary files /dev/null and b/server/src/samples/866c3b.jpg differ diff --git a/server/src/samples/866d35.jpg b/server/src/samples/866d35.jpg new file mode 100644 index 0000000..4cc72ee Binary files /dev/null and b/server/src/samples/866d35.jpg differ diff --git a/server/src/samples/866e4a.jpg b/server/src/samples/866e4a.jpg new file mode 100644 index 0000000..bb6f388 Binary files /dev/null and b/server/src/samples/866e4a.jpg differ diff --git a/server/src/samples/867348.jpg b/server/src/samples/867348.jpg new file mode 100644 index 0000000..41b10e8 Binary files /dev/null and b/server/src/samples/867348.jpg differ diff --git a/server/src/samples/868159.jpg b/server/src/samples/868159.jpg new file mode 100644 index 0000000..b5b0ba2 Binary files /dev/null and b/server/src/samples/868159.jpg differ diff --git a/server/src/samples/868550.jpg b/server/src/samples/868550.jpg new file mode 100644 index 0000000..7d4b55e Binary files /dev/null and b/server/src/samples/868550.jpg differ diff --git a/server/src/samples/868c61.jpg b/server/src/samples/868c61.jpg new file mode 100644 index 0000000..8f193f2 Binary files /dev/null and b/server/src/samples/868c61.jpg differ diff --git a/server/src/samples/869e61.jpg b/server/src/samples/869e61.jpg new file mode 100644 index 0000000..46f5a82 Binary files /dev/null and b/server/src/samples/869e61.jpg differ diff --git a/server/src/samples/873e4f.jpg b/server/src/samples/873e4f.jpg new file mode 100644 index 0000000..293374d Binary files /dev/null and b/server/src/samples/873e4f.jpg differ diff --git a/server/src/samples/874724.jpg b/server/src/samples/874724.jpg new file mode 100644 index 0000000..36cc47c Binary files /dev/null and b/server/src/samples/874724.jpg differ diff --git a/server/src/samples/874e26.jpg b/server/src/samples/874e26.jpg new file mode 100644 index 0000000..9125d31 Binary files /dev/null and b/server/src/samples/874e26.jpg differ diff --git a/server/src/samples/874e39.jpg b/server/src/samples/874e39.jpg new file mode 100644 index 0000000..0d23847 Binary files /dev/null and b/server/src/samples/874e39.jpg differ diff --git a/server/src/samples/87522e.jpg b/server/src/samples/87522e.jpg new file mode 100644 index 0000000..7e3f1ca Binary files /dev/null and b/server/src/samples/87522e.jpg differ diff --git a/server/src/samples/87523c.jpg b/server/src/samples/87523c.jpg new file mode 100644 index 0000000..45286f1 Binary files /dev/null and b/server/src/samples/87523c.jpg differ diff --git a/server/src/samples/875844.jpg b/server/src/samples/875844.jpg new file mode 100644 index 0000000..6ce48cb Binary files /dev/null and b/server/src/samples/875844.jpg differ diff --git a/server/src/samples/875b30.jpg b/server/src/samples/875b30.jpg new file mode 100644 index 0000000..8c64539 Binary files /dev/null and b/server/src/samples/875b30.jpg differ diff --git a/server/src/samples/875b3f.jpg b/server/src/samples/875b3f.jpg new file mode 100644 index 0000000..5235369 Binary files /dev/null and b/server/src/samples/875b3f.jpg differ diff --git a/server/src/samples/875c4a.jpg b/server/src/samples/875c4a.jpg new file mode 100644 index 0000000..091ec66 Binary files /dev/null and b/server/src/samples/875c4a.jpg differ diff --git a/server/src/samples/875d34.jpg b/server/src/samples/875d34.jpg new file mode 100644 index 0000000..3bead09 Binary files /dev/null and b/server/src/samples/875d34.jpg differ diff --git a/server/src/samples/875d41.jpg b/server/src/samples/875d41.jpg new file mode 100644 index 0000000..b04d031 Binary files /dev/null and b/server/src/samples/875d41.jpg differ diff --git a/server/src/samples/876330.jpg b/server/src/samples/876330.jpg new file mode 100644 index 0000000..7a961dc Binary files /dev/null and b/server/src/samples/876330.jpg differ diff --git a/server/src/samples/877163.jpg b/server/src/samples/877163.jpg new file mode 100644 index 0000000..650c109 Binary files /dev/null and b/server/src/samples/877163.jpg differ diff --git a/server/src/samples/87744e.jpg b/server/src/samples/87744e.jpg new file mode 100644 index 0000000..e64d467 Binary files /dev/null and b/server/src/samples/87744e.jpg differ diff --git a/server/src/samples/87744f.jpg b/server/src/samples/87744f.jpg new file mode 100644 index 0000000..1a05f98 Binary files /dev/null and b/server/src/samples/87744f.jpg differ diff --git a/server/src/samples/877a54.jpg b/server/src/samples/877a54.jpg new file mode 100644 index 0000000..4830756 Binary files /dev/null and b/server/src/samples/877a54.jpg differ diff --git a/server/src/samples/877d72.jpg b/server/src/samples/877d72.jpg new file mode 100644 index 0000000..79a0cda Binary files /dev/null and b/server/src/samples/877d72.jpg differ diff --git a/server/src/samples/877f6c.jpg b/server/src/samples/877f6c.jpg new file mode 100644 index 0000000..819e3ea Binary files /dev/null and b/server/src/samples/877f6c.jpg differ diff --git a/server/src/samples/87b1ad.jpg b/server/src/samples/87b1ad.jpg new file mode 100644 index 0000000..6a61ec8 Binary files /dev/null and b/server/src/samples/87b1ad.jpg differ diff --git a/server/src/samples/884834.jpg b/server/src/samples/884834.jpg new file mode 100644 index 0000000..aac656a Binary files /dev/null and b/server/src/samples/884834.jpg differ diff --git a/server/src/samples/884e2c.jpg b/server/src/samples/884e2c.jpg new file mode 100644 index 0000000..e7bb7c4 Binary files /dev/null and b/server/src/samples/884e2c.jpg differ diff --git a/server/src/samples/885837.jpg b/server/src/samples/885837.jpg new file mode 100644 index 0000000..0056c2a Binary files /dev/null and b/server/src/samples/885837.jpg differ diff --git a/server/src/samples/885c39.jpg b/server/src/samples/885c39.jpg new file mode 100644 index 0000000..87825a4 Binary files /dev/null and b/server/src/samples/885c39.jpg differ diff --git a/server/src/samples/885f41.jpg b/server/src/samples/885f41.jpg new file mode 100644 index 0000000..1f9acc8 Binary files /dev/null and b/server/src/samples/885f41.jpg differ diff --git a/server/src/samples/886055.jpg b/server/src/samples/886055.jpg new file mode 100644 index 0000000..6df45ae Binary files /dev/null and b/server/src/samples/886055.jpg differ diff --git a/server/src/samples/88685d.jpg b/server/src/samples/88685d.jpg new file mode 100644 index 0000000..7ef1b1b Binary files /dev/null and b/server/src/samples/88685d.jpg differ diff --git a/server/src/samples/88692f.jpg b/server/src/samples/88692f.jpg new file mode 100644 index 0000000..c80f722 Binary files /dev/null and b/server/src/samples/88692f.jpg differ diff --git a/server/src/samples/886a49.jpg b/server/src/samples/886a49.jpg new file mode 100644 index 0000000..3c46126 Binary files /dev/null and b/server/src/samples/886a49.jpg differ diff --git a/server/src/samples/886b31.jpg b/server/src/samples/886b31.jpg new file mode 100644 index 0000000..54cf262 Binary files /dev/null and b/server/src/samples/886b31.jpg differ diff --git a/server/src/samples/886e68.jpg b/server/src/samples/886e68.jpg new file mode 100644 index 0000000..768be66 Binary files /dev/null and b/server/src/samples/886e68.jpg differ diff --git a/server/src/samples/886f30.jpg b/server/src/samples/886f30.jpg new file mode 100644 index 0000000..75b0fe5 Binary files /dev/null and b/server/src/samples/886f30.jpg differ diff --git a/server/src/samples/88775d.jpg b/server/src/samples/88775d.jpg new file mode 100644 index 0000000..db476c8 Binary files /dev/null and b/server/src/samples/88775d.jpg differ diff --git a/server/src/samples/887a4a.jpg b/server/src/samples/887a4a.jpg new file mode 100644 index 0000000..701cba8 Binary files /dev/null and b/server/src/samples/887a4a.jpg differ diff --git a/server/src/samples/887e72.jpg b/server/src/samples/887e72.jpg new file mode 100644 index 0000000..4c4bb35 Binary files /dev/null and b/server/src/samples/887e72.jpg differ diff --git a/server/src/samples/888168.jpg b/server/src/samples/888168.jpg new file mode 100644 index 0000000..76728df Binary files /dev/null and b/server/src/samples/888168.jpg differ diff --git a/server/src/samples/88835b.jpg b/server/src/samples/88835b.jpg new file mode 100644 index 0000000..360442d Binary files /dev/null and b/server/src/samples/88835b.jpg differ diff --git a/server/src/samples/888492.jpg b/server/src/samples/888492.jpg new file mode 100644 index 0000000..2bc2780 Binary files /dev/null and b/server/src/samples/888492.jpg differ diff --git a/server/src/samples/8895a0.jpg b/server/src/samples/8895a0.jpg new file mode 100644 index 0000000..ba68274 Binary files /dev/null and b/server/src/samples/8895a0.jpg differ diff --git a/server/src/samples/894b36.jpg b/server/src/samples/894b36.jpg new file mode 100644 index 0000000..475c1c2 Binary files /dev/null and b/server/src/samples/894b36.jpg differ diff --git a/server/src/samples/895c34.jpg b/server/src/samples/895c34.jpg new file mode 100644 index 0000000..0d8a4b1 Binary files /dev/null and b/server/src/samples/895c34.jpg differ diff --git a/server/src/samples/895e4a.jpg b/server/src/samples/895e4a.jpg new file mode 100644 index 0000000..32fc93f Binary files /dev/null and b/server/src/samples/895e4a.jpg differ diff --git a/server/src/samples/896156.jpg b/server/src/samples/896156.jpg new file mode 100644 index 0000000..66ac4bd Binary files /dev/null and b/server/src/samples/896156.jpg differ diff --git a/server/src/samples/896d46.jpg b/server/src/samples/896d46.jpg new file mode 100644 index 0000000..9500973 Binary files /dev/null and b/server/src/samples/896d46.jpg differ diff --git a/server/src/samples/897232.jpg b/server/src/samples/897232.jpg new file mode 100644 index 0000000..decec82 Binary files /dev/null and b/server/src/samples/897232.jpg differ diff --git a/server/src/samples/89726f.jpg b/server/src/samples/89726f.jpg new file mode 100644 index 0000000..678e616 Binary files /dev/null and b/server/src/samples/89726f.jpg differ diff --git a/server/src/samples/89785b.jpg b/server/src/samples/89785b.jpg new file mode 100644 index 0000000..332e04d Binary files /dev/null and b/server/src/samples/89785b.jpg differ diff --git a/server/src/samples/8a4a32.jpg b/server/src/samples/8a4a32.jpg new file mode 100644 index 0000000..1e2bb15 Binary files /dev/null and b/server/src/samples/8a4a32.jpg differ diff --git a/server/src/samples/8a5933.jpg b/server/src/samples/8a5933.jpg new file mode 100644 index 0000000..5be8d9c Binary files /dev/null and b/server/src/samples/8a5933.jpg differ diff --git a/server/src/samples/8a5a42.jpg b/server/src/samples/8a5a42.jpg new file mode 100644 index 0000000..4195f56 Binary files /dev/null and b/server/src/samples/8a5a42.jpg differ diff --git a/server/src/samples/8a5f30.jpg b/server/src/samples/8a5f30.jpg new file mode 100644 index 0000000..4a4539b Binary files /dev/null and b/server/src/samples/8a5f30.jpg differ diff --git a/server/src/samples/8a633b.jpg b/server/src/samples/8a633b.jpg new file mode 100644 index 0000000..d5fbec1 Binary files /dev/null and b/server/src/samples/8a633b.jpg differ diff --git a/server/src/samples/8a6727.jpg b/server/src/samples/8a6727.jpg new file mode 100644 index 0000000..d79105b Binary files /dev/null and b/server/src/samples/8a6727.jpg differ diff --git a/server/src/samples/8a6a2e.jpg b/server/src/samples/8a6a2e.jpg new file mode 100644 index 0000000..6761c7e Binary files /dev/null and b/server/src/samples/8a6a2e.jpg differ diff --git a/server/src/samples/8a7e46.jpg b/server/src/samples/8a7e46.jpg new file mode 100644 index 0000000..4a2ad6d Binary files /dev/null and b/server/src/samples/8a7e46.jpg differ diff --git a/server/src/samples/8a855b.jpg b/server/src/samples/8a855b.jpg new file mode 100644 index 0000000..e26a330 Binary files /dev/null and b/server/src/samples/8a855b.jpg differ diff --git a/server/src/samples/8a8e65.jpg b/server/src/samples/8a8e65.jpg new file mode 100644 index 0000000..c64dba1 Binary files /dev/null and b/server/src/samples/8a8e65.jpg differ diff --git a/server/src/samples/8a9355.jpg b/server/src/samples/8a9355.jpg new file mode 100644 index 0000000..37749b3 Binary files /dev/null and b/server/src/samples/8a9355.jpg differ diff --git a/server/src/samples/8b4d30.jpg b/server/src/samples/8b4d30.jpg new file mode 100644 index 0000000..09cab73 Binary files /dev/null and b/server/src/samples/8b4d30.jpg differ diff --git a/server/src/samples/8b5745.jpg b/server/src/samples/8b5745.jpg new file mode 100644 index 0000000..55144fd Binary files /dev/null and b/server/src/samples/8b5745.jpg differ diff --git a/server/src/samples/8b5a49.jpg b/server/src/samples/8b5a49.jpg new file mode 100644 index 0000000..574e6ea Binary files /dev/null and b/server/src/samples/8b5a49.jpg differ diff --git a/server/src/samples/8b604f.jpg b/server/src/samples/8b604f.jpg new file mode 100644 index 0000000..92ec51a Binary files /dev/null and b/server/src/samples/8b604f.jpg differ diff --git a/server/src/samples/8b6c63.jpg b/server/src/samples/8b6c63.jpg new file mode 100644 index 0000000..20f1cf6 Binary files /dev/null and b/server/src/samples/8b6c63.jpg differ diff --git a/server/src/samples/8b773d.jpg b/server/src/samples/8b773d.jpg new file mode 100644 index 0000000..9f2c957 Binary files /dev/null and b/server/src/samples/8b773d.jpg differ diff --git a/server/src/samples/8b7d8e.jpg b/server/src/samples/8b7d8e.jpg new file mode 100644 index 0000000..424db2e Binary files /dev/null and b/server/src/samples/8b7d8e.jpg differ diff --git a/server/src/samples/8ba784.jpg b/server/src/samples/8ba784.jpg new file mode 100644 index 0000000..bc6f131 Binary files /dev/null and b/server/src/samples/8ba784.jpg differ diff --git a/server/src/samples/8c4d36.jpg b/server/src/samples/8c4d36.jpg new file mode 100644 index 0000000..9a66af0 Binary files /dev/null and b/server/src/samples/8c4d36.jpg differ diff --git a/server/src/samples/8c552d.jpg b/server/src/samples/8c552d.jpg new file mode 100644 index 0000000..7c94855 Binary files /dev/null and b/server/src/samples/8c552d.jpg differ diff --git a/server/src/samples/8c5d44.jpg b/server/src/samples/8c5d44.jpg new file mode 100644 index 0000000..48eccbd Binary files /dev/null and b/server/src/samples/8c5d44.jpg differ diff --git a/server/src/samples/8c6249.jpg b/server/src/samples/8c6249.jpg new file mode 100644 index 0000000..fb455fa Binary files /dev/null and b/server/src/samples/8c6249.jpg differ diff --git a/server/src/samples/8c6853.jpg b/server/src/samples/8c6853.jpg new file mode 100644 index 0000000..6fc6953 Binary files /dev/null and b/server/src/samples/8c6853.jpg differ diff --git a/server/src/samples/8c6b34.jpg b/server/src/samples/8c6b34.jpg new file mode 100644 index 0000000..6f0d3a7 Binary files /dev/null and b/server/src/samples/8c6b34.jpg differ diff --git a/server/src/samples/8c6c26.jpg b/server/src/samples/8c6c26.jpg new file mode 100644 index 0000000..4efdeb4 Binary files /dev/null and b/server/src/samples/8c6c26.jpg differ diff --git a/server/src/samples/8c6e55.jpg b/server/src/samples/8c6e55.jpg new file mode 100644 index 0000000..9031931 Binary files /dev/null and b/server/src/samples/8c6e55.jpg differ diff --git a/server/src/samples/8c6f36.jpg b/server/src/samples/8c6f36.jpg new file mode 100644 index 0000000..2ea84ab Binary files /dev/null and b/server/src/samples/8c6f36.jpg differ diff --git a/server/src/samples/8c7754.jpg b/server/src/samples/8c7754.jpg new file mode 100644 index 0000000..b089fbc Binary files /dev/null and b/server/src/samples/8c7754.jpg differ diff --git a/server/src/samples/8c7d4d.jpg b/server/src/samples/8c7d4d.jpg new file mode 100644 index 0000000..3b475b0 Binary files /dev/null and b/server/src/samples/8c7d4d.jpg differ diff --git a/server/src/samples/8c833b.jpg b/server/src/samples/8c833b.jpg new file mode 100644 index 0000000..09d6a23 Binary files /dev/null and b/server/src/samples/8c833b.jpg differ diff --git a/server/src/samples/8c846e.jpg b/server/src/samples/8c846e.jpg new file mode 100644 index 0000000..4101488 Binary files /dev/null and b/server/src/samples/8c846e.jpg differ diff --git a/server/src/samples/8c8568.jpg b/server/src/samples/8c8568.jpg new file mode 100644 index 0000000..425ba69 Binary files /dev/null and b/server/src/samples/8c8568.jpg differ diff --git a/server/src/samples/8c8762.jpg b/server/src/samples/8c8762.jpg new file mode 100644 index 0000000..1c71e94 Binary files /dev/null and b/server/src/samples/8c8762.jpg differ diff --git a/server/src/samples/8c935c.jpg b/server/src/samples/8c935c.jpg new file mode 100644 index 0000000..bb463f9 Binary files /dev/null and b/server/src/samples/8c935c.jpg differ diff --git a/server/src/samples/8c9a6e.jpg b/server/src/samples/8c9a6e.jpg new file mode 100644 index 0000000..7eddcd5 Binary files /dev/null and b/server/src/samples/8c9a6e.jpg differ diff --git a/server/src/samples/8d4328.jpg b/server/src/samples/8d4328.jpg new file mode 100644 index 0000000..8965baf Binary files /dev/null and b/server/src/samples/8d4328.jpg differ diff --git a/server/src/samples/8d532b.jpg b/server/src/samples/8d532b.jpg new file mode 100644 index 0000000..cf5c7cb Binary files /dev/null and b/server/src/samples/8d532b.jpg differ diff --git a/server/src/samples/8d5634.jpg b/server/src/samples/8d5634.jpg new file mode 100644 index 0000000..c8bc2f3 Binary files /dev/null and b/server/src/samples/8d5634.jpg differ diff --git a/server/src/samples/8d5734.jpg b/server/src/samples/8d5734.jpg new file mode 100644 index 0000000..0808f9e Binary files /dev/null and b/server/src/samples/8d5734.jpg differ diff --git a/server/src/samples/8d5937.jpg b/server/src/samples/8d5937.jpg new file mode 100644 index 0000000..7d6ee65 Binary files /dev/null and b/server/src/samples/8d5937.jpg differ diff --git a/server/src/samples/8d6349.jpg b/server/src/samples/8d6349.jpg new file mode 100644 index 0000000..b8a4073 Binary files /dev/null and b/server/src/samples/8d6349.jpg differ diff --git a/server/src/samples/8d643c.jpg b/server/src/samples/8d643c.jpg new file mode 100644 index 0000000..fdd6f53 Binary files /dev/null and b/server/src/samples/8d643c.jpg differ diff --git a/server/src/samples/8d6535.jpg b/server/src/samples/8d6535.jpg new file mode 100644 index 0000000..5ce03fa Binary files /dev/null and b/server/src/samples/8d6535.jpg differ diff --git a/server/src/samples/8d692e.jpg b/server/src/samples/8d692e.jpg new file mode 100644 index 0000000..aed293d Binary files /dev/null and b/server/src/samples/8d692e.jpg differ diff --git a/server/src/samples/8d7262.jpg b/server/src/samples/8d7262.jpg new file mode 100644 index 0000000..303f05f Binary files /dev/null and b/server/src/samples/8d7262.jpg differ diff --git a/server/src/samples/8d7539.jpg b/server/src/samples/8d7539.jpg new file mode 100644 index 0000000..5332620 Binary files /dev/null and b/server/src/samples/8d7539.jpg differ diff --git a/server/src/samples/8d7760.jpg b/server/src/samples/8d7760.jpg new file mode 100644 index 0000000..e43164e Binary files /dev/null and b/server/src/samples/8d7760.jpg differ diff --git a/server/src/samples/8d895a.jpg b/server/src/samples/8d895a.jpg new file mode 100644 index 0000000..1572681 Binary files /dev/null and b/server/src/samples/8d895a.jpg differ diff --git a/server/src/samples/8d96a8.jpg b/server/src/samples/8d96a8.jpg new file mode 100644 index 0000000..f6e0c13 Binary files /dev/null and b/server/src/samples/8d96a8.jpg differ diff --git a/server/src/samples/8d978c.jpg b/server/src/samples/8d978c.jpg new file mode 100644 index 0000000..316b9a0 Binary files /dev/null and b/server/src/samples/8d978c.jpg differ diff --git a/server/src/samples/8d9f7f.jpg b/server/src/samples/8d9f7f.jpg new file mode 100644 index 0000000..d1b96c9 Binary files /dev/null and b/server/src/samples/8d9f7f.jpg differ diff --git a/server/src/samples/8da96c.jpg b/server/src/samples/8da96c.jpg new file mode 100644 index 0000000..d36f7e1 Binary files /dev/null and b/server/src/samples/8da96c.jpg differ diff --git a/server/src/samples/8db29b.jpg b/server/src/samples/8db29b.jpg new file mode 100644 index 0000000..a97d249 Binary files /dev/null and b/server/src/samples/8db29b.jpg differ diff --git a/server/src/samples/8e4326.jpg b/server/src/samples/8e4326.jpg new file mode 100644 index 0000000..f97490f Binary files /dev/null and b/server/src/samples/8e4326.jpg differ diff --git a/server/src/samples/8e4640.jpg b/server/src/samples/8e4640.jpg new file mode 100644 index 0000000..2e4fd4e Binary files /dev/null and b/server/src/samples/8e4640.jpg differ diff --git a/server/src/samples/8e4e2f.jpg b/server/src/samples/8e4e2f.jpg new file mode 100644 index 0000000..663ef2f Binary files /dev/null and b/server/src/samples/8e4e2f.jpg differ diff --git a/server/src/samples/8e5635.jpg b/server/src/samples/8e5635.jpg new file mode 100644 index 0000000..8e3bfd7 Binary files /dev/null and b/server/src/samples/8e5635.jpg differ diff --git a/server/src/samples/8e714f.jpg b/server/src/samples/8e714f.jpg new file mode 100644 index 0000000..1a954ef Binary files /dev/null and b/server/src/samples/8e714f.jpg differ diff --git a/server/src/samples/8e783a.jpg b/server/src/samples/8e783a.jpg new file mode 100644 index 0000000..0e24996 Binary files /dev/null and b/server/src/samples/8e783a.jpg differ diff --git a/server/src/samples/8e7e54.jpg b/server/src/samples/8e7e54.jpg new file mode 100644 index 0000000..3ffcd85 Binary files /dev/null and b/server/src/samples/8e7e54.jpg differ diff --git a/server/src/samples/8e866f.jpg b/server/src/samples/8e866f.jpg new file mode 100644 index 0000000..d285554 Binary files /dev/null and b/server/src/samples/8e866f.jpg differ diff --git a/server/src/samples/8e8955.jpg b/server/src/samples/8e8955.jpg new file mode 100644 index 0000000..13ede27 Binary files /dev/null and b/server/src/samples/8e8955.jpg differ diff --git a/server/src/samples/8e8b57.jpg b/server/src/samples/8e8b57.jpg new file mode 100644 index 0000000..5438567 Binary files /dev/null and b/server/src/samples/8e8b57.jpg differ diff --git a/server/src/samples/8e8e4c.jpg b/server/src/samples/8e8e4c.jpg new file mode 100644 index 0000000..f6897a0 Binary files /dev/null and b/server/src/samples/8e8e4c.jpg differ diff --git a/server/src/samples/8f4326.jpg b/server/src/samples/8f4326.jpg new file mode 100644 index 0000000..f6463aa Binary files /dev/null and b/server/src/samples/8f4326.jpg differ diff --git a/server/src/samples/8f4f2e.jpg b/server/src/samples/8f4f2e.jpg new file mode 100644 index 0000000..a881ab0 Binary files /dev/null and b/server/src/samples/8f4f2e.jpg differ diff --git a/server/src/samples/8f542c.jpg b/server/src/samples/8f542c.jpg new file mode 100644 index 0000000..f305aec Binary files /dev/null and b/server/src/samples/8f542c.jpg differ diff --git a/server/src/samples/8f5624.jpg b/server/src/samples/8f5624.jpg new file mode 100644 index 0000000..1fe9d9d Binary files /dev/null and b/server/src/samples/8f5624.jpg differ diff --git a/server/src/samples/8f5a2d.jpg b/server/src/samples/8f5a2d.jpg new file mode 100644 index 0000000..da3f2f8 Binary files /dev/null and b/server/src/samples/8f5a2d.jpg differ diff --git a/server/src/samples/8f5c37.jpg b/server/src/samples/8f5c37.jpg new file mode 100644 index 0000000..7699910 Binary files /dev/null and b/server/src/samples/8f5c37.jpg differ diff --git a/server/src/samples/8f6141.jpg b/server/src/samples/8f6141.jpg new file mode 100644 index 0000000..b5dd7f1 Binary files /dev/null and b/server/src/samples/8f6141.jpg differ diff --git a/server/src/samples/8f653b.jpg b/server/src/samples/8f653b.jpg new file mode 100644 index 0000000..cfa4549 Binary files /dev/null and b/server/src/samples/8f653b.jpg differ diff --git a/server/src/samples/8f6659.jpg b/server/src/samples/8f6659.jpg new file mode 100644 index 0000000..3052f9c Binary files /dev/null and b/server/src/samples/8f6659.jpg differ diff --git a/server/src/samples/8f7065.jpg b/server/src/samples/8f7065.jpg new file mode 100644 index 0000000..46c2533 Binary files /dev/null and b/server/src/samples/8f7065.jpg differ diff --git a/server/src/samples/8f735c.jpg b/server/src/samples/8f735c.jpg new file mode 100644 index 0000000..b0dac75 Binary files /dev/null and b/server/src/samples/8f735c.jpg differ diff --git a/server/src/samples/8f7631.jpg b/server/src/samples/8f7631.jpg new file mode 100644 index 0000000..26e177b Binary files /dev/null and b/server/src/samples/8f7631.jpg differ diff --git a/server/src/samples/8f783b.jpg b/server/src/samples/8f783b.jpg new file mode 100644 index 0000000..70af511 Binary files /dev/null and b/server/src/samples/8f783b.jpg differ diff --git a/server/src/samples/8f8f4b.jpg b/server/src/samples/8f8f4b.jpg new file mode 100644 index 0000000..c449e6e Binary files /dev/null and b/server/src/samples/8f8f4b.jpg differ diff --git a/server/src/samples/8fa27e.jpg b/server/src/samples/8fa27e.jpg new file mode 100644 index 0000000..060b8fb Binary files /dev/null and b/server/src/samples/8fa27e.jpg differ diff --git a/server/src/samples/90442f.jpg b/server/src/samples/90442f.jpg new file mode 100644 index 0000000..7ddd141 Binary files /dev/null and b/server/src/samples/90442f.jpg differ diff --git a/server/src/samples/905121.jpg b/server/src/samples/905121.jpg new file mode 100644 index 0000000..479e3cb Binary files /dev/null and b/server/src/samples/905121.jpg differ diff --git a/server/src/samples/905229.jpg b/server/src/samples/905229.jpg new file mode 100644 index 0000000..a7aeddd Binary files /dev/null and b/server/src/samples/905229.jpg differ diff --git a/server/src/samples/90523b.jpg b/server/src/samples/90523b.jpg new file mode 100644 index 0000000..cc293ef Binary files /dev/null and b/server/src/samples/90523b.jpg differ diff --git a/server/src/samples/905337.jpg b/server/src/samples/905337.jpg new file mode 100644 index 0000000..73e6efe Binary files /dev/null and b/server/src/samples/905337.jpg differ diff --git a/server/src/samples/905d3e.jpg b/server/src/samples/905d3e.jpg new file mode 100644 index 0000000..9335d33 Binary files /dev/null and b/server/src/samples/905d3e.jpg differ diff --git a/server/src/samples/906140.jpg b/server/src/samples/906140.jpg new file mode 100644 index 0000000..b4c1557 Binary files /dev/null and b/server/src/samples/906140.jpg differ diff --git a/server/src/samples/906a41.jpg b/server/src/samples/906a41.jpg new file mode 100644 index 0000000..25c2f00 Binary files /dev/null and b/server/src/samples/906a41.jpg differ diff --git a/server/src/samples/907741.jpg b/server/src/samples/907741.jpg new file mode 100644 index 0000000..fe7ef4c Binary files /dev/null and b/server/src/samples/907741.jpg differ diff --git a/server/src/samples/907b69.jpg b/server/src/samples/907b69.jpg new file mode 100644 index 0000000..32627d3 Binary files /dev/null and b/server/src/samples/907b69.jpg differ diff --git a/server/src/samples/908972.jpg b/server/src/samples/908972.jpg new file mode 100644 index 0000000..68c2e3d Binary files /dev/null and b/server/src/samples/908972.jpg differ diff --git a/server/src/samples/90996b.jpg b/server/src/samples/90996b.jpg new file mode 100644 index 0000000..30c5546 Binary files /dev/null and b/server/src/samples/90996b.jpg differ diff --git a/server/src/samples/909971.jpg b/server/src/samples/909971.jpg new file mode 100644 index 0000000..60c217c Binary files /dev/null and b/server/src/samples/909971.jpg differ diff --git a/server/src/samples/909c6e.jpg b/server/src/samples/909c6e.jpg new file mode 100644 index 0000000..313c95b Binary files /dev/null and b/server/src/samples/909c6e.jpg differ diff --git a/server/src/samples/90aa84.jpg b/server/src/samples/90aa84.jpg new file mode 100644 index 0000000..218eb14 Binary files /dev/null and b/server/src/samples/90aa84.jpg differ diff --git a/server/src/samples/90ab6f.jpg b/server/src/samples/90ab6f.jpg new file mode 100644 index 0000000..8d86d01 Binary files /dev/null and b/server/src/samples/90ab6f.jpg differ diff --git a/server/src/samples/913826.jpg b/server/src/samples/913826.jpg new file mode 100644 index 0000000..e02e8b3 Binary files /dev/null and b/server/src/samples/913826.jpg differ diff --git a/server/src/samples/914c27.jpg b/server/src/samples/914c27.jpg new file mode 100644 index 0000000..47922a7 Binary files /dev/null and b/server/src/samples/914c27.jpg differ diff --git a/server/src/samples/914f39.jpg b/server/src/samples/914f39.jpg new file mode 100644 index 0000000..767a415 Binary files /dev/null and b/server/src/samples/914f39.jpg differ diff --git a/server/src/samples/915352.jpg b/server/src/samples/915352.jpg new file mode 100644 index 0000000..d8c24f7 Binary files /dev/null and b/server/src/samples/915352.jpg differ diff --git a/server/src/samples/915539.jpg b/server/src/samples/915539.jpg new file mode 100644 index 0000000..ab54bdd Binary files /dev/null and b/server/src/samples/915539.jpg differ diff --git a/server/src/samples/915729.jpg b/server/src/samples/915729.jpg new file mode 100644 index 0000000..af68358 Binary files /dev/null and b/server/src/samples/915729.jpg differ diff --git a/server/src/samples/91603c.jpg b/server/src/samples/91603c.jpg new file mode 100644 index 0000000..b86dbe5 Binary files /dev/null and b/server/src/samples/91603c.jpg differ diff --git a/server/src/samples/916947.jpg b/server/src/samples/916947.jpg new file mode 100644 index 0000000..d49984a Binary files /dev/null and b/server/src/samples/916947.jpg differ diff --git a/server/src/samples/917849.jpg b/server/src/samples/917849.jpg new file mode 100644 index 0000000..9a6e9ee Binary files /dev/null and b/server/src/samples/917849.jpg differ diff --git a/server/src/samples/917a35.jpg b/server/src/samples/917a35.jpg new file mode 100644 index 0000000..8d3b90a Binary files /dev/null and b/server/src/samples/917a35.jpg differ diff --git a/server/src/samples/91804b.jpg b/server/src/samples/91804b.jpg new file mode 100644 index 0000000..3b3c361 Binary files /dev/null and b/server/src/samples/91804b.jpg differ diff --git a/server/src/samples/91967c.jpg b/server/src/samples/91967c.jpg new file mode 100644 index 0000000..b3ebb46 Binary files /dev/null and b/server/src/samples/91967c.jpg differ diff --git a/server/src/samples/91ac8c.jpg b/server/src/samples/91ac8c.jpg new file mode 100644 index 0000000..6df58b4 Binary files /dev/null and b/server/src/samples/91ac8c.jpg differ diff --git a/server/src/samples/924c50.jpg b/server/src/samples/924c50.jpg new file mode 100644 index 0000000..e893005 Binary files /dev/null and b/server/src/samples/924c50.jpg differ diff --git a/server/src/samples/92522e.jpg b/server/src/samples/92522e.jpg new file mode 100644 index 0000000..480eeec Binary files /dev/null and b/server/src/samples/92522e.jpg differ diff --git a/server/src/samples/925428.jpg b/server/src/samples/925428.jpg new file mode 100644 index 0000000..b8895bc Binary files /dev/null and b/server/src/samples/925428.jpg differ diff --git a/server/src/samples/925b36.jpg b/server/src/samples/925b36.jpg new file mode 100644 index 0000000..757fdcb Binary files /dev/null and b/server/src/samples/925b36.jpg differ diff --git a/server/src/samples/925b39.jpg b/server/src/samples/925b39.jpg new file mode 100644 index 0000000..ab5c9ff Binary files /dev/null and b/server/src/samples/925b39.jpg differ diff --git a/server/src/samples/926649.jpg b/server/src/samples/926649.jpg new file mode 100644 index 0000000..5729c83 Binary files /dev/null and b/server/src/samples/926649.jpg differ diff --git a/server/src/samples/92694e.jpg b/server/src/samples/92694e.jpg new file mode 100644 index 0000000..b5faf0a Binary files /dev/null and b/server/src/samples/92694e.jpg differ diff --git a/server/src/samples/926a4d.jpg b/server/src/samples/926a4d.jpg new file mode 100644 index 0000000..6200e6f Binary files /dev/null and b/server/src/samples/926a4d.jpg differ diff --git a/server/src/samples/926b42.jpg b/server/src/samples/926b42.jpg new file mode 100644 index 0000000..c4e13b2 Binary files /dev/null and b/server/src/samples/926b42.jpg differ diff --git a/server/src/samples/926d31.jpg b/server/src/samples/926d31.jpg new file mode 100644 index 0000000..f2c49ee Binary files /dev/null and b/server/src/samples/926d31.jpg differ diff --git a/server/src/samples/926d32.jpg b/server/src/samples/926d32.jpg new file mode 100644 index 0000000..7e1db5b Binary files /dev/null and b/server/src/samples/926d32.jpg differ diff --git a/server/src/samples/927339.jpg b/server/src/samples/927339.jpg new file mode 100644 index 0000000..4aa2b33 Binary files /dev/null and b/server/src/samples/927339.jpg differ diff --git a/server/src/samples/927a51.jpg b/server/src/samples/927a51.jpg new file mode 100644 index 0000000..6c1eb5f Binary files /dev/null and b/server/src/samples/927a51.jpg differ diff --git a/server/src/samples/927c32.jpg b/server/src/samples/927c32.jpg new file mode 100644 index 0000000..995b898 Binary files /dev/null and b/server/src/samples/927c32.jpg differ diff --git a/server/src/samples/92834a.jpg b/server/src/samples/92834a.jpg new file mode 100644 index 0000000..3ca344e Binary files /dev/null and b/server/src/samples/92834a.jpg differ diff --git a/server/src/samples/928652.jpg b/server/src/samples/928652.jpg new file mode 100644 index 0000000..0745aa1 Binary files /dev/null and b/server/src/samples/928652.jpg differ diff --git a/server/src/samples/934753.jpg b/server/src/samples/934753.jpg new file mode 100644 index 0000000..12c9e99 Binary files /dev/null and b/server/src/samples/934753.jpg differ diff --git a/server/src/samples/934b26.jpg b/server/src/samples/934b26.jpg new file mode 100644 index 0000000..4e2e9c9 Binary files /dev/null and b/server/src/samples/934b26.jpg differ diff --git a/server/src/samples/934b2d.jpg b/server/src/samples/934b2d.jpg new file mode 100644 index 0000000..a061cd6 Binary files /dev/null and b/server/src/samples/934b2d.jpg differ diff --git a/server/src/samples/935826.jpg b/server/src/samples/935826.jpg new file mode 100644 index 0000000..c50d3ac Binary files /dev/null and b/server/src/samples/935826.jpg differ diff --git a/server/src/samples/935c33.jpg b/server/src/samples/935c33.jpg new file mode 100644 index 0000000..9269820 Binary files /dev/null and b/server/src/samples/935c33.jpg differ diff --git a/server/src/samples/936f34.jpg b/server/src/samples/936f34.jpg new file mode 100644 index 0000000..cb42c89 Binary files /dev/null and b/server/src/samples/936f34.jpg differ diff --git a/server/src/samples/93724b.jpg b/server/src/samples/93724b.jpg new file mode 100644 index 0000000..351e5ae Binary files /dev/null and b/server/src/samples/93724b.jpg differ diff --git a/server/src/samples/93844d.jpg b/server/src/samples/93844d.jpg new file mode 100644 index 0000000..fea6db6 Binary files /dev/null and b/server/src/samples/93844d.jpg differ diff --git a/server/src/samples/939254.jpg b/server/src/samples/939254.jpg new file mode 100644 index 0000000..e772644 Binary files /dev/null and b/server/src/samples/939254.jpg differ diff --git a/server/src/samples/939977.jpg b/server/src/samples/939977.jpg new file mode 100644 index 0000000..015e05b Binary files /dev/null and b/server/src/samples/939977.jpg differ diff --git a/server/src/samples/93a27b.jpg b/server/src/samples/93a27b.jpg new file mode 100644 index 0000000..e6d02ef Binary files /dev/null and b/server/src/samples/93a27b.jpg differ diff --git a/server/src/samples/94533d.jpg b/server/src/samples/94533d.jpg new file mode 100644 index 0000000..dfcd834 Binary files /dev/null and b/server/src/samples/94533d.jpg differ diff --git a/server/src/samples/94542f.jpg b/server/src/samples/94542f.jpg new file mode 100644 index 0000000..b132758 Binary files /dev/null and b/server/src/samples/94542f.jpg differ diff --git a/server/src/samples/945528.jpg b/server/src/samples/945528.jpg new file mode 100644 index 0000000..5ffa47c Binary files /dev/null and b/server/src/samples/945528.jpg differ diff --git a/server/src/samples/945732.jpg b/server/src/samples/945732.jpg new file mode 100644 index 0000000..0299002 Binary files /dev/null and b/server/src/samples/945732.jpg differ diff --git a/server/src/samples/94573e.jpg b/server/src/samples/94573e.jpg new file mode 100644 index 0000000..f084edf Binary files /dev/null and b/server/src/samples/94573e.jpg differ diff --git a/server/src/samples/945935.jpg b/server/src/samples/945935.jpg new file mode 100644 index 0000000..fcd78db Binary files /dev/null and b/server/src/samples/945935.jpg differ diff --git a/server/src/samples/945940.jpg b/server/src/samples/945940.jpg new file mode 100644 index 0000000..c5d9945 Binary files /dev/null and b/server/src/samples/945940.jpg differ diff --git a/server/src/samples/94653a.jpg b/server/src/samples/94653a.jpg new file mode 100644 index 0000000..4811837 Binary files /dev/null and b/server/src/samples/94653a.jpg differ diff --git a/server/src/samples/947454.jpg b/server/src/samples/947454.jpg new file mode 100644 index 0000000..24636ca Binary files /dev/null and b/server/src/samples/947454.jpg differ diff --git a/server/src/samples/947836.jpg b/server/src/samples/947836.jpg new file mode 100644 index 0000000..73d0368 Binary files /dev/null and b/server/src/samples/947836.jpg differ diff --git a/server/src/samples/94894c.jpg b/server/src/samples/94894c.jpg new file mode 100644 index 0000000..aef5bc9 Binary files /dev/null and b/server/src/samples/94894c.jpg differ diff --git a/server/src/samples/948a62.jpg b/server/src/samples/948a62.jpg new file mode 100644 index 0000000..664faf5 Binary files /dev/null and b/server/src/samples/948a62.jpg differ diff --git a/server/src/samples/94915a.jpg b/server/src/samples/94915a.jpg new file mode 100644 index 0000000..3311122 Binary files /dev/null and b/server/src/samples/94915a.jpg differ diff --git a/server/src/samples/949872.jpg b/server/src/samples/949872.jpg new file mode 100644 index 0000000..efa7125 Binary files /dev/null and b/server/src/samples/949872.jpg differ diff --git a/server/src/samples/949b73.jpg b/server/src/samples/949b73.jpg new file mode 100644 index 0000000..ad4fe1f Binary files /dev/null and b/server/src/samples/949b73.jpg differ diff --git a/server/src/samples/949c64.jpg b/server/src/samples/949c64.jpg new file mode 100644 index 0000000..927422a Binary files /dev/null and b/server/src/samples/949c64.jpg differ diff --git a/server/src/samples/949c68.jpg b/server/src/samples/949c68.jpg new file mode 100644 index 0000000..def14f1 Binary files /dev/null and b/server/src/samples/949c68.jpg differ diff --git a/server/src/samples/949d70.jpg b/server/src/samples/949d70.jpg new file mode 100644 index 0000000..d72b984 Binary files /dev/null and b/server/src/samples/949d70.jpg differ diff --git a/server/src/samples/949f72.jpg b/server/src/samples/949f72.jpg new file mode 100644 index 0000000..56d970a Binary files /dev/null and b/server/src/samples/949f72.jpg differ diff --git a/server/src/samples/94af8c.jpg b/server/src/samples/94af8c.jpg new file mode 100644 index 0000000..92d63c7 Binary files /dev/null and b/server/src/samples/94af8c.jpg differ diff --git a/server/src/samples/94b294.jpg b/server/src/samples/94b294.jpg new file mode 100644 index 0000000..03ebb6e Binary files /dev/null and b/server/src/samples/94b294.jpg differ diff --git a/server/src/samples/955234.jpg b/server/src/samples/955234.jpg new file mode 100644 index 0000000..33d6827 Binary files /dev/null and b/server/src/samples/955234.jpg differ diff --git a/server/src/samples/95532e.jpg b/server/src/samples/95532e.jpg new file mode 100644 index 0000000..349a059 Binary files /dev/null and b/server/src/samples/95532e.jpg differ diff --git a/server/src/samples/95532f.jpg b/server/src/samples/95532f.jpg new file mode 100644 index 0000000..fa2144f Binary files /dev/null and b/server/src/samples/95532f.jpg differ diff --git a/server/src/samples/95602a.jpg b/server/src/samples/95602a.jpg new file mode 100644 index 0000000..835279e Binary files /dev/null and b/server/src/samples/95602a.jpg differ diff --git a/server/src/samples/956a47.jpg b/server/src/samples/956a47.jpg new file mode 100644 index 0000000..1c8a193 Binary files /dev/null and b/server/src/samples/956a47.jpg differ diff --git a/server/src/samples/957044.jpg b/server/src/samples/957044.jpg new file mode 100644 index 0000000..520154e Binary files /dev/null and b/server/src/samples/957044.jpg differ diff --git a/server/src/samples/957a52.jpg b/server/src/samples/957a52.jpg new file mode 100644 index 0000000..e30f8f0 Binary files /dev/null and b/server/src/samples/957a52.jpg differ diff --git a/server/src/samples/959c79.jpg b/server/src/samples/959c79.jpg new file mode 100644 index 0000000..62d98d6 Binary files /dev/null and b/server/src/samples/959c79.jpg differ diff --git a/server/src/samples/959c7b.jpg b/server/src/samples/959c7b.jpg new file mode 100644 index 0000000..6fd123b Binary files /dev/null and b/server/src/samples/959c7b.jpg differ diff --git a/server/src/samples/964920.jpg b/server/src/samples/964920.jpg new file mode 100644 index 0000000..c345318 Binary files /dev/null and b/server/src/samples/964920.jpg differ diff --git a/server/src/samples/965a37.jpg b/server/src/samples/965a37.jpg new file mode 100644 index 0000000..64786aa Binary files /dev/null and b/server/src/samples/965a37.jpg differ diff --git a/server/src/samples/96602a.jpg b/server/src/samples/96602a.jpg new file mode 100644 index 0000000..5b08543 Binary files /dev/null and b/server/src/samples/96602a.jpg differ diff --git a/server/src/samples/966449.jpg b/server/src/samples/966449.jpg new file mode 100644 index 0000000..7759a82 Binary files /dev/null and b/server/src/samples/966449.jpg differ diff --git a/server/src/samples/966a46.jpg b/server/src/samples/966a46.jpg new file mode 100644 index 0000000..0857b85 Binary files /dev/null and b/server/src/samples/966a46.jpg differ diff --git a/server/src/samples/966e34.jpg b/server/src/samples/966e34.jpg new file mode 100644 index 0000000..68366a5 Binary files /dev/null and b/server/src/samples/966e34.jpg differ diff --git a/server/src/samples/967758.jpg b/server/src/samples/967758.jpg new file mode 100644 index 0000000..7a72baf Binary files /dev/null and b/server/src/samples/967758.jpg differ diff --git a/server/src/samples/967938.jpg b/server/src/samples/967938.jpg new file mode 100644 index 0000000..0bbbb1d Binary files /dev/null and b/server/src/samples/967938.jpg differ diff --git a/server/src/samples/969e70.jpg b/server/src/samples/969e70.jpg new file mode 100644 index 0000000..8cd3206 Binary files /dev/null and b/server/src/samples/969e70.jpg differ diff --git a/server/src/samples/96a67f.jpg b/server/src/samples/96a67f.jpg new file mode 100644 index 0000000..93a9f94 Binary files /dev/null and b/server/src/samples/96a67f.jpg differ diff --git a/server/src/samples/975457.jpg b/server/src/samples/975457.jpg new file mode 100644 index 0000000..097bf7d Binary files /dev/null and b/server/src/samples/975457.jpg differ diff --git a/server/src/samples/975b29.jpg b/server/src/samples/975b29.jpg new file mode 100644 index 0000000..c74dcab Binary files /dev/null and b/server/src/samples/975b29.jpg differ diff --git a/server/src/samples/976b46.jpg b/server/src/samples/976b46.jpg new file mode 100644 index 0000000..d9ce654 Binary files /dev/null and b/server/src/samples/976b46.jpg differ diff --git a/server/src/samples/976c5c.jpg b/server/src/samples/976c5c.jpg new file mode 100644 index 0000000..d64a70a Binary files /dev/null and b/server/src/samples/976c5c.jpg differ diff --git a/server/src/samples/976e38.jpg b/server/src/samples/976e38.jpg new file mode 100644 index 0000000..2df435d Binary files /dev/null and b/server/src/samples/976e38.jpg differ diff --git a/server/src/samples/976e50.jpg b/server/src/samples/976e50.jpg new file mode 100644 index 0000000..b47c2aa Binary files /dev/null and b/server/src/samples/976e50.jpg differ diff --git a/server/src/samples/977145.jpg b/server/src/samples/977145.jpg new file mode 100644 index 0000000..5281a5f Binary files /dev/null and b/server/src/samples/977145.jpg differ diff --git a/server/src/samples/977332.jpg b/server/src/samples/977332.jpg new file mode 100644 index 0000000..29421ce Binary files /dev/null and b/server/src/samples/977332.jpg differ diff --git a/server/src/samples/978560.jpg b/server/src/samples/978560.jpg new file mode 100644 index 0000000..b0cd168 Binary files /dev/null and b/server/src/samples/978560.jpg differ diff --git a/server/src/samples/97a472.jpg b/server/src/samples/97a472.jpg new file mode 100644 index 0000000..3118e59 Binary files /dev/null and b/server/src/samples/97a472.jpg differ diff --git a/server/src/samples/97a965.jpg b/server/src/samples/97a965.jpg new file mode 100644 index 0000000..6e8d6cc Binary files /dev/null and b/server/src/samples/97a965.jpg differ diff --git a/server/src/samples/98472f.jpg b/server/src/samples/98472f.jpg new file mode 100644 index 0000000..2c2dbe5 Binary files /dev/null and b/server/src/samples/98472f.jpg differ diff --git a/server/src/samples/98532d.jpg b/server/src/samples/98532d.jpg new file mode 100644 index 0000000..87b9853 Binary files /dev/null and b/server/src/samples/98532d.jpg differ diff --git a/server/src/samples/985a34.jpg b/server/src/samples/985a34.jpg new file mode 100644 index 0000000..c6816ab Binary files /dev/null and b/server/src/samples/985a34.jpg differ diff --git a/server/src/samples/986547.jpg b/server/src/samples/986547.jpg new file mode 100644 index 0000000..6a73414 Binary files /dev/null and b/server/src/samples/986547.jpg differ diff --git a/server/src/samples/986b34.jpg b/server/src/samples/986b34.jpg new file mode 100644 index 0000000..0b7a6d2 Binary files /dev/null and b/server/src/samples/986b34.jpg differ diff --git a/server/src/samples/986c54.jpg b/server/src/samples/986c54.jpg new file mode 100644 index 0000000..1ec7036 Binary files /dev/null and b/server/src/samples/986c54.jpg differ diff --git a/server/src/samples/98733a.jpg b/server/src/samples/98733a.jpg new file mode 100644 index 0000000..30b26f1 Binary files /dev/null and b/server/src/samples/98733a.jpg differ diff --git a/server/src/samples/987a37.jpg b/server/src/samples/987a37.jpg new file mode 100644 index 0000000..ddda535 Binary files /dev/null and b/server/src/samples/987a37.jpg differ diff --git a/server/src/samples/987b6d.jpg b/server/src/samples/987b6d.jpg new file mode 100644 index 0000000..65c94cd Binary files /dev/null and b/server/src/samples/987b6d.jpg differ diff --git a/server/src/samples/988042.jpg b/server/src/samples/988042.jpg new file mode 100644 index 0000000..e8aff2c Binary files /dev/null and b/server/src/samples/988042.jpg differ diff --git a/server/src/samples/98915b.jpg b/server/src/samples/98915b.jpg new file mode 100644 index 0000000..99f17dc Binary files /dev/null and b/server/src/samples/98915b.jpg differ diff --git a/server/src/samples/989864.jpg b/server/src/samples/989864.jpg new file mode 100644 index 0000000..bf9e36f Binary files /dev/null and b/server/src/samples/989864.jpg differ diff --git a/server/src/samples/996a38.jpg b/server/src/samples/996a38.jpg new file mode 100644 index 0000000..23a134e Binary files /dev/null and b/server/src/samples/996a38.jpg differ diff --git a/server/src/samples/996d41.jpg b/server/src/samples/996d41.jpg new file mode 100644 index 0000000..66e467f Binary files /dev/null and b/server/src/samples/996d41.jpg differ diff --git a/server/src/samples/997054.jpg b/server/src/samples/997054.jpg new file mode 100644 index 0000000..62ff6d7 Binary files /dev/null and b/server/src/samples/997054.jpg differ diff --git a/server/src/samples/997242.jpg b/server/src/samples/997242.jpg new file mode 100644 index 0000000..e80da9f Binary files /dev/null and b/server/src/samples/997242.jpg differ diff --git a/server/src/samples/99915e.jpg b/server/src/samples/99915e.jpg new file mode 100644 index 0000000..cc8e8d8 Binary files /dev/null and b/server/src/samples/99915e.jpg differ diff --git a/server/src/samples/999d7e.jpg b/server/src/samples/999d7e.jpg new file mode 100644 index 0000000..9dfa78b Binary files /dev/null and b/server/src/samples/999d7e.jpg differ diff --git a/server/src/samples/99a096.jpg b/server/src/samples/99a096.jpg new file mode 100644 index 0000000..d2cf319 Binary files /dev/null and b/server/src/samples/99a096.jpg differ diff --git a/server/src/samples/9a4c2d.jpg b/server/src/samples/9a4c2d.jpg new file mode 100644 index 0000000..6b58165 Binary files /dev/null and b/server/src/samples/9a4c2d.jpg differ diff --git a/server/src/samples/9a5a2e.jpg b/server/src/samples/9a5a2e.jpg new file mode 100644 index 0000000..48db34a Binary files /dev/null and b/server/src/samples/9a5a2e.jpg differ diff --git a/server/src/samples/9a5a32.jpg b/server/src/samples/9a5a32.jpg new file mode 100644 index 0000000..f840e46 Binary files /dev/null and b/server/src/samples/9a5a32.jpg differ diff --git a/server/src/samples/9a5d2e.jpg b/server/src/samples/9a5d2e.jpg new file mode 100644 index 0000000..d607008 Binary files /dev/null and b/server/src/samples/9a5d2e.jpg differ diff --git a/server/src/samples/9a642b.jpg b/server/src/samples/9a642b.jpg new file mode 100644 index 0000000..2797b62 Binary files /dev/null and b/server/src/samples/9a642b.jpg differ diff --git a/server/src/samples/9a661e.jpg b/server/src/samples/9a661e.jpg new file mode 100644 index 0000000..1ed589b Binary files /dev/null and b/server/src/samples/9a661e.jpg differ diff --git a/server/src/samples/9a7243.jpg b/server/src/samples/9a7243.jpg new file mode 100644 index 0000000..66fb9a1 Binary files /dev/null and b/server/src/samples/9a7243.jpg differ diff --git a/server/src/samples/9a7529.jpg b/server/src/samples/9a7529.jpg new file mode 100644 index 0000000..244d097 Binary files /dev/null and b/server/src/samples/9a7529.jpg differ diff --git a/server/src/samples/9a772d.jpg b/server/src/samples/9a772d.jpg new file mode 100644 index 0000000..09e2871 Binary files /dev/null and b/server/src/samples/9a772d.jpg differ diff --git a/server/src/samples/9a7738.jpg b/server/src/samples/9a7738.jpg new file mode 100644 index 0000000..6675711 Binary files /dev/null and b/server/src/samples/9a7738.jpg differ diff --git a/server/src/samples/9a7d63.jpg b/server/src/samples/9a7d63.jpg new file mode 100644 index 0000000..b5677a8 Binary files /dev/null and b/server/src/samples/9a7d63.jpg differ diff --git a/server/src/samples/9a814f.jpg b/server/src/samples/9a814f.jpg new file mode 100644 index 0000000..204eacd Binary files /dev/null and b/server/src/samples/9a814f.jpg differ diff --git a/server/src/samples/9a8b94.jpg b/server/src/samples/9a8b94.jpg new file mode 100644 index 0000000..82592be Binary files /dev/null and b/server/src/samples/9a8b94.jpg differ diff --git a/server/src/samples/9a8c56.jpg b/server/src/samples/9a8c56.jpg new file mode 100644 index 0000000..4fc7ef0 Binary files /dev/null and b/server/src/samples/9a8c56.jpg differ diff --git a/server/src/samples/9a8e49.jpg b/server/src/samples/9a8e49.jpg new file mode 100644 index 0000000..1699fff Binary files /dev/null and b/server/src/samples/9a8e49.jpg differ diff --git a/server/src/samples/9a934d.jpg b/server/src/samples/9a934d.jpg new file mode 100644 index 0000000..bf7b87e Binary files /dev/null and b/server/src/samples/9a934d.jpg differ diff --git a/server/src/samples/9a9c71.jpg b/server/src/samples/9a9c71.jpg new file mode 100644 index 0000000..ecac582 Binary files /dev/null and b/server/src/samples/9a9c71.jpg differ diff --git a/server/src/samples/9ab594.jpg b/server/src/samples/9ab594.jpg new file mode 100644 index 0000000..a999405 Binary files /dev/null and b/server/src/samples/9ab594.jpg differ diff --git a/server/src/samples/9ab595.jpg b/server/src/samples/9ab595.jpg new file mode 100644 index 0000000..5a05815 Binary files /dev/null and b/server/src/samples/9ab595.jpg differ diff --git a/server/src/samples/9b4a34.jpg b/server/src/samples/9b4a34.jpg new file mode 100644 index 0000000..7ce5e13 Binary files /dev/null and b/server/src/samples/9b4a34.jpg differ diff --git a/server/src/samples/9b502f.jpg b/server/src/samples/9b502f.jpg new file mode 100644 index 0000000..62f4ae8 Binary files /dev/null and b/server/src/samples/9b502f.jpg differ diff --git a/server/src/samples/9b5436.jpg b/server/src/samples/9b5436.jpg new file mode 100644 index 0000000..99ed3f9 Binary files /dev/null and b/server/src/samples/9b5436.jpg differ diff --git a/server/src/samples/9b5b2e.jpg b/server/src/samples/9b5b2e.jpg new file mode 100644 index 0000000..d6c2c99 Binary files /dev/null and b/server/src/samples/9b5b2e.jpg differ diff --git a/server/src/samples/9b5d49.jpg b/server/src/samples/9b5d49.jpg new file mode 100644 index 0000000..648c8ca Binary files /dev/null and b/server/src/samples/9b5d49.jpg differ diff --git a/server/src/samples/9b6435.jpg b/server/src/samples/9b6435.jpg new file mode 100644 index 0000000..40d7bb1 Binary files /dev/null and b/server/src/samples/9b6435.jpg differ diff --git a/server/src/samples/9b6647.jpg b/server/src/samples/9b6647.jpg new file mode 100644 index 0000000..046f3c2 Binary files /dev/null and b/server/src/samples/9b6647.jpg differ diff --git a/server/src/samples/9b6a38.jpg b/server/src/samples/9b6a38.jpg new file mode 100644 index 0000000..38c7427 Binary files /dev/null and b/server/src/samples/9b6a38.jpg differ diff --git a/server/src/samples/9b7139.jpg b/server/src/samples/9b7139.jpg new file mode 100644 index 0000000..09eebea Binary files /dev/null and b/server/src/samples/9b7139.jpg differ diff --git a/server/src/samples/9b734a.jpg b/server/src/samples/9b734a.jpg new file mode 100644 index 0000000..dd21bd2 Binary files /dev/null and b/server/src/samples/9b734a.jpg differ diff --git a/server/src/samples/9b7836.jpg b/server/src/samples/9b7836.jpg new file mode 100644 index 0000000..2698425 Binary files /dev/null and b/server/src/samples/9b7836.jpg differ diff --git a/server/src/samples/9b7a44.jpg b/server/src/samples/9b7a44.jpg new file mode 100644 index 0000000..d88e38e Binary files /dev/null and b/server/src/samples/9b7a44.jpg differ diff --git a/server/src/samples/9b8352.jpg b/server/src/samples/9b8352.jpg new file mode 100644 index 0000000..3ea2d64 Binary files /dev/null and b/server/src/samples/9b8352.jpg differ diff --git a/server/src/samples/9b9559.jpg b/server/src/samples/9b9559.jpg new file mode 100644 index 0000000..9c65ea3 Binary files /dev/null and b/server/src/samples/9b9559.jpg differ diff --git a/server/src/samples/9c5121.jpg b/server/src/samples/9c5121.jpg new file mode 100644 index 0000000..5e25e59 Binary files /dev/null and b/server/src/samples/9c5121.jpg differ diff --git a/server/src/samples/9c5932.jpg b/server/src/samples/9c5932.jpg new file mode 100644 index 0000000..142957b Binary files /dev/null and b/server/src/samples/9c5932.jpg differ diff --git a/server/src/samples/9c5d58.jpg b/server/src/samples/9c5d58.jpg new file mode 100644 index 0000000..cad34a8 Binary files /dev/null and b/server/src/samples/9c5d58.jpg differ diff --git a/server/src/samples/9c6625.jpg b/server/src/samples/9c6625.jpg new file mode 100644 index 0000000..b58a340 Binary files /dev/null and b/server/src/samples/9c6625.jpg differ diff --git a/server/src/samples/9c6d3d.jpg b/server/src/samples/9c6d3d.jpg new file mode 100644 index 0000000..9918437 Binary files /dev/null and b/server/src/samples/9c6d3d.jpg differ diff --git a/server/src/samples/9c7644.jpg b/server/src/samples/9c7644.jpg new file mode 100644 index 0000000..ea0351b Binary files /dev/null and b/server/src/samples/9c7644.jpg differ diff --git a/server/src/samples/9c7737.jpg b/server/src/samples/9c7737.jpg new file mode 100644 index 0000000..92ec645 Binary files /dev/null and b/server/src/samples/9c7737.jpg differ diff --git a/server/src/samples/9c7b5b.jpg b/server/src/samples/9c7b5b.jpg new file mode 100644 index 0000000..0bd48fd Binary files /dev/null and b/server/src/samples/9c7b5b.jpg differ diff --git a/server/src/samples/9c7f3d.jpg b/server/src/samples/9c7f3d.jpg new file mode 100644 index 0000000..896a8ac Binary files /dev/null and b/server/src/samples/9c7f3d.jpg differ diff --git a/server/src/samples/9c8445.jpg b/server/src/samples/9c8445.jpg new file mode 100644 index 0000000..5805ebd Binary files /dev/null and b/server/src/samples/9c8445.jpg differ diff --git a/server/src/samples/9d3c25.jpg b/server/src/samples/9d3c25.jpg new file mode 100644 index 0000000..e41a42d Binary files /dev/null and b/server/src/samples/9d3c25.jpg differ diff --git a/server/src/samples/9d482c.jpg b/server/src/samples/9d482c.jpg new file mode 100644 index 0000000..1ce2d6a Binary files /dev/null and b/server/src/samples/9d482c.jpg differ diff --git a/server/src/samples/9d5131.jpg b/server/src/samples/9d5131.jpg new file mode 100644 index 0000000..d4fb980 Binary files /dev/null and b/server/src/samples/9d5131.jpg differ diff --git a/server/src/samples/9d592b.jpg b/server/src/samples/9d592b.jpg new file mode 100644 index 0000000..1c1b57a Binary files /dev/null and b/server/src/samples/9d592b.jpg differ diff --git a/server/src/samples/9d6031.jpg b/server/src/samples/9d6031.jpg new file mode 100644 index 0000000..8085373 Binary files /dev/null and b/server/src/samples/9d6031.jpg differ diff --git a/server/src/samples/9d6d38.jpg b/server/src/samples/9d6d38.jpg new file mode 100644 index 0000000..276d051 Binary files /dev/null and b/server/src/samples/9d6d38.jpg differ diff --git a/server/src/samples/9d7451.jpg b/server/src/samples/9d7451.jpg new file mode 100644 index 0000000..044c1fa Binary files /dev/null and b/server/src/samples/9d7451.jpg differ diff --git a/server/src/samples/9d754c.jpg b/server/src/samples/9d754c.jpg new file mode 100644 index 0000000..818cbc8 Binary files /dev/null and b/server/src/samples/9d754c.jpg differ diff --git a/server/src/samples/9d7e49.jpg b/server/src/samples/9d7e49.jpg new file mode 100644 index 0000000..5743641 Binary files /dev/null and b/server/src/samples/9d7e49.jpg differ diff --git a/server/src/samples/9d803c.jpg b/server/src/samples/9d803c.jpg new file mode 100644 index 0000000..21cae0b Binary files /dev/null and b/server/src/samples/9d803c.jpg differ diff --git a/server/src/samples/9d8f96.jpg b/server/src/samples/9d8f96.jpg new file mode 100644 index 0000000..d4c1940 Binary files /dev/null and b/server/src/samples/9d8f96.jpg differ diff --git a/server/src/samples/9d903c.jpg b/server/src/samples/9d903c.jpg new file mode 100644 index 0000000..3f309ee Binary files /dev/null and b/server/src/samples/9d903c.jpg differ diff --git a/server/src/samples/9d9149.jpg b/server/src/samples/9d9149.jpg new file mode 100644 index 0000000..6401fa7 Binary files /dev/null and b/server/src/samples/9d9149.jpg differ diff --git a/server/src/samples/9d9686.jpg b/server/src/samples/9d9686.jpg new file mode 100644 index 0000000..eccfea6 Binary files /dev/null and b/server/src/samples/9d9686.jpg differ diff --git a/server/src/samples/9da3ad.jpg b/server/src/samples/9da3ad.jpg new file mode 100644 index 0000000..351756d Binary files /dev/null and b/server/src/samples/9da3ad.jpg differ diff --git a/server/src/samples/9e5137.jpg b/server/src/samples/9e5137.jpg new file mode 100644 index 0000000..0aa841c Binary files /dev/null and b/server/src/samples/9e5137.jpg differ diff --git a/server/src/samples/9e531f.jpg b/server/src/samples/9e531f.jpg new file mode 100644 index 0000000..e5b9047 Binary files /dev/null and b/server/src/samples/9e531f.jpg differ diff --git a/server/src/samples/9e552d.jpg b/server/src/samples/9e552d.jpg new file mode 100644 index 0000000..843748e Binary files /dev/null and b/server/src/samples/9e552d.jpg differ diff --git a/server/src/samples/9e595c.jpg b/server/src/samples/9e595c.jpg new file mode 100644 index 0000000..a6a5083 Binary files /dev/null and b/server/src/samples/9e595c.jpg differ diff --git a/server/src/samples/9e666b.jpg b/server/src/samples/9e666b.jpg new file mode 100644 index 0000000..94a263c Binary files /dev/null and b/server/src/samples/9e666b.jpg differ diff --git a/server/src/samples/9e7849.jpg b/server/src/samples/9e7849.jpg new file mode 100644 index 0000000..49f6f73 Binary files /dev/null and b/server/src/samples/9e7849.jpg differ diff --git a/server/src/samples/9e795c.jpg b/server/src/samples/9e795c.jpg new file mode 100644 index 0000000..ec3e76c Binary files /dev/null and b/server/src/samples/9e795c.jpg differ diff --git a/server/src/samples/9e7b39.jpg b/server/src/samples/9e7b39.jpg new file mode 100644 index 0000000..f178dfc Binary files /dev/null and b/server/src/samples/9e7b39.jpg differ diff --git a/server/src/samples/9e8557.jpg b/server/src/samples/9e8557.jpg new file mode 100644 index 0000000..a80e25c Binary files /dev/null and b/server/src/samples/9e8557.jpg differ diff --git a/server/src/samples/9e9aa8.jpg b/server/src/samples/9e9aa8.jpg new file mode 100644 index 0000000..2fdfc43 Binary files /dev/null and b/server/src/samples/9e9aa8.jpg differ diff --git a/server/src/samples/9e9b67.jpg b/server/src/samples/9e9b67.jpg new file mode 100644 index 0000000..2485535 Binary files /dev/null and b/server/src/samples/9e9b67.jpg differ diff --git a/server/src/samples/9f4e29.jpg b/server/src/samples/9f4e29.jpg new file mode 100644 index 0000000..1ee4d15 Binary files /dev/null and b/server/src/samples/9f4e29.jpg differ diff --git a/server/src/samples/9f5661.jpg b/server/src/samples/9f5661.jpg new file mode 100644 index 0000000..79aa8a5 Binary files /dev/null and b/server/src/samples/9f5661.jpg differ diff --git a/server/src/samples/9f5c3c.jpg b/server/src/samples/9f5c3c.jpg new file mode 100644 index 0000000..51d2fcc Binary files /dev/null and b/server/src/samples/9f5c3c.jpg differ diff --git a/server/src/samples/9f6025.jpg b/server/src/samples/9f6025.jpg new file mode 100644 index 0000000..77503cc Binary files /dev/null and b/server/src/samples/9f6025.jpg differ diff --git a/server/src/samples/9f632e.jpg b/server/src/samples/9f632e.jpg new file mode 100644 index 0000000..95b5ff0 Binary files /dev/null and b/server/src/samples/9f632e.jpg differ diff --git a/server/src/samples/9f633b.jpg b/server/src/samples/9f633b.jpg new file mode 100644 index 0000000..7c3f904 Binary files /dev/null and b/server/src/samples/9f633b.jpg differ diff --git a/server/src/samples/9f642c.jpg b/server/src/samples/9f642c.jpg new file mode 100644 index 0000000..f91faf3 Binary files /dev/null and b/server/src/samples/9f642c.jpg differ diff --git a/server/src/samples/9f673b.jpg b/server/src/samples/9f673b.jpg new file mode 100644 index 0000000..29a37b0 Binary files /dev/null and b/server/src/samples/9f673b.jpg differ diff --git a/server/src/samples/9f6c3b.jpg b/server/src/samples/9f6c3b.jpg new file mode 100644 index 0000000..80413e3 Binary files /dev/null and b/server/src/samples/9f6c3b.jpg differ diff --git a/server/src/samples/9f714b.jpg b/server/src/samples/9f714b.jpg new file mode 100644 index 0000000..ca1e021 Binary files /dev/null and b/server/src/samples/9f714b.jpg differ diff --git a/server/src/samples/9f7354.jpg b/server/src/samples/9f7354.jpg new file mode 100644 index 0000000..c1ce577 Binary files /dev/null and b/server/src/samples/9f7354.jpg differ diff --git a/server/src/samples/9f774d.jpg b/server/src/samples/9f774d.jpg new file mode 100644 index 0000000..bb766f6 Binary files /dev/null and b/server/src/samples/9f774d.jpg differ diff --git a/server/src/samples/9f792f.jpg b/server/src/samples/9f792f.jpg new file mode 100644 index 0000000..d304b30 Binary files /dev/null and b/server/src/samples/9f792f.jpg differ diff --git a/server/src/samples/9f7e3d.jpg b/server/src/samples/9f7e3d.jpg new file mode 100644 index 0000000..9cbde01 Binary files /dev/null and b/server/src/samples/9f7e3d.jpg differ diff --git a/server/src/samples/9f7e6f.jpg b/server/src/samples/9f7e6f.jpg new file mode 100644 index 0000000..f03441f Binary files /dev/null and b/server/src/samples/9f7e6f.jpg differ diff --git a/server/src/samples/9f804b.jpg b/server/src/samples/9f804b.jpg new file mode 100644 index 0000000..eb7e201 Binary files /dev/null and b/server/src/samples/9f804b.jpg differ diff --git a/server/src/samples/9f876a.jpg b/server/src/samples/9f876a.jpg new file mode 100644 index 0000000..b987c53 Binary files /dev/null and b/server/src/samples/9f876a.jpg differ diff --git a/server/src/samples/9f9346.jpg b/server/src/samples/9f9346.jpg new file mode 100644 index 0000000..0327385 Binary files /dev/null and b/server/src/samples/9f9346.jpg differ diff --git a/server/src/samples/9f9787.jpg b/server/src/samples/9f9787.jpg new file mode 100644 index 0000000..c29acc3 Binary files /dev/null and b/server/src/samples/9f9787.jpg differ diff --git a/server/src/samples/9f9f95.jpg b/server/src/samples/9f9f95.jpg new file mode 100644 index 0000000..6c79efb Binary files /dev/null and b/server/src/samples/9f9f95.jpg differ diff --git a/server/src/samples/9fb168.jpg b/server/src/samples/9fb168.jpg new file mode 100644 index 0000000..fd11ca2 Binary files /dev/null and b/server/src/samples/9fb168.jpg differ diff --git a/server/src/samples/a04225.jpg b/server/src/samples/a04225.jpg new file mode 100644 index 0000000..85383d5 Binary files /dev/null and b/server/src/samples/a04225.jpg differ diff --git a/server/src/samples/a0462e.jpg b/server/src/samples/a0462e.jpg new file mode 100644 index 0000000..70b51aa Binary files /dev/null and b/server/src/samples/a0462e.jpg differ diff --git a/server/src/samples/a05227.jpg b/server/src/samples/a05227.jpg new file mode 100644 index 0000000..5451cec Binary files /dev/null and b/server/src/samples/a05227.jpg differ diff --git a/server/src/samples/a05639.jpg b/server/src/samples/a05639.jpg new file mode 100644 index 0000000..d77d89f Binary files /dev/null and b/server/src/samples/a05639.jpg differ diff --git a/server/src/samples/a0623a.jpg b/server/src/samples/a0623a.jpg new file mode 100644 index 0000000..faa9f23 Binary files /dev/null and b/server/src/samples/a0623a.jpg differ diff --git a/server/src/samples/a06343.jpg b/server/src/samples/a06343.jpg new file mode 100644 index 0000000..45cc184 Binary files /dev/null and b/server/src/samples/a06343.jpg differ diff --git a/server/src/samples/a07154.jpg b/server/src/samples/a07154.jpg new file mode 100644 index 0000000..c149a71 Binary files /dev/null and b/server/src/samples/a07154.jpg differ diff --git a/server/src/samples/a07244.jpg b/server/src/samples/a07244.jpg new file mode 100644 index 0000000..90b6a6a Binary files /dev/null and b/server/src/samples/a07244.jpg differ diff --git a/server/src/samples/a08a43.jpg b/server/src/samples/a08a43.jpg new file mode 100644 index 0000000..54420bd Binary files /dev/null and b/server/src/samples/a08a43.jpg differ diff --git a/server/src/samples/a0ad87.jpg b/server/src/samples/a0ad87.jpg new file mode 100644 index 0000000..02e436e Binary files /dev/null and b/server/src/samples/a0ad87.jpg differ diff --git a/server/src/samples/a1442a.jpg b/server/src/samples/a1442a.jpg new file mode 100644 index 0000000..a24ba32 Binary files /dev/null and b/server/src/samples/a1442a.jpg differ diff --git a/server/src/samples/a14729.jpg b/server/src/samples/a14729.jpg new file mode 100644 index 0000000..2f53395 Binary files /dev/null and b/server/src/samples/a14729.jpg differ diff --git a/server/src/samples/a15e29.jpg b/server/src/samples/a15e29.jpg new file mode 100644 index 0000000..4d2ef8a Binary files /dev/null and b/server/src/samples/a15e29.jpg differ diff --git a/server/src/samples/a16427.jpg b/server/src/samples/a16427.jpg new file mode 100644 index 0000000..c2f244f Binary files /dev/null and b/server/src/samples/a16427.jpg differ diff --git a/server/src/samples/a16730.jpg b/server/src/samples/a16730.jpg new file mode 100644 index 0000000..5725e60 Binary files /dev/null and b/server/src/samples/a16730.jpg differ diff --git a/server/src/samples/a16739.jpg b/server/src/samples/a16739.jpg new file mode 100644 index 0000000..31e0c84 Binary files /dev/null and b/server/src/samples/a16739.jpg differ diff --git a/server/src/samples/a16d30.jpg b/server/src/samples/a16d30.jpg new file mode 100644 index 0000000..aefe23f Binary files /dev/null and b/server/src/samples/a16d30.jpg differ diff --git a/server/src/samples/a17034.jpg b/server/src/samples/a17034.jpg new file mode 100644 index 0000000..4f46304 Binary files /dev/null and b/server/src/samples/a17034.jpg differ diff --git a/server/src/samples/a17b4b.jpg b/server/src/samples/a17b4b.jpg new file mode 100644 index 0000000..e541ab6 Binary files /dev/null and b/server/src/samples/a17b4b.jpg differ diff --git a/server/src/samples/a17e34.jpg b/server/src/samples/a17e34.jpg new file mode 100644 index 0000000..edf965e Binary files /dev/null and b/server/src/samples/a17e34.jpg differ diff --git a/server/src/samples/a19258.jpg b/server/src/samples/a19258.jpg new file mode 100644 index 0000000..be257e9 Binary files /dev/null and b/server/src/samples/a19258.jpg differ diff --git a/server/src/samples/a25031.jpg b/server/src/samples/a25031.jpg new file mode 100644 index 0000000..d742daf Binary files /dev/null and b/server/src/samples/a25031.jpg differ diff --git a/server/src/samples/a26320.jpg b/server/src/samples/a26320.jpg new file mode 100644 index 0000000..0649423 Binary files /dev/null and b/server/src/samples/a26320.jpg differ diff --git a/server/src/samples/a26e41.jpg b/server/src/samples/a26e41.jpg new file mode 100644 index 0000000..4596091 Binary files /dev/null and b/server/src/samples/a26e41.jpg differ diff --git a/server/src/samples/a2742b.jpg b/server/src/samples/a2742b.jpg new file mode 100644 index 0000000..4a1d84a Binary files /dev/null and b/server/src/samples/a2742b.jpg differ diff --git a/server/src/samples/a28359.jpg b/server/src/samples/a28359.jpg new file mode 100644 index 0000000..1d55ca9 Binary files /dev/null and b/server/src/samples/a28359.jpg differ diff --git a/server/src/samples/a2844a.jpg b/server/src/samples/a2844a.jpg new file mode 100644 index 0000000..e657d5f Binary files /dev/null and b/server/src/samples/a2844a.jpg differ diff --git a/server/src/samples/a29eab.jpg b/server/src/samples/a29eab.jpg new file mode 100644 index 0000000..6a43911 Binary files /dev/null and b/server/src/samples/a29eab.jpg differ diff --git a/server/src/samples/a2a15f.jpg b/server/src/samples/a2a15f.jpg new file mode 100644 index 0000000..05ec25a Binary files /dev/null and b/server/src/samples/a2a15f.jpg differ diff --git a/server/src/samples/a2aa7d.jpg b/server/src/samples/a2aa7d.jpg new file mode 100644 index 0000000..e94d00f Binary files /dev/null and b/server/src/samples/a2aa7d.jpg differ diff --git a/server/src/samples/a3432b.jpg b/server/src/samples/a3432b.jpg new file mode 100644 index 0000000..224133c Binary files /dev/null and b/server/src/samples/a3432b.jpg differ diff --git a/server/src/samples/a34a2e.jpg b/server/src/samples/a34a2e.jpg new file mode 100644 index 0000000..1c59f6d Binary files /dev/null and b/server/src/samples/a34a2e.jpg differ diff --git a/server/src/samples/a35a32.jpg b/server/src/samples/a35a32.jpg new file mode 100644 index 0000000..67003f8 Binary files /dev/null and b/server/src/samples/a35a32.jpg differ diff --git a/server/src/samples/a35c2a.jpg b/server/src/samples/a35c2a.jpg new file mode 100644 index 0000000..f39c283 Binary files /dev/null and b/server/src/samples/a35c2a.jpg differ diff --git a/server/src/samples/a3602a.jpg b/server/src/samples/a3602a.jpg new file mode 100644 index 0000000..aa8a493 Binary files /dev/null and b/server/src/samples/a3602a.jpg differ diff --git a/server/src/samples/a3696e.jpg b/server/src/samples/a3696e.jpg new file mode 100644 index 0000000..dd62772 Binary files /dev/null and b/server/src/samples/a3696e.jpg differ diff --git a/server/src/samples/a3743a.jpg b/server/src/samples/a3743a.jpg new file mode 100644 index 0000000..797ef94 Binary files /dev/null and b/server/src/samples/a3743a.jpg differ diff --git a/server/src/samples/a37442.jpg b/server/src/samples/a37442.jpg new file mode 100644 index 0000000..85b7700 Binary files /dev/null and b/server/src/samples/a37442.jpg differ diff --git a/server/src/samples/a3753a.jpg b/server/src/samples/a3753a.jpg new file mode 100644 index 0000000..dcab279 Binary files /dev/null and b/server/src/samples/a3753a.jpg differ diff --git a/server/src/samples/a37636.jpg b/server/src/samples/a37636.jpg new file mode 100644 index 0000000..4f457c4 Binary files /dev/null and b/server/src/samples/a37636.jpg differ diff --git a/server/src/samples/a3773d.jpg b/server/src/samples/a3773d.jpg new file mode 100644 index 0000000..b410bb4 Binary files /dev/null and b/server/src/samples/a3773d.jpg differ diff --git a/server/src/samples/a38f3e.jpg b/server/src/samples/a38f3e.jpg new file mode 100644 index 0000000..720b5c9 Binary files /dev/null and b/server/src/samples/a38f3e.jpg differ diff --git a/server/src/samples/a39251.jpg b/server/src/samples/a39251.jpg new file mode 100644 index 0000000..9314a25 Binary files /dev/null and b/server/src/samples/a39251.jpg differ diff --git a/server/src/samples/a39d7c.jpg b/server/src/samples/a39d7c.jpg new file mode 100644 index 0000000..119411b Binary files /dev/null and b/server/src/samples/a39d7c.jpg differ diff --git a/server/src/samples/a3ab84.jpg b/server/src/samples/a3ab84.jpg new file mode 100644 index 0000000..60b5f20 Binary files /dev/null and b/server/src/samples/a3ab84.jpg differ diff --git a/server/src/samples/a44e2b.jpg b/server/src/samples/a44e2b.jpg new file mode 100644 index 0000000..096555c Binary files /dev/null and b/server/src/samples/a44e2b.jpg differ diff --git a/server/src/samples/a45132.jpg b/server/src/samples/a45132.jpg new file mode 100644 index 0000000..1cbe8d9 Binary files /dev/null and b/server/src/samples/a45132.jpg differ diff --git a/server/src/samples/a45b20.jpg b/server/src/samples/a45b20.jpg new file mode 100644 index 0000000..4a722bb Binary files /dev/null and b/server/src/samples/a45b20.jpg differ diff --git a/server/src/samples/a46b35.jpg b/server/src/samples/a46b35.jpg new file mode 100644 index 0000000..893860f Binary files /dev/null and b/server/src/samples/a46b35.jpg differ diff --git a/server/src/samples/a46c77.jpg b/server/src/samples/a46c77.jpg new file mode 100644 index 0000000..994cb63 Binary files /dev/null and b/server/src/samples/a46c77.jpg differ diff --git a/server/src/samples/a4734d.jpg b/server/src/samples/a4734d.jpg new file mode 100644 index 0000000..4b8dc6a Binary files /dev/null and b/server/src/samples/a4734d.jpg differ diff --git a/server/src/samples/a4772e.jpg b/server/src/samples/a4772e.jpg new file mode 100644 index 0000000..30226b5 Binary files /dev/null and b/server/src/samples/a4772e.jpg differ diff --git a/server/src/samples/a47949.jpg b/server/src/samples/a47949.jpg new file mode 100644 index 0000000..9a6274d Binary files /dev/null and b/server/src/samples/a47949.jpg differ diff --git a/server/src/samples/a47e4f.jpg b/server/src/samples/a47e4f.jpg new file mode 100644 index 0000000..8f7ce8f Binary files /dev/null and b/server/src/samples/a47e4f.jpg differ diff --git a/server/src/samples/a47f5b.jpg b/server/src/samples/a47f5b.jpg new file mode 100644 index 0000000..f8a1858 Binary files /dev/null and b/server/src/samples/a47f5b.jpg differ diff --git a/server/src/samples/a48455.jpg b/server/src/samples/a48455.jpg new file mode 100644 index 0000000..7587286 Binary files /dev/null and b/server/src/samples/a48455.jpg differ diff --git a/server/src/samples/a48d5f.jpg b/server/src/samples/a48d5f.jpg new file mode 100644 index 0000000..c2d4647 Binary files /dev/null and b/server/src/samples/a48d5f.jpg differ diff --git a/server/src/samples/a4a16c.jpg b/server/src/samples/a4a16c.jpg new file mode 100644 index 0000000..27f1090 Binary files /dev/null and b/server/src/samples/a4a16c.jpg differ diff --git a/server/src/samples/a4ad80.jpg b/server/src/samples/a4ad80.jpg new file mode 100644 index 0000000..c17c392 Binary files /dev/null and b/server/src/samples/a4ad80.jpg differ diff --git a/server/src/samples/a55825.jpg b/server/src/samples/a55825.jpg new file mode 100644 index 0000000..8a24e72 Binary files /dev/null and b/server/src/samples/a55825.jpg differ diff --git a/server/src/samples/a56130.jpg b/server/src/samples/a56130.jpg new file mode 100644 index 0000000..a219a51 Binary files /dev/null and b/server/src/samples/a56130.jpg differ diff --git a/server/src/samples/a5613b.jpg b/server/src/samples/a5613b.jpg new file mode 100644 index 0000000..8f4dadf Binary files /dev/null and b/server/src/samples/a5613b.jpg differ diff --git a/server/src/samples/a56639.jpg b/server/src/samples/a56639.jpg new file mode 100644 index 0000000..7020295 Binary files /dev/null and b/server/src/samples/a56639.jpg differ diff --git a/server/src/samples/a56768.jpg b/server/src/samples/a56768.jpg new file mode 100644 index 0000000..f4cd2ed Binary files /dev/null and b/server/src/samples/a56768.jpg differ diff --git a/server/src/samples/a5693e.jpg b/server/src/samples/a5693e.jpg new file mode 100644 index 0000000..fd09c05 Binary files /dev/null and b/server/src/samples/a5693e.jpg differ diff --git a/server/src/samples/a56a32.jpg b/server/src/samples/a56a32.jpg new file mode 100644 index 0000000..b027a8c Binary files /dev/null and b/server/src/samples/a56a32.jpg differ diff --git a/server/src/samples/a57042.jpg b/server/src/samples/a57042.jpg new file mode 100644 index 0000000..13ae02b Binary files /dev/null and b/server/src/samples/a57042.jpg differ diff --git a/server/src/samples/a57b3a.jpg b/server/src/samples/a57b3a.jpg new file mode 100644 index 0000000..5619f15 Binary files /dev/null and b/server/src/samples/a57b3a.jpg differ diff --git a/server/src/samples/a57c41.jpg b/server/src/samples/a57c41.jpg new file mode 100644 index 0000000..15da678 Binary files /dev/null and b/server/src/samples/a57c41.jpg differ diff --git a/server/src/samples/a5947f.jpg b/server/src/samples/a5947f.jpg new file mode 100644 index 0000000..0387fe0 Binary files /dev/null and b/server/src/samples/a5947f.jpg differ diff --git a/server/src/samples/a66139.jpg b/server/src/samples/a66139.jpg new file mode 100644 index 0000000..d1063e0 Binary files /dev/null and b/server/src/samples/a66139.jpg differ diff --git a/server/src/samples/a66827.jpg b/server/src/samples/a66827.jpg new file mode 100644 index 0000000..3e47808 Binary files /dev/null and b/server/src/samples/a66827.jpg differ diff --git a/server/src/samples/a6722c.jpg b/server/src/samples/a6722c.jpg new file mode 100644 index 0000000..4b616da Binary files /dev/null and b/server/src/samples/a6722c.jpg differ diff --git a/server/src/samples/a67555.jpg b/server/src/samples/a67555.jpg new file mode 100644 index 0000000..78c683d Binary files /dev/null and b/server/src/samples/a67555.jpg differ diff --git a/server/src/samples/a67746.jpg b/server/src/samples/a67746.jpg new file mode 100644 index 0000000..2780822 Binary files /dev/null and b/server/src/samples/a67746.jpg differ diff --git a/server/src/samples/a67a35.jpg b/server/src/samples/a67a35.jpg new file mode 100644 index 0000000..623132f Binary files /dev/null and b/server/src/samples/a67a35.jpg differ diff --git a/server/src/samples/a6814b.jpg b/server/src/samples/a6814b.jpg new file mode 100644 index 0000000..61175ce Binary files /dev/null and b/server/src/samples/a6814b.jpg differ diff --git a/server/src/samples/a6823f.jpg b/server/src/samples/a6823f.jpg new file mode 100644 index 0000000..5ed589e Binary files /dev/null and b/server/src/samples/a6823f.jpg differ diff --git a/server/src/samples/a68630.jpg b/server/src/samples/a68630.jpg new file mode 100644 index 0000000..f79df81 Binary files /dev/null and b/server/src/samples/a68630.jpg differ diff --git a/server/src/samples/a69d54.jpg b/server/src/samples/a69d54.jpg new file mode 100644 index 0000000..d0c14de Binary files /dev/null and b/server/src/samples/a69d54.jpg differ diff --git a/server/src/samples/a7651c.jpg b/server/src/samples/a7651c.jpg new file mode 100644 index 0000000..a8e8b45 Binary files /dev/null and b/server/src/samples/a7651c.jpg differ diff --git a/server/src/samples/a76534.jpg b/server/src/samples/a76534.jpg new file mode 100644 index 0000000..2492bd3 Binary files /dev/null and b/server/src/samples/a76534.jpg differ diff --git a/server/src/samples/a76834.jpg b/server/src/samples/a76834.jpg new file mode 100644 index 0000000..67841d4 Binary files /dev/null and b/server/src/samples/a76834.jpg differ diff --git a/server/src/samples/a76a31.jpg b/server/src/samples/a76a31.jpg new file mode 100644 index 0000000..f46d142 Binary files /dev/null and b/server/src/samples/a76a31.jpg differ diff --git a/server/src/samples/a77039.jpg b/server/src/samples/a77039.jpg new file mode 100644 index 0000000..c91836b Binary files /dev/null and b/server/src/samples/a77039.jpg differ diff --git a/server/src/samples/a77459.jpg b/server/src/samples/a77459.jpg new file mode 100644 index 0000000..d1f0bca Binary files /dev/null and b/server/src/samples/a77459.jpg differ diff --git a/server/src/samples/a7802e.jpg b/server/src/samples/a7802e.jpg new file mode 100644 index 0000000..8bcef30 Binary files /dev/null and b/server/src/samples/a7802e.jpg differ diff --git a/server/src/samples/a7804e.jpg b/server/src/samples/a7804e.jpg new file mode 100644 index 0000000..3837d62 Binary files /dev/null and b/server/src/samples/a7804e.jpg differ diff --git a/server/src/samples/a78152.jpg b/server/src/samples/a78152.jpg new file mode 100644 index 0000000..9562ddf Binary files /dev/null and b/server/src/samples/a78152.jpg differ diff --git a/server/src/samples/a78336.jpg b/server/src/samples/a78336.jpg new file mode 100644 index 0000000..6c6aeeb Binary files /dev/null and b/server/src/samples/a78336.jpg differ diff --git a/server/src/samples/a78a54.jpg b/server/src/samples/a78a54.jpg new file mode 100644 index 0000000..5dfb886 Binary files /dev/null and b/server/src/samples/a78a54.jpg differ diff --git a/server/src/samples/a78d5a.jpg b/server/src/samples/a78d5a.jpg new file mode 100644 index 0000000..2f82778 Binary files /dev/null and b/server/src/samples/a78d5a.jpg differ diff --git a/server/src/samples/a78e6c.jpg b/server/src/samples/a78e6c.jpg new file mode 100644 index 0000000..16131ca Binary files /dev/null and b/server/src/samples/a78e6c.jpg differ diff --git a/server/src/samples/a79455.jpg b/server/src/samples/a79455.jpg new file mode 100644 index 0000000..22378b2 Binary files /dev/null and b/server/src/samples/a79455.jpg differ diff --git a/server/src/samples/a79f8d.jpg b/server/src/samples/a79f8d.jpg new file mode 100644 index 0000000..7134e14 Binary files /dev/null and b/server/src/samples/a79f8d.jpg differ diff --git a/server/src/samples/a7a4af.jpg b/server/src/samples/a7a4af.jpg new file mode 100644 index 0000000..68590c1 Binary files /dev/null and b/server/src/samples/a7a4af.jpg differ diff --git a/server/src/samples/a84d2d.jpg b/server/src/samples/a84d2d.jpg new file mode 100644 index 0000000..e20c2ed Binary files /dev/null and b/server/src/samples/a84d2d.jpg differ diff --git a/server/src/samples/a85431.jpg b/server/src/samples/a85431.jpg new file mode 100644 index 0000000..f5e3278 Binary files /dev/null and b/server/src/samples/a85431.jpg differ diff --git a/server/src/samples/a8623a.jpg b/server/src/samples/a8623a.jpg new file mode 100644 index 0000000..bbf7ffd Binary files /dev/null and b/server/src/samples/a8623a.jpg differ diff --git a/server/src/samples/a8775b.jpg b/server/src/samples/a8775b.jpg new file mode 100644 index 0000000..790c4ac Binary files /dev/null and b/server/src/samples/a8775b.jpg differ diff --git a/server/src/samples/a88057.jpg b/server/src/samples/a88057.jpg new file mode 100644 index 0000000..3dccbac Binary files /dev/null and b/server/src/samples/a88057.jpg differ diff --git a/server/src/samples/a8825c.jpg b/server/src/samples/a8825c.jpg new file mode 100644 index 0000000..50e13b5 Binary files /dev/null and b/server/src/samples/a8825c.jpg differ diff --git a/server/src/samples/a88544.jpg b/server/src/samples/a88544.jpg new file mode 100644 index 0000000..24e1ca1 Binary files /dev/null and b/server/src/samples/a88544.jpg differ diff --git a/server/src/samples/a89671.jpg b/server/src/samples/a89671.jpg new file mode 100644 index 0000000..55bd9e3 Binary files /dev/null and b/server/src/samples/a89671.jpg differ diff --git a/server/src/samples/a94126.jpg b/server/src/samples/a94126.jpg new file mode 100644 index 0000000..9227c21 Binary files /dev/null and b/server/src/samples/a94126.jpg differ diff --git a/server/src/samples/a94c2f.jpg b/server/src/samples/a94c2f.jpg new file mode 100644 index 0000000..9f2f875 Binary files /dev/null and b/server/src/samples/a94c2f.jpg differ diff --git a/server/src/samples/a95723.jpg b/server/src/samples/a95723.jpg new file mode 100644 index 0000000..247351e Binary files /dev/null and b/server/src/samples/a95723.jpg differ diff --git a/server/src/samples/a95923.jpg b/server/src/samples/a95923.jpg new file mode 100644 index 0000000..6da24fe Binary files /dev/null and b/server/src/samples/a95923.jpg differ diff --git a/server/src/samples/a96d33.jpg b/server/src/samples/a96d33.jpg new file mode 100644 index 0000000..c6ec742 Binary files /dev/null and b/server/src/samples/a96d33.jpg differ diff --git a/server/src/samples/a97a3f.jpg b/server/src/samples/a97a3f.jpg new file mode 100644 index 0000000..96c7d30 Binary files /dev/null and b/server/src/samples/a97a3f.jpg differ diff --git a/server/src/samples/a97b5b.jpg b/server/src/samples/a97b5b.jpg new file mode 100644 index 0000000..9f69004 Binary files /dev/null and b/server/src/samples/a97b5b.jpg differ diff --git a/server/src/samples/a9977e.jpg b/server/src/samples/a9977e.jpg new file mode 100644 index 0000000..a644541 Binary files /dev/null and b/server/src/samples/a9977e.jpg differ diff --git a/server/src/samples/a99ba4.jpg b/server/src/samples/a99ba4.jpg new file mode 100644 index 0000000..f8cd623 Binary files /dev/null and b/server/src/samples/a99ba4.jpg differ diff --git a/server/src/samples/a9a6a9.jpg b/server/src/samples/a9a6a9.jpg new file mode 100644 index 0000000..69c31c2 Binary files /dev/null and b/server/src/samples/a9a6a9.jpg differ diff --git a/server/src/samples/aa4226.jpg b/server/src/samples/aa4226.jpg new file mode 100644 index 0000000..32543fd Binary files /dev/null and b/server/src/samples/aa4226.jpg differ diff --git a/server/src/samples/aa4a22.jpg b/server/src/samples/aa4a22.jpg new file mode 100644 index 0000000..e4ae7b3 Binary files /dev/null and b/server/src/samples/aa4a22.jpg differ diff --git a/server/src/samples/aa4b2e.jpg b/server/src/samples/aa4b2e.jpg new file mode 100644 index 0000000..dc034ab Binary files /dev/null and b/server/src/samples/aa4b2e.jpg differ diff --git a/server/src/samples/aa4d27.jpg b/server/src/samples/aa4d27.jpg new file mode 100644 index 0000000..c23bec6 Binary files /dev/null and b/server/src/samples/aa4d27.jpg differ diff --git a/server/src/samples/aa5225.jpg b/server/src/samples/aa5225.jpg new file mode 100644 index 0000000..aca74e6 Binary files /dev/null and b/server/src/samples/aa5225.jpg differ diff --git a/server/src/samples/aa6d2c.jpg b/server/src/samples/aa6d2c.jpg new file mode 100644 index 0000000..102d741 Binary files /dev/null and b/server/src/samples/aa6d2c.jpg differ diff --git a/server/src/samples/aa6e1c.jpg b/server/src/samples/aa6e1c.jpg new file mode 100644 index 0000000..3711d07 Binary files /dev/null and b/server/src/samples/aa6e1c.jpg differ diff --git a/server/src/samples/aa883c.jpg b/server/src/samples/aa883c.jpg new file mode 100644 index 0000000..ea226e3 Binary files /dev/null and b/server/src/samples/aa883c.jpg differ diff --git a/server/src/samples/aa8a75.jpg b/server/src/samples/aa8a75.jpg new file mode 100644 index 0000000..7518e05 Binary files /dev/null and b/server/src/samples/aa8a75.jpg differ diff --git a/server/src/samples/aa9144.jpg b/server/src/samples/aa9144.jpg new file mode 100644 index 0000000..428f95b Binary files /dev/null and b/server/src/samples/aa9144.jpg differ diff --git a/server/src/samples/aa9163.jpg b/server/src/samples/aa9163.jpg new file mode 100644 index 0000000..bfe0871 Binary files /dev/null and b/server/src/samples/aa9163.jpg differ diff --git a/server/src/samples/aaa6a7.jpg b/server/src/samples/aaa6a7.jpg new file mode 100644 index 0000000..5ed82c2 Binary files /dev/null and b/server/src/samples/aaa6a7.jpg differ diff --git a/server/src/samples/ab4a2c.jpg b/server/src/samples/ab4a2c.jpg new file mode 100644 index 0000000..84af9e9 Binary files /dev/null and b/server/src/samples/ab4a2c.jpg differ diff --git a/server/src/samples/ab5312.jpg b/server/src/samples/ab5312.jpg new file mode 100644 index 0000000..bc855c9 Binary files /dev/null and b/server/src/samples/ab5312.jpg differ diff --git a/server/src/samples/ab734f.jpg b/server/src/samples/ab734f.jpg new file mode 100644 index 0000000..13e8905 Binary files /dev/null and b/server/src/samples/ab734f.jpg differ diff --git a/server/src/samples/ab7e3d.jpg b/server/src/samples/ab7e3d.jpg new file mode 100644 index 0000000..95e9c7c Binary files /dev/null and b/server/src/samples/ab7e3d.jpg differ diff --git a/server/src/samples/ab8146.jpg b/server/src/samples/ab8146.jpg new file mode 100644 index 0000000..caee34c Binary files /dev/null and b/server/src/samples/ab8146.jpg differ diff --git a/server/src/samples/ab8d59.jpg b/server/src/samples/ab8d59.jpg new file mode 100644 index 0000000..07bb94e Binary files /dev/null and b/server/src/samples/ab8d59.jpg differ diff --git a/server/src/samples/ab954f.jpg b/server/src/samples/ab954f.jpg new file mode 100644 index 0000000..ad7983b Binary files /dev/null and b/server/src/samples/ab954f.jpg differ diff --git a/server/src/samples/ab965f.jpg b/server/src/samples/ab965f.jpg new file mode 100644 index 0000000..973ee1a Binary files /dev/null and b/server/src/samples/ab965f.jpg differ diff --git a/server/src/samples/ab994a.jpg b/server/src/samples/ab994a.jpg new file mode 100644 index 0000000..2896d2c Binary files /dev/null and b/server/src/samples/ab994a.jpg differ diff --git a/server/src/samples/ac5918.jpg b/server/src/samples/ac5918.jpg new file mode 100644 index 0000000..1c64418 Binary files /dev/null and b/server/src/samples/ac5918.jpg differ diff --git a/server/src/samples/ac682a.jpg b/server/src/samples/ac682a.jpg new file mode 100644 index 0000000..1a85583 Binary files /dev/null and b/server/src/samples/ac682a.jpg differ diff --git a/server/src/samples/ac6a2f.jpg b/server/src/samples/ac6a2f.jpg new file mode 100644 index 0000000..8e923b0 Binary files /dev/null and b/server/src/samples/ac6a2f.jpg differ diff --git a/server/src/samples/ac6b72.jpg b/server/src/samples/ac6b72.jpg new file mode 100644 index 0000000..96de8ad Binary files /dev/null and b/server/src/samples/ac6b72.jpg differ diff --git a/server/src/samples/ac795c.jpg b/server/src/samples/ac795c.jpg new file mode 100644 index 0000000..58b9244 Binary files /dev/null and b/server/src/samples/ac795c.jpg differ diff --git a/server/src/samples/ac7a47.jpg b/server/src/samples/ac7a47.jpg new file mode 100644 index 0000000..8badd59 Binary files /dev/null and b/server/src/samples/ac7a47.jpg differ diff --git a/server/src/samples/ac7b5c.jpg b/server/src/samples/ac7b5c.jpg new file mode 100644 index 0000000..b678523 Binary files /dev/null and b/server/src/samples/ac7b5c.jpg differ diff --git a/server/src/samples/ac8558.jpg b/server/src/samples/ac8558.jpg new file mode 100644 index 0000000..cc0fa14 Binary files /dev/null and b/server/src/samples/ac8558.jpg differ diff --git a/server/src/samples/ac8943.jpg b/server/src/samples/ac8943.jpg new file mode 100644 index 0000000..26aa96e Binary files /dev/null and b/server/src/samples/ac8943.jpg differ diff --git a/server/src/samples/ac8a44.jpg b/server/src/samples/ac8a44.jpg new file mode 100644 index 0000000..14b0786 Binary files /dev/null and b/server/src/samples/ac8a44.jpg differ diff --git a/server/src/samples/ac9459.jpg b/server/src/samples/ac9459.jpg new file mode 100644 index 0000000..160efbf Binary files /dev/null and b/server/src/samples/ac9459.jpg differ diff --git a/server/src/samples/ad5e27.jpg b/server/src/samples/ad5e27.jpg new file mode 100644 index 0000000..dffb618 Binary files /dev/null and b/server/src/samples/ad5e27.jpg differ diff --git a/server/src/samples/ad6b21.jpg b/server/src/samples/ad6b21.jpg new file mode 100644 index 0000000..8537531 Binary files /dev/null and b/server/src/samples/ad6b21.jpg differ diff --git a/server/src/samples/ad6e35.jpg b/server/src/samples/ad6e35.jpg new file mode 100644 index 0000000..4e91d84 Binary files /dev/null and b/server/src/samples/ad6e35.jpg differ diff --git a/server/src/samples/ad7028.jpg b/server/src/samples/ad7028.jpg new file mode 100644 index 0000000..46d4764 Binary files /dev/null and b/server/src/samples/ad7028.jpg differ diff --git a/server/src/samples/ad793b.jpg b/server/src/samples/ad793b.jpg new file mode 100644 index 0000000..cd0dc8f Binary files /dev/null and b/server/src/samples/ad793b.jpg differ diff --git a/server/src/samples/ad7d3b.jpg b/server/src/samples/ad7d3b.jpg new file mode 100644 index 0000000..76af3cd Binary files /dev/null and b/server/src/samples/ad7d3b.jpg differ diff --git a/server/src/samples/ad8037.jpg b/server/src/samples/ad8037.jpg new file mode 100644 index 0000000..0e93aed Binary files /dev/null and b/server/src/samples/ad8037.jpg differ diff --git a/server/src/samples/ad8c3b.jpg b/server/src/samples/ad8c3b.jpg new file mode 100644 index 0000000..ef25bf6 Binary files /dev/null and b/server/src/samples/ad8c3b.jpg differ diff --git a/server/src/samples/ad8c61.jpg b/server/src/samples/ad8c61.jpg new file mode 100644 index 0000000..9fbd89c Binary files /dev/null and b/server/src/samples/ad8c61.jpg differ diff --git a/server/src/samples/ad924f.jpg b/server/src/samples/ad924f.jpg new file mode 100644 index 0000000..4fbfce3 Binary files /dev/null and b/server/src/samples/ad924f.jpg differ diff --git a/server/src/samples/ada874.jpg b/server/src/samples/ada874.jpg new file mode 100644 index 0000000..a862568 Binary files /dev/null and b/server/src/samples/ada874.jpg differ diff --git a/server/src/samples/adb588.jpg b/server/src/samples/adb588.jpg new file mode 100644 index 0000000..b6d2951 Binary files /dev/null and b/server/src/samples/adb588.jpg differ diff --git a/server/src/samples/adc4a9.jpg b/server/src/samples/adc4a9.jpg new file mode 100644 index 0000000..d2f15b4 Binary files /dev/null and b/server/src/samples/adc4a9.jpg differ diff --git a/server/src/samples/ae5032.jpg b/server/src/samples/ae5032.jpg new file mode 100644 index 0000000..fa30f5e Binary files /dev/null and b/server/src/samples/ae5032.jpg differ diff --git a/server/src/samples/ae7024.jpg b/server/src/samples/ae7024.jpg new file mode 100644 index 0000000..f7278a8 Binary files /dev/null and b/server/src/samples/ae7024.jpg differ diff --git a/server/src/samples/ae7945.jpg b/server/src/samples/ae7945.jpg new file mode 100644 index 0000000..99ef9ac Binary files /dev/null and b/server/src/samples/ae7945.jpg differ diff --git a/server/src/samples/ae812e.jpg b/server/src/samples/ae812e.jpg new file mode 100644 index 0000000..5b1b7bb Binary files /dev/null and b/server/src/samples/ae812e.jpg differ diff --git a/server/src/samples/ae8241.jpg b/server/src/samples/ae8241.jpg new file mode 100644 index 0000000..6b3d094 Binary files /dev/null and b/server/src/samples/ae8241.jpg differ diff --git a/server/src/samples/ae8654.jpg b/server/src/samples/ae8654.jpg new file mode 100644 index 0000000..b0ac861 Binary files /dev/null and b/server/src/samples/ae8654.jpg differ diff --git a/server/src/samples/ae8667.jpg b/server/src/samples/ae8667.jpg new file mode 100644 index 0000000..a182cd3 Binary files /dev/null and b/server/src/samples/ae8667.jpg differ diff --git a/server/src/samples/ae895b.jpg b/server/src/samples/ae895b.jpg new file mode 100644 index 0000000..db4ea25 Binary files /dev/null and b/server/src/samples/ae895b.jpg differ diff --git a/server/src/samples/ae8b5c.jpg b/server/src/samples/ae8b5c.jpg new file mode 100644 index 0000000..9c1df1c Binary files /dev/null and b/server/src/samples/ae8b5c.jpg differ diff --git a/server/src/samples/ae8c36.jpg b/server/src/samples/ae8c36.jpg new file mode 100644 index 0000000..baea491 Binary files /dev/null and b/server/src/samples/ae8c36.jpg differ diff --git a/server/src/samples/ae943c.jpg b/server/src/samples/ae943c.jpg new file mode 100644 index 0000000..7e2f845 Binary files /dev/null and b/server/src/samples/ae943c.jpg differ diff --git a/server/src/samples/ae9546.jpg b/server/src/samples/ae9546.jpg new file mode 100644 index 0000000..a79691b Binary files /dev/null and b/server/src/samples/ae9546.jpg differ diff --git a/server/src/samples/af7734.jpg b/server/src/samples/af7734.jpg new file mode 100644 index 0000000..b7a9666 Binary files /dev/null and b/server/src/samples/af7734.jpg differ diff --git a/server/src/samples/af8860.jpg b/server/src/samples/af8860.jpg new file mode 100644 index 0000000..770d19e Binary files /dev/null and b/server/src/samples/af8860.jpg differ diff --git a/server/src/samples/af9747.jpg b/server/src/samples/af9747.jpg new file mode 100644 index 0000000..4208fb0 Binary files /dev/null and b/server/src/samples/af9747.jpg differ diff --git a/server/src/samples/af9a62.jpg b/server/src/samples/af9a62.jpg new file mode 100644 index 0000000..12ebc55 Binary files /dev/null and b/server/src/samples/af9a62.jpg differ diff --git a/server/src/samples/af9d7f.jpg b/server/src/samples/af9d7f.jpg new file mode 100644 index 0000000..adbd89d Binary files /dev/null and b/server/src/samples/af9d7f.jpg differ diff --git a/server/src/samples/afb486.jpg b/server/src/samples/afb486.jpg new file mode 100644 index 0000000..ed7abe4 Binary files /dev/null and b/server/src/samples/afb486.jpg differ diff --git a/server/src/samples/afba86.jpg b/server/src/samples/afba86.jpg new file mode 100644 index 0000000..540c739 Binary files /dev/null and b/server/src/samples/afba86.jpg differ diff --git a/server/src/samples/b04d2c.jpg b/server/src/samples/b04d2c.jpg new file mode 100644 index 0000000..e3194ef Binary files /dev/null and b/server/src/samples/b04d2c.jpg differ diff --git a/server/src/samples/b0883e.jpg b/server/src/samples/b0883e.jpg new file mode 100644 index 0000000..c8cf657 Binary files /dev/null and b/server/src/samples/b0883e.jpg differ diff --git a/server/src/samples/b08e45.jpg b/server/src/samples/b08e45.jpg new file mode 100644 index 0000000..89a96b6 Binary files /dev/null and b/server/src/samples/b08e45.jpg differ diff --git a/server/src/samples/b08f53.jpg b/server/src/samples/b08f53.jpg new file mode 100644 index 0000000..77c62f8 Binary files /dev/null and b/server/src/samples/b08f53.jpg differ diff --git a/server/src/samples/b09050.jpg b/server/src/samples/b09050.jpg new file mode 100644 index 0000000..fde3733 Binary files /dev/null and b/server/src/samples/b09050.jpg differ diff --git a/server/src/samples/b0913a.jpg b/server/src/samples/b0913a.jpg new file mode 100644 index 0000000..2f06e7c Binary files /dev/null and b/server/src/samples/b0913a.jpg differ diff --git a/server/src/samples/b0a64a.jpg b/server/src/samples/b0a64a.jpg new file mode 100644 index 0000000..df65cbf Binary files /dev/null and b/server/src/samples/b0a64a.jpg differ diff --git a/server/src/samples/b0ba8d.jpg b/server/src/samples/b0ba8d.jpg new file mode 100644 index 0000000..39e694e Binary files /dev/null and b/server/src/samples/b0ba8d.jpg differ diff --git a/server/src/samples/b1513a.jpg b/server/src/samples/b1513a.jpg new file mode 100644 index 0000000..e9a3efd Binary files /dev/null and b/server/src/samples/b1513a.jpg differ diff --git a/server/src/samples/b15732.jpg b/server/src/samples/b15732.jpg new file mode 100644 index 0000000..051acc4 Binary files /dev/null and b/server/src/samples/b15732.jpg differ diff --git a/server/src/samples/b1682d.jpg b/server/src/samples/b1682d.jpg new file mode 100644 index 0000000..73fa712 Binary files /dev/null and b/server/src/samples/b1682d.jpg differ diff --git a/server/src/samples/b16a2b.jpg b/server/src/samples/b16a2b.jpg new file mode 100644 index 0000000..68ccb97 Binary files /dev/null and b/server/src/samples/b16a2b.jpg differ diff --git a/server/src/samples/b18540.jpg b/server/src/samples/b18540.jpg new file mode 100644 index 0000000..c4608d6 Binary files /dev/null and b/server/src/samples/b18540.jpg differ diff --git a/server/src/samples/b18f5e.jpg b/server/src/samples/b18f5e.jpg new file mode 100644 index 0000000..f508cdc Binary files /dev/null and b/server/src/samples/b18f5e.jpg differ diff --git a/server/src/samples/b19458.jpg b/server/src/samples/b19458.jpg new file mode 100644 index 0000000..d6719ce Binary files /dev/null and b/server/src/samples/b19458.jpg differ diff --git a/server/src/samples/b19955.jpg b/server/src/samples/b19955.jpg new file mode 100644 index 0000000..086eed7 Binary files /dev/null and b/server/src/samples/b19955.jpg differ diff --git a/server/src/samples/b19c5c.jpg b/server/src/samples/b19c5c.jpg new file mode 100644 index 0000000..d8efefa Binary files /dev/null and b/server/src/samples/b19c5c.jpg differ diff --git a/server/src/samples/b1a55d.jpg b/server/src/samples/b1a55d.jpg new file mode 100644 index 0000000..d4d2a91 Binary files /dev/null and b/server/src/samples/b1a55d.jpg differ diff --git a/server/src/samples/b1bf9a.jpg b/server/src/samples/b1bf9a.jpg new file mode 100644 index 0000000..54bbad3 Binary files /dev/null and b/server/src/samples/b1bf9a.jpg differ diff --git a/server/src/samples/b1c4a6.jpg b/server/src/samples/b1c4a6.jpg new file mode 100644 index 0000000..234e76e Binary files /dev/null and b/server/src/samples/b1c4a6.jpg differ diff --git a/server/src/samples/b2543f.jpg b/server/src/samples/b2543f.jpg new file mode 100644 index 0000000..6153cd1 Binary files /dev/null and b/server/src/samples/b2543f.jpg differ diff --git a/server/src/samples/b25528.jpg b/server/src/samples/b25528.jpg new file mode 100644 index 0000000..cbae914 Binary files /dev/null and b/server/src/samples/b25528.jpg differ diff --git a/server/src/samples/b26e43.jpg b/server/src/samples/b26e43.jpg new file mode 100644 index 0000000..58dbd09 Binary files /dev/null and b/server/src/samples/b26e43.jpg differ diff --git a/server/src/samples/b2713a.jpg b/server/src/samples/b2713a.jpg new file mode 100644 index 0000000..910679f Binary files /dev/null and b/server/src/samples/b2713a.jpg differ diff --git a/server/src/samples/b27223.jpg b/server/src/samples/b27223.jpg new file mode 100644 index 0000000..2c3ca40 Binary files /dev/null and b/server/src/samples/b27223.jpg differ diff --git a/server/src/samples/b2731f.jpg b/server/src/samples/b2731f.jpg new file mode 100644 index 0000000..ad5a27c Binary files /dev/null and b/server/src/samples/b2731f.jpg differ diff --git a/server/src/samples/b27329.jpg b/server/src/samples/b27329.jpg new file mode 100644 index 0000000..6ebf4bd Binary files /dev/null and b/server/src/samples/b27329.jpg differ diff --git a/server/src/samples/b27536.jpg b/server/src/samples/b27536.jpg new file mode 100644 index 0000000..9693b7f Binary files /dev/null and b/server/src/samples/b27536.jpg differ diff --git a/server/src/samples/b27836.jpg b/server/src/samples/b27836.jpg new file mode 100644 index 0000000..92a5a83 Binary files /dev/null and b/server/src/samples/b27836.jpg differ diff --git a/server/src/samples/b27b28.jpg b/server/src/samples/b27b28.jpg new file mode 100644 index 0000000..efef68b Binary files /dev/null and b/server/src/samples/b27b28.jpg differ diff --git a/server/src/samples/b27f27.jpg b/server/src/samples/b27f27.jpg new file mode 100644 index 0000000..ff617eb Binary files /dev/null and b/server/src/samples/b27f27.jpg differ diff --git a/server/src/samples/b28429.jpg b/server/src/samples/b28429.jpg new file mode 100644 index 0000000..cd173c0 Binary files /dev/null and b/server/src/samples/b28429.jpg differ diff --git a/server/src/samples/b28738.jpg b/server/src/samples/b28738.jpg new file mode 100644 index 0000000..35942ac Binary files /dev/null and b/server/src/samples/b28738.jpg differ diff --git a/server/src/samples/b28741.jpg b/server/src/samples/b28741.jpg new file mode 100644 index 0000000..abb7759 Binary files /dev/null and b/server/src/samples/b28741.jpg differ diff --git a/server/src/samples/b2894c.jpg b/server/src/samples/b2894c.jpg new file mode 100644 index 0000000..86f4b9a Binary files /dev/null and b/server/src/samples/b2894c.jpg differ diff --git a/server/src/samples/b28f41.jpg b/server/src/samples/b28f41.jpg new file mode 100644 index 0000000..59ef6e9 Binary files /dev/null and b/server/src/samples/b28f41.jpg differ diff --git a/server/src/samples/b2944f.jpg b/server/src/samples/b2944f.jpg new file mode 100644 index 0000000..1b63649 Binary files /dev/null and b/server/src/samples/b2944f.jpg differ diff --git a/server/src/samples/b29b50.jpg b/server/src/samples/b29b50.jpg new file mode 100644 index 0000000..13d37d6 Binary files /dev/null and b/server/src/samples/b29b50.jpg differ diff --git a/server/src/samples/b29c52.jpg b/server/src/samples/b29c52.jpg new file mode 100644 index 0000000..7938432 Binary files /dev/null and b/server/src/samples/b29c52.jpg differ diff --git a/server/src/samples/b2a36f.jpg b/server/src/samples/b2a36f.jpg new file mode 100644 index 0000000..bf0dfd8 Binary files /dev/null and b/server/src/samples/b2a36f.jpg differ diff --git a/server/src/samples/b2babb.jpg b/server/src/samples/b2babb.jpg new file mode 100644 index 0000000..db5ce55 Binary files /dev/null and b/server/src/samples/b2babb.jpg differ diff --git a/server/src/samples/b2c199.jpg b/server/src/samples/b2c199.jpg new file mode 100644 index 0000000..3d29fff Binary files /dev/null and b/server/src/samples/b2c199.jpg differ diff --git a/server/src/samples/b34b30.jpg b/server/src/samples/b34b30.jpg new file mode 100644 index 0000000..7e3dd8e Binary files /dev/null and b/server/src/samples/b34b30.jpg differ diff --git a/server/src/samples/b37229.jpg b/server/src/samples/b37229.jpg new file mode 100644 index 0000000..9acc1d2 Binary files /dev/null and b/server/src/samples/b37229.jpg differ diff --git a/server/src/samples/b37944.jpg b/server/src/samples/b37944.jpg new file mode 100644 index 0000000..7591cab Binary files /dev/null and b/server/src/samples/b37944.jpg differ diff --git a/server/src/samples/b37a47.jpg b/server/src/samples/b37a47.jpg new file mode 100644 index 0000000..58429af Binary files /dev/null and b/server/src/samples/b37a47.jpg differ diff --git a/server/src/samples/b38840.jpg b/server/src/samples/b38840.jpg new file mode 100644 index 0000000..d95dae1 Binary files /dev/null and b/server/src/samples/b38840.jpg differ diff --git a/server/src/samples/b3a48c.jpg b/server/src/samples/b3a48c.jpg new file mode 100644 index 0000000..f31153c Binary files /dev/null and b/server/src/samples/b3a48c.jpg differ diff --git a/server/src/samples/b46e1c.jpg b/server/src/samples/b46e1c.jpg new file mode 100644 index 0000000..38d76a3 Binary files /dev/null and b/server/src/samples/b46e1c.jpg differ diff --git a/server/src/samples/b47149.jpg b/server/src/samples/b47149.jpg new file mode 100644 index 0000000..d71a094 Binary files /dev/null and b/server/src/samples/b47149.jpg differ diff --git a/server/src/samples/b4752a.jpg b/server/src/samples/b4752a.jpg new file mode 100644 index 0000000..3e603d0 Binary files /dev/null and b/server/src/samples/b4752a.jpg differ diff --git a/server/src/samples/b4802f.jpg b/server/src/samples/b4802f.jpg new file mode 100644 index 0000000..ca9f6b4 Binary files /dev/null and b/server/src/samples/b4802f.jpg differ diff --git a/server/src/samples/b4833c.jpg b/server/src/samples/b4833c.jpg new file mode 100644 index 0000000..db682f4 Binary files /dev/null and b/server/src/samples/b4833c.jpg differ diff --git a/server/src/samples/b49446.jpg b/server/src/samples/b49446.jpg new file mode 100644 index 0000000..d3b1577 Binary files /dev/null and b/server/src/samples/b49446.jpg differ diff --git a/server/src/samples/b49a67.jpg b/server/src/samples/b49a67.jpg new file mode 100644 index 0000000..4f24811 Binary files /dev/null and b/server/src/samples/b49a67.jpg differ diff --git a/server/src/samples/b49e50.jpg b/server/src/samples/b49e50.jpg new file mode 100644 index 0000000..854cb51 Binary files /dev/null and b/server/src/samples/b49e50.jpg differ diff --git a/server/src/samples/b49f5c.jpg b/server/src/samples/b49f5c.jpg new file mode 100644 index 0000000..e9ec3a3 Binary files /dev/null and b/server/src/samples/b49f5c.jpg differ diff --git a/server/src/samples/b4a04c.jpg b/server/src/samples/b4a04c.jpg new file mode 100644 index 0000000..c97c515 Binary files /dev/null and b/server/src/samples/b4a04c.jpg differ diff --git a/server/src/samples/b58a3c.jpg b/server/src/samples/b58a3c.jpg new file mode 100644 index 0000000..eba134a Binary files /dev/null and b/server/src/samples/b58a3c.jpg differ diff --git a/server/src/samples/b58c44.jpg b/server/src/samples/b58c44.jpg new file mode 100644 index 0000000..2631448 Binary files /dev/null and b/server/src/samples/b58c44.jpg differ diff --git a/server/src/samples/b58d6d.jpg b/server/src/samples/b58d6d.jpg new file mode 100644 index 0000000..c3bf630 Binary files /dev/null and b/server/src/samples/b58d6d.jpg differ diff --git a/server/src/samples/b58e47.jpg b/server/src/samples/b58e47.jpg new file mode 100644 index 0000000..22b2703 Binary files /dev/null and b/server/src/samples/b58e47.jpg differ diff --git a/server/src/samples/b59b53.jpg b/server/src/samples/b59b53.jpg new file mode 100644 index 0000000..9d2ea99 Binary files /dev/null and b/server/src/samples/b59b53.jpg differ diff --git a/server/src/samples/b59d56.jpg b/server/src/samples/b59d56.jpg new file mode 100644 index 0000000..df8266a Binary files /dev/null and b/server/src/samples/b59d56.jpg differ diff --git a/server/src/samples/b5a05c.jpg b/server/src/samples/b5a05c.jpg new file mode 100644 index 0000000..1de7f94 Binary files /dev/null and b/server/src/samples/b5a05c.jpg differ diff --git a/server/src/samples/b5b7b4.jpg b/server/src/samples/b5b7b4.jpg new file mode 100644 index 0000000..575c195 Binary files /dev/null and b/server/src/samples/b5b7b4.jpg differ diff --git a/server/src/samples/b5c6ad.jpg b/server/src/samples/b5c6ad.jpg new file mode 100644 index 0000000..c06debc Binary files /dev/null and b/server/src/samples/b5c6ad.jpg differ diff --git a/server/src/samples/b6612e.jpg b/server/src/samples/b6612e.jpg new file mode 100644 index 0000000..9bd3868 Binary files /dev/null and b/server/src/samples/b6612e.jpg differ diff --git a/server/src/samples/b68431.jpg b/server/src/samples/b68431.jpg new file mode 100644 index 0000000..2c8fbab Binary files /dev/null and b/server/src/samples/b68431.jpg differ diff --git a/server/src/samples/b68b64.jpg b/server/src/samples/b68b64.jpg new file mode 100644 index 0000000..dda10b5 Binary files /dev/null and b/server/src/samples/b68b64.jpg differ diff --git a/server/src/samples/b68f44.jpg b/server/src/samples/b68f44.jpg new file mode 100644 index 0000000..c16771e Binary files /dev/null and b/server/src/samples/b68f44.jpg differ diff --git a/server/src/samples/b69642.jpg b/server/src/samples/b69642.jpg new file mode 100644 index 0000000..4d260fd Binary files /dev/null and b/server/src/samples/b69642.jpg differ diff --git a/server/src/samples/b6974a.jpg b/server/src/samples/b6974a.jpg new file mode 100644 index 0000000..a0118ed Binary files /dev/null and b/server/src/samples/b6974a.jpg differ diff --git a/server/src/samples/b6a56b.jpg b/server/src/samples/b6a56b.jpg new file mode 100644 index 0000000..a65cd15 Binary files /dev/null and b/server/src/samples/b6a56b.jpg differ diff --git a/server/src/samples/b6b689.jpg b/server/src/samples/b6b689.jpg new file mode 100644 index 0000000..93d67d9 Binary files /dev/null and b/server/src/samples/b6b689.jpg differ diff --git a/server/src/samples/b75129.jpg b/server/src/samples/b75129.jpg new file mode 100644 index 0000000..93186f6 Binary files /dev/null and b/server/src/samples/b75129.jpg differ diff --git a/server/src/samples/b7512e.jpg b/server/src/samples/b7512e.jpg new file mode 100644 index 0000000..fb6fbfe Binary files /dev/null and b/server/src/samples/b7512e.jpg differ diff --git a/server/src/samples/b77434.jpg b/server/src/samples/b77434.jpg new file mode 100644 index 0000000..a39d9dc Binary files /dev/null and b/server/src/samples/b77434.jpg differ diff --git a/server/src/samples/b7752d.jpg b/server/src/samples/b7752d.jpg new file mode 100644 index 0000000..e1fb966 Binary files /dev/null and b/server/src/samples/b7752d.jpg differ diff --git a/server/src/samples/b78f51.jpg b/server/src/samples/b78f51.jpg new file mode 100644 index 0000000..9be3493 Binary files /dev/null and b/server/src/samples/b78f51.jpg differ diff --git a/server/src/samples/b79454.jpg b/server/src/samples/b79454.jpg new file mode 100644 index 0000000..fdb4911 Binary files /dev/null and b/server/src/samples/b79454.jpg differ diff --git a/server/src/samples/b7975b.jpg b/server/src/samples/b7975b.jpg new file mode 100644 index 0000000..fe61669 Binary files /dev/null and b/server/src/samples/b7975b.jpg differ diff --git a/server/src/samples/b79939.jpg b/server/src/samples/b79939.jpg new file mode 100644 index 0000000..5de4900 Binary files /dev/null and b/server/src/samples/b79939.jpg differ diff --git a/server/src/samples/b79c53.jpg b/server/src/samples/b79c53.jpg new file mode 100644 index 0000000..4dcebd4 Binary files /dev/null and b/server/src/samples/b79c53.jpg differ diff --git a/server/src/samples/b7a04f.jpg b/server/src/samples/b7a04f.jpg new file mode 100644 index 0000000..7e09622 Binary files /dev/null and b/server/src/samples/b7a04f.jpg differ diff --git a/server/src/samples/b7a256.jpg b/server/src/samples/b7a256.jpg new file mode 100644 index 0000000..ba044d1 Binary files /dev/null and b/server/src/samples/b7a256.jpg differ diff --git a/server/src/samples/b85132.jpg b/server/src/samples/b85132.jpg new file mode 100644 index 0000000..fd3de3e Binary files /dev/null and b/server/src/samples/b85132.jpg differ diff --git a/server/src/samples/b87e42.jpg b/server/src/samples/b87e42.jpg new file mode 100644 index 0000000..127f25f Binary files /dev/null and b/server/src/samples/b87e42.jpg differ diff --git a/server/src/samples/b8834a.jpg b/server/src/samples/b8834a.jpg new file mode 100644 index 0000000..01a7e2a Binary files /dev/null and b/server/src/samples/b8834a.jpg differ diff --git a/server/src/samples/b89169.jpg b/server/src/samples/b89169.jpg new file mode 100644 index 0000000..495b540 Binary files /dev/null and b/server/src/samples/b89169.jpg differ diff --git a/server/src/samples/b89170.jpg b/server/src/samples/b89170.jpg new file mode 100644 index 0000000..cc85897 Binary files /dev/null and b/server/src/samples/b89170.jpg differ diff --git a/server/src/samples/b89248.jpg b/server/src/samples/b89248.jpg new file mode 100644 index 0000000..ec2a27e Binary files /dev/null and b/server/src/samples/b89248.jpg differ diff --git a/server/src/samples/b89542.jpg b/server/src/samples/b89542.jpg new file mode 100644 index 0000000..56dc057 Binary files /dev/null and b/server/src/samples/b89542.jpg differ diff --git a/server/src/samples/b89a4c.jpg b/server/src/samples/b89a4c.jpg new file mode 100644 index 0000000..b756442 Binary files /dev/null and b/server/src/samples/b89a4c.jpg differ diff --git a/server/src/samples/b89b5a.jpg b/server/src/samples/b89b5a.jpg new file mode 100644 index 0000000..aba5abd Binary files /dev/null and b/server/src/samples/b89b5a.jpg differ diff --git a/server/src/samples/b9581a.jpg b/server/src/samples/b9581a.jpg new file mode 100644 index 0000000..d50b7e8 Binary files /dev/null and b/server/src/samples/b9581a.jpg differ diff --git a/server/src/samples/b95d38.jpg b/server/src/samples/b95d38.jpg new file mode 100644 index 0000000..d581df4 Binary files /dev/null and b/server/src/samples/b95d38.jpg differ diff --git a/server/src/samples/b96c30.jpg b/server/src/samples/b96c30.jpg new file mode 100644 index 0000000..43fd3cb Binary files /dev/null and b/server/src/samples/b96c30.jpg differ diff --git a/server/src/samples/b98138.jpg b/server/src/samples/b98138.jpg new file mode 100644 index 0000000..39c82b1 Binary files /dev/null and b/server/src/samples/b98138.jpg differ diff --git a/server/src/samples/b9874d.jpg b/server/src/samples/b9874d.jpg new file mode 100644 index 0000000..6661232 Binary files /dev/null and b/server/src/samples/b9874d.jpg differ diff --git a/server/src/samples/b9916a.jpg b/server/src/samples/b9916a.jpg new file mode 100644 index 0000000..385a184 Binary files /dev/null and b/server/src/samples/b9916a.jpg differ diff --git a/server/src/samples/b99450.jpg b/server/src/samples/b99450.jpg new file mode 100644 index 0000000..7988328 Binary files /dev/null and b/server/src/samples/b99450.jpg differ diff --git a/server/src/samples/b99642.jpg b/server/src/samples/b99642.jpg new file mode 100644 index 0000000..879c5a8 Binary files /dev/null and b/server/src/samples/b99642.jpg differ diff --git a/server/src/samples/b99843.jpg b/server/src/samples/b99843.jpg new file mode 100644 index 0000000..9f0e309 Binary files /dev/null and b/server/src/samples/b99843.jpg differ diff --git a/server/src/samples/b99b4c.jpg b/server/src/samples/b99b4c.jpg new file mode 100644 index 0000000..b32ad14 Binary files /dev/null and b/server/src/samples/b99b4c.jpg differ diff --git a/server/src/samples/b9a783.jpg b/server/src/samples/b9a783.jpg new file mode 100644 index 0000000..3a716de Binary files /dev/null and b/server/src/samples/b9a783.jpg differ diff --git a/server/src/samples/b9a890.jpg b/server/src/samples/b9a890.jpg new file mode 100644 index 0000000..3794674 Binary files /dev/null and b/server/src/samples/b9a890.jpg differ diff --git a/server/src/samples/b9bd97.jpg b/server/src/samples/b9bd97.jpg new file mode 100644 index 0000000..ec31db4 Binary files /dev/null and b/server/src/samples/b9bd97.jpg differ diff --git a/server/src/samples/b9bf95.jpg b/server/src/samples/b9bf95.jpg new file mode 100644 index 0000000..9c887c1 Binary files /dev/null and b/server/src/samples/b9bf95.jpg differ diff --git a/server/src/samples/ba832c.jpg b/server/src/samples/ba832c.jpg new file mode 100644 index 0000000..95f6d79 Binary files /dev/null and b/server/src/samples/ba832c.jpg differ diff --git a/server/src/samples/ba8a4b.jpg b/server/src/samples/ba8a4b.jpg new file mode 100644 index 0000000..2533abb Binary files /dev/null and b/server/src/samples/ba8a4b.jpg differ diff --git a/server/src/samples/ba9a5a.jpg b/server/src/samples/ba9a5a.jpg new file mode 100644 index 0000000..91b5f43 Binary files /dev/null and b/server/src/samples/ba9a5a.jpg differ diff --git a/server/src/samples/baa053.jpg b/server/src/samples/baa053.jpg new file mode 100644 index 0000000..604acd0 Binary files /dev/null and b/server/src/samples/baa053.jpg differ diff --git a/server/src/samples/bac8af.jpg b/server/src/samples/bac8af.jpg new file mode 100644 index 0000000..8b5ac78 Binary files /dev/null and b/server/src/samples/bac8af.jpg differ diff --git a/server/src/samples/bb7d34.jpg b/server/src/samples/bb7d34.jpg new file mode 100644 index 0000000..3f29fd4 Binary files /dev/null and b/server/src/samples/bb7d34.jpg differ diff --git a/server/src/samples/bb8c6a.jpg b/server/src/samples/bb8c6a.jpg new file mode 100644 index 0000000..841add5 Binary files /dev/null and b/server/src/samples/bb8c6a.jpg differ diff --git a/server/src/samples/bb9235.jpg b/server/src/samples/bb9235.jpg new file mode 100644 index 0000000..9e4187e Binary files /dev/null and b/server/src/samples/bb9235.jpg differ diff --git a/server/src/samples/bb923d.jpg b/server/src/samples/bb923d.jpg new file mode 100644 index 0000000..d914433 Binary files /dev/null and b/server/src/samples/bb923d.jpg differ diff --git a/server/src/samples/bb9b48.jpg b/server/src/samples/bb9b48.jpg new file mode 100644 index 0000000..261a4db Binary files /dev/null and b/server/src/samples/bb9b48.jpg differ diff --git a/server/src/samples/bb9c4d.jpg b/server/src/samples/bb9c4d.jpg new file mode 100644 index 0000000..fd8a627 Binary files /dev/null and b/server/src/samples/bb9c4d.jpg differ diff --git a/server/src/samples/bba14d.jpg b/server/src/samples/bba14d.jpg new file mode 100644 index 0000000..069f7c9 Binary files /dev/null and b/server/src/samples/bba14d.jpg differ diff --git a/server/src/samples/bba25d.jpg b/server/src/samples/bba25d.jpg new file mode 100644 index 0000000..a73312e Binary files /dev/null and b/server/src/samples/bba25d.jpg differ diff --git a/server/src/samples/bba362.jpg b/server/src/samples/bba362.jpg new file mode 100644 index 0000000..2527b18 Binary files /dev/null and b/server/src/samples/bba362.jpg differ diff --git a/server/src/samples/bba557.jpg b/server/src/samples/bba557.jpg new file mode 100644 index 0000000..3552061 Binary files /dev/null and b/server/src/samples/bba557.jpg differ diff --git a/server/src/samples/bbab6a.jpg b/server/src/samples/bbab6a.jpg new file mode 100644 index 0000000..6a507ea Binary files /dev/null and b/server/src/samples/bbab6a.jpg differ diff --git a/server/src/samples/bc6d23.jpg b/server/src/samples/bc6d23.jpg new file mode 100644 index 0000000..3671215 Binary files /dev/null and b/server/src/samples/bc6d23.jpg differ diff --git a/server/src/samples/bc6f36.jpg b/server/src/samples/bc6f36.jpg new file mode 100644 index 0000000..0201908 Binary files /dev/null and b/server/src/samples/bc6f36.jpg differ diff --git a/server/src/samples/bc7f4f.jpg b/server/src/samples/bc7f4f.jpg new file mode 100644 index 0000000..4a391d8 Binary files /dev/null and b/server/src/samples/bc7f4f.jpg differ diff --git a/server/src/samples/bc867e.jpg b/server/src/samples/bc867e.jpg new file mode 100644 index 0000000..5088cba Binary files /dev/null and b/server/src/samples/bc867e.jpg differ diff --git a/server/src/samples/bc8e47.jpg b/server/src/samples/bc8e47.jpg new file mode 100644 index 0000000..6c2dd30 Binary files /dev/null and b/server/src/samples/bc8e47.jpg differ diff --git a/server/src/samples/bc9241.jpg b/server/src/samples/bc9241.jpg new file mode 100644 index 0000000..8eddd6f Binary files /dev/null and b/server/src/samples/bc9241.jpg differ diff --git a/server/src/samples/bc9777.jpg b/server/src/samples/bc9777.jpg new file mode 100644 index 0000000..7d8f86a Binary files /dev/null and b/server/src/samples/bc9777.jpg differ diff --git a/server/src/samples/bc9878.jpg b/server/src/samples/bc9878.jpg new file mode 100644 index 0000000..3eab896 Binary files /dev/null and b/server/src/samples/bc9878.jpg differ diff --git a/server/src/samples/bca967.jpg b/server/src/samples/bca967.jpg new file mode 100644 index 0000000..9efa061 Binary files /dev/null and b/server/src/samples/bca967.jpg differ diff --git a/server/src/samples/bcb9be.jpg b/server/src/samples/bcb9be.jpg new file mode 100644 index 0000000..eac3c32 Binary files /dev/null and b/server/src/samples/bcb9be.jpg differ diff --git a/server/src/samples/bcc29c.jpg b/server/src/samples/bcc29c.jpg new file mode 100644 index 0000000..8e973aa Binary files /dev/null and b/server/src/samples/bcc29c.jpg differ diff --git a/server/src/samples/bd8443.jpg b/server/src/samples/bd8443.jpg new file mode 100644 index 0000000..70bad9a Binary files /dev/null and b/server/src/samples/bd8443.jpg differ diff --git a/server/src/samples/bd8c46.jpg b/server/src/samples/bd8c46.jpg new file mode 100644 index 0000000..37845e4 Binary files /dev/null and b/server/src/samples/bd8c46.jpg differ diff --git a/server/src/samples/bd902b.jpg b/server/src/samples/bd902b.jpg new file mode 100644 index 0000000..c410d48 Binary files /dev/null and b/server/src/samples/bd902b.jpg differ diff --git a/server/src/samples/bda452.jpg b/server/src/samples/bda452.jpg new file mode 100644 index 0000000..d324af8 Binary files /dev/null and b/server/src/samples/bda452.jpg differ diff --git a/server/src/samples/bdab84.jpg b/server/src/samples/bdab84.jpg new file mode 100644 index 0000000..384abab Binary files /dev/null and b/server/src/samples/bdab84.jpg differ diff --git a/server/src/samples/be5531.jpg b/server/src/samples/be5531.jpg new file mode 100644 index 0000000..1b510d9 Binary files /dev/null and b/server/src/samples/be5531.jpg differ diff --git a/server/src/samples/be7330.jpg b/server/src/samples/be7330.jpg new file mode 100644 index 0000000..f0d5a48 Binary files /dev/null and b/server/src/samples/be7330.jpg differ diff --git a/server/src/samples/be7a2f.jpg b/server/src/samples/be7a2f.jpg new file mode 100644 index 0000000..92772fa Binary files /dev/null and b/server/src/samples/be7a2f.jpg differ diff --git a/server/src/samples/be7e28.jpg b/server/src/samples/be7e28.jpg new file mode 100644 index 0000000..48b26ca Binary files /dev/null and b/server/src/samples/be7e28.jpg differ diff --git a/server/src/samples/be8355.jpg b/server/src/samples/be8355.jpg new file mode 100644 index 0000000..74eb27e Binary files /dev/null and b/server/src/samples/be8355.jpg differ diff --git a/server/src/samples/be872d.jpg b/server/src/samples/be872d.jpg new file mode 100644 index 0000000..f9cbcf4 Binary files /dev/null and b/server/src/samples/be872d.jpg differ diff --git a/server/src/samples/be8829.jpg b/server/src/samples/be8829.jpg new file mode 100644 index 0000000..414d803 Binary files /dev/null and b/server/src/samples/be8829.jpg differ diff --git a/server/src/samples/be9876.jpg b/server/src/samples/be9876.jpg new file mode 100644 index 0000000..24b6825 Binary files /dev/null and b/server/src/samples/be9876.jpg differ diff --git a/server/src/samples/be9e48.jpg b/server/src/samples/be9e48.jpg new file mode 100644 index 0000000..2e14bef Binary files /dev/null and b/server/src/samples/be9e48.jpg differ diff --git a/server/src/samples/bea043.jpg b/server/src/samples/bea043.jpg new file mode 100644 index 0000000..7373778 Binary files /dev/null and b/server/src/samples/bea043.jpg differ diff --git a/server/src/samples/bea451.jpg b/server/src/samples/bea451.jpg new file mode 100644 index 0000000..e1079f8 Binary files /dev/null and b/server/src/samples/bea451.jpg differ diff --git a/server/src/samples/beaa79.jpg b/server/src/samples/beaa79.jpg new file mode 100644 index 0000000..02d9049 Binary files /dev/null and b/server/src/samples/beaa79.jpg differ diff --git a/server/src/samples/beb98a.jpg b/server/src/samples/beb98a.jpg new file mode 100644 index 0000000..e41e3fe Binary files /dev/null and b/server/src/samples/beb98a.jpg differ diff --git a/server/src/samples/bec298.jpg b/server/src/samples/bec298.jpg new file mode 100644 index 0000000..638e76c Binary files /dev/null and b/server/src/samples/bec298.jpg differ diff --git a/server/src/samples/becbb2.jpg b/server/src/samples/becbb2.jpg new file mode 100644 index 0000000..6c8b15a Binary files /dev/null and b/server/src/samples/becbb2.jpg differ diff --git a/server/src/samples/bf6d24.jpg b/server/src/samples/bf6d24.jpg new file mode 100644 index 0000000..f133de1 Binary files /dev/null and b/server/src/samples/bf6d24.jpg differ diff --git a/server/src/samples/bf8853.jpg b/server/src/samples/bf8853.jpg new file mode 100644 index 0000000..9c7b7ee Binary files /dev/null and b/server/src/samples/bf8853.jpg differ diff --git a/server/src/samples/bf8d32.jpg b/server/src/samples/bf8d32.jpg new file mode 100644 index 0000000..b3d9f45 Binary files /dev/null and b/server/src/samples/bf8d32.jpg differ diff --git a/server/src/samples/bf9871.jpg b/server/src/samples/bf9871.jpg new file mode 100644 index 0000000..7af130b Binary files /dev/null and b/server/src/samples/bf9871.jpg differ diff --git a/server/src/samples/bf9a6d.jpg b/server/src/samples/bf9a6d.jpg new file mode 100644 index 0000000..6e61cd2 Binary files /dev/null and b/server/src/samples/bf9a6d.jpg differ diff --git a/server/src/samples/bf9e3f.jpg b/server/src/samples/bf9e3f.jpg new file mode 100644 index 0000000..b91591f Binary files /dev/null and b/server/src/samples/bf9e3f.jpg differ diff --git a/server/src/samples/bfa065.jpg b/server/src/samples/bfa065.jpg new file mode 100644 index 0000000..2506b9b Binary files /dev/null and b/server/src/samples/bfa065.jpg differ diff --git a/server/src/samples/bfa383.jpg b/server/src/samples/bfa383.jpg new file mode 100644 index 0000000..074818e Binary files /dev/null and b/server/src/samples/bfa383.jpg differ diff --git a/server/src/samples/bfa862.jpg b/server/src/samples/bfa862.jpg new file mode 100644 index 0000000..f2152e4 Binary files /dev/null and b/server/src/samples/bfa862.jpg differ diff --git a/server/src/samples/bfaa59.jpg b/server/src/samples/bfaa59.jpg new file mode 100644 index 0000000..db35941 Binary files /dev/null and b/server/src/samples/bfaa59.jpg differ diff --git a/server/src/samples/c05d3e.jpg b/server/src/samples/c05d3e.jpg new file mode 100644 index 0000000..d821b37 Binary files /dev/null and b/server/src/samples/c05d3e.jpg differ diff --git a/server/src/samples/c0754c.jpg b/server/src/samples/c0754c.jpg new file mode 100644 index 0000000..a961356 Binary files /dev/null and b/server/src/samples/c0754c.jpg differ diff --git a/server/src/samples/c07a44.jpg b/server/src/samples/c07a44.jpg new file mode 100644 index 0000000..a122390 Binary files /dev/null and b/server/src/samples/c07a44.jpg differ diff --git a/server/src/samples/c07c39.jpg b/server/src/samples/c07c39.jpg new file mode 100644 index 0000000..2715b73 Binary files /dev/null and b/server/src/samples/c07c39.jpg differ diff --git a/server/src/samples/c07d4f.jpg b/server/src/samples/c07d4f.jpg new file mode 100644 index 0000000..6ceb208 Binary files /dev/null and b/server/src/samples/c07d4f.jpg differ diff --git a/server/src/samples/c0862f.jpg b/server/src/samples/c0862f.jpg new file mode 100644 index 0000000..fd13af0 Binary files /dev/null and b/server/src/samples/c0862f.jpg differ diff --git a/server/src/samples/c08b2e.jpg b/server/src/samples/c08b2e.jpg new file mode 100644 index 0000000..3fcca21 Binary files /dev/null and b/server/src/samples/c08b2e.jpg differ diff --git a/server/src/samples/c09198.jpg b/server/src/samples/c09198.jpg new file mode 100644 index 0000000..dd88014 Binary files /dev/null and b/server/src/samples/c09198.jpg differ diff --git a/server/src/samples/c0949d.jpg b/server/src/samples/c0949d.jpg new file mode 100644 index 0000000..cdaf070 Binary files /dev/null and b/server/src/samples/c0949d.jpg differ diff --git a/server/src/samples/c09735.jpg b/server/src/samples/c09735.jpg new file mode 100644 index 0000000..1f5df1e Binary files /dev/null and b/server/src/samples/c09735.jpg differ diff --git a/server/src/samples/c09739.jpg b/server/src/samples/c09739.jpg new file mode 100644 index 0000000..8b3d3f3 Binary files /dev/null and b/server/src/samples/c09739.jpg differ diff --git a/server/src/samples/c09e4a.jpg b/server/src/samples/c09e4a.jpg new file mode 100644 index 0000000..532441a Binary files /dev/null and b/server/src/samples/c09e4a.jpg differ diff --git a/server/src/samples/c0a751.jpg b/server/src/samples/c0a751.jpg new file mode 100644 index 0000000..38152d6 Binary files /dev/null and b/server/src/samples/c0a751.jpg differ diff --git a/server/src/samples/c0ab58.jpg b/server/src/samples/c0ab58.jpg new file mode 100644 index 0000000..a1f4721 Binary files /dev/null and b/server/src/samples/c0ab58.jpg differ diff --git a/server/src/samples/c17e32.jpg b/server/src/samples/c17e32.jpg new file mode 100644 index 0000000..6a096e0 Binary files /dev/null and b/server/src/samples/c17e32.jpg differ diff --git a/server/src/samples/c18b59.jpg b/server/src/samples/c18b59.jpg new file mode 100644 index 0000000..46507b4 Binary files /dev/null and b/server/src/samples/c18b59.jpg differ diff --git a/server/src/samples/c18e5e.jpg b/server/src/samples/c18e5e.jpg new file mode 100644 index 0000000..e9cbdc2 Binary files /dev/null and b/server/src/samples/c18e5e.jpg differ diff --git a/server/src/samples/c19e35.jpg b/server/src/samples/c19e35.jpg new file mode 100644 index 0000000..78d630c Binary files /dev/null and b/server/src/samples/c19e35.jpg differ diff --git a/server/src/samples/c1a54d.jpg b/server/src/samples/c1a54d.jpg new file mode 100644 index 0000000..5dd4b74 Binary files /dev/null and b/server/src/samples/c1a54d.jpg differ diff --git a/server/src/samples/c1a873.jpg b/server/src/samples/c1a873.jpg new file mode 100644 index 0000000..505dacb Binary files /dev/null and b/server/src/samples/c1a873.jpg differ diff --git a/server/src/samples/c1ac5c.jpg b/server/src/samples/c1ac5c.jpg new file mode 100644 index 0000000..28ea154 Binary files /dev/null and b/server/src/samples/c1ac5c.jpg differ diff --git a/server/src/samples/c28321.jpg b/server/src/samples/c28321.jpg new file mode 100644 index 0000000..12e2ae2 Binary files /dev/null and b/server/src/samples/c28321.jpg differ diff --git a/server/src/samples/c29231.jpg b/server/src/samples/c29231.jpg new file mode 100644 index 0000000..de7f717 Binary files /dev/null and b/server/src/samples/c29231.jpg differ diff --git a/server/src/samples/c29f3d.jpg b/server/src/samples/c29f3d.jpg new file mode 100644 index 0000000..99881c4 Binary files /dev/null and b/server/src/samples/c29f3d.jpg differ diff --git a/server/src/samples/c29f5c.jpg b/server/src/samples/c29f5c.jpg new file mode 100644 index 0000000..c7a8287 Binary files /dev/null and b/server/src/samples/c29f5c.jpg differ diff --git a/server/src/samples/c2a451.jpg b/server/src/samples/c2a451.jpg new file mode 100644 index 0000000..a26ff98 Binary files /dev/null and b/server/src/samples/c2a451.jpg differ diff --git a/server/src/samples/c2cfb5.jpg b/server/src/samples/c2cfb5.jpg new file mode 100644 index 0000000..7eceafe Binary files /dev/null and b/server/src/samples/c2cfb5.jpg differ diff --git a/server/src/samples/c35b3c.jpg b/server/src/samples/c35b3c.jpg new file mode 100644 index 0000000..10ba8dc Binary files /dev/null and b/server/src/samples/c35b3c.jpg differ diff --git a/server/src/samples/c37f47.jpg b/server/src/samples/c37f47.jpg new file mode 100644 index 0000000..a7f4378 Binary files /dev/null and b/server/src/samples/c37f47.jpg differ diff --git a/server/src/samples/c3882f.jpg b/server/src/samples/c3882f.jpg new file mode 100644 index 0000000..2690762 Binary files /dev/null and b/server/src/samples/c3882f.jpg differ diff --git a/server/src/samples/c38b2a.jpg b/server/src/samples/c38b2a.jpg new file mode 100644 index 0000000..d34905e Binary files /dev/null and b/server/src/samples/c38b2a.jpg differ diff --git a/server/src/samples/c39368.jpg b/server/src/samples/c39368.jpg new file mode 100644 index 0000000..e81ea5e Binary files /dev/null and b/server/src/samples/c39368.jpg differ diff --git a/server/src/samples/c39585.jpg b/server/src/samples/c39585.jpg new file mode 100644 index 0000000..dd6bf5a Binary files /dev/null and b/server/src/samples/c39585.jpg differ diff --git a/server/src/samples/c39a40.jpg b/server/src/samples/c39a40.jpg new file mode 100644 index 0000000..a0ccd58 Binary files /dev/null and b/server/src/samples/c39a40.jpg differ diff --git a/server/src/samples/c3a544.jpg b/server/src/samples/c3a544.jpg new file mode 100644 index 0000000..8f43117 Binary files /dev/null and b/server/src/samples/c3a544.jpg differ diff --git a/server/src/samples/c3a57a.jpg b/server/src/samples/c3a57a.jpg new file mode 100644 index 0000000..c295aa9 Binary files /dev/null and b/server/src/samples/c3a57a.jpg differ diff --git a/server/src/samples/c3a64d.jpg b/server/src/samples/c3a64d.jpg new file mode 100644 index 0000000..2753aec Binary files /dev/null and b/server/src/samples/c3a64d.jpg differ diff --git a/server/src/samples/c3a862.jpg b/server/src/samples/c3a862.jpg new file mode 100644 index 0000000..c094c51 Binary files /dev/null and b/server/src/samples/c3a862.jpg differ diff --git a/server/src/samples/c3b381.jpg b/server/src/samples/c3b381.jpg new file mode 100644 index 0000000..6e25c7d Binary files /dev/null and b/server/src/samples/c3b381.jpg differ diff --git a/server/src/samples/c47b1c.jpg b/server/src/samples/c47b1c.jpg new file mode 100644 index 0000000..d068f1b Binary files /dev/null and b/server/src/samples/c47b1c.jpg differ diff --git a/server/src/samples/c4a249.jpg b/server/src/samples/c4a249.jpg new file mode 100644 index 0000000..3c40a00 Binary files /dev/null and b/server/src/samples/c4a249.jpg differ diff --git a/server/src/samples/c4a75c.jpg b/server/src/samples/c4a75c.jpg new file mode 100644 index 0000000..e019be5 Binary files /dev/null and b/server/src/samples/c4a75c.jpg differ diff --git a/server/src/samples/c4a84d.jpg b/server/src/samples/c4a84d.jpg new file mode 100644 index 0000000..d5fd9f0 Binary files /dev/null and b/server/src/samples/c4a84d.jpg differ diff --git a/server/src/samples/c4a986.jpg b/server/src/samples/c4a986.jpg new file mode 100644 index 0000000..4a33f25 Binary files /dev/null and b/server/src/samples/c4a986.jpg differ diff --git a/server/src/samples/c4ac78.jpg b/server/src/samples/c4ac78.jpg new file mode 100644 index 0000000..16760b4 Binary files /dev/null and b/server/src/samples/c4ac78.jpg differ diff --git a/server/src/samples/c5674d.jpg b/server/src/samples/c5674d.jpg new file mode 100644 index 0000000..68359ad Binary files /dev/null and b/server/src/samples/c5674d.jpg differ diff --git a/server/src/samples/c58b35.jpg b/server/src/samples/c58b35.jpg new file mode 100644 index 0000000..b682058 Binary files /dev/null and b/server/src/samples/c58b35.jpg differ diff --git a/server/src/samples/c58c2c.jpg b/server/src/samples/c58c2c.jpg new file mode 100644 index 0000000..fd9a761 Binary files /dev/null and b/server/src/samples/c58c2c.jpg differ diff --git a/server/src/samples/c5a33f.jpg b/server/src/samples/c5a33f.jpg new file mode 100644 index 0000000..b20d053 Binary files /dev/null and b/server/src/samples/c5a33f.jpg differ diff --git a/server/src/samples/c5a956.jpg b/server/src/samples/c5a956.jpg new file mode 100644 index 0000000..b6e2fa7 Binary files /dev/null and b/server/src/samples/c5a956.jpg differ diff --git a/server/src/samples/c5b177.jpg b/server/src/samples/c5b177.jpg new file mode 100644 index 0000000..e437f6e Binary files /dev/null and b/server/src/samples/c5b177.jpg differ diff --git a/server/src/samples/c5b697.jpg b/server/src/samples/c5b697.jpg new file mode 100644 index 0000000..469d2b8 Binary files /dev/null and b/server/src/samples/c5b697.jpg differ diff --git a/server/src/samples/c5c776.jpg b/server/src/samples/c5c776.jpg new file mode 100644 index 0000000..a6f88e7 Binary files /dev/null and b/server/src/samples/c5c776.jpg differ diff --git a/server/src/samples/c67634.jpg b/server/src/samples/c67634.jpg new file mode 100644 index 0000000..5fa2ea4 Binary files /dev/null and b/server/src/samples/c67634.jpg differ diff --git a/server/src/samples/c6b686.jpg b/server/src/samples/c6b686.jpg new file mode 100644 index 0000000..3da4209 Binary files /dev/null and b/server/src/samples/c6b686.jpg differ diff --git a/server/src/samples/c76e4a.jpg b/server/src/samples/c76e4a.jpg new file mode 100644 index 0000000..7e031e9 Binary files /dev/null and b/server/src/samples/c76e4a.jpg differ diff --git a/server/src/samples/c78a59.jpg b/server/src/samples/c78a59.jpg new file mode 100644 index 0000000..8e0f290 Binary files /dev/null and b/server/src/samples/c78a59.jpg differ diff --git a/server/src/samples/c78b24.jpg b/server/src/samples/c78b24.jpg new file mode 100644 index 0000000..2623304 Binary files /dev/null and b/server/src/samples/c78b24.jpg differ diff --git a/server/src/samples/c78c23.jpg b/server/src/samples/c78c23.jpg new file mode 100644 index 0000000..176d5dd Binary files /dev/null and b/server/src/samples/c78c23.jpg differ diff --git a/server/src/samples/c78e2d.jpg b/server/src/samples/c78e2d.jpg new file mode 100644 index 0000000..dc46881 Binary files /dev/null and b/server/src/samples/c78e2d.jpg differ diff --git a/server/src/samples/c7a84b.jpg b/server/src/samples/c7a84b.jpg new file mode 100644 index 0000000..c5fa36c Binary files /dev/null and b/server/src/samples/c7a84b.jpg differ diff --git a/server/src/samples/c7b683.jpg b/server/src/samples/c7b683.jpg new file mode 100644 index 0000000..8b63c67 Binary files /dev/null and b/server/src/samples/c7b683.jpg differ diff --git a/server/src/samples/c86646.jpg b/server/src/samples/c86646.jpg new file mode 100644 index 0000000..1f8207a Binary files /dev/null and b/server/src/samples/c86646.jpg differ diff --git a/server/src/samples/c8751b.jpg b/server/src/samples/c8751b.jpg new file mode 100644 index 0000000..e4f9bf7 Binary files /dev/null and b/server/src/samples/c8751b.jpg differ diff --git a/server/src/samples/c8b26b.jpg b/server/src/samples/c8b26b.jpg new file mode 100644 index 0000000..dceff76 Binary files /dev/null and b/server/src/samples/c8b26b.jpg differ diff --git a/server/src/samples/c8b468.jpg b/server/src/samples/c8b468.jpg new file mode 100644 index 0000000..08d8659 Binary files /dev/null and b/server/src/samples/c8b468.jpg differ diff --git a/server/src/samples/c8b58f.jpg b/server/src/samples/c8b58f.jpg new file mode 100644 index 0000000..a695779 Binary files /dev/null and b/server/src/samples/c8b58f.jpg differ diff --git a/server/src/samples/c96e2c.jpg b/server/src/samples/c96e2c.jpg new file mode 100644 index 0000000..e7a8344 Binary files /dev/null and b/server/src/samples/c96e2c.jpg differ diff --git a/server/src/samples/c96e33.jpg b/server/src/samples/c96e33.jpg new file mode 100644 index 0000000..1b2afe6 Binary files /dev/null and b/server/src/samples/c96e33.jpg differ diff --git a/server/src/samples/c98e34.jpg b/server/src/samples/c98e34.jpg new file mode 100644 index 0000000..b121f02 Binary files /dev/null and b/server/src/samples/c98e34.jpg differ diff --git a/server/src/samples/c98f2d.jpg b/server/src/samples/c98f2d.jpg new file mode 100644 index 0000000..1e020b9 Binary files /dev/null and b/server/src/samples/c98f2d.jpg differ diff --git a/server/src/samples/c9953f.jpg b/server/src/samples/c9953f.jpg new file mode 100644 index 0000000..8ee0f7d Binary files /dev/null and b/server/src/samples/c9953f.jpg differ diff --git a/server/src/samples/c9a955.jpg b/server/src/samples/c9a955.jpg new file mode 100644 index 0000000..78bb0b2 Binary files /dev/null and b/server/src/samples/c9a955.jpg differ diff --git a/server/src/samples/c9b35f.jpg b/server/src/samples/c9b35f.jpg new file mode 100644 index 0000000..f7d738e Binary files /dev/null and b/server/src/samples/c9b35f.jpg differ diff --git a/server/src/samples/c9c495.jpg b/server/src/samples/c9c495.jpg new file mode 100644 index 0000000..06acb6b Binary files /dev/null and b/server/src/samples/c9c495.jpg differ diff --git a/server/src/samples/ca8d59.jpg b/server/src/samples/ca8d59.jpg new file mode 100644 index 0000000..8e2b186 Binary files /dev/null and b/server/src/samples/ca8d59.jpg differ diff --git a/server/src/samples/ca8f49.jpg b/server/src/samples/ca8f49.jpg new file mode 100644 index 0000000..abdfb11 Binary files /dev/null and b/server/src/samples/ca8f49.jpg differ diff --git a/server/src/samples/ca943f.jpg b/server/src/samples/ca943f.jpg new file mode 100644 index 0000000..dcce5f3 Binary files /dev/null and b/server/src/samples/ca943f.jpg differ diff --git a/server/src/samples/caa863.jpg b/server/src/samples/caa863.jpg new file mode 100644 index 0000000..2172147 Binary files /dev/null and b/server/src/samples/caa863.jpg differ diff --git a/server/src/samples/caaf62.jpg b/server/src/samples/caaf62.jpg new file mode 100644 index 0000000..bf98eea Binary files /dev/null and b/server/src/samples/caaf62.jpg differ diff --git a/server/src/samples/cab978.jpg b/server/src/samples/cab978.jpg new file mode 100644 index 0000000..74740ba Binary files /dev/null and b/server/src/samples/cab978.jpg differ diff --git a/server/src/samples/cab98c.jpg b/server/src/samples/cab98c.jpg new file mode 100644 index 0000000..097455d Binary files /dev/null and b/server/src/samples/cab98c.jpg differ diff --git a/server/src/samples/cab997.jpg b/server/src/samples/cab997.jpg new file mode 100644 index 0000000..5f067ef Binary files /dev/null and b/server/src/samples/cab997.jpg differ diff --git a/server/src/samples/cac1c3.jpg b/server/src/samples/cac1c3.jpg new file mode 100644 index 0000000..54e7ed0 Binary files /dev/null and b/server/src/samples/cac1c3.jpg differ diff --git a/server/src/samples/cad3bb.jpg b/server/src/samples/cad3bb.jpg new file mode 100644 index 0000000..b0efc2f Binary files /dev/null and b/server/src/samples/cad3bb.jpg differ diff --git a/server/src/samples/cb8427.jpg b/server/src/samples/cb8427.jpg new file mode 100644 index 0000000..ca6cd8e Binary files /dev/null and b/server/src/samples/cb8427.jpg differ diff --git a/server/src/samples/cb8727.jpg b/server/src/samples/cb8727.jpg new file mode 100644 index 0000000..60db904 Binary files /dev/null and b/server/src/samples/cb8727.jpg differ diff --git a/server/src/samples/cb8b2c.jpg b/server/src/samples/cb8b2c.jpg new file mode 100644 index 0000000..f20db44 Binary files /dev/null and b/server/src/samples/cb8b2c.jpg differ diff --git a/server/src/samples/cb9138.jpg b/server/src/samples/cb9138.jpg new file mode 100644 index 0000000..5d97535 Binary files /dev/null and b/server/src/samples/cb9138.jpg differ diff --git a/server/src/samples/cbad8a.jpg b/server/src/samples/cbad8a.jpg new file mode 100644 index 0000000..e5db3dc Binary files /dev/null and b/server/src/samples/cbad8a.jpg differ diff --git a/server/src/samples/cbbc83.jpg b/server/src/samples/cbbc83.jpg new file mode 100644 index 0000000..e31c542 Binary files /dev/null and b/server/src/samples/cbbc83.jpg differ diff --git a/server/src/samples/cbbc8b.jpg b/server/src/samples/cbbc8b.jpg new file mode 100644 index 0000000..2cdc8a1 Binary files /dev/null and b/server/src/samples/cbbc8b.jpg differ diff --git a/server/src/samples/cbd5bd.jpg b/server/src/samples/cbd5bd.jpg new file mode 100644 index 0000000..d2fa019 Binary files /dev/null and b/server/src/samples/cbd5bd.jpg differ diff --git a/server/src/samples/cc933b.jpg b/server/src/samples/cc933b.jpg new file mode 100644 index 0000000..78d41cf Binary files /dev/null and b/server/src/samples/cc933b.jpg differ diff --git a/server/src/samples/ccb084.jpg b/server/src/samples/ccb084.jpg new file mode 100644 index 0000000..0b9e5aa Binary files /dev/null and b/server/src/samples/ccb084.jpg differ diff --git a/server/src/samples/ccb486.jpg b/server/src/samples/ccb486.jpg new file mode 100644 index 0000000..69d3bfb Binary files /dev/null and b/server/src/samples/ccb486.jpg differ diff --git a/server/src/samples/ccbc72.jpg b/server/src/samples/ccbc72.jpg new file mode 100644 index 0000000..bc221f1 Binary files /dev/null and b/server/src/samples/ccbc72.jpg differ diff --git a/server/src/samples/ccd2b8.jpg b/server/src/samples/ccd2b8.jpg new file mode 100644 index 0000000..47508ec Binary files /dev/null and b/server/src/samples/ccd2b8.jpg differ diff --git a/server/src/samples/cd8926.jpg b/server/src/samples/cd8926.jpg new file mode 100644 index 0000000..81fe731 Binary files /dev/null and b/server/src/samples/cd8926.jpg differ diff --git a/server/src/samples/cd8b5a.jpg b/server/src/samples/cd8b5a.jpg new file mode 100644 index 0000000..a9ca83d Binary files /dev/null and b/server/src/samples/cd8b5a.jpg differ diff --git a/server/src/samples/cd8d27.jpg b/server/src/samples/cd8d27.jpg new file mode 100644 index 0000000..2fba104 Binary files /dev/null and b/server/src/samples/cd8d27.jpg differ diff --git a/server/src/samples/cd912f.jpg b/server/src/samples/cd912f.jpg new file mode 100644 index 0000000..9d9fd1f Binary files /dev/null and b/server/src/samples/cd912f.jpg differ diff --git a/server/src/samples/cd9e41.jpg b/server/src/samples/cd9e41.jpg new file mode 100644 index 0000000..c297cda Binary files /dev/null and b/server/src/samples/cd9e41.jpg differ diff --git a/server/src/samples/cda24b.jpg b/server/src/samples/cda24b.jpg new file mode 100644 index 0000000..cd909e6 Binary files /dev/null and b/server/src/samples/cda24b.jpg differ diff --git a/server/src/samples/cdac5e.jpg b/server/src/samples/cdac5e.jpg new file mode 100644 index 0000000..c0063fe Binary files /dev/null and b/server/src/samples/cdac5e.jpg differ diff --git a/server/src/samples/cdac81.jpg b/server/src/samples/cdac81.jpg new file mode 100644 index 0000000..485c72f Binary files /dev/null and b/server/src/samples/cdac81.jpg differ diff --git a/server/src/samples/cdaf4d.jpg b/server/src/samples/cdaf4d.jpg new file mode 100644 index 0000000..fa8035b Binary files /dev/null and b/server/src/samples/cdaf4d.jpg differ diff --git a/server/src/samples/cdb65c.jpg b/server/src/samples/cdb65c.jpg new file mode 100644 index 0000000..4c41172 Binary files /dev/null and b/server/src/samples/cdb65c.jpg differ diff --git a/server/src/samples/cdb777.jpg b/server/src/samples/cdb777.jpg new file mode 100644 index 0000000..b9f3f0c Binary files /dev/null and b/server/src/samples/cdb777.jpg differ diff --git a/server/src/samples/cdbe77.jpg b/server/src/samples/cdbe77.jpg new file mode 100644 index 0000000..d300eec Binary files /dev/null and b/server/src/samples/cdbe77.jpg differ diff --git a/server/src/samples/cdd2b8.jpg b/server/src/samples/cdd2b8.jpg new file mode 100644 index 0000000..5b2f853 Binary files /dev/null and b/server/src/samples/cdd2b8.jpg differ diff --git a/server/src/samples/ce7837.jpg b/server/src/samples/ce7837.jpg new file mode 100644 index 0000000..0f3d71f Binary files /dev/null and b/server/src/samples/ce7837.jpg differ diff --git a/server/src/samples/ce783d.jpg b/server/src/samples/ce783d.jpg new file mode 100644 index 0000000..a611d24 Binary files /dev/null and b/server/src/samples/ce783d.jpg differ diff --git a/server/src/samples/ce8826.jpg b/server/src/samples/ce8826.jpg new file mode 100644 index 0000000..38b6ea9 Binary files /dev/null and b/server/src/samples/ce8826.jpg differ diff --git a/server/src/samples/ce9150.jpg b/server/src/samples/ce9150.jpg new file mode 100644 index 0000000..77be299 Binary files /dev/null and b/server/src/samples/ce9150.jpg differ diff --git a/server/src/samples/cebe70.jpg b/server/src/samples/cebe70.jpg new file mode 100644 index 0000000..9e3723f Binary files /dev/null and b/server/src/samples/cebe70.jpg differ diff --git a/server/src/samples/cf781b.jpg b/server/src/samples/cf781b.jpg new file mode 100644 index 0000000..d8c90c4 Binary files /dev/null and b/server/src/samples/cf781b.jpg differ diff --git a/server/src/samples/cf7836.jpg b/server/src/samples/cf7836.jpg new file mode 100644 index 0000000..6dafd9f Binary files /dev/null and b/server/src/samples/cf7836.jpg differ diff --git a/server/src/samples/cf922e.jpg b/server/src/samples/cf922e.jpg new file mode 100644 index 0000000..f30eb2f Binary files /dev/null and b/server/src/samples/cf922e.jpg differ diff --git a/server/src/samples/cfae3c.jpg b/server/src/samples/cfae3c.jpg new file mode 100644 index 0000000..78b2efc Binary files /dev/null and b/server/src/samples/cfae3c.jpg differ diff --git a/server/src/samples/cfb376.jpg b/server/src/samples/cfb376.jpg new file mode 100644 index 0000000..a110902 Binary files /dev/null and b/server/src/samples/cfb376.jpg differ diff --git a/server/src/samples/cfbf83.jpg b/server/src/samples/cfbf83.jpg new file mode 100644 index 0000000..b36bcc0 Binary files /dev/null and b/server/src/samples/cfbf83.jpg differ diff --git a/server/src/samples/d07a39.jpg b/server/src/samples/d07a39.jpg new file mode 100644 index 0000000..c8f1c1d Binary files /dev/null and b/server/src/samples/d07a39.jpg differ diff --git a/server/src/samples/d08a56.jpg b/server/src/samples/d08a56.jpg new file mode 100644 index 0000000..f4e8d0f Binary files /dev/null and b/server/src/samples/d08a56.jpg differ diff --git a/server/src/samples/d0ae49.jpg b/server/src/samples/d0ae49.jpg new file mode 100644 index 0000000..322f121 Binary files /dev/null and b/server/src/samples/d0ae49.jpg differ diff --git a/server/src/samples/d0b340.jpg b/server/src/samples/d0b340.jpg new file mode 100644 index 0000000..79c1567 Binary files /dev/null and b/server/src/samples/d0b340.jpg differ diff --git a/server/src/samples/d0b98b.jpg b/server/src/samples/d0b98b.jpg new file mode 100644 index 0000000..e2b3637 Binary files /dev/null and b/server/src/samples/d0b98b.jpg differ diff --git a/server/src/samples/d0ba62.jpg b/server/src/samples/d0ba62.jpg new file mode 100644 index 0000000..64bb076 Binary files /dev/null and b/server/src/samples/d0ba62.jpg differ diff --git a/server/src/samples/d19d70.jpg b/server/src/samples/d19d70.jpg new file mode 100644 index 0000000..9b8c8fd Binary files /dev/null and b/server/src/samples/d19d70.jpg differ diff --git a/server/src/samples/d1a849.jpg b/server/src/samples/d1a849.jpg new file mode 100644 index 0000000..942704d Binary files /dev/null and b/server/src/samples/d1a849.jpg differ diff --git a/server/src/samples/d1ab4d.jpg b/server/src/samples/d1ab4d.jpg new file mode 100644 index 0000000..790e6b0 Binary files /dev/null and b/server/src/samples/d1ab4d.jpg differ diff --git a/server/src/samples/d1ad50.jpg b/server/src/samples/d1ad50.jpg new file mode 100644 index 0000000..e5556e8 Binary files /dev/null and b/server/src/samples/d1ad50.jpg differ diff --git a/server/src/samples/d1b14a.jpg b/server/src/samples/d1b14a.jpg new file mode 100644 index 0000000..1376328 Binary files /dev/null and b/server/src/samples/d1b14a.jpg differ diff --git a/server/src/samples/d1b577.jpg b/server/src/samples/d1b577.jpg new file mode 100644 index 0000000..4099e00 Binary files /dev/null and b/server/src/samples/d1b577.jpg differ diff --git a/server/src/samples/d1b86c.jpg b/server/src/samples/d1b86c.jpg new file mode 100644 index 0000000..f8fa9c0 Binary files /dev/null and b/server/src/samples/d1b86c.jpg differ diff --git a/server/src/samples/d1c384.jpg b/server/src/samples/d1c384.jpg new file mode 100644 index 0000000..2e25703 Binary files /dev/null and b/server/src/samples/d1c384.jpg differ diff --git a/server/src/samples/d29c48.jpg b/server/src/samples/d29c48.jpg new file mode 100644 index 0000000..6cab31f Binary files /dev/null and b/server/src/samples/d29c48.jpg differ diff --git a/server/src/samples/d2a230.jpg b/server/src/samples/d2a230.jpg new file mode 100644 index 0000000..c68061a Binary files /dev/null and b/server/src/samples/d2a230.jpg differ diff --git a/server/src/samples/d2ac4d.jpg b/server/src/samples/d2ac4d.jpg new file mode 100644 index 0000000..4e04aab Binary files /dev/null and b/server/src/samples/d2ac4d.jpg differ diff --git a/server/src/samples/d2b88a.jpg b/server/src/samples/d2b88a.jpg new file mode 100644 index 0000000..e80ee13 Binary files /dev/null and b/server/src/samples/d2b88a.jpg differ diff --git a/server/src/samples/d2c38c.jpg b/server/src/samples/d2c38c.jpg new file mode 100644 index 0000000..46027f6 Binary files /dev/null and b/server/src/samples/d2c38c.jpg differ diff --git a/server/src/samples/d3791b.jpg b/server/src/samples/d3791b.jpg new file mode 100644 index 0000000..7c1a047 Binary files /dev/null and b/server/src/samples/d3791b.jpg differ diff --git a/server/src/samples/d4895f.jpg b/server/src/samples/d4895f.jpg new file mode 100644 index 0000000..6041caa Binary files /dev/null and b/server/src/samples/d4895f.jpg differ diff --git a/server/src/samples/d49b62.jpg b/server/src/samples/d49b62.jpg new file mode 100644 index 0000000..c84ed11 Binary files /dev/null and b/server/src/samples/d49b62.jpg differ diff --git a/server/src/samples/d4af4f.jpg b/server/src/samples/d4af4f.jpg new file mode 100644 index 0000000..75212a6 Binary files /dev/null and b/server/src/samples/d4af4f.jpg differ diff --git a/server/src/samples/d4bf71.jpg b/server/src/samples/d4bf71.jpg new file mode 100644 index 0000000..3f19723 Binary files /dev/null and b/server/src/samples/d4bf71.jpg differ diff --git a/server/src/samples/d4c779.jpg b/server/src/samples/d4c779.jpg new file mode 100644 index 0000000..467b05c Binary files /dev/null and b/server/src/samples/d4c779.jpg differ diff --git a/server/src/samples/d57a5b.jpg b/server/src/samples/d57a5b.jpg new file mode 100644 index 0000000..ef5ae66 Binary files /dev/null and b/server/src/samples/d57a5b.jpg differ diff --git a/server/src/samples/d5a376.jpg b/server/src/samples/d5a376.jpg new file mode 100644 index 0000000..2910de4 Binary files /dev/null and b/server/src/samples/d5a376.jpg differ diff --git a/server/src/samples/d5aa57.jpg b/server/src/samples/d5aa57.jpg new file mode 100644 index 0000000..be19d76 Binary files /dev/null and b/server/src/samples/d5aa57.jpg differ diff --git a/server/src/samples/d5b877.jpg b/server/src/samples/d5b877.jpg new file mode 100644 index 0000000..c6cee6a Binary files /dev/null and b/server/src/samples/d5b877.jpg differ diff --git a/server/src/samples/d5bc6f.jpg b/server/src/samples/d5bc6f.jpg new file mode 100644 index 0000000..5966e8a Binary files /dev/null and b/server/src/samples/d5bc6f.jpg differ diff --git a/server/src/samples/d5c09f.jpg b/server/src/samples/d5c09f.jpg new file mode 100644 index 0000000..7e54e18 Binary files /dev/null and b/server/src/samples/d5c09f.jpg differ diff --git a/server/src/samples/d5c170.jpg b/server/src/samples/d5c170.jpg new file mode 100644 index 0000000..ef37276 Binary files /dev/null and b/server/src/samples/d5c170.jpg differ diff --git a/server/src/samples/d5c678.jpg b/server/src/samples/d5c678.jpg new file mode 100644 index 0000000..1fdd330 Binary files /dev/null and b/server/src/samples/d5c678.jpg differ diff --git a/server/src/samples/d5c793.jpg b/server/src/samples/d5c793.jpg new file mode 100644 index 0000000..11310c1 Binary files /dev/null and b/server/src/samples/d5c793.jpg differ diff --git a/server/src/samples/d69649.jpg b/server/src/samples/d69649.jpg new file mode 100644 index 0000000..fbd99ae Binary files /dev/null and b/server/src/samples/d69649.jpg differ diff --git a/server/src/samples/d69b72.jpg b/server/src/samples/d69b72.jpg new file mode 100644 index 0000000..2b0cf9a Binary files /dev/null and b/server/src/samples/d69b72.jpg differ diff --git a/server/src/samples/d6b664.jpg b/server/src/samples/d6b664.jpg new file mode 100644 index 0000000..e156801 Binary files /dev/null and b/server/src/samples/d6b664.jpg differ diff --git a/server/src/samples/d6c3a9.jpg b/server/src/samples/d6c3a9.jpg new file mode 100644 index 0000000..c5205c2 Binary files /dev/null and b/server/src/samples/d6c3a9.jpg differ diff --git a/server/src/samples/d7b647.jpg b/server/src/samples/d7b647.jpg new file mode 100644 index 0000000..7e34767 Binary files /dev/null and b/server/src/samples/d7b647.jpg differ diff --git a/server/src/samples/d7c189.jpg b/server/src/samples/d7c189.jpg new file mode 100644 index 0000000..bb6c598 Binary files /dev/null and b/server/src/samples/d7c189.jpg differ diff --git a/server/src/samples/d7c797.jpg b/server/src/samples/d7c797.jpg new file mode 100644 index 0000000..a995d99 Binary files /dev/null and b/server/src/samples/d7c797.jpg differ diff --git a/server/src/samples/d8a677.jpg b/server/src/samples/d8a677.jpg new file mode 100644 index 0000000..789af81 Binary files /dev/null and b/server/src/samples/d8a677.jpg differ diff --git a/server/src/samples/d8ba4f.jpg b/server/src/samples/d8ba4f.jpg new file mode 100644 index 0000000..5099398 Binary files /dev/null and b/server/src/samples/d8ba4f.jpg differ diff --git a/server/src/samples/d8c27e.jpg b/server/src/samples/d8c27e.jpg new file mode 100644 index 0000000..3b85827 Binary files /dev/null and b/server/src/samples/d8c27e.jpg differ diff --git a/server/src/samples/d8c991.jpg b/server/src/samples/d8c991.jpg new file mode 100644 index 0000000..3703357 Binary files /dev/null and b/server/src/samples/d8c991.jpg differ diff --git a/server/src/samples/d8caa9.jpg b/server/src/samples/d8caa9.jpg new file mode 100644 index 0000000..fa433b5 Binary files /dev/null and b/server/src/samples/d8caa9.jpg differ diff --git a/server/src/samples/d9a268.jpg b/server/src/samples/d9a268.jpg new file mode 100644 index 0000000..c5e32f9 Binary files /dev/null and b/server/src/samples/d9a268.jpg differ diff --git a/server/src/samples/d9b849.jpg b/server/src/samples/d9b849.jpg new file mode 100644 index 0000000..857b371 Binary files /dev/null and b/server/src/samples/d9b849.jpg differ diff --git a/server/src/samples/d9cb9a.jpg b/server/src/samples/d9cb9a.jpg new file mode 100644 index 0000000..2226e15 Binary files /dev/null and b/server/src/samples/d9cb9a.jpg differ diff --git a/server/src/samples/d9cc65.jpg b/server/src/samples/d9cc65.jpg new file mode 100644 index 0000000..d142356 Binary files /dev/null and b/server/src/samples/d9cc65.jpg differ diff --git a/server/src/samples/daa456.jpg b/server/src/samples/daa456.jpg new file mode 100644 index 0000000..9ba756a Binary files /dev/null and b/server/src/samples/daa456.jpg differ diff --git a/server/src/samples/dab948.jpg b/server/src/samples/dab948.jpg new file mode 100644 index 0000000..98659cb Binary files /dev/null and b/server/src/samples/dab948.jpg differ diff --git a/server/src/samples/dabb4b.jpg b/server/src/samples/dabb4b.jpg new file mode 100644 index 0000000..2dd3aa3 Binary files /dev/null and b/server/src/samples/dabb4b.jpg differ diff --git a/server/src/samples/dac66f.jpg b/server/src/samples/dac66f.jpg new file mode 100644 index 0000000..ddf2c39 Binary files /dev/null and b/server/src/samples/dac66f.jpg differ diff --git a/server/src/samples/dac8a4.jpg b/server/src/samples/dac8a4.jpg new file mode 100644 index 0000000..0d1dbca Binary files /dev/null and b/server/src/samples/dac8a4.jpg differ diff --git a/server/src/samples/daca75.jpg b/server/src/samples/daca75.jpg new file mode 100644 index 0000000..95ba2c2 Binary files /dev/null and b/server/src/samples/daca75.jpg differ diff --git a/server/src/samples/dacc9a.jpg b/server/src/samples/dacc9a.jpg new file mode 100644 index 0000000..e6e5ad5 Binary files /dev/null and b/server/src/samples/dacc9a.jpg differ diff --git a/server/src/samples/dace67.jpg b/server/src/samples/dace67.jpg new file mode 100644 index 0000000..6bf726b Binary files /dev/null and b/server/src/samples/dace67.jpg differ diff --git a/server/src/samples/db9a7c.jpg b/server/src/samples/db9a7c.jpg new file mode 100644 index 0000000..d8ab13c Binary files /dev/null and b/server/src/samples/db9a7c.jpg differ diff --git a/server/src/samples/dbba4c.jpg b/server/src/samples/dbba4c.jpg new file mode 100644 index 0000000..37ed053 Binary files /dev/null and b/server/src/samples/dbba4c.jpg differ diff --git a/server/src/samples/dbca80.jpg b/server/src/samples/dbca80.jpg new file mode 100644 index 0000000..bbf1fdf Binary files /dev/null and b/server/src/samples/dbca80.jpg differ diff --git a/server/src/samples/dbce69.jpg b/server/src/samples/dbce69.jpg new file mode 100644 index 0000000..e5e8e73 Binary files /dev/null and b/server/src/samples/dbce69.jpg differ diff --git a/server/src/samples/dbd07c.jpg b/server/src/samples/dbd07c.jpg new file mode 100644 index 0000000..6fd4694 Binary files /dev/null and b/server/src/samples/dbd07c.jpg differ diff --git a/server/src/samples/dcbf6f.jpg b/server/src/samples/dcbf6f.jpg new file mode 100644 index 0000000..8805255 Binary files /dev/null and b/server/src/samples/dcbf6f.jpg differ diff --git a/server/src/samples/dcc267.jpg b/server/src/samples/dcc267.jpg new file mode 100644 index 0000000..8e22d5b Binary files /dev/null and b/server/src/samples/dcc267.jpg differ diff --git a/server/src/samples/dcd068.jpg b/server/src/samples/dcd068.jpg new file mode 100644 index 0000000..5614334 Binary files /dev/null and b/server/src/samples/dcd068.jpg differ diff --git a/server/src/samples/ddb784.jpg b/server/src/samples/ddb784.jpg new file mode 100644 index 0000000..550a565 Binary files /dev/null and b/server/src/samples/ddb784.jpg differ diff --git a/server/src/samples/ddc663.jpg b/server/src/samples/ddc663.jpg new file mode 100644 index 0000000..01e417a Binary files /dev/null and b/server/src/samples/ddc663.jpg differ diff --git a/server/src/samples/ddd069.jpg b/server/src/samples/ddd069.jpg new file mode 100644 index 0000000..fb63317 Binary files /dev/null and b/server/src/samples/ddd069.jpg differ diff --git a/server/src/samples/dea94f.jpg b/server/src/samples/dea94f.jpg new file mode 100644 index 0000000..c03ea4e Binary files /dev/null and b/server/src/samples/dea94f.jpg differ diff --git a/server/src/samples/decfa8.jpg b/server/src/samples/decfa8.jpg new file mode 100644 index 0000000..ec831c6 Binary files /dev/null and b/server/src/samples/decfa8.jpg differ diff --git a/server/src/samples/ded18c.jpg b/server/src/samples/ded18c.jpg new file mode 100644 index 0000000..9c36ec2 Binary files /dev/null and b/server/src/samples/ded18c.jpg differ diff --git a/server/src/samples/ded1a5.jpg b/server/src/samples/ded1a5.jpg new file mode 100644 index 0000000..447c9b5 Binary files /dev/null and b/server/src/samples/ded1a5.jpg differ diff --git a/server/src/samples/ded298.jpg b/server/src/samples/ded298.jpg new file mode 100644 index 0000000..28cd38c Binary files /dev/null and b/server/src/samples/ded298.jpg differ diff --git a/server/src/samples/e0c980.jpg b/server/src/samples/e0c980.jpg new file mode 100644 index 0000000..74b5aab Binary files /dev/null and b/server/src/samples/e0c980.jpg differ diff --git a/server/src/samples/e0d2a5.jpg b/server/src/samples/e0d2a5.jpg new file mode 100644 index 0000000..02be2b7 Binary files /dev/null and b/server/src/samples/e0d2a5.jpg differ diff --git a/server/src/samples/e19846.jpg b/server/src/samples/e19846.jpg new file mode 100644 index 0000000..3fb619d Binary files /dev/null and b/server/src/samples/e19846.jpg differ diff --git a/server/src/samples/e1b384.jpg b/server/src/samples/e1b384.jpg new file mode 100644 index 0000000..e9c26d1 Binary files /dev/null and b/server/src/samples/e1b384.jpg differ diff --git a/server/src/samples/e1cb56.jpg b/server/src/samples/e1cb56.jpg new file mode 100644 index 0000000..8172fd0 Binary files /dev/null and b/server/src/samples/e1cb56.jpg differ diff --git a/server/src/samples/e1d3a2.jpg b/server/src/samples/e1d3a2.jpg new file mode 100644 index 0000000..72f882d Binary files /dev/null and b/server/src/samples/e1d3a2.jpg differ diff --git a/server/src/samples/e1d487.jpg b/server/src/samples/e1d487.jpg new file mode 100644 index 0000000..135037f Binary files /dev/null and b/server/src/samples/e1d487.jpg differ diff --git a/server/src/samples/e2cc6d.jpg b/server/src/samples/e2cc6d.jpg new file mode 100644 index 0000000..e4f5a24 Binary files /dev/null and b/server/src/samples/e2cc6d.jpg differ diff --git a/server/src/samples/e2d786.jpg b/server/src/samples/e2d786.jpg new file mode 100644 index 0000000..17718e1 Binary files /dev/null and b/server/src/samples/e2d786.jpg differ diff --git a/server/src/samples/e2d8b6.jpg b/server/src/samples/e2d8b6.jpg new file mode 100644 index 0000000..44bba9e Binary files /dev/null and b/server/src/samples/e2d8b6.jpg differ diff --git a/server/src/samples/e3d162.jpg b/server/src/samples/e3d162.jpg new file mode 100644 index 0000000..ec5687f Binary files /dev/null and b/server/src/samples/e3d162.jpg differ diff --git a/server/src/samples/e3d4bd.jpg b/server/src/samples/e3d4bd.jpg new file mode 100644 index 0000000..fb40691 Binary files /dev/null and b/server/src/samples/e3d4bd.jpg differ diff --git a/server/src/samples/e3d6ae.jpg b/server/src/samples/e3d6ae.jpg new file mode 100644 index 0000000..4bacad0 Binary files /dev/null and b/server/src/samples/e3d6ae.jpg differ diff --git a/server/src/samples/e4a14a.jpg b/server/src/samples/e4a14a.jpg new file mode 100644 index 0000000..774f3ca Binary files /dev/null and b/server/src/samples/e4a14a.jpg differ diff --git a/server/src/samples/e4d7a6.jpg b/server/src/samples/e4d7a6.jpg new file mode 100644 index 0000000..e7ed964 Binary files /dev/null and b/server/src/samples/e4d7a6.jpg differ diff --git a/server/src/samples/e4d97a.jpg b/server/src/samples/e4d97a.jpg new file mode 100644 index 0000000..d366a2a Binary files /dev/null and b/server/src/samples/e4d97a.jpg differ diff --git a/server/src/samples/e5d6a1.jpg b/server/src/samples/e5d6a1.jpg new file mode 100644 index 0000000..33ec6f3 Binary files /dev/null and b/server/src/samples/e5d6a1.jpg differ diff --git a/server/src/samples/e5d7b2.jpg b/server/src/samples/e5d7b2.jpg new file mode 100644 index 0000000..083a3a9 Binary files /dev/null and b/server/src/samples/e5d7b2.jpg differ diff --git a/server/src/samples/e5d89d.jpg b/server/src/samples/e5d89d.jpg new file mode 100644 index 0000000..709bde2 Binary files /dev/null and b/server/src/samples/e5d89d.jpg differ diff --git a/server/src/samples/e5d8b1.jpg b/server/src/samples/e5d8b1.jpg new file mode 100644 index 0000000..8e905a7 Binary files /dev/null and b/server/src/samples/e5d8b1.jpg differ diff --git a/server/src/samples/e6af8c.jpg b/server/src/samples/e6af8c.jpg new file mode 100644 index 0000000..b35cc67 Binary files /dev/null and b/server/src/samples/e6af8c.jpg differ diff --git a/server/src/samples/e6cf6b.jpg b/server/src/samples/e6cf6b.jpg new file mode 100644 index 0000000..72f5b88 Binary files /dev/null and b/server/src/samples/e6cf6b.jpg differ diff --git a/server/src/samples/e6d888.jpg b/server/src/samples/e6d888.jpg new file mode 100644 index 0000000..3bf7a07 Binary files /dev/null and b/server/src/samples/e6d888.jpg differ diff --git a/server/src/samples/e6d988.jpg b/server/src/samples/e6d988.jpg new file mode 100644 index 0000000..f92805c Binary files /dev/null and b/server/src/samples/e6d988.jpg differ diff --git a/server/src/samples/e6d9b1.jpg b/server/src/samples/e6d9b1.jpg new file mode 100644 index 0000000..45b3379 Binary files /dev/null and b/server/src/samples/e6d9b1.jpg differ diff --git a/server/src/samples/e7c782.jpg b/server/src/samples/e7c782.jpg new file mode 100644 index 0000000..f2cb7d1 Binary files /dev/null and b/server/src/samples/e7c782.jpg differ diff --git a/server/src/samples/e7d9a6.jpg b/server/src/samples/e7d9a6.jpg new file mode 100644 index 0000000..59aad9e Binary files /dev/null and b/server/src/samples/e7d9a6.jpg differ diff --git a/server/src/samples/e7db7e.jpg b/server/src/samples/e7db7e.jpg new file mode 100644 index 0000000..ea672e5 Binary files /dev/null and b/server/src/samples/e7db7e.jpg differ diff --git a/server/src/samples/e7dfc8.jpg b/server/src/samples/e7dfc8.jpg new file mode 100644 index 0000000..fc975e0 Binary files /dev/null and b/server/src/samples/e7dfc8.jpg differ diff --git a/server/src/samples/e8ae8a.jpg b/server/src/samples/e8ae8a.jpg new file mode 100644 index 0000000..61229c5 Binary files /dev/null and b/server/src/samples/e8ae8a.jpg differ diff --git a/server/src/samples/e8dab3.jpg b/server/src/samples/e8dab3.jpg new file mode 100644 index 0000000..eab46a8 Binary files /dev/null and b/server/src/samples/e8dab3.jpg differ diff --git a/server/src/samples/e8db90.jpg b/server/src/samples/e8db90.jpg new file mode 100644 index 0000000..7c17bcc Binary files /dev/null and b/server/src/samples/e8db90.jpg differ diff --git a/server/src/samples/e8ddba.jpg b/server/src/samples/e8ddba.jpg new file mode 100644 index 0000000..423ac7b Binary files /dev/null and b/server/src/samples/e8ddba.jpg differ diff --git a/server/src/samples/e8de98.jpg b/server/src/samples/e8de98.jpg new file mode 100644 index 0000000..ea24b72 Binary files /dev/null and b/server/src/samples/e8de98.jpg differ diff --git a/server/src/samples/e9cfa9.jpg b/server/src/samples/e9cfa9.jpg new file mode 100644 index 0000000..02a1110 Binary files /dev/null and b/server/src/samples/e9cfa9.jpg differ diff --git a/server/src/samples/e9de97.jpg b/server/src/samples/e9de97.jpg new file mode 100644 index 0000000..fa43ef4 Binary files /dev/null and b/server/src/samples/e9de97.jpg differ diff --git a/server/src/samples/e9e488.jpg b/server/src/samples/e9e488.jpg new file mode 100644 index 0000000..92c7fe1 Binary files /dev/null and b/server/src/samples/e9e488.jpg differ diff --git a/server/src/samples/eac551.jpg b/server/src/samples/eac551.jpg new file mode 100644 index 0000000..1501e20 Binary files /dev/null and b/server/src/samples/eac551.jpg differ diff --git a/server/src/samples/eae27f.jpg b/server/src/samples/eae27f.jpg new file mode 100644 index 0000000..1a27cc3 Binary files /dev/null and b/server/src/samples/eae27f.jpg differ diff --git a/server/src/samples/eae2c2.jpg b/server/src/samples/eae2c2.jpg new file mode 100644 index 0000000..f664540 Binary files /dev/null and b/server/src/samples/eae2c2.jpg differ diff --git a/server/src/samples/eae37f.jpg b/server/src/samples/eae37f.jpg new file mode 100644 index 0000000..04a3197 Binary files /dev/null and b/server/src/samples/eae37f.jpg differ diff --git a/server/src/samples/ebc851.jpg b/server/src/samples/ebc851.jpg new file mode 100644 index 0000000..863b214 Binary files /dev/null and b/server/src/samples/ebc851.jpg differ diff --git a/server/src/samples/ebcc88.jpg b/server/src/samples/ebcc88.jpg new file mode 100644 index 0000000..e3fdb6c Binary files /dev/null and b/server/src/samples/ebcc88.jpg differ diff --git a/server/src/samples/ebd3ad.jpg b/server/src/samples/ebd3ad.jpg new file mode 100644 index 0000000..ea06310 Binary files /dev/null and b/server/src/samples/ebd3ad.jpg differ diff --git a/server/src/samples/ebe083.jpg b/server/src/samples/ebe083.jpg new file mode 100644 index 0000000..5d17ca0 Binary files /dev/null and b/server/src/samples/ebe083.jpg differ diff --git a/server/src/samples/ebe688.jpg b/server/src/samples/ebe688.jpg new file mode 100644 index 0000000..7c8ef4a Binary files /dev/null and b/server/src/samples/ebe688.jpg differ diff --git a/server/src/samples/ecc69d.jpg b/server/src/samples/ecc69d.jpg new file mode 100644 index 0000000..c566144 Binary files /dev/null and b/server/src/samples/ecc69d.jpg differ diff --git a/server/src/samples/ece2bb.jpg b/server/src/samples/ece2bb.jpg new file mode 100644 index 0000000..649bfc1 Binary files /dev/null and b/server/src/samples/ece2bb.jpg differ diff --git a/server/src/samples/ece2d0.jpg b/server/src/samples/ece2d0.jpg new file mode 100644 index 0000000..9b3dd78 Binary files /dev/null and b/server/src/samples/ece2d0.jpg differ diff --git a/server/src/samples/edd75e.jpg b/server/src/samples/edd75e.jpg new file mode 100644 index 0000000..af70502 Binary files /dev/null and b/server/src/samples/edd75e.jpg differ diff --git a/server/src/samples/edde8f.jpg b/server/src/samples/edde8f.jpg new file mode 100644 index 0000000..aeb2264 Binary files /dev/null and b/server/src/samples/edde8f.jpg differ diff --git a/server/src/samples/ede0a9.jpg b/server/src/samples/ede0a9.jpg new file mode 100644 index 0000000..0de65cc Binary files /dev/null and b/server/src/samples/ede0a9.jpg differ diff --git a/server/src/samples/ede4a5.jpg b/server/src/samples/ede4a5.jpg new file mode 100644 index 0000000..7e69388 Binary files /dev/null and b/server/src/samples/ede4a5.jpg differ diff --git a/server/src/samples/ede4d0.jpg b/server/src/samples/ede4d0.jpg new file mode 100644 index 0000000..599b26e Binary files /dev/null and b/server/src/samples/ede4d0.jpg differ diff --git a/server/src/samples/ede4d2.jpg b/server/src/samples/ede4d2.jpg new file mode 100644 index 0000000..d685575 Binary files /dev/null and b/server/src/samples/ede4d2.jpg differ diff --git a/server/src/samples/ede5b8.jpg b/server/src/samples/ede5b8.jpg new file mode 100644 index 0000000..02e751d Binary files /dev/null and b/server/src/samples/ede5b8.jpg differ diff --git a/server/src/samples/edea91.jpg b/server/src/samples/edea91.jpg new file mode 100644 index 0000000..e0e89e8 Binary files /dev/null and b/server/src/samples/edea91.jpg differ diff --git a/server/src/samples/edea92.jpg b/server/src/samples/edea92.jpg new file mode 100644 index 0000000..d320b89 Binary files /dev/null and b/server/src/samples/edea92.jpg differ diff --git a/server/src/samples/eee6d1.jpg b/server/src/samples/eee6d1.jpg new file mode 100644 index 0000000..8210efb Binary files /dev/null and b/server/src/samples/eee6d1.jpg differ diff --git a/server/src/samples/efe2b2.jpg b/server/src/samples/efe2b2.jpg new file mode 100644 index 0000000..ad1f407 Binary files /dev/null and b/server/src/samples/efe2b2.jpg differ diff --git a/server/src/samples/f0e5bc.jpg b/server/src/samples/f0e5bc.jpg new file mode 100644 index 0000000..5d17127 Binary files /dev/null and b/server/src/samples/f0e5bc.jpg differ diff --git a/server/src/samples/f0e788.jpg b/server/src/samples/f0e788.jpg new file mode 100644 index 0000000..c82c936 Binary files /dev/null and b/server/src/samples/f0e788.jpg differ diff --git a/src/css/styles.css b/src/css/styles.css new file mode 100644 index 0000000..73d6fd1 --- /dev/null +++ b/src/css/styles.css @@ -0,0 +1,61 @@ +body { + background-color: #222; +} + +canvas { + width: 50vw; +} + +.main { + margin-left: 25%; + padding: 0px 10px; +} + +h2, +h3, +h4, +h5 { + color: white; + font-family: "Roboto", sans-serif; + font-weight: 300; +} + +h4 { + text-transform: uppercase; + font-size: 0.7em; + letter-spacing: 4px; +} + +li:hover { + cursor: pointer; +} + +.topnav { + display: flex; + flex-direction: row; + justify-content: flex-end; +} + +.slidecontainer { + width: 30%; +} + +.slider { + margin-left: 10vw; + width: 30vw; + height: 25px; + background: #d3d3d3; + outline: none; + transition: opacity 0.2s; + cursor: pointer; +} + +.slider:hover { + opacity: 0.7; +} + +.slider::-moz-range-thumb { + width: 25px; + height: 25px; + background: #04aa6d; +} diff --git a/src/img/spinner.gif b/src/img/spinner.gif new file mode 100644 index 0000000..aaac076 Binary files /dev/null and b/src/img/spinner.gif differ diff --git a/src/js/filters.js b/src/js/filters.js new file mode 100644 index 0000000..ce5ae2c --- /dev/null +++ b/src/js/filters.js @@ -0,0 +1,332 @@ +export const filters = (module) => { + let filter_dict = { + grayscale: function () { + return module.grayscale(rust_image); + }, + offset_red: function () { + return module.offset(rust_image, 0, 15); + }, + offset_blue: function () { + return module.offset(rust_image, 1, 15); + }, + offset_green: function () { + return module.offset(rust_image, 2, 15); + }, + primary: function () { + return module.primary(rust_image); + }, + solarize: function () { + return module.solarize(rust_image); + }, + threshold: function () { + return module.threshold(rust_image, 200); + }, + sepia: function () { + return module.sepia(rust_image); + }, + decompose_min: function () { + return module.decompose_min(rust_image); + }, + decompose_max: function () { + return module.decompose_max(rust_image); + }, + grayscale_shades: function () { + return module.grayscale_shades(rust_image); + }, + red_channel_grayscale: function () { + module.single_channel_grayscale(rust_image, 0); + }, + green_channel_grayscale: function () { + module.single_channel_grayscale(rust_image, 1); + }, + blue_channel_grayscale: function () { + module.single_channel_grayscale(rust_image, 2); + }, + hue_rotate_hsl: function () { + module.hue_rotate_hsl(rust_image, 0.3); + }, + hue_rotate_hsv: function () { + module.hue_rotate_hsv(rust_image, 0.3); + }, + hue_rotate_lch: function () { + module.hue_rotate_lch(rust_image, 0.3); + }, + lighten_hsl: function () { + module.lighten_hsl(rust_image, 0.3); + }, + lighten_hsv: function () { + module.lighten_hsv(rust_image, 0.3); + }, + lighten_lch: function () { + module.lighten_lch(rust_image, 0.3); + }, + darken_hsl: function () { + module.darken_hsl(rust_image, 0.3); + }, + darken_hsv: function () { + module.darken_hsv(rust_image, 0.3); + }, + darken_lch: function () { + module.darken_lch(rust_image, 0.3); + }, + desaturate_hsl: function () { + module.desaturate_hsl(rust_image, 0.3); + }, + desaturate_hsv: function () { + module.desaturate_hsv(rust_image, 0.3); + }, + desaturate_lch: function () { + module.desaturate_lch(rust_image, 0.3); + }, + saturate_hsl: function () { + module.saturate_hsl(rust_image, 0.3); + }, + saturate_hsv: function () { + module.saturate_hsv(rust_image, 0.3); + }, + saturate_lch: function () { + module.saturate_lch(rust_image, 0.3); + }, + inc_red_channel: function () { + return module.alter_red_channel(rust_image, 120); + }, + inc_blue_channel: function () { + return module.alter_channel(rust_image, 2, 100); + }, + inc_green_channel: function () { + return module.alter_channel(rust_image, 1, 100); + }, + inc_two_channels: function () { + return module.alter_channel(rust_image, 1, 30); + }, + dec_red_channel: function () { + return module.alter_channel(rust_image, 0, -30); + }, + dec_blue_channel: function () { + return module.alter_channel(rust_image, 2, -30); + }, + dec_green_channel: function () { + return module.alter_channel(rust_image, 1, -30); + }, + swap_rg_channels: function () { + return module.swap_channels(rust_image, 0, 1); + }, + swap_rb_channels: function () { + return module.swap_channels(rust_image, 0, 2); + }, + swap_gb_channels: function () { + return module.swap_channels(rust_image, 1, 2); + }, + remove_red_channel: function () { + return module.remove_red_channel(rust_image, 250); + }, + remove_green_channel: function () { + return module.remove_green_channel(rust_image, 250); + }, + remove_blue_channel: function () { + return module.remove_blue_channel(rust_image, 250); + }, + emboss: function () { + return module.emboss(rust_image); + }, + box_blur: function () { + return module.box_blur(rust_image); + }, + sharpen: function () { + return module.sharpen(rust_image); + }, + lix: function () { + return module.lix(rust_image); + }, + neue: function () { + return module.neue(rust_image); + }, + ryo: function () { + return module.ryo(rust_image); + }, + gaussian_blur: function () { + return module.gaussian_blur(rust_image); + }, + inc_brightness: function () { + return module.inc_brightness(rust_image, 20); + }, + inc_lum: function () { + return module.inc_luminosity(rust_image); + }, + grayscale_human_corrected: function () { + return module.grayscale_human_corrected(rust_image); + }, + blend: function () { + return module.blend(rust_image, rust_image2, "over"); + }, + overlay: function () { + return module.blend(rust_image, rust_image2, "overlay"); + }, + atop: function () { + return module.blend(rust_image, rust_image2, "atop"); + }, + xor: function () { + return module.blend(rust_image, rust_image2, "xor"); + }, + plus: function () { + return module.blend(rust_image, rust_image2, "plus"); + }, + multiply: function () { + return module.blend(rust_image, rust_image2, "multiply"); + }, + burn: function () { + return module.blend(rust_image, rust_image2, "burn"); + }, + difference: function () { + return module.blend(rust_image, rust_image2, "difference"); + }, + soft_light: function () { + return module.blend(rust_image, rust_image2, "soft_light"); + }, + hard_light: function () { + return module.blend(rust_image, rust_image2, "hard_light"); + }, + dodge: function () { + return module.blend(rust_image, rust_image2, "dodge"); + }, + exclusion: function () { + return module.blend(rust_image, rust_image2, "exclusion"); + }, + lighten: function () { + return module.blend(rust_image, rust_image2, "lighten"); + }, + darken: function () { + return module.blend(rust_image, rust_image2, "darken"); + }, + watermark: function () { + return module.watermark(rust_image, watermark_img, 10, 30); + }, + text: function () { + return module.draw_text(rust_image, "welcome to WebAssembly", 10, 20); + }, + text_border: function () { + return module.draw_text_with_border( + rust_image, + "welcome to the edge", + 10, + 20, + ); + }, + test: function () { + return module.filter(rust_image, "rosetint"); + }, + pink_noise: function () { + return module.pink_noise(rust_image); + }, + add_noise_rand: function () { + return module.add_noise_rand(rust_image); + }, + blend: function () { + return module.blend(rust_image, rust_image2, "over"); + }, + overlay: function () { + return module.blend(rust_image, rust_image2, "overlay"); + }, + atop: function () { + return module.blend(rust_image, rust_image2, "atop"); + }, + plus: function () { + return module.blend(rust_image, rust_image2, "plus"); + }, + multiply: function () { + return module.blend(rust_image, rust_image2, "multiply"); + }, + burn: function () { + return module.blend(rust_image, rust_image2, "burn"); + }, + difference: function () { + return module.blend(rust_image, rust_image2, "difference"); + }, + soft_light: function () { + return module.blend(rust_image, rust_image2, "soft_light"); + }, + hard_light: function () { + return module.blend(rust_image, rust_image2, "hard_light"); + }, + dodge: function () { + return module.blend(rust_image, rust_image2, "dodge"); + }, + exclusion: function () { + return module.blend(rust_image, rust_image2, "exclusion"); + }, + lighten: function () { + return module.blend(rust_image, rust_image2, "lighten"); + }, + darken: function () { + return module.blend(rust_image, rust_image2, "darken"); + }, + watermark: function () { + return module.watermark(rust_image, watermark_img, 10, 30); + }, + text: function () { + return module.draw_text(rust_image, "welcome to WebAssembly", 10, 20); + }, + text_border: function () { + return module.draw_text_with_border( + rust_image, + "welcome to the edge", + 10, + 20, + ); + }, + blend: function () { + return module.blend(rust_image, rust_image2, "over"); + }, + overlay: function () { + return module.blend(rust_image, rust_image2, "overlay"); + }, + atop: function () { + return module.blend(rust_image, rust_image2, "atop"); + }, + plus: function () { + return module.blend(rust_image, rust_image2, "plus"); + }, + multiply: function () { + return module.blend(rust_image, rust_image2, "multiply"); + }, + burn: function () { + return module.blend(rust_image, rust_image2, "burn"); + }, + difference: function () { + return module.blend(rust_image, rust_image2, "difference"); + }, + soft_light: function () { + return module.blend(rust_image, rust_image2, "soft_light"); + }, + hard_light: function () { + return module.blend(rust_image, rust_image2, "hard_light"); + }, + dodge: function () { + return module.blend(rust_image, rust_image2, "dodge"); + }, + exclusion: function () { + return module.blend(rust_image, rust_image2, "exclusion"); + }, + lighten: function () { + return module.blend(rust_image, rust_image2, "lighten"); + }, + darken: function () { + return module.blend(rust_image, rust_image2, "darken"); + }, + watermark: function () { + return module.watermark(rust_image, watermark_img, 10, 30); + }, + text: function () { + return module.draw_text(rust_image, "welcome to WebAssembly", 10, 20); + }, + text_border: function () { + return module.draw_text_with_border( + rust_image, + "welcome to the edge", + 10, + 20, + ); + }, + }; + return filter_dict; +}; diff --git a/src/js/index.js b/src/js/index.js new file mode 100644 index 0000000..da54992 --- /dev/null +++ b/src/js/index.js @@ -0,0 +1,41 @@ +import MainImage from "./nine_yards.jpg"; +import "../css/styles.css"; + +let canvas, ctx, blur_factor; + +import("../../webclient/pkg").then((module) => { + // Setup images + const sourceImage = new Image(); + sourceImage.src = MainImage; + sourceImage.onload = () => { + setUpCanvas(); + }; + + const slider = document.getElementById("slider"); + const progress = document.getElementById("progress"); + slider.onchange = filterImage; + slider.value = 0; + + function filterImage(event) { + let sliderValue = parseInt(event.target.value); + blur_factor = sliderValue / 5; + let rust_image = module.open_image(canvas, ctx); + // module.gaussian_blur(rust_image, blur_factor); + module.median(rust_image, blur_factor, blur_factor); + module.putImageData(canvas, ctx, rust_image); + document.getElementById("msg").remove(); + } + + function setUpCanvas() { + let element = document.getElementById("image_container"); + element.appendChild(sourceImage); + + canvas = document.getElementById("canvas"); + canvas.width = sourceImage.width; + canvas.height = sourceImage.height; + sourceImage.setAttribute("style", "width:50vw"); + + ctx = canvas.getContext("2d"); + ctx.drawImage(sourceImage, 0, 0); + } +}); diff --git a/src/js/nine_yards.jpg b/src/js/nine_yards.jpg new file mode 100644 index 0000000..484253f Binary files /dev/null and b/src/js/nine_yards.jpg differ diff --git a/webclient/Cargo.lock b/webclient/Cargo.lock new file mode 100644 index 0000000..1cf282d --- /dev/null +++ b/webclient/Cargo.lock @@ -0,0 +1,1424 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "ab_glyph_rasterizer" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13739d7177fbd22bb0ed28badfff9f372f8bef46c863db4e1c6248f6b223b6e" + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + +[[package]] +name = "anyhow" +version = "1.0.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "bit_field" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bumpalo" +version = "3.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ff69b9dd49fd426c69a0db9fc04dd934cdb6645ff000864d98f7e2af8830eaa" + +[[package]] +name = "bytemuck" +version = "1.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2ef034f05691a48569bd920a96c81b9d91bbad1ab5ac7c4616c1f6ef36cb79f" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen", +] + +[[package]] +name = "const_fn" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" + +[[package]] +name = "conv" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ff10625fd0ac447827aa30ea8b861fead473bb60aeb73af6c1c58caf0d1299" +dependencies = [ + "custom_derive", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00d6d2ea26e8b151d99093005cb442fb9a37aeaca582a03ec70946f49ab5ed9" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", + "lazy_static", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6" +dependencies = [ + "cfg-if 1.0.0", + "lazy_static", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "custom_derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9" + +[[package]] +name = "deflate" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" +dependencies = [ + "adler32", + "byteorder", +] + +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + +[[package]] +name = "either" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" + +[[package]] +name = "exr" +version = "1.72.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" +dependencies = [ + "bit_field", + "flume", + "half", + "lebe", + "miniz_oxide 0.7.2", + "rayon-core", + "smallvec", + "zune-inflate", +] + +[[package]] +name = "fdeflate" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "find-crate" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a98bbaacea1c0eb6a0876280051b892eb73594fd90cf3b20e9c817029c57d2" +dependencies = [ + "toml", +] + +[[package]] +name = "flate2" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +dependencies = [ + "crc32fast", + "miniz_oxide 0.7.2", +] + +[[package]] +name = "flume" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" +dependencies = [ + "spin", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi", +] + +[[package]] +name = "gif" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "gif" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +dependencies = [ + "color_quant", + "weezl", +] + +[[package]] +name = "half" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e" +dependencies = [ + "cfg-if 1.0.0", + "crunchy", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "image" +version = "0.23.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "gif 0.11.4", + "jpeg-decoder 0.1.22", + "num-iter", + "num-rational 0.3.2", + "num-traits", + "png 0.16.8", + "scoped_threadpool", + "tiff 0.6.1", +] + +[[package]] +name = "image" +version = "0.24.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "exr", + "gif 0.13.1", + "jpeg-decoder 0.3.1", + "num-traits", + "png 0.17.13", + "qoi", + "tiff 0.9.1", +] + +[[package]] +name = "imageproc" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7923654f3ce7cb6849d5dc9e544aaeab49c508a90b56c721b046e7234c74ab53" +dependencies = [ + "conv", + "image 0.23.14", + "itertools 0.9.0", + "num 0.3.1", + "rand 0.7.3", + "rand_distr", + "rulinalg", + "rusttype", +] + +[[package]] +name = "imageproc" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aee993351d466301a29655d628bfc6f5a35a0d062b6160ca0808f425805fd7" +dependencies = [ + "approx", + "conv", + "image 0.24.9", + "itertools 0.10.5", + "nalgebra", + "num 0.4.1", + "rand 0.7.3", + "rand_distr", + "rayon", + "rusttype", +] + +[[package]] +name = "itertools" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" + +[[package]] +name = "jpeg-decoder" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2" + +[[package]] +name = "jpeg-decoder" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" +dependencies = [ + "rayon", +] + +[[package]] +name = "js-sys" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cc9ffccd38c451a86bf13657df244e9c3f37493cce8e5e21e940963777acc84" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lebe" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" + +[[package]] +name = "libc" +version = "0.2.153" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" + +[[package]] +name = "lock_api" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" + +[[package]] +name = "matrixmultiply" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcad67dcec2d58ff56f6292582377e6921afdf3bfbd533e26fb8900ae575e002" +dependencies = [ + "rawpointer 0.1.0", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +dependencies = [ + "autocfg", + "rawpointer 0.2.1", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" +dependencies = [ + "adler32", +] + +[[package]] +name = "miniz_oxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "miniz_oxide" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +dependencies = [ + "adler", + "simd-adler32", +] + +[[package]] +name = "nalgebra" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb2d0de08694bed883320212c18ee3008576bfe8c306f4c3c4a58b4876998be" +dependencies = [ + "approx", + "matrixmultiply 0.3.8", + "num-complex 0.4.5", + "num-rational 0.4.1", + "num-traits", + "simba", + "typenum", +] + +[[package]] +name = "node-sys" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30d75eee6e8b159228449706773f9f2af60720250308124e9c3d38bd8070844a" +dependencies = [ + "cfg-if 0.1.10", + "js-sys", + "serde", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "num" +version = "0.1.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4703ad64153382334aa8db57c637364c322d3372e097840c72000dabdcf6156e" +dependencies = [ + "num-integer", + "num-iter", + "num-traits", +] + +[[package]] +name = "num" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b7a8e9be5e039e2ff869df49155f1c06bd01ade2117ec783e56ab0932b67a8f" +dependencies = [ + "num-bigint 0.3.3", + "num-complex 0.3.1", + "num-integer", + "num-iter", + "num-rational 0.3.2", + "num-traits", +] + +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint 0.4.4", + "num-complex 0.4.5", + "num-integer", + "num-iter", + "num-rational 0.4.1", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6f7833f2cbf2360a6cfd58cd41a53aa7a90bd4c202f5b1c7dd2ed73c57b2c3" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "747d632c0c558b87dbabbe6a82f3b4ae03720d0646ac5b7b4dae89394be5f2c5" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-bigint 0.3.3", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint 0.4.4", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "owned_ttf_parser" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f923fb806c46266c02ab4a5b239735c144bdeda724a50ed058e5226f594cde3" +dependencies = [ + "ttf-parser", +] + +[[package]] +name = "palette" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f9cd68f7112581033f157e56c77ac4a5538ec5836a2e39284e65bd7d7275e49" +dependencies = [ + "approx", + "num-traits", + "palette_derive", + "phf", +] + +[[package]] +name = "palette_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05eedf46a8e7c27f74af0c9cfcdb004ceca158cb1b918c6f68f8d7a549b3e427" +dependencies = [ + "find-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "perlin2d" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb6c71cfd92099c43062f059494786cdcbd9cb4dab61389098362b241071cde0" + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_macros", + "phf_shared", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator", + "phf_shared", + "proc-macro2", + "quote", + "syn 2.0.55", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "photon-rs" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "548735d70c7d5278fd486e94beb00cef2ecb678b8c471dbf2f3493d331412e37" +dependencies = [ + "base64", + "image 0.23.14", + "imageproc 0.22.0", + "js-sys", + "node-sys", + "palette", + "perlin2d", + "rand 0.7.3", + "rusttype", + "serde", + "thiserror", + "time", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "png" +version = "0.16.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" +dependencies = [ + "bitflags", + "crc32fast", + "deflate", + "miniz_oxide 0.3.7", +] + +[[package]] +name = "png" +version = "0.17.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +dependencies = [ + "bitflags", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide 0.7.2", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835ff2298f5721608eb1a980ecaee1aef2c132bf95ecc026a11b7bf3c01c02e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "quote" +version = "1.0.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom", + "libc", + "rand_chacha", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" + +[[package]] +name = "rand_distr" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96977acbdd3a6576fb1d27391900035bf3863d4a16422973a409b488cf29ffb2" +dependencies = [ + "rand 0.7.3", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rawpointer" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebac11a9d2e11f2af219b8b8d833b76b1ea0e054aa0e8d8e9e4cbde353bdf019" + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4963ed1bc86e4f3ee217022bd855b297cef07fb9eac5dfa1f788b220b49b3bd" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +dependencies = [ + "crossbeam-deque", + "crossbeam-utils", +] + +[[package]] +name = "rulinalg" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04ada202c9685e1d72a7420c578e92b358dbf807d3dfabb676a3dab9cc3bb12f" +dependencies = [ + "matrixmultiply 0.1.15", + "num 0.1.42", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "rusttype" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc7c727aded0be18c5b80c1640eae0ac8e396abf6fa8477d96cb37d18ee5ec59" +dependencies = [ + "ab_glyph_rasterizer", + "owned_ttf_parser", +] + +[[package]] +name = "ryu" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" + +[[package]] +name = "safe_arch" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "scoped_threadpool" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.197" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.55", +] + +[[package]] +name = "serde_json" +version = "1.0.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + +[[package]] +name = "simba" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f3fd720c48c53cace224ae62bef1bbff363a70c68c4802a78b5cc6159618176" +dependencies = [ + "approx", + "num-complex 0.4.5", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "simd-adler32" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "smallvec" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" + +[[package]] +name = "spiegel-client" +version = "0.1.0" +dependencies = [ + "anyhow", + "console_error_panic_hook", + "hex", + "image 0.24.9", + "imageproc 0.23.0", + "log", + "photon-rs", + "wasm-bindgen", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", +] + +[[package]] +name = "standback" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" +dependencies = [ + "version_check", +] + +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "002a1b3dbf967edfafc32655d0f377ab0bb7b994aa1d32c8cc7e9b8bf3ebb8f0" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "thiserror" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03468839009160513471e86a034bb2c5c0e4baae3b43f79ffc55c4a5427b3297" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61f3ba182994efc43764a46c018c347bc492c79f024e705f46567b418f6d4f7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.55", +] + +[[package]] +name = "tiff" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437" +dependencies = [ + "jpeg-decoder 0.1.22", + "miniz_oxide 0.4.4", + "weezl", +] + +[[package]] +name = "tiff" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +dependencies = [ + "flate2", + "jpeg-decoder 0.3.1", + "weezl", +] + +[[package]] +name = "time" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" +dependencies = [ + "const_fn", + "libc", + "standback", + "stdweb", + "time-macros", + "version_check", + "winapi", +] + +[[package]] +name = "time-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" +dependencies = [ + "proc-macro-hack", + "time-macros-impl", +] + +[[package]] +name = "time-macros-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "standback", + "syn 1.0.109", +] + +[[package]] +name = "toml" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +dependencies = [ + "serde", +] + +[[package]] +name = "ttf-parser" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e5d7cd7ab3e47dda6e56542f4bbf3824c15234958c6e1bd6aaa347e93499fdc" + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasm-bindgen" +version = "0.2.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a317bf8f9fba2476b4b2c85ef4c4af8ff39c3c7f0cdfeed4f82c34a880aa837b" +dependencies = [ + "bumpalo", + "lazy_static", + "log", + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.78" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0237232789cf037d5480773fe568aac745bfe2afbc11a863e97901780a6b47cc" + +[[package]] +name = "web-sys" +version = "0.3.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38eb105f1c59d9eaa6b5cdc92b859d85b926e82cb2e0945cd0c9259faa6fe9fb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "weezl" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" + +[[package]] +name = "wide" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89beec544f246e679fc25490e3f8e08003bc4bf612068f325120dad4cea02c1c" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", +] diff --git a/webclient/Cargo.toml b/webclient/Cargo.toml new file mode 100644 index 0000000..6d9f326 --- /dev/null +++ b/webclient/Cargo.toml @@ -0,0 +1,19 @@ +[package] +edition = "2021" +name = "spiegel-client" +version = "0.1.0" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +log = "0.4" +image = "0.24.1" +imageproc = "0.23" +hex = "0.4" +anyhow = "1.0" +photon-rs = { version = "0.3.2", default-features = false } +console_error_panic_hook = { version = "0.1.7", optional = true } +wasm-bindgen = "0.2.78" + +[lib] +crate-type = ["cdylib", "rlib"] diff --git a/webclient/README.md b/webclient/README.md new file mode 100644 index 0000000..438acb2 --- /dev/null +++ b/webclient/README.md @@ -0,0 +1,7 @@ +Work in progress! + +Goal: image filters, running in the browser + + +=> + \ No newline at end of file diff --git a/webclient/boy.jpg b/webclient/boy.jpg new file mode 100644 index 0000000..ebc77f7 Binary files /dev/null and b/webclient/boy.jpg differ diff --git a/webclient/output.jpg b/webclient/output.jpg new file mode 100644 index 0000000..3b96db6 Binary files /dev/null and b/webclient/output.jpg differ diff --git a/webclient/src/lib.rs b/webclient/src/lib.rs new file mode 100644 index 0000000..25c1439 --- /dev/null +++ b/webclient/src/lib.rs @@ -0,0 +1,249 @@ +use std::{collections::HashSet, time::Instant}; + +use image::{GenericImageView, ImageBuffer, Pixel, Rgb, RgbImage, RgbaImage}; +use photon_rs::PhotonImage; + +mod quantizer; +mod samples; + +use wasm_bindgen::prelude::*; + +/// Apply a median filter +/// +/// # Arguments +/// * `img` - A PhotonImage. +/// * `x_radius` - x radius of median window +/// * `y_radius` - y radius of median window +#[wasm_bindgen] +pub fn median(photon_image: &mut PhotonImage, x_radius: u32, y_radius: u32) { + let width = photon_image.get_width(); + let height = photon_image.get_height(); + + if width == 0 || height == 0 { + return; + } + + let raw_pixels = photon_image.get_raw_pixels().to_vec(); //argh!, slice should work but doesn't + let rs_image = RgbaImage::from_vec(width, height, raw_pixels).unwrap(); + + let filtered: Vec = + imageproc::filter::median_filter(&rs_image, x_radius, y_radius).into_raw(); + + *photon_image = PhotonImage::new(filtered, width, height); +} + +pub fn determine_colors(image: &PhotonImage) -> HashSet { + let mut unique_colors = HashSet::new(); + let pixels = image.get_raw_pixels(); + for pix in (0..pixels.len()).step_by(4) { + // assume rgba + let mut hex = String::new(); + hex.push_str(&format!("{:X}", pixels[pix])); + hex.push_str(&format!("{:X}", pixels[pix + 1])); + hex.push_str(&format!("{:X}", pixels[pix + 2])); + + unique_colors.insert(hex); + } + unique_colors +} + +#[wasm_bindgen] +pub fn fofo(photon_image: &mut PhotonImage) { + let width = photon_image.get_width(); + let height = photon_image.get_height(); + + let raw_pixels = photon_image.get_raw_pixels().to_vec(); //argh!, slice should work but doesn't + let rs_image = RgbImage::from_vec(width, height, raw_pixels).unwrap(); + + // println!("applying gaussian blur filter"); + // let gauss = imageproc::filter::gaussian_blur_f32(&src, 4.0); + println!("applying median filter"); + let median = imageproc::filter::median_filter(&rs_image, 20, 20); + println!("applying color quantization filter"); + let quantized = quantizer::quantize(&median, 256); + + println!("applying samples"); + // let out = apply_samples_to_image(quantized, &color_samples); + // quantized.save_with_format("output.jpg", image::ImageFormat::Jpeg).unwrap(); +} + +fn apply_samples_to_image(mut src: RgbImage, color_samples: &Vec) -> RgbImage { + let mut imgbuf = RgbImage::new(src.width(), src.height()); + unsafe { + for y in 0..src.height() { + for x in 0..src.width() { + let pixel = &src.unsafe_get_pixel(x, y); + if imgbuf.unsafe_get_pixel(x, y).channels() == [0, 0, 0] { + if let Some(sample) = get_closest(&color_samples, pixel) { + fill(&mut src, sample, &mut imgbuf, pixel, x, y); + } + } + } + } + } + imgbuf +} + +fn fill( + src: &mut ImageBuffer, Vec>, + sample: &ColorSample, + dest: &mut ImageBuffer, Vec>, + color: &Rgb, + px: u32, + py: u32, +) { + if color.channels() == [0, 0, 0] { + return; + } + let height = sample.image.height(); + let width = sample.image.width(); + let mut points = List::new(); + if is_same(src.get_pixel(px, py), &color) { + points.push(Point { x: px, y: py }); + } + + while !points.is_empty() { + if let Some(point) = points.pop() { + let orig_pixel = src.get_pixel(point.x, point.y); + let x = point.x; + let y = point.y; + if src.get_pixel(x, y).channels() != [0, 0, 0] { + if is_same(orig_pixel, &color) { + let mut xx = x; + let mut yy = y; + while xx >= width { + xx -= width; + } + while yy >= height { + yy -= height; + } + dest.put_pixel(x, y, *sample.image.get_pixel(xx, yy)); + src.put_pixel(x, y, Rgb([0, 0, 0])); + if x > 1 { + points.push(Point::new(x - 1, y)); + } + if y > 1 { + points.push(Point::new(x, y - 1)); + } + if x < src.width() - 1 { + points.push(Point::new(x + 1, y)); + } + if y < src.height() - 1 { + points.push(Point::new(x, y + 1)); + } + } + } + } else { + println!("break"); + break; + } + } +} + +fn is_same(p1: &Rgb, p2: &Rgb) -> bool { + let p1 = p1.channels(); + let p2 = p2.channels(); + i16::abs(p1[0] as i16 - p2[0] as i16) < 4 + && i16::abs(p1[1] as i16 - p2[1] as i16) < 4 + && i16::abs(p1[2] as i16 - p2[2] as i16) < 4 +} + +fn get_closest<'a>( + color_samples: &'a Vec, + pixel: &Rgb, +) -> Option<&'a ColorSample> { + let mut closest = None; + let mut min_diff: f32 = 4294967295.0; //0xFFFFFFFF + for sample in color_samples { + let diff = get_distance(sample.r, sample.g, sample.b, pixel); + if diff < min_diff { + closest = Some(sample); + min_diff = diff; + } + } + + closest +} + +fn get_distance(r: u8, g: u8, b: u8, c2: &Rgb) -> f32 { + let red_dif = r as f32 - c2.channels()[0] as f32; + let green_dif = g as f32 - c2.channels()[1] as f32; + let blue_dif = b as f32 - c2.channels()[2] as f32; + return f32::sqrt(red_dif * red_dif + green_dif * green_dif + blue_dif * blue_dif); +} + +#[derive(Debug)] +struct Point { + x: T, + y: T, +} + +impl Point { + fn new(x: T, y: T) -> Self { + Self { x, y } + } +} + +struct ColorSample { + r: u8, + g: u8, + b: u8, + image: RgbImage, +} + +#[derive(Debug)] +struct List { + head: Option>, +} + +impl List { + fn new() -> Self { + Self { head: None } + } + fn push(&mut self, point: Point) { + let new_node = Box::new(Node { + value: point, + next: self.head.take(), + }); + + self.head = Some(new_node); + } + + fn pop(&mut self) -> Option> { + self.head.take().map(|node| { + self.head = node.next; + node.value + }) + } + + fn is_empty(&self) -> bool { + self.head.is_none() + } +} + +#[derive(Debug)] +struct Node { + value: Point, + next: Option>, +} + +#[cfg(test)] +mod test { + + use super::*; + + #[test] + fn test() { + let raw_pix = vec![ + 134, 122, 131, 255, 131, 131, 139, 255, 135, 134, 137, 255, 138, 134, 130, 255, 126, + 125, 119, 255, 131, 134, 129, 255, 137, 134, 132, 255, 130, 126, 130, 255, 132, 125, + 132, 255, 122, 142, 129, 255, 134, 135, 128, 255, 138, 120, 125, 255, 125, 134, 110, + 255, 121, 122, 137, 255, 141, 140, 141, 255, 125, 144, 120, 255, + ]; + + let photon_image = PhotonImage::new(raw_pix, 4, 4); + + let colors = determine_colors(&photon_image); + println!("{:?}", colors); + } +} diff --git a/webclient/src/quantizer.rs b/webclient/src/quantizer.rs new file mode 100644 index 0000000..558359c --- /dev/null +++ b/webclient/src/quantizer.rs @@ -0,0 +1,347 @@ +use std::{cell::RefCell, rc::Rc}; + +use image::{Pixel, Rgb, RgbImage}; + +const MAX_LEVEL: usize = 5; + +pub(crate) fn quantize(image: &RgbImage, num_colors: usize) -> RgbImage { + let mut quantizer = OctTreeQuantizer::new(num_colors); + quantizer.quantize(image) +} + +struct OctTreeQuantizer { + root: Rc>, + reduce_colors: usize, + maximum_colors: usize, + colors: usize, + color_list: Vec>>>>, +} + +impl OctTreeQuantizer { + fn new(num_colors: usize) -> Self { + let mut new_quantizer = Self { + root: Rc::new(RefCell::new(OctTreeNode::new())), + reduce_colors: usize::max(512, num_colors * 2), + maximum_colors: num_colors, + color_list: vec![], + colors: 0, + }; + + for _ in 0..=MAX_LEVEL { + new_quantizer.color_list.push(Vec::new()); + } + new_quantizer + } + + pub fn quantize(&mut self, image: &RgbImage) -> RgbImage { + for pixel in image.pixels() { + self.insert_color(pixel, Rc::clone(&self.root)); + + if self.colors > self.reduce_colors { + self.reduce_tree(self.reduce_colors); + //reduce sets to None and the code below actually removes nodes from the list + for level in &mut self.color_list { + level.retain(|c| c.is_some()); + } + } + } + let table = self.build_color_table(); + + let mut imgbuf = RgbImage::new(image.width(), image.height()); + for (x, y, pixel) in image.enumerate_pixels() { + if let Some(index) = self.get_index_for_color(pixel, &self.root) { + let color = &table[index]; + if let Some(color) = color { + imgbuf.put_pixel(x, y, *color); + } + } + } + + imgbuf + } + + fn get_index_for_color

(&self, color: &P, node: &Rc>) -> Option + where + P: Pixel + 'static, + { + fn get_index_for_color

( + quantizer: &OctTreeQuantizer, + color: &P, + level: usize, + node: &Rc>, + ) -> Option + where + P: Pixel + 'static, + { + if level > MAX_LEVEL { + return None; + } + let node = Rc::clone(node); + let index = get_bitmask(color, &level); + + let node_b = node.borrow(); + let child = &node_b.leaf[index]; + + if let Some(child) = child { + let child_b = child.borrow(); + if child_b.is_leaf { + return Some(child_b.index); + } else { + return get_index_for_color(quantizer, color, level + 1, child); + } + } else { + return Some(node_b.index); + } + } + + get_index_for_color(&self, color, 0, node) + } + + fn build_color_table(&mut self) -> Vec>> { + //nested function that is called recursively + fn build_color_table( + quantizer: &mut OctTreeQuantizer, + node: &Rc>, + table: &mut Vec>>, + index: usize, + ) -> usize { + if quantizer.colors > quantizer.maximum_colors { + quantizer.reduce_tree(quantizer.maximum_colors); + } + if node.borrow().is_leaf { + { + let node = node.borrow(); + let count = node.count; + table[index] = Some(Rgb::from([ + (node.total_red / count as u32) as u8, + (node.total_green / count as u32) as u8, + (node.total_blue / count as u32) as u8, + ])); + } + node.borrow_mut().index = index; + + index + 1 + } else { + let mut result = index; + for i in 0..8 { + // cannot iterate leaf, because that widens the scope of the borrow (of node) + let mut node = node.borrow_mut(); + if let Some(leaf) = &node.leaf[i] { + //could be immutable borrow + let new_index = build_color_table(quantizer, leaf, table, result); + node.index = index; //but also need mutable borrow here + result = new_index; + } + } + + result + } + } + + let mut table: Vec>> = vec![None; self.colors]; + let node = Rc::clone(&self.root); + build_color_table(self, &node, &mut table, 0); + table + } + + fn insert_color

(&mut self, rgb: &P, node: Rc>) + where + P: Pixel + 'static, + { + //nested function that is called recursively + fn insert_color

( + quantizer: &mut OctTreeQuantizer, + color: &P, + level: usize, + node: Rc>, + ) where + P: Pixel + 'static, + { + if level > MAX_LEVEL { + return; + } + + let index = get_bitmask(color, &level); + + if node.borrow().leaf[index].is_none() { + let mut child = OctTreeNode::new(); + child.parent = Some(Rc::clone(&node)); + child.p_index = quantizer.color_list[level].len(); + + if level == MAX_LEVEL { + child.is_leaf = true; + child.count = 1; + child.total_red = color.channels()[0] as u32; + child.total_green = color.channels()[1] as u32; + child.total_blue = color.channels()[2] as u32; + child.level = level; + quantizer.colors += 1; + } + + let child = Rc::new(RefCell::new(child)); + quantizer.color_list[level].push(Some(Rc::clone(&child))); + let clone = Rc::clone(&child); + + { + let mut mutnode = node.borrow_mut(); + mutnode.children += 1; + mutnode.is_leaf = false; + mutnode.leaf[index] = Some(child); + } + + if level < MAX_LEVEL { + insert_color(quantizer, color, level + 1, clone); + } else { + return; + } + } else { + if node + .borrow() + .leaf + .get(index) + .unwrap() + .as_ref() + .unwrap() + .borrow() + .is_leaf + { + let mut node = node.borrow_mut(); + let mut child = node + .leaf + .get_mut(index) + .unwrap() + .as_ref() + .unwrap() + .borrow_mut(); + child.count += 1; + child.total_red += color.channels()[0] as u32; + child.total_green += color.channels()[1] as u32; + child.total_blue += color.channels()[2] as u32; + return; + } else { + insert_color( + quantizer, + color, + level + 1, + Rc::clone(&(node.borrow().leaf[index]).as_ref().unwrap()), + ); + } + } + } + + insert_color(self, rgb, 0, node); + } + + fn reduce_tree(&mut self, num_colors: usize) { + // Nested function that is called recursively + fn reduce_tree(quantizer: &mut OctTreeQuantizer, num_colors: usize, level: isize) { + if level < 0 { + return; + } else { + let mut removals = Vec::new(); + let list = &quantizer.color_list[level as usize]; + for node in list { + if let Some(node) = node { + if node.borrow().children > 0 { + for i in 0..8 { + let mut color: Option<(usize, u32, u32, u32, usize)> = None; + + if let Some(child) = node.borrow().leaf.get(i) { + if let Some(child) = child { + let child = child.borrow(); + color = Some(( + child.count, + child.total_red, + child.total_green, + child.total_blue, + child.p_index, + )); + } + } + + // need to mutate node, which conflicts with previous borrow to retrieve the child + if let Some(color) = color { + let mut node = node.borrow_mut(); + node.count += color.0; + node.total_red += color.1; + node.total_green += color.2; + node.total_blue += color.3; + node.leaf[i] = None; + node.children -= 1; + quantizer.colors -= 1; + + removals.push(color.4); //save for further processing outside loop (and borrow of colorlist) + } + } + node.borrow_mut().is_leaf = true; + quantizer.colors += 1; + if quantizer.colors <= num_colors { + return; + } + } + } + } + let color_list = &mut quantizer.color_list[level as usize + 1]; + for index in removals { + color_list[index] = None; //set to None here, Option removed later + } + + reduce_tree(quantizer, num_colors, level - 1); + } + } + + // call to nested function + reduce_tree(self, num_colors, (MAX_LEVEL - 1) as isize); + } +} + +struct OctTreeNode { + children: usize, + level: usize, + parent: Option>>, + leaf: Vec>>>, + is_leaf: bool, + count: usize, + total_red: u32, + total_green: u32, + total_blue: u32, + index: usize, + p_index: usize, +} + +impl OctTreeNode { + fn new() -> Self { + Self { + children: 0, + level: 0, + parent: None, + leaf: vec![None; 8], + is_leaf: false, + count: 0, + total_red: 0, + total_green: 0, + total_blue: 0, + index: 0, + p_index: 0, + } + } +} + +fn get_bitmask

(color: &P, level: &usize) -> usize +where + P: Pixel + 'static, +{ + let bit = 0x80 >> level; + + let mut index = 0; + if (color.channels()[0] & bit) != 0 { + index += 4; + } + if (color.channels()[1] & bit) != 0 { + index += 2; + } + if (color.channels()[2] & bit) != 0 { + index += 1; + } + index +} diff --git a/webclient/src/samples.rs b/webclient/src/samples.rs new file mode 100644 index 0000000..37f6c0a --- /dev/null +++ b/webclient/src/samples.rs @@ -0,0 +1,230 @@ +use std::sync::OnceLock; + +static MEM: OnceLock> = OnceLock::new(); + +pub fn samples() -> &'static Vec<&'static str> { + MEM.get_or_init(|| { + vec![ + "12110f", "131211", "21201b", "21201d", "212213", "22211b", "23221d", "23221f", + "24231d", "ede4d0", "ede4d2", "ede5b8", "edea91", "edea92", "eee6d1", "efe2b2", + "252520", "262527", "262628", "272826", "291f19", "292927", "292a29", "2a2a28", + "2a3960", "2a3961", "2b3a5f", "2c2c24", "2c3b64", "2c3c40", "2e2d26", "2e2d28", + "2e2d29", "30301c", "303030", "303131", "303632", "31302b", "313131", "32373a", + "32373b", "333a73", "334840", "343a6f", "343b73", "344845", "353420", "35342f", + "353a39", "353b43", "363531", "363c71", "36414c", "364968", "373530", "373a54", + "373b46", "373d2f", "373d47", "373d71", "382f1f", "383732", "383831", "383832", + "383a46", "383c4f", "383d48", "384142", "38495a", "384b51", "393b39", "394235", + "3a4042", "3a4242", "3b4435", "3b4a6b", "3b4f6b", "3c3b34", "3c4d5f", "3d342a", + "3d4343", "3d4a63", "3e3524", "3e3830", "3e3e32", "3e3e4a", "3e3f27", "3e4543", + "3f3f3a", "3f404f", "3f423b", "3f4b56", "3f527a", "3f5352", "40434b", "404358", + "413327", "413d2c", "413f56", "41403d", "414646", "41494e", "424b4a", "43423c", + "43475c", "434943", "434a54", "435969", "44414a", "444933", "444d4e", "453a2c", + "453b2f", "454048", "454534", "45453e", "454c48", "454c4c", "463728", "463e36", + "464226", "464540", "464832", "464e4d", "473e2f", "47443b", "474550", "475141", + "475237", "475f6e", "484841", "484846", "484853", "484b43", "484c49", "485162", + "49323c", "493c3b", "494941", "494a3b", "495950", "495c62", "495d6d", "4a4052", + "4a4326", "4a4a42", "4a4c3f", "4a4c41", "4a5050", "4a5159", "4a5f6e", "4b3541", + "4b4737", "4b4941", "4b4b44", "4b4b57", "4b4c4b", "4b4d4c", "4b4f41", "4c4b57", + "4c4f59", "4c505b", "4d4533", "4d4b4b", "4d4b58", "4d4d44", "4d4d45", "4d4e47", + "4d4f39", "4d545d", "4d5554", "4d5656", "4d616e", "4e3b2e", "4e3d1d", "4e4752", + "4e4f4b", "4e5454", "4f3124", "4f3d29", "4f4735", "4f4b47", "4f4e43", "4f4f4e", + "4f5145", "4f514f", "4f584f", "4f5857", "50281e", "50393a", "504543", "504729", + "504f3b", "505052", "505440", "505542", "50574e", "505968", "50656a", "513c2e", + "514131", "514636", "514c39", "515145", "515241", "515762", "515a57", "51646b", + "52524a", "525a61", "525c55", "534836", "534a31", "535250", "535959", "544b3b", + "544c3a", "545447", "54544c", "545531", "545650", "545863", "553d28", "55442a", + "554936", "554a39", "554e30", "554e31", "555133", "555556", "555f54", "55698e", + "556f73", "56422d", "564635", "565648", "565656", "565843", "565e46", "566448", + "566454", "573823", "57422c", "574642", "574e3e", "575651", "57574f", "57584b", + "575d54", "583f2d", "58462c", "584c3c", "58503f", "585348", "585763", "585a56", + "585f69", "594a35", "59594d", "596063", "596068", "596562", "596e6f", "5a4826", + "5a4a38", "5a4a3b", "5a552e", "5a5b4e", "5a5f49", "5a6168", "5a624d", "5a6674", + "5b4332", "5b4636", "5b492c", "5b4a22", "5b5237", "5b542f", "5b5b50", "5b626c", + "5b6651", "5b666e", "5c4331", "5c462e", "5c4831", "5c4a37", "5c4f2b", "5c534e", + "5c5c5c", "5c5f68", "5c655f", "5c6f70", "5d3c2b", "5d3c2c", "5d4520", "5d4625", + "5d495c", "5d4b31", "5d4b32", "5d4f4a", "5d5539", "5d5644", "5d5d55", "5d5e4f", + "5e3d30", "5e3f32", "5e4625", "5e4c29", "5e4c3a", "5e4d34", "5e504c", "5e685d", + "5e693e", "5e6b51", "5f402b", "5f4827", "5f4e28", "5f5443", "5f544f", "5f5741", + "5f5a33", "5f6259", "5f664f", "5f6670", "5f6768", "5f6a4a", "60432b", "60452b", + "604931", "60503a", "606a3e", "607c7b", "614336", "616451", "616839", "616a69", + "616d9d", "61786a", "617963", "622f24", "623a26", "623a27", "623e2b", "624035", + "62432b", "62492e", "62502f", "625a3a", "625b45", "626361", "63453b", "636547", + "636563", "636744", "63674c", "636a61", "636c51", "638f7c", "638f7d", "643327", + "64391f", "64482c", "644e3b", "644f2e", "645466", "64586c", "645a70", "645e37", + "64645b", "646463", "653933", "654131", "654333", "654438", "65473a", "654f30", + "654f42", "655230", "65532e", "655f4e", "656160", "656366", "656559", "656c64", + "656c72", "656c75", "65705a", "663429", "664720", "66513d", "665d50", "665e4c", + "666047", "66655e", "667e69", "673d2a", "674154", "674232", "674737", "674a2c", + "674d37", "67514b", "675339", "675a3e", "675d51", "676568", "676b48", "676b5b", + "678353", "682626", "682726", "683326", "683849", "683d2a", "684230", "684635", + "684d3f", "68533a", "685340", "68604e", "686148", "68716a", "68726a", "68807d", + "691e2c", "69432f", "694d24", "695857", "696051", "696343", "696960", "696f47", + "697c90", "6a1f2d", "6a4029", "6a4125", "6a4428", "6a4631", "6a493a", "6a4a29", + "6a4e21", "6a4e2f", "6a6a62", "6a7360", "6b2231", "6b3a21", "6b4026", "6b523b", + "6b5933", "6b6251", "6b6f5c", "6b705a", "6b7375", "6c312d", "6c3727", "6c372b", + "6c392a", "6c412b", "6c4331", "6c4738", "6c5928", "6c5937", "6c5a37", "6c5b34", + "6c5e64", "6c616a", "6c633a", "6c6641", "6c7370", "6c8c6e", "6d4624", "6d4834", + "6d492a", "6d4f23", "6d5058", "6d522d", "6d5732", "6d5a31", "6d5a33", "6d5a43", + "6d6d65", "6d6e5f", "6d8759", "6e4028", "6e4624", "6e4a2e", "6e5034", "6e5631", + "6e5b60", "6e635f", "6e6a3b", "6e7251", "6e7776", "6e8a7f", "6f4b39", "6f5233", + "6f542f", "6f5830", "6f5936", "6f5958", "6f5d3a", "6f5e33", "6f6072", "6f7d76", + "6f828c", "6f8f71", "70391d", "704022", "704620", "704f27", "705022", "70543b", + "705528", "70554f", "70673e", "70693e", "706b45", "707369", "70796e", "70916b", + "71301e", "714728", "714730", "714831", "714a30", "715c2d", "716068", "716235", + "716857", "716a3c", "723932", "72422c", "72492d", "725627", "725733", "725922", + "725a22", "725f40", "72603c", "72613a", "72726a", "73342e", "733834", "733e24", + "735544", "73572d", "735b5b", "735e4e", "737365", "73794b", "73795b", "737963", + "737f77", "742e34", "742f32", "74352d", "743d2e", "744833", "744f35", "745045", + "745325", "745739", "74573c", "746234", "746264", "746457", "74705d", "747848", + "747d78", "753034", "753d1f", "755d30", "756535", "756a44", "757144", "757365", + "757568", "7583a6", "758d72", "763d34", "764650", "764d31", "765c4e", "766452", + "766f52", "767241", "767244", "767251", "76766d", "773a3a", "774320", "774429", + "77452d", "774b34", "775245", "77593a", "775c2f", "77653f", "776541", "777568", + "777767", "783620", "783836", "78383b", "78452a", "78472f", "78482f", "785237", + "785433", "785737", "785825", "785f3f", "78612c", "786539", "786879", "787245", + "78766b", "787870", "787e67", "793135", "793620", "79383b", "79404d", "794456", + "795b29", "79616b", "796853", "79827e", "7a3638", "7a3c48", "7a432c", "7a452d", + "7a492d", "7a4b2f", "7a5628", "7a5b29", "7a5d24", "7a6950", "7a754a", "7a7e67", + "7a8347", "7a8665", "7b3a27", "7b3c48", "7b3f21", "7b472a", "7b5139", "7b5c2e", + "7b5f39", "7b604e", "7b6125", "7b6224", "7b625c", "7b6656", "7b6944", "7b7563", + "7b7a6b", "7b7c6f", "7c3b34", "7c3e2a", "7c402d", "7c452b", "7c4542", "7c4a30", + "7c4b2e", "7c5032", "7c5437", "7c5928", "7c5e31", "7c8164", "7c8379", "7c867f", + "7c8c5d", "7d4624", "7d4d34", "7d5645", "7d5926", "7d5928", "7d602e", "7d6134", + "7d806b", "7d8577", "7d877c", "7d877d", "7d8965", "7e4120", "7e472f", "7e4925", + "7e4a37", "7e562d", "7e592d", "7e5d28", "7e7266", "7e726e", "7e7763", "7e7764", + "7e7964", "7e887d", "7e8c71", "7e8e52", "7e9b69", "7f401e", "7f4838", "7f4d37", + "7f5639", "7f5827", "7f5e60", "7f604d", "7f6156", "7f633d", "7f6b2e", "7f7347", + "7f827a", "7f846a", "803d29", "803f2b", "80403b", "804937", "804b3d", "804e29", + "804e2c", "805130", "805335", "805441", "805644", "805d44", "806051", "806c51", + "807a63", "807c53", "807e71", "80855b", "808c68", "813a26", "813e31", "813f31", + "814f30", "815230", "815737", "81583d", "815a32", "815b3d", "816b5b", "81734d", + "817b5a", "81826e", "818370", "824432", "824e2c", "825037", "82552e", "82562e", + "825e50", "826130", "826243", "826321", "826d37", "827443", "82846f", "828b5e", + "829399", "833128", "834b31", "835231", "835341", "835747", "835949", "835f56", + "836559", "836934", "836e42", "83856c", "838b4d", "84492a", "844d2b", "844f39", + "845028", "845231", "845439", "84644f", "84655a", "847b47", "847e68", "84a162", + "84a163", "853022", "85481e", "854854", "854c58", "855437", "855535", "85553e", + "855b1f", "855e2e", "855e51", "856128", "856836", "856b35", "857a66", "85887c", + "859156", "85b0ad", "863d37", "864536", "864a2b", "864c25", "86532e", "865a33", + "866345", "866c3b", "866d35", "866e4a", "867348", "868159", "868550", "868c61", + "869e61", "873e4f", "874724", "874e26", "874e39", "87522e", "87523c", "875844", + "875b30", "875b3f", "875c4a", "875d34", "875d41", "876330", "877163", "87744e", + "87744f", "877a54", "877d72", "877f6c", "87b1ad", "884834", "884e2c", "885837", + "885c39", "885f41", "886055", "88685d", "88692f", "886a49", "886b31", "886e68", + "886f30", "88775d", "887a4a", "887e72", "888168", "88835b", "888492", "8895a0", + "894b36", "895c34", "895e4a", "896156", "896d46", "897232", "89726f", "89785b", + "8a4a32", "8a5933", "8a5a42", "8a5f30", "8a633b", "8a6727", "8a6a2e", "8a7e46", + "8a855b", "8a8e65", "8a9355", "8b4d30", "8b5745", "8b5a49", "8b604f", "8b6c63", + "8b773d", "8b7d8e", "8ba784", "8c4d36", "8c552d", "8c5d44", "8c6249", "8c6853", + "8c6b34", "8c6c26", "8c6e55", "8c6f36", "8c7754", "8c7d4d", "8c833b", "8c846e", + "8c8568", "8c8762", "8c935c", "8c9a6e", "8d4328", "8d532b", "8d5634", "8d5734", + "8d5937", "8d6349", "8d643c", "8d6535", "8d692e", "8d7262", "8d7539", "8d7760", + "8d895a", "8d96a8", "8d978c", "8d9f7f", "8da96c", "8db29b", "8e4326", "8e4640", + "8e4e2f", "8e5635", "8e714f", "8e783a", "8e7e54", "8e866f", "8e8955", "8e8b57", + "8e8e4c", "8f4326", "8f4f2e", "8f542c", "8f5624", "8f5a2d", "8f5c37", "8f6141", + "8f653b", "8f6659", "8f7065", "8f735c", "8f7631", "8f783b", "8f8f4b", "8fa27e", + "90442f", "905121", "905229", "90523b", "905337", "905d3e", "906140", "906a41", + "907741", "907b69", "908972", "90996b", "909971", "909c6e", "90aa84", "90ab6f", + "913826", "914c27", "914f39", "915352", "915539", "915729", "91603c", "916947", + "917849", "917a35", "91804b", "91967c", "91ac8c", "924c50", "92522e", "925428", + "925b36", "925b39", "926649", "92694e", "926a4d", "926b42", "926d31", "926d32", + "927339", "927a51", "927c32", "92834a", "928652", "934753", "934b26", "934b2d", + "935826", "935c33", "936f34", "93724b", "93844d", "939254", "939977", "93a27b", + "94533d", "94542f", "945528", "945732", "94573e", "945935", "945940", "94653a", + "947454", "947836", "94894c", "948a62", "94915a", "949872", "949b73", "949c64", + "949c68", "949d70", "949f72", "94af8c", "94b294", "955234", "95532e", "95532f", + "95602a", "956a47", "957044", "957a52", "959c79", "959c7b", "964920", "965a37", + "96602a", "966449", "966a46", "966e34", "967758", "967938", "969e70", "96a67f", + "975457", "975b29", "976b46", "976c5c", "976e38", "976e50", "977145", "977332", + "978560", "97a472", "97a965", "98472f", "98532d", "985a34", "986547", "986b34", + "986c54", "98733a", "987a37", "987b6d", "988042", "98915b", "989864", "996a38", + "996d41", "997054", "997242", "99915e", "999d7e", "99a096", "9a4c2d", "9a5a2e", + "9a5a32", "9a5d2e", "9a642b", "9a661e", "9a7243", "9a7529", "9a772d", "9a7738", + "9a7d63", "9a814f", "9a8b94", "9a8c56", "9a8e49", "9a934d", "9a9c71", "9ab594", + "9ab595", "9b4a34", "9b502f", "9b5436", "9b5b2e", "9b5d49", "9b6435", "9b6647", + "9b6a38", "9b7139", "9b734a", "9b7836", "9b7a44", "9b8352", "9b9559", "9c5121", + "9c5932", "9c5d58", "9c6625", "9c6d3d", "9c7644", "9c7737", "9c7b5b", "9c7f3d", + "9c8445", "9d3c25", "9d482c", "9d5131", "9d592b", "9d6031", "9d6d38", "9d7451", + "9d754c", "9d7e49", "9d803c", "9d8f96", "9d903c", "9d9149", "9d9686", "9da3ad", + "9e5137", "9e531f", "9e552d", "9e595c", "9e666b", "9e7849", "9e795c", "9e7b39", + "9e8557", "9e9aa8", "9e9b67", "9f4e29", "9f5661", "9f5c3c", "9f6025", "9f632e", + "9f633b", "9f642c", "9f673b", "9f6c3b", "9f714b", "9f7354", "9f774d", "9f792f", + "9f7e3d", "9f7e6f", "9f804b", "9f876a", "9f9346", "9f9787", "9f9f95", "9fb168", + "a04225", "a0462e", "a05227", "a05639", "a0623a", "a06343", "a07154", "a07244", + "a08a43", "a0ad87", "a1442a", "a14729", "a15e29", "a16427", "a16730", "a16739", + "a16d30", "a17034", "a17b4b", "a17e34", "a19258", "a25031", "a26320", "a26e41", + "a2742b", "a28359", "a2844a", "a29eab", "a2a15f", "a2aa7d", "a3432b", "a34a2e", + "a35a32", "a35c2a", "a3602a", "a3696e", "a3743a", "a37442", "a3753a", "a37636", + "a3773d", "a38f3e", "a39251", "a39d7c", "a3ab84", "a44e2b", "a45132", "a45b20", + "a46b35", "a46c77", "a4734d", "a4772e", "a47949", "a47e4f", "a47f5b", "a48455", + "a48d5f", "a4a16c", "a4ad80", "a55825", "a56130", "a5613b", "a56639", "a56768", + "a5693e", "a56a32", "a57042", "a57b3a", "a57c41", "a5947f", "a66139", "a66827", + "a6722c", "a67555", "a67746", "a67a35", "a6814b", "a6823f", "a68630", "a69d54", + "a7651c", "a76534", "a76834", "a76a31", "a77039", "a77459", "a7802e", "a7804e", + "a78152", "a78336", "a78a54", "a78d5a", "a78e6c", "a79455", "a79f8d", "a7a4af", + "a84d2d", "a85431", "a8623a", "a8775b", "a88057", "a8825c", "a88544", "a89671", + "a94126", "a94c2f", "a95723", "a95923", "a96d33", "a97a3f", "a97b5b", "a9977e", + "a99ba4", "a9a6a9", "aa4226", "aa4a22", "aa4b2e", "aa4d27", "aa5225", "aa6d2c", + "aa6e1c", "aa883c", "aa8a75", "aa9144", "aa9163", "aaa6a7", "ab4a2c", "ab5312", + "ab734f", "ab7e3d", "ab8146", "ab8d59", "ab954f", "ab965f", "ab994a", "ac5918", + "ac682a", "ac6a2f", "ac6b72", "ac795c", "ac7a47", "ac7b5c", "ac8558", "ac8943", + "ac8a44", "ac9459", "ad5e27", "ad6b21", "ad6e35", "ad7028", "ad793b", "ad7d3b", + "ad8037", "ad8c3b", "ad8c61", "ad924f", "ada874", "adb588", "adc4a9", "ae5032", + "ae7024", "ae7945", "ae812e", "ae8241", "ae8654", "ae8667", "ae895b", "ae8b5c", + "ae8c36", "ae943c", "ae9546", "af7734", "af8860", "af9747", "af9a62", "af9d7f", + "afb486", "afba86", "b04d2c", "b0883e", "b08e45", "b08f53", "b09050", "b0913a", + "b0a64a", "b0ba8d", "b1513a", "b15732", "b1682d", "b16a2b", "b18540", "b18f5e", + "b19458", "b19955", "b19c5c", "b1a55d", "b1bf9a", "b1c4a6", "b2543f", "b25528", + "b26e43", "b2713a", "b27223", "b2731f", "b27329", "b27536", "b27836", "b27b28", + "b27f27", "b28429", "b28738", "b28741", "b2894c", "b28f41", "b2944f", "b29b50", + "b29c52", "b2a36f", "b2babb", "b2c199", "b34b30", "b37229", "b37944", "b37a47", + "b38840", "b3a48c", "b46e1c", "b47149", "b4752a", "b4802f", "b4833c", "b49446", + "b49a67", "b49e50", "b49f5c", "b4a04c", "b58a3c", "b58c44", "b58d6d", "b58e47", + "b59b53", "b59d56", "b5a05c", "b5b7b4", "b5c6ad", "b6612e", "b68431", "b68b64", + "b68f44", "b69642", "b6974a", "b6a56b", "b6b689", "b75129", "b7512e", "b77434", + "b7752d", "b78f51", "b79454", "b7975b", "b79939", "b79c53", "b7a04f", "b7a256", + "b85132", "b87e42", "b8834a", "b89169", "b89170", "b89248", "b89542", "b89a4c", + "b89b5a", "b9581a", "b95d38", "b96c30", "b98138", "b9874d", "b9916a", "b99450", + "b99642", "b99843", "b99b4c", "b9a783", "b9a890", "b9bd97", "b9bf95", "ba832c", + "ba8a4b", "ba9a5a", "baa053", "bac8af", "bb7d34", "bb8c6a", "bb9235", "bb923d", + "bb9b48", "bb9c4d", "bba14d", "bba25d", "bba362", "bba557", "bbab6a", "bc6d23", + "bc6f36", "bc7f4f", "bc867e", "bc8e47", "bc9241", "bc9777", "bc9878", "bca967", + "bcb9be", "bcc29c", "bd8443", "bd8c46", "bd902b", "bda452", "bdab84", "be5531", + "be7330", "be7a2f", "be7e28", "be8355", "be872d", "be8829", "be9876", "be9e48", + "bea043", "bea451", "beaa79", "beb98a", "bec298", "becbb2", "bf6d24", "bf8853", + "bf8d32", "bf9871", "bf9a6d", "bf9e3f", "bfa065", "bfa383", "bfa862", "bfaa59", + "c05d3e", "c0754c", "c07a44", "c07c39", "c07d4f", "c0862f", "c08b2e", "c09198", + "c0949d", "c09735", "c09739", "c09e4a", "c0a751", "c0ab58", "c17e32", "c18b59", + "c18e5e", "c19e35", "c1a54d", "c1a873", "c1ac5c", "c28321", "c29231", "c29f3d", + "c29f5c", "c2a451", "c2cfb5", "c35b3c", "c37f47", "c3882f", "c38b2a", "c39368", + "c39585", "c39a40", "c3a544", "c3a57a", "c3a64d", "c3a862", "c3b381", "c47b1c", + "c4a249", "c4a75c", "c4a84d", "c4a986", "c4ac78", "c5674d", "c58b35", "c58c2c", + "c5a33f", "c5a956", "c5b177", "c5b697", "c5c776", "c67634", "c6b686", "c76e4a", + "c78a59", "c78b24", "c78c23", "c78e2d", "c7a84b", "c7b683", "c86646", "c8751b", + "c8b26b", "c8b468", "c8b58f", "c96e2c", "c96e33", "c98e34", "c98f2d", "c9953f", + "c9a955", "c9b35f", "c9c495", "ca8d59", "ca8f49", "ca943f", "caa863", "caaf62", + "cab978", "cab98c", "cab997", "cac1c3", "cad3bb", "cb8427", "cb8727", "cb8b2c", + "cb9138", "cbad8a", "cbbc83", "cbbc8b", "cbd5bd", "cc933b", "ccb084", "ccb486", + "ccbc72", "ccd2b8", "cd8926", "cd8b5a", "cd8d27", "cd912f", "cd9e41", "cda24b", + "cdac5e", "cdac81", "cdaf4d", "cdb65c", "cdb777", "cdbe77", "cdd2b8", "ce7837", + "ce783d", "ce8826", "ce9150", "cebe70", "cf781b", "cf7836", "cf922e", "cfae3c", + "cfb376", "cfbf83", "d07a39", "d08a56", "d0ae49", "d0b340", "d0b98b", "d0ba62", + "d19d70", "d1a849", "d1ab4d", "d1ad50", "d1b14a", "d1b577", "d1b86c", "d1c384", + "d29c48", "d2a230", "d2ac4d", "d2b88a", "d2c38c", "d3791b", "d4895f", "d49b62", + "d4af4f", "d4bf71", "d4c779", "d57a5b", "d5a376", "d5aa57", "d5b877", "d5bc6f", + "d5c09f", "d5c170", "d5c678", "d5c793", "d69649", "d69b72", "d6b664", "d6c3a9", + "d7b647", "d7c189", "d7c797", "d8a677", "d8ba4f", "d8c27e", "d8c991", "d8caa9", + "d9a268", "d9b849", "d9cb9a", "d9cc65", "daa456", "dab948", "dabb4b", "dac66f", + "dac8a4", "daca75", "dacc9a", "dace67", "db9a7c", "dbba4c", "dbca80", "dbce69", + "dbd07c", "dcbf6f", "dcc267", "dcd068", "ddb784", "ddc663", "ddd069", "dea94f", + "decfa8", "ded18c", "ded1a5", "ded298", "e0c980", "e0d2a5", "e19846", "e1b384", + "e1cb56", "e1d3a2", "e1d487", "e2cc6d", "e2d786", "e2d8b6", "e3d162", "e3d4bd", + "e3d6ae", "e4a14a", "e4d7a6", "e4d97a", "e5d6a1", "e5d7b2", "e5d89d", "e5d8b1", + "e6af8c", "e6cf6b", "e6d888", "e6d988", "e6d9b1", "e7c782", "e7d9a6", "e7db7e", + "e7dfc8", "e8ae8a", "e8dab3", "e8db90", "e8ddba", "e8de98", "e9cfa9", "e9de97", + "e9e488", "eac551", "eae27f", "eae2c2", "eae37f", "ebc851", "ebcc88", "ebd3ad", + "ebe083", "ebe688", "ecc69d", "ece2bb", "ece2d0", "edd75e", "edde8f", "ede0a9", + "ede4a5", "f0e5bc", "f0e788", + ] + }) +} diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 0000000..aeaf9b1 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,45 @@ +const path = require("path"); +const HtmlWebpackPlugin = require("html-webpack-plugin"); + +const dist = path.resolve(__dirname, "dist"); +const WasmPackPlugin = require("@wasm-tool/wasm-pack-plugin"); + +var mainConfig = { + mode: "development", + entry: "./src/js/index.js", + output: { + path: dist, + filename: "bundle.js", + }, + devServer: { + static: dist, + }, + module: { + rules: [ + { + test: /\.css$/, + use: ["style-loader", "css-loader"], + }, + { + test: /\.(png|svg|jpg|gif)$/, + use: ["file-loader"], + }, + ], + }, + plugins: [ + new HtmlWebpackPlugin({ + template: "index.html", + }), + + new WasmPackPlugin({ + crateDirectory: path.resolve(__dirname, "webclient"), + // WasmPackPlugin defaults to compiling in "dev" profile. To change that, use forceMode: 'release': + forceMode: "release", + }), + ], + experiments: { + asyncWebAssembly: true, + }, +}; + +module.exports = [mainConfig];