From e3c18fe1c0a430eaf1facaa80796fbdd212593f8 Mon Sep 17 00:00:00 2001 From: Igor Zhukov Date: Wed, 21 Oct 2015 16:14:38 +0200 Subject: [PATCH] merged with master --- app.manifest | 3 ++- css/app.css | 5 +++++ img/Manytabs.png | Bin 0 -> 46161 bytes js/app.js | 32 ++++++++++++++++---------------- js/locales/en-us.json | 7 ++++++- webogram.appcache | 3 ++- 6 files changed, 31 insertions(+), 19 deletions(-) create mode 100644 img/Manytabs.png diff --git a/app.manifest b/app.manifest index 16ebb4d1..d2683a1e 100644 --- a/app.manifest +++ b/app.manifest @@ -1,5 +1,5 @@ CACHE MANIFEST -# Time: Sun Oct 18 2015 15:53:10 GMT+0200 (CEST) +# Time: Wed Oct 21 2015 16:01:30 GMT+0200 (CEST) CACHE: @@ -8,6 +8,7 @@ favicon_unread.ico css/app.css css/desktop.css css/mobile.css +img/Manytabs.png img/Telegram.png img/Telegram72.png img/Telegram72_2x.png diff --git a/css/app.css b/css/app.css index 436c7e04..ba1e2932 100644 --- a/css/app.css +++ b/css/app.css @@ -1844,6 +1844,11 @@ a.md_modal_list_peer_name{color:inherit} .md_photo_loading{display:block;width:72px;height:72px;border-radius:36px;overflow:hidden;background:#48769b;text-align:center;line-height:72px;padding:0} .md_photo_loading i{display:inline-block;background:#fff;width:8px;height:8px;border-radius:4px;vertical-align:middle;border:0;margin-left:6px} .md_photo_loading i:first-child{margin-left:0} +.inactive_page_content{max-width:400px;margin:0 auto;text-align:center} +.inactive_image{display:block;background:url(../img/Manytabs.png) no-repeat;width:341px;height:262px;margin:0 auto} +.inactive_title{font-size:18px;color:#444} +.inactive_description{color:#666;font-size:15px;line-height:150%} +.inactive_actions{margin-top:15px} @media print{body,html{background:#fff} body .im_page_wrap{border:0;box-shadow:none;overflow:visible} body .im_bottom_panel_wrap,body .im_dialogs_col_wrap,body .tg_head_logo_wrap,body .tg_head_msgs_edit_btn,body .tg_head_peer_dropdown,body .tg_head_peer_return_btn{display:none} diff --git a/img/Manytabs.png b/img/Manytabs.png new file mode 100644 index 0000000000000000000000000000000000000000..4aed53101765a6e488be56d9ba3e44833195448d GIT binary patch literal 46161 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 z

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 OBO{?GUi;1X`~Lw=ZHKx5 literal 0 HcmV?d00001 diff --git a/js/app.js b/js/app.js index a13cba7f..72e8ba64 100644 --- a/js/app.js +++ b/js/app.js @@ -26,22 +26,22 @@ switch(!0){case 3===t:return[257,t-3,0];case 4===t:return[258,t-4,0];case 5===t: this.WebPGetDecoderVersion=this.Ld=function(){return 512};var ka=[0,1,2,3,6,4,5,6,6,6,6,6,6,6,6,7,0],$a=[[173,148,140,0],[176,155,140,135,0],[180,157,141,134,130,0],[254,254,243,230,196,177,153,140,133,130,129,0]],Sa=[0,1,4,8,5,2,3,6,9,12,13,10,7,11,14,15],Ca=u([di,ui],"");c(4,f);var xa=[[0,0,0,0],[1,0,0,0],[0,1,0,0],[1,1,0,0],[0,0,1,0],[1,0,1,0],[0,1,1,0],[1,1,1,0],[0,0,0,1],[1,0,0,1],[0,1,0,1],[1,1,0,1],[0,0,1,1],[1,0,1,1],[0,1,1,1],[1,1,1,1]],Ma=134480385,Aa=16,Ea=-227,Ia=482,Ta=[Ue,function(e){return e},function(e,t,n){return t[n+0]},function(e,t,n){return t[n+1]},function(e,t,n){return t[n-1]},function(e,t,n){return Ne(Ne(e,t[n+1]),t[n+0])},function(e,t,n){return Ne(e,t[n-1])},function(e,t,n){return Ne(e,t[n+0])},function(e,t,n){return Ne(t[n-1],t[n+0])},function(e,t,n){return Ne(t[n+0],t[n+1])},function(e,t,n){return Ne(Ne(e,t[n-1]),Ne(t[n+0],t[n+1]))},function(e,t,n){return 0>=Math.abs((e>>24&255)-(t[n-1]>>24&255))-Math.abs((t[n+0]>>24&255)-(t[n-1]>>24&255))+(Math.abs((e>>16&255)-(t[n-1]>>16&255))-Math.abs((t[n+0]>>16&255)-(t[n-1]>>16&255)))+(Math.abs((e>>8&255)-(t[n-1]>>8&255))-Math.abs((t[n+0]>>8&255)-(t[n-1]>>8&255)))+(Math.abs((255&e)-(255&t[n-1]))-Math.abs((255&t[n+0])-(255&t[n-1])))?t[n+0]:e},function(e,t,n){return(Fe((e>>24&255)+(t[n+0]>>24&255)-(t[n-1]>>24&255))<<24|Fe((e>>16&255)+(t[n+0]>>16&255)-(t[n-1]>>16&255))<<16|Fe((e>>8&255)+(t[n+0]>>8&255)-(t[n-1]>>8&255))<<8|Fe((255&e)+(255&t[n+0])-(255&t[n-1])))>>>0},function(e,t,n){var i=t[n-1];return e=Ne(e,t[n+0]),(Oe(e>>24&255,i>>24&255)<<24|Oe(e>>16&255,i>>16&255)<<16|Oe(e>>8&255,i>>8&255)<<8|Oe(e>>0&255,i>>0&255))>>>0},Ue,Ue],Da={Cc:f,Bc:f,Kc:f},Pa=16,Na=16,Fa=16,Oa=[2,3,7],Ua=[3,3,11],Ra=0,La=1,Ba=2,ja=3,qa=4,Ha=[Mn+An,Mn,Mn,Mn,40],Va=19,za=[17,18,0,1,2,3,4,5,16,6,7,8,9,10,11,12,13,14,15],Wa=120,Ga=[24,7,23,25,40,6,39,41,22,26,38,42,56,5,55,57,21,27,54,58,37,43,72,4,71,73,20,28,53,59,70,74,36,44,88,69,75,52,60,3,87,89,19,29,86,90,35,45,68,76,85,91,51,61,104,2,103,105,18,30,102,106,34,46,84,92,67,77,101,107,50,62,120,1,119,121,83,93,17,31,100,108,66,78,118,122,33,47,117,123,49,63,99,109,82,94,0,116,124,65,79,16,32,98,110,48,115,125,81,95,64,114,126,97,111,80,113,127,96,112],Ka=1<=i;i++)n=t.substr(0,i),void 0===a[n]?a[n]=[e]:a[n].push(e)})}function o(e,t){var i=t.shortIndexes,a=t.fullTexts;e=n(e);var o,s,r,l,c,d=e.split(" "),u=!1;for(s=0;so.length)&&(u=o)}for(o={},r=0;r,<\s]+/g,r=/^\s+|\s$/g;e.SearchIndexManager={createIndex:t,indexObject:a,cleanSearchText:n,cleanUsername:i,search:o}}(window),TLSerialization.prototype.createBuffer=function(){this.buffer=new ArrayBuffer(this.maxLength),this.intView=new Int32Array(this.buffer),this.byteView=new Uint8Array(this.buffer)},TLSerialization.prototype.getArray=function(){var e=new ArrayBuffer(this.offset),t=new Int32Array(e);return t.set(this.intView.subarray(0,this.offset/4)),t},TLSerialization.prototype.getBuffer=function(){return this.getArray().buffer},TLSerialization.prototype.getBytes=function(e){if(e){var t=new ArrayBuffer(this.offset),n=new Uint8Array(t);return n.set(this.byteView.subarray(0,this.offset)),n}for(var i=[],a=0;a>>",e.toString(16),e,t),this.checkLength(4),this.intView[this.offset/4]=e,this.offset+=4},TLSerialization.prototype.storeInt=function(e,t){this.writeInt(e,(t||"")+":int")},TLSerialization.prototype.storeBool=function(e,t){e?this.writeInt(2574415285,(t||"")+":bool"):this.writeInt(3162085175,(t||"")+":bool")},TLSerialization.prototype.storeLongP=function(e,t,n){this.writeInt(t,(n||"")+":long[low]"),this.writeInt(e,(n||"")+":long[high]")},TLSerialization.prototype.storeLong=function(e,t){if(angular.isArray(e))return 2==e.length?this.storeLongP(e[0],e[1],t):this.storeIntBytes(e,64,t);"string"!=typeof e&&(e=e?e.toString():"0");var n=bigStringInt(e).divideAndRemainder(bigint(4294967296));this.writeInt(intToUint(n[1].intValue()),(t||"")+":long[low]"),this.writeInt(intToUint(n[0].intValue()),(t||"")+":long[high]")},TLSerialization.prototype.storeDouble=function(e){var t=new ArrayBuffer(8),n=new Int32Array(t),i=new Float64Array(t);i[0]=e,this.writeInt(n[0],(field||"")+":double[low]"),this.writeInt(n[1],(field||"")+":double[high]")},TLSerialization.prototype.storeString=function(e,t){this.debug&&console.log(">>>",e,(t||"")+":string"),void 0===e&&(e="");var n=unescape(encodeURIComponent(e));this.checkLength(n.length+8);var i=n.length;253>=i?this.byteView[this.offset++]=i:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&i,this.byteView[this.offset++]=(65280&i)>>8,this.byteView[this.offset++]=(16711680&i)>>16);for(var a=0;i>a;a++)this.byteView[this.offset++]=n.charCodeAt(a);for(;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeBytes=function(e,t){e instanceof ArrayBuffer?e=new Uint8Array(e):void 0===e&&(e=[]),this.debug&&console.log(">>>",bytesToHex(e),(t||"")+":bytes");var n=e.byteLength||e.length;for(this.checkLength(n+8),253>=n?this.byteView[this.offset++]=n:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&n,this.byteView[this.offset++]=(65280&n)>>8,this.byteView[this.offset++]=(16711680&n)>>16),this.byteView.set(e,this.offset),this.offset+=n;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeIntBytes=function(e,t,n){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var i=e.length;if(t%32||8*i!=t)throw new Error("Invalid bits: "+t+", "+e.length);this.debug&&console.log(">>>",bytesToHex(e),(n||"")+":int"+t),this.checkLength(i),this.byteView.set(e,this.offset),this.offset+=i},TLSerialization.prototype.storeRawBytes=function(e,t){e instanceof ArrayBuffer&&(e=new Uint8Array(e));var n=e.length;this.debug&&console.log(">>>",bytesToHex(e),t||""),this.checkLength(n),this.byteView.set(e,this.offset),this.offset+=n},TLSerialization.prototype.storeMethod=function(e,t){var n,i=this.mtproto?Config.Schema.MTProto:Config.Schema.API,a=!1;for(n=0;nn;n++){if(o=a.params[n],s=o.type,-1!==s.indexOf("?")){if(r=s.split("?"),l=r[0].split("."),!(t[l[0]]&1<a;a++){if(c=l.params[a],t=c.type,-1!==t.indexOf("?")){if(d=t.split("?"),u=d[0].split("."),!(e[u[0]]&1<=4*this.intView.length)throw new Error("Nothing to fetch: "+e);var t=this.intView[this.offset/4];return this.debug&&console.log("<<<",t.toString(16),t,e),this.offset+=4,t},TLDeserialization.prototype.fetchInt=function(e){return this.readInt((e||"")+":int")},TLDeserialization.prototype.fetchDouble=function(e){var t=new ArrayBuffer(8),n=new Int32Array(t),i=new Float64Array(t);return n[0]=this.readInt((e||"")+":double[low]"),n[1]=this.readInt((e||"")+":double[high]"),i[0]},TLDeserialization.prototype.fetchLong=function(e){var t=this.readInt((e||"")+":long[low]"),n=this.readInt((e||"")+":long[high]"),i=bigint(n).shiftLeft(32).add(bigint(t)).toString();return i},TLDeserialization.prototype.fetchBool=function(e){var t=this.readInt((e||"")+":bool");return 2574415285==t?!0:3162085175==t?!1:(this.offset-=4,this.fetchObject("Object",e))},TLDeserialization.prototype.fetchString=function(e){var t=this.byteView[this.offset++];if(254==t)var t=this.byteView[this.offset++]|this.byteView[this.offset++]<<8|this.byteView[this.offset++]<<16;for(var n="",i=0;t>i;i++)n+=String.fromCharCode(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;try{var a=decodeURIComponent(escape(n))}catch(o){var a=n}return this.debug&&console.log("<<<",a,(e||"")+":string"),a},TLDeserialization.prototype.fetchBytes=function(e){var t=this.byteView[this.offset++];if(254==t)var t=this.byteView[this.offset++]|this.byteView[this.offset++]<<8|this.byteView[this.offset++]<<16;var n=this.byteView.subarray(this.offset,this.offset+t);for(this.offset+=t;this.offset%4;)this.offset++;return this.debug&&console.log("<<<",bytesToHex(n),(e||"")+":bytes"),n},TLDeserialization.prototype.fetchIntBytes=function(e,t,n){if(e%32)throw new Error("Invalid bits: "+e);var i=e/8;if(t){var a=this.byteView.subarray(this.offset,this.offset+i);return this.offset+=i,a}for(var o=[],s=0;i>s;s++)o.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(o),(n||"")+":int"+e),o},TLDeserialization.prototype.fetchRawBytes=function(e,t,n){if(e===!1&&(e=this.readInt((n||"")+"_length")),t){var i=new Uint8Array(e);return i.set(this.byteView.subarray(this.offset,this.offset+e)),this.offset+=e,i}for(var i=[],a=0;e>a;a++)i.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(i),n||""),i},TLDeserialization.prototype.fetchObject=function(e,t){switch(e){case"#":case"int":return this.fetchInt(t);case"long":return this.fetchLong(t);case"int128":return this.fetchIntBytes(128,!1,t);case"int256":return this.fetchIntBytes(256,!1,t);case"int512":return this.fetchIntBytes(512,!1,t);case"string":return this.fetchString(t);case"bytes":return this.fetchBytes(t);case"double":return this.fetchDouble(t);case"Bool":return this.fetchBool(t)}if(t=t||e||"Object","Vector"==e.substr(0,6)||"vector"==e.substr(0,6)){if("V"==e.charAt(0)){var n=this.readInt(t+"[id]");if(481674261!=n)throw new Error("Invalid vector constructor "+n)}var i=this.readInt(t+"[count]"),a=[];if(i>0)for(var o=e.substr(7,e.length-8),s=0;i>s;s++)a.push(this.fetchObject(o,t+"["+s+"]"));return a}var r=this.mtproto?Config.Schema.MTProto:Config.Schema.API,l=!1,c=!1;if("%"==e.charAt(0)){for(var d=e.substr(1),s=0;s=97&&e.charAt(0)<=122){for(var s=0;ss;s++){if(w=c.params[s],e=w.type,-1!==e.indexOf("?")){if(k=e.split("?"),$=k[0].split("."),!(a[$[0]]&1<<$[1]))continue;e=k[1]}a[w.name]=b.fetchObject(e,t+"["+l+"]["+w.name+"]")}}return _&&(this.mtproto=!0),a},TLDeserialization.prototype.getOffset=function(){return this.offset},TLDeserialization.prototype.fetchEnd=function(){if(this.offset!=this.byteView.length)throw new Error("Fetch end with non-empty buffer");return!0},angular.module("izhukov.utils",[]).provider("Storage",function(){this.setPrefix=function(e){ConfigStorage.prefix(e)},this.$get=["$q",function(e){var t={};return angular.forEach(["get","set","remove"],function(n){t[n]=function(){var t=e.defer(),i=Array.prototype.slice.call(arguments);return i.push(function(e){t.resolve(e)}),ConfigStorage[n].apply(ConfigStorage,i),t.promise}}),t}]}).service("qSync",function(){return{when:function(e){return{then:function(t){return t(e)}}},reject:function(e){return{then:function(t,n){return n?n(e):void 0}}}}}).service("FileManager",["$window","$q","$timeout","qSync",function(e,t,n,i){function a(){return f}function o(e,n){return l(n).then(function(n){return s(n,e).then(function(){return n},function(e){return t.reject(e)})})}function s(e,n){var i=t.defer();if(e.onwriteend=function(e){i.resolve()},e.onerror=function(e){i.reject(e)},n.file)n.file(function(t){e.write(t)},function(e){i.reject(e)});else if(n instanceof Blob)e.write(n);else try{var a=blobConstruct([bytesToArrayBuffer(n)]);e.write(a)}catch(o){i.reject(o)}return i.promise}function r(n,a,o){if(!e.chrome||!chrome.fileSystem||!chrome.fileSystem.chooseEntry)return i.reject();var s=t.defer();return chrome.fileSystem.chooseEntry({type:"saveFile",suggestedName:n,accepts:[{mimeTypes:[o],extensions:[a]}]},function(e){s.resolve(e)}),s.promise}function l(e){var n=t.defer();return e.createWriter(function(e){n.resolve(e)},function(e){n.reject(e)}),n.promise}function c(e,t){var n=[],i={write:function(e){return f?(n.push(e),void setZeroTimeout(function(){i.onwriteend&&i.onwriteend()})):(i.onerror&&i.onerror(new Error("Blob not supported by browser")),!1)},truncate:function(){n=[]},finalize:function(){var i=blobConstruct(n,e);return t&&t(i),i}};return i}function d(e,t){return void 0!==e.toURL?e.toURL(t):e instanceof Blob?URL.createObjectURL(e):"data:"+t+";base64,"+bytesToBase64(e)}function u(e){if(e instanceof Blob){var n=t.defer();try{var i=new FileReader;return i.onloadend=function(e){n.resolve(new Uint8Array(e.target.result))},i.onerror=function(e){n.reject(e)},i.readAsArrayBuffer(e),n.promise}catch(a){return t.reject(a)}}else if(e.file){var n=t.defer();return e.file(function(e){u(e).then(function(e){n.resolve(e)},function(e){n.reject(e)})},function(e){n.reject(e)}),n.promise}return t.when(e)}function p(e){var n;try{var i=new FileReader;i.onloadend=function(){n.resolve(i.result)},i.readAsDataURL(e)}catch(a){return t.reject(a)}return n=t.defer(),n.promise}function m(e,t){if(g&&e instanceof Blob){var t=e.type||e.mimeType||t||"";if(!t.match(/image\/(jpeg|gif|png|bmp)|video\/quicktime/))return p(e)}return i.when(d(e,t))}function h(e,t,i){if(window.navigator&&void 0!==navigator.msSaveBlob)return window.navigator.msSaveBlob(e,i),!1;if(window.navigator&&navigator.getDeviceStorage){var a="sdcard",o="telegram/";switch(t.split("/")[0]){case"video":a="videos";break;case"audio":a="music";break;case"image":a="pictures"}var s=navigator.getDeviceStorage(a),r=s.addNamed(e,o+i);return r.onsuccess=function(){console.log("Device storage save result",this.result)},void(r.onerror=function(){})}var l=!1;window.safari&&(l=window.open()),m(e,t).then(function(e){if(l)try{return void(l.location.href=e)}catch(t){}var a=document.createElementNS("http://www.w3.org/1999/xhtml","a");a.href=e,a.target="_blank",a.download=i,a.dataset&&(a.dataset.downloadurl=["video/quicktime",i,e].join(":")),$(a).css({position:"absolute",top:1,left:1}).appendTo("body");try{var o=document.createEvent("MouseEvents");o.initMouseEvent("click",!0,!1,window,0,0,0,0,0,!1,!1,!1,!1,0,null),a.dispatchEvent(o)}catch(t){console.error("Download click error",t);try{a[0].click()}catch(t){window.open(e,"_blank")}}n(function(){$(a).remove()},100)})}e.URL=e.URL||e.webkitURL,e.BlobBuilder=e.BlobBuilder||e.WebKitBlobBuilder||e.MozBlobBuilder;var g=-1!=navigator.userAgent.indexOf("Safari")&&-1==navigator.userAgent.indexOf("Chrome"),f=!0;try{blobConstruct([],"")}catch(_){f=!1}return{isAvailable:a,copy:o,write:s,getFileWriter:l,getFakeFileWriter:c,chooseSave:r,getUrl:d,getDataUrl:p,getByteArray:u,getFileCorrectUrl:m,download:h}}]).service("IdbFileStorage",["$q","$window","FileManager",function(e,t,n){function i(){return h}function a(){if(d)return d;try{var t=indexedDB.open(u,m),n=e.defer(),i=function(e){e.createObjectStore(p)};if(!t)throw new Exception}catch(a){return h=!1,e.reject(a)}return t.onsuccess=function(e){db=t.result,db.onerror=function(e){h=!1,console.error("Error creating/accessing IndexedDB database",e),n.reject(e)},n.resolve(db)},t.onerror=function(e){h=!1,console.error("Error creating/accessing IndexedDB database",e),n.reject(e)},t.onupgradeneeded=function(e){console.warn("performing idb upgrade from",e.oldVersion,"to",e.newVersion);var t=e.target.result;1==e.oldVersion&&t.deleteObjectStore(p),i(t)},d=n.promise}function o(t,n){return a().then(function(i){if(!g)return s(i,t,n);n instanceof Blob||(n=blobConstruct([n]));try{var a=i.transaction([p],IDBTransaction.READ_WRITE||"readwrite").objectStore(p),o=a.put(n,t)}catch(r){return g?(g=!1,s(i,t,n)):(h=!1,e.reject(r))}var l=e.defer();return o.onsuccess=function(e){l.resolve(n)},o.onerror=function(e){l.reject(e)},l.promise})}function s(t,n,i){if(r(i)>10485760)return e.reject();try{var a=new FileReader;a.readAsDataURL(i)}catch(o){return h=!1,e.reject()}var s=e.defer();return a.onloadend=function(){try{var e=t.transaction([p],IDBTransaction.READ_WRITE||"readwrite").objectStore(p),o=e.put(a.result,n)}catch(r){return h=!1,void s.reject(r)}o.onsuccess=function(e){s.resolve(i)},o.onerror=function(e){s.reject(e)}},s.promise}function r(e){return e.size||e.byteLength||e.length}function l(t){return a().then(function(n){var i=e.defer(),a=n.transaction([p],IDBTransaction.READ||"readonly").objectStore(p),o=a.get(t);return o.onsuccess=function(e){var t=e.target.result;void 0===t?i.reject():i.resolve("string"==typeof t&&"data:"===t.substr(0,5)?dataUrlToBlob(t):t)},o.onerror=function(e){i.reject(e)},i.promise})}function c(t,i){var a=n.getFakeFileWriter(i,function(e){o(t,e)});return e.when(a)}t.indexedDB=t.indexedDB||t.webkitIndexedDB||t.mozIndexedDB||t.OIndexedDB||t.msIndexedDB,t.IDBTransaction=t.IDBTransaction||t.webkitIDBTransaction||t.OIDBTransaction||t.msIDBTransaction;var d,u="cachedFiles",p="files",m=2,h=void 0!==t.indexedDB&&void 0!==t.IDBTransaction;h&&-1!=navigator.userAgent.indexOf("Safari")&&-1==navigator.userAgent.indexOf("Chrome")&&navigator.userAgent.match(/Version\/[678]/)&&(h=!1);var g=h||!1;return a(),{isAvailable:i,saveFile:o,getFile:l,getFileWriter:c}}]).service("TmpfsFileStorage",["$q","$window","FileManager",function(e,t,n){function i(){if(l)return l;if(!t.requestFileSystem)return l=e.reject({type:"FS_BROWSER_UNSUPPORTED",description:"requestFileSystem not present"});var n=e.defer();return t.requestFileSystem(t.TEMPORARY,524288e3,function(e){cachedFs=e,n.resolve()},function(e){c=!1,n.reject(e)}),l=n.promise}function a(){return c}function o(t,n){return n=n||1,i().then(function(){var i=e.defer();return cachedFs.root.getFile(t,{create:!1},function(e){e.file(function(t){t.size>=n?i.resolve(e):i.reject(new Error("FILE_NOT_FOUND"))},function(e){console.log(dT(),"error",e),i.reject(e)})},function(){i.reject(new Error("FILE_NOT_FOUND"))}),i.promise})}function s(e,t){return r(e).then(function(e){return n.write(e,t).then(function(){return e.finalize()})})}function r(t){return i().then(function(){var i=e.defer();return cachedFs.root.getFile(t,{create:!0},function(e){n.getFileWriter(e).then(function(t){t.finalize=function(){return e},i.resolve(t)},function(e){c=!1,i.reject(e)})},function(e){c=!1,i.reject(e)}),i.promise})}t.requestFileSystem=t.requestFileSystem||t.webkitRequestFileSystem;var l,c=void 0!==t.requestFileSystem;return i(),{isAvailable:a,saveFile:s,getFile:o,getFileWriter:r}}]).service("MemoryFileStorage",["$q","FileManager",function(e,t){function n(){return!0}function i(t,n){return s[t]?e.when(s[t]):e.reject(new Error("FILE_NOT_FOUND"))}function a(t,n){return e.when(s[t]=n)}function o(n,i){var o=t.getFakeFileWriter(i,function(e){a(n,e)});return e.when(o)}var s={};return{isAvailable:n,saveFile:a,getFile:i,getFileWriter:o}}]).service("WebpManager",["qSync","$q",function(e,t){function n(e){var t=(tsNow(),new WebPDecoder),n=t.WebPDecoderConfig,i=n.j||n.output,a=n.input;if(!t.WebPInitDecoderConfig(n))return console.error("[webpjs] Library version mismatch!"),!1;var o=t.VP8StatusCode;status=t.WebPGetFeatures(e,e.length,a),status!=(o.VP8_STATUS_OK||0)&&console.error("[webpjs] status error",status,o);var l=t.WEBP_CSP_MODE;i.colorspace=l.MODE_RGBA,i.J=4;try{status=t.WebPDecode(e,e.length,n)}catch(c){status=c}if(ok=0==status,!ok)return console.error("[webpjs] decoding failed",status,o),!1;var d=i.c.RGBA.ma;if(!d)return!1;var u=i.height,p=i.width;s&&r?r.clearRect(0,0,s.width,s.height):(s=document.createElement("canvas"),r=s.getContext("2d")),s.height=u,s.width=p;for(var m=r.createImageData(s.width,s.height),h=m.data,g=0;u>g;g++)for(var f=0;p>f;f++)h[0+4*f+4*p*g]=d[1+4*f+4*p*g],h[1+4*f+4*p*g]=d[2+4*f+4*p*g],h[2+4*f+4*p*g]=d[3+4*f+4*p*g],h[3+4*f+4*p*g]=d[0+4*f+4*p*g];return r.putImageData(m,0,0),!0}function i(i){if(!n(i))return t.reject({type:"WEBP_PROCESS_FAILED"});if(void 0===s.toBlob)return e.when(dataUrlToBlob(s.toDataURL("image/png")));var a=t.defer();return s.toBlob(function(e){a.resolve(e)},"image/png"),a.promise}var a=!1,o=new Image;o.onload=function(){a=2===this.width&&1===this.height},o.onerror=function(){a=!1},o.src="data:image/webp;base64,UklGRjIAAABXRUJQVlA4ICYAAACyAgCdASoCAAEALmk0mk0iIiIiIgBoSygABc6zbAAA/v56QAAAAA==";var s,r;return{isWebpSupported:function(){return a},getPngBlobFromWebp:i}}]).service("CryptoWorker",["$timeout","$q",function(e,t){function n(e,n,a){var r=t.defer();return s[o]=r,n.task=e,n.taskID=o,(a||i).postMessage(n),o++,r.promise}var i=!1,a=!1,o=0,s={},r=Config.Modes.webcrypto&&window.crypto&&(window.crypto.subtle||window.crypto.webkitSubtle),l=r&&void 0!==r.digest,c=r&&void 0!==r.digest,d=function(e,t){var n=s[e];void 0!==n&&(n.resolve(t),delete s[e])};if(Config.Modes.nacl&&navigator.mimeTypes&&void 0!==navigator.mimeTypes["application/x-pnacl"]){var u=$('

').appendTo($("body"))[0];u.addEventListener("load",function(e){a=u.firstChild,console.log(dT(),"NaCl ready")},!0),u.addEventListener("message",function(e){d(e.data.taskID,e.data.result)},!0),u.addEventListener("error",function(e){console.error("NaCl error",e)},!0)}if(window.Worker){var p=new Worker("js/lib/crypto_worker.js");p.onmessage=function(e){i?d(e.data.taskID,e.data.result):i=p},p.onerror=function(e){console.error("CW error",e,e.stack),i=!1}}return{sha1Hash:function(n){if(l){var i=t.defer(),a=Array.isArray(n)?convertToUint8Array(n):n;return r.digest({name:"SHA-1"},a).then(function(e){i.resolve(e)},function(e){console.error("Crypto digest error",e),l=!1,i.resolve(sha1HashSync(n))}),i.promise}return e(function(){return sha1HashSync(n)})},sha256Hash:function(n){if(c){var i=t.defer(),a=Array.isArray(n)?convertToUint8Array(n):n;return r.digest({name:"SHA-256"},a).then(function(e){i.resolve(e)},function(e){console.error("Crypto digest error",e),c=!1,i.resolve(sha256HashSync(n))}),i.promise}return e(function(){return sha256HashSync(n)})},aesEncrypt:function(t,i,o){return a?n("aes-encrypt",{bytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(i),ivBytes:convertToArrayBuffer(o)},a):e(function(){return convertToArrayBuffer(aesEncryptSync(t,i,o))})},aesDecrypt:function(t,i,o){return a?n("aes-decrypt",{encryptedBytes:addPadding(convertToArrayBuffer(t)),keyBytes:convertToArrayBuffer(i),ivBytes:convertToArrayBuffer(o)},a):e(function(){return convertToArrayBuffer(aesDecryptSync(t,i,o))})},factorize:function(t){return t=convertToByteArray(t),a&&t.length<=8?n("factorize",{bytes:t},a):i?n("factorize",{bytes:t}):e(function(){return pqPrimeFactorization(t)})},modPow:function(t,a,o){return i?n("mod-pow",{x:t,y:a,m:o}):e(function(){return bytesModPow(t,a,o)})}}}]).service("ExternalResourcesManager",["$q","$http",function(e,t){function n(e){return void 0!==i[e]?i[e]:i[e]=t.get(e,{responseType:"blob",transformRequest:null}).then(function(e){return window.URL=window.URL||window.webkitURL,window.URL.createObjectURL(e.data)})}var i={};return{downloadImage:n}}]).service("IdleManager",["$rootScope","$window","$timeout",function(e,t,n){function i(){s||(s=!0,$(t).on(l+" blur focus keydown mousedown touchstart",a),setTimeout(function(){a({type:"blur"})},0))}function a(i){if("mousemove"==i.type){var i=i.originalEvent||i;if(i&&0===i.movementX&&0===i.movementY)return;$(t).off("mousemove",a)}var s="blur"==i.type||"timeout"==i.type?!0:!1;r&&document[r]&&(s=!0),n.cancel(o),s||(o=n(function(){a({type:"timeout"})},3e4)),"focus"!=i.type||e.idle.afterFocus||(e.idle.afterFocus=!0,setTimeout(function(){delete e.idle.afterFocus},10)),e.idle.isIDLE!=s&&(e.$apply(function(){e.idle.isIDLE=s}),s&&"timeout"==i.type&&$(t).on("mousemove",a))}e.idle={isIDLE:!1};var o,s=!1,r="hidden",l="visibilitychange";return"undefined"!=typeof document.hidden||("undefined"!=typeof document.mozHidden?(r="mozHidden",l="mozvisibilitychange"):"undefined"!=typeof document.msHidden?(r="msHidden",l="msvisibilitychange"):"undefined"!=typeof document.webkitHidden&&(r="webkitHidden",l="webkitvisibilitychange")),{start:i}}]).service("AppRuntimeManager",["$window",function(e){return{reload:function(){try{location.reload()}catch(t){}e.chrome&&chrome.runtime&&chrome.runtime.reload&&chrome.runtime.reload()},close:function(){try{e.close()}catch(t){}},focus:function(){window.navigator.mozApps&&document.hidden?window.navigator.mozApps.getSelf().onsuccess=function(){this.result.launch()}:(window.chrome&&chrome.app&&chrome.app.window&&chrome.app.window.current().focus(),window.focus())}}}]).service("RichTextProcessor",["$sce","$sanitize",function(e,t){function n(e){for(var t,n,i,a,o=0;o-1)return n=Math.floor(t/a),i=t%a,{category:o,row:n,column:i};return console.error("emoji not found in spritesheet",e),null}function i(e,t){t=t||{};for(var i,a,o,s,r,c=e,d=[],m=0;i=c.match(k);){if(r=m+i.index,i[3])d.push({_:"messageEntityMention",offset:r+i[1].length,length:i[2].length+i[3].length});else if(i[4])if($.test(i[4]))d.push({_:"messageEntityEmail",offset:r,length:i[4].length});else{var a=!1,h=i[5],g=i[6],f="";if(g){if(h||"xn--"!==g.substr(0,4)&&-1===Config.TLD.indexOf(g.toLowerCase())||(h="http://"),h){var _=l(i[4]);_.length!==i[4].length&&(f=i[4].substring(_.length),i[4]=_),a=(i[5]?"":h)+i[4]}var v;if("me"==g&&(v=a.match(/^https?:\/\/telegram\.me\/(.+)/))){var y=v[1].split("/");switch(y[0]){case"joinchat":a="tg://join?invite="+y[1];break;case"addstickers":a="tg://addstickers?set="+y[1];break;default:var b=y[0].split("?");a="tg://resolve?domain="+b[0]+(b[1]?"&"+b[1]:"")}}}else a=(i[5]?"":"http://")+i[4];a&&d.push({_:"messageEntityUrl",offset:r,length:i[4].length})}else i[7]?d.push({_:"messageEntityLinebreak",offset:r,length:1}):i[8]?(o=u[i[8]])&&(s=n(o))&&d.push({_:"messageEntityEmoji",offset:r,length:i[0].length,coords:s,title:p[o][1][0]}):i[10]?d.push({_:"messageEntityHashtag",offset:r+i[9].length,length:i[10].length}):i[12]&&d.push({_:"messageEntityBotCommand",offset:r+i[11].length,length:1+i[12].length+(i[13]?1+i[13].length:0)});c=c.substr(i.index+i[0].length),m+=i.index+i[0].length}return d}function a(e,t){if(-1==e.indexOf("`"))return e;for(var n,i,a=e,o=[],s=0;n=a.match(S);){i=s+n.index,o.push(a.substr(0,n.index));var e=(n[3]||n[7]).replace(/^\s+|\s+$/g,"");e.match(/^`*$/)?o.push(n[0]):n[3]?(o.push(n[1]+e+n[5]),t.push({_:"messageEntityPre",language:"",offset:i+n[1].length,length:e.length}),s-=n[2].length+n[4].length):(o.push(n[6]+e+n[8]),t.push({_:"messageEntityCode",offset:i+n[6].length,length:e.length}),s-=2),a=a.substr(n.index+n[0].length),s+=n.index+n[0].length}return o.push(a),o=o.join(""),o.replace(/\s+/g,"").length||(o=e,t.splice(0,t.length)),o}function o(e,t,n){var i,a,o,s,r,l,c,d,u,p=t.slice(),m=e.length,h=t.length,g=0;for(i=0;m>i;i++)if(o=e[i],!n||"messageEntityLinebreak"==o._||"messageEntityEmoji"==o._){for(r=o.offset,l=r+o.length,u=!1,a=g;h>a;a++){if(s=t[a],c=s.offset,d=c+s.length,r>=c&&(g=a),r>=c&&d>r||l>c&&d>=l){n&&r>=c&&d>=l&&(void 0===s.nested&&(s.nested=[]),o.offset-=c,s.nested.push(angular.copy(o))),u=!0;break}if(c>=l)break}u||p.push(o)}return p.sort(function(e,t){return e.offset-t.offset}),p}function s(e,t,n){return void 0===t?encodeEntities(e):r(e,{entities:t,nested:!0})}function r(n,a){if(!n||!n.length)return"";a=a||{};var o=a.entities,r=a.contextSite||"Telegram",l="Telegram"!=r,c=!1;void 0===o&&(o=i(n,a));var d,u,p,h,g=0,f=o.length,_=[],v=0;for(g=0;f>g;g++){if(d=o[g],d.offset>v)_.push(encodeEntities(n.substr(v,d.offset-v)));else if(d.offset',encodeEntities(u),"");break;case"messageEntityHashtag":var y=!a.noLinks&&C[r];if(!y){p=!0;break}var k=u.substr(1);_.push("',encodeEntities(u),""); break;case"messageEntityEmail":if(a.noLinks){p=!0;break}_.push('',encodeEntities(u),"");break;case"messageEntityUrl":case"messageEntityTextUrl":if(a.noLinks){p=!0;break}var h=d.url||u;h.match(/^https?:\/\//i)||(h="http://"+h);var $;if("messageEntityTextUrl"==d._)h="tg://unsafe_url?url="+encodeURIComponent(h);else if($=h.match(/^https?:\/\/telegram\.me\/(.+)/)){var S=$[1].split("/");switch(S[0]){case"joinchat":h="tg://join?invite="+S[1];break;case"addstickers":h="tg://addstickers?set="+S[1];break;default:var M=S[0].split("?");h="tg://resolve?domain="+M[0]+(M[1]?"&"+M[1]:"")}}_.push('',s(u,d.nested,a),"");break;case"messageEntityLinebreak":_.push(a.noLinebreaks?" ":"
");break;case"messageEntityEmoji":_.push('',":",d.title,":"),c=!0;break;case"messageEntityBotCommand":if(a.noLinks||a.noCommands||l){p=!0;break}var A,E,I=u.substr(1);-1!=(E=I.indexOf("@"))?(A=I.substr(E),I=I.substr(0,E)):A=a.fromBot,_.push('',encodeEntities(u),"");break;case"messageEntityBold":_.push("",s(u,d.nested,a),"");break;case"messageEntityItalic":_.push("",s(u,d.nested,a),"");break;case"messageEntityCode":_.push("",encodeEntities(u),"");break;case"messageEntityPre":_.push("
",encodeEntities(u),"
");break;default:p=!0}v=d.offset+(p?0:d.length)}return _.push(encodeEntities(n.substr(v))),n=t(_.join("")),c&&!a.nested&&(n=n.replace(/\ufe0f|️|�|‍/g,"",n),n=n.replace(//g,'')),e.trustAs("html",n)}function l(e){for(var t=e.length,n=e.split("(").length-1,i=e.split(")").length-1;i>n&&")"===e.charAt(t-1);)e=e.substr(0,t-1),i--,t--;return n>i&&(e=e.replace(/\)+$/,"")),e}function c(e,t){if(h)return e;if(!e||!e.length)return"";t=t||{},e=e.replace(/\ufe0f/g,"",e);for(var n,i,a=e,e=[];n=a.match(k);)e.push(a.substr(0,n.index)),e.push(n[8]?(d=u[n[8]])&&(i=p[d][1][0])?":"+i+":":n[0]:n[0]),a=a.substr(n.index+n[0].length);return e.push(a),e.join("")}var d,u={},p=Config.Emoji,m=18,h=-1!=navigator.userAgent.search(/OS X|iPhone|iPad|iOS|Android/i),g="\\u0023\\u20E3|\\u00a9|\\u00ae|\\u203c|\\u2049|\\u2139|[\\u2194-\\u2199]|\\u21a9|\\u21aa|\\u231a|\\u231b|\\u23e9|[\\u23ea-\\u23ec]|\\u23f0|\\u24c2|\\u25aa|\\u25ab|\\u25b6|\\u2611|\\u2614|\\u26fd|\\u2705|\\u2709|[\\u2795-\\u2797]|\\u27a1|\\u27b0|\\u27bf|\\u2934|\\u2935|[\\u2b05-\\u2b07]|\\u2b1b|\\u2b1c|\\u2b50|\\u2b55|\\u3030|\\u303d|\\u3297|\\u3299|[\\uE000-\\uF8FF\\u270A-\\u2764\\u2122\\u25C0\\u25FB-\\u25FE\\u2615\\u263a\\u2648-\\u2653\\u2660-\\u2668\\u267B\\u267F\\u2693\\u261d\\u26A0-\\u26FA\\u2708\\u2702\\u2601\\u260E]|[\\u2600\\u26C4\\u26BE\\u23F3\\u2764]|\\uD83D[\\uDC00-\\uDFFF]|\\uD83C[\\uDDE8-\\uDDFA�]\\uD83C[\\uDDEA-\\uDDFA�]|[0-9]\\u20e3|\\uD83C[\\uDC00-\\uDFFF]";for(d in p)u[p[d][0]]=d;var f="a-z\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u00ff\\u0100-\\u024f\\u0253\\u0254\\u0256\\u0257\\u0259\\u025b\\u0263\\u0268\\u026f\\u0272\\u0289\\u028b\\u02bb\\u0300-\\u036f\\u1e00-\\u1eff\\u0400-\\u04ff\\u0500-\\u0527\\u2de0-\\u2dff\\ua640-\\ua69f\\u0591-\\u05bf\\u05c1-\\u05c2\\u05c4-\\u05c5\\u05c7\\u05d0-\\u05ea\\u05f0-\\u05f4\\ufb1d-\\ufb28\\ufb2a-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufb4f\\u0610-\\u061a\\u0620-\\u065f\\u066e-\\u06d3\\u06d5-\\u06dc\\u06de-\\u06e8\\u06ea-\\u06ef\\u06fa-\\u06fc\\u06ff\\u0750-\\u077f\\u08a0\\u08a2-\\u08ac\\u08e4-\\u08fe\\ufb50-\\ufbb1\\ufbd3-\\ufd3d\\ufd50-\\ufd8f\\ufd92-\\ufdc7\\ufdf0-\\ufdfb\\ufe70-\\ufe74\\ufe76-\\ufefc\\u200c\\u0e01-\\u0e3a\\u0e40-\\u0e4e\\u1100-\\u11ff\\u3130-\\u3185\\uA960-\\uA97F\\uAC00-\\uD7AF\\uD7B0-\\uD7FF\\u3003\\u3005\\u303b\\uff21-\\uff3a\\uff41-\\uff5a\\uff66-\\uff9f\\uffa1-\\uffdc",_="0-9_"+f,v="·",y="((?:https?|ftp)://|mailto:)?(?:\\S{1,64}(?::\\S{0,64})?@)?(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])(?:\\.(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])){3}|["+f+"0-9]["+f+v+"0-9-]{0,64}(?:\\.["+f+"0-9]["+f+v+"0-9-]{0,64}){0,10}(?:\\.(xn--[0-9a-z]{2,16}|["+f+"]{2,24})))(?::\\d{2,5})?(?:/(?:\\S{0,255}[^\\s.;,(\\[\\]{}<>\"'])?)?",b="[a-zA-Z\\d_]{5,32}",w="\\/([a-zA-Z\\d_]{1,32})(?:@("+b+"))?(\\b|$)",k=new RegExp("(^| )(@)("+b+")|("+y+")|(\\n)|("+g+")|(^|\\s)(#["+_+"]{2,64})|(^|\\s)"+w,"i"),$=/^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,S=/(^|\s)(````?)([\s\S]+?)(````?)([\s\.,:?!;]|$)|(^|\s)`([^\n]+?)`([\s\.,:?!;]|$)/,C={Telegram:"#/im?q=%23{1}",Twitter:"https://twitter.com/hashtag/{1}",Instagram:"https://instagram.com/explore/tags/{1}/","Google Plus":"https://plus.google.com/explore/{1}"},x={Telegram:"#/im?p=%40{1}",Twitter:"https://twitter.com/{1}",Instagram:"https://instagram.com/{1}/",GitHub:"https://github.com/{1}"};return{wrapRichText:r,wrapPlainText:c,parseEntities:i,parseMarkdown:a,mergeEntities:o}}]),angular.module("myApp.i18n",["izhukov.utils"]).factory("_",["$rootScope","$locale",function(e,t){function n(e,t){return e.replace(l,function(i,a,o){var s=t[a];return void 0===s?(console.warn("[i18n] missing param "+a+' for message "'+e+'"'),""):(void 0!==o&&(s=n(s,o.split("|"))),s.toString().trim())})}function i(e,t){return e=e.replace(/\*\*(.+?)\*\*/g,"$1").replace(/\n| /g,"
")}function a(e,t){var a=!1,l=e;if("_raw"===e.substr(-4)&&(a=!0,e=e.substr(0,e.length-4)),s.hasOwnProperty(e))l=s[e];else{if(!r.hasOwnProperty(e))return console.warn("[i18n] missing key "+e),e;l=r[e],console.warn("[i18n] missing locale key "+o+" / "+e)}return a||(l=encodeEntities(l)),"_md"==e.substr(-3)&&(l=i(l)),arguments.length>1&&("string"==typeof t?(Array.prototype.shift.apply(arguments),l=n(l,arguments)):l=n(l,t)),l}var o=Config.I18n.locale,s=Config.I18n.messages,r=Config.I18n.fallback_messages,l=/\{\s*([a-zA-Z\d\-_]+)(?:\s*:\s*(.*?))?\s*\}/g;return a.locale=function(){return o},a.pluralize=function(n){var i=e.$eval(a(n+"_raw"));return function(e){return(i[t.pluralCat(e)]||"").replace("{}",e)}},a}]).filter("i18n",["_",function(e){return function(t,n){return e(t+"_raw",n)}}]).directive("ngPluralize",["_",function(e){return{restrict:"EA",priority:1,compile:function(t){var n=t.attr("when"),i=e(n+"_raw");t.attr("when",i)}}}]).directive("myI18n",["_",function(e){return{restrict:"EA",compile:function(t){var n=t.children('my-i18n-param:not([name]), [my-i18n-param=""]:not([name])').map(function(e,t){return t.outerHTML}).toArray();t.children('my-i18n-param[name], [my-i18n-param]:not([my-i18n-param=""]), [my-i18n-param][name]').each(function(e,t){n[angular.element(t).attr("my-i18n-param")||angular.element(t).attr("name")]=t.outerHTML}),t.children("my-i18n-param").remove();var i=t.attr("my-i18n")||t.attr("msgid")?t:t.children("my-i18n-format, [my-i18n-format]");i.each(function(t,i){var a=angular.element(i),o=a.attr("my-i18n")||a.attr("msgid")||a.attr("my-i18n-format")||a.html().replace(/\s+/g," ").trim(),s=e(o,n);a.html(s)})}}}]),angular.module("izhukov.mtproto",["izhukov.utils"]).factory("MtpDcConfigurator",function(){function e(e,a){if(void 0===i[e]){var o,s,r=!1;if(Config.Modes.ssl||!Config.Modes.http){var l=t[e-1]+(a?"-1":""),c=Config.Modes.test?"apiw_test1":"apiw1";return r="https://"+l+".web.telegram.org/"+c}for(o=0;os[0]||i[0]==s[0]&&i[1]>=s[1])&&(s=[i[0],i[1]+4]),i=s,longFromInts(s[0],s[1])}function n(t,n){var o=t-Math.floor((n||tsNow())/1e3),s=Math.abs(a-o)>10;return e.set({server_time_offset:o}),i=[0,0],a=o,console.log(dT(),"Apply server time",t,n,o,s),s}var i=[0,0],a=0;return e.get("server_time_offset").then(function(e){e&&(a=e)}),{generateID:t,applyServerTime:n}}]).factory("MtpAuthorizer",["MtpDcConfigurator","MtpRsaKeysManager","MtpSecureRandom","MtpTimeManager","CryptoWorker","$http","$q","$timeout",function(e,t,n,i,a,o,s,r){function l(t,n){var a=n.byteLength,r=new Int32Array(n),l=new TLSerialization;l.storeLongP(0,0,"auth_key_id"),l.storeLong(i.generateID(),"msg_id"),l.storeInt(a,"request_length");var c=l.getBuffer(),d=new Int32Array(c),u=c.byteLength,p=new ArrayBuffer(u+a),m=new Int32Array(p);m.set(d),m.set(r,d.length);var h,g=f?p:m;try{h=o.post(e.chooseServer(t),g,{responseType:"arraybuffer",transformRequest:null})}catch(_){h=s.reject({code:406,type:"NETWORK_BAD_RESPONSE",originalError:_})}return h.then(function(e){if(!e.data||!e.data.byteLength)return s.reject({code:406,type:"NETWORK_BAD_RESPONSE"});try{{var t=new TLDeserialization(e.data,{mtproto:!0});t.fetchLong("auth_key_id"),t.fetchLong("msg_id"),t.fetchInt("msg_len")}}catch(n){return s.reject({code:406,type:"NETWORK_BAD_RESPONSE",originalError:n})}return t},function(e){return e.message||e.type||(e={code:406,type:"NETWORK_BAD_REQUEST",originalError:e}),s.reject(e)})}function c(e){var n=e.deferred,i=new TLSerialization({mtproto:!0});i.storeMethod("req_pq",{nonce:e.nonce}),console.log(dT(),"Send req_pq",bytesToHex(e.nonce)),l(e.dcID,i.getBuffer()).then(function(i){var o=i.fetchObject("ResPQ");if("resPQ"!=o._)throw new Error("resPQ response invalid: "+o._);if(!bytesCmp(e.nonce,o.nonce))throw new Error("resPQ nonce mismatch");if(e.serverNonce=o.server_nonce,e.pq=o.pq,e.fingerprints=o.server_public_key_fingerprints,console.log(dT(),"Got ResPQ",bytesToHex(e.serverNonce),bytesToHex(e.pq),e.fingerprints),e.publicKey=t.select(e.fingerprints),!e.publicKey)throw new Error("No public key found");console.log(dT(),"PQ factorization start",e.pq),a.factorize(e.pq).then(function(t){e.p=t[0],e.q=t[1],console.log(dT(),"PQ factorization done",t[2]),d(e)},function(e){console.log("Worker error",e,e.stack),n.reject(e)})},function(e){console.log(dT(),"req_pq error",e.message),n.reject(e)}),r(function(){t.prepare()})}function d(e){var t=e.deferred;e.newNonce=new Array(32),n.nextBytes(e.newNonce);var i=new TLSerialization({mtproto:!0});i.storeObject({_:"p_q_inner_data",pq:e.pq,p:e.p,q:e.q,nonce:e.nonce,server_nonce:e.serverNonce,new_nonce:e.newNonce},"P_Q_inner_data","DECRYPTED_DATA");var a=sha1BytesSync(i.getBuffer()).concat(i.getBytes()),o=new TLSerialization({mtproto:!0});o.storeMethod("req_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,p:e.p,q:e.q,public_key_fingerprint:e.publicKey.fingerprint,encrypted_data:rsaEncrypt(e.publicKey,a)}),console.log(dT(),"Send req_DH_params"),l(e.dcID,o.getBuffer()).then(function(n){var i=n.fetchObject("Server_DH_Params","RESPONSE");if("server_DH_params_fail"!=i._&&"server_DH_params_ok"!=i._)return t.reject(new Error("Server_DH_Params response invalid: "+i._)),!1;if(!bytesCmp(e.nonce,i.nonce))return t.reject(new Error("Server_DH_Params nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,i.server_nonce))return t.reject(new Error("Server_DH_Params server_nonce mismatch")),!1;if("server_DH_params_fail"==i._){var a=sha1BytesSync(e.newNonce).slice(-16);return bytesCmp(a,i.new_nonce_hash)?(t.reject(new Error("server_DH_params_fail")),!1):(t.reject(new Error("server_DH_params_fail new_nonce_hash mismatch")),!1)}try{u(e,i.encrypted_answer)}catch(o){return t.reject(o),!1}p(e)},function(e){t.reject(e)})}function u(e,t){e.localTime=tsNow(),e.tmpAesKey=sha1BytesSync(e.newNonce.concat(e.serverNonce)).concat(sha1BytesSync(e.serverNonce.concat(e.newNonce)).slice(0,12)),e.tmpAesIv=sha1BytesSync(e.serverNonce.concat(e.newNonce)).slice(12).concat(sha1BytesSync([].concat(e.newNonce,e.newNonce)),e.newNonce.slice(0,4));var n=aesDecryptSync(t,e.tmpAesKey,e.tmpAesIv),a=n.slice(0,20),o=n.slice(20),s=bytesToArrayBuffer(o),r=new TLDeserialization(s,{mtproto:!0}),l=r.fetchObject("Server_DH_inner_data");if("server_DH_inner_data"!=l._)throw new Error("server_DH_inner_data response invalid: "+constructor);if(!bytesCmp(e.nonce,l.nonce))throw new Error("server_DH_inner_data nonce mismatch");if(!bytesCmp(e.serverNonce,l.server_nonce))throw new Error("server_DH_inner_data serverNonce mismatch");console.log(dT(),"Done decrypting answer"),e.g=l.g,e.dhPrime=l.dh_prime,e.gA=l.g_a,e.serverTime=l.server_time,e.retry=0;var c=r.getOffset();if(!bytesCmp(a,sha1BytesSync(o.slice(0,c))))throw new Error("server_DH_inner_data SHA1-hash mismatch");i.applyServerTime(e.serverTime,e.localTime)}function p(e){var t=e.deferred,i=bytesFromHex(e.g.toString(16));e.b=new Array(256),n.nextBytes(e.b),a.modPow(i,e.b,e.dhPrime).then(function(n){var i=new TLSerialization({mtproto:!0});i.storeObject({_:"client_DH_inner_data",nonce:e.nonce,server_nonce:e.serverNonce,retry_id:[0,e.retry++],g_b:n},"Client_DH_Inner_Data");var o=sha1BytesSync(i.getBuffer()).concat(i.getBytes()),s=aesEncryptSync(o,e.tmpAesKey,e.tmpAesIv),r=new TLSerialization({mtproto:!0});r.storeMethod("set_client_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,encrypted_data:s}),console.log(dT(),"Send set_client_DH_params"),l(e.dcID,r.getBuffer()).then(function(n){var i=n.fetchObject("Set_client_DH_params_answer");return"dh_gen_ok"!=i._&&"dh_gen_retry"!=i._&&"dh_gen_fail"!=i._?(t.reject(new Error("Set_client_DH_params_answer response invalid: "+i._)),!1):bytesCmp(e.nonce,i.nonce)?bytesCmp(e.serverNonce,i.server_nonce)?void a.modPow(e.gA,e.b,e.dhPrime).then(function(n){var a=sha1BytesSync(n),o=a.slice(0,8),s=a.slice(-8);switch(console.log(dT(),"Got Set_client_DH_params_answer",i._),i._){case"dh_gen_ok":var r=sha1BytesSync(e.newNonce.concat([1],o)).slice(-16);if(!bytesCmp(r,i.new_nonce_hash1))return t.reject(new Error("Set_client_DH_params_answer new_nonce_hash1 mismatch")),!1;var l=bytesXor(e.newNonce.slice(0,8),e.serverNonce.slice(0,8));e.authKeyID=s,e.authKey=n,e.serverSalt=l,t.resolve(e);break;case"dh_gen_retry":var c=sha1BytesSync(e.newNonce.concat([2],o)).slice(-16);return bytesCmp(c,i.new_nonce_hash2)?p(e):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash2 mismatch")),!1);case"dh_gen_fail":var d=sha1BytesSync(e.newNonce.concat([3],o)).slice(-16);return bytesCmp(d,i.new_nonce_hash3)?(t.reject(new Error("Set_client_DH_params_answer fail")),!1):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash3 mismatch")),!1)}},function(e){t.reject(e)}):(t.reject(new Error("Set_client_DH_params_answer server_nonce mismatch")),!1):(t.reject(new Error("Set_client_DH_params_answer nonce mismatch")),!1)},function(e){t.reject(e)})},function(e){t.reject(e)})}function m(t){if(void 0!==_[t])return _[t];for(var n=[],i=0;16>i;i++)n.push(nextRandomInt(255));if(!e.chooseServer(t))return s.reject(new Error("No server found for dc "+t));var a={dcID:t,nonce:n,deferred:s.defer()};return r(function(){c(a)}),_[t]=a.deferred.promise,_[t]["catch"](function(){delete _[t]}),_[t]}var h=navigator.userAgent.match(/Chrome\/(\d+(\.\d+)?)/),g=h&&parseFloat(h[1])||!1,f=!("ArrayBufferView"in window)&&(!g||30>g);delete o.defaults.headers.post["Content-Type"],delete o.defaults.headers.common.Accept;var _={};return{auth:m}}]).factory("MtpNetworkerFactory",["MtpDcConfigurator","MtpTimeManager","MtpSecureRandom","Storage","CryptoWorker","AppRuntimeManager","$http","$q","$timeout","$interval","$rootScope",function(e,t,n,i,a,o,s,r,l,c,d){function u(e,t,n,i){i=i||{},this.dcID=e,this.iii=g++,this.authKey=t,this.authKeyUint8=convertToUint8Array(t),this.authKeyBuffer=convertToArrayBuffer(t),this.authKeyID=sha1BytesSync(t).slice(-8),this.serverSalt=n,this.upload=i.fileUpload||i.fileDownload||!1,this.updateSession(),this.currentRequests=0,this.checkConnectionPeriod=0,this.sentMessages={},this.serverMessages=[],this.clientMessages=[],this.pendingMessages={},this.pendingAcks=[],this.pendingResends=[],this.connectionInited=!1,this.pendingTimeouts=[],this.longPollInt=c(this.checkLongPoll.bind(this),1e4),this.checkLongPoll(),f||(f=!0,d.offline=!0,d.offlineConnecting=!0),Config.Navigator.mobile&&this.setupMobileSleep()}function p(){_&&(_=!1,h({_:"new_session_created"}))}function m(){_=!0}var h,g=0,f=!1,_=!1,v=navigator.userAgent.match(/Chrome\/(\d+(\.\d+)?)/),y=v&&parseFloat(v[1])||!1,b=!("ArrayBufferView"in window)&&(!y||30>y);return delete s.defaults.headers.post["Content-Type"],delete s.defaults.headers.common.Accept,d.retryOnline=function(){$(document.body).trigger("online")},u.prototype.updateSession=function(){this.seqNo=0,this.sessionID=new Array(8),n.nextBytes(this.sessionID)},u.prototype.setupMobileSleep=function(){var e=this;d.$watch("idle.isIDLE",function(t){t?e.sleepAfter=tsNow()+3e4:(delete e.sleepAfter,e.checkLongPoll())}),d.$on("push_received",function(){e.sleepAfter&&(e.sleepAfter=tsNow()+3e4,e.checkLongPoll())})},u.prototype.updateSentMessage=function(e){var n=this.sentMessages[e];if(!n)return!1;var i=this;if(n.container){var a=[];angular.forEach(n.inner,function(e){var t=i.updateSentMessage(e);t&&a.push(t.msg_id)}),n.inner=a}return n.msg_id=t.generateID(),n.seq_no=this.generateSeqNo(n.notContentRelated||n.container),this.sentMessages[n.msg_id]=n,delete i.sentMessages[e],n},u.prototype.generateSeqNo=function(e){var t=2*this.seqNo;return e||(t++,this.seqNo++),t},u.prototype.wrapMtpCall=function(e,n,i){var a=new TLSerialization({mtproto:!0});a.storeMethod(e,n);var o=t.generateID(),s=this.generateSeqNo(),r={msg_id:o,seq_no:s,body:a.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT call",e,n,o,s),this.pushMessage(r,i)},u.prototype.wrapMtpMessage=function(e,n){n=n||{};var i=new TLSerialization({mtproto:!0});i.storeObject(e,"Object");var a=t.generateID(),o=this.generateSeqNo(n.notContentRelated),s={msg_id:a,seq_no:o,body:i.getBytes()};return Config.Modes.debug&&console.log(dT(),"MT message",e,a,o),this.pushMessage(s,n)},u.prototype.wrapApiCall=function(e,n,i){var a=new TLSerialization(i);this.connectionInited||(a.storeInt(3667594509,"invokeWithLayer"),a.storeInt(Config.Schema.API.layer,"layer"),a.storeInt(1769565673,"initConnection"),a.storeInt(Config.App.id,"api_id"),a.storeString(navigator.userAgent||"Unknown UserAgent","device_model"),a.storeString(navigator.platform||"Unknown Platform","system_version"),a.storeString(Config.App.version,"app_version"),a.storeString(navigator.language||"en","lang_code")),i.afterMessageID&&(a.storeInt(3416209197,"invokeAfterMsg"),a.storeLong(i.afterMessageID,"msg_id")),i.resultType=a.storeMethod(e,n);var o=t.generateID(),s=this.generateSeqNo(),r={msg_id:o,seq_no:s,body:a.getBytes(!0),isAPI:!0};return Config.Modes.debug?console.log(dT(),"Api call",e,n,o,s,i):console.log(dT(),"Api call",e),this.pushMessage(r,i)},u.prototype.checkLongPoll=function(e){var t=this.cleanupSent();if(this.longPollPending&&tsNow()n.sleepAfter)||n.sendLongPoll()})},u.prototype.sendLongPoll=function(){var e=25e3,t=this;this.longPollPending=tsNow()+e,this.wrapMtpCall("http_wait",{max_delay:0,wait_after:0,max_wait:e},{noResponse:!0,longPoll:!0}).then(function(){delete t.longPollPending,setZeroTimeout(t.checkLongPoll.bind(t))},function(){console.log("Long-poll failed")})},u.prototype.pushMessage=function(e,t){var n=r.defer();return this.sentMessages[e.msg_id]=angular.extend(e,t||{},{deferred:n}),this.pendingMessages[e.msg_id]=0,t&&t.noShedule||this.sheduleRequest(),angular.isObject(t)&&(t.messageID=e.msg_id),n.promise},u.prototype.pushResend=function(e,t){var n=t?tsNow()+t:0,i=this.sentMessages[e];if(i.container)for(var a=0;a=l){if(o=m.sentMessages[t]){var n=(o.body.byteLength||o.body.length)+32;if(!o.notContentRelated&&u)return;if(!o.notContentRelated&&r&&r+n>655360)return void(u=!0);if(o.singleInRequest&&(p++,p>1))return;s.push(o),r+=n,o.isAPI?c=!0:o.longPoll&&(d=!0)}delete m.pendingMessages[t]}}),c&&!d){var h=new TLSerialization({mtproto:!0});h.storeMethod("http_wait",{max_delay:0,wait_after:0,max_wait:1e3}),s.push({msg_id:t.generateID(),seq_no:this.generateSeqNo(),body:h.getBytes()})}if(s.length){var g=[];if(s.length>1){var f=new TLSerialization({mtproto:!0,startMaxLength:r+64});f.storeInt(1945237724,"CONTAINER[id]"),f.storeInt(s.length,"CONTAINER[count]");for(var v=[],n=0;n1)&&this.sheduleRequest()}},u.prototype.getEncryptedMessage=function(e){var t=this;return a.sha1Hash(e).then(function(n){var i=new Uint8Array(n).subarray(4,20);return t.getMsgKeyIv(i,!0).then(function(t){return a.aesEncrypt(e,t[0],t[1]).then(function(e){return{bytes:e,msgKey:i}})})})},u.prototype.getDecryptedMessage=function(e,t){return this.getMsgKeyIv(e,!1).then(function(e){return a.aesDecrypt(t,e[0],e[1])})},u.prototype.sendEncryptedRequest=function(t,n){var a=this;n=n||{};var l=new TLSerialization({startMaxLength:t.body.length+64});return l.storeIntBytes(this.serverSalt,64,"salt"),l.storeIntBytes(this.sessionID,64,"session_id"),l.storeLong(t.msg_id,"message_id"),l.storeInt(t.seq_no,"seq_no"),l.storeInt(t.body.length,"message_data_length"),l.storeRawBytes(t.body,"message_data"),this.getEncryptedMessage(l.getBuffer()).then(function(t){var l=new TLSerialization({startMaxLength:t.bytes.byteLength+256});l.storeIntBytes(a.authKeyID,64,"auth_key_id"),l.storeIntBytes(t.msgKey,128,"msg_key"),l.storeRawBytes(t.bytes,"encrypted_data");var c,d=b?l.getBuffer():l.getArray();try{n=angular.extend(n||{},{responseType:"arraybuffer",transformRequest:null}),c=s.post(e.chooseServer(a.dcID,a.upload),d,n)}catch(u){c=r.reject(u)}return c.then(function(e){return e.data&&e.data.byteLength?e:r.reject({code:406,type:"NETWORK_BAD_RESPONSE"})},function(e){return 404==e.status&&-1!=(e.data||"").indexOf("nginx/0.3.33")&&i.remove("dc"+a.dcID+"_server_salt","dc"+a.dcID+"_auth_key").then(function(){o.reload()}),e.message||e.type||(e={code:406,type:"NETWORK_BAD_REQUEST"}),r.reject(e)})})},u.prototype.parseResponse=function(e){var t=this,n=new TLDeserialization(e),i=n.fetchIntBytes(64,!1,"auth_key_id");if(!bytesCmp(i,this.authKeyID))throw new Error("Invalid server auth_key_id: "+bytesToHex(i));var o=n.fetchIntBytes(128,!0,"msg_key"),s=n.fetchRawBytes(e.byteLength-n.getOffset(),!0,"encrypted_data");return this.getDecryptedMessage(o,s).then(function(e){var n=new TLDeserialization(e,{mtproto:!0}),i=(n.fetchIntBytes(64,!1,"salt"),n.fetchIntBytes(64,!1,"session_id")),s=n.fetchLong("message_id"),r=n.fetchInt("seq_no"),l=n.fetchRawBytes(!1,!0,"message_data"),c=convertToUint8Array(e).subarray(0,n.getOffset());return a.sha1Hash(c).then(function(e){if(!bytesCmp(o,bytesFromArrayBuffer(e).slice(-16)))throw console.warn(o,bytesFromArrayBuffer(e)),new Error("server msgKey mismatch");var n=bytesToArrayBuffer(l),a={mtproto:!0,override:{mt_message:function(e,t){e.msg_id=this.fetchLong(t+"[msg_id]"),e.seqno=this.fetchInt(t+"[seqno]"),e.bytes=this.fetchInt(t+"[bytes]");var n=this.getOffset();try{e.body=this.fetchObject("Object",t+"[body]")}catch(i){console.error(dT(),"parse error",i.message,i.stack),e.body={_:"parse_error",error:i}}this.offset!=n+e.bytes&&(console.warn(dT(),"set offset",this.offset,n,e.bytes),this.offset=n+e.bytes)},mt_rpc_result:function(e,n){e.req_msg_id=this.fetchLong(n+"[req_msg_id]");var i=t.sentMessages[e.req_msg_id],a=i&&i.resultType||"Object";e.result=this.fetchObject(a,n+"[result]")}}},c=new TLDeserialization(n,a),d=c.fetchObject("","INPUT");return{response:d,messageID:s,sessionID:i,seqNo:r}})})},u.prototype.applyServerSalt=function(e){var t=longToBytes(e),n={};return n["dc"+this.dcID+"_server_salt"]=bytesToHex(t),i.set(n),this.serverSalt=t,!0},u.prototype.sheduleRequest=function(e){this.offline&&this.checkConnection("forced shedule");var t=tsNow()+e;return e&&this.nextReq&&this.nextReq<=t?!1:(l.cancel(this.nextReqPromise),e>0?this.nextReqPromise=l(this.performSheduledRequest.bind(this),e||0):setZeroTimeout(this.performSheduledRequest.bind(this)),void(this.nextReq=t))},u.prototype.ackMessage=function(e){this.pendingAcks.push(e),this.sheduleRequest(3e4)},u.prototype.reqResendMessage=function(e){console.log(dT(),"Req resend",e),this.pendingResends.push(e),this.sheduleRequest(100)},u.prototype.cleanupSent=function(){var e=this,t=!1;return angular.forEach(this.sentMessages,function(n,i){if(n.notContentRelated&&void 0===e.pendingMessages[i])delete e.sentMessages[i];else if(n.container){for(var a=0;as;s++)this.processMessage(e.messages[s],n,a);break;case"bad_server_salt":console.log(dT(),"Bad server salt",e);var r=this.sentMessages[e.bad_msg_id];if(!r||r.seq_no!=e.bad_msg_seqno)throw console.log(e.bad_msg_id,e.bad_msg_seqno),new Error("Bad server salt for invalid message");this.applyServerSalt(e.new_server_salt),this.pushResend(e.bad_msg_id),this.ackMessage(n);break;case"bad_msg_notification":console.log(dT(),"Bad msg notification",e);var r=this.sentMessages[e.bad_msg_id];if(!r||r.seq_no!=e.bad_msg_seqno)throw console.log(e.bad_msg_id,e.bad_msg_seqno),new Error("Bad msg notification for invalid message");if(16==e.error_code||17==e.error_code){t.applyServerTime(bigStringInt(n).shiftRight(32).toString(10))&&(console.log(dT(),"Update session"), -this.updateSession());var l=this.updateSentMessage(e.bad_msg_id);this.pushResend(l.msg_id),this.ackMessage(n)}break;case"message":this.serverMessages.push(e.msg_id),this.processMessage(e.body,e.msg_id,a);break;case"new_session_created":this.ackMessage(n),this.processMessageAck(e.first_msg_id),this.applyServerSalt(e.server_salt);var c=this;i.get("dc").then(function(t){t==c.dcID&&!c.upload&&h&&h(e)});break;case"msgs_ack":for(var s=0;s5?"[.."+e.result.length+"..]":e.result),console.log(dT(),"Rpc response",f)}r.deferred.resolve(e.result)}r.isAPI&&(this.connectionInited=!0)}delete this.sentMessages[p]}break;default:this.ackMessage(n),h&&h(e)}},{getNetworker:function(e,t,n,i){return new u(e,t,n,i)},setUpdatesProcessor:function(e){h=e},stopAll:m,startAll:p}}]),angular.module("izhukov.mtproto.wrapper",["izhukov.utils","izhukov.mtproto"]).factory("MtpApiManager",["Storage","MtpAuthorizer","MtpNetworkerFactory","MtpSingleInstanceService","AppRuntimeManager","ErrorService","qSync","$q","TelegramMeWebService",function(e,t,n,i,a,o,s,r,l){function c(e){f!==e&&(f=e,l.setAuthorized(f))}function d(t,n){e.set({dc:t,user_auth:angular.extend({dcID:t},n)}),c(!0),b=t}function u(){for(var t=[],n=1;5>=n;n++)t.push("dc"+n+"_auth_key");return e.get.apply(e,t).then(function(n){for(var i=[],a=0;a0||!1),e.id||0})}function g(){return b||!1}var f,_={},v={},y={},b=!1;return i.start(),e.get("dc").then(function(e){e&&(b=e)}),{getBaseDcID:g,getUserID:h,invokeApi:m,getNetworker:p,setUserAuth:d,logOut:u}}]).factory("MtpApiFileManager",["MtpApiManager","$q","qSync","FileManager","IdbFileStorage","TmpfsFileStorage","MemoryFileStorage","WebpManager",function(e,t,n,i,a,o,s,r){function l(e,n,i){void 0===w[e]&&(w[e]=[],k[e]=0);var a=w[e],o=t.defer();return a.push({cb:n,deferred:o,activeDelta:i}),setZeroTimeout(function(){c(e)}),o.promise}function c(e){var t=w[e],n="upload"==e?11:5;if(k[e]>=n||!t||!t.length)return!1;var i=t.shift(),a=i.activeDelta||1;k[e]+=a;$++;i.cb().then(function(t){k[e]-=a,c(e),i.deferred.resolve(t)},function(t){k[e]-=a,c(e),i.deferred.reject(t)})}function d(e){switch(e._){case"inputVideoFileLocation":return"video"+e.id+".mp4";case"inputDocumentFileLocation":var t=(e.file_name||"").split(".",2),n=t[1]||"";return e.sticker&&!r.isWebpSupported()&&(n+=".png"),t.length?t[0]+"_"+e.id+"."+n:"doc"+e.id;case"inputAudioFileLocation":return"audio"+e.id;default:e.volume_id||console.trace("Empty location",e);var n="jpg";return e.sticker&&(n=r.isWebpSupported()?"webp":"png"),e.volume_id+"_"+e.local_id+"_"+e.secret+"."+n}}function u(e){if(!e)return!1;var t=d(e);return b[t]||!1}function p(){return o.isAvailable()?o:a.isAvailable()?a:s}function m(e,t){var n=d(e);return v[n]||(v[n]=p().saveFile(n,t).then(function(e){return b[n]=e})),v[n]}function h(a){if(!i.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});var o=d(a),s=a.sticker?"image/webp":"image/jpeg",c=v[o]||y[o];if(c)return c;var u=p();return y[o]=u.getFile(o).then(function(e){return b[o]=e},function(){var t=l(a.dc_id,function(){var t=a;return t._&&"fileLocation"!=t._||(t=angular.extend({},a,{_:"inputFileLocation"})),e.invokeApi("upload.getFile",{location:t,offset:0,limit:1048576},{dcID:a.dc_id,fileDownload:!0,createNetworker:!0})}),c=function(e){return!a.sticker||r.isWebpSupported()?n.when(e):r.getPngBlobFromWebp(e)};return u.getFileWriter(o,s).then(function(e){return t.then(function(t){return c(t.bytes).then(function(t){return i.write(e,t).then(function(){return b[o]=e.finalize()})})})})})}function g(e,t){var n=p(),i=d(e);return n.getFile(i,t)}function f(a,o,s,c){if(!i.isAvailable())return t.reject({type:"BROWSER_BLOB_NOT_SUPPORTED"});c=c||{};var u=!1;o.sticker&&!r.isWebpSupported()&&(c.toFileEntry||s>524288?delete o.sticker:(u=!0,c.mime="image/png"));var m=d(o),h=c.toFileEntry||null,g=v[m]||y[m],f=p();if(g)return h?g.then(function(e){return i.copy(e,h)}):g;var _,w=t.defer(),k=!1,$=!1,S=c.mime||"image/jpeg",C=function(e){w.reject(e),C=angular.noop,!_||e&&"DOWNLOAD_CANCELED"==e.type||_.truncate(0)};return f.getFile(m,s).then(function(e){h?i.copy(e,h).then(function(){w.resolve()},C):w.resolve(b[m]=e)},function(){var c=h?i.getFileWriter(h):f.getFileWriter(m,S),d=function(e){return u?r.getPngBlobFromWebp(e):n.when(e)};c.then(function(n){_=n;var r,c,u=524288,p=0,g=t.when();if(n.length){if(p=n.length,p>=s)return void(h?w.resolve():w.resolve(b[m]=n.finalize()));n.seek(p),w.notify({done:p,total:s})}for(r=p;s>r;r+=u)c=t.defer(),function(r,c,p,g){return l(a,function(){return k?t.when():e.invokeApi("upload.getFile",{location:o,offset:c,limit:u},{dcID:a,fileDownload:!0,singleInRequest:void 0!==window.safari,createNetworker:!0})},2).then(function(e){g.then(function(){return k?t.when():d(e.bytes).then(function(e){return i.write(n,e).then(function(){p.resolve()},C).then(function(){r?($=!0,h?w.resolve():w.resolve(b[m]=n.finalize())):w.notify({done:c+u,total:s})})})})})}(r+u>=s,r,c,g),g=c.promise})}),w.promise.cancel=function(){k||$||(k=!0,delete y[m],C({type:"DOWNLOAD_CANCELED"}))},h||(y[m]=w.promise),w.promise}function _(n){var i=n.size,a=i>=10485760,o=!1,s=!1,r=0,c=262144,d=2;i>67108864?(c=524288,d=4):102400>i&&(c=32768,d=1);var u=Math.ceil(i/c);if(u>3e3)return t.reject({type:"FILE_TOO_BIG"});var p,m=[nextRandomInt(4294967295),nextRandomInt(4294967295)],h=t.defer(),g=function(e){h.reject(e),o=!0,g=angular.noop},f=0,_={_:a?"inputFileBig":"inputFile",id:m,parts:u,name:n.name,md5_checksum:""};for(p=0;i>p;p+=c)!function(p,f){l("upload",function(){var l=t.defer(),d=new FileReader,v=n.slice(p,p+c);return d.onloadend=function(t){return o?void l.reject():void(t.target.readyState==FileReader.DONE&&e.invokeApi(a?"upload.saveBigFilePart":"upload.saveFilePart",{file_id:m,file_part:f,file_total_parts:u,bytes:t.target.result},{startMaxLength:c+256,fileUpload:!0,singleInRequest:!0}).then(function(e){r++,l.resolve(),r>=u?(h.resolve(_),s=!0):(console.log(dT(),"Progress",r*c/i),h.notify({done:r*c,total:i}))},g))},d.readAsArrayBuffer(v),l.promise},d)}(p,f++);return h.promise.cancel=function(){console.log("cancel upload",o,s),o||s||(o=!0,g({type:"UPLOAD_CANCELED"}))},h.promise}var v={},y={},b={},w={},k={},$=0;return{getCachedFile:u,getDownloadedFile:g,downloadFile:f,downloadSmallFile:h,saveSmallFile:m,uploadFile:_}}]).service("MtpSingleInstanceService",["_","$rootScope","$interval","Storage","AppRuntimeManager","IdleManager","ErrorService","MtpNetworkerFactory",function(e,t,n,i,a,o,s,r){function l(){if(!p&&!Config.Navigator.mobile&&!Config.Modes.packed){p=!0,o.start(),h=tsNow(),t.$watch("idle.isIDLE",d),n(d,5e3),d();try{$($window).on("beforeunload",c)}catch(e){}}}function c(){i.remove(m?"xt_instance":"xt_idle_instance")}function d(){var n=tsNow(),a=t.idle&&t.idle.isIDLE,o={id:u,idle:a,time:n};i.get("xt_instance","xt_idle_instance").then(function(t){var l=t[0],c=t[1];!l||l.timen-1e4&&n>g&&(s.alert(e("error_modal_warning_title_raw"),e("error_modal_multiple_open_tabs_raw")),g+=tsNow()+6e4)),i.set({xt_instance:o}),m||r.startAll(),m=!0):(i.set({xt_idle_instance:o}),m&&r.stopAll(),m=!1)})}var u=nextRandomInt(4294967295),p=!1,m=!1,h=tsNow(),g=0;return{start:l}}]),angular.module("myApp",["ngRoute","ngSanitize","ngTouch","ui.bootstrap","mediaPlayer","izhukov.utils","izhukov.mtproto","izhukov.mtproto.wrapper","myApp.filters","myApp.services","myApp.templates","myApp.directives","myApp.controllers"]).config(["$locationProvider","$routeProvider","$compileProvider","StorageProvider",function(e,t,n,i){n.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|file|blob|filesystem|chrome-extension|app):|data:image\//),n.aHrefSanitizationWhitelist(/^\s*(https?|ftp|file|tg|mailto|blob|filesystem|chrome-extension|app):|data:/),Config.Modes.test&&i.setPrefix("t_"),t.when("/",{templateUrl:templateUrl("welcome"),controller:"AppWelcomeController"}),t.when("/login",{templateUrl:templateUrl("login"),controller:"AppLoginController"}),t.when("/im",{templateUrl:templateUrl("im"),controller:"AppIMController",reloadOnSearch:!1}),t.otherwise({redirectTo:"/"})}]),angular.module("myApp.services",["myApp.i18n","izhukov.utils"]).service("AppUsersManager",["$rootScope","$modal","$modalStack","$filter","$q","qSync","MtpApiFileManager","MtpApiManager","RichTextProcessor","ErrorService","Storage","_",function(e,t,n,i,a,o,s,r,l,c,d,u){function p(){return O?O:O=r.invokeApi("contacts.getContacts",{hash:""}).then(function(e){var t,n;U=[],f(e.users);for(var n=0;n0,contact:(2048&t.flags)>0,mutual:(4096&t.flags)>0,deleted:(8192&t.flags)>0,bot:(16384&t.flags)>0,botNoPrivacy:(32768&t.flags)>0,botNoGroups:(65536&t.flags)>0},t.sortName=t.pFlags.deleted?"":SearchIndexManager.cleanSearchText(t.first_name+" "+(t.last_name||""));var s=t.sortName.split(" "),r=s.shift(),c=s.pop();t.initials=r.charAt(0)+(c?c.charAt(0):r.charAt(1)),t.sortStatus=t.pFlags.bot?-1:v(t.status);var d=L[a];void 0===d?d=L[a]=t:safeReplaceObject(d,t),e.$broadcast("user_update",a),void 0!==j[a]&&safeReplaceObject(j[a],t&&t.photo&&t.photo.photo_small||{empty:!0})}}function v(e){if(e){var t=e.expires||e.was_online;if(t)return t;{tsNow(!0)+H}switch(e._){case"userStatusRecently":return tsNow(!0)+H-259200;case"userStatusLastWeek":return tsNow(!0)+H-604800;case"userStatusLastMonth":return tsNow(!0)+H-2592e3}}return 0}function y(e){return angular.isObject(e)?e:L[e]||{id:e,deleted:!0,num:1}}function b(){return y(R)}function w(e){return L[e]&&L[e].pFlags.bot}function k(e){return angular.isObject(L[e])}function $(e){var t=y(e);return 333e3==e?{placeholder:"img/placeholders/DialogListAvatarSystem@2x.png"}:(void 0===j[e]&&(j[e]=t&&t.photo&&t.photo.photo_small||{empty:!0}),{num:t.num,placeholder:"img/placeholders/UserAvatar"+t.num+"@2x.png",location:j[e]})}function S(e){var t=y(e);return"u"+e+(t.access_hash?"_"+t.access_hash:"")}function C(e){var t=y(e);return t.pFlags.self?{_:"inputUserSelf"}:{_:"inputUser",user_id:e,access_hash:t.access_hash||0}}function x(){var t=tsNow(!0)+H;angular.forEach(L,function(n){n.status&&"userStatusOnline"==n.status._&&n.status.expires=1e3?void o.resolve(s):void this["continue"]()},t.onerror=function(e){console.log("phonebook error",e,e.type,e.message),o.reject(e)},o.promise}return{isAvailable:a,openPhonebookImport:o,getPhonebookContacts:s}}]).service("AppChatsManager",["$q","$rootScope","$modal","_","MtpApiFileManager","MtpApiManager","AppUsersManager","AppPhotosManager","RichTextProcessor",function(e,t,n,i,a,o,s,r,l){function c(e){angular.forEach(e,d)}function d(e){if(angular.isObject(e)){e.rTitle=l.wrapRichText(e.title,{noLinks:!0,noLinebreaks:!0})||i("chat_title_deleted");var n=e.flags;e.pFlags={creator:(1&n)>0,kicked:(2&n)>0,left:(4&n)>0},"channel"==e._&&angular.extend(e.pFlags,{editor:(8&e.flags)>0,moderator:(16&e.flags)>0,broadcast:(32&e.flags)>0,username:(64&e.flags)>0,verified:(128&e.flags)>0});var a=SearchIndexManager.cleanSearchText(e.title||"").split(" "),o=a.shift(),s=a.pop();if(e.initials=o.charAt(0)+(s?s.charAt(0):o.charAt(1)),e.num=Math.abs(e.id>>1)%8+1,e.username){var r=SearchIndexManager.cleanUsername(e.username);$[r]=e.id}void 0===k[e.id]?k[e.id]=e:(safeReplaceObject(k[e.id],e),t.$broadcast("chat_update",e.id)),void 0!==C[e.id]&&safeReplaceObject(C[e.id],e&&e.photo&&e.photo.photo_small||{empty:!0})}}function u(e){return k[e]||{id:e,deleted:!0}}function p(e){return $[e]||0}function m(e,t){S[e]=t}function h(e){var t=k[e];return t&&("channel"==t._||"channelForbidden"==t._)||S[e]?!0:!1}function g(e){return e||0}function f(e){return e?{_:"inputChannel",channel_id:e,access_hash:u(e).access_hash||S[e]||0}:{_:"inputChannelEmpty"}}function _(e){return angular.isObject(k[e])}function v(e){var t=u(e);return void 0===C[e]&&(C[e]=t&&t.photo&&t.photo.photo_small||{empty:!0}),{placeholder:"img/placeholders/GroupAvatar"+Math.ceil(t.num/2)+"@2x.png",location:C[e]}}function y(e){var t=u(e);return h(e)?"c"+e+"_"+t.access_hash:"g"+e}function b(e,t){var n=angular.copy(t),i=u(e);if(n.participants&&"chatParticipants"==n.participants._&&o.getUserID().then(function(e){n.isAdmin=e==n.participants.admin_id,angular.forEach(n.participants.participants,function(t){t.canLeave=e==t.user_id,t.canKick=!t.canLeave&&(n.isAdmin||e==t.inviter_id),t.user=s.getUser(t.user_id)})}),n.participants&&"channelParticipants"==n.participants._){var a=i.pFlags.creator||i.pFlags.editor||i.pFlags.moderator;angular.forEach(n.participants.participants,function(e){e.canLeave=!i.pFlags.creator&&"channelParticipantSelf"==e._,e.canKick=a&&"channelParticipant"==e._,e.user=s.getUser(e.user_id)})}return n.about&&(n.rAbout=l.wrapRichText(n.about,{noLinebreaks:!0})),n.peerString=y(e),n.chat=i,n}function w(e,i){var a=t.$new();if(a.chatID=e,h(e)){n.open({templateUrl:templateUrl("channel_modal"),controller:"ChannelModalController",scope:a,windowClass:"chat_modal_window channel_modal_window mobile_modal"})}else{n.open({templateUrl:templateUrl("chat_modal"),controller:"ChatModalController",scope:a,windowClass:"chat_modal_window mobile_modal"})}}var k={},$={},S={},C={};return t.$on("apiUpdate",function(e,n){switch(n._){case"updateChannel":var i=n.channel_id;t.$broadcast("channel_settings",{channelID:i})}}),{saveApiChats:c,saveApiChat:d,getChat:u,isChannel:h,saveChannelAccess:m,getChatInput:g,getChannelInput:f,getChatPhoto:v,getChatString:y,resolveUsername:p,hasChat:_,wrapForFull:b,openChat:w}}]).service("AppPeersManager",["qSync","AppUsersManager","AppChatsManager","MtpApiManager",function(e,t,n,i){function a(e){var t=e.charAt(0),i=e.substr(1).split("_");return"u"==t?{_:"inputPeerUser",user_id:i[0],access_hash:i[1]}:"c"==t?(n.saveChannelAccess(i[0],i[1]),{_:"inputPeerChannel",channel_id:i[0],access_hash:i[1]||0}):{_:"inputPeerChat",chat_id:i[0]}}function o(e){if(0>e){var i=-e;return n.isChannel(i)?{_:"inputPeerChannel",channel_id:i,access_hash:n.getChat(i).access_hash||0}:{_:"inputPeerChat",chat_id:i}}return{_:"inputPeerUser",user_id:e,access_hash:t.getUser(e).access_hash||0}}function s(e){var i;if(e>0)i="%pu "+t.getUserSearchText(e);else if(0>e){var a=n.getChat(-e);i="%pg "+(a.title||"")}return i}function r(e){return e>0?t.getUserString(e):n.getChatString(-e)}function l(e){if(e>0)return{_:"peerUser",user_id:e};var t=-e;return n.isChannel(t)?{_:"peerChannel",channel_id:t}:{_:"peerChat",chat_id:t}}function c(a){var o,s,r,l=SearchIndexManager.cleanUsername(a);return(o=t.resolveUsername(l))&&(r=t.getUser(o).username,SearchIndexManager.cleanUsername(r)==l)?e.when(o):(s=n.resolveUsername(l))&&(r=n.getChat(s).username,SearchIndexManager.cleanUsername(r)==l)?e.when(-s):i.invokeApi("contacts.resolveUsername",{username:a}).then(function(e){return t.saveApiUsers(e.users),n.saveApiChats(e.chats),d(e.peer)})}function d(e){if(angular.isObject(e))return e.user_id?e.user_id:-(e.channel_id||e.chat_id);var t="u"==e.charAt(0),n=e.substr(1).split("_");return t?n[0]:-n[0]||0}function u(e){return e>0?t.getUser(e):n.getChat(-e)}function p(e){return e>0?t.getUserPhoto(e):n.getChatPhoto(-e)}function m(e){return 0>e&&n.isChannel(-e)}function h(e){return e>0&&t.isBot(e)}return{getInputPeer:a,getInputPeerByID:o,getPeerSearchText:s,getPeerString:r,getOutputPeer:l,getPeerID:d,getPeer:u,getPeerPhoto:p,resolveUsername:c,isChannel:m,isBot:h}}]).service("AppProfileManager",["$q","$rootScope","AppUsersManager","AppChatsManager","AppPeersManager","AppPhotosManager","NotificationsManager","MtpApiManager","ApiUpdatesManager","RichTextProcessor",function(e,t,n,i,a,o,s,r,l,c){function d(e){var t=e&&e.user_id;if(!t)return!1;var n={};return angular.forEach(e.commands,function(e){n[e.command]=e.description}),_[t]={id:t,version:e.version,shareText:e.share_text,description:e.description,rAbout:c.wrapRichText(e.share_text,{noLinebreaks:!0}),commands:n}}function u(e,t){return r.invokeApi("users.getFullUser",{id:n.getUserInput(e)}).then(function(i){return t&&t.phone_number?(i.user.phone=t.phone_number,(t.first_name||t.last_name)&&(i.user.first_name=t.first_name,i.user.last_name=t.last_name),n.saveApiUser(i.user)):n.saveApiUser(i.user,!0),o.savePhoto(i.profile_photo,{user_id:e}),s.savePeerSettings(e,i.notify_settings),i.bot_info=d(i.bot_info),i})}function p(t){var i=[];return t>=0&&!n.isBot(t)||a.isChannel(t)?e.when(i):t>=0?u(t).then(function(e){var t=e.bot_info;return t&&"botInfoEmpty"!=t._&&i.push(t),i}):m(-t).then(function(e){return angular.forEach(e.bot_info,function(e){i.push(d(e))}),i})}function m(a){if(i.isChannel(a))return f(a);if(void 0!==v[a]){var l=i.getChat(a);if(l.version==v[a].participants.version||l.pFlags.left)return e.when(v[a])}return void 0!==y[a]?y[a]:y[a]=r.invokeApi("messages.getFullChat",{chat_id:i.getChatInput(a)}).then(function(e){i.saveApiChats(e.chats),n.saveApiUsers(e.users);var r=e.full_chat;return r&&r.chat_photo.id&&o.savePhoto(r.chat_photo),s.savePeerSettings(-a,r.notify_settings),delete y[a],v[a]=r,t.$broadcast("chat_full_update",a),r})}function h(e,t){return m(e).then(function(n){return!t&&n.exported_invite&&"chatInviteExported"==n.exported_invite._?n.exported_invite.link:r.invokeApi("messages.exportChatInvite",{chat_id:i.getChatInput(e)}).then(function(t){return void 0!==v[e]&&(v[e].exported_invite=t),t.link})})}function g(e){return r.invokeApi("channels.getParticipants",{channel:i.getChannelInput(e),filter:{_:"channelParticipantsRecent"},offset:0,limit:200}).then(function(e){return n.saveApiUsers(e.users),e.participants})}function f(a,c){return void 0===v[a]||c?void 0!==y[a]?y[a]:y[a]=r.invokeApi("channels.getFullChannel",{channel:i.getChannelInput(a)}).then(function(r){i.saveApiChats(r.chats),n.saveApiUsers(r.users);var l=r.full_chat,c=i.getChat(a);l&&l.chat_photo.id&&o.savePhoto(l.chat_photo),s.savePeerSettings(-a,l.notify_settings);var d;return d=8&l.flags||c.pFlags.creator||c.pFlags.editor||c.pFlags.moderator?g(a).then(function(e){delete y[a],l.participants={_:"channelParticipants",participants:e}},function(e){e.handled=!0}):e.when(),d.then(function(){return delete y[a],v[a]=l,t.$broadcast("chat_full_update",a),l})},function(e){switch(e.type){case"CHANNEL_PRIVATE":var t=i.getChat(a);t={_:"channelForbidden",access_hash:t.access_hash,title:t.title},l.processUpdateMessage({_:"updates",updates:[{_:"updateChannel",channel_id:a}],chats:[t],users:[]})}}):e.when(v[a])}var _={},v={},y={};return t.$on("apiUpdate",function(e,n){switch(n._){case"updateChatParticipants":var i=n.participants,a=v[i.id];void 0!==a&&(a.participants=n.participants,t.$broadcast("chat_full_update",chatID));break;case"updateChatParticipantAdd":var a=v[n.chat_id];if(void 0!==a){for(var i=a.participants.participants||[],o=0,s=i.length;s>o;o++)if(i[o].user_id==n.user_id)return;i.push({_:"chatParticipant",user_id:n.user_id,inviter_id:n.inviter_id,date:tsNow(!0)}),a.participants.version=n.version,t.$broadcast("chat_full_update",n.chat_id)}break;case"updateChatParticipantDelete":var a=v[n.chat_id];if(void 0!==a)for(var i=a.participants.participants||[],o=0,s=i.length;s>o;o++)if(i[o].user_id==n.user_id)return i.splice(o,1),a.participants.version=n.version,void t.$broadcast("chat_full_update",n.chat_id)}}),{getPeerBots:p,getProfile:u,getChatInviteLink:h,getChatFull:m,getChannelFull:f}}]).service("AppPhotosManager",["$modal","$window","$rootScope","MtpApiManager","MtpApiFileManager","AppUsersManager","FileManager",function(e,t,n,i,a,o,s){function r(e,t){t&&angular.extend(e,t),f[e.id]=e,angular.forEach(e.sizes,function(e){"photoCachedSize"==e._&&(a.saveSmallFile(e.location,e.bytes),e.size=e.bytes.length,delete e.bytes,e._="photoSize")})}function l(e,t,n){Config.Navigator.retina&&(t*=2,n*=2);var i={_:"photoSizeEmpty"},a=16777215;return angular.forEach(e.sizes,function(e){var o=Math.abs(e.w*e.h-t*n);a>o&&(i=e,a=o)}),i}function c(e,t,n){var a=o.getUserInput(e);return i.invokeApi("photos.getUserPhotos",{user_id:a,offset:0,limit:n||20,max_id:t||0}).then(function(t){o.saveApiUsers(t.users);for(var n=[],i={user_id:e},a=0;a800&&(i-=208);var s=l(n,i,o);s&&!s.preloaded&&(s.preloaded=!0,s.size?a.downloadFile(s.location.dc_id,{_:"inputFileLocation",volume_id:s.location.volume_id,local_id:s.location.local_id,secret:s.location.secret},s.size):a.downloadSmallFile(s.location))}}function u(e){return f[e]||{_:"photoEmpty"}}function p(e,t){t=t||{};var n=angular.copy(f[e])||{_:"photoEmpty"},i=t.website?100:Math.min(_-80,Config.Mobile?210:260),a=t.website?100:Math.min(v-100,Config.Mobile?210:260),o=l(n,i,a),s={placeholder:"img/placeholders/PhotoThumbConversation.gif",width:i,height:a};if(o&&"photoSizeEmpty"!=o._){var r=calcImageInBox(o.w,o.h,i,a);s.width=r.w,s.height=r.h,s.location=o.location,s.size=o.size}else s.width=100,s.height=100;return n.thumb=s,n}function m(e){var n=p(e),i=$(window).width()-(Config.Mobile?0:32),a=$(t).height()-(Config.Mobile?0:116);!Config.Mobile&&i>800&&(i-=208);var o=l(n,i,a),s={placeholder:"img/placeholders/PhotoThumbModal.gif"};if(s.width=i,s.height=a,o&&"photoSizeEmpty"!=o._){var r=calcImageInBox(o.w,o.h,i,a,!0);s.width=r.w,s.height=r.h,s.modalWidth=Math.max(s.width,Math.min(400,i)),s.location=o.location,s.size=o.size}return n.full=s,n}function h(t,i){if(!t||"0"===t)return!1;var a=n.$new(!0);a.photoID=t;var o="PhotoModalController";i&&i.p>0?(o="UserpicModalController",a.userID=i.p):i&&i.p<0?(o="ChatpicModalController",a.chatID=-i.p):i&&i.m>0&&(a.messageID=i.m,i.w&&(a.webpageID=i.w));e.open({templateUrl:templateUrl("photo_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:o,scope:a,windowClass:"photo_modal_window"})}function g(e){var n=f[e],i="jpg",o="image/jpeg",r="photo"+e+"."+i,c=Math.max(screen.width||0,$(window).width()-36,800),d=Math.max(screen.height||0,$(t).height()-150,800),u=l(n,c,d),p={_:"inputFileLocation",volume_id:u.location.volume_id,local_id:u.location.local_id,secret:u.location.secret};s.chooseSave(r,i,o).then(function(e){e&&a.downloadFile(u.location.dc_id,p,u.size,{mime:o,toFileEntry:e}).then(function(){},function(e){console.log("photo download failed",e)})},function(){var e=a.getCachedFile(p);return e?s.download(e,o,r):void a.downloadFile(u.location.dc_id,p,u.size,{mime:o}).then(function(e){s.download(e,o,r)},function(e){console.log("photo download failed",e)})})}var f={},_=$(window).width(),v=$(window).height();return n.preloadPhoto=d,n.openPhoto=h,{savePhoto:r,preloadPhoto:d,getUserPhotos:c,getPhoto:u,choosePhotoSize:l,wrapForHistory:p,wrapForFull:m,openPhoto:h,downloadPhoto:g}}]).service("AppWebPagesManager",["$modal","$sce","$window","$rootScope","MtpApiManager","AppPhotosManager","RichTextProcessor",function(e,t,n,i,a,o,s){function r(e,t,n){e.photo&&"photo"===e.photo._?o.savePhoto(e.photo,n):delete e.photo,e.rTitle=s.wrapRichText(e.title||e.author,{noLinks:!0,noLinebreaks:!0});var a="";if("GitHub"==e.site_name){var r=e.url.match(/(https?:\/\/github\.com\/[^\/]+\/[^\/]+)/);r&&(a=r[0]+"/issues/{1}")}if(e.rDescription=s.wrapRichText(e.description,{contextSite:e.site_name||"external",contextHashtag:a}),t&&(void 0===p[e.id]&&(p[e.id]={}),p[e.id][t]=!0,u[e.id]=e),void 0===u[e.id]?u[e.id]=e:safeReplaceObject(u[e.id],e),!t&&void 0!==p[e.id]){ -var l=[];angular.forEach(p[e.id],function(e,t){l.push(t)}),i.$broadcast("webpage_updated",{id:e.id,msgs:l})}}function l(t,n){var a=i.$new(!0);a.webpageID=t,a.messageID=n,e.open({templateUrl:templateUrl("embed_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"EmbedModalController",scope:a,windowClass:"photo_modal_window"})}function c(e){var t=angular.copy(u[e])||{_:"webPageEmpty"};return t.photo&&t.photo.id&&(t.photo=o.wrapForHistory(t.photo.id,{website:"photo"!=t.type&&"video"!=t.type})),t}function d(e){var i=c(e);if(!i.embed_url)return i;var a=$(window).width()-(Config.Mobile?0:10),o=$(n).height()-(Config.Mobile?92:150);!Config.Mobile&&a>800&&(a-=208);var s={width:a,height:o};if(i.embed_width&&i.embed_height){var r=calcImageInBox(i.embed_width,i.embed_height,a,o);s.width=r.w,s.height=r.h}else s.height=s.width=Math.min(a,o);var l=Config.Modes.chrome_packed?"webview":"iframe",d="iframe"!=i.embed_type?i.embed_type||"text/html":"text/html",u="<"+l+' src="'+encodeEntities(i.embed_url)+'" type="'+encodeEntities(d)+'" frameborder="0" border="0" webkitallowfullscreen mozallowfullscreen allowfullscreen width="'+s.width+'" height="'+s.height+'" style="width: '+s.width+"px; height: "+s.height+'px;">";return s.html=t.trustAs("html",u),i.full=s,i}var u={},p={};return i.$on("apiUpdate",function(e,t){switch(t._){case"updateWebPage":r(t.webpage)}}),{saveWebPage:r,openEmbed:l,wrapForFull:d,wrapForHistory:c}}]).service("AppVideoManager",["$sce","$rootScope","$modal","$window","MtpApiFileManager","AppUsersManager","FileManager","qSync",function(e,t,n,i,a,o,s,r){function l(e,t){t&&angular.extend(e,t),g[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(a.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function c(e){if(void 0!==f[e])return f[e];var t=angular.copy(g[e]),n=Math.min(_-80,Config.Mobile?210:150),i=Math.min(v-100,Config.Mobile?210:150),a=t.thumb,o={placeholder:"img/placeholders/VideoThumbConversation.gif",width:n,height:i};return a&&"photoSizeEmpty"!=a._&&(a.w/a.h>n/i?o.height=parseInt(a.h*n/a.w):(o.width=parseInt(a.w*i/a.h),o.width>n&&(o.height=parseInt(o.height*n/o.width),o.width=n)),o.location=a.location,o.size=a.size),t.thumb=o,f[e]=t}function d(e){var t=c(e),n=Math.min($(window).width()-(Config.Mobile?0:60),542),a=$(i).height()-(Config.Mobile?92:150),o={placeholder:"img/placeholders/VideoThumbModal.gif",width:n,height:a};if(t.w&&t.h){var s=calcImageInBox(t.w,t.h,n,a);o.width=s.w,o.height=s.h}else o.height=o.width=Math.min(n,a);return t.full=o,t.fullThumb=angular.copy(t.thumb),t.fullThumb.width=o.width,t.fullThumb.height=o.height,t}function u(e,i){var a=t.$new(!0);return a.videoID=e,a.messageID=i,n.open({templateUrl:templateUrl("video_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"VideoModalController",scope:a,windowClass:"video_modal_window"})}function p(e){var t=g[e],n=f[e]||t||{},i={_:"inputVideoFileLocation",id:e,access_hash:t.access_hash};void 0===n.downloaded&&a.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function m(n,i){var o=g[n],l=f[n]||o||{},c=o.mime_type||"video/ogg",d={_:"inputVideoFileLocation",id:n,access_hash:o.access_hash};if(l.downloaded&&!i){var u=a.getCachedFile(d);if(u)return r.when(u)}l.progress={enabled:!l.downloaded,percent:1,total:o.size};var p=a.downloadFile(o.dc_id,d,o.size,{mime:c,toFileEntry:i});return p.then(function(t){s.getFileCorrectUrl(t,c).then(function(t){l.url=e.trustAsResourceUrl(t)}),delete l.progress,l.downloaded=!0,console.log("video save done")},function(e){console.log("video download failed",e),l.progress.enabled=!1},function(e){console.log("dl progress",e),l.progress.enabled=!0,l.progress.done=e.done,l.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),l.progress.cancel=p.cancel,p}function h(e){{var t=g[e],n=t.mime_type||"video/mp4",i=n.split(".")[1]||"mp4",a="t_video"+e+"."+i;f[e]||t||{}}s.chooseSave(a,i,n).then(function(t){t&&m(e,t)},function(){m(e).then(function(e){s.download(e,n,a)})})}var g={},f={},_=$(window).width(),v=$(window).height();return{saveVideo:l,wrapForHistory:c,wrapForFull:d,openVideo:u,updateVideoDownloaded:p,downloadVideo:m,saveVideoFile:h}}]).service("AppDocsManager",["$sce","$rootScope","$modal","$window","$q","RichTextProcessor","MtpApiFileManager","FileManager","qSync",function(e,t,n,i,a,o,s,r,l){function c(e,t){_[e.id]=e,t&&angular.extend(e,t),e.thumb&&"photoCachedSize"==e.thumb._&&(s.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize"),angular.forEach(e.attributes,function(t){switch(t._){case"documentAttributeFilename":e.file_name=t.file_name;break;case"documentAttributeAudio":e.duration=t.duration,e.audioTitle=t.title,e.audioPerformer=t.performer;break;case"documentAttributeVideo":e.duration=t.duration;break;case"documentAttributeSticker":e.sticker=1,void 0!==t.alt&&(e.sticker=2,e.stickerEmojiRaw=t.alt,e.stickerEmoji=o.wrapRichText(e.stickerEmojiRaw,{noLinks:!0,noLinebreaks:!0})),t.stickerset&&("inputStickerSetEmpty"==t.stickerset._?delete t.stickerset:"inputStickerSetID"==t.stickerset._&&(e.stickerSetInput=t.stickerset));break;case"documentAttributeImageSize":e.w=t.w,e.h=t.h}}),e.file_name=e.file_name||""}function d(e){return _[e]||{_:"documentEmpty"}}function u(e){return void 0!==_[e]}function p(e){if(void 0!==v[e])return v[e];var t,n,i=angular.copy(_[e]),a="image/gif"==i.mime_type,o="image/"==i.mime_type.substr(0,6)&&i.sticker,s=i.thumb;a?(t=Math.min(y-80,260),n=Math.min(b-100,260)):o?(t=Math.min(y-80,Config.Mobile?128:192),n=Math.min(b-100,Config.Mobile?128:192)):t=n=100;var r,l={width:t,height:n};return s&&"photoSizeEmpty"!=s._?(r=a&&i.w&&i.h?{w:i.w,h:i.h}:calcImageInBox(s.w,s.h,t,n),l.width=r.w,l.height=r.h,l.location=s.location,l.size=s.size):o?(r=calcImageInBox(i.w,i.h,t,n),l.width=r.w,l.height=r.h):l=!1,i.thumb=l,i.withPreview=!Config.Mobile&&i.mime_type.match(/^(image\/)/)?1:0,a&&i.thumb?i.isSpecial="gif":o?i.isSpecial="sticker":"audio/"==i.mime_type.substr(0,6)&&(i.isSpecial="audio"),v[e]=i}function m(e){var t=_[e],n=v[e]||t||{},i={_:"inputDocumentFileLocation",id:e,access_hash:t.access_hash,file_name:t.file_name};void 0===n.downloaded&&s.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function h(n,i){var a=_[n],o=v[n]||a||{},c={_:"inputDocumentFileLocation",id:n,access_hash:a.access_hash,file_name:a.file_name};if(o.downloaded&&!i){var d=s.getCachedFile(c);if(d)return l.when(d)}o.progress={enabled:!o.downloaded,percent:1,total:a.size};var u=s.downloadFile(a.dc_id,c,a.size,{mime:a.mime_type||"application/octet-stream",toFileEntry:i});return u.then(function(t){delete o.progress,t&&(r.getFileCorrectUrl(t,a.mime_type).then(function(t){o.url=e.trustAsResourceUrl(t)}),o.downloaded=!0),console.log("file save done")},function(e){console.log("document download failed",e),o.progress.enabled=!1},function(e){console.log("dl progress",e),o.progress.enabled=!0,o.progress.done=e.done,o.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),o.progress.cancel=u.cancel,u}function g(e,i){var a=t.$new(!0);a.docID=e,a.messageID=i;n.open({templateUrl:templateUrl("document_modal"),windowTemplateUrl:templateUrl("media_modal_layout"),controller:"DocumentModalController",scope:a,windowClass:"document_modal_window"})}function f(e){var t=_[e],n=(v[e]||t||{},(t.file_name.split(".",2)||[])[1]||"");r.chooseSave(t.file_name,n,t.mime_type).then(function(t){t&&h(e,t)},function(){h(e).then(function(e){r.download(e,t.mime_type,t.file_name)})})}var _={},v={},y=$(window).width(),b=$(window).height();return{saveDoc:c,getDoc:d,hasDoc:u,wrapForHistory:p,updateDocDownloaded:m,downloadDoc:h,openDoc:g,saveDocFile:f}}]).service("AppAudioManager",["$sce","$rootScope","$modal","$window","MtpApiFileManager","FileManager","qSync",function(e,t,n,i,a,o,s){function r(e){p[e.id]=e}function l(e){if(void 0!==m[e])return m[e];var t=angular.copy(p[e]);return m[e]=t}function c(e){var t=p[e],n=m[e]||t||{},i={_:"inputAudioFileLocation",id:e,access_hash:t.access_hash};void 0===n.downloaded&&a.getDownloadedFile(i,t.size).then(function(){n.downloaded=!0},function(){n.downloaded=!1})}function d(n,i){var r=p[n],l=m[n]||r||{},c=r.mime_type||"audio/ogg",d={_:"inputAudioFileLocation",id:n,access_hash:r.access_hash};if(l.downloaded&&!i){var u=a.getCachedFile(d);if(u)return s.when(u)}l.progress={enabled:!l.downloaded,percent:1,total:r.size};var h=a.downloadFile(r.dc_id,d,r.size,{mime:c,toFileEntry:i});return h.then(function(t){o.getFileCorrectUrl(t,c).then(function(t){l.url=e.trustAsResourceUrl(t)}),delete l.progress,l.downloaded=!0,console.log("audio save done")},function(e){console.log("audio download failed",e),l.progress.enabled=!1},function(e){console.log("dl progress",e),l.progress.enabled=!0,l.progress.done=e.done,l.progress.percent=Math.max(1,Math.floor(100*e.done/e.total)),t.$broadcast("history_update")}),l.progress.cancel=h.cancel,h}function u(e){{var t=p[e],n=t.mime_type||"audio/ogg",i=n.split(".")[1]||"ogg",a="t_audio"+e+"."+i;m[e]||t||{}}o.chooseSave(a,i,n).then(function(t){t&&d(e,t)},function(){d(e).then(function(e){o.download(e,n,a)})})}var p={},m={};return{saveAudio:r,wrapForHistory:l,updateAudioDownloaded:c,downloadAudio:d,saveAudioFile:u}}]).service("AppStickersManager",["$q","$rootScope","$modal","_","FileManager","MtpApiManager","MtpApiFileManager","AppDocsManager","Storage",function(e,t,n,i,a,o,s,r,l){function c(){C||(C=!0,setTimeout(m,1e3))}function d(){return l.get("stickers_popular").then(function(e){var t,n,i,a=[];if(e&&e.length)for(t=0,n=e.length;n>t;t++)i=e[t][0],r.hasDoc(i)&&a.push({id:i,rate:e[t][1]});return a})}function u(e){d().then(function(t){for(var n=!1,i=t.length,a=[],o=0;i>o;o++)t[o].id==e&&(n=!0,t[o].rate++),a.push([t[o].id,t[o].rate]);n?a.sort(function(e,t){return t[1]-e[1]}):(a.length>15&&(a=a.slice(0,15)),a.push([e,1])),ConfigStorage.set({stickers_popular:a})})}function p(e){if(S!==e.hash){S=e.hash;var t,n,a,o,s,l,c,u;for(k=[],w=[],a=e.sets.length,t=0;a>t;t++){for(l=e.sets[t],u=e.fullSets[l.id],o=u.documents.length,c=[],n=0;o>n;n++)s=u.documents[n],r.saveDoc(s),w.push(s.id),c.push(s.id);k.push({id:l.id,title:l.title,short_name:l.short_name,installed:(1&l.flags)>0,disabled:(2&l.flags)>0,official:(4&l.flags)>0,docIDs:c}),$[l.id]=!0}}return d().then(function(e){var t=k;if(e.length){t=k.slice();var n,a,o=[];for(n=0,a=e.length;a>n;n++)o.push(e[n].id);t.unshift({id:0,title:i("im_stickers_tab_recent_raw"),short_name:"",installed:!0,disabled:!1,official:!1,docIDs:o})}return t})}function m(e){return l.get("all_stickers").then(function(t){var n=Config.Schema.API.layer;return t.layer!=n&&(t=!1),t&&t.date>tsNow(!0)&&!e?p(t):o.invokeApi("messages.getAllStickers",{hash:t&&t.hash||""}).then(function(e){var i="messages.allStickersNotModified"==e._;return i&&(e=t),e.date=tsNow(!0)+3600,e.layer=n,delete e._,i?(l.set({all_stickers:e}),p(e)):h(e).then(function(){return l.set({all_stickers:e}),p(e)})})})}function h(t){var n=[],i=t.fullSets||{};return t.fullSets={},angular.forEach(t.sets,function(e){var a=i[e.id];if(a&&a.set.hash==e.hash)t.fullSets[e.id]=a;else{var s=o.invokeApi("messages.getStickerSet",{stickerset:{_:"inputStickerSetID",id:e.id,access_hash:e.access_hash}}).then(function(n){t.fullSets[e.id]=n});n.push(s)}}),e.all(n)}function g(e){var t=r.getDoc(e),n=angular.copy(t.thumb.location);return n.sticker=!0,s.downloadSmallFile(n).then(function(e){return{id:t.id,src:a.getUrl(e,"image/webp")}})}function f(){var t=[];return angular.forEach(w,function(e){t.push(g(e))}),e.all(t)}function _(e){return o.invokeApi("messages.getStickerSet",{stickerset:e}).then(function(e){for(var t=0;tn;n++)g(a[n]);return _.seq=t.seq,t.date&&_.date=_.syncPending.seqAwaiting&&(_.syncPending.ptsAwaiting?delete _.syncPending.seqAwaiting:(clearTimeout(_.syncPending.timeout),_.syncPending=!1)),!0}function r(e){var t=e?m(e):_;if(!t.pendingPtsUpdates.length)return!1;t.pendingPtsUpdates.sort(function(e,t){return e.pts-t.pts});for(var n,i=t.pts,a=!1,o=!1,s=0,r=t.pendingPtsUpdates.length;r>s;s++)n=t.pendingPtsUpdates[s],i+=n.pts_count,i>=n.pts&&(a=n.pts,o=s);if(!a)return!1;for(t.pts=a,s=0;o>=s;s++)n=t.pendingPtsUpdates[s],g(n);return t.pendingPtsUpdates.splice(0,o+1),!t.pendingPtsUpdates.length&&t.syncPending&&(t.syncPending.seqAwaiting?delete t.syncPending.ptsAwaiting:(clearTimeout(t.syncPending.timeout),t.syncPending=!1)),!0}function l(){_.syncLoading||d()}function c(e){var t={date:e.date,seq:e.seq,seqStart:e.seq_start};switch(e._){case"updatesTooLong":case"new_session_created":l();break;case"updateShort":h(e.update,t);break;case"updateShortMessage":case"updateShortChatMessage":var o=2&e.flags,s=e.from_id||(o?y:e.user_id),r=e.chat_id?-e.chat_id:o?e.user_id:y;h({_:"updateNewMessage",message:{_:"message",flags:e.flags,id:e.id,from_id:s,to_id:a.getOutputPeer(r),date:e.date,message:e.message,fwd_from_id:e.fwd_from_id,fwd_date:e.fwd_date,reply_to_msg_id:e.reply_to_msg_id,entities:e.entities},pts:e.pts,pts_count:e.pts_count},t);break;case"updatesCombined":case"updates":n.saveApiUsers(e.users),i.saveApiChats(e.chats),angular.forEach(e.updates,function(e){h(e,t)});break;default:console.warn(dT(),"Unknown update message",e)}}function d(){_.syncLoading||(_.syncLoading=!0,_.pendingSeqUpdates={},_.pendingPtsUpdates=[]),_.syncPending&&(clearTimeout(_.syncPending.timeout),_.syncPending=!1),o.invokeApi("updates.getDifference",{pts:_.pts,date:_.date,qts:-1}).then(function(t){if("updates.differenceEmpty"==t._)return console.log(dT(),"apply empty diff",t.seq),_.date=t.date,_.seq=t.seq,_.syncLoading=!1,e.$broadcast("stateSynchronized"),!1;n.saveApiUsers(t.users),i.saveApiChats(t.chats),angular.forEach(t.other_updates,function(e){if("updateChannelTooLong"==e._){var t=e.channel_id,n=v[t];return void(void 0===n||n.syncLoading||u(t))}g(e)}),angular.forEach(t.new_messages,function(e){g({_:"updateNewMessage",message:e,pts:_.pts,pts_count:0})});var a=t.intermediate_state||t.state;_.seq=a.seq,_.pts=a.pts,_.date=a.date,console.log(dT(),"apply diff",_.seq,_.pts),"updates.differenceSlice"==t._?d():(e.$broadcast("stateSynchronized"),_.syncLoading=!1)})}function u(t){var a=m(t);a.syncLoading||(a.syncLoading=!0,a.pendingPtsUpdates=[]),o.invokeApi("updates.getChannelDifference",{channel:i.getChannelInput(t),filter:{_:"channelMessagesFilterEmpty"},pts:a.pts,limit:10}).then(function(o){return a.pts=o.pts,"updates.channelDifferenceEmpty"==o._?(console.log(dT(),"apply channel empty diff",o),a.syncLoading=!1,e.$broadcast("stateSynchronized"),!1):"updates.channelDifferenceTooLong"==o._?(console.log(dT(),"channel diff too long",o),a.syncLoading=!1,delete v[t],g({_:"updateChannelReload",channel_id:t}),!1):(n.saveApiUsers(o.users),i.saveApiChats(o.chats),console.log(dT(),"applying",o.other_updates.length,"channel other updates"),angular.forEach(o.other_updates,function(e){g(e)}),console.log(dT(),"applying",o.new_messages.length,"channel new messages"),angular.forEach(o.new_messages,function(e){g({_:"updateNewChannelMessage",message:e,pts:a.pts,pts_count:0})}),console.log(dT(),"apply channel diff",a.pts),void("updates.channelDifference"!=o._||1&o.flags?(console.log(dT(),"finished channel get diff"),e.$broadcast("stateSynchronized"),a.syncLoading=!1):u(t)))})}function p(e,t){return void 0===v[e]?(v[e]={pts:t,pendingPtsUpdates:[],syncPending:!1,syncLoading:!1},!0):!1}function m(e,t){if(void 0===v[e]){if(!t)throw new Error("Get channel empty state without pts "+e);p(e,t)}return v[e]}function h(e,t){var o=!1;switch(e._){case"updateNewChannelMessage":o=-a.getPeerID(e.message.to_id);break;case"updateDeleteChannelMessages":o=e.channel_id}var c=o?m(o,e.pts):_;if(c.syncLoading)return!1;if("updateNewMessage"==e._){var p=e.message,h=p.fwd_from_id?a.getPeerID(p.fwd_from_id):0,f=a.getPeerID(p.to_id);if(p.from_id&&!n.hasUser(p.from_id)||h>0&&!n.hasUser(h)||0>h&&!i.hasChat(-h)||f>0&&!n.hasUser(f)||0>f&&!i.hasChat(-f))return console.warn(dT(),"Short update not enough data",p),l(),!1}var v,y;if(e.pts){var b=c.pts+(e.pts_count||0);if(bc.pts&&(c.pts=e.pts,v=!0)}else if(!o&&t.seq>0){var w=t.seq,k=t.seqStart||w;if(k!=c.seq+1&&k>c.seq)return console.warn(dT(),"Seq hole",c,c.syncPending&&c.syncPending.seqAwaiting),void 0===c.pendingSeqUpdates[k]&&(c.pendingSeqUpdates[k]={seq:w,date:t.date,updates:[]}),c.pendingSeqUpdates[k].updates.push(e),c.syncPending||(c.syncPending={timeout:setTimeout(function(){d()},5e3)}),(!c.syncPending.seqAwaiting||c.syncPending.seqAwaitinga-d||t.offline))return d=e?0:a,i.setUserStatus(p,e),n.invokeApi("account.updateStatus",{offline:e},{noErrorBox:!0})}function r(){c&&e.cancel(c),t.idle.isIDLE?c=e(function(){s(!0)},5e3):(s(!1),c=e(r,6e4))}function l(){return m?tsNow()>m?(m=!1,!1):!0:!1}var c,d=0,u=!1,p=0,m=!1;return n.getUserID().then(function(e){p=e}),t.$on("apiUpdate",function(e,t){"updateUserStatus"==t._&&t.user_id==p&&(m=tsNow()+("userStatusOnline"==t.status._?3e5:0))}),{start:o,isOtherDeviceActive:l}}]).service("NotificationsManager",["$rootScope","$window","$interval","$q","_","MtpApiManager","AppPeersManager","IdleManager","Storage","AppRuntimeManager",function(e,t,n,i,a,o,s,r,l,c){function d(){l.get("notify_nodesktop","notify_volume","notify_novibrate","notify_nopreview").then(function(e){W.nodesktop=e[0],W.volume=e[1]===!1?.5:e[1],W.novibrate=e[2],W.nopreview=e[3]})}function u(){return W}function p(e){return void 0!==B[e]?B[e]:B[e]=o.invokeApi("account.getNotifySettings",{peer:{_:"inputNotifyPeer",peer:s.getInputPeerByID(e)}})}function m(e){if(e=e||"favicon.ico",T!==e){var t=document.createElement("link");t.rel="shortcut icon",t.type="image/x-icon",t.href=e,j.parentNode.replaceChild(t,j),j=t,T=e}}function h(t,n){B[t]=i.when(n),e.$broadcast("notify_settings",{peerID:t})}function g(e,t){h(e,t);var n=angular.copy(t);return n._="inputPeerNotifySettings",o.invokeApi("account.updateNotifySettings",{peer:{_:"inputNotifyPeer",peer:s.getInputPeerByID(e)},settings:n})}function f(e){return p(e).then(function(e){return"peerNotifySettings"==e._&&1e3*e.mute_until>tsNow()})}function _(){if(d(),e.$on("settings_changed",d),x(),!D)return!1;"Notification"in window&&"granted"!==Notification.permission&&"denied"!==Notification.permission&&$(t).on("click",v);try{"onbeforeunload"in window&&$(t).on("beforeunload",C)}catch(n){}}function v(){Notification.requestPermission(),$(t).off("click",v)}function y(e){Config.Navigator.ffos?e.image="https://raw.githubusercontent.com/zhukov/webogram/master/app/img/icons/icon60.png":e.image||(e.image="img/icons/icon60.png"),F++;var t=tsNow();if(W.volume>0&&(!e.tag||!O[e.tag]||t>O[e.tag]+6e4)&&(b(W.volume),O[e.tag]=t),!D||"Notification"in window&&"granted"!==Notification.permission)return!1;if(W.nodesktop){if(U&&!W.novibrate)return void navigator.vibrate([200,100,200])}else{var n,i=++N,a=e.key||"k"+i;if("Notification"in window)n=new Notification(e.title,{icon:e.image||"",body:e.message||"",tag:e.tag||""});else if("mozNotification"in navigator)n=navigator.mozNotification.createNotification(e.title,e.message||"",e.image||"");else{if(!A)return;window.external.msSiteModeClearIconOverlay(),window.external.msSiteModeSetIconOverlay("img/icons/icon16.png",e.title),window.external.msSiteModeActivate(),n={index:i}}n.onclick=function(){n.close(),c.focus(),C(),e.onclick&&e.onclick()},n.onclose=function(){n.hidden||(delete P[a],C())},n.show&&n.show(),P[a]=n,Config.Navigator.mobile||setTimeout(function(){k(a)},8e3)}}function b(e){var t=tsNow();if(!(R&&R>t&&L==e)){R=t+1e3,L=e;var n="img/sound_a.mp3",i=$("#notify_sound").html('');i.find("audio")[0].volume=e}}function w(e){var t=P[e];if(t){F>0&&F--;try{t.close?t.close():A&&t.index==N&&window.external.msSiteModeClearIconOverlay()}catch(n){}delete F[e]}}function k(e){var t=P[e];if(t){try{t.close&&(t.hidden=!0,t.close())}catch(n){}delete F[e]}}function S(e){delete O[e]}function C(){A?window.external.msSiteModeClearIconOverlay():angular.forEach(P,function(e){try{e.close&&e.close()}catch(t){}}),P={},F=0}function x(){if(G)return!1;if(navigator.push&&Config.Navigator.ffos&&Config.Modes.packed){var e=navigator.push.register();e.onsuccess=function(t){clearTimeout(Y),console.log(dT(),"Push registered",e.result),G=e.result,o.invokeApi("account.registerDevice",{token_type:4,token:G,device_model:navigator.userAgent||"Unknown UserAgent",system_version:navigator.platform||"Unknown Platform",app_version:Config.App.version,app_sandbox:!1,lang_code:navigator.language||"en"})},e.onerror=function(e){console.error("Push register error",e,e.toString()),Y=setTimeout(x,K),K=Math.min(3e4,1.5*K)}}}function M(){return U}navigator.vibrate=navigator.vibrate||navigator.mozVibrate||navigator.webkitVibrate;var A=!1;try{window.external&&window.external.msIsSiteMode()&&(A=!0)}catch(E){}var I,T,D=A||"Notification"in window||"mozNotification"in navigator,P={},N=0,F=0,O={},U=!!navigator.vibrate,R=!1,L=!1,B={},j=$('link[rel="icon"]:first')[0],q=a.pluralize("page_title_pluralize_notifications"),H=document.title,V=!1,z=0,W={};e.$watch("idle.isIDLE",function(e){e||C(),Config.Navigator.mobile||(n.cancel(I),e?(H=document.title,I=n(function(){!F||z++%2?V&&(V=!1,document.title=H,m()):(V=!0,document.title=q(F),m("favicon_unread.ico"))},1e3)):(V=!1,document.title=H,m()))}),e.$on("apiUpdate",function(e,t){switch(t._){case"updateNotifySettings":if("notifyPeer"==t.peer._){var n=s.getPeerID(t.peer.peer);h(n,t.notify_settings)}}});var G=!1;return window.navigator.mozSetMessageHandler&&(window.navigator.mozSetMessageHandler("push",function(t){console.log(dT(),"received push",t),e.$broadcast("push_received")}),window.navigator.mozSetMessageHandler("push-register",function(e){console.log(dT(),"received push",e),G=!1,x()})),{start:_,notify:y,cancel:w,clear:C,soundReset:S,getPeerSettings:p,getPeerMuted:f,savePeerSettings:h,updatePeerSettings:g,updateNotifySettings:d,getNotifySettings:u,getVibrateSupport:M,testSound:b};var K,Y}]).service("PasswordManager",["$timeout","$q","$rootScope","MtpApiManager","CryptoWorker","MtpSecureRandom",function(e,t,n,i,a,o){function s(e){return i.invokeApi("account.getPassword",{},e).then(function(e){return e})}function r(e,n){var a,s,r={new_settings:{_:"account.passwordInputSettings",flags:0,hint:n.hint||""}};if(a="string"==typeof n.cur_password&&n.cur_password.length>0?u(e.current_salt,n.cur_password):t.when([]),"string"==typeof n.new_password&&n.new_password.length>0){var l=new Array(8),c=bufferConcat(e.new_salt,l);o.nextBytes(l),s=u(c,n.new_password),r.new_settings.new_salt=c,r.new_settings.flags|=1}else"string"==typeof n.new_password&&(r.new_settings.flags|=1,r.new_settings.new_salt=[]),s=t.when([]);return"string"==typeof n.email&&(r.new_settings.flags|=2,r.new_settings.email=n.email||""),t.all([a,s]).then(function(e){return r.current_password_hash=e[0],r.new_settings.new_password_hash=e[1],i.invokeApi("account.updatePasswordSettings",r)})}function l(e,t,n){return u(e.current_salt,t).then(function(e){return i.invokeApi("auth.checkPassword",{password_hash:e},n)})}function c(e,t){return i.invokeApi("auth.requestPasswordRecovery",{},t)}function d(e,t){return i.invokeApi("auth.recoverPassword",{code:e},t)}function u(e,t){for(var n=unescape(encodeURIComponent(t)),i=new ArrayBuffer(n.length),o=new Uint8Array(i),s=0,r=n.length;r>s;s++)o[s]=n.charCodeAt(s);return i=bufferConcat(bufferConcat(e,o),e),a.sha256Hash(i)}return{check:l,getState:s,requestRecovery:c,recover:d,updateSettings:r}}]).service("ErrorService",["$rootScope","$modal","$window",function(e,t,n){function i(n,i){if(s>=1)return console.log("Skip error box, too many open",s,n,i),!1;i=i||{};var a=e.$new();angular.extend(a,n),s++;var o=t.open({templateUrl:templateUrl("error_modal"),scope:a,windowClass:i.windowClass||"error_modal_window"});return o.result["finally"](function(){s--}),o}function a(e,t){return i({title:e,description:t})}function o(n,i){i=i||{};var a=e.$new();angular.extend(a,n);var o=t.open({templateUrl:templateUrl("confirm_modal"),scope:a,windowClass:i.windowClass||"confirm_modal_window"});return o.result}var s=0;return n.safeConfirm=function(e,t){"string"==typeof e&&(e={message:e}),o(e).then(function(e){t(e||!0)},function(){t(!1)})},{show:i,alert:a,confirm:o}}]).service("PeersSelectService",["$rootScope","$modal",function(e,t){function n(n){var i=e.$new();return i.multiSelect=!1,i.noMessages=!0,n&&angular.extend(i,n),t.open({templateUrl:templateUrl("peer_select"),controller:"PeerSelectController",scope:i,windowClass:"peer_select_window mobile_modal",backdrop:"single"}).result}function i(i){if(Config.Mobile)return n(i).then(function(e){return[e]});var a=e.$new();return a.multiSelect=!0,a.noMessages=!0,i&&angular.extend(a,i),t.open({templateUrl:templateUrl("peer_select"),controller:"PeerSelectController",scope:a,windowClass:"peer_select_window mobile_modal",backdrop:"single"}).result}return{selectPeer:n,selectPeers:i}}]).service("ContactsSelectService",["$rootScope","$modal",function(e,t){function n(n,i){i=i||{};var a=e.$new();return a.multiSelect=n,angular.extend(a,i),!a.action&&n&&(a.action="select"),t.open({templateUrl:templateUrl("contacts_modal"),controller:"ContactsModalController",scope:a,windowClass:"contacts_modal_window mobile_modal",backdrop:"single"}).result}return{selectContacts:function(e){return n(!0,e)},selectContact:function(e){return n(!1,e)}}}]).service("ChangelogNotifyService",["Storage","$rootScope","$modal",function(e,t,n){function i(){e.get("last_version").then(function(t){t!=Config.App.version&&(t&&a(t),e.set({last_version:Config.App.version}))})}function a(e){var i=t.$new();i.lastVersion=e,n.open({controller:"ChangelogModalController",templateUrl:templateUrl("changelog_modal"),scope:i,windowClass:"changelog_modal_window mobile_modal"})}return{checkUpdate:i,showChangelog:a}}]).service("HttpsMigrateService",["ErrorService","Storage",function(e,t){function n(){t.get("https_dismiss").then(function(n){(!n||tsNow()>n+432e5)&&e.confirm({type:"MIGRATE_TO_HTTPS"}).then(function(){var e;try{e=window.open("https://web.telegram.org","_blank")}catch(t){}e||(location="https://web.telegram.org")},function(){t.set({https_dismiss:tsNow()})})})}function i(){a||"http:"!=location.protocol||Config.Modes.http||-1==Config.App.domains.indexOf(location.hostname)||(a=!0,setTimeout(n,12e4))}var a=!1;return{start:i,check:n}}]).service("LayoutSwitchService",["ErrorService","Storage","AppRuntimeManager","$window",function(e,t,n,i){function a(e){ConfigStorage.noPrefix(),t.set({layout_selected:e?"mobile":"desktop",layout_width:$(window).width()}).then(function(){n.reload()})}function o(n){if(!l){var i=$(window).width(),o=600>i;!i||!n&&(Config.Navigator.mobile?800>=i:o)||o!=Config.Mobile&&(ConfigStorage.noPrefix(),t.get("layout_width").then(function(n){return i==n?!1:(l=!0,void e.confirm({type:o?"SWITCH_MOBILE_VERSION":"SWITCH_DESKTOP_VERSION"}).then(function(){a(o)},function(){ConfigStorage.noPrefix(),t.set({layout_width:i}),l=!1}))}))}}function s(){r||Config.Navigator.mobile||(r=!0,o(),$(i).on("resize",o))}var r=!1,l=!1;return{start:s,switchLayout:a}}]).service("TelegramMeWebService",["Storage",function(e){function t(t){return n?!1:void e.get("tgme_sync").then(function(n){var i=tsNow(!0);if(t&&n&&n.canRedirect==t&&n.ts+86400>i)return!1;e.set({tgme_sync:{canRedirect:t,ts:i}});var a=$("