From efb58ea93dcb1d8408a668c244739957273c51de Mon Sep 17 00:00:00 2001 From: Xuan Sang LE Date: Tue, 9 Feb 2021 23:55:48 +0100 Subject: [PATCH] first complete version --- OnlyOffice/api/api.lua | 34 ++++- OnlyOffice/assets/icon.png | Bin 0 -> 2829 bytes OnlyOffice/assets/scheme.html | 15 ++- OnlyOffice/assets/templates/model.docx | Bin 0 -> 11314 bytes OnlyOffice/assets/templates/model.pptx | Bin 0 -> 29395 bytes OnlyOffice/assets/templates/model.xlsx | Bin 0 -> 7662 bytes OnlyOffice/build/debug/api.lua | 34 ++++- OnlyOffice/build/debug/icon.png | Bin 0 -> 2829 bytes OnlyOffice/build/debug/main.css | 9 ++ OnlyOffice/build/debug/main.js | 140 ++++++++++++++++++-- OnlyOffice/build/debug/package.json | 2 +- OnlyOffice/build/debug/scheme.html | 15 ++- OnlyOffice/build/debug/templates/model.docx | Bin 0 -> 11314 bytes OnlyOffice/build/debug/templates/model.pptx | Bin 0 -> 29395 bytes OnlyOffice/build/debug/templates/model.xlsx | Bin 0 -> 7662 bytes OnlyOffice/build/release/OnlyOffice.zip | Bin 0 -> 4933 bytes OnlyOffice/coffees/main.coffee | 122 +++++++++++++++-- OnlyOffice/css/main.css | 8 ++ OnlyOffice/package.json | 2 +- OnlyOffice/project.json | 4 +- 20 files changed, 348 insertions(+), 37 deletions(-) create mode 100644 OnlyOffice/assets/icon.png create mode 100644 OnlyOffice/assets/templates/model.docx create mode 100644 OnlyOffice/assets/templates/model.pptx create mode 100644 OnlyOffice/assets/templates/model.xlsx create mode 100644 OnlyOffice/build/debug/icon.png create mode 100644 OnlyOffice/build/debug/main.css create mode 100644 OnlyOffice/build/debug/templates/model.docx create mode 100644 OnlyOffice/build/debug/templates/model.pptx create mode 100644 OnlyOffice/build/debug/templates/model.xlsx create mode 100644 OnlyOffice/build/release/OnlyOffice.zip create mode 100644 OnlyOffice/css/main.css diff --git a/OnlyOffice/api/api.lua b/OnlyOffice/api/api.lua index 144b491..451fd95 100644 --- a/OnlyOffice/api/api.lua +++ b/OnlyOffice/api/api.lua @@ -26,8 +26,24 @@ handle.token = function() return result("sessionid="..SESSION.sessionid) end +handle.duplicate = function(data) + local file = vfs.ospath(data.as) + local tmpfile = "/tmp/"..std.sha1(file) + local cmd = "curl -o "..tmpfile..' "'..data.remote..'"' + os.execute(cmd) + -- move file to correct position + if ulib.exists(tmpfile) then + cmd = "mv "..tmpfile.." "..file + os.execute(cmd) + print("File "..file.." is duplicated with remote") + else + return error("Unable to duplicate file") + end + return result("File duplicated") +end + handle.save = function() - print(JSON.encode(REQUEST)) + --print(JSON.encode(REQUEST)) if not REQUEST.json then return error("Invalid request") end @@ -40,17 +56,23 @@ handle.save = function() end local file = vfs.ospath(REQUEST.file) if data.status == 2 then - print("download to"..file) - if not web.download(data.url, file) then - print("Unable to download") - return error("Unable to save file") + local tmpfile = "/tmp/"..std.sha1(file) + local cmd = "curl -o "..tmpfile..' "'..data.url..'"' + os.execute(cmd) + -- move file to correct position + if ulib.exists(tmpfile) then + cmd = "mv "..tmpfile.." "..file + os.execute(cmd) + print("File "..file.." sync with remote") + else + return error("Unable to download") end end return result("OK") end -print(JSON.encode(args)) +--print(JSON.encode(args)) if args.action and handle[args.action] then return handle[args.action](args.args) diff --git a/OnlyOffice/assets/icon.png b/OnlyOffice/assets/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..21d6726ac22f35408351fc7000a8d31174ecd086 GIT binary patch literal 2829 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 literal 0 HcmV?d00001 diff --git a/OnlyOffice/assets/scheme.html b/OnlyOffice/assets/scheme.html index 1f0b62f..cb1efa8 100644 --- a/OnlyOffice/assets/scheme.html +++ b/OnlyOffice/assets/scheme.html @@ -1,5 +1,18 @@ -
+
+

+ +

+

+ +

+

+ +

+

+ +

+
\ No newline at end of file diff --git a/OnlyOffice/assets/templates/model.docx b/OnlyOffice/assets/templates/model.docx new file mode 100644 index 0000000000000000000000000000000000000000..d167663e44c50c02ba36afc3bd0764079dc02938 GIT binary patch literal 11314 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

