'use strict';Registry.require("promise helper xmlhttprequest uri convert tools".split(" "),function(){var C=rea.FEATURES,e=Registry.get("promise"),v,w,l=Registry.get("uri"),D=Registry.get("helper"),t=Registry.get("convert"),x=Registry.get("tools"),H,I=x.createQueue(1),K=function(d){var b=e();t.blob2str(d,function(a,c){c?b.reject(c):b.resolve(a)});return b.promise()},r=function(d,b){var a=(d?d.split("/"):[]).concat(b?[b]:[]).join("/");return a?("/"==a.substr(0,1)?"":"/")+a:""},J=function(d,b){b=b(d);
Object.keys(d).forEach(function(a){var c=Object.getOwnPropertyDescriptor(d,a);c.get?(b.__defineGetter__(a,c.get),c.set&&b.__defineSetter__(a,c.set)):b[a]=b[a]||d[a]});return b},y=function(d){var b=[],a=null,c,g={extend:function(a){return g=J(g,a)},config:{},changes:function(){var a;return{listen:function(){a||(a=e(),g.watch&&g.watch.start());return a.promise()},notify:function(b){a.notify(b)}}}(),oauth:function(){var a,b={run:function(){if(c)return c;var h=e(),k=c=h.promise();a="!!"+d+"-"+D.createUUID();
var q=H({type:d,url:b.getAuthUrl()});q.promise.progress(function(a){var f;h&&(f=b.onUrl(a.url))&&(g.credentials=f,h.resolve(),h=null,q.close())}).always(function(){c=null;h&&h.reject("auth_failed")});return k},getAuthUrl:function(){return g.config.request_uri+"?"+l.hash2params({response_type:g.config.response_type,client_id:g.config.client_id,redirect_uri:g.config.redirect_uri,state:a,scope:g.config.scope})},onUrl:function(b){var c,q;if(b&&0===b.indexOf(g.config.redirect_uri)&&(q=l.parse(b))&&(c=
l.params2hash(q))&&c.access_token&&c.state===a)return{uid:c.uid,access_token:c.access_token}}};return b}(),request:function(a){var b=function(){var b=e(),g=function(a){console.debug("cloud: request failed",a);b.reject(a)};w(a,{onload:function(a){-1==[200,201,204].indexOf(a.status)?g(a):b.resolve(a.response)},onerror:g,ontimeout:g,onprogress:b.notify});return b.promise()};return a.no_queue?b():I.add(b)},wait:function(a){return function(){if(g.credentials.access_token)return a.apply(this,arguments);
var c=arguments,m=e();b.push(function(){m.consume(a.apply(this,c))});g.oauth.run().done(function(){b.forEach(function(a){a()});b=[]}).fail(function(a){m.reject(a)});return m.promise()}}},m=C.HTML5.LOCALSTORAGE;g.__defineGetter__("credentials",function(){if(null===a){if(m)try{var b=JSON.parse(m.getItem(g.config.storage_key));a={uid:b.uid,access_token:b.access_token}}catch(c){}a=a||{}}return a});g.__defineSetter__("credentials",function(b){if(m)try{m.setItem(g.config.storage_key,JSON.stringify({uid:b.uid,
access_token:b.access_token}))}catch(c){}a=b});return g},L=function(){var d=null,b={extend:function(a){return b=J(b,a)},config:{},changes:function(){var a;return{listen:function(){a||(a=e(),b.watch&&b.watch.start());return a.promise()},notify:function(b){a.notify(b)}}}(),request:function(a){var b=function(){var b=e(),c=function(a){console.debug("webdav: request failed",a);b.reject(a)},f="xml"===a.responseType,d="headers"===a.responseType;(f||d)&&delete a.responseType;w(a,{onload:function(h){if(-1==
[200,201,204,207].indexOf(h.status))c(h);else if(f)if(a.anonymous||a.fetch){var k=new window.DOMParser;b.resolve(k.parseFromString(h.responseText,"text/xml"))}else b.resolve(h.responseXML);else d?b.resolve(v.parseHeaders(h.responseHeaders)):b.resolve(h.response)},onerror:c,ontimeout:c,onprogress:b.notify},{internal:!0});return b.promise()};return a.no_queue?b():I.add(b)},wait:function(a){return function(){return a.apply(this,arguments)}}};b.__defineGetter__("credentials",function(){null===d&&(d={basic_auth:b.config.basic_auth});
return d});b.__defineSetter__("credentials",function(a){d=a});return b};Registry.register("cloud","5946",{init:function(d,b,a){H=d;v=Registry.get("xmlhttprequest",b,a);w=v.run},drive:function(){return(new y("drive")).extend(function(d){var b,a,c={config:{redirect_uri:"https://auth.tampermonkey.net/oauth.php",request_uri:"https://accounts.google.com/o/oauth2/v2/auth",client_id:"408438522028-3cgn3t3jas3fak7isbnfod1q4h15g2fv.apps.googleusercontent.com",storage_key:"gd_config",scope:"https://www.googleapis.com/auth/drive.appdata",
response_type:"token"},request:function(a){a.headers=a.headers||{};a.headers.Authorization="Bearer "+c.credentials.access_token;return d.request.apply(this,arguments).then(function(a){return a},function(b){if(!b||-1!=[403,500].indexOf(b.status))return a.backoff=2*(a.backoff||1E3),x.sleep(a.backoff).then(function(){return c.request(a)});if(-1!=[400,401].indexOf(b.status)){if(console.warn("Google Drive: authentication error",b),c.credentials={},!a.retry_auth)return a.retry_auth=!0,c.oauth.run().then(function(){return c.request(a)})}else if(404==
b.status)return e.Pledge(null);return e.Breach(b.statusText||b.responseText)})},list:d.wait(function(a){var b=[],f=e(),d=function(a){return"https://www.googleapis.com/drive/v3/files?"+l.hash2params({spaces:"appDataFolder",pageToken:a,orderBy:"modifiedTime desc",fields:"nextPageToken, files(id, size, name, modifiedTime, md5Checksum)",pageSize:500})},h=function(a){return c.request({method:"GET",url:a,headers:{"Content-Type":"application/json"}}).then(function(a){a=a?JSON.parse(a):{files:[]};b=b.concat(a.files);
if(a.nextPageToken)return h(d(a.nextPageToken));f.resolve(b)})};h(d());return f.promise().then(function(b){var c={};return b.map(function(b){if(!a){if(c[b.name])return;c[b.name]=!0}return{name:b.name,size:b.size||0,id:b.id,md5:b.md5Checksum,modified:(new Date(b.modifiedTime)).getTime()}}).filter(function(a){return a})})}),get:d.wait(function(a){return c.request({method:"GET",url:"https://www.googleapis.com/drive/v3/files/"+(a.id||a)+"?"+l.hash2params({spaces:"appDataFolder",alt:"media"}),responseType:"arraybuffer"}).then(function(a){return new Blob([a])})}),
put:d.wait(function(a,b,f){var d=a.name||a,h=a.id,k=D.createUUID();return e.Pledge().then(function(){if(b)return K(b)}).then(function(a){var b=f&&f.lastModified?(new Date(f.lastModified)).toISOString():void 0,n=[];n.push("--"+k);n.push("Content-Type: application/json");n.push("");n.push(JSON.stringify({name:d,parents:h?void 0:["appDataFolder"],modifiedTime:b}));n.push("--"+k);a&&(n.push("Content-Type: application/octet-stream"),n.push("Content-Transfer-Encoding: base64"),n.push(""),n.push(t.Base64.encode(a)),
n.push("--"+k+"--"));n.push("");return c.request({method:h||!a?"PATCH":"POST",url:"https://www.googleapis.com/"+(a?"upload/":"")+"drive/v3/files"+(h?"/"+h:"")+"?"+l.hash2params({uploadType:"multipart"}),headers:{"Content-Type":"multipart/related; boundary="+k},data:n.join("\r\n")})})}),delete:d.wait(function(a){return c.request({method:"DELETE",url:"https://www.googleapis.com/drive/v3/files/"+(a.id||a)+"?"+l.hash2params({spaces:"appDataFolder"}),headers:{"Content-Type":" application/json"}})}),compare:function(a,
b){var c=e(),d;(d=a.md5)&&d==t.MD5(b,"utf-8")?c.resolve(!0):c.resolve(!1);return c.promise()},watch:{start:function(){if(!b){b=!0;var g,m=function(){a=null;b&&c.request({method:"GET",url:"https://www.googleapis.com/drive/v3/changes/?"+l.hash2params({pageToken:g,spaces:"appDataFolder",pageSize:1E3,includeRemoved:!0}),headers:{"Content-Type":" application/json"}}).then(function(a){if(!b)return e.Breach();var m=a?JSON.parse(a):{};if(!(g=m.newStartPageToken))return console.warn("Google Drive: watch token error",
a),c.watch.stop();m.nextPageToken&&console.warn("Google Drive: too much changes",a);(m.changes||[]).forEach(function(a){var b,c;"file"===a.type&&(c=a.file)&&(b=Date.parse(a.time),isNaN(b)&&(b=Date.now()),d.changes.notify({id:c.id,time:b,name:c.name,removed:a.removed}))})}).fail(function(a){console.warn("Google Drive: file changes check failed",a)}).always(function(){a=window.setTimeout(m,18E5)})};d.wait(function(){return b?c.request({method:"GET",url:"https://www.googleapis.com/drive/v3/changes/startPageToken",
headers:{"Content-Type":" application/json"}}).then(function(a){if(!(g=(a?JSON.parse(a):{}).startPageToken))return console.warn("Google Drive: watch token error",a),c.watch.stop();m()}):e.Breach()})()}},stop:function(){b=!1;a&&(window.clearTimeout(a),a=null)}}};return c})},dropbox:function(d){var b=d.path||"";return(new y("dropbox")).extend(function(a){var c,d,m,f,l=!0,h=function(a){var c=[],d=e(),f=function(a){return k.request({method:"POST",url:"https://api.dropboxapi.com/2/files/list_folder"+(a?
"/continue":""),headers:{"Content-Type":" application/json"},data:{path:a?void 0:r(b),cursor:a}}).then(function(a){a=a?JSON.parse(a):{entries:[]};c=c.concat(a.entries);if(a.has_more&&a.cursor)return f(a.cursor);d.resolve({list:c,cursor:a.cursor})}).fail(d.reject)};l?(l=!1,k.put(".version",new Blob([rea.extension.manifest.version])).then(function(){f(a)}).fail(d.reject)):f(a);return d.promise()},k={config:{redirect_uri:"https://auth.tampermonkey.net/oauth.php",request_uri:"https://www.dropbox.com/oauth2/authorize",
client_id:"gq3auc9yym0e21y",storage_key:"db_config",response_type:"token"},request:function(b){b.no_auth||(b.headers=b.headers||{},b.headers.Authorization="Bearer "+k.credentials.access_token);return a.request.apply(this,arguments).then(function(a){return a},function(a){return a&&-1==[500,429].indexOf(a.status)?-1==[401].indexOf(a.status)||(console.warn("Dropbox: authentication error",a),k.credentials={},b.retry_auth)?e.Breach(a.responseText||a.statusText):(b.retry_auth=!0,k.oauth.run().then(function(){return k.request(b)})):
(b.backoff=2*(b.backoff||1E3),x.sleep(b.backoff).then(function(){return k.request(b)}))})},list:a.wait(function(a){return h().then(function(b){var c={};f=b.cursor;return b.list.map(function(b){if(!a){if(c[b.name])return;c[b.name]=!0}return{name:b.name,size:b.size,dropbox_hash:b.content_hash,modified:(new Date(b.client_modified)).getTime(),precision:1E3}}).filter(function(a){return a})}).always(function(){m&&f&&(m(),m=null)})}),get:a.wait(function(a){return k.request({method:"POST",url:"https://content.dropboxapi.com/2/files/download",
headers:{"Dropbox-API-Arg":JSON.stringify({path:r(b,a.name||a)})},responseType:"arraybuffer"}).then(function(a){return new Blob([a])})}),put:a.wait(function(a,c,d){a=a.name||a;d=d&&d.lastModified?(new Date(d.lastModified)).toISOString().match(/[^:]*:[^:]*:[^:.a-zA_Z]*/)[0]+"Z":void 0;return k.request({method:"POST",url:"https://content.dropboxapi.com/2/files/upload",headers:{"Dropbox-API-Arg":JSON.stringify({path:r(b,a),client_modified:d,mode:"overwrite"}),"Content-Type":"application/octet-stream"},
data_type:"typified",data:{type:"raw",value:c}})}),delete:a.wait(function(a){return k.request({method:"POST",url:"https://api.dropboxapi.com/2/files/delete",headers:{"Content-Type":" application/json"},data:{path:r(b,a.name||a)}})}),compare:function(a,b){var c=e();if(window.crypto&&window.ArrayBuffer){for(var d=t.str2arrbuf(b,"utf-8"),f=[],g=d.byteLength,h=1,k=function(){if(0===--h){var b=new window.ArrayBuffer;f.forEach(function(a){var c=b,d=new Uint8Array(c.byteLength+a.byteLength);d.set(new Uint8Array(c),
0);d.set(new Uint8Array(a),c.byteLength);b=d.buffer});window.crypto.subtle.digest("SHA-256",b).then(function(b){b=Array.from(new Uint8Array(b)).map(function(a){return("00"+a.toString(16)).slice(-2)}).join("");c.resolve(b==a.dropbox_hash)})}},m=0,l=0;l<g;l+=4194304,m++)(function(a){f.push(null);h++;window.crypto.subtle.digest("SHA-256",d.slice(l,l+Math.min(4194304,g-l))).then(function(b){f[a]=b;k()},function(){console.warn("Dropbox: unable to calculate SHA-256 hashes");c.reject()})})(m);k()}else console.warn("Dropbox: unable to calculate SHA-256 hashes"),
c.reject();return c.promise()},watch:{start:function(){if(!c){c=!0;var b=0,l=function(){d=null;b=0;if(c){if(!f)return console.warn("Dropbox: watch token error",f),k.watch.stop();k.request({method:"POST",url:"https://notify.dropboxapi.com/2/files/list_folder/longpoll",headers:{"Content-Type":" application/json"},no_auth:!0,no_queue:!0,data:{cursor:f,timeout:180}}).then(function(a){if(!c)return e.Breach();var d=a?JSON.parse(a):{};d.backoff&&(b=1E3*d.backoff);return d.changes?x.sleep(6E4).then(function(){return h(f)}).then(function(b){return(f=
b.cursor)?b.list:(console.warn("Dropbox: watch token error",a),k.watch.stop())}):null}).then(function(b){b&&b.forEach(function(b){var c,d=b[".tag"];-1!=["file","deleted"].indexOf(d)&&(c=Date.parse(b.server_modified),a.changes.notify({id:b.id,time:c,name:b.name,removed:"deleted"==d}))})}).fail(function(a){console.warn("Dropbox: file changes check failed",a)}).always(function(){d=window.setTimeout(l,b+18E5)})}};a.wait(function(){if(!c)return e.Breach();f?l():m=l;return e.Pledge()})()}},stop:function(){c=
!1;d&&(window.clearTimeout(d),d=null)}},getRemoteDomains:function(){return["dropbox.com","dropboxapi.com"]}};return k})},onedrive:function(){return(new y("onedrive")).extend(function(d){var b={config:{redirect_uri:"https://auth.tampermonkey.net/oauth.php",request_uri:"https://login.live.com/oauth20_authorize.srf",client_id:"000000004C1A3122",storage_key:"od_config",response_type:"token",scope:"onedrive.appfolder"},request:function(a){a.headers=a.headers||{};a.headers.Authorization="Bearer "+b.credentials.access_token;
return d.request.apply(this,arguments).then(function(a){return a},function(c){return c?-1==[401].indexOf(c.status)||(console.warn("OneDrive: authentication error",c),b.credentials={},a.retry_auth)?e.Breach(c.statusText||c.responseText):(a.retry_auth=!0,b.oauth.run().then(function(){return b.request(a)})):(console.warn("OneDrive: timeout"),e.Breach("Timeout"))})},list:d.wait(function(){return b.request({method:"GET",url:"https://api.onedrive.com/v1.0/drive/special/approot/children",headers:{"Content-Type":" application/json"}}).then(function(a){var b=
JSON.parse(a);b["@odata.nextLink"]&&console.warn("OneDrive: too much files",a);return b.value.map(function(a){return{name:a.name,size:a.size,modified:(new Date(a.lastModifiedDateTime)).getTime()}})})}),get:d.wait(function(a){return b.request({method:"GET",url:"https://api.onedrive.com/v1.0/drive/special/approot:/"+encodeURIComponent(a.name||a)+":/content",responseType:"arraybuffer"}).then(function(a){return new Blob([a])})}),put:d.wait(function(a,c){return b.request({method:"PUT",url:"https://api.onedrive.com/v1.0/drive/special/approot:/"+
encodeURIComponent((a.name||a).replace(/[#%<>:"|\?\*\/\\]/g,"-"))+":/content",headers:{"Content-Type":"application/octet-stream"},data_type:"typified",data:{type:"raw",value:c}})}),delete:d.wait(function(a){return b.request({method:"DELETE",url:"https://api.onedrive.com/v1.0/drive/special/approot:/"+encodeURIComponent(a.name||a)})})};return b})},webdav:function(d){var b=d.url||"";"/"==b.slice(-1)&&(b=b.slice(0,-1));var a=l.parse(b).pathname;"/"==a.slice(-1)&&(a=a.slice(0,-1));var c,g;(c=C.HTML5.LOCALSTORAGE)&&
(g=c.getItem("webdav_poll_interval"))||(g=18E5);return(new L).extend(function(c){var f=r("Tampermonkey",d.path),t,h=null,k=null,q,E,n,z,v,w=function(a){var b;a&&(b=a.firstChild.nextSibling?a.firstChild.nextSibling:a.firstChild);return b},A=function(a){return c.wait(function(){var b=arguments;return p.init().then(function(){return a.apply(this,b)})})},B=function(a,b){var c,d;if((c=a.getElementsByTagNameNS("*",b)[0])&&(d=c.firstChild))return d.nodeValue},y=function(c){var d=[];c=c.getElementsByTagNameNS("*",
"response");for(var g=0;g<c.length;g++){var F=c[g],u=B(F,"href"),u=u.replace(/\/$/,""),e=F.getElementsByTagNameNS("*","propstat")[0].getElementsByTagNameNS("*","prop")[0],F=B(e,"getlastmodified"),h=B(e,"getcontentlength"),e=e.getElementsByTagNameNS("*","resourcetype")[0].getElementsByTagNameNS("*","collection")[0],u=u.replace(new RegExp("^("+[D.escapeForRegExpURL(b+f)+"/?",D.escapeForRegExpURL(a+f)+"/?"].join("|")+")"),"");e||(u={name:u,modifiedTime:(new Date(F)).getTime(),size:0<=h?h:void 0,removed:-1==
h},d.push(u))}return d},G=function(a,b){b=b||{};b.set_current_list&&(q={});return p.request({method:"PROPFIND",url:a,headers:{"Content-Type":"text/xml; charset=UTF-8",Depth:void 0!==b.depth?b.depth:1},responseType:"xml"}).then(function(a){var c;if(null===a||!(c=w(a))||!c.childNodes)return e.Breach();a=y(c);b.set_current_list&&((c=B(c,"td:cursor"))&&(E=c),a.forEach(function(a){q[a.name]=a}));return a})},C=function(a,b){var c={"Content-Type":"text/xml; charset=UTF-8",Depth:1,Timeout:90};b&&(c.Cursor=
b);return p.request({method:"SUBSCRIBE",url:a,headers:c,responseType:"xml",no_queue:!0}).then(function(a){var b;if(null===a)return e.Pledge({changes:[],cursor:E});if(!(b=w(a))||!b.childNodes)return e.Breach();a=y(b);b=B(b,"td:cursor");return{changes:a,cursor:b}})},p={config:{basic_auth:d.basic_auth},request:function(a){if(!p.credentials.basic_auth)return e.Breach("Authentication failed");a.headers=a.headers||{};a.headers.Authorization="Basic "+p.credentials.basic_auth;a.headers["User-Agent"]="Tampermonkey";
a.headers.Cookie="";return c.request.apply(this,arguments).then(function(a){return a},function(b){if(!b||-1!=[403,500].indexOf(b.status))return a.backoff=2*(a.backoff||1E3),x.sleep(a.backoff).then(function(){return p.request(a)});if(-1!=[401].indexOf(b.status))console.warn("WebDAV: authentication error",b),p.credentials={};else if(404==b.status)return e.Pledge(null);return e.Breach(b.statusText||b.responseText)})},init:function(){if(t)return t;var a=e();t=a.promise();var c=b+f;p.request({method:"OPTIONS",
url:b,responseType:"headers"}).done(function(a){var b;a&&(b=a["access-control-allow-methods"])&&-1!=b.indexOf("EDITOR")&&(v=!0)}).always(function(){G(c,{depth:0}).done(a.resolve).fail(function(){var c=[];e.onebyone(f.split("/").filter(function(a){return a}).map(function(a){c.push(a);var d=c.join("/");return function(){return p.request({method:"MKCOL",url:b+"/"+d,headers:{"Content-Type":"text/xml; charset=UTF-8"},responseType:"xml"})}})).done(a.resolve).fail(a.reject)})});return t},list:A(function(a){return G(b+
f,{set_current_list:!0}).then(function(b){var c={};return b.map(function(b){if(!a){if(c[b.name])return;c[b.name]=!0}return{name:b.name,size:b.size||0,id:b.id,md5:b.md5Checksum,modified:(new Date(b.modifiedTime)).getTime(),precision:1E3,removed:b.removed}}).filter(function(a){return a})})}),get:A(function(a){return p.request({method:"GET",url:b+r(f,a.name||a),headers:{"Content-Type":"text/xml; charset=UTF-8"},responseType:"arraybuffer"}).then(function(a){return new Blob([a])})}),put:A(function(a,c,
d){var e=a.name||a,g,l,m;a={"Content-Type":"application/octet-stream"};var n=null===k;d&&d.lastModified&&(g=d.lastModified,m=(new Date(d.lastModified)).toISOString(),l=d.lastModified/1E3,k||n)&&(a["X-OC-Mtime"]=l);return p.request({method:"PUT",url:b+r(f,e),headers:a,data_type:"typified",data:{type:"raw",value:c},responseType:"headers"}).then(function(a){if(a&&n){var c;k="accepted"==a["x-oc-mtime"]||a.date&&(c=(new Date(a.date)).getTime())&&(c==g||c==Math.floor(l))?!0:!1}if(!k&&!h&&m)return p.request({method:"PROPPATCH",
url:b+r(f,e),headers:{"Content-Type":"text/xml; charset=UTF-8"},responseType:"xml",data:['<?xml version="1.0"?><d:propertyupdate xmlns:d="DAV:"><d:set><d:prop>',"<d:getlastmodified>"+m+"</d:getlastmodified>","</d:prop></d:set></d:propertyupdate>"].join("")}).then(function(a){var b,c,d;a&&(b=a.childNodes[0])&&(c=b.getElementsByTagNameNS("*","status")[0])&&(d=c.firstChild.nodeValue)&&-1!=d.search(/HTTP\/[0-9\.]+ 403/)&&(console.warn("WebDAV: no way to set file modification date! This might cause redundant up and downloads."),
h=!0)},function(){console.warn("WebDAV: no way to set file modification date! This might cause redundant up and downloads.");h=!0})})}),delete:A(function(a){return p.request({method:"DELETE",url:b+r(f,a.name||a),headers:{"Content-Type":"text/xml; charset=UTF-8"}})}),watch:{start:function(){if(!n){n=!0;var a=null,d=function(){z=null;if(n)if(!1===a){var e=q;G(b+f,{set_current_list:!0}).then(function(){e&&(Object.keys(e).forEach(function(a){var b=q[a];a=e[a];b?a.modifiedTime!=b.modifiedTime&&c.changes.notify({time:b.modifiedTime,
name:b.name}):c.changes.notify({time:Date.now(),name:a.name,removed:!0})}),Object.keys(q).forEach(function(a){e[a]||(a=q[a],c.changes.notify({time:a.modifiedTime,name:a.name}))}))}).fail(function(a){console.warn("WebDAV: file changes check failed",a)}).always(function(){z=window.setTimeout(d,g)})}else{var h=100;C(b+f,E).then(function(a){var b=a.changes;E=a.cursor;h=1;b.forEach(function(a){c.changes.notify({time:a.modifiedTime,name:a.name,removed:a.removed})})},function(){if(null===a)a=!1;else return h*=
2,x.sleep(h)}).always(d)}};A(function(){if(!n)return e.Breach();d();return e.Pledge()})()}},stop:function(){n=!1;z&&(window.clearTimeout(z),z=null)}},getRemoteUrl:function(a){if(v)return b+r(f,a)+"?method=editor#bypass=true"},getRemoteDomains:function(){return[l.parse(b).origin.replace(/^.*:\/\//,"")]}};return p})}})});
