From a492ce49752ceb80576106718c678b20a25cde1e Mon Sep 17 00:00:00 2001 From: Igor Zhukov Date: Sun, 18 Oct 2015 16:06:20 +0200 Subject: [PATCH] merged with master --- app.manifest | 2 +- css/app.css | 14 +++++++------- img/icons/IconsetSmiles.png | Bin 4433 -> 4464 bytes img/icons/IconsetSmiles_2x.png | Bin 7901 -> 7810 bytes js/app.js | 11 ++++++----- webogram.appcache | 2 +- 6 files changed, 15 insertions(+), 14 deletions(-) diff --git a/app.manifest b/app.manifest index 39b6b431..16ebb4d1 100644 --- a/app.manifest +++ b/app.manifest @@ -1,5 +1,5 @@ CACHE MANIFEST -# Time: Wed Oct 14 2015 13:22:57 GMT+0200 (CEST) +# Time: Sun Oct 18 2015 15:53:10 GMT+0200 (CEST) CACHE: diff --git a/css/app.css b/css/app.css index 709019c6..436c7e04 100644 --- a/css/app.css +++ b/css/app.css @@ -1303,7 +1303,7 @@ a.tg_search_clear{position:absolute;right:0;margin-top:-40px;width:34px;height:3 a.tg_search_clear:hover{opacity:1} i.icon-search-clear{display:inline-block;color:#999;width:13px;height:13px;margin:10px 0 0 11px;vertical-align:text-top;background-image:url(../img/icons/IconsetW.png);background-repeat:no-repeat;background-position:-15px -192px} .is_2x i.icon-search-clear{background-image:url(../img/icons/IconsetW_2x.png);background-size:42px 1171px} -i.icon-verified{display:inline-block;width:17px;height:17px;vertical-align:text-top;background-image:url(../img/icons/ProfileIcons.png);background-repeat:no-repeat;background-position:-10px -373px} +i.icon-verified{display:inline-block;width:17px;height:17px;vertical-align:text-top;background-image:url(../img/icons/ProfileIcons.png);background-repeat:no-repeat;background-position:-11px -373px} .is_2x i.icon-verified{background-image:url(../img/icons/ProfileIcons_2x.png);background-size:40px 420px} .im_dialogs_scrollable_wrap i.icon-verified{display:none} .im_dialogs_col_search i.icon-verified{display:inline-block} @@ -1553,12 +1553,12 @@ img.img_fullsize{margin:0 auto} .active .composer_emoji_tooltip_category_smile{background-position:-3px -93px} .composer_emoji_tooltip_category_flower{background-position:-3px -124px} .active .composer_emoji_tooltip_category_flower{background-position:-3px -155px} -.composer_emoji_tooltip_category_bell{background-position:-3px -184px} -.active .composer_emoji_tooltip_category_bell{background-position:-3px -215px} -.composer_emoji_tooltip_category_car{background-position:-3px -245px} -.active .composer_emoji_tooltip_category_car{background-position:-3px -276px} -.composer_emoji_tooltip_category_grid{background-position:-3px -304px} -.active .composer_emoji_tooltip_category_grid{background-position:-3px -335px} +.composer_emoji_tooltip_category_bell{background-position:-3px -185px} +.active .composer_emoji_tooltip_category_bell{background-position:-3px -213px} +.composer_emoji_tooltip_category_car{background-position:-3px -241px} +.active .composer_emoji_tooltip_category_car{background-position:-3px -269px} +.composer_emoji_tooltip_category_grid{background-position:-3px -297px} +.active .composer_emoji_tooltip_category_grid{background-position:-3px -324px} .composer_emoji_tooltip_tabs_wrap{height:275px;position:relative;overflow:hidden} .composer_emoji_tooltip_tabs_contents{position:absolute;width:200%;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);transition:transform ease-in-out .2s} .composer_emoji_tooltip_tabs_stickers_active .composer_emoji_tooltip_tabs_contents{-webkit-transform:translate3d(-284px,0,0);-moz-transform:translate3d(-284px,0,0);-o-transform:translate3d(-284px,0,0);-ms-transform:translate3d(-284px,0,0);transform:translate3d(-284px,0,0)} diff --git a/img/icons/IconsetSmiles.png b/img/icons/IconsetSmiles.png index 7ee734067f987c5c9c704a2d4d67d0a783e9e89d..cb3d33c277a9369e4dbab78ddf641749c7cd018b 100644 GIT binary patch delta 3814 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 U0%xzsM>8D<+Qizp+z1!_KXVu!#{d8T delta 3782 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 diff --git a/img/icons/IconsetSmiles_2x.png b/img/icons/IconsetSmiles_2x.png index b05da5ed9afe33480d2cc11b57acb65daa286fcd..6ab3eee1821b78b6fe1c2f1adffa85852247555d 100644 GIT binary patch delta 7186 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 Kmt}G$f&T-kqrbxd delta 7278 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"[.."+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=$("