gVoTHn 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 literal 0 HcmV?d00001 diff --git a/OnlyOffice/assets/templates/model.xlsx b/OnlyOffice/assets/templates/model.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6c7b924e7dea6110405f08ed535883bb4ffa8700 GIT binary patch literal 7662 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 U=>`D6LtV0{DEl1c6aj$$1783yNdN!< literal 0 HcmV?d00001 diff --git a/OnlyOffice/build/debug/api.lua b/OnlyOffice/build/debug/api.lua index 144b491..451fd95 100644 --- a/OnlyOffice/build/debug/api.lua +++ b/OnlyOffice/build/debug/api.lua @@ -26,8 +26,24 @@ handle.token = function() return result("sessionid="..SESSION.sessionid) end +handle.duplicate = function(data) + local file = vfs.ospath(data.as) + local tmpfile = "/tmp/"..std.sha1(file) + local cmd = "curl -o "..tmpfile..' "'..data.remote..'"' + os.execute(cmd) + -- move file to correct position + if ulib.exists(tmpfile) then + cmd = "mv "..tmpfile.." "..file + os.execute(cmd) + print("File "..file.." is duplicated with remote") + else + return error("Unable to duplicate file") + end + return result("File duplicated") +end + handle.save = function() - print(JSON.encode(REQUEST)) + --print(JSON.encode(REQUEST)) if not REQUEST.json then return error("Invalid request") end @@ -40,17 +56,23 @@ handle.save = function() end local file = vfs.ospath(REQUEST.file) if data.status == 2 then - print("download to"..file) - if not web.download(data.url, file) then - print("Unable to download") - return error("Unable to save file") + local tmpfile = "/tmp/"..std.sha1(file) + local cmd = "curl -o "..tmpfile..' "'..data.url..'"' + os.execute(cmd) + -- move file to correct position + if ulib.exists(tmpfile) then + cmd = "mv "..tmpfile.." "..file + os.execute(cmd) + print("File "..file.." sync with remote") + else + return error("Unable to download") end end return result("OK") end -print(JSON.encode(args)) +--print(JSON.encode(args)) if args.action and handle[args.action] then return handle[args.action](args.args) diff --git a/OnlyOffice/build/debug/icon.png b/OnlyOffice/build/debug/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..21d6726ac22f35408351fc7000a8d31174ecd086 GIT binary patch literal 2829 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 literal 0 HcmV?d00001 diff --git a/OnlyOffice/build/debug/main.css b/OnlyOffice/build/debug/main.css new file mode 100644 index 0000000..6deea5e --- /dev/null +++ b/OnlyOffice/build/debug/main.css @@ -0,0 +1,9 @@ + +afx-app-window[data-id="OnlyOffice"] div[data-id="editor-area"] p{ + text-align: center; +} + +afx-app-window[data-id="OnlyOffice"] div[data-id="editor-area"] button { + width: 250px; + +} \ No newline at end of file diff --git a/OnlyOffice/build/debug/main.js b/OnlyOffice/build/debug/main.js index 249ee6f..9c7f42f 100644 --- a/OnlyOffice/build/debug/main.js +++ b/OnlyOffice/build/debug/main.js @@ -8,23 +8,87 @@ } main() { - var placeholder; this.currfile = void 0; if (this.args && this.args.length > 0) { this.currfile = this.args[0].path.asFileHandle(); } - placeholder = this.find("editor-area"); - placeholder.id = this.eid; + this.placeholder = this.find("editor-area"); + this.placeholder.id = this.eid; + this.find("btn-open-file").onbtclick = (e) => { + return this.openFile(); + }; + this.find("btn-new-doc").onbtclick = (e) => { + return this.create("word"); + }; + this.find("btn-new-cell").onbtclick = (e) => { + return this.create("sheet"); + }; + this.find("btn-new-slide").onbtclick = (e) => { + return this.create("slide"); + }; if (this.currfile) { return this.open(); } } + create(type) { + var ext; + ext = void 0; + if (type === "word") { + ext = "docx"; + } + if (type === "sheet") { + ext = "xlsx"; + } + if (type === "slide") { + ext = "pptx"; + } + if (!ext) { + return this.error(__("Unkown file type")); + } + return this.openDialog("FileDialog", { + title: __("Save file as"), + type: "dir", + file: `home://Untitled.${ext}`.asFileHandle() + }).then((d) => { + var file, model; + file = `${d.file.path}/${d.name}`.asFileHandle(); + // copy file to destination + model = `${this.path()}/templates/model.${ext}`.asFileHandle(); + return model.read("binary").then((d) => { + var blob; + blob = new Blob([d], { + type: model.info.mime + }); + file.cache = blob; + return file.write(model.info.mime).then((r) => { + file.cache = void 0; + this.currfile = file; + return this.open(); + }).catch((e) => { + return this.error(e.toString(), e); + }); + }).catch((err) => { + return this.error(err.toString(), err); + }); + }); + } + + openFile() { + return this.openDialog("FileDialog", { + title: __("Open file"), + type: "file", + mimes: this.meta().mimes + }).then((f, name) => { + this.currfile = f.file.path.asFileHandle(); + return this.open(); + }); + } + open() { if (!this.currfile) { return; } - console.log(this.currfile); return this.exec("token", { file: this.currfile.path }).then((d) => { @@ -33,8 +97,9 @@ } this.access_token = d.result; return this.currfile.onready().then((meta) => { + this.scheme.apptitle = this.currfile.path; + $(this.placeholder).empty(); if (this.editor) { - //@scheme.apptitle = @currfile.path this.editor.destroyEditor(); } return this.editor = new DocsAPI.DocEditor(this.eid, { @@ -43,13 +108,13 @@ return this.newDocument(); }, onRequestSaveAs: (e) => { - return console.log(e); + return this.saveAs(e); } }, document: { fileType: this.currfile.ext, key: meta.mtime.hash().toString(), - title: this.currfile.path, + title: this.currfile.filename, url: this.currfile.getlink() + "?" + this.access_token }, documentType: this.getDocType(this.currfile.ext), @@ -86,12 +151,67 @@ } saveAs(e) { - return console.log(e); + var rfile; + if (!e.data.url) { + return; + } + rfile = e.data.url.asFileHandle(); + return this.openDialog("FileDialog", { + title: __("Save file as"), + type: "dir", + file: `home://${e.data.title}`.asFileHandle() + }).then((d) => { + var file; + file = `${d.file.path}/${d.name}`; + // copy file to destination + return this.exec("duplicate", { + remote: e.data.url, + as: file + }).then((r) => { + if (r.error) { + return this.error(r.error); + } + this.currfile = file.asFileHandle(); + return this.open(); + }).catch((e) => { + return this.error(e.toString(), e); + }); + }); } newDocument() { - console.log("create document"); - return this.error(__("Unable to create document")); + return this.openDialog("SelectionDialog", { + title: __("Create new"), + data: [ + { + text: __("Open a file"), + iconclass: "fa fa-folder-open", + type: "open" + }, + { + text: __("Document"), + iconclass: "fa fa-file-word-o", + type: "word" + }, + { + text: __("Spreadsheet"), + iconclass: "fa fa-file-excel-o", + type: "sheet" + }, + { + text: __("Presentation"), + iconclass: "fa fa-file-powerpoint-o", + type: "slide" + } + ] + }).then((d) => { + switch (d.type) { + case "open": + return this.openFile(); + default: + return this.create(d.type); + } + }); } uapi(action) { diff --git a/OnlyOffice/build/debug/package.json b/OnlyOffice/build/debug/package.json index 26e9ddc..cc0de41 100644 --- a/OnlyOffice/build/debug/package.json +++ b/OnlyOffice/build/debug/package.json @@ -9,7 +9,7 @@ }, "version":"0.0.1-a", "category":"Other", - "iconclass":"fa fa-adn", + "icon":"icon.png", "mimes":[ "application/vnd.oasis.opendocument.text", "application/vnd.oasis.opendocument.spreadsheet", diff --git a/OnlyOffice/build/debug/scheme.html b/OnlyOffice/build/debug/scheme.html index 1f0b62f..cb1efa8 100644 --- a/OnlyOffice/build/debug/scheme.html +++ b/OnlyOffice/build/debug/scheme.html @@ -1,5 +1,18 @@ -

+
+

+ +

+

+ +

+

+ +

+

+ +

+
\ No newline at end of file diff --git a/OnlyOffice/build/debug/templates/model.docx b/OnlyOffice/build/debug/templates/model.docx new file mode 100644 index 0000000000000000000000000000000000000000..d167663e44c50c02ba36afc3bd0764079dc02938 GIT binary patch literal 11314 zcmeHt^+QzK`u-5oNVkA=!;qrH0Mbaq&`1qAbT>*U-QC?O2uMqVbc2*gcPjlIJ@?$> z@t*JJAGmk_ux9q!`+4`;Yd`N=>wVU%B!_^A4?qH-0000gz;fO=R2vQec>DkWzyqMb z>pZu$ae~-5y;O6zgE;E3yIDgY=ODr}W&z+~_y6zsFYbZbxIvqbKx~O`@mE;U_3B1j zIVH^Sp~4AlD%;4!p77w?nBL~QRy=rRb+~9WC^a4TwW&cR&Pld?c9G zBb=Ke;D(TUW(?arw?a$yWa@RmTOO?>_VT%<2=k|oJUaIu8*$DEv zb(RQu-^RkV^>+jS;Qk%~p!7GFq=+W1KZNm20p@Y&FqeGk0D(Gku>UCk=ZgQu{`bqP zm&J5gb^={IFJ=J8#S2Y z+RIcISNm==WP=36cSxmG`*PKmEKN`J6gDyar+-YFyi-1dbp|KQdmaH$;9PATOgR2< z5))fvXKUE(^<&!l(_!FXa~I6cfA>)qGYBILZ0rua^H1_-6Yy3N`wEq%TA02CNKk-^ zSW$=0R@*A2Wp+mmJ{&nzBsq@w@hyyWgt&%HdKPB&Ibd&vReH`ayA@MZ9*AOFX;|%& zGZRM}=;-T1Ge#{HuIi!*ulhzBB^CC3pS>A%6#14gpecMf%k-*n|t zAW_Nyc2|J0UC(*nT4H>sd~chwwBrB77U7w&Diz4?KJ3#rzpN&?j>&^qpqzNrrUY0n zWRx=0n5$5UwWK|_ySUvjqqI%0CS!vA?mcDCVO5f2gVuQVaRf_CJziwy79*9Su*W5A zDf6GK;Y|BhDgYZ%dyoJC92gmXvgTL5NF3@)CDa2{fsLM#~hyPytrtmH6h@QXp6wO1ml=j zjB5EsPi9*TD5<=&KEp^(c~*^6XXn`^p+SShHBKD=@a>#vkfMwyNvH8AVBzGxDn*d$ z9&=F8Oc7jMd4TYvz#CS~^eL3NmiplIvfc)8Z@;^@*OmYmoMJSnR(ZPR1=9}W&r_VmS9dowdV6F_DL{bqVP}h1s)e8qFZaTX|vc~Y_)1*AX z3kZXe$yilEmFwTp-){zMX{fEKC$M_66A*tWR>rvyZohb-hYas4*N6LN1?i;4cPC5U z{_O^c3s+*y7*|Lr#(w)1QEhShH{F-Rhm~toc<+7A%E*UVF$kU_eSaiDH+|jm+H>GN ztzd+=+9ee(Io0&J&0w-8=e_bM6U&V6XrRX9jFH$1vB1O7)I8(weut9`0_~}!4Bl^X zAnWvw2*a<^_ELzXmO>`d);={w*feVa8fe}@bKO{HfLMyxgRN*<|8uL2IJ9xG7Y(2q=Xj6vPe<@fZ$K2IhjMOAsjzT&L5-G zo|b$l*%RVcqASXvMgfWi?mNvdm}}MPwR7@fF0nDWf;1zH(_vw>hZU%=V$wXA@W;oW zBea|=$s%C#oQ+eyiyAEe<;3(DM?xFrK0FK<=Pf%wZmy(gsXUWjYxLM>?Vd)>!-y`k znyKJ_|KMGeIAdtjMa!CDzO_!6KP!BaNtM+I)w{}l-VDc6jUJ5*W2~UM2ei~XEQ^hoSp_V+{0F(ux*v`{aP?D-PB45t4%}%)e z%gdf*C<>=gOhvY7cGXxOecNo>gCuPRfU7m9g1AEDDoH&X1~C!2-h#5Pi}Ssuvqiuq z;X=%!(k zR~=IQSGZv{{Ydl2DdAa3`?y^6--B?Ljz1fgw)#~nO^xpi>~ptTm*=lgWj}{g>VNPE zLYS$zN*n-B1PGJF*Ft7g==zxYIt)0rH<_M2fqlQ;t4>FNQ-v(r|I8L`PBQkZadlJ< z)8Tw3TBQr>$<-jJ< z$W3ZytJ~?q;r-VPtJ+rgj5ChU1r8dWt~h~v79Xs1@wikatam_}r-is0F>s5E+x795KX#OK zQPyaLdyo8>AZA7$V@fRedFWD*2{t7 z7Ql4zPLUjS9(@t9At(duGbBRmZ66l&^SZu}Szp2^5Y)|PSi0F)kAl)YZ?{6~bB)5eLzdQOBiZoGinS!j>LT zE9sZgBM?*dB#wn)v#}kh?IRw_hU$KBEWRTVRu^qROom4R*TggGs z9Ri7A_ukQm(hA7tG_C`p3k$SBOUqO*jq1j|!`0arceQ7jYHb#n>@N|r#jSahB;~pI zlyvHLCSBa97%}U0Qx=Bb>SZGBmVzm;yIWMI`1BQ{#-3N7Tz~oStTTkFT5;rPXkWcRmbN$ZuVG@r^lO~gP3i=n|@ zijYkb!I#b6%KK!t2IF5+yy<8y;)^`()JaO80PC(Uo&X7PqunRVumr*tDz&zGZVbEk zzs<)hjP9vl4P{MHULaI1k_f*q$9v#%E4jjlyf6EX5RssMTl#8WA%A^(w{_uU0b$0s z`E6a2`>|et#_{|;**{GyWf=srb+9Eb0PU9rj3dO!$->6W@yC=>3tq5U;K%lUX>cz( zddi%De~Fu|P#v*m9pa{=c7Uve3&C5(q=oeA?X?|7;nFlQp}B?%C#P^bn({xn8d@-u z^cMoBpa^5dmhxi&E5+r%yHNNnmE~v=oBO+k7p=HaP*gu$Ub?$mNPS*W&6!nzkhSv6 zY)bGm3C-!4w1&W^s8(EDM*vwiG1pP?dzzq0RhC>?U@!&~D%}RZ?3x?y1&GVUdr>y>l!%M9Ug0O>H^3@Tascg%f?fAjzm! z>Ll|UWBj!Yqr6BAkSDb~hl~ueP>c%I6t8Y37I+;?haI1pDFDG8b;a^kD0_1t`#m)x z`oqSqlGiFDom!6~%9;s%(cjT(t2o`feeXu4O^hp1bzty0DteU>es`;84vDT*Jp0D$!wAd&DVQo$O; z$%Nx)p=ph>WsK2QIdMu@%|YznA;Z!W1`i&haJgabKab;Y5Nzu#3ZlD>^^q#HMr3K5 zzB`gZSyNwg^GIhe@XjM_K_Tf4rM)Gr(KHENul=^{32D?zq>Km65u$0D*}u^&MnRi) z$&M(KEY2Vd@NDh^&VI*dnjiO9o`g%GlGOkjQ`q_Uo{-YJ1e3WISmnJ(u&vB)WeRln zx&H`x0tfbG8XI^h#7NsTeZ(x2aGns5D)q5hw;r-u&R>>;hjP*Trp3XXblkBIGj29~ zmd2s{ixX$0Fp)QlvidAvyA>^DMt+?y`Ar-WfB?7pp0xu`)Ab~EqtsFV=3Hvp;{34VI>;> z8|ieCCc=AW!fQe`#QAFe8VAi|U#C~9Ifj_hZkS<8o0?oMBLQNPnQrc&*2WBl922gV;2H@p%ApuHg2l3gcT=|x36Qz3%RXqgFY6cX|8ePf zpWe>d2n$vPVId6epG!wmm?EoYXat4)aPrSFBbIAG?4HBGR{znK>b))ts~!9g3+-at z*-n%q$|gE$zG0HVsrAdzdnQ=fqq-MWgeco&+l9#^r$^r{c;@7=2If*WxFv&YKU&9I zTU}jydpk;@BHGmJ3b0stM2S#p%xGXepW-L;Tk%GZ$Kl-<+bU&67?bHV-0-mAoaMK5 zYcIFu?!4`-Xu}yk6D$fJXMR-kx|%K>cqf2A!z0_5sjwGTOSL%CJSpu&_-v{(n$PPE zAAj3^3mz`OiqGRKNyQ#&EXS~jB*`-L!k_nDoaO6jKS@q>6$}nV3A>)WoU=^anrjlJS#Sc;Dp(O(x?N?W}^ zmqL3l&LDe6^NhQ#4=1yM=qc_l$non%#SKHmixyFRwS_M!GY+*pS!0w*@oO4Eu!z~=>MC|iw_4tB8{j;OaEPr9{# z@{7Jao81Y43UwTgeYRK=;SDp>P$8sqq-3FP$;hC1FgAI)_h+7~b@!(Y(;=bZR%DD~ zxmfKUoNdiX&d$iC42%*!HMn#R;T2;GDk|0(O>9}~RCI4oW>qA0@;;II^R*p}x8u<3 z+zcSUd}ykxuIg=a!h}{=?rJAz^9EaP*_I0thv{UR;cohaYHh^HGl)Ywt2@xk-Q4@e zP*UUm@fkaws!kB@2EVeR%yrR@BC*e_e)sn8lt2i7WYQzlPUL_V@Yc??d>&Lolr}ie zgn6pdgPkQ`P4LQ9Q>C?klGEhW-THaf!SSjB+Ns&$Db_#sr0vkd$7ZmeY=`wEHcSnI zh4e}ewswvjhIV#890n$t{!amd^;}wvydq383_6s)c~kO@jr^u1FMK@Gqq`qFBmK&31xVh7L(21phSH` zTTj(EPRiS0`po2Ch~DF;>ptebdWDw;QIg5Fms33jZ~3*i!a?^}0;rzyN#uPa&Cs)U zwLs5g1Fb^4T0*?n10J>9^k-9tU^ZrAya3p2gWS?5i)Wl>z0xoBq<1|@C~04oCqD2l z^!DaV@$g`}`9~?g{e}9XEsUJ|FmmGjN={>2ho8gw|JVtmChQ1{(NpvX;s+hd-(cl^ zQ!)ruhG$iN$CAiuFS({?J)%ioE58tae8>h&>e6#_70x)lIJ2JUE@p0_G4IUpQ^F7E zLlC7~%jp|kFx_6J8PTLBX3F=&;58VfZflV#mMxmBnpS!B{!!RwT!2i`!051cya9CU zA+r&@6w1tJSv{Ox6+Huqtqgp>HDGfmf#%1zbPWV&Q$=rwW5Ob0cCrQ){FE{1)E<|0 zC}XdpTZw9H?1;={Ii#b4^{A&B=N>LpSL)BVac=ca@%;sJPmu5ox-xa zR6Ub{|40wlSmVI3{?V*4x6p=dQ~Idg*ZsD>+z8@{GpIuwDR3k?_6+14S~H#Kd)pVU5`L63Bzche-9NH4b0ZFy865ynwF3Zt z46;9^QAa0tDCB2c(VVX5xbOid=ulwdzI{yHGrI4@?90<(l7(O^#kEJ7eHIl|xHU@t z0Rxe<2bCNE72L0MjO-2P@odW1fUZ!Y_Sbo53x^}cVLr#r*vtZC@=J%|)EV8(ICGtI zTfMhaO<1`_j9Ll6VlE#(kJaw2Z;HORgSLu=5|`BOI2Iz{w1VR~bLE7=iQ|U1M1qiR z&$_S4!u%TU1G2YVzQl#BzGVrAM)B-gOr~NXCy?g0dRIY9pgUzq%80}#P-%m#J9z%P z{ct{gNtxzbNOg|TdA3lopwLEBsx`{=`HaOuiHn7G55wQN?LPdGy<=Ax`Dg=oH@Lmh{YbpEk>4 zAcp!IuI{Hb?vQ)k;xg8pLRD~=*ymksb2Vn3^D9A?E@{fuGR6_~4s9&L zyW34WI5}t0Ig082n9#XFH$(31&}^2aLi}=%(p$IXyM8jEsd{mW7;DyDQ%{6w=ipyzs#0OZA(+Sc_t;v~Z}_)ez+q*G8pAzTvs8TsGCVr|ZQHgfbtwH~r_tXm2)O zn}N_WpiB3s11@(P;hO5nclRqMMxL)&V>m`QUy`zH=aO)zcyYsxdwsx7{b>E&7hENi zE3R|%nwvXAJaz^}#~a^hSsZ_O?mc&@#-FbE4lB~6Q=B=;gXjezz z2U?%*-#w0|yJ_U3W<^qRwHLGzcN8>z?kK1)<|qgjbre((aTFvcA38oW=INb~$4OJ^ zZq?s%xT%r72Rr3j zC&c^f@oAKNQtQu+0bvzZzjz0Yk?7=(r5KS>hykcZLWjf!lL)!5JzTM>=`k}$< zEGdS%pU3Zh_A>8wzX+8}r;}op;fcgfI;|NHV#6ITbQIovI%1?SSG}D@j~71CKUU`A`_rRA^$RVG z`Q%>~)qC^qmlpHYOm)2MgbKb;8GFD1y*^l6yvP+uc=slajVO99-lq4%W*FP17#+u$ zPthmlxFK z=@+DPX-%Qeui6-|A5pyLY>)3l=OU{$M)f#)@-B_nK_$#9Rr_J(Y!L5faHSO8_zti1 zYi(Hq&^Sit42N9CZtb2ua9dWUIKxd$DlMV070e}54>a;Ko$ z;h2tS#vyLzsZc9qVwm{aAf{M`nTmQFQqYIk|H#t){woJ}_ensIOXBGjMM4Z7P9dw_ zbm&8P+im+}nMe>~Db?UL(O}>lQ4ZIX5bCEnKGu@CHg`dlhO*3xHsd{POm9y7VfJOuL8a#Udzc7E}b}lHVGs~tZ9$&$XMp?iw zyhRE1JOdxC9;^(>8nK)dnbESIy19Nejc+D!ALqtRxXd=oJKqMIBvJ~$yQ!|DNpm{S zbdK2E_F~X$F(?154b_m+mU{2p5nG{O3yI$nj2N1NFH!)Fd|$gx?xl>hkIsBu9h*76 zpy4B)*wK3W^5dtyB+-e4`c_Z)uxl5bMXRqj?^MoPZ>Jv=-eEZ}ZUw4>kBZ_QNAEvQ zO*5|9_AYgXQ;vClKBn=&67dnQjP4_gAdR_+TQZJ?RY#rBjOG%g;n?L8g!P7lfx;%W zuj8V|EZdpeBez-}9np+R2BOp|BbVXdpu{PQxw}2uNY3MobAqpmP3t z4f_=zv-po&8FODBJS$|-9=iz(X58*iG9i~&Q9L{}Qo7}wdUiACwE9l-MoF79y>Wp zy|Mek;N&bWNGQ`e$f8lho2H2i5a{{tkbrL7);O|y9sFBxkUAboZ%^XcyPKI z-ZIvH^ntat0a`4-W0!jcYp(rVjE1G|`$;BVcAcF#(nPk){2qv$waQveKHs13^8dSR zKc|v9iNIjOL9hF#i4(c-!G!s|zfAm}_J0~^fcCTe`EY01{r-d=MIBJP$?V0qp|dxG ziF8kvJN5;Ev6IW9^SX$&l+7~Jpg5D)^71(w48cE4>9| z2PN4RBQK_5kC1#M`OHj55X7*$eD@ zpZY|&9wCqjxK#1tw&rpbsOUMfjIylTap5Af7L>5@zFrl>dRu-Gd{2;hhy15t4+qZ% z({uhgx$d>=RIp#LfLPc{{+GnC-+_P6k@*$)4z@G>e`U=4Zt3^D ziN9=Z!!k(!Ba7m9`0tzHf5BB@5ywyX?_1-)oA`a><1Z5>utbhOf|Xxnv)|#rYpQ?2 zBVfDpKjD8lJeR{#P42tfk?AOU~_sqtG`+8bEf zYstG<8`x=3J6o9J=K=$fW&;3yegA)7|AQkio}~7xmlkS_hV*FO!YhDLmH^7(VB%B;z;Vv-1@2R-~iOeh~!Q51kq5hBSi zxcwfNToO@vNWa%V7CweddDbK=v))w>hKZ-49sz@`$cnV#8eZ0rzkpY_uu5VSJJ67a zF^qc!z_>%zVp>@gY*s=2kax9${kSg1y5}9(3XKR46O^c#3bIZUVaLQUn&en40#GN3 zLBgy@?~wM_5Shcc@8ldMC#OnU19XX@Ua#A#U5oJ=B#7~misW?i)nqRP4=G&3`0B1 zLeVCzLMCqE&m$2{2;r>mI04$0?GfEO?9c-apQ6JSjgI2BlyK=7zpfvmOBC-BPP;nyNvE7NIUX^e zIQ!0{Q%fi?Bf42SUAWVn1kO6ZU{;=)ee?ybQa?fJyS}je`S}e%`ahxE_{l!!+t(+% zUm%A1Lb;Z$fw>(G^&jv5i|+rykp8==m&dM&eftR?cm=XWFz&&;Mou_uZY6M>G5i9c zN7sh6fh|%v+u4z`t)oNb+c7@QjkiUlV)bB&d=*~{quEni${W4Zqr64oY>9{3gin{p z%mVrg5;k6EPF=G+%UFP#-=+Fz7~i!@PdD~e{%Of-M|km8HAze9 z8CHrXU3LoXz#^%LnjJ_kr@#xI8k;V|FsXw`eQ=2cNuvSUjP7X&N^&-yI4d5K0)byT znrenpa8QQZweb)}LY3w{X33|d@v~FTw1eWD$27Ze=23fLh*c4~%Ai0Ca@2_&v%QBD z!79BA|KVMpPI#7(?G1ez+*cU>5i@$~-|M@-K4JdC4gS|(YioNNJ986#13Q|(!ROD5 zpMO-yKY)B&bGlD^X&3yVB0015U zIN%?%|J$^!Z4KgFn)JO{#34*2}(;OlN6o;6D&xbdc)EcF;E2%mvSJ_4I;aFt!)LF$* z2B6K*p)z)DBS+%VZ z_yViuxPu_`Xqs93k$2i}H!?rgDH+bpPU~JoLw}Ab$f}9?@b>^Bpz}a*jow#>+XMn28WAKS)>R?KE?T=@{$@ z1wBL_z9`49ajeeISWk=VYfg#NDf@kP+<;ro4bJrv^!(Qe<+)vXN&Z!S!oP$j^1s39 zzoyc8(uU>gm%_LrxyPa0l42n8C&K3|u;fea{~>>Txv>u*gF{ja zshjor{PH|3YWS-tHtxHKf;?ft$6hodyh;L^Zqn@1gl@ESE&~$lUV?XgChttqb6=7Q zX9Y1Se5#2(F}hGOnfQt3nd_+w`5OPoyq}nz?q|sTCA?HGTtWgu^@3hADexo1x4nk zzL?)z3{67k8i8QuY&YBcP|Jmqp>OSQ*oaBj=~$gbnF*PT*--#CB2V3HSQ8)K`K#rc zM3qh2E@Ge_q%|Z2%%y%IVxNeY9Xhu1+ZE_4HC1`jTinxdvhXBOE|WR zxG-W_*AoA^y-K=*yqp2JJP=*N&R?jCO#>RV^xN9l7gdraQnH5=4{G2Vqrtrr-jxe9 zbPuV~{Y~avm@}IK1%q$vNukp#)Xz_-zoKe%(x(RGuiQEU1^__$x7_+S zs{Rj>?vGcqTEj>7-Xgi+#^2Piwb|$|Ra-EjmpolH9(jw`6sl z)Q0o@PBE6BKj6a8c(leLAuW}RUO>(&q>zD;TH^OdMLvbF&|>?|Y;i>4e3if}Z&`!t ziS^rbC4+Xt85%GUb0ro0fS)mHV=fHTUC^ti@^1Uu$)NZUXe&_bA>KQh3(f^4en)J2 zeZHsrK;pbpm2w^d;0tj{(P@}l2t9^1)3`0<;FLUnhtP)j%>)1ePSnuVbtaXoA&mme zxlD_6|0z6G>cf$aO)1I4m}5bCB-hm9NOnIfv!g{+dSC=(1i}KO+1m=rL`_#Am3SwY zfHsORT+B4jtJC30cRQE4MR(>Kl)2sV!!os~lkGFj6E8ILibk26-X0`21I6}ZZMsq1 zK)J-IO{>K0+Owc--S}kO!83y-+QGTu&yLp}620_8fjL?Ryr3PYQM7MMw7CT_>~2E( zNF-=v&jJmxl+ahs$Xed0w?Kxs3~3trCdQnQ1u%5TXK6S_vDWVpWkXDF=t*O;9pK~# zxJgf1Qa^Avp5MO`QSmANK8+-FT&x`I|5M%n+byR5TL8bRKVn{ZNN4L9K^YD+blXVwf@Nq1f-(4!BvG_k z|Caa?C4>naH`%k&)#5t~9(MYH5mONoHNWQ0@9%m+m3D!!Jsdx7o`wB)XH?j}8;J!B z%*!p}A2@k6%8wxemRii8Z#;a}_WvJIVE*4Ie5D8Lzjzd={#%InN&7DzhW{Qhu>6Zh z;lG&-|7msfKb9Z=Hwu50Pr83`Nc{JRf&PD^@RbV;|AJ94$<-o2`BIKUVE;uuO6u6z z8`%CQ_4v12|G^9W3zC0$MM89Mu}b z$<$6R_M+u#+#$bHNGa)tlX-3eg*L#W$9hJkl5CjU@iXg4+#HCiu}3K`=s=4f3RPMiy!DC4E;eI4Ndoq{a3{R2!I)kIgKi=15kA#cUCW zF3kJeeiEPV?L1HJ2+vw=T2h2!66%kfh8$?Lpb|PvhSqu}D_Fb> zeX7J_MWHq;!=jPGm{KgGBcV^UB9|>g6@U*#`JHqYJBAyP| zTFU0W$BAq1ev|QDeX72jc9#-J`;pD!bxJ&1mB*YXn!~|!R;}OB)ruE=# z5~(1EvR?pVvH{g0Z&mvC_waQw&-FB%uw|MnJPe1|Z*>ap8@*c%GumKI8rWTaVpU@< z#WjBvcFvdY_1WHr3^m}3BTd!vr2(rlx|+=&Kl6cs<;tNV<{w@`kW~w0#jHCX`8A5_ z$GHgx;K{@SHg!sZd4zyS#l7d_;|UD$MK#v-e7v^4GZ(z?H0DjhTxC{??hJ8((s;~6 zZpfv_G3J3tU(@K6pk8*%BzwKGJV6`zEr0sd^y$EZeiqfJQ*2Fl_>o|7dYx7knw=+1 zy;*Q_q>lvK4@yAA(l2L_nt*cxZnC(8zS(Mo&dvDI&(Jp_n0nB;J5#&2u!VY_j6%MS zrs@c0qQoQYH-ISc0FH3)0QcK3B+0fVcr_)Cmj{V|u!p&W6lG5CR+$_Yp4cC*=IPMY z_AO(r&N*YQ)~#r>h{O`5wv8lx&{E+mC@2z9;4%5GTimTY%_k^M>s2;?AG+VMf9MdF z^X@yaz_@GF4?p2^Hw{-2t70@P5I7sh!=ls<+)V#mKA!w}R2wSLK?tRa3cO)i8U@yx zjPuaY+O2_@9VMpskOft>rgJE?!jZWq$9#V=4JXTf&AId-ROgZ|*hf1F`szU8aL8EA z?$F}-`tnG#)%juP(_otVaS0yO8zH}ev>J?vC>krXUu2_8qM5w1V-5_GEclHb3s@)l z$29}Yq1GMFJk(GN{$cK`+Kg6A$L|5+7IM2DBDIpTbcGFzwViW%g!F{N-iwwEl$M^C z-xvcjz(K|=r{+MG9%jp?duVK4#wE@{&l-BDq6U$z^Y%7R!qXKoL+}}HpKyCGT3_J* zM|v3Lq}?w5qKDxxgXo{q!=G!Ea>b3vRTkvVs`@K!gDU!G0v;X%a>U`%S$o6!>CLtf zjB>V`B_^`^()p!RE~za2s0`r4AhGI$A0H#vM|Pc8%Uo4k=Hh{-geV6K{ScMzU@_!J zAQiYjCSMH>2VrF~l|T&J36YG1<8KdNqLiuzlxucDubzaycNfp2|4MII)IE10*NQ_d zqo5W6`BYR-RPK}Jat`Rv0&LUQJbwLF)n9MBdVdpt@7|EhnsV(f7c0h$A4^-_zVgx>a2BJN6puZk~3(*#@VSR0tq-4Zx`3qm0sAfBu&I{^;lI}Ju#$ZBXT z+PIoZRuk`^tf}xxJixau-uBYinG}o)S|MoD{vd2-7^GmqzFBtwr-2sLM4^(3s?56< z@@@BGe2Ly}8+bHrMC;i@a!4EtZJ>>t-d6r)aKHFMF&laU#vQ+^j0YZE7ME1 zco#kjq6@;xYNp>@wZ@Wo8nm>*%yV_JCnb@xL(;j1KF!^KQEK<6oNJC#__7Zz-dP~9 z7X}lC6#3&j5MBE`+4tsEq}(bwq1#^~b^?&4GwkIIF~e-%jsWpt*jH`!2}Bjv^+G;3 zzc042B6WFE)eCvzwEMC&L>|I#-u_Uw#{I0(-`B|5TB$0&hd2i%0T z`GUOU!O3yQ7vwu*T)!Z1PtBo$BiMBZ7~J}ewl9@q#7%to>d*twrLwad%4el??CEf{ zZJ4;ucd19<+9CDXge~Lw(l|MMofJ0kk|9&*(tHu`A&v-R{C!{TaTyuDw2*k@xKAjy zEy9H#w`>;PRRYCp|Cyj&Q^y(}#J#zl@?9!1+|CXj4@yt?|oI1Es_UT*t^44zN(gBOx{{Jy%G&aJd%k_`LK{|Cvu8x*fMgbH;;fHB1`>^(!I#+U zm-HpI%Uc15)n+yI!KRZ@02hRCcw9x7+m-uwkM8eez@J)sTzM^WjS1d^ zX4(sW-bgT4U?bf5+gRf&K-z|2#|gVq?h;?Ixaew)8t|}HLslFOSx_wH)!<5NM9nhV zZEngAD?LB#$&ytgF+Ed!SZ?Lu57&ca(280%n$p*r=MSa^!a4X@c~%_V@}eWj{`9CLYHfx$zuQA7PTLbaLLU?m5BihB!{+gK6C{YS^i5n+Qi{l+sE zAC1^tI(84wP|pr^RE&&;mDcd2AUO=O~5dRVu#z0 z7H)VP_uo~o9!I{5ymwy3&Nz;U8z(S_Uo6Y>uJu&G*x6G=lxK_wu9!P`2r#KlM2W1u z13mQQc9()YGU7B9*{O*L!PFZq?4e8;WO%>}DNu0nbQLru8ME@Qm9s60(=LoO;5irp z*v%uw1QB)>1oM%=b{yx(Melv*wq|Rz+;7W4<2qblwG^^Vn}3F#zmhL&jwM%HAeX#S z&65}oSpQl2iWSHv!m9C6>OX*|Cs#4=W={j~{%ru%vmRGTEWEojFX7%Z=Rt$4C_L5_ zkJ{y@f#5?=bOY}#ALdnXbUfCof@uzRv2Ru?WWwZoqv zvqR8`aG_}etnA#w{T8wW)^u}m2GkE?M*rPvnGZLg6okg(=-l_Mo!~)g({d{GkE=XD z8gEXIE>4m^eiZ@t8`SfO?h(tIL-Pc%193U&E{@{!t$LeZVeVd&gY@aMsCcilcq%v_ zF0{2WdrNKJ&cyVw3S8}BpyU3CxvWj|egv@`Y&ApN0R{}!OG?&=En^&;0yb{B7Xh+D zl%Z$Q{4mHfmZ)c4lM)^)wq!#@I@9D0jQRaj(?LHw<)$0{W=S z?Ab$kwly#s4-_=(JFWQ0+VETF5A}*^up_NX%}-*MqkEBQH~pLk9LCDUgN^T9Pe;GQ zTo=gagf;T4T8t*wXdQg*aVIK5=pCreUF9fjV)SyHnWAR#`(;kAZWRG;#d6pgHM-nC z&WdQVKDqcSPYb;kO81UrhbxWBU2=knM6sLaNNW)N<)Ef?8vy6Jn`F28oKpqjN|--^ ztMvSZF^XPB-kGlO&cMCy)oH@QmvS{nl~gnwuRPmIxMerz13X{87rB+6#jWY@Pao+l6wyZWF`Jg1q##`zwt^36?xWI?8^Zru+e?)BUW*e25^l zj`wm&cbWido}W>E}qw`3eEl@?4=mI*|1{H1%M-%q&6fFKRZf4_(L0- z6C5`jJSY$*V5HhMuUGLZQg9R-E}W+lx$QML)=+90sDgbQ?Z9*!nYE_IV={zP=u>cv z>Lw;2*39eJbS@mQoTHc+%Q25U3+a!K8Ek>U6f?TS)UVI;_)x&O0zLV!v}dfDDwgX< z&Au(HGICoS9ZOIoZVqs4rAc1qG{iX%#%rE&es{zlA8IA&(F&B*jT?Qh4(z9P=moEY z^*tW*pE>_Niyf10dWTCPNmM)8{S!bWFR~F+MMU?F8&>M#b;bn(7~F6_uwU)e+89PPLm| z+C_{bEZCAlroEHiO+Z}$AC~+F&&Pdexkc_2_lM?BzYBiXvxICqi3Mqh(bW9-b+ZC_ zvuZ}T)O|^>exHmYm9{rQyeJ-vW<7_6s)bsTMHE(WB}H;Q50j_8OPwotOr4ZBLK?Yu zJsQ>JSS182&qyUIhSwOoZaz`=n}s|gyC`?}7pE7%)HFT|D2V$pH)S3*CE3v-J{N4b zWWf?>;dE`tc$XTbP7pN<=O)iPIo&0)3VkY)eFxQ5)(PDyKN@K&z)L>E!^a7$6-f!V zl+w(o#?weQ3|L=(1enhi=-dIh*iam;m~c?LLZA!CW=2{icc+Kf?cSOf=YFY0YbgY7 z07bzX?y4B1z^*eJE|JXnAa8Q(jx8h@El$+BJp*(fQ6%b!_5Fgp7B9;fQ4PvQmWvV; z=+3VNZBhCW6q-B1!Li2jJK#@&FA<`c=(Dxx`z1p9Sb}r4k#XqI-Op6dDj?oge+MOw zJSwlxGl`15&J#O|@tmw34$t&kUx}TJeg35tL04e^i~UQ3sKNeo9RJOU_&V3H#`JZr z0qh(H_(FB&F(`s9fLN{1n*rj~{;^(QjgL&`yUEg~baqt(r&Lz{TdV6P02$=pAHJ_0AM(^1SzTm%d37u>0;g=1S(CfFn%l z;QZN$_~PC`F8MYv+8HL31TVONx6SKGsi}#unHHZJL_YR+CA_qLN2+IeE3k!y624gx`)hRl%_N{UHJn1rplEm{GuoF?)>K%|5C4*bi?+k?ACs6prlrYsg9LHLjCtm(<3gD2JkKN)iGq;TQ1n z?=ZG%KS8LlOuEQ~#G9R`z)rTl(<8Q(M%<|{aBJ7^3cCtE5d!xE`bXUB48mzo&;j$- zp+#vJ6_ayeLSt2zCtt%#gN6{yCEzJZA>03Wj22mrfAj{>i6pclKbumskfC_Ld`lp3 z*0k?J@@UK~hd53edq89n;GFbP}urY>6oI6PC+H6%MMbz+Zf|~A5BZVGiApxmLrF_i#eLm0@kcuRC=WnvGrmQf_j0I;0=4` z)X8s`FyTA-NhUwrGc~_Y8hl5**qYoen{U=wx)rv8pt)%jA{Neqj&Lo~WU|^@54ka+ zYZ#O|RPi}7Qao*mJb?W%M-;V-Kho#1DZAs+SK(&T>iK?iWu?{i=H#QEAn63Qy@kUZ zf09}A1I39*5-cW(xFn&K*AgTSklWh@S=Hqjj5qPe-guTLsuKh=Ix6sJ+X$Y4Q<;q) z$zy6OIe4LSPbH-K8C2}X?yuWh0;rQ;KGIYntekL%8<93$sQ zQgmbL5BjBs)=cmrpueFikfVg%dnmlsY<*g*(HRK}%E`MQzg%%F<#3eU_)Y~~RxQOz zow7v`agdbn+8=Mu48HH|S9!T;!C@wT3Sf!`d}DH^$LDtU@!zSGq6g#^tJ{23ZD{@IF!|CZzffm_b)>AHT7?J5291)?%o);TPh9BMs z6SoYvd-3$7c|H^(EB)=U4?i-_+U!YRI!x$8q-<6uB8S5GM+}6%!;DCUslqhLg(zoq zQyzJjT&i3%Up)T7_PZc4R}1WGcUsQcV;=ZRqBGJ!2Y{u(>xlhXi2hzEfrP)2w$ZVn zY&H!xxMyqpLOCt&3H8GF#bFAUA=1b;MJ-a)ZTRoxdt_H{t{@m%qd)Wft6T_v4VDjE zVymz+(B$hO;@Nn=0Q^u8Mr`Aci$6*dh}K$6R1!SO!joh$3y+9^2t2Xj3NYg$t6sH- z%=D8Y=cydIu+mA$0=2nesmP^$=%e*`u4hXYZSZvsxXS%KGR|g&Bqj*+Ja3L57I*0R z3w#lfQ)8xlx25kmw3Z}U*b+zk!&N4@NNs4=*85(x0onFi|8^$lFl*Nxs}I*d}-J`~u|` z#R)v^8wEOB+FS~dM!=j>pP&f2;(nZO4bB;!OIea&?Y6AAYt7LLO24Ygmc_Zf#jjb0HX|b&8r%q>krw8cjfQl9!jatk zINeU@>7-U5qq_0BnTM zSHuX@ej_j)ovcL6gftR1OlwKlF;~JTYErOmlddi&*X`*Nlq6N%Xs7P#iF0n_0@_^( zDb*3cb8W*R{oLi&B%P0>tXu8}o+b0@N|&4c;y;c~T#n|kz%od|hcaZg-Eg|R95bb2 zHRGjr9S$s!Z&|AMNRE?0fHygN-;#bvsAgz`KQ!{=m-_J!l5 z>=%Q`jAQ#VM6rctoZ~Yi`);=uczy9;=yT zE?CLWEBF}UbQ-}*z!NT;3FvT(yg2%N>s+C5Ekm42*U^`F6EHPmd(^Q_;_81yRegr3 zFTCX$0V0NqhgKyTBTdTI!Bj+49#JK!kDV4HqzEY|YK&bLL!|J*tkVYR^3g61I~yl| zfTOCW($LEmQ;%*lCF9-)4M`NpVtqo0CXvYH+MnbR?GIW{XF8vYP{>r#s7qKcJ8QC^ zP<5!XoStR8ebn5jE-)iM)!Zm9NOKotwmf<0%uTDex3PN(wyY{x`wX>Q9R#YoLpY$? zKA*pacXkOYDClWq^ImQXcF1Pah&x#zk<)Qd7>E@c0l^Ew;&72G3R++9%>zLW_MM_h z;)pwCRXtR4C?shF}^rFuT}?K{=&;C`njL zwlv#`t`45mZpCf&qWN6VnH>+<-~1*vzN2M##k+{U#$NX3cxRUWh|42`Xafij<~pHl zO?m`BABobAov)v#@V?l-1Y{=LGu|9BSwaf#tbwG-Xnh8<366@3pnd^H*Fde`m>gZJ zZCV59YtAdcf8g4gN^F){n~hcxvnPBy&uwLUPB9?*PPEte`Q1}_|~Y;eJ$q6 zzHG{WwwV8OyZc;e?8}Hm-atF%hCfx!Yof%u22M0b0r^4iw|bKKeMXNFxg@rJPznLR zYr#{hGoOff_0}4*ZBGzwB^X%{chhaMgYYV?DGk#P^{1u`U1K}c5>PO5efjYFvTN7y zML&=_k1U@A1g4r=e??Og_s8!-3>$UL9x4qe{GZ@>Jv9x8xfralG>XN6Z@x^y!&c&> zrlk86ZBAmKctnm7I9m>SMS&D~;SSJ@hlug36TgLlLDGr&`_E)K*J*>7;F@?D zPPDfexDGhDjqxau`+F7~+~K{Lyd>1O?s2GjTD4l&tJJDC#6nbKsL57WxU!i-TL6=` z_ULk}mRrJ(Qz_PctHY`DxiywMP%v5-cXHpG%tb^8v^q+tNn%#2f9eLznZ-NsJleDr zI;t~GOUTjSy}xaZYOP}~BoQ~4Rkd9B;Z(ceXYJpT97ZMdQXm6o0UGz9TbzrD@cOPU zkY*cPCx~bh>q3%$vFgX z!1In_n~>&Omys7l7F|FSo@lDC#E(n0L1<=mH-kgCjKz&IlTO-fC@Xjg;?A99Vhn

gVoTHn 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 literal 0 HcmV?d00001 diff --git a/OnlyOffice/build/debug/templates/model.xlsx b/OnlyOffice/build/debug/templates/model.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..6c7b924e7dea6110405f08ed535883bb4ffa8700 GIT binary patch literal 7662 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 U=>`D6LtV0{DEl1c6aj$$1783yNdN!< literal 0 HcmV?d00001 diff --git a/OnlyOffice/build/release/OnlyOffice.zip b/OnlyOffice/build/release/OnlyOffice.zip new file mode 100644 index 0000000000000000000000000000000000000000..357d65588ced18f1382688678374ccb59ac7c258 GIT binary patch literal 4933 zcmbVQ&vN8O8FxrRVBkdML@uJC9I32nJA^>h?2flgVk*X!wOQ|S+1lE)rEg{wYt%yB znz46K6$J-w+<61;JORZEaNxj+3pbvE-`A2xnpu0Zi(K+dcYpu?_ne=;{mx*ApP&5s zieek!xzO%E#?|ax&c_PzNr8-inr;4c=ODPBSa!Hro*emEaWm1qYuoOXaw3wLw z5tcX_Boi;w){*h-jIx1;hlv9A(ebaI9A7*hP!jos==UMNUN_X z>+7|lQ!TPD3>gEZlXxtoyg0tNI5~SL*PB7DMnlo41@l-NswOxb=0%cO|CblQq%6`g z`Hh`}8lv$?vnjtaI_o^cW^L^3?Bt7+Y@yO5c0MO#;ZtXNxQsvRs9^Iz6vs0r=6PWu z#kA$@m~3!&80&aoN^in-ONB`SYrlfnL+v?`i7vDFRt4Pg*h9=pZE|I2YsvX!Ejddq zja9Zp_>R3FZ!)b7FJisSQmtaoYB;gOXC)iKkv6gga{(^PA`P98!6r>cYUn=6)Ftbw zy%x1mg<<&Fv|tDB0)^%1!E?$nPW$N=4S_Zo&rX5ha`U#J;v7aqaf0(#sa(2x2z{>( z(5JoaXPs6JlUrc?8iDB!2pQd%X)72TX1OZVoGcZMpywNP?Z2mwzyG_pcXs&wF6vsY zqAN8e7mRfg5&6|L0|hbi#95Z!oJ}T4M54}gq4HdeZrQIfL=Eg+l!;xV#AKo($+>XV zs7Xd%185k~yHti^4=MLDza*PzG3v^jP^F#ef`w~DVvh-$t0Z-s&OlWo?Scv}9bkJP z59CKf)v6IGOH*Ckus}$XqTNp-okgiK1_u*`B05xY)*jB2IpN@`W8v7s8fgMr;IY5R zVyTr$kS#d^L`UVEGAk`z+rFf)fnxH4RBUEMZ;A;-1Ex-(S2Bf!*Yk9ui@CC9sGW<~ zA}@6j=Y@{A?q<_@inOeixr^l7Fv?x0Y?!$j(se}Xt65yimNEjWKw9{hTR80c|Cp{;|#GgKhIB#S^B5~wuQOGk@cx=(Rp*H|GccNe3f zD~;@0Fz0w53_2rxf-y|){qsM6hw}V>2d{}{G$%Q;^Yp%&To0l6aG4<6mMnoyY)a$J zBIGTT*v`h{X9owun^7{I*|GS97u>jpJXLh|5Qolbj`ZwOUwieMbNzmtEIJg{Nf$$f zL=_%re3+*yqM1%(Dn2~CzYpMs)IN*Jv zLPv<$CP^&zzCh2H1)7(h`vHcvW`6njr-3ZUDeMa=LLq{RW%YwqGVvXWs4NO@uH%Kq zlyp$j&{(MODUV$+2O(N?iSJ-z&G5+;2gij z&>^P9t?en{drsoMg*$ONL4X2{c)jUz3BiJ}HtVN4n`^ zM8)bIG22E?Zd2>*L}+b<;%zV@a`C%vM50Xxmx#}w`=YxXyaXCl&d6)-U;b$24Evma z7I=i~dbMBse;*rDq{&jsa`qnqz-?{t8 zAvEjW)3|pVY5V5YVf+ifG4=0Z+nC#vV2AnpZ}sNFKH6=wQ-}6P%#*!IY8!ET5a|#N aY|xA)=cn&}lMmj--}`Uv?0oP&Ui}ZFGb 0 @currfile = @args[0].path.asFileHandle() - placeholder = @find "editor-area" - placeholder.id = @eid + @placeholder = @find "editor-area" + @placeholder.id = @eid + + @find("btn-open-file").onbtclick = (e) => + @openFile() + + @find("btn-new-doc").onbtclick = (e) => + @create("word") + + @find("btn-new-cell").onbtclick = (e) => + @create("sheet") + + @find("btn-new-slide").onbtclick = (e) => + @create("slide") + @open() if @currfile + + create: (type) -> + ext = undefined + ext = "docx" if type is "word" + ext = "xlsx" if type is "sheet" + ext = "pptx" if type is "slide" + return @error __("Unkown file type") unless ext + @openDialog "FileDialog", { + title: __("Save file as"), + type: "dir", + file: "home://Untitled.#{ext}".asFileHandle() + } + .then (d) => + file = "#{d.file.path}/#{d.name}".asFileHandle() + # copy file to destination + model = "#{@path()}/templates/model.#{ext}".asFileHandle() + model + .read("binary") + .then (d) => + blob = new Blob([d], { + type: model.info.mime, + }) + file.cache = blob + file + .write(model.info.mime) + .then (r) => + file.cache = undefined + @currfile = file + @open() + .catch (e) => + @error e.toString(), e + .catch (err) => + @error err.toString(), err + + openFile: () -> + @openDialog "FileDialog", { + title: __("Open file"), + type: "file", + mimes: @meta().mimes + } + .then (f, name) => + @currfile = f.file.path.asFileHandle() + @open() + open: () -> return unless @currfile - console.log @currfile @exec("token", {file: @currfile.path}) .then (d) => return @error d.error if d.error @access_token = d.result @currfile.onready() .then (meta) => - #@scheme.apptitle = @currfile.path + @scheme.apptitle = @currfile.path + $(@placeholder).empty() @editor.destroyEditor() if @editor @editor = new DocsAPI.DocEditor(@eid, { events: { onRequestCreateNew: () => @newDocument(), - onRequestSaveAs: (e) => console.log e + onRequestSaveAs: (e) => @saveAs(e) }, document: { fileType: @currfile.ext, key: meta.mtime.hash().toString(), - title: @currfile.path, + title: @currfile.filename, url: @currfile.getlink() + "?" + @access_token }, documentType: @getDocType(@currfile.ext), @@ -57,11 +114,58 @@ class OnlyOffice extends this.OS.application.BaseApplication return "none" saveAs: (e) -> - console.log e + return unless e.data.url + rfile = e.data.url.asFileHandle() + @openDialog "FileDialog", { + title: __("Save file as"), + type: "dir", + file: "home://#{e.data.title}".asFileHandle() + } + .then (d) => + file = "#{d.file.path}/#{d.name}" + # copy file to destination + @exec("duplicate", { + remote: e.data.url, + as: file + }).then (r) => + return @error r.error if r.error + @currfile = file.asFileHandle() + @open() + .catch (e) => + @error e.toString(), e newDocument: () -> - console.log("create document") - @error __("Unable to create document") + @openDialog "SelectionDialog", { + title: __("Create new"), + data:[ + { + text: __("Open a file"), + iconclass: "fa fa-folder-open", + type: "open" + }, + { + text: __("Document"), + iconclass: "fa fa-file-word-o", + type: "word" + }, + { + text: __("Spreadsheet"), + iconclass: "fa fa-file-excel-o", + type: "sheet" + }, + { + text: __("Presentation"), + iconclass: "fa fa-file-powerpoint-o", + type: "slide" + }, + ] + } + .then (d) => + switch d.type + when "open" + @openFile() + else + @create(d.type) uapi: (action) -> return "#{@_api.REST}/system/apigateway?ws=0&path=#{@path()}/api.lua&action=#{action}&file=#{@currfile.path}&#{@access_token}" diff --git a/OnlyOffice/css/main.css b/OnlyOffice/css/main.css new file mode 100644 index 0000000..1231545 --- /dev/null +++ b/OnlyOffice/css/main.css @@ -0,0 +1,8 @@ +afx-app-window[data-id="OnlyOffice"] div[data-id="editor-area"] p{ + text-align: center; +} + +afx-app-window[data-id="OnlyOffice"] div[data-id="editor-area"] button { + width: 250px; + +} \ No newline at end of file diff --git a/OnlyOffice/package.json b/OnlyOffice/package.json index 26e9ddc..cc0de41 100644 --- a/OnlyOffice/package.json +++ b/OnlyOffice/package.json @@ -9,7 +9,7 @@ }, "version":"0.0.1-a", "category":"Other", - "iconclass":"fa fa-adn", + "icon":"icon.png", "mimes":[ "application/vnd.oasis.opendocument.text", "application/vnd.oasis.opendocument.spreadsheet", diff --git a/OnlyOffice/project.json b/OnlyOffice/project.json index 942253d..3f36d4e 100644 --- a/OnlyOffice/project.json +++ b/OnlyOffice/project.json @@ -1,7 +1,7 @@ { "name": "OnlyOffice", - "css": [], + "css": ["css/main.css"], "javascripts": [], "coffees": ["coffees/main.coffee"], - "copies": ["api/api.lua", "assets/scheme.html", "package.json", "README.md"] + "copies": ["assets/templates", "assets/icon.png","api/api.lua", "assets/scheme.html", "package.json", "README.md"] } \ No newline at end of file