diff --git a/app.manifest b/app.manifest index 6fb400a9..2f2ce7c8 100644 --- a/app.manifest +++ b/app.manifest @@ -1,5 +1,5 @@ CACHE MANIFEST -# Time: Tue Apr 01 2014 17:24:34 GMT+0400 (MSK) +# Time: Wed Apr 02 2014 14:37:46 GMT+0400 (MSK) CACHE: diff --git a/css/app.css b/css/app.css index 16a241a1..b03168f3 100644 --- a/css/app.css +++ b/css/app.css @@ -5,4 +5,4 @@ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) *//*! normalize.css v3.0.0 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background:0 0}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0}mark{background:#ff0;color:#000}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@media print{*{text-shadow:none!important;color:#000!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.table td,.table th{background-color:#fff!important}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}*,:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#428bca;text-decoration:none}a:focus,a:hover{color:#2a6496;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#999}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:200;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}cite{font-style:normal}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-muted{color:#999}.text-primary{color:#428bca}a.text-primary:hover{color:#3071a9}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#428bca}a.bg-primary:hover{background-color:#3071a9}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-inline,.list-unstyled{padding-left:0;list-style:none}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}.list-inline>li:first-child{padding-left:0}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.428571429}dt{font-weight:700}dd{margin-left:0}@media (min-width:480px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #999}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.428571429;color:#999}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}blockquote:after,blockquote:before{content:""}address{margin-bottom:20px;font-style:normal;line-height:1.428571429}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;white-space:nowrap;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container,.container-fluid{margin-right:auto;margin-left:auto;padding-left:0;padding-right:0}@media (min-width:768px){.container{width:720px}}@media (min-width:992px){.container{width:940px}}@media (min-width:1200px){.container{width:1140px}}.row{margin-left:0;margin-right:0}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-left:0;padding-right:0}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666666666666%}.col-xs-10{width:83.33333333333334%}.col-xs-9{width:75%}.col-xs-8{width:66.66666666666666%}.col-xs-7{width:58.333333333333336%}.col-xs-6{width:50%}.col-xs-5{width:41.66666666666667%}.col-xs-4{width:33.33333333333333%}.col-xs-3{width:25%}.col-xs-2{width:16.666666666666664%}.col-xs-1{width:8.333333333333332%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666666666666%}.col-xs-pull-10{right:83.33333333333334%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666666666666%}.col-xs-pull-7{right:58.333333333333336%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666666666667%}.col-xs-pull-4{right:33.33333333333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.666666666666664%}.col-xs-pull-1{right:8.333333333333332%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666666666666%}.col-xs-push-10{left:83.33333333333334%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666666666666%}.col-xs-push-7{left:58.333333333333336%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666666666667%}.col-xs-push-4{left:33.33333333333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.666666666666664%}.col-xs-push-1{left:8.333333333333332%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666666666666%}.col-xs-offset-10{margin-left:83.33333333333334%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666666666666%}.col-xs-offset-7{margin-left:58.333333333333336%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666666666667%}.col-xs-offset-4{margin-left:33.33333333333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.666666666666664%}.col-xs-offset-1{margin-left:8.333333333333332%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666666666666%}.col-sm-10{width:83.33333333333334%}.col-sm-9{width:75%}.col-sm-8{width:66.66666666666666%}.col-sm-7{width:58.333333333333336%}.col-sm-6{width:50%}.col-sm-5{width:41.66666666666667%}.col-sm-4{width:33.33333333333333%}.col-sm-3{width:25%}.col-sm-2{width:16.666666666666664%}.col-sm-1{width:8.333333333333332%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666666666666%}.col-sm-pull-10{right:83.33333333333334%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666666666666%}.col-sm-pull-7{right:58.333333333333336%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666666666667%}.col-sm-pull-4{right:33.33333333333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.666666666666664%}.col-sm-pull-1{right:8.333333333333332%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666666666666%}.col-sm-push-10{left:83.33333333333334%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666666666666%}.col-sm-push-7{left:58.333333333333336%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666666666667%}.col-sm-push-4{left:33.33333333333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.666666666666664%}.col-sm-push-1{left:8.333333333333332%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666666666666%}.col-sm-offset-10{margin-left:83.33333333333334%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666666666666%}.col-sm-offset-7{margin-left:58.333333333333336%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666666666667%}.col-sm-offset-4{margin-left:33.33333333333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.666666666666664%}.col-sm-offset-1{margin-left:8.333333333333332%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666666666666%}.col-md-10{width:83.33333333333334%}.col-md-9{width:75%}.col-md-8{width:66.66666666666666%}.col-md-7{width:58.333333333333336%}.col-md-6{width:50%}.col-md-5{width:41.66666666666667%}.col-md-4{width:33.33333333333333%}.col-md-3{width:25%}.col-md-2{width:16.666666666666664%}.col-md-1{width:8.333333333333332%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666666666666%}.col-md-pull-10{right:83.33333333333334%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666666666666%}.col-md-pull-7{right:58.333333333333336%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666666666667%}.col-md-pull-4{right:33.33333333333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.666666666666664%}.col-md-pull-1{right:8.333333333333332%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666666666666%}.col-md-push-10{left:83.33333333333334%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666666666666%}.col-md-push-7{left:58.333333333333336%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666666666667%}.col-md-push-4{left:33.33333333333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.666666666666664%}.col-md-push-1{left:8.333333333333332%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666666666666%}.col-md-offset-10{margin-left:83.33333333333334%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666666666666%}.col-md-offset-7{margin-left:58.333333333333336%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666666666667%}.col-md-offset-4{margin-left:33.33333333333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.666666666666664%}.col-md-offset-1{margin-left:8.333333333333332%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666666666666%}.col-lg-10{width:83.33333333333334%}.col-lg-9{width:75%}.col-lg-8{width:66.66666666666666%}.col-lg-7{width:58.333333333333336%}.col-lg-6{width:50%}.col-lg-5{width:41.66666666666667%}.col-lg-4{width:33.33333333333333%}.col-lg-3{width:25%}.col-lg-2{width:16.666666666666664%}.col-lg-1{width:8.333333333333332%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666666666666%}.col-lg-pull-10{right:83.33333333333334%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666666666666%}.col-lg-pull-7{right:58.333333333333336%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666666666667%}.col-lg-pull-4{right:33.33333333333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.666666666666664%}.col-lg-pull-1{right:8.333333333333332%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666666666666%}.col-lg-push-10{left:83.33333333333334%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666666666666%}.col-lg-push-7{left:58.333333333333336%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666666666667%}.col-lg-push-4{left:33.33333333333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.666666666666664%}.col-lg-push-1{left:8.333333333333332%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666666666666%}.col-lg-offset-10{margin-left:83.33333333333334%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666666666666%}.col-lg-offset-7{margin-left:58.333333333333336%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666666666667%}.col-lg-offset-4{margin-left:33.33333333333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.666666666666664%}.col-lg-offset-1{margin-left:8.333333333333332%}.col-lg-offset-0{margin-left:0}}table{max-width:100%;background-color:transparent}th{text-align:left}.table{width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered,.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd)>td,.table-striped>tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover>tbody>tr:hover>td,.table-hover>tbody>tr:hover>th{background-color:#f5f5f5}table col[class*=col-]{position:static;float:none;display:table-column}table td[class*=col-],table th[class*=col-]{position:static;float:none;display:table-cell}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}@media (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;overflow-x:scroll;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd;-webkit-overflow-scrolling:touch}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.428571429;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control:-moz-placeholder{color:#999}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=date]{line-height:34px}.form-group{margin-bottom:15px}.checkbox,.radio{display:block;min-height:20px;margin-top:10px;margin-bottom:10px;padding-left:20px}.checkbox label,.radio label{display:inline;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{float:left;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}.checkbox-inline[disabled],.checkbox[disabled],.radio-inline[disabled],.radio[disabled],fieldset[disabled] .checkbox,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio,fieldset[disabled] .radio-inline,fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox][disabled],input[type=radio][disabled]{cursor:not-allowed}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.has-feedback .form-control-feedback{position:absolute;top:25px;right:0;display:block;width:34px;height:34px;line-height:34px;text-align:center}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.form-control-static{margin-bottom:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{float:none;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .control-label,.form-horizontal .radio,.form-horizontal .radio-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-left:0;margin-right:0}.form-horizontal .form-control-static{padding-top:7px}@media (min-width:768px){.form-horizontal .control-label{text-align:right}}.form-horizontal .has-feedback .form-control-feedback{top:0;right:0}.btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none}.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;pointer-events:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.active,.btn-default:active,.btn-default:focus,.btn-default:hover,.open .dropdown-toggle.btn-default{color:#333;background-color:#ebebeb;border-color:#adadad}.btn-default.active,.btn-default:active,.open .dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default.disabled.active,.btn-default.disabled:active,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled],.btn-default[disabled].active,.btn-default[disabled]:active,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default,fieldset[disabled] .btn-default.active,fieldset[disabled] .btn-default:active,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#428bca;border-color:#357ebd}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#3276b1;border-color:#285e8e}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary.disabled.active,.btn-primary.disabled:active,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled],.btn-primary[disabled].active,.btn-primary[disabled]:active,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-primary.active,fieldset[disabled] .btn-primary:active,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#428bca;border-color:#357ebd}.btn-primary .badge{color:#428bca;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#47a447;border-color:#398439}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success.disabled.active,.btn-success.disabled:active,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled],.btn-success[disabled].active,.btn-success[disabled]:active,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success,fieldset[disabled] .btn-success.active,fieldset[disabled] .btn-success:active,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.active,.btn-info:active,.btn-info:focus,.btn-info:hover,.open .dropdown-toggle.btn-info{color:#fff;background-color:#39b3d7;border-color:#269abc}.btn-info.active,.btn-info:active,.open .dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info.disabled.active,.btn-info.disabled:active,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled],.btn-info[disabled].active,.btn-info[disabled]:active,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info,fieldset[disabled] .btn-info.active,fieldset[disabled] .btn-info:active,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.active,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.open .dropdown-toggle.btn-warning{color:#fff;background-color:#ed9c28;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open .dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning.disabled.active,.btn-warning.disabled:active,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled],.btn-warning[disabled].active,.btn-warning[disabled]:active,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-warning.active,fieldset[disabled] .btn-warning:active,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#d2322d;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger.disabled.active,.btn-danger.disabled:active,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled],.btn-danger[disabled].active,.btn-danger[disabled]:active,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger,fieldset[disabled] .btn-danger.active,fieldset[disabled] .btn-danger:active,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#428bca;font-weight:400;cursor:pointer;border-radius:0}.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#2a6496;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#999;text-decoration:none}.btn-lg{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;transition:height .35s ease}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;outline:0;background-color:#428bca}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#999}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:480px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group-vertical>.btn:focus,.btn-group>.btn:focus{outline:0}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-bottom-left-radius:4px;border-top-right-radius:0;border-top-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}[data-toggle=buttons]>.btn>input[type=checkbox],[data-toggle=buttons]>.btn>input[type=radio]{display:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-left:0;padding-right:0}.input-group .form-control{float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#999}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#999;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#428bca}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#428bca}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:480px){.navbar{border-radius:4px}}@media (min-width:480px){.navbar-header{float:left}}.navbar-collapse{max-height:340px;overflow-x:visible;padding-right:0;padding-left:0;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:480px){.navbar-collapse{width:auto;border-top:0;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-left:0;padding-right:0}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}@media (min-width:480px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:480px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:480px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 0;font-size:18px;line-height:20px;height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}@media (min-width:480px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:0}}.navbar-toggle{position:relative;float:right;margin-right:0;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:480px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px 0}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:479px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:480px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}.navbar-nav.navbar-right:last-child{margin-right:0}}@media (min-width:480px){.navbar-left{float:left!important}.navbar-right{float:right!important}}.navbar-form{margin-left:0;margin-right:0;padding:10px 0;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;padding-left:0;vertical-align:middle}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{float:none;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:479px){.navbar-form .form-group{margin-bottom:5px}}@media (min-width:480px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}.navbar-form.navbar-right:last-child{margin-right:0}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:480px){.navbar-text{float:left;margin-left:0;margin-right:0}.navbar-text.navbar-right:last-child{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-nav>li>a,.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{background-color:#e7e7e7;color:#555}@media (max-width:479px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#999}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>li>a,.navbar-inverse .navbar-text{color:#999}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{background-color:#080808;color:#fff}@media (max-width:479px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#999}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.428571429;text-decoration:none;color:#428bca;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{color:#2a6496;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca;cursor:default}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#999;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#999;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.label[href]:focus,.label[href]:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#999}.label-default[href]:focus,.label-default[href]:hover{background-color:gray}.label-primary{background-color:#428bca}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#3071a9}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;color:#fff;line-height:1;vertical-align:baseline;white-space:nowrap;text-align:center;background-color:#999;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.nav-pills>.active>a>.badge,a.list-group-item.active>.badge{color:#428bca;background-color:#fff}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.container .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron{padding-left:60px;padding-right:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto;margin-left:auto;margin-right:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#428bca}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable{padding-right:35px}.alert-dismissable .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#428bca;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover{text-decoration:none;background-color:#f5f5f5}a.list-group-item.active,a.list-group-item.active:focus,a.list-group-item.active:hover{z-index:2;color:#fff;background-color:#428bca;border-color:#428bca}a.list-group-item.active .list-group-item-heading,a.list-group-item.active:focus .list-group-item-heading,a.list-group-item.active:hover .list-group-item-heading{color:inherit}a.list-group-item.active .list-group-item-text,a.list-group-item.active:focus .list-group-item-text,a.list-group-item.active:hover .list-group-item-text{color:#e1edf7}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel>.list-group{margin-bottom:0}.panel>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group .list-group-item:first-child{border-top:0}.panel>.list-group .list-group-item:last-child{border-bottom:0}.panel>.list-group:first-child .list-group-item:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>tfoot>tr:first-child>td,.panel>.table-bordered>tfoot>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:first-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-top:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-bordered>thead>tr:last-child>td,.panel>.table-bordered>thead>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>thead>tr:last-child>td,.panel>.table-responsive>.table-bordered>thead>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px;overflow:hidden}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse .panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse .panel-body{border-top-color:#ddd}.panel-default>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#428bca}.panel-primary>.panel-heading{color:#fff;background-color:#428bca;border-color:#428bca}.panel-primary>.panel-heading+.panel-collapse .panel-body{border-top-color:#428bca}.panel-primary>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#428bca}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse .panel-body{border-top-color:#d6e9c6}.panel-success>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse .panel-body{border-top-color:#bce8f1}.panel-info>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse .panel-body{border-top-color:#faebcc}.panel-warning>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse .panel-body{border-top-color:#ebccd1}.panel-danger>.panel-footer+.panel-collapse .panel-body{border-bottom-color:#ebccd1}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:auto;overflow-y:scroll;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);transform:translate(0,0)}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5;min-height:16.428571429px}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.428571429}.modal-body{position:relative;padding:20px}.modal-footer{margin-top:15px;padding:19px 20px 20px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:12px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;left:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;right:5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;left:5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;right:5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top .arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right .arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom .arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left .arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{display:block;max-width:100%;height:auto;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-control.left{background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.5) 0),color-stop(rgba(0,0,0,.0001) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left,color-stop(rgba(0,0,0,.0001) 0),color-stop(rgba(0,0,0,.5) 100%));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:focus,.carousel-control:hover{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;margin-top:-10px;margin-left:-10px;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicons-chevron-left,.carousel-control .glyphicons-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-15px;margin-left:-15px;font-size:30px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{content:" ";display:table}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.form-horizontal .form-group:after,.modal-footer:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-print,.visible-sm,.visible-xs,td.visible-lg,td.visible-md,td.visible-print,td.visible-sm,td.visible-xs,th.visible-lg,th.visible-md,th.visible-print,th.visible-sm,th.visible-xs,tr.visible-lg,tr.visible-md,tr.visible-print,tr.visible-sm,tr.visible-xs{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (max-width:767px){.hidden-xs,td.hidden-xs,th.hidden-xs,tr.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm,td.hidden-sm,th.hidden-sm,tr.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md,td.hidden-md,th.hidden-md,tr.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg,td.hidden-lg,th.hidden-lg,tr.hidden-lg{display:none!important}}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}@media print{.hidden-print,td.hidden-print,th.hidden-print,tr.hidden-print{display:none!important}} .nano{position:relative;width:100%;height:100%;overflow:hidden}.nano .content{position:absolute;overflow:scroll;overflow-x:hidden;top:0;right:0;bottom:0;left:0}.nano .content:focus{outline:thin dotted}.nano .content::-webkit-scrollbar{visibility:hidden}.has-scrollbar .content::-webkit-scrollbar{visibility:visible}.nano>.pane{background:rgba(0,0,0,.1);position:absolute;width:10px;right:0;top:0;bottom:0;visibility:hidden\9;opacity:.01;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.nano>.pane>.slider{background:#444;background:rgba(0,0,0,.4);position:relative;margin:0 1px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.nano:hover>.pane,.pane.active,.pane.flashed{visibility:visible\9;opacity:.99} -html{background:#dee4e9 url(../img/bg_tile.png) 0 0 repeat}body{color:#000;background:0 0;font:12px/18px "Lucida Grande","Lucida Sans Unicode",Arial,Helvetica,Verdana,sans-serif}.font-light{font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Light",Helvetica,Arial,Verdana,sans-serif;font-weight:300}.non_osx .font-light,body.non_osx{font:13px/18px Tahoma,sans-serif,Arial,Helvetica;font-weight:400}h1,h2,h3,h4,h5{color:#222}.non_osx h4{font-size:17px}a,a:hover{color:#3a6d99}a:hover{cursor:pointer}.form-control{color:#000;border:1px solid #d9dbde;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control:-moz-placeholder{color:#9aa2ab}.form-control::-moz-placeholder{color:#9aa2ab}.form-control:-ms-input-placeholder{color:#9aa2ab}.form-control::-webkit-input-placeholder{color:#9aa2ab}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.btn-success{color:#fff;background-color:#6AC065;border-color:#6AC065}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#61b75b;border-color:#61b75b}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background:#5aaf54;background-image:none}.btn-danger{color:#fff;background-color:#c05f5a;border-color:#c05f5a}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#ab5450;border-color:#ab5450}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background:#a24f4b;background-image:none}.btn-primary{color:#fff;background-color:#598db5;border-color:#598db5}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#4f84ac;border-color:#4f84ac}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background:#4c799c;background-image:none}.tg_page_head .navbar{min-height:44px}.tg_page_head .navbar-toggle{margin-top:5px;margin-bottom:5px}.tg_page_head .container{display:block;width:auto}.tg_page_head .navbar-inverse{background:#497495;border:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.11);-moz-box-shadow:0 1px 1px rgba(0,0,0,.11);box-shadow:0 1px 1px rgba(0,0,0,.11);margin:0}.tg_page_head .navbar>.container .navbar-brand{padding:9px 15px;opacity:.9;margin-left:0;margin-right:20px;-webkit-transition:opacity swing .9s;display:block;line-height:0;height:auto}.navbar-offline{max-width:250px;margin:0 auto;float:none}.navbar-offline-text{padding:12px 15px;color:#b9cfe3;font-size:13px;display:block;line-height:20px}.tg_head_logo{background:url(../img/Tlogo_2x.png) 0 0 no-repeat;background-size:26px 26px;display:inline-block;width:26px;height:26px;vertical-align:text-top}.is_1x .tg_head_logo{background-image:url(../img/TLogo_1x.png)}.tg_head_logo_text{background:url(../img/TLogo2_2x.png) 0 0 no-repeat;background-size:97px 15px;display:inline-block;width:97px;height:15px;vertical-align:text-top;margin-top:7px;margin-left:10px}.is_1x .tg_head_logo_text{background-image:url(../img/TLogo2_1x.png)}.tg_page_head .navbar>.container .navbar-brand:hover{opacity:1}.tg_page_head .navbar-inverse .navbar-nav>li>a{padding-top:12px;padding-bottom:12px;color:#b9cfe3;font-size:13px}.tg_page_head .navbar-inverse .navbar-nav>li>a:hover{color:#FFF}.tg_page_head .navbar-inverse .navbar-toggle{border-color:#497495;outline:0}.tg_page_head .navbar-inverse .navbar-collapse,.tg_page_head .navbar-inverse .navbar-form{border-color:#497495}.tg_page_head .navbar-inverse .navbar-toggle:active,.tg_page_head .navbar-inverse .navbar-toggle:focus,.tg_page_head .navbar-inverse .navbar-toggle:hover{background-color:rgba(255,255,255,.1)}.tg_page_head .navbar-quick-nav{margin:0}.tg_page_head .navbar-quick-nav li{float:left}.tg_page_head .navbar-quick-nav a{padding-top:15px;padding-bottom:15px}.icon-back{display:inline-block;width:10px;height:18px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -15px -419px no-repeat;background-size:42px 680px;opacity:.6}.is_1x .icon-back{background-image:url(../img/icons/IconsetW_1x.png)}.tg_page_head .navbar-quick-nav a:hover .icon-back{opacity:1}.tg_progress{height:12px;margin:0;padding:0;background:rgba(255,255,255,.4);border:5px solid rgba(0,0,0,.5);border-radius:3px}.tg_progress .progress-bar{height:5px;line-height:2px;background:rgba(255,255,255,.9);border-radius:0;overflow:hidden}.dropdown-menu{border-radius:2px;padding:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.175);box-shadow:0 1px 3px rgba(0,0,0,.175)}.dropdown-menu>li>a{padding:5px 14px;font-size:13px}.modal-backdrop{background:#111}.modal-backdrop.in{opacity:.25}.modal-backdrop.fade,.modal.fade,.modal.fade .modal-dialog{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.modal{overflow-y:auto}.modal-content{border:0;border-radius:4px;-webkit-box-shadow:0 1px 10px rgba(0,0,0,.15);box-shadow:0 1px 10px rgba(0,0,0,.15)}.modal_close_wrap{cursor:pointer;position:fixed;top:0;right:0;width:50%;height:100%}.modal_close{background:url(../img/icons/CloseHover_2x.png) 0 0 no-repeat;background-size:33px 33px;width:33px;height:33px;float:right;margin:60px 30px 0 0;opacity:.5;pointer-events:none;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s}.modal_close_wrap:hover .modal_close{opacity:1}.text-invisible{visibility:hidden}.modal-header{padding:12px 0 4px 3px;border-bottom:2px solid #E1E1E1;margin:0 18px}.modal-title{color:#222;font-weight:700;font-size:17px;line-height:1.4}.modal-close-link,.modal-head-link{font-size:12px;line-height:1.4;float:right;padding:0 2px;margin:6px 2px 0 0}.modal-close-link:hover,.modal-head-link:hover{text-decoration:none}.modal-head-link{margin-right:15px}.img_fullsize_with_progress_wrap{position:relative;margin:0 auto}.img_fullsize_progress_overlay{position:absolute;width:100%;height:100%}.img_fullsize_progress_wrap{background:rgba(0,0,0,.1);position:relative}.img_fullsize_progress{position:absolute;bottom:0;left:0;width:100%;height:25px;margin:0;background:rgba(0,0,0,.5);border:0;border-radius:0;padding:10px}.welcome_logo{background:url(../img/logo_dogogram.png) 0 0 no-repeat;background-size:111px 112px;display:block;width:112px;height:112px;margin:0 auto}.welcome_box_wrap{max-width:310px;padding:25px;background:#FFF;margin:30px auto 0;border-radius:1px;overflow:hidden;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.welcome_text{color:#999;text-align:center;margin-bottom:25px;font-size:13px}.login_form_wrap{max-width:310px;padding:25px;background:#FFF;margin:200px auto 0;border-radius:1px;overflow:hidden;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.login_form_head{color:#222;margin-top:0;text-align:center}.login_form_lead{color:#959595;text-align:center;margin:15px 0 30px;font-size:13px}.im_page_wrap{background:#FFF;max-width:1000px;min-width:300px;margin:0 auto;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);border-radius:0 0 3px 3px;overflow:hidden}.im_page_footer{font-size:11px;text-align:center;color:#9cacb9;line-height:40px}.im_page_footer_brand{color:#9cacb9;font-weight:700}.im_page_footer_brand:active,.im_page_footer_brand:hover{color:#8499aa;text-decoration:none}.im_dialogs_col_wrap{float:left;width:31%;border-right:2px solid #E9EBED;padding-bottom:10px}.im_history_col_wrap{float:left;width:69%}.im_dialogs_col{margin-right:-7px}.im_dialogs_col .nano>.pane{background:rgba(0,0,0,0);width:12px;right:0;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.im_dialogs_col .nano>.pane>.slider{background:#A5B1B9;margin:0 5px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.im_dialogs_panel{padding:14px 12px;position:relative}.im_dialogs_search{position:relative}.im_page_split .im_dialogs_search{margin-right:48px}.im_dialogs_search_field{font-size:12px;line-height:normal;background:#F2F2F2 url(../img/icons/IconsetW.png) -6px -205px no-repeat;background-size:42px 680px;border:1px solid #F2F2F2;border-radius:3px;padding:6px 20px 6px 30px;margin:0}.is_1x .im_dialogs_search_field{background-image:url(../img/icons/IconsetW_1x.png)}.im_dialogs_search_field:active,.im_dialogs_search_field:focus{background-color:#FFF}.im_dialogs_search_clear{position:absolute;right:9px;margin-top:-23px;color:#999;width:13px;height:13px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -15px -192px no-repeat;background-size:42px 680px;opacity:.6}.is_1x .im_dialogs_search_clear{background-image:url(../img/icons/IconsetW_1x.png)}.im_dialogs_search_clear:hover{opacity:1}.im_dialogs_panel_dropdown{position:absolute;right:12px}.im_dialogs_panel_dropdown .dropdown-menu{right:auto;left:0;margin-top:8px}.im_dialogs_scrollable_wrap{padding:0 19px 0 12px;outline:0!important}.im_dialogs_scrollable_wrap .im_dialog_wrap{margin-top:0}.im_dialogs_scrollable_wrap a.im_dialog{clear:both;overflow:hidden;color:#000;padding:8px 9px;border-radius:0}.im_dialogs_scrollable_wrap a.im_dialog:hover{border-radius:2px;background:#f2f6fa}.im_dialogs_scrollable_wrap .active a.im_dialog{border-radius:2px;background-color:#6490b1}.im_dialogs_scrollable_wrap .active a.im_dialog:hover{background-color:#6490b1}.im_dialogs_scrollable_wrap a.im_dialog .glyphicon,.im_dialogs_scrollable_wrap a.im_dialog .icon{display:none}.im_dialog_message_wrap{overflow:hidden;word-wrap:break-word}.im_dialog_chat_from_wrap,.im_dialog_message_media,.im_dialog_message_service{color:#3a6d99}.im_dialog_message_text{color:gray}a.im_dialog:hover .im_dialog_message_text{color:#698192}.active a.im_dialog .im_dialog_chat_from_wrap,.active a.im_dialog .im_dialog_message_media,.active a.im_dialog .im_dialog_message_service,.active a.im_dialog .im_dialog_message_text{color:#FFF}.im_dialog_photo{width:40px;height:40px;border-radius:2px;overflow:hidden;margin:0 10px 0 0}.im_dialog_peer{color:#222;font-weight:700;margin-top:2px;margin-bottom:2px}.active .im_dialog_peer{color:#FFF}.im_dialog_badge{background:#75BB72;border-radius:2px;font-size:10px;padding:3px 4px;margin-top:4px}.active .im_dialog_badge{color:#428bca;background-color:#fff}.im_dialogs_modal_col .im_dialog_badge{display:none}.im_dialog_unread{background:#c1d6e5;display:inline-block;float:right;width:8px;height:8px;border-radius:5px;overflow:hidden;margin:10px 0 0}a.im_dialog:hover .im_dialog_unread{background:#a3c0d4}.active .im_dialog_unread{background-color:#a4c4dd}.im_dialog_date{color:#b3b3b3;font-size:.85em}a.im_dialog:hover .im_dialog_date{color:#91a6ba}.active .im_dialog_date,.active a.im_dialog:hover .im_dialog_date{color:#b8d1e4}.im_dialog_service{font-style:italic;color:#999}.im_dialog_message,.im_dialog_peer{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.contacts_modal_col .nano>.pane,.im_dialogs_modal_col .nano>.pane,.im_history_col .nano>.pane{background:rgba(3,36,64,.08);width:9px;right:0;top:0;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.im_history_col .nano>.pane{top:10px;right:8px}.contacts_modal_col .nano>.pane>.slider,.im_dialogs_modal_col .nano>.pane>.slider,.im_history_col .nano>.pane>.slider{background:rgba(3,46,79,.22);margin:0;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.im_history_panel_wrap{margin:0 23px 0 15px;cursor:pointer;-webkit-box-shadow:0 2px 0 rgba(0,0,0,.12);-moz-box-shadow:0 2px 0 rgba(0,0,0,.12);box-shadow:0 2px 0 rgba(0,0,0,.12);position:relative;z-index:2;min-height:44px}.im_history_panel{padding:10px 4px 0}.im_history_panel_title h4{font-size:17px;line-height:20px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin:8px 0 6px}.im_history_panel_title h4 small{color:#999;font-size:13px;margin-left:5px}.im_history_panel_edit_link,.im_history_panel_info_link,.im_history_panel_media_dropdown .dropdown-toggle,.im_history_panel_return_link{font-size:13px;font-weight:400;padding-top:5px;line-height:1}.im_history_panel_media_dropdown{padding-top:2px}.im_history_panel_edit_link,.im_history_panel_media_dropdown,.im_history_panel_return_link{font-size:13px;margin-right:20px}.im_history_panel_return_count{margin-left:5px}.icon-caret{width:8px;height:4px;display:inline-block;vertical-align:text-top;margin-top:7px;margin-left:6px;background:url(../img/icons/IconsetW.png) -17px -444px no-repeat;background-size:42px 680px}.is_1x .icon-caret{background-image:url(../img/icons/IconsetW_1x.png)}.im_history_panel_media_dropdown .dropdown-menu{border-radius:2px;right:auto;left:-15px;margin-top:11px;padding:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.175);box-shadow:0 1px 3px rgba(0,0,0,.175)}.im_history_wrap{overflow:hidden}.im_history_scrollable_wrap{outline:0!important;-webkit-user-select:text}.im_history_to_bottom .im_history_scrollable{position:absolute;bottom:0;width:100%}.im_history_appending{-webkit-transition:all .2s;-moz-transition:all .2s;-ms-transition:all .2s;-o-transition:all .2s;transition:all .2s}.im_history{padding:20px 0 0;position:relative}.im_history_typing_wrap{margin-top:13px;height:18px;line-height:18px;width:100%;margin-bottom:13px;overflow:hidden;-webkit-user-select:none}.im_history_typing{font-size:11px;color:#999;max-width:526px;margin:0 auto;padding:0 77px}.im_message_unread_split{background:#f4f4f4;color:#777;text-align:center;padding:4px 10px;margin:10px 0}.im_message_author{color:#3a6d99;font-weight:700}.non_osx .im_message_author{font-size:12px}.im_message_grouped .im_message_author,.im_message_grouped .im_message_from_photo{display:none}.im_message_grouped .im_message_body{margin-left:46px}.im_message_grouped .im_content_message_select_area{height:34px}.im_history_appending .im_content_message_select_area{height:52px}.im_message_grouped .icon-select-tick{margin-top:4px}.im_message_grouped .icon-message-status{display:none;margin-top:5px;margin-left:24px}.im_message_contact_photo,.im_message_from_photo{width:34px;height:34px;border-radius:2px;overflow:hidden}a.im_message_contact_photo,a.im_message_from_photo{margin:1px 12px 0 0}.non_osx .im_message_contact_name{font-size:12px}.im_message_contact_name{font-weight:700}a.im_message_photo_thumb,a.im_message_video_thumb{display:block;overflow:hidden;border-radius:2px}img.im_message_photo_thumb,img.im_message_video_thumb{overflow:hidden;border-radius:2px}.im_message_video,a.im_message_photo_thumb{margin-top:5px}a.im_message_video_thumb{float:left;margin-right:15px;position:relative}img.im_message_video_thumb{-webkit-filter:blur(2px);-moz-filter:blur(2px);-o-filter:blur(2px);-ms-filter:blur(2px);filter:blur(2px);filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='2')}div.im_message_video_thumb{position:relative}.im_message_video_duration{background:rgba(0,0,0,.4);color:#FFF;position:absolute;bottom:4px;right:4px;padding:2px 6px;font-size:11px;line-height:15px;border-radius:2px;overflow:hidden;z-index:1}.icon-videoplay{position:absolute;display:inline-block;top:50%;left:50%;margin-left:-21px;margin-top:-21px;width:42px;height:42px;background:url(../img/icons/IconsetW.png) 0 -590px no-repeat;background-size:42px 680px;z-index:1}.is_1x .icon-videoplay{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_geopoint{border-radius:2px;margin-top:5px;overflow:hidden;display:block;position:relative;width:200px;height:100px}.icon-geo-point{position:absolute;display:inline-block;top:50%;left:50%;margin-left:-8px;margin-top:-10px;width:15px;height:19px;background:url(../img/icons/IconsetW.png) -14px -389px no-repeat;background-size:42px 680px}.is_1x .icon-geo-point{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_iframe_video{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-top:5px}.im_message_iframe_video iframe{position:absolute;top:0;left:0;width:100%;height:100%}.im_message_audio,.im_message_document,.im_message_upload_file{margin-top:3px;border-radius:3px;display:inline-block;width:340px}.icon-document,.icon-photo,.icon-video{display:block;float:left;width:38px;height:38px;vertical-align:text-top;background:#F2F2F2 url(../img/icons/IconsetW.png) -2px -229px no-repeat;background-size:42px 680px;border-radius:3px;margin-right:10px}.is_1x .icon-document,.is_1x .icon-photo,.is_1x .icon-video{background-image:url(../img/icons/IconsetW_1x.png)}.im_history_selectable .im_message_outer_wrap:hover .icon-document,.im_history_selectable .im_message_outer_wrap:hover .icon-photo,.im_history_selectable .im_message_outer_wrap:hover .icon-video,.im_message_selected .icon-document,.im_message_selected .icon-photo,.im_message_selected .icon-video{background-color:#dae6f0;background-position:-2px -542px}.im_message_document_link_disabled{cursor:default;pointer-events:none}.im_message_document_info{float:left}.im_message_document_thumb_wrap{border-radius:2px;overflow:hidden;background:#f2f2f2;width:100px;min-height:38px;max-height:100px;margin-right:10px;text-align:center;float:left;line-height:0}img.im_message_document_thumb{max-width:100px;max-height:100px;vertical-align:middle}.im_message_document_name_wrap{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:290px;padding:0 0 1px}.im_message_document_name{color:#222;display:inline-block;font-weight:700;max-width:200px;overflow:hidden;vertical-align:text-top;white-space:nowrap;text-overflow:ellipsis}.im_message_document_size{color:#999;padding-left:2px}.im_message_document_actions a{margin-right:10px}.icon-audio{display:block;float:left;width:38px;height:38px;vertical-align:text-top;background:#F2F2F2 url(../img/icons/IconsetW.png) -2px -277px no-repeat;background-size:42px 680px;border-radius:3px;margin-right:10px}.is_1x .icon-audio{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_audio_info{float:left;width:292px}.im_message_audio_name_wrap{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:290px;padding:0 0 1px}.im_message_audio_name{color:#222;display:inline-block;font-weight:700;max-width:200px;overflow:hidden;vertical-align:text-top;white-space:nowrap;text-overflow:ellipsis}.im_message_audio_duration,.im_message_audio_size{color:#999;padding-left:2px}.im_message_audio_info audio{height:38px;line-height:38px}.im_message_download_progress_wrap,.im_message_upload_progress_wrap{margin-top:5px;width:290px}.im_message_document_thumbed .im_message_audio_name_wrap,.im_message_document_thumbed .im_message_document_name_wrap,.im_message_document_thumbed .im_message_download_progress_wrap,.im_message_document_thumbed .im_message_upload_progress_wrap{width:230px}.im_message_document_thumbed .im_message_document_name{max-width:150px}.im_message_video .im_message_document_name_wrap,.im_message_video .im_message_download_progress_wrap{width:150px}.im_message_video .im_message_document_name_wrap{margin-top:5px}.tg_down_progress,.tg_up_progress{height:5px;margin:0;padding:0;background:#F2F2F2;border:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.tg_down_progress .progress-bar,.tg_up_progress .progress-bar{height:5px;line-height:5px;background:#6B9ABD;border-radius:0;overflow:hidden;-webkit-box-shadow:none;box-shadow:none}.im_service_message_wrap{text-align:center}.im_service_message{display:inline-block;min-width:10px;padding:4px 7px;line-height:1.4;color:#999;text-align:center;border-radius:10px;margin:5px 0}.im_service_message_photo_thumb{display:block;margin:0 auto}.im_content_message_wrap{margin:8px 0 8px 16px}.icon-message-status{background:#43A4DB;border:0;display:block;width:10px;height:10px;border-radius:7px;overflow:hidden;position:absolute;margin-left:-26px;margin-top:13px;opacity:0}.icon-message-status-unread{opacity:1}.icon-message-status-pending{opacity:.5}.icon-message-status-error{background:#da564d;opacity:.85}.icon-message-status-error:hover{opacity:1}.icon-message-status-tick{display:none;width:16px;height:10px;background:url(../img/icons/Checks2_2x.png) 0 0 no-repeat;background-size:16px 10px;top:2px;position:relative}.icon-message-status-tick.message-status-unread-tick{background:url(../img/icons/Checks1_2x.png) 0 0 no-repeat;background-size:16px 10px}.im_message_date{color:#adadad;font-size:.85em;padding-bottom:20px}div.im_message_author,div.im_message_body{display:block;overflow:hidden}div.im_message_fwd_header{color:gray}.im_message_text{word-wrap:break-word}span.emoji{-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;*vertical-align:auto;*zoom:1;*display:inline;height:18px;width:18px;background-repeat:no-repeat;text-indent:-9999px}.emoji-spritesheet-0{background-size:486px 126px;background-image:url(../img/emojisprite_0.png)}.emoji-spritesheet-1{background-size:522px 72px;background-image:url(../img/emojisprite_1.png)}.emoji-spritesheet-2{background-size:594px 126px;background-image:url(../img/emojisprite_2.png)}.emoji-spritesheet-3{background-size:612px 54px;background-image:url(../img/emojisprite_3.png)}.emoji-spritesheet-4{background-size:612px 108px;background-image:url(../img/emojisprite_4.png)}.im_history_empty,.im_history_not_selected{text-align:center;color:#999;font-size:1.5em;padding:0 50px}.im_history_to_bottom .im_history_empty,.im_history_to_bottom .im_history_not_selected{display:none}.im_send_panel_wrap{max-width:526px;margin:0 auto;padding:10px 15px 22px}.im_send_form_wrap{position:relative}.im_send_form{max-width:389px;margin:0 auto;position:absolute;bottom:0;left:62px;right:62px}.im_submit{padding:5px 12px;font-size:13px;line-height:17px;min-width:60px}.im_send_dropbox_wrap{background:#FFF;display:none;padding:15px 10px;margin:1px;border-radius:4px;overflow:hidden;text-align:center;color:#999;position:absolute}textarea.im_message_field{font-size:12px;margin-bottom:10px;padding:6px;min-height:50px;height:50px;resize:none}.im_attach{cursor:pointer;display:block;overflow:hidden;position:relative;padding:0 2px;width:23px;height:24px;margin-top:4px;margin-left:20px}.icon-paperclip{display:inline-block;width:19px;height:23px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -12px -68px no-repeat;background-size:42px 680px;opacity:.8}.is_1x .icon-paperclip{background-image:url(../img/icons/IconsetW_1x.png)}.im_attach:hover .icon-paperclip{opacity:1}.im_attach:active .icon-paperclip{background-position:-12px -100px;opacity:1}.im_emoji_btn{cursor:pointer;padding:0;width:23px;height:23px;margin-top:4px}.icon-emoji{display:inline-block;width:23px;height:23px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -10px -4px no-repeat;background-size:42px 680px;opacity:.8}.is_1x .icon-emoji{background-image:url(../img/icons/IconsetW_1x.png)}.im_emoji_btn:hover .icon-emoji{opacity:1}.im_emoji_btn.on .icon-emoji,.im_emoji_btn:active .icon-emoji{background-position:-10px -36px;opacity:1}.im_attach_input,.im_media_attach_input{cursor:pointer;font-size:72px!important;opacity:.01;position:absolute;z-index:100;margin:0;padding:0;right:0}.im_media_attach{cursor:pointer;display:block;overflow:hidden;position:relative;padding:0;width:24px;height:22px;margin-top:5px;margin-left:20px}.icon-camera{display:inline-block;width:25px;height:21px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -9px -132px no-repeat;background-size:42px 680px;opacity:.8}.is_1x .icon-camera{background-image:url(../img/icons/IconsetW_1x.png)}.im_media_attach:hover .icon-camera{opacity:1}.im_media_attach:active .icon-camera{background-position:-9px -162px;opacity:1}.im_panel_own_photo,.im_panel_peer_photo{width:50px;height:50px;border-radius:3px;overflow:hidden}div.im_panel_peer_photo{cursor:pointer;margin-left:12px;height:55px}div.im_panel_own_photo{margin-right:12px}.im_panel_peer_online{background:#6DBF69;border:1px solid #FFF;display:block;width:11px;height:11px;border-radius:6px;overflow:hidden;position:absolute;margin-top:-7px;margin-left:43px}.status_online{background:#6DBF69;border:1px solid #FFF;display:block;width:11px;height:11px;border-radius:6px;overflow:hidden;position:absolute;margin-top:-7px;margin-left:33px}.media_modal_wrap .modal-body{padding:19px 18px 17px}a.img_fullsize{display:block;text-align:center}img.img_fullsize{margin:0 auto}.media_modal_info{color:#777;margin:20px 0 0}.media_modal_author{font-weight:700}.non_osx .media_modal_author{font-size:12px}.user_modal_window .modal-dialog{max-width:506px}.user_modal_wrap .modal-body{padding:23px 25px 30px}.settings_profile_photo_wrap{width:120px;margin-right:22px;margin-bottom:15px}.settings_profile_photo{position:relative;overflow:hidden}.settings_profile_photo_change_wrap{background:rgba(0,0,0,.6);padding:2px 5px;position:absolute;opacity:0;bottom:-30px;-webkit-transition:all ease-in-out .2s;transition:all ease-in-out .2s;width:120px}.settings_profile_photo:hover .settings_profile_photo_change_wrap{bottom:0;opacity:1}.settings_profile_photo_delete_link,.settings_profile_photo_loading,.settings_profile_photo_update_link{display:block;color:rgba(255,255,255,.8);text-align:center;padding:2px 0}.settings_profile_photo_delete_link:hover,.settings_profile_photo_update_link:hover{color:#FFF;text-decoration:none}.settings_profile_photo_update_link{position:relative;overflow:hidden}.user_modal_image_wrap{width:120px;margin-right:22px}.user_modal_image{width:120px;height:120px}.user_modal_header{font-weight:700;margin:0 0 5px}.user_modal_status{color:#999}.user_modal_actions_wrap{margin-top:8px}.user_modal_send_btn{border:0;background:#4E9CD8;font-size:12px;padding-left:16px;padding-right:16px;float:left}.user_modal_send_btn:hover{background:#539BD1}.user_modal_other_btn{margin-left:10px;float:left}.user_modal_other_btn .dropdown-toggle{border:0;font-size:12px}.user_modal_settings_wrap{margin-top:25px}.user_modal_notifications{font-weight:700}.user_modal_clear{margin-top:20px}.chat_modal_window .modal-dialog{max-width:506px}.chat_modal_wrap .modal-body{padding:23px 25px 15px}.chat_modal_photo_wrap{width:120px;margin-right:22px}.chat_modal_photo{position:relative;overflow:hidden}.chat_modal_photo_change_wrap{background:rgba(0,0,0,.6);padding:2px 5px;position:absolute;opacity:0;bottom:-30px;-webkit-transition:all ease-in-out .2s;transition:all ease-in-out .2s;width:120px}.chat_modal_photo:hover .chat_modal_photo_change_wrap{bottom:0;opacity:1}.chat_modal_photo_delete_link,.chat_modal_photo_loading,.chat_modal_photo_update_link{display:block;color:rgba(255,255,255,.8);text-align:center;padding:2px 0}.chat_modal_photo_delete_link:hover,.chat_modal_photo_update_link:hover{color:#FFF;text-decoration:none}.chat_modal_photo_update_link{position:relative;overflow:hidden}.chat_modal_header{margin:0 0 5px}.chat_modal_members_count{color:#999}.chat_modal_actions_wrap{margin-top:8px}.chat_modal_send_btn{border:0;background:#4E9CD8;font-size:12px;padding-left:16px;padding-right:16px;float:left}.chat_modal_send_btn:hover{background:#539BD1}.chat_modal_delete_btn{border:0;font-size:12px;padding-left:16px;padding-right:16px;float:left}.chat_modal_other_btn{margin-left:10px;float:left}.chat_modal_other_btn .dropdown-toggle{border:0;font-size:12px}.chat_modal_settings_wrap{margin-top:10px}.chat_modal_notifications{margin-top:25px;font-weight:700}.chat_modal_members_header{margin:20px 0 6px}.chat_modal_participant_wrap{padding:8px 7px;border-top:1px solid #F0F0F0}.chat_modal_participant_kick{padding:11px 0;display:block}.chat_modal_participant_name{display:block;color:#3C6E97;font-weight:700;margin:1px 0 2px}.non_osx .chat_modal_participant_name{font-size:12px}.chat_modal_participant_status{color:#999}.chat_modal_participant_photo{width:40px;height:40px;margin-right:10px;overflow:hidden}.chat_modal_members_forbidden{color:#999}.emoji-wysiwyg-editor:empty:before{content:attr(placeholder);color:#9aa2ab}.emoji-wysiwyg-editor:active:before,.emoji-wysiwyg-editor:focus:before{content:none}.emoji-wysiwyg-editor{font-size:12px;margin-bottom:10px;padding:6px;min-height:50px;height:auto;max-height:300px;overflow:auto;line-height:17px;border:1px solid #d9dbde;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-user-select:text}.emoji-wysiwyg-editor img{width:20px;height:20px;vertical-align:middle;margin:-3px 0 0 0}.emoji-menu{position:absolute;z-index:999;width:220px;margin-left:-107px;margin-top:-252px;border:1px #dfdfdf solid;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;overflow:hidden;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1)}.emoji-items-wrap1{background:#FFF;padding:5px 2px 5px 5px}.emoji-items-wrap1 .emoji-menu-tabs{width:100%;margin-bottom:8px;margin-top:3px}.emoji-items-wrap1 .emoji-menu-tabs td{text-align:center;color:#fff;line-height:0}.emoji-menu-tabs .emoji-menu-tab{display:inline-block;width:24px;height:29px;background:url(../img/icons/IconsetSmiles.png) no-repeat;background-size:42px 350px}.is_1x .emoji-menu-tabs .emoji-menu-tab{background-image:url(../img/icons/IconsetSmiles_1x.png)}.emoji-menu-tabs .icon-smile{background-position:-9px -34px}.emoji-menu-tabs .icon-smile-selected{background-position:-9px -5px}.emoji-menu-tabs .icon-flower{background-position:-9px -145px}.emoji-menu-tabs .icon-flower-selected{background-position:-9px -118px}.emoji-menu-tabs .icon-bell{background-position:-9px -89px}.emoji-menu-tabs .icon-bell-selected{background-position:-9px -61px}.emoji-menu-tabs .icon-car{background-position:-9px -196px}.emoji-menu-tabs .icon-car-selected{background-position:-9px -170px}.emoji-menu-tabs .icon-grid{background-position:-9px -248px}.emoji-menu-tabs .icon-grid-selected{background-position:-9px -222px}.emoji-menu-tabs .icon-bell,.emoji-menu-tabs .icon-car,.emoji-menu-tabs .icon-flower,.emoji-menu-tabs .icon-grid,.emoji-menu-tabs .icon-smile{opacity:.7}.emoji-menu-tabs .icon-bell:hover,.emoji-menu-tabs .icon-car:hover,.emoji-menu-tabs .icon-flower:hover,.emoji-menu-tabs .icon-grid:hover,.emoji-menu-tabs .icon-smile:hover{opacity:1}.emoji-menu .emoji-items-wrap{position:relative;height:174px}.emoji-menu .emoji-items{padding-right:8px;outline:0!important}.emoji-menu img{width:20px;height:20px;vertical-align:middle;border:0 none}.emoji-menu .emoji-items a{margin:-1px 0 0 -1px;padding:5px;display:block;float:left;border-radius:2px}.emoji-menu .emoji-items a:hover{background-color:#edf2f5}.emoji-menu:after{content:' ';display:block;clear:left}.emoji-menu a .label{display:none}.emoji-menu-tail{display:none;background:url(../img/icons/IconsetW.png) -14px -268px no-repeat;background-size:42px 680px;width:14px;height:7px;margin:0 83px}.is_1x .emoji-menu-tail{background-image:url(../img/icons/IconsetW_1x.png)}.emoji-menu .nano>.pane{background:rgba(255,255,255,0);right:-2px}.emoji-menu .nano>.pane>.slider{background:#d1d1d1;margin:0 3px 0 4px}.error_modal_window .modal-dialog{max-width:350px}.error_modal_description{text-align:center;padding:20px;font-size:14px;line-height:160%}.photo_modal_error{color:#999;position:absolute;width:100%;top:50%;margin-top:-20px;padding:0 20px;text-align:center;font-size:1.4em;line-height:160%}.video_full_error{border-radius:10px;overflow:hidden;background:rgba(0,0,0,.6);color:#FFF;position:absolute;top:50%;margin:-40px 10px 0;padding:10px;text-align:center;font-size:1.4em;line-height:160%}.settings_modal_window .modal-dialog{max-width:502px}.settings_profile_image_wrap{float:left;width:120px;margin-right:22px}.settings_profile_first_name,.settings_profile_last_name{width:180px;float:left}.settings_profile_first_name label,.settings_profile_last_name label{margin-bottom:3px}.settings_profile_first_name{margin-right:22px;margin-bottom:10px}.settings_profile_last_name{margin-right:10px;margin-bottom:15px}.settings_profile_save{padding-top:21px;float:left}.settings_profile_save_btn{width:50px}.settings_profile_edit_form{margin-bottom:0}.settings_profile_edit_form input{font-size:12px;line-height:normal;background:#F2F2F2;border:1px solid #F2F2F2;border-radius:0;padding:6px;margin:0}.settings_profile_edit_form input:active,.settings_profile_edit_form input:focus{background-color:#FFF}.settings_send_choose_form input{margin-top:2px}.settings_send_choose_form{margin-bottom:20px}.settings_user_phone,.settings_version{color:#999}.contacts_modal_window .modal-dialog{max-width:506px}.contacts_modal_wrap .modal-body{padding:23px 25px 15px}.contacts_modal_search{padding:0 0 14px;position:relative}.contacts_modal_search_field{font-size:12px;line-height:normal;background:#F2F2F2 url(../img/icons/IconsetW.png) -6px -205px no-repeat;background-size:42px 680px;border:1px solid #F2F2F2;border-radius:3px;padding:6px 20px 6px 30px;margin:0}.is_1x .contacts_modal_search_field{background-image:url(../img/icons/IconsetW_1x.png)}.contacts_modal_search_field:active,.contacts_modal_search_field:focus{background-color:#FFF}.contacts_modal_search_clear{position:absolute;right:9px;margin-top:-23px;color:#999;width:13px;height:13px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -15px -192px no-repeat;background-size:42px 680px;opacity:.6}.is_1x .contacts_modal_search_clear{background-image:url(../img/icons/IconsetW_1x.png)}.contacts_modal_search_clear:hover{opacity:1}.contacts_modal_col{margin-right:-17px}.contacts_scrollable_wrap{padding:0 17px 0 0;outline:0!important}.contacts_modal_members_list a.contacts_modal_contact{clear:both;overflow:hidden;color:#000;padding:8px 9px;border-radius:0}.contacts_modal_members_list a.contacts_modal_contact:hover{border-radius:2px;background:#f2f6fa}.contacts_modal_members_list .active a.contacts_modal_contact{border-radius:2px;background-color:#6490b1}.contacts_modal_members_list .active a.contacts_modal_contact:hover{background-color:#6490b1}.contacts_modal_contact_name{display:block;color:#3C6E97;font-weight:700;margin:1px 0 2px}.non_osx .contacts_modal_contact_name{font-size:12px}.contacts_modal_contact_photo{width:40px;height:40px;margin-right:10px;overflow:hidden}.contacts_modal_contact_status{color:#999}a.contacts_modal_contact:hover .contacts_modal_contact_status{color:#91a6ba}.contacts_modal_members_list .active .contacts_modal_contact_name,.contacts_modal_members_list .active a.contacts_modal_contact .contacts_modal_contact_status{color:#FFF}.icon-contact-tick{position:absolute;right:10px;top:22px;width:17px;height:15px;background:url(../img/icons/IconsetW.png) -13px -366px no-repeat;background-size:42px 680px;opacity:.5}.is_1x .icon-contact-tick{background-image:url(../img/icons/IconsetW_1x.png)}.contacts_modal_members_list a.contacts_modal_contact:hover .icon-contact-tick{background-position:-13px -366px;opacity:1}.contacts_modal_members_list .active .icon-contact-tick{background-position:-13px -458px!important;opacity:1}.contacts_modal_members_list .disabled{pointer-events:none}.contacts_modal_members_list .disabled .icon-contact-tick{display:none}.contacts_modal_actions,.contacts_modal_panel{padding-top:10px}.im_edit_panel_wrap{padding:10px 0 34px;margin:0 24px 0 12px}.im_edit_panel_border{display:block;margin:0 0 34px 3px;border-bottom:1px solid #EEE}.im_panel_to_top .im_edit_panel_wrap{background:#FFF;position:absolute;width:100%}.im_edit_cancel_link,.im_edit_flush_link{display:block;padding:6px 17px;border-radius:2px;overflow:hidden;margin:6px}.im_edit_cancel_link{float:left}.im_edit_flush_link{float:right}.im_edit_cancel_link:hover,.im_edit_flush_link:hover{background:#f2f6fa;text-decoration:none}.im_edit_selected_actions{text-align:center}.im_edit_delete_btn,.im_edit_forward_btn{border-radius:2px;padding:5px 17px;font-weight:400;font-size:12px;line-height:18px;margin:6px}.im_edit_panel_title{text-align:center;margin:0;font-size:14px;line-height:34px}.icon-delete{display:inline-block;width:12px;height:15px;background:url(../img/icons/IconsetW.png) -15px -319px no-repeat;background-size:42px 680px}.is_1x .icon-delete{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_selected{background:#f2f6fa}.im_history_selectable .im_message_outer_wrap{cursor:pointer}.im_history_selectable .im_message_outer_wrap:hover{background:#f2f6fa}.im_history_selectable .im_message_outer_wrap:hover .im_message_date,.im_history_selectable .im_message_outer_wrap:hover .im_message_fwd_header,.im_message_selected .im_message_date,.im_message_selected .im_message_fwd_header{color:#91a6ba}.im_message_wrap{max-width:526px;padding:0 15px;margin:0 auto;position:relative}.im_content_message_select_area{display:none;cursor:pointer;position:absolute;width:112px;height:52px;margin:-8px 0 0 -112px;-webkit-user-select:text}@media (min-width:1024px){.im_content_message_select_area{display:block}}.icon-select-tick{display:none;width:26px;height:26px;margin:13px 0 0 40px;background:url(../img/icons/IconsetW.png) -9px -516px no-repeat;background-size:42px 680px}.is_1x .icon-select-tick{background-image:url(../img/icons/IconsetW_1x.png)}.im_content_message_select_area:hover .icon-select-tick,.im_history_selectable .icon-select-tick{display:inline-block}.im_content_message_select_area:hover .icon-select-tick,.im_history_selectable .im_message_outer_wrap:hover .icon-select-tick,.im_message_selected .icon-select-tick{background-position:-9px -481px;opacity:.5}.im_message_selected .icon-select-tick{opacity:1!important}@media (min-width:480px){.tg_page_head .navbar-quick-nav{display:none}}@media (max-width:480px){.tg_page_head .navbar>.container .navbar-brand{padding-left:9px}.im_history_panel_info_link{display:none}.im_history_panel_edit_link{margin-right:0}.im_dialogs_panel_dropdown .dropdown-menu{right:0;left:auto}}@media (min-height:768px){.user_modal_window .modal-dialog{margin-top:150px}}@media (max-width:480px){.login_form_wrap{border-radius:0;max-width:auto;box-shadow:none;-webkit-box-shadow:none;margin:30px auto 20px}.im_panel_own_photo,.im_panel_peer_photo{display:none}.im_history_panel_wrap{margin:0 15px}.im_send_panel_wrap{padding:10px 15px}.icon-select-tick{margin:10px 0 0 -24px}.im_content_message_wrap{margin-left:0}.im_history_typing{padding:0 15px 0 60px}.im_send_form{left:0;right:0;max-width:none}.im_edit_cancel_link,.im_edit_delete_btn,.im_edit_flush_link,.im_edit_forward_btn{padding-left:5px;padding-right:5px;margin:6px 4px}.im_edit_panel_border{margin:0 18px 22px 3px}.im_edit_panel_wrap{margin:0 5px;padding-bottom:34px}}@media (max-height:480px){.im_page_footer{display:none}.im_send_panel_wrap{padding-bottom:10px}.im_edit_panel_wrap{padding-bottom:18px}.emoji-wysiwyg-editor{min-height:34px;max-height:150px}}@media (max-width:640px){.im_dialog_peer{white-space:normal;height:2.84em}.im_dialog_message{display:none}}@media (max-width:900px){.icon-message-status{z-index:10;margin-left:-5px;border-radius:0;height:34px;width:2px;margin-top:1px;border:0}}@media (max-width:480px){.im_dialogs_col_wrap,.im_page_peer_not_selected .im_history_col_wrap{display:none}.im_page_peer_not_selected .im_dialogs_col_wrap{display:block;border-right:0}.im_page_peer_not_selected .im_dialogs_col{margin-right:0}.im_page_peer_not_selected .im_dialogs_col_wrap .pane{width:12px;right:0}.im_page_peer_not_selected .im_dialogs_col_wrap .pane>.slider{border-radius:3px;margin:0 3px}.im_dialogs_scrollable_wrap{padding:0 12px}.im_dialogs_col_wrap,.im_history_col_wrap{float:none;width:auto;max-width:auto;min-width:auto}.im_page_peer_not_selected .im_dialog_peer{white-space:nowrap;height:auto}.im_page_peer_not_selected .im_dialog_message{display:block}}.peer_select_window .modal-dialog{max-width:506px}.peer_select_modal_wrap .modal-body{padding:10px 10px 15px}.user_color_1,.user_color_1:hover{color:#b3577a}.user_color_2,.user_color_2:hover{color:#539e4f}.user_color_3,.user_color_3:hover{color:#ae9661}.user_color_4,.user_color_4:hover{color:#4979a3}.user_color_5,.user_color_5:hover{color:#8365ab}.user_color_6,.user_color_6:hover{color:#b7635d}.user_color_7,.user_color_7:hover{color:#5397b4}.user_color_8,.user_color_8:hover{color:#c07844}.im_dialogs_contacts_wrap h5{color:#999;font-size:13px;margin-left:8px}.tooltip-inner{background:rgba(0,0,0,.8)}.tooltip-arrow{opacity:.8}.im_dialogs_panel_dropdown{margin-left:8px}.im_dialogs_panel_dropdown .dropdown-toggle{background:#F2F2F2;display:block;border-radius:2px;overflow:hidden;padding:11px 12px;width:38px;height:34px}.im_dialogs_panel_dropdown .dropdown-toggle .icon-bar{background:#b3b3b3;display:block;height:2px;margin-bottom:3px}.im_dialogs_panel_dropdown .dropdown-toggle .icon-bar:last-child{margin-bottom:0}.im_dialogs_panel_dropdown.open .dropdown-toggle{background:#6690b0}.im_dialogs_panel_dropdown.open .dropdown-toggle .icon-bar{background:#fff}.import_contact_modal_window .modal-dialog{max-width:380px}.import_modal_field_wrap{margin-bottom:10px}.modal-content-animated{-webkit-transition:margin-top linear .2s;transition:margin-top linear .2s}.loading_dots{display:inline-block;font-size:1em;line-height:1;padding:.125em 0 .175em .15em}.loading_dots span{border:.125rem solid;border-radius:50%;display:inline-block;height:.2rem;width:.2rem;margin-left:.2rem;-webkit-animation:loading_dots .8s linear infinite;-moz-animation:loading_dots .8s linear infinite;-ms-animation:loading_dots .8s linear infinite;animation:loading_dots .8s linear infinite}.loading_dots span:nth-child(2){-webkit-animation-delay:.2s;-moz-animation-delay:.2s;-ms-animation-delay:.2s;animation-delay:.2s}.loading_dots span:nth-child(3){-webkit-animation-delay:.4s;-moz-animation-delay:.4s;-ms-animation-delay:.4s;animation-delay:.4s}@-webkit-keyframes loading_dots{0%{opacity:0}50%{opacity:1}100%{opacity:0}}@-moz-keyframes loading_dots{0%{opacity:0}50%{opacity:1}100%{opacity:0}}@-ms-keyframes loading_dots{0%{opacity:0}50%{opacity:1}100%{opacity:0}}@keyframes loading_dots{0%{opacity:0}50%{opacity:1}100%{opacity:0}} \ No newline at end of file +html{background:#dee4e9 url(../img/bg_tile.png) 0 0 repeat}body{color:#000;background:0 0;font:12px/18px "Lucida Grande","Lucida Sans Unicode",Arial,Helvetica,Verdana,sans-serif}.font-light{font-family:HelveticaNeue-Light,"Helvetica Neue Light","Helvetica Light",Helvetica,Arial,Verdana,sans-serif;font-weight:300}.non_osx .font-light,body.non_osx{font:13px/18px Tahoma,sans-serif,Arial,Helvetica;font-weight:400}h1,h2,h3,h4,h5{color:#222}.non_osx h4{font-size:17px}a,a:hover{color:#3a6d99}a:hover{cursor:pointer}.form-control{color:#000;border:1px solid #d9dbde;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control:-moz-placeholder{color:#9aa2ab}.form-control::-moz-placeholder{color:#9aa2ab}.form-control:-ms-input-placeholder{color:#9aa2ab}.form-control::-webkit-input-placeholder{color:#9aa2ab}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.btn-success{color:#fff;background-color:#6AC065;border-color:#6AC065}.btn-success.active,.btn-success:active,.btn-success:focus,.btn-success:hover,.open .dropdown-toggle.btn-success{color:#fff;background-color:#61b75b;border-color:#61b75b}.btn-success.active,.btn-success:active,.open .dropdown-toggle.btn-success{background:#5aaf54;background-image:none}.btn-danger{color:#fff;background-color:#c05f5a;border-color:#c05f5a}.btn-danger.active,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.open .dropdown-toggle.btn-danger{color:#fff;background-color:#ab5450;border-color:#ab5450}.btn-danger.active,.btn-danger:active,.open .dropdown-toggle.btn-danger{background:#a24f4b;background-image:none}.btn-primary{color:#fff;background-color:#598db5;border-color:#598db5}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.open .dropdown-toggle.btn-primary{color:#fff;background-color:#4f84ac;border-color:#4f84ac}.btn-primary.active,.btn-primary:active,.open .dropdown-toggle.btn-primary{background:#4c799c;background-image:none}.tg_page_head .navbar{min-height:44px}.tg_page_head .navbar-toggle{margin-top:5px;margin-bottom:5px}.tg_page_head .container{display:block;width:auto}.tg_page_head .navbar-inverse{background:#497495;border:0;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.11);-moz-box-shadow:0 1px 1px rgba(0,0,0,.11);box-shadow:0 1px 1px rgba(0,0,0,.11);margin:0}.tg_page_head .navbar>.container .navbar-brand{padding:9px 15px;opacity:.9;margin-left:0;margin-right:20px;-webkit-transition:opacity swing .9s;display:block;line-height:0;height:auto}.navbar-offline{max-width:250px;margin:0 auto;float:none}.navbar-offline-text{padding:12px 15px;color:#b9cfe3;font-size:13px;display:block;line-height:20px}.tg_head_logo{background:url(../img/Tlogo_2x.png) 0 0 no-repeat;background-size:26px 26px;display:inline-block;width:26px;height:26px;vertical-align:text-top}.is_1x .tg_head_logo{background-image:url(../img/TLogo_1x.png)}.tg_head_logo_text{background:url(../img/TLogo2_2x.png) 0 0 no-repeat;background-size:97px 15px;display:inline-block;width:97px;height:15px;vertical-align:text-top;margin-top:7px;margin-left:10px}.is_1x .tg_head_logo_text{background-image:url(../img/TLogo2_1x.png)}.tg_page_head .navbar>.container .navbar-brand:hover{opacity:1}.tg_page_head .navbar-inverse .navbar-nav>li>a{padding-top:12px;padding-bottom:12px;color:#b9cfe3;font-size:13px}.tg_page_head .navbar-inverse .navbar-nav>li>a:hover{color:#FFF}.tg_page_head .navbar-inverse .navbar-toggle{border-color:#497495;outline:0}.tg_page_head .navbar-inverse .navbar-collapse,.tg_page_head .navbar-inverse .navbar-form{border-color:#497495}.tg_page_head .navbar-inverse .navbar-toggle:active,.tg_page_head .navbar-inverse .navbar-toggle:focus,.tg_page_head .navbar-inverse .navbar-toggle:hover{background-color:rgba(255,255,255,.1)}.tg_page_head .navbar-quick-nav{margin:0}.tg_page_head .navbar-quick-nav li{float:left}.tg_page_head .navbar-quick-nav a{padding-top:15px;padding-bottom:15px}.icon-back{display:inline-block;width:10px;height:18px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -15px -419px no-repeat;background-size:42px 680px;opacity:.6}.is_1x .icon-back{background-image:url(../img/icons/IconsetW_1x.png)}.tg_page_head .navbar-quick-nav a:hover .icon-back{opacity:1}.tg_progress{height:12px;margin:0;padding:0;background:rgba(255,255,255,.4);border:5px solid rgba(0,0,0,.5);border-radius:3px}.tg_progress .progress-bar{height:5px;line-height:2px;background:rgba(255,255,255,.9);border-radius:0;overflow:hidden}.dropdown-menu{border-radius:2px;padding:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.175);box-shadow:0 1px 3px rgba(0,0,0,.175)}.dropdown-menu>li>a{padding:5px 14px;font-size:13px}.modal-backdrop{background:#111}.modal-backdrop.in{opacity:.25}.modal-backdrop.fade,.modal.fade,.modal.fade .modal-dialog{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.modal{overflow-y:auto}.modal-content{border:0;border-radius:4px;-webkit-box-shadow:0 1px 10px rgba(0,0,0,.15);box-shadow:0 1px 10px rgba(0,0,0,.15)}.modal_close_wrap{cursor:pointer;position:fixed;top:0;right:0;width:50%;height:100%}.modal_close{background:url(../img/icons/CloseHover_2x.png) 0 0 no-repeat;background-size:33px 33px;width:33px;height:33px;float:right;margin:60px 30px 0 0;opacity:.5;pointer-events:none;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s}.modal_close_wrap:hover .modal_close{opacity:1}.text-invisible{visibility:hidden}.modal-header{padding:12px 0 4px 3px;border-bottom:2px solid #E1E1E1;margin:0 18px}.modal-title{color:#222;font-weight:700;font-size:17px;line-height:1.4}.modal-close-link,.modal-head-link{font-size:12px;line-height:1.4;float:right;padding:0 2px;margin:6px 2px 0 0}.modal-close-link:hover,.modal-head-link:hover{text-decoration:none}.modal-head-link{margin-right:15px}.img_fullsize_with_progress_wrap{position:relative;margin:0 auto}.img_fullsize_progress_overlay{position:absolute;width:100%;height:100%}.img_fullsize_progress_wrap{background:rgba(0,0,0,.1);position:relative}.img_fullsize_progress{position:absolute;bottom:0;left:0;width:100%;height:25px;margin:0;background:rgba(0,0,0,.5);border:0;border-radius:0;padding:10px}.welcome_logo{background:url(../img/logo_dogogram.png) 0 0 no-repeat;background-size:111px 112px;display:block;width:112px;height:112px;margin:0 auto}.welcome_box_wrap{max-width:310px;padding:25px;background:#FFF;margin:30px auto 0;border-radius:1px;overflow:hidden;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.welcome_text{color:#999;text-align:center;margin-bottom:25px;font-size:13px}.login_form_wrap{max-width:310px;padding:25px;background:#FFF;margin:200px auto 0;border-radius:1px;overflow:hidden;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.login_form_head{color:#222;margin-top:0;text-align:center}.login_form_lead{color:#959595;text-align:center;margin:15px 0 30px;font-size:13px}.im_page_wrap{background:#FFF;max-width:1000px;min-width:300px;margin:0 auto;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1);border-radius:0 0 3px 3px;overflow:hidden}.im_page_footer{font-size:11px;text-align:center;color:#9cacb9;line-height:40px}.im_page_footer_brand{color:#9cacb9;font-weight:700}.im_page_footer_brand:active,.im_page_footer_brand:hover{color:#8499aa;text-decoration:none}.im_dialogs_col_wrap{float:left;width:31%;border-right:2px solid #E9EBED;padding-bottom:10px}.im_history_col_wrap{float:left;width:69%}.im_dialogs_col{margin-right:-7px}.im_dialogs_col .nano>.pane{background:rgba(0,0,0,0);width:12px;right:0;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.im_dialogs_col .nano>.pane>.slider{background:#A5B1B9;margin:0 5px;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.im_dialogs_panel{padding:14px 12px;position:relative}.im_dialogs_search{position:relative}.im_page_split .im_dialogs_search{margin-right:48px}.im_dialogs_search_field{font-size:12px;line-height:normal;background:#F2F2F2 url(../img/icons/IconsetW.png) -6px -205px no-repeat;background-size:42px 680px;border:1px solid #F2F2F2;border-radius:3px;padding:6px 20px 6px 30px;margin:0}.is_1x .im_dialogs_search_field{background-image:url(../img/icons/IconsetW_1x.png)}.im_dialogs_search_field:active,.im_dialogs_search_field:focus{background-color:#FFF}.im_dialogs_search_clear{position:absolute;right:9px;margin-top:-23px;color:#999;width:13px;height:13px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -15px -192px no-repeat;background-size:42px 680px;opacity:.6}.is_1x .im_dialogs_search_clear{background-image:url(../img/icons/IconsetW_1x.png)}.im_dialogs_search_clear:hover{opacity:1}.im_dialogs_panel_dropdown{position:absolute;right:12px}.im_dialogs_panel_dropdown .dropdown-menu{right:auto;left:0;margin-top:8px}.im_dialogs_scrollable_wrap{padding:0 19px 0 12px;outline:0!important}.im_dialogs_scrollable_wrap .im_dialog_wrap{margin-top:0}.im_dialogs_scrollable_wrap a.im_dialog{clear:both;overflow:hidden;color:#000;padding:8px 9px;border-radius:0}.im_dialogs_scrollable_wrap a.im_dialog:hover{border-radius:2px;background:#f2f6fa}.im_dialogs_scrollable_wrap .active a.im_dialog{border-radius:2px;background-color:#6490b1}.im_dialogs_scrollable_wrap .active a.im_dialog:hover{background-color:#6490b1}.im_dialogs_scrollable_wrap a.im_dialog .glyphicon,.im_dialogs_scrollable_wrap a.im_dialog .icon{display:none}.im_dialog_message_wrap{overflow:hidden;word-wrap:break-word}.im_dialog_chat_from_wrap,.im_dialog_message_media,.im_dialog_message_service{color:#3a6d99}.im_dialog_message_text{color:gray}a.im_dialog:hover .im_dialog_message_text{color:#698192}.active a.im_dialog .im_dialog_chat_from_wrap,.active a.im_dialog .im_dialog_message_media,.active a.im_dialog .im_dialog_message_service,.active a.im_dialog .im_dialog_message_text{color:#FFF}.im_dialog_photo{width:40px;height:40px;border-radius:2px;overflow:hidden;margin:0 10px 0 0}.im_dialog_peer{color:#222;font-weight:700;margin-top:2px;margin-bottom:2px}.active .im_dialog_peer{color:#FFF}.im_dialog_badge{background:#75BB72;border-radius:2px;font-size:10px;padding:3px 4px;margin-top:4px}.active .im_dialog_badge{color:#428bca;background-color:#fff}.im_dialogs_modal_col .im_dialog_badge{display:none}.im_dialog_unread{background:#c1d6e5;display:inline-block;float:right;width:8px;height:8px;border-radius:5px;overflow:hidden;margin:10px 0 0}a.im_dialog:hover .im_dialog_unread{background:#a3c0d4}.active .im_dialog_unread{background-color:#a4c4dd}.im_dialog_date{color:#b3b3b3;font-size:.85em}a.im_dialog:hover .im_dialog_date{color:#91a6ba}.active .im_dialog_date,.active a.im_dialog:hover .im_dialog_date{color:#b8d1e4}.im_dialog_service{font-style:italic;color:#999}.im_dialog_message,.im_dialog_peer{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.contacts_modal_col .nano>.pane,.im_dialogs_modal_col .nano>.pane,.im_history_col .nano>.pane{background:rgba(3,36,64,.08);width:9px;right:0;top:0;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;transition:.2s;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.im_history_col .nano>.pane{top:10px;right:8px}.contacts_modal_col .nano>.pane>.slider,.im_dialogs_modal_col .nano>.pane>.slider,.im_history_col .nano>.pane>.slider{background:rgba(3,46,79,.22);margin:0;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.im_history_panel_wrap{margin:0 23px 0 15px;cursor:pointer;-webkit-box-shadow:0 2px 0 rgba(0,0,0,.12);-moz-box-shadow:0 2px 0 rgba(0,0,0,.12);box-shadow:0 2px 0 rgba(0,0,0,.12);position:relative;z-index:2;min-height:44px}.im_history_panel{padding:10px 4px 0}.im_history_panel_title h4{font-size:17px;line-height:20px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;margin:8px 0 6px}.im_history_panel_title h4 small{color:#999;font-size:13px;margin-left:5px}.im_history_panel_edit_link,.im_history_panel_info_link,.im_history_panel_media_dropdown .dropdown-toggle,.im_history_panel_return_link{font-size:13px;font-weight:400;padding-top:5px;line-height:1}.im_history_panel_media_dropdown{padding-top:2px}.im_history_panel_edit_link,.im_history_panel_media_dropdown,.im_history_panel_return_link{font-size:13px;margin-right:20px}.im_history_panel_return_count{margin-left:5px}.icon-caret{width:8px;height:4px;display:inline-block;vertical-align:text-top;margin-top:7px;margin-left:6px;background:url(../img/icons/IconsetW.png) -17px -444px no-repeat;background-size:42px 680px}.is_1x .icon-caret{background-image:url(../img/icons/IconsetW_1x.png)}.im_history_panel_media_dropdown .dropdown-menu{border-radius:2px;right:auto;left:-15px;margin-top:11px;padding:0;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.175);box-shadow:0 1px 3px rgba(0,0,0,.175)}.im_history_wrap{overflow:hidden}.im_history_scrollable_wrap{outline:0!important;-webkit-user-select:text}.im_history_to_bottom .im_history_scrollable{position:absolute;bottom:0;width:100%}.im_history_appending{-webkit-transition:all .2s;-moz-transition:all .2s;-ms-transition:all .2s;-o-transition:all .2s;transition:all .2s}.im_history{padding:20px 0 0;position:relative}.im_history_typing_wrap{margin-top:13px;height:18px;line-height:18px;width:100%;margin-bottom:13px;overflow:hidden;-webkit-user-select:none}.im_history_typing{font-size:11px;color:#999;max-width:526px;margin:0 auto;padding:0 77px}.im_message_unread_split{background:#f4f4f4;color:#777;text-align:center;padding:4px 10px;margin:10px 0}.im_message_author{color:#3a6d99;font-weight:700}.non_osx .im_message_author{font-size:12px}.im_message_grouped .im_message_author,.im_message_grouped .im_message_from_photo{display:none}.im_message_grouped .im_message_body{margin-left:46px}.im_message_grouped .im_content_message_select_area{height:34px}.im_history_appending .im_content_message_select_area{height:52px}.im_message_grouped .icon-select-tick{margin-top:4px}.im_message_grouped .icon-message-status{display:none;margin-top:5px;margin-left:24px}.im_message_contact_photo,.im_message_from_photo{width:34px;height:34px;border-radius:2px;overflow:hidden}a.im_message_contact_photo,a.im_message_from_photo{margin:1px 12px 0 0}.non_osx .im_message_contact_name{font-size:12px}.im_message_contact_name{font-weight:700}a.im_message_photo_thumb,a.im_message_video_thumb{display:block;overflow:hidden;border-radius:2px}img.im_message_photo_thumb,img.im_message_video_thumb{overflow:hidden;border-radius:2px}.im_message_video,a.im_message_photo_thumb{margin-top:5px}a.im_message_video_thumb{float:left;margin-right:15px;position:relative}img.im_message_video_thumb{-webkit-filter:blur(2px);-moz-filter:blur(2px);-o-filter:blur(2px);-ms-filter:blur(2px);filter:blur(2px);filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='2')}div.im_message_video_thumb{position:relative}.im_message_video_duration{background:rgba(0,0,0,.4);color:#FFF;position:absolute;bottom:4px;right:4px;padding:2px 6px;font-size:11px;line-height:15px;border-radius:2px;overflow:hidden;z-index:1}.icon-videoplay{position:absolute;display:inline-block;top:50%;left:50%;margin-left:-21px;margin-top:-21px;width:42px;height:42px;background:url(../img/icons/IconsetW.png) 0 -590px no-repeat;background-size:42px 680px;z-index:1}.is_1x .icon-videoplay{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_geopoint{border-radius:2px;margin-top:5px;overflow:hidden;display:block;position:relative;width:200px;height:100px}.icon-geo-point{position:absolute;display:inline-block;top:50%;left:50%;margin-left:-8px;margin-top:-10px;width:15px;height:19px;background:url(../img/icons/IconsetW.png) -14px -389px no-repeat;background-size:42px 680px}.is_1x .icon-geo-point{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_iframe_video{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin-top:5px}.im_message_iframe_video iframe{position:absolute;top:0;left:0;width:100%;height:100%}.im_message_audio,.im_message_document,.im_message_upload_file{margin-top:3px;border-radius:3px;display:inline-block;width:340px}.icon-document,.icon-photo,.icon-video{display:block;float:left;width:38px;height:38px;vertical-align:text-top;background:#F2F2F2 url(../img/icons/IconsetW.png) -2px -229px no-repeat;background-size:42px 680px;border-radius:3px;margin-right:10px}.is_1x .icon-document,.is_1x .icon-photo,.is_1x .icon-video{background-image:url(../img/icons/IconsetW_1x.png)}.im_history_selectable .im_message_outer_wrap:hover .icon-document,.im_history_selectable .im_message_outer_wrap:hover .icon-photo,.im_history_selectable .im_message_outer_wrap:hover .icon-video,.im_message_selected .icon-document,.im_message_selected .icon-photo,.im_message_selected .icon-video{background-color:#dae6f0;background-position:-2px -542px}.im_message_document_link_disabled{cursor:default;pointer-events:none}.im_message_document_info{float:left}.im_message_document_thumb_wrap{border-radius:2px;overflow:hidden;background:#f2f2f2;width:100px;min-height:38px;max-height:100px;margin-right:10px;text-align:center;float:left;line-height:0}img.im_message_document_thumb{max-width:100px;max-height:100px;vertical-align:middle}.im_message_document_name_wrap{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:290px;padding:0 0 1px}.im_message_document_name{color:#222;display:inline-block;font-weight:700;max-width:200px;overflow:hidden;vertical-align:text-top;white-space:nowrap;text-overflow:ellipsis}.im_message_document_size{color:#999;padding-left:2px}.im_message_document_actions a{margin-right:10px}.icon-audio{display:block;float:left;width:38px;height:38px;vertical-align:text-top;background:#F2F2F2 url(../img/icons/IconsetW.png) -2px -277px no-repeat;background-size:42px 680px;border-radius:3px;margin-right:10px}.is_1x .icon-audio{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_audio_info{float:left;width:292px}.im_message_audio_name_wrap{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;width:290px;padding:0 0 1px}.im_message_audio_name{color:#222;display:inline-block;font-weight:700;max-width:200px;overflow:hidden;vertical-align:text-top;white-space:nowrap;text-overflow:ellipsis}.im_message_audio_duration,.im_message_audio_size{color:#999;padding-left:2px}.im_message_audio_info audio{height:38px;line-height:38px}.im_message_download_progress_wrap,.im_message_upload_progress_wrap{margin-top:5px;width:290px}.im_message_document_thumbed .im_message_audio_name_wrap,.im_message_document_thumbed .im_message_document_name_wrap,.im_message_document_thumbed .im_message_download_progress_wrap,.im_message_document_thumbed .im_message_upload_progress_wrap{width:230px}.im_message_document_thumbed .im_message_document_name{max-width:150px}.im_message_video .im_message_document_name_wrap,.im_message_video .im_message_download_progress_wrap{width:150px}.im_message_video .im_message_document_name_wrap{margin-top:5px}.im_message_media_progress_cancel{font-size:11px;margin-left:10px;line-height:100%}.tg_down_progress,.tg_up_progress{height:5px;margin:0;padding:0;background:#F2F2F2;border:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.tg_down_progress .progress-bar,.tg_up_progress .progress-bar{height:5px;line-height:5px;background:#6B9ABD;border-radius:0;overflow:hidden;-webkit-box-shadow:none;box-shadow:none}.im_service_message_wrap{text-align:center}.im_service_message{display:inline-block;min-width:10px;padding:4px 7px;line-height:1.4;color:#999;text-align:center;border-radius:10px;margin:5px 0}.im_service_message_photo_thumb{display:block;margin:0 auto}.im_content_message_wrap{margin:8px 0 8px 16px}.icon-message-status{background:#43A4DB;border:0;display:block;width:10px;height:10px;border-radius:7px;overflow:hidden;position:absolute;margin-left:-26px;margin-top:13px;opacity:0}.icon-message-status-unread{opacity:1}.icon-message-status-pending{opacity:.5}.icon-message-status-error{background:#da564d;opacity:.85}.icon-message-status-error:hover{opacity:1}.icon-message-status-tick{display:none;width:16px;height:10px;background:url(../img/icons/Checks2_2x.png) 0 0 no-repeat;background-size:16px 10px;top:2px;position:relative}.icon-message-status-tick.message-status-unread-tick{background:url(../img/icons/Checks1_2x.png) 0 0 no-repeat;background-size:16px 10px}.im_message_date{color:#adadad;font-size:.85em;padding-bottom:20px}div.im_message_author,div.im_message_body{display:block;overflow:hidden}div.im_message_fwd_header{color:gray}.im_message_text{word-wrap:break-word}span.emoji{-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;*vertical-align:auto;*zoom:1;*display:inline;height:18px;width:18px;background-repeat:no-repeat;text-indent:-9999px}.emoji-spritesheet-0{background-size:486px 126px;background-image:url(../img/emojisprite_0.png)}.emoji-spritesheet-1{background-size:522px 72px;background-image:url(../img/emojisprite_1.png)}.emoji-spritesheet-2{background-size:594px 126px;background-image:url(../img/emojisprite_2.png)}.emoji-spritesheet-3{background-size:612px 54px;background-image:url(../img/emojisprite_3.png)}.emoji-spritesheet-4{background-size:612px 108px;background-image:url(../img/emojisprite_4.png)}.im_history_empty,.im_history_not_selected{text-align:center;color:#999;font-size:1.5em;padding:0 50px}.im_history_to_bottom .im_history_empty,.im_history_to_bottom .im_history_not_selected{display:none}.im_send_panel_wrap{max-width:526px;margin:0 auto;padding:10px 15px 22px}.im_send_form_wrap{position:relative}.im_send_form{max-width:389px;margin:0 auto;position:absolute;bottom:0;left:62px;right:62px}.im_submit{padding:5px 12px;font-size:13px;line-height:17px;min-width:60px}.im_send_dropbox_wrap{background:#FFF;display:none;padding:15px 10px;margin:1px;border-radius:4px;overflow:hidden;text-align:center;color:#999;position:absolute}textarea.im_message_field{font-size:12px;margin-bottom:10px;padding:6px;min-height:50px;height:50px;resize:none}.im_attach{cursor:pointer;display:block;overflow:hidden;position:relative;padding:0 2px;width:23px;height:24px;margin-top:4px;margin-left:20px}.icon-paperclip{display:inline-block;width:19px;height:23px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -12px -68px no-repeat;background-size:42px 680px;opacity:.8}.is_1x .icon-paperclip{background-image:url(../img/icons/IconsetW_1x.png)}.im_attach:hover .icon-paperclip{opacity:1}.im_attach:active .icon-paperclip{background-position:-12px -100px;opacity:1}.im_emoji_btn{cursor:pointer;padding:0;width:23px;height:23px;margin-top:4px}.icon-emoji{display:inline-block;width:23px;height:23px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -10px -4px no-repeat;background-size:42px 680px;opacity:.8}.is_1x .icon-emoji{background-image:url(../img/icons/IconsetW_1x.png)}.im_emoji_btn:hover .icon-emoji{opacity:1}.im_emoji_btn.on .icon-emoji,.im_emoji_btn:active .icon-emoji{background-position:-10px -36px;opacity:1}.im_attach_input,.im_media_attach_input{cursor:pointer;font-size:72px!important;opacity:.01;position:absolute;z-index:100;margin:0;padding:0;right:0}.im_media_attach{cursor:pointer;display:block;overflow:hidden;position:relative;padding:0;width:24px;height:22px;margin-top:5px;margin-left:20px}.icon-camera{display:inline-block;width:25px;height:21px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -9px -132px no-repeat;background-size:42px 680px;opacity:.8}.is_1x .icon-camera{background-image:url(../img/icons/IconsetW_1x.png)}.im_media_attach:hover .icon-camera{opacity:1}.im_media_attach:active .icon-camera{background-position:-9px -162px;opacity:1}.im_panel_own_photo,.im_panel_peer_photo{width:50px;height:50px;border-radius:3px;overflow:hidden}div.im_panel_peer_photo{cursor:pointer;margin-left:12px;height:55px}div.im_panel_own_photo{margin-right:12px}.im_panel_peer_online{background:#6DBF69;border:1px solid #FFF;display:block;width:11px;height:11px;border-radius:6px;overflow:hidden;position:absolute;margin-top:-7px;margin-left:43px}.status_online{background:#6DBF69;border:1px solid #FFF;display:block;width:11px;height:11px;border-radius:6px;overflow:hidden;position:absolute;margin-top:-7px;margin-left:33px}.media_modal_wrap .modal-body{padding:19px 18px 17px}a.img_fullsize{display:block;text-align:center}img.img_fullsize{margin:0 auto}.media_modal_info{color:#777;margin:20px 0 0}.media_modal_author{font-weight:700}.non_osx .media_modal_author{font-size:12px}.user_modal_window .modal-dialog{max-width:506px}.user_modal_wrap .modal-body{padding:23px 25px 30px}.settings_profile_photo_wrap{width:120px;margin-right:22px;margin-bottom:15px}.settings_profile_photo{position:relative;overflow:hidden}.settings_profile_photo_change_wrap{background:rgba(0,0,0,.6);padding:2px 5px;position:absolute;opacity:0;bottom:-30px;-webkit-transition:all ease-in-out .2s;transition:all ease-in-out .2s;width:120px}.settings_profile_photo:hover .settings_profile_photo_change_wrap{bottom:0;opacity:1}.settings_profile_photo_delete_link,.settings_profile_photo_loading,.settings_profile_photo_update_link{display:block;color:rgba(255,255,255,.8);text-align:center;padding:2px 0}.settings_profile_photo_delete_link:hover,.settings_profile_photo_update_link:hover{color:#FFF;text-decoration:none}.settings_profile_photo_update_link{position:relative;overflow:hidden}.user_modal_image_wrap{width:120px;margin-right:22px}.user_modal_image{width:120px;height:120px}.user_modal_header{font-weight:700;margin:0 0 5px}.user_modal_status{color:#999}.user_modal_actions_wrap{margin-top:8px}.user_modal_send_btn{border:0;background:#4E9CD8;font-size:12px;padding-left:16px;padding-right:16px;float:left}.user_modal_send_btn:hover{background:#539BD1}.user_modal_other_btn{margin-left:10px;float:left}.user_modal_other_btn .dropdown-toggle{border:0;font-size:12px}.user_modal_settings_wrap{margin-top:25px}.user_modal_notifications{font-weight:700}.user_modal_clear{margin-top:20px}.chat_modal_window .modal-dialog{max-width:506px}.chat_modal_wrap .modal-body{padding:23px 25px 15px}.chat_modal_photo_wrap{width:120px;margin-right:22px}.chat_modal_photo{position:relative;overflow:hidden}.chat_modal_photo_change_wrap{background:rgba(0,0,0,.6);padding:2px 5px;position:absolute;opacity:0;bottom:-30px;-webkit-transition:all ease-in-out .2s;transition:all ease-in-out .2s;width:120px}.chat_modal_photo:hover .chat_modal_photo_change_wrap{bottom:0;opacity:1}.chat_modal_photo_delete_link,.chat_modal_photo_loading,.chat_modal_photo_update_link{display:block;color:rgba(255,255,255,.8);text-align:center;padding:2px 0}.chat_modal_photo_delete_link:hover,.chat_modal_photo_update_link:hover{color:#FFF;text-decoration:none}.chat_modal_photo_update_link{position:relative;overflow:hidden}.chat_modal_header{margin:0 0 5px}.chat_modal_members_count{color:#999}.chat_modal_actions_wrap{margin-top:8px}.chat_modal_send_btn{border:0;background:#4E9CD8;font-size:12px;padding-left:16px;padding-right:16px;float:left}.chat_modal_send_btn:hover{background:#539BD1}.chat_modal_delete_btn{border:0;font-size:12px;padding-left:16px;padding-right:16px;float:left}.chat_modal_other_btn{margin-left:10px;float:left}.chat_modal_other_btn .dropdown-toggle{border:0;font-size:12px}.chat_modal_settings_wrap{margin-top:10px}.chat_modal_notifications{margin-top:25px;font-weight:700}.chat_modal_members_header{margin:20px 0 6px}.chat_modal_participant_wrap{padding:8px 7px;border-top:1px solid #F0F0F0}.chat_modal_participant_kick{padding:11px 0;display:block}.chat_modal_participant_name{display:block;color:#3C6E97;font-weight:700;margin:1px 0 2px}.non_osx .chat_modal_participant_name{font-size:12px}.chat_modal_participant_status{color:#999}.chat_modal_participant_photo{width:40px;height:40px;margin-right:10px;overflow:hidden}.chat_modal_members_forbidden{color:#999}.emoji-wysiwyg-editor:empty:before{content:attr(placeholder);color:#9aa2ab}.emoji-wysiwyg-editor:active:before,.emoji-wysiwyg-editor:focus:before{content:none}.emoji-wysiwyg-editor{font-size:12px;margin-bottom:10px;padding:6px;min-height:50px;height:auto;max-height:300px;overflow:auto;line-height:17px;border:1px solid #d9dbde;border-radius:2px;-webkit-box-shadow:none;box-shadow:none;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-webkit-user-select:text}.emoji-wysiwyg-editor img{width:20px;height:20px;vertical-align:middle;margin:-3px 0 0 0}.emoji-menu{position:absolute;z-index:999;width:220px;margin-left:-107px;margin-top:-252px;border:1px #dfdfdf solid;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;overflow:hidden;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1)}.emoji-items-wrap1{background:#FFF;padding:5px 2px 5px 5px}.emoji-items-wrap1 .emoji-menu-tabs{width:100%;margin-bottom:8px;margin-top:3px}.emoji-items-wrap1 .emoji-menu-tabs td{text-align:center;color:#fff;line-height:0}.emoji-menu-tabs .emoji-menu-tab{display:inline-block;width:24px;height:29px;background:url(../img/icons/IconsetSmiles.png) no-repeat;background-size:42px 350px}.is_1x .emoji-menu-tabs .emoji-menu-tab{background-image:url(../img/icons/IconsetSmiles_1x.png)}.emoji-menu-tabs .icon-smile{background-position:-9px -34px}.emoji-menu-tabs .icon-smile-selected{background-position:-9px -5px}.emoji-menu-tabs .icon-flower{background-position:-9px -145px}.emoji-menu-tabs .icon-flower-selected{background-position:-9px -118px}.emoji-menu-tabs .icon-bell{background-position:-9px -89px}.emoji-menu-tabs .icon-bell-selected{background-position:-9px -61px}.emoji-menu-tabs .icon-car{background-position:-9px -196px}.emoji-menu-tabs .icon-car-selected{background-position:-9px -170px}.emoji-menu-tabs .icon-grid{background-position:-9px -248px}.emoji-menu-tabs .icon-grid-selected{background-position:-9px -222px}.emoji-menu-tabs .icon-bell,.emoji-menu-tabs .icon-car,.emoji-menu-tabs .icon-flower,.emoji-menu-tabs .icon-grid,.emoji-menu-tabs .icon-smile{opacity:.7}.emoji-menu-tabs .icon-bell:hover,.emoji-menu-tabs .icon-car:hover,.emoji-menu-tabs .icon-flower:hover,.emoji-menu-tabs .icon-grid:hover,.emoji-menu-tabs .icon-smile:hover{opacity:1}.emoji-menu .emoji-items-wrap{position:relative;height:174px}.emoji-menu .emoji-items{padding-right:8px;outline:0!important}.emoji-menu img{width:20px;height:20px;vertical-align:middle;border:0 none}.emoji-menu .emoji-items a{margin:-1px 0 0 -1px;padding:5px;display:block;float:left;border-radius:2px}.emoji-menu .emoji-items a:hover{background-color:#edf2f5}.emoji-menu:after{content:' ';display:block;clear:left}.emoji-menu a .label{display:none}.emoji-menu-tail{display:none;background:url(../img/icons/IconsetW.png) -14px -268px no-repeat;background-size:42px 680px;width:14px;height:7px;margin:0 83px}.is_1x .emoji-menu-tail{background-image:url(../img/icons/IconsetW_1x.png)}.emoji-menu .nano>.pane{background:rgba(255,255,255,0);right:-2px}.emoji-menu .nano>.pane>.slider{background:#d1d1d1;margin:0 3px 0 4px}.error_modal_window .modal-dialog{max-width:350px}.error_modal_description{text-align:center;padding:20px;font-size:14px;line-height:160%}.error_modal_details textarea{display:block;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:10px;line-height:100%;white-space:pre-wrap;padding:4px;margin:10px 0;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px;width:100%;text-align:left}.error_modal_details div{padding:0 20px;font-size:13px;text-align:center}.error_modal_details div a{color:#999}.photo_modal_error{color:#999;position:absolute;width:100%;top:50%;margin-top:-20px;padding:0 20px;text-align:center;font-size:1.4em;line-height:160%}.video_full_error{border-radius:10px;overflow:hidden;background:rgba(0,0,0,.6);color:#FFF;position:absolute;top:50%;margin:-40px 10px 0;padding:10px;text-align:center;font-size:1.4em;line-height:160%}.settings_modal_window .modal-dialog{max-width:502px}.settings_profile_image_wrap{float:left;width:120px;margin-right:22px}.settings_profile_first_name,.settings_profile_last_name{width:180px;float:left}.settings_profile_first_name label,.settings_profile_last_name label{margin-bottom:3px}.settings_profile_first_name{margin-right:22px;margin-bottom:10px}.settings_profile_last_name{margin-right:10px;margin-bottom:15px}.settings_profile_save{padding-top:21px;float:left}.settings_profile_save_btn{width:50px}.settings_profile_edit_form{margin-bottom:0}.settings_profile_edit_form input{font-size:12px;line-height:normal;background:#F2F2F2;border:1px solid #F2F2F2;border-radius:0;padding:6px;margin:0}.settings_profile_edit_form input:active,.settings_profile_edit_form input:focus{background-color:#FFF}.settings_send_choose_form input{margin-top:2px}.settings_send_choose_form{margin-bottom:20px}.settings_user_phone,.settings_version{color:#999}.contacts_modal_window .modal-dialog{max-width:506px}.contacts_modal_wrap .modal-body{padding:23px 25px 15px}.contacts_modal_search{padding:0 0 14px;position:relative}.contacts_modal_search_field{font-size:12px;line-height:normal;background:#F2F2F2 url(../img/icons/IconsetW.png) -6px -205px no-repeat;background-size:42px 680px;border:1px solid #F2F2F2;border-radius:3px;padding:6px 20px 6px 30px;margin:0}.is_1x .contacts_modal_search_field{background-image:url(../img/icons/IconsetW_1x.png)}.contacts_modal_search_field:active,.contacts_modal_search_field:focus{background-color:#FFF}.contacts_modal_search_clear{position:absolute;right:9px;margin-top:-23px;color:#999;width:13px;height:13px;vertical-align:text-top;background:url(../img/icons/IconsetW.png) -15px -192px no-repeat;background-size:42px 680px;opacity:.6}.is_1x .contacts_modal_search_clear{background-image:url(../img/icons/IconsetW_1x.png)}.contacts_modal_search_clear:hover{opacity:1}.contacts_modal_col{margin-right:-17px}.contacts_scrollable_wrap{padding:0 17px 0 0;outline:0!important}.contacts_modal_members_list a.contacts_modal_contact{clear:both;overflow:hidden;color:#000;padding:8px 9px;border-radius:0}.contacts_modal_members_list a.contacts_modal_contact:hover{border-radius:2px;background:#f2f6fa}.contacts_modal_members_list .active a.contacts_modal_contact{border-radius:2px;background-color:#6490b1}.contacts_modal_members_list .active a.contacts_modal_contact:hover{background-color:#6490b1}.contacts_modal_contact_name{display:block;color:#3C6E97;font-weight:700;margin:1px 0 2px}.non_osx .contacts_modal_contact_name{font-size:12px}.contacts_modal_contact_photo{width:40px;height:40px;margin-right:10px;overflow:hidden}.contacts_modal_contact_status{color:#999}a.contacts_modal_contact:hover .contacts_modal_contact_status{color:#91a6ba}.contacts_modal_members_list .active .contacts_modal_contact_name,.contacts_modal_members_list .active a.contacts_modal_contact .contacts_modal_contact_status{color:#FFF}.icon-contact-tick{position:absolute;right:10px;top:22px;width:17px;height:15px;background:url(../img/icons/IconsetW.png) -13px -366px no-repeat;background-size:42px 680px;opacity:.5}.is_1x .icon-contact-tick{background-image:url(../img/icons/IconsetW_1x.png)}.contacts_modal_members_list a.contacts_modal_contact:hover .icon-contact-tick{background-position:-13px -366px;opacity:1}.contacts_modal_members_list .active .icon-contact-tick{background-position:-13px -458px!important;opacity:1}.contacts_modal_members_list .disabled{pointer-events:none}.contacts_modal_members_list .disabled .icon-contact-tick{display:none}.contacts_modal_actions,.contacts_modal_panel{padding-top:10px}.im_edit_panel_wrap{padding:10px 0 34px;margin:0 24px 0 12px}.im_edit_panel_border{display:block;margin:0 0 34px 3px;border-bottom:1px solid #EEE}.im_panel_to_top .im_edit_panel_wrap{background:#FFF;position:absolute;width:100%}.im_edit_cancel_link,.im_edit_flush_link{display:block;padding:6px 17px;border-radius:2px;overflow:hidden;margin:6px}.im_edit_cancel_link{float:left}.im_edit_flush_link{float:right}.im_edit_cancel_link:hover,.im_edit_flush_link:hover{background:#f2f6fa;text-decoration:none}.im_edit_selected_actions{text-align:center}.im_edit_delete_btn,.im_edit_forward_btn{border-radius:2px;padding:5px 17px;font-weight:400;font-size:12px;line-height:18px;margin:6px}.im_edit_panel_title{text-align:center;margin:0;font-size:14px;line-height:34px}.icon-delete{display:inline-block;width:12px;height:15px;background:url(../img/icons/IconsetW.png) -15px -319px no-repeat;background-size:42px 680px}.is_1x .icon-delete{background-image:url(../img/icons/IconsetW_1x.png)}.im_message_selected{background:#f2f6fa}.im_history_selectable .im_message_outer_wrap{cursor:pointer}.im_history_selectable .im_message_outer_wrap:hover{background:#f2f6fa}.im_history_selectable .im_message_outer_wrap:hover .im_message_date,.im_history_selectable .im_message_outer_wrap:hover .im_message_fwd_header,.im_message_selected .im_message_date,.im_message_selected .im_message_fwd_header{color:#91a6ba}.im_message_wrap{max-width:526px;padding:0 15px;margin:0 auto;position:relative}.im_content_message_select_area{display:none;cursor:pointer;position:absolute;width:112px;height:52px;margin:-8px 0 0 -112px;-webkit-user-select:text}@media (min-width:1024px){.im_content_message_select_area{display:block}}.icon-select-tick{display:none;width:26px;height:26px;margin:13px 0 0 40px;background:url(../img/icons/IconsetW.png) -9px -516px no-repeat;background-size:42px 680px}.is_1x .icon-select-tick{background-image:url(../img/icons/IconsetW_1x.png)}.im_content_message_select_area:hover .icon-select-tick,.im_history_selectable .icon-select-tick{display:inline-block}.im_content_message_select_area:hover .icon-select-tick,.im_history_selectable .im_message_outer_wrap:hover .icon-select-tick,.im_message_selected .icon-select-tick{background-position:-9px -481px;opacity:.5}.im_message_selected .icon-select-tick{opacity:1!important}@media (min-width:480px){.tg_page_head .navbar-quick-nav{display:none}}@media (max-width:480px){.tg_page_head .navbar>.container .navbar-brand{padding-left:9px}.im_history_panel_info_link{display:none}.im_history_panel_edit_link{margin-right:0}.im_dialogs_panel_dropdown .dropdown-menu{right:0;left:auto}}@media (min-height:768px){.user_modal_window .modal-dialog{margin-top:150px}}@media (max-width:480px){.login_form_wrap{border-radius:0;max-width:auto;box-shadow:none;-webkit-box-shadow:none;margin:30px auto 20px}.im_panel_own_photo,.im_panel_peer_photo{display:none}.im_history_panel_wrap{margin:0 15px}.im_send_panel_wrap{padding:10px 15px}.icon-select-tick{margin:10px 0 0 -24px}.im_content_message_wrap{margin-left:0}.im_history_typing{padding:0 15px 0 60px}.im_send_form{left:0;right:0;max-width:none}.im_edit_cancel_link,.im_edit_delete_btn,.im_edit_flush_link,.im_edit_forward_btn{padding-left:5px;padding-right:5px;margin:6px 4px}.im_edit_panel_border{margin:0 18px 22px 3px}.im_edit_panel_wrap{margin:0 5px;padding-bottom:34px}}@media (max-height:480px){.im_page_footer{display:none}.im_send_panel_wrap{padding-bottom:10px}.im_edit_panel_wrap{padding-bottom:18px}.emoji-wysiwyg-editor{min-height:34px;max-height:150px}}@media (max-width:640px){.im_dialog_peer{white-space:normal;height:2.84em}.im_dialog_message{display:none}}@media (max-width:900px){.icon-message-status{z-index:10;margin-left:-5px;border-radius:0;height:34px;width:2px;margin-top:1px;border:0}}@media (max-width:480px){.im_dialogs_col_wrap,.im_page_peer_not_selected .im_history_col_wrap{display:none}.im_page_peer_not_selected .im_dialogs_col_wrap{display:block;border-right:0}.im_page_peer_not_selected .im_dialogs_col{margin-right:0}.im_page_peer_not_selected .im_dialogs_col_wrap .pane{width:12px;right:0}.im_page_peer_not_selected .im_dialogs_col_wrap .pane>.slider{border-radius:3px;margin:0 3px}.im_dialogs_scrollable_wrap{padding:0 12px}.im_dialogs_col_wrap,.im_history_col_wrap{float:none;width:auto;max-width:auto;min-width:auto}.im_page_peer_not_selected .im_dialog_peer{white-space:nowrap;height:auto}.im_page_peer_not_selected .im_dialog_message{display:block}}.peer_select_window .modal-dialog{max-width:506px}.peer_select_modal_wrap .modal-body{padding:10px 10px 15px}.user_color_1,.user_color_1:hover{color:#b3577a}.user_color_2,.user_color_2:hover{color:#539e4f}.user_color_3,.user_color_3:hover{color:#ae9661}.user_color_4,.user_color_4:hover{color:#4979a3}.user_color_5,.user_color_5:hover{color:#8365ab}.user_color_6,.user_color_6:hover{color:#b7635d}.user_color_7,.user_color_7:hover{color:#5397b4}.user_color_8,.user_color_8:hover{color:#c07844}.im_dialogs_contacts_wrap h5{color:#999;font-size:13px;margin-left:8px}.tooltip-inner{background:rgba(0,0,0,.8)}.tooltip-arrow{opacity:.8}.im_dialogs_panel_dropdown{margin-left:8px}.im_dialogs_panel_dropdown .dropdown-toggle{background:#F2F2F2;display:block;border-radius:2px;overflow:hidden;padding:11px 12px;width:38px;height:34px}.im_dialogs_panel_dropdown .dropdown-toggle .icon-bar{background:#b3b3b3;display:block;height:2px;margin-bottom:3px}.im_dialogs_panel_dropdown .dropdown-toggle .icon-bar:last-child{margin-bottom:0}.im_dialogs_panel_dropdown.open .dropdown-toggle{background:#6690b0}.im_dialogs_panel_dropdown.open .dropdown-toggle .icon-bar{background:#fff}.import_contact_modal_window .modal-dialog{max-width:380px}.import_modal_field_wrap{margin-bottom:10px}.modal-content-animated{-webkit-transition:margin-top linear .2s;transition:margin-top linear .2s}.loading_dots{display:inline-block;font-size:1em;line-height:1;padding:.125em 0 .175em .15em}.loading_dots span{border:.125rem solid;border-radius:50%;display:inline-block;height:.2rem;width:.2rem;margin-left:.2rem;-webkit-animation:loading_dots .8s linear infinite;-moz-animation:loading_dots .8s linear infinite;-ms-animation:loading_dots .8s linear infinite;animation:loading_dots .8s linear infinite}.loading_dots span:nth-child(2){-webkit-animation-delay:.2s;-moz-animation-delay:.2s;-ms-animation-delay:.2s;animation-delay:.2s}.loading_dots span:nth-child(3){-webkit-animation-delay:.4s;-moz-animation-delay:.4s;-ms-animation-delay:.4s;animation-delay:.4s}@-webkit-keyframes loading_dots{0%{opacity:0}50%{opacity:1}100%{opacity:0}}@-moz-keyframes loading_dots{0%{opacity:0}50%{opacity:1}100%{opacity:0}}@-ms-keyframes loading_dots{0%{opacity:0}50%{opacity:1}100%{opacity:0}}@keyframes loading_dots{0%{opacity:0}50%{opacity:1}100%{opacity:0}} \ No newline at end of file diff --git a/js/app.js b/js/app.js index c2929b3c..995cf2b6 100644 --- a/js/app.js +++ b/js/app.js @@ -19,14 +19,14 @@ var CryptoJS=CryptoJS||function(t,e){var r={},i=r.lib={},n=i.Base=function(){fun this.goog={provide:function(){},math:{}},goog.provide("goog.math.Long"),goog.math.Long=function(o,t){this.low_=0|o,this.high_=0|t},goog.math.Long.IntCache_={},goog.math.Long.fromInt=function(o){if(o>=-128&&128>o){var t=goog.math.Long.IntCache_[o];if(t)return t}var g=new goog.math.Long(0|o,0>o?-1:0);return o>=-128&&128>o&&(goog.math.Long.IntCache_[o]=g),g},goog.math.Long.fromNumber=function(o){return isNaN(o)||!isFinite(o)?goog.math.Long.ZERO:o<=-goog.math.Long.TWO_PWR_63_DBL_?goog.math.Long.MIN_VALUE:o+1>=goog.math.Long.TWO_PWR_63_DBL_?goog.math.Long.MAX_VALUE:0>o?goog.math.Long.fromNumber(-o).negate():new goog.math.Long(o%goog.math.Long.TWO_PWR_32_DBL_|0,o/goog.math.Long.TWO_PWR_32_DBL_|0)},goog.math.Long.fromBits=function(o,t){return new goog.math.Long(o,t)},goog.math.Long.fromString=function(o,t){if(0==o.length)throw Error("number format error: empty string");var g=t||10;if(2>g||g>36)throw Error("radix out of range: "+g);if("-"==o.charAt(0))return goog.math.Long.fromString(o.substring(1),g).negate();if(o.indexOf("-")>=0)throw Error('number format error: interior "-" character: '+o);for(var n=goog.math.Long.fromNumber(Math.pow(g,8)),h=goog.math.Long.ZERO,r=0;ri){var e=goog.math.Long.fromNumber(Math.pow(g,i));h=h.multiply(e).add(goog.math.Long.fromNumber(a))}else h=h.multiply(n),h=h.add(goog.math.Long.fromNumber(a))}return h},goog.math.Long.TWO_PWR_16_DBL_=65536,goog.math.Long.TWO_PWR_24_DBL_=1<<24,goog.math.Long.TWO_PWR_32_DBL_=goog.math.Long.TWO_PWR_16_DBL_*goog.math.Long.TWO_PWR_16_DBL_,goog.math.Long.TWO_PWR_31_DBL_=goog.math.Long.TWO_PWR_32_DBL_/2,goog.math.Long.TWO_PWR_48_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_16_DBL_,goog.math.Long.TWO_PWR_64_DBL_=goog.math.Long.TWO_PWR_32_DBL_*goog.math.Long.TWO_PWR_32_DBL_,goog.math.Long.TWO_PWR_63_DBL_=goog.math.Long.TWO_PWR_64_DBL_/2,goog.math.Long.ZERO=goog.math.Long.fromInt(0),goog.math.Long.ONE=goog.math.Long.fromInt(1),goog.math.Long.NEG_ONE=goog.math.Long.fromInt(-1),goog.math.Long.MAX_VALUE=goog.math.Long.fromBits(-1,2147483647),goog.math.Long.MIN_VALUE=goog.math.Long.fromBits(0,-2147483648),goog.math.Long.TWO_PWR_24_=goog.math.Long.fromInt(1<<24),goog.math.Long.prototype.toInt=function(){return this.low_},goog.math.Long.prototype.toNumber=function(){return this.high_*goog.math.Long.TWO_PWR_32_DBL_+this.getLowBitsUnsigned()},goog.math.Long.prototype.toString=function(o){var t=o||10;if(2>t||t>36)throw Error("radix out of range: "+t);if(this.isZero())return"0";if(this.isNegative()){if(this.equals(goog.math.Long.MIN_VALUE)){var g=goog.math.Long.fromNumber(t),n=this.div(g),h=n.multiply(g).subtract(this);return n.toString(t)+h.toInt().toString(t)}return"-"+this.negate().toString(t)}for(var r=goog.math.Long.fromNumber(Math.pow(t,6)),h=this,i="";;){var a=h.div(r),e=h.subtract(a.multiply(r)).toInt(),m=e.toString(t);if(h=a,h.isZero())return m+i;for(;m.length<6;)m="0"+m;i=""+m+i}},goog.math.Long.prototype.getHighBits=function(){return this.high_},goog.math.Long.prototype.getLowBits=function(){return this.low_},goog.math.Long.prototype.getLowBitsUnsigned=function(){return this.low_>=0?this.low_:goog.math.Long.TWO_PWR_32_DBL_+this.low_},goog.math.Long.prototype.getNumBitsAbs=function(){if(this.isNegative())return this.equals(goog.math.Long.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var o=0!=this.high_?this.high_:this.low_,t=31;t>0&&0==(o&1<0},goog.math.Long.prototype.greaterThanOrEqual=function(o){return this.compare(o)>=0},goog.math.Long.prototype.compare=function(o){if(this.equals(o))return 0;var t=this.isNegative(),g=o.isNegative();return t&&!g?-1:!t&&g?1:this.subtract(o).isNegative()?-1:1},goog.math.Long.prototype.negate=function(){return this.equals(goog.math.Long.MIN_VALUE)?goog.math.Long.MIN_VALUE:this.not().add(goog.math.Long.ONE)},goog.math.Long.prototype.add=function(o){var t=this.high_>>>16,g=65535&this.high_,n=this.low_>>>16,h=65535&this.low_,r=o.high_>>>16,i=65535&o.high_,a=o.low_>>>16,e=65535&o.low_,m=0,s=0,_=0,L=0;return L+=h+e,_+=L>>>16,L&=65535,_+=n+a,s+=_>>>16,_&=65535,s+=g+i,m+=s>>>16,s&=65535,m+=t+r,m&=65535,goog.math.Long.fromBits(_<<16|L,m<<16|s)},goog.math.Long.prototype.subtract=function(o){return this.add(o.negate())},goog.math.Long.prototype.multiply=function(o){if(this.isZero())return goog.math.Long.ZERO;if(o.isZero())return goog.math.Long.ZERO;if(this.equals(goog.math.Long.MIN_VALUE))return o.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO;if(o.equals(goog.math.Long.MIN_VALUE))return this.isOdd()?goog.math.Long.MIN_VALUE:goog.math.Long.ZERO;if(this.isNegative())return o.isNegative()?this.negate().multiply(o.negate()):this.negate().multiply(o).negate();if(o.isNegative())return this.multiply(o.negate()).negate();if(this.lessThan(goog.math.Long.TWO_PWR_24_)&&o.lessThan(goog.math.Long.TWO_PWR_24_))return goog.math.Long.fromNumber(this.toNumber()*o.toNumber());var t=this.high_>>>16,g=65535&this.high_,n=this.low_>>>16,h=65535&this.low_,r=o.high_>>>16,i=65535&o.high_,a=o.low_>>>16,e=65535&o.low_,m=0,s=0,_=0,L=0;return L+=h*e,_+=L>>>16,L&=65535,_+=n*e,s+=_>>>16,_&=65535,_+=h*a,s+=_>>>16,_&=65535,s+=g*e,m+=s>>>16,s&=65535,s+=n*a,m+=s>>>16,s&=65535,s+=h*i,m+=s>>>16,s&=65535,m+=t*e+g*a+n*i+h*r,m&=65535,goog.math.Long.fromBits(_<<16|L,m<<16|s)},goog.math.Long.prototype.div=function(o){if(o.isZero())throw Error("division by zero");if(this.isZero())return goog.math.Long.ZERO;if(this.equals(goog.math.Long.MIN_VALUE)){if(o.equals(goog.math.Long.ONE)||o.equals(goog.math.Long.NEG_ONE))return goog.math.Long.MIN_VALUE;if(o.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.ONE;var t=this.shiftRight(1),g=t.div(o).shiftLeft(1);if(g.equals(goog.math.Long.ZERO))return o.isNegative()?goog.math.Long.ONE:goog.math.Long.NEG_ONE;var n=this.subtract(o.multiply(g)),h=g.add(n.div(o));return h}if(o.equals(goog.math.Long.MIN_VALUE))return goog.math.Long.ZERO;if(this.isNegative())return o.isNegative()?this.negate().div(o.negate()):this.negate().div(o).negate();if(o.isNegative())return this.div(o.negate()).negate();for(var r=goog.math.Long.ZERO,n=this;n.greaterThanOrEqual(o);){for(var g=Math.max(1,Math.floor(n.toNumber()/o.toNumber())),i=Math.ceil(Math.log(g)/Math.LN2),a=48>=i?1:Math.pow(2,i-48),e=goog.math.Long.fromNumber(g),m=e.multiply(o);m.isNegative()||m.greaterThan(n);)g-=a,e=goog.math.Long.fromNumber(g),m=e.multiply(o);e.isZero()&&(e=goog.math.Long.ONE),r=r.add(e),n=n.subtract(m)}return r},goog.math.Long.prototype.modulo=function(o){return this.subtract(this.div(o).multiply(o))},goog.math.Long.prototype.not=function(){return goog.math.Long.fromBits(~this.low_,~this.high_)},goog.math.Long.prototype.and=function(o){return goog.math.Long.fromBits(this.low_&o.low_,this.high_&o.high_)},goog.math.Long.prototype.or=function(o){return goog.math.Long.fromBits(this.low_|o.low_,this.high_|o.high_)},goog.math.Long.prototype.xor=function(o){return goog.math.Long.fromBits(this.low_^o.low_,this.high_^o.high_)},goog.math.Long.prototype.shiftLeft=function(o){if(o&=63,0==o)return this;var t=this.low_;if(32>o){var g=this.high_;return goog.math.Long.fromBits(t<>>32-o)}return goog.math.Long.fromBits(0,t<o){var g=this.low_;return goog.math.Long.fromBits(g>>>o|t<<32-o,t>>o)}return goog.math.Long.fromBits(t>>o-32,t>=0?0:-1)},goog.math.Long.prototype.shiftRightUnsigned=function(o){if(o&=63,0==o)return this;var t=this.high_;if(32>o){var g=this.low_;return goog.math.Long.fromBits(g>>>o|t<<32-o,t>>>o)}return 32==o?goog.math.Long.fromBits(t,0):goog.math.Long.fromBits(t>>>o-32,0)}; Config=window.Config||{},Config.Schema=Config.Schema||{},Config.Schema.MTProto={constructors:[{id:"481674261",predicate:"vector",params:[],type:"Vector t"},{id:"85337187",predicate:"resPQ",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"pq",type:"bytes"},{name:"server_public_key_fingerprints",type:"Vector"}],type:"ResPQ"},{id:"-2083955988",predicate:"p_q_inner_data",params:[{name:"pq",type:"bytes"},{name:"p",type:"bytes"},{name:"q",type:"bytes"},{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce",type:"int256"}],type:"P_Q_inner_data"},{id:"2043348061",predicate:"server_DH_params_fail",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash",type:"int128"}],type:"Server_DH_Params"},{id:"-790100132",predicate:"server_DH_params_ok",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"encrypted_answer",type:"bytes"}],type:"Server_DH_Params"},{id:"-1249309254",predicate:"server_DH_inner_data",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"g",type:"int"},{name:"dh_prime",type:"bytes"},{name:"g_a",type:"bytes"},{name:"server_time",type:"int"}],type:"Server_DH_inner_data"},{id:"1715713620",predicate:"client_DH_inner_data",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"retry_id",type:"long"},{name:"g_b",type:"bytes"}],type:"Client_DH_Inner_Data"},{id:"1003222836",predicate:"dh_gen_ok",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash1",type:"int128"}],type:"Set_client_DH_params_answer"},{id:"1188831161",predicate:"dh_gen_retry",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash2",type:"int128"}],type:"Set_client_DH_params_answer"},{id:"-1499615742",predicate:"dh_gen_fail",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"new_nonce_hash3",type:"int128"}],type:"Set_client_DH_params_answer"},{id:"-212046591",predicate:"rpc_result",params:[{name:"req_msg_id",type:"long"},{name:"result",type:"Object"}],type:"RpcResult"},{id:"558156313",predicate:"rpc_error",params:[{name:"error_code",type:"int"},{name:"error_message",type:"string"}],type:"RpcError"},{id:"1579864942",predicate:"rpc_answer_unknown",params:[],type:"RpcDropAnswer"},{id:"-847714938",predicate:"rpc_answer_dropped_running",params:[],type:"RpcDropAnswer"},{id:"-1539647305",predicate:"rpc_answer_dropped",params:[{name:"msg_id",type:"long"},{name:"seq_no",type:"int"},{name:"bytes",type:"int"}],type:"RpcDropAnswer"},{id:"155834844",predicate:"future_salt",params:[{name:"valid_since",type:"int"},{name:"valid_until",type:"int"},{name:"salt",type:"long"}],type:"FutureSalt"},{id:"-1370486635",predicate:"future_salts",params:[{name:"req_msg_id",type:"long"},{name:"now",type:"int"},{name:"salts",type:"vector"}],type:"FutureSalts"},{id:"880243653",predicate:"pong",params:[{name:"msg_id",type:"long"},{name:"ping_id",type:"long"}],type:"Pong"},{id:"-501201412",predicate:"destroy_session_ok",params:[{name:"session_id",type:"long"}],type:"DestroySessionRes"},{id:"1658015945",predicate:"destroy_session_none",params:[{name:"session_id",type:"long"}],type:"DestroySessionRes"},{id:"-1631450872",predicate:"new_session_created",params:[{name:"first_msg_id",type:"long"},{name:"unique_id",type:"long"},{name:"server_salt",type:"long"}],type:"NewSession"},{id:"1945237724",predicate:"msg_container",params:[{name:"messages",type:"vector<%Message>"}],type:"MessageContainer"},{id:"1538843921",predicate:"message",params:[{name:"msg_id",type:"long"},{name:"seqno",type:"int"},{name:"bytes",type:"int"},{name:"body",type:"Object"}],type:"Message"},{id:"-530561358",predicate:"msg_copy",params:[{name:"orig_message",type:"Message"}],type:"MessageCopy"},{id:"812830625",predicate:"gzip_packed",params:[{name:"packed_data",type:"bytes"}],type:"Object"},{id:"1658238041",predicate:"msgs_ack",params:[{name:"msg_ids",type:"Vector"}],type:"MsgsAck"},{id:"-1477445615",predicate:"bad_msg_notification",params:[{name:"bad_msg_id",type:"long"},{name:"bad_msg_seqno",type:"int"},{name:"error_code",type:"int"}],type:"BadMsgNotification"},{id:"-307542917",predicate:"bad_server_salt",params:[{name:"bad_msg_id",type:"long"},{name:"bad_msg_seqno",type:"int"},{name:"error_code",type:"int"},{name:"new_server_salt",type:"long"}],type:"BadMsgNotification"},{id:"2105940488",predicate:"msg_resend_req",params:[{name:"msg_ids",type:"Vector"}],type:"MsgResendReq"},{id:"-630588590",predicate:"msgs_state_req",params:[{name:"msg_ids",type:"Vector"}],type:"MsgsStateReq"},{id:"81704317",predicate:"msgs_state_info",params:[{name:"req_msg_id",type:"long"},{name:"info",type:"bytes"}],type:"MsgsStateInfo"},{id:"-1933520591",predicate:"msgs_all_info",params:[{name:"msg_ids",type:"Vector"},{name:"info",type:"bytes"}],type:"MsgsAllInfo"},{id:"661470918",predicate:"msg_detailed_info",params:[{name:"msg_id",type:"long"},{name:"answer_msg_id",type:"long"},{name:"bytes",type:"int"},{name:"status",type:"int"}],type:"MsgDetailedInfo"},{id:"-2137147681",predicate:"msg_new_detailed_info",params:[{name:"answer_msg_id",type:"long"},{name:"bytes",type:"int"},{name:"status",type:"int"}],type:"MsgDetailedInfo"}],methods:[{id:"1615239032",method:"req_pq",params:[{name:"nonce",type:"int128"}],type:"ResPQ"},{id:"-686627650",method:"req_DH_params",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"p",type:"bytes"},{name:"q",type:"bytes"},{name:"public_key_fingerprint",type:"long"},{name:"encrypted_data",type:"bytes"}],type:"Server_DH_Params"},{id:"-184262881",method:"set_client_DH_params",params:[{name:"nonce",type:"int128"},{name:"server_nonce",type:"int128"},{name:"encrypted_data",type:"bytes"}],type:"Set_client_DH_params_answer"},{id:"1491380032",method:"rpc_drop_answer",params:[{name:"req_msg_id",type:"long"}],type:"RpcDropAnswer"},{id:"-1188971260",method:"get_future_salts",params:[{name:"num",type:"int"}],type:"FutureSalts"},{id:"2059302892",method:"ping",params:[{name:"ping_id",type:"long"}],type:"Pong"},{id:"-213746804",method:"ping_delay_disconnect",params:[{name:"ping_id",type:"long"},{name:"disconnect_delay",type:"int"}],type:"Pong"},{id:"-414113498",method:"destroy_session",params:[{name:"session_id",type:"long"}],type:"DestroySessionRes"},{id:"-1835453025",method:"http_wait",params:[{name:"max_delay",type:"int"},{name:"wait_after",type:"int"},{name:"max_wait",type:"int"}],type:"HttpWait"}]},Config.Schema.API={constructors:[{id:"-1132882121",predicate:"boolFalse",params:[],type:"Bool"},{id:"-1720552011",predicate:"boolTrue",params:[],type:"Bool"},{id:"481674261",predicate:"vector",params:[],type:"Vector t"},{id:"-994444869",predicate:"error",params:[{name:"code",type:"int"},{name:"text",type:"string"}],type:"Error"},{id:"1450380236",predicate:"null",params:[],type:"Null"},{id:"2134579434",predicate:"inputPeerEmpty",params:[],type:"InputPeer"},{id:"2107670217",predicate:"inputPeerSelf",params:[],type:"InputPeer"},{id:"270785512",predicate:"inputPeerContact",params:[{name:"user_id",type:"int"}],type:"InputPeer"},{id:"-1690012891",predicate:"inputPeerForeign",params:[{name:"user_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputPeer"},{id:"396093539",predicate:"inputPeerChat",params:[{name:"chat_id",type:"int"}],type:"InputPeer"},{id:"-1182234929",predicate:"inputUserEmpty",params:[],type:"InputUser"},{id:"-138301121",predicate:"inputUserSelf",params:[],type:"InputUser"},{id:"-2031530139",predicate:"inputUserContact",params:[{name:"user_id",type:"int"}],type:"InputUser"},{id:"1700689151",predicate:"inputUserForeign",params:[{name:"user_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputUser"},{id:"-208488460",predicate:"inputPhoneContact",params:[{name:"client_id",type:"long"},{name:"phone",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"InputContact"},{id:"-181407105",predicate:"inputFile",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"name",type:"string"},{name:"md5_checksum",type:"string"}],type:"InputFile"},{id:"-1771768449",predicate:"inputMediaEmpty",params:[],type:"InputMedia"},{id:"767900285",predicate:"inputMediaUploadedPhoto",params:[{name:"file",type:"InputFile"}],type:"InputMedia"},{id:"-1893027092",predicate:"inputMediaPhoto",params:[{name:"id",type:"InputPhoto"}],type:"InputMedia"},{id:"-104578748",predicate:"inputMediaGeoPoint",params:[{name:"geo_point",type:"InputGeoPoint"}],type:"InputMedia"},{id:"-1494984313",predicate:"inputMediaContact",params:[{name:"phone_number",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"InputMedia"},{id:"1212668202",predicate:"inputMediaUploadedVideo",params:[{name:"file",type:"InputFile"},{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"}],type:"InputMedia"},{id:"-433544891",predicate:"inputMediaUploadedThumbVideo",params:[{name:"file",type:"InputFile"},{name:"thumb",type:"InputFile"},{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"}],type:"InputMedia"},{id:"2130852582",predicate:"inputMediaVideo",params:[{name:"id",type:"InputVideo"}],type:"InputMedia"},{id:"480546647",predicate:"inputChatPhotoEmpty",params:[],type:"InputChatPhoto"},{id:"-1809496270",predicate:"inputChatUploadedPhoto",params:[{name:"file",type:"InputFile"},{name:"crop",type:"InputPhotoCrop"}],type:"InputChatPhoto"},{id:"-1293828344",predicate:"inputChatPhoto",params:[{name:"id",type:"InputPhoto"},{name:"crop",type:"InputPhotoCrop"}],type:"InputChatPhoto"},{id:"-457104426",predicate:"inputGeoPointEmpty",params:[],type:"InputGeoPoint"},{id:"-206066487",predicate:"inputGeoPoint",params:[{name:"lat",type:"double"},{name:"long",type:"double"}],type:"InputGeoPoint"},{id:"483901197",predicate:"inputPhotoEmpty",params:[],type:"InputPhoto"},{id:"-74070332",predicate:"inputPhoto",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputPhoto"},{id:"1426648181",predicate:"inputVideoEmpty",params:[],type:"InputVideo"},{id:"-296249774",predicate:"inputVideo",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputVideo"},{id:"342061462",predicate:"inputFileLocation",params:[{name:"volume_id",type:"long"},{name:"local_id",type:"int"},{name:"secret",type:"long"}],type:"InputFileLocation"},{id:"1023632620",predicate:"inputVideoFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"-1377390588",predicate:"inputPhotoCropAuto",params:[],type:"InputPhotoCrop"},{id:"-644787419",predicate:"inputPhotoCrop",params:[{name:"crop_left",type:"double"},{name:"crop_top",type:"double"},{name:"crop_width",type:"double"}],type:"InputPhotoCrop"},{id:"1996904104",predicate:"inputAppEvent",params:[{name:"time",type:"double"},{name:"type",type:"string"},{name:"peer",type:"long"},{name:"data",type:"string"}],type:"InputAppEvent"},{id:"-1649296275",predicate:"peerUser",params:[{name:"user_id",type:"int"}],type:"Peer"},{id:"-1160714821",predicate:"peerChat",params:[{name:"chat_id",type:"int"}],type:"Peer"},{id:"-1432995067",predicate:"storage.fileUnknown",params:[],type:"storage.FileType"},{id:"8322574",predicate:"storage.fileJpeg",params:[],type:"storage.FileType"},{id:"-891180321",predicate:"storage.fileGif",params:[],type:"storage.FileType"},{id:"172975040",predicate:"storage.filePng",params:[],type:"storage.FileType"},{id:"-1373745011",predicate:"storage.filePdf",params:[],type:"storage.FileType"},{id:"1384777335",predicate:"storage.fileMp3",params:[],type:"storage.FileType"},{id:"1258941372",predicate:"storage.fileMov",params:[],type:"storage.FileType"},{id:"1086091090",predicate:"storage.filePartial",params:[],type:"storage.FileType"},{id:"-1278304028",predicate:"storage.fileMp4",params:[],type:"storage.FileType"},{id:"276907596",predicate:"storage.fileWebp",params:[],type:"storage.FileType"},{id:"2086234950",predicate:"fileLocationUnavailable",params:[{name:"volume_id",type:"long"},{name:"local_id",type:"int"},{name:"secret",type:"long"}],type:"FileLocation"},{id:"1406570614",predicate:"fileLocation",params:[{name:"dc_id",type:"int"},{name:"volume_id",type:"long"},{name:"local_id",type:"int"},{name:"secret",type:"long"}],type:"FileLocation"},{id:"537022650",predicate:"userEmpty",params:[{name:"id",type:"int"}],type:"User"},{id:"1912944108",predicate:"userSelf",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"phone",type:"string"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"},{name:"inactive",type:"Bool"}],type:"User"},{id:"-218397927",predicate:"userContact",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"access_hash",type:"long"},{name:"phone",type:"string"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"}],type:"User"},{id:"585682608",predicate:"userRequest",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"access_hash",type:"long"},{name:"phone",type:"string"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"}],type:"User"},{id:"1377093789",predicate:"userForeign",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"access_hash",type:"long"},{name:"photo",type:"UserProfilePhoto"},{name:"status",type:"UserStatus"}],type:"User"},{id:"-1298475060",predicate:"userDeleted",params:[{name:"id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"User"},{id:"1326562017",predicate:"userProfilePhotoEmpty",params:[],type:"UserProfilePhoto"},{id:"-715532088",predicate:"userProfilePhoto",params:[{name:"photo_id",type:"long"},{name:"photo_small",type:"FileLocation"},{name:"photo_big",type:"FileLocation"}],type:"UserProfilePhoto"},{id:"164646985",predicate:"userStatusEmpty",params:[],type:"UserStatus"},{id:"-306628279",predicate:"userStatusOnline",params:[{name:"expires",type:"int"}],type:"UserStatus"},{id:"9203775",predicate:"userStatusOffline",params:[{name:"was_online",type:"int"}],type:"UserStatus"},{id:"-1683826688",predicate:"chatEmpty",params:[{name:"id",type:"int"}],type:"Chat"},{id:"1855757255",predicate:"chat",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"photo",type:"ChatPhoto"},{name:"participants_count",type:"int"},{name:"date",type:"int"},{name:"left",type:"Bool"},{name:"version",type:"int"}],type:"Chat"},{id:"-83047359",predicate:"chatForbidden",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"date",type:"int"}],type:"Chat"},{id:"1661886910",predicate:"chatFull",params:[{name:"id",type:"int"},{name:"participants",type:"ChatParticipants"},{name:"chat_photo",type:"Photo"},{name:"notify_settings",type:"PeerNotifySettings"}],type:"ChatFull"},{id:"-925415106",predicate:"chatParticipant",params:[{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"date",type:"int"}],type:"ChatParticipant"},{id:"265468810",predicate:"chatParticipantsForbidden",params:[{name:"chat_id",type:"int"}],type:"ChatParticipants"},{id:"2017571861",predicate:"chatParticipants",params:[{name:"chat_id",type:"int"},{name:"admin_id",type:"int"},{name:"participants",type:"Vector"},{name:"version",type:"int"}],type:"ChatParticipants"},{id:"935395612",predicate:"chatPhotoEmpty",params:[],type:"ChatPhoto"},{id:"1632839530",predicate:"chatPhoto",params:[{name:"photo_small",type:"FileLocation"},{name:"photo_big",type:"FileLocation"}],type:"ChatPhoto"},{id:"-2082087340",predicate:"messageEmpty",params:[{name:"id",type:"int"}],type:"Message"},{id:"585853626",predicate:"message",params:[{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"to_id",type:"Peer"},{name:"out",type:"Bool"},{name:"unread",type:"Bool"},{name:"date",type:"int"},{name:"message",type:"string"},{name:"media",type:"MessageMedia"}],type:"Message"},{id:"99903492",predicate:"messageForwarded",params:[{name:"id",type:"int"},{name:"fwd_from_id",type:"int"},{name:"fwd_date",type:"int"},{name:"from_id",type:"int"},{name:"to_id",type:"Peer"},{name:"out",type:"Bool"},{name:"unread",type:"Bool"},{name:"date",type:"int"},{name:"message",type:"string"},{name:"media",type:"MessageMedia"}],type:"Message"},{id:"-1618124613",predicate:"messageService",params:[{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"to_id",type:"Peer"},{name:"out",type:"Bool"},{name:"unread",type:"Bool"},{name:"date",type:"int"},{name:"action",type:"MessageAction"}],type:"Message"},{id:"1038967584",predicate:"messageMediaEmpty",params:[],type:"MessageMedia"},{id:"-926655958",predicate:"messageMediaPhoto",params:[{name:"photo",type:"Photo"}],type:"MessageMedia"},{id:"-1563278704",predicate:"messageMediaVideo",params:[{name:"video",type:"Video"}],type:"MessageMedia"},{id:"1457575028",predicate:"messageMediaGeo",params:[{name:"geo",type:"GeoPoint"}],type:"MessageMedia"},{id:"1585262393",predicate:"messageMediaContact",params:[{name:"phone_number",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"user_id",type:"int"}],type:"MessageMedia"},{id:"694364726",predicate:"messageMediaUnsupported",params:[{name:"bytes",type:"bytes"}],type:"MessageMedia"},{id:"-1230047312",predicate:"messageActionEmpty",params:[],type:"MessageAction"},{id:"-1503425638",predicate:"messageActionChatCreate",params:[{name:"title",type:"string"},{name:"users",type:"Vector"}],type:"MessageAction"},{id:"-1247687078",predicate:"messageActionChatEditTitle",params:[{name:"title",type:"string"}],type:"MessageAction"},{id:"2144015272",predicate:"messageActionChatEditPhoto",params:[{name:"photo",type:"Photo"}],type:"MessageAction"},{id:"-1780220945",predicate:"messageActionChatDeletePhoto",params:[],type:"MessageAction"},{id:"1581055051",predicate:"messageActionChatAddUser",params:[{name:"user_id",type:"int"}],type:"MessageAction"},{id:"-1297179892",predicate:"messageActionChatDeleteUser",params:[{name:"user_id",type:"int"}],type:"MessageAction"},{id:"558533855",predicate:"dialog",params:[{name:"peer",type:"Peer"},{name:"top_message",type:"int"},{name:"unread_count",type:"int"}],type:"Dialog"},{id:"590459437",predicate:"photoEmpty",params:[{name:"id",type:"long"}],type:"Photo"},{id:"582313809",predicate:"photo",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"caption",type:"string"},{name:"geo",type:"GeoPoint"},{name:"sizes",type:"Vector"}],type:"Photo"},{id:"236446268",predicate:"photoSizeEmpty",params:[{name:"type",type:"string"}],type:"PhotoSize"},{id:"2009052699",predicate:"photoSize",params:[{name:"type",type:"string"},{name:"location",type:"FileLocation"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"size",type:"int"}],type:"PhotoSize"},{id:"-374917894",predicate:"photoCachedSize",params:[{name:"type",type:"string"},{name:"location",type:"FileLocation"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"bytes",type:"bytes"}],type:"PhotoSize"},{id:"-1056548696",predicate:"videoEmpty",params:[{name:"id",type:"long"}],type:"Video"},{id:"1510253727",predicate:"video",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"caption",type:"string"},{name:"duration",type:"int"},{name:"size",type:"int"},{name:"thumb",type:"PhotoSize"},{name:"dc_id",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"}],type:"Video"},{id:"286776671",predicate:"geoPointEmpty",params:[],type:"GeoPoint"},{id:"541710092",predicate:"geoPoint",params:[{name:"long",type:"double"},{name:"lat",type:"double"}],type:"GeoPoint"},{id:"-486486981",predicate:"auth.checkedPhone",params:[{name:"phone_registered",type:"Bool"},{name:"phone_invited",type:"Bool"}],type:"auth.CheckedPhone"},{id:"-269659687",predicate:"auth.sentCode",params:[{name:"phone_registered",type:"Bool"},{name:"phone_code_hash",type:"string"},{name:"send_call_timeout",type:"int"},{name:"is_password",type:"Bool"}],type:"auth.SentCode"},{id:"-155815004",predicate:"auth.authorization",params:[{name:"expires",type:"int"},{name:"user",type:"User"}],type:"auth.Authorization"},{id:"-543777747",predicate:"auth.exportedAuthorization",params:[{name:"id",type:"int"},{name:"bytes",type:"bytes"}],type:"auth.ExportedAuthorization"},{id:"-1195615476",predicate:"inputNotifyPeer",params:[{name:"peer",type:"InputPeer"}],type:"InputNotifyPeer"},{id:"423314455",predicate:"inputNotifyUsers",params:[],type:"InputNotifyPeer"},{id:"1251338318",predicate:"inputNotifyChats",params:[],type:"InputNotifyPeer"},{id:"-1540769658",predicate:"inputNotifyAll",params:[],type:"InputNotifyPeer"},{id:"-265263912",predicate:"inputPeerNotifyEventsEmpty",params:[],type:"InputPeerNotifyEvents"},{id:"-395694988",predicate:"inputPeerNotifyEventsAll",params:[],type:"InputPeerNotifyEvents"},{id:"1185074840",predicate:"inputPeerNotifySettings",params:[{name:"mute_until",type:"int"},{name:"sound",type:"string"},{name:"show_previews",type:"Bool"},{name:"events_mask",type:"int"}],type:"InputPeerNotifySettings"},{id:"-1378534221",predicate:"peerNotifyEventsEmpty",params:[],type:"PeerNotifyEvents"},{id:"1830677896",predicate:"peerNotifyEventsAll",params:[],type:"PeerNotifyEvents"},{id:"1889961234",predicate:"peerNotifySettingsEmpty",params:[],type:"PeerNotifySettings"},{id:"-1923214866",predicate:"peerNotifySettings",params:[{name:"mute_until",type:"int"},{name:"sound",type:"string"},{name:"show_previews",type:"Bool"},{name:"events_mask",type:"int"}],type:"PeerNotifySettings"},{id:"-860866985",predicate:"wallPaper",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"sizes",type:"Vector"},{name:"color",type:"int"}],type:"WallPaper"},{id:"1997575642",predicate:"userFull",params:[{name:"user",type:"User"},{name:"link",type:"contacts.Link"},{name:"profile_photo",type:"Photo"},{name:"notify_settings",type:"PeerNotifySettings"},{name:"blocked",type:"Bool"},{name:"real_first_name",type:"string"},{name:"real_last_name",type:"string"}],type:"UserFull"},{id:"-116274796",predicate:"contact",params:[{name:"user_id",type:"int"},{name:"mutual",type:"Bool"}],type:"Contact"},{id:"-805141448",predicate:"importedContact",params:[{name:"user_id",type:"int"},{name:"client_id",type:"long"}],type:"ImportedContact"},{id:"1444661369",predicate:"contactBlocked",params:[{name:"user_id",type:"int"},{name:"date",type:"int"}],type:"ContactBlocked"},{id:"-360210539",predicate:"contactFound",params:[{name:"user_id",type:"int"}],type:"ContactFound"},{id:"1038193057",predicate:"contactSuggested",params:[{name:"user_id",type:"int"},{name:"mutual_contacts",type:"int"}],type:"ContactSuggested"},{id:"-1434994573",predicate:"contactStatus",params:[{name:"user_id",type:"int"},{name:"expires",type:"int"}],type:"ContactStatus"},{id:"909233996",predicate:"chatLocated",params:[{name:"chat_id",type:"int"},{name:"distance",type:"int"}],type:"ChatLocated"},{id:"322183672",predicate:"contacts.foreignLinkUnknown",params:[],type:"contacts.ForeignLink"},{id:"-1484775609",predicate:"contacts.foreignLinkRequested",params:[{name:"has_phone",type:"Bool"}],type:"contacts.ForeignLink"},{id:"468356321",predicate:"contacts.foreignLinkMutual",params:[],type:"contacts.ForeignLink"},{id:"-768992160",predicate:"contacts.myLinkEmpty",params:[],type:"contacts.MyLink"},{id:"1818882030",predicate:"contacts.myLinkRequested",params:[{name:"contact",type:"Bool"}],type:"contacts.MyLink"},{id:"-1035932711",predicate:"contacts.myLinkContact",params:[],type:"contacts.MyLink"},{id:"-322001931",predicate:"contacts.link",params:[{name:"my_link",type:"contacts.MyLink"},{name:"foreign_link",type:"contacts.ForeignLink"},{name:"user",type:"User"}],type:"contacts.Link"},{id:"1871416498",predicate:"contacts.contacts",params:[{name:"contacts",type:"Vector"},{name:"users",type:"Vector"}],type:"contacts.Contacts"},{id:"-1219778094",predicate:"contacts.contactsNotModified",params:[],type:"contacts.Contacts"},{id:"-775091636",predicate:"contacts.importedContacts",params:[{name:"imported",type:"Vector"},{name:"users",type:"Vector"}],type:"contacts.ImportedContacts"},{id:"471043349",predicate:"contacts.blocked",params:[{name:"blocked",type:"Vector"},{name:"users",type:"Vector"}],type:"contacts.Blocked"},{id:"-1878523231",predicate:"contacts.blockedSlice",params:[{name:"count",type:"int"},{name:"blocked",type:"Vector"},{name:"users",type:"Vector"}],type:"contacts.Blocked"},{id:"90570766",predicate:"contacts.found",params:[{name:"results",type:"Vector"},{name:"users",type:"Vector"}],type:"contacts.Found"},{id:"1447681221",predicate:"contacts.suggested",params:[{name:"results",type:"Vector"},{name:"users",type:"Vector"}],type:"contacts.Suggested"},{id:"364538944",predicate:"messages.dialogs",params:[{name:"dialogs",type:"Vector"},{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"messages.Dialogs"},{id:"1910543603",predicate:"messages.dialogsSlice",params:[{name:"count",type:"int"},{name:"dialogs",type:"Vector"},{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"messages.Dialogs"},{id:"-1938715001",predicate:"messages.messages",params:[{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"messages.Messages"},{id:"189033187",predicate:"messages.messagesSlice",params:[{name:"count",type:"int"},{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"messages.Messages"},{id:"1062078024",predicate:"messages.messageEmpty",params:[],type:"messages.Message"},{id:"-7289833",predicate:"messages.message",params:[{name:"message",type:"Message"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"messages.Message"},{id:"-1768654661",predicate:"messages.statedMessages",params:[{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"},{name:"pts",type:"int"},{name:"seq",type:"int"}],type:"messages.StatedMessages"},{id:"-797251802",predicate:"messages.statedMessage",params:[{name:"message",type:"Message"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"},{name:"pts",type:"int"},{name:"seq",type:"int"}],type:"messages.StatedMessage"},{id:"-772484260",predicate:"messages.sentMessage",params:[{name:"id",type:"int"},{name:"date",type:"int"},{name:"pts",type:"int"},{name:"seq",type:"int"}],type:"messages.SentMessage"},{id:"1089011754",predicate:"messages.chat",params:[{name:"chat",type:"Chat"},{name:"users",type:"Vector"}],type:"messages.Chat"},{id:"-2125411368",predicate:"messages.chats",params:[{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"messages.Chats"},{id:"-438840932",predicate:"messages.chatFull",params:[{name:"full_chat",type:"ChatFull"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"messages.ChatFull"},{id:"-1210173710",predicate:"messages.affectedHistory",params:[{name:"pts",type:"int"},{name:"seq",type:"int"},{name:"offset",type:"int"}],type:"messages.AffectedHistory"},{id:"1474492012",predicate:"inputMessagesFilterEmpty",params:[],type:"MessagesFilter"},{id:"-1777752804",predicate:"inputMessagesFilterPhotos",params:[],type:"MessagesFilter"},{id:"-1614803355",predicate:"inputMessagesFilterVideo",params:[],type:"MessagesFilter"},{id:"1458172132",predicate:"inputMessagesFilterPhotoVideo",params:[],type:"MessagesFilter"},{id:"-1629621880",predicate:"inputMessagesFilterDocument",params:[],type:"MessagesFilter"},{id:"20626867",predicate:"updateNewMessage",params:[{name:"message",type:"Message"},{name:"pts",type:"int"}],type:"Update"},{id:"1318109142",predicate:"updateMessageID",params:[{name:"id",type:"int"},{name:"random_id",type:"long"}],type:"Update"},{id:"-966484431",predicate:"updateReadMessages",params:[{name:"messages",type:"Vector"},{name:"pts",type:"int"}],type:"Update"},{id:"-1456734682",predicate:"updateDeleteMessages",params:[{name:"messages",type:"Vector"},{name:"pts",type:"int"}],type:"Update"},{id:"-782376883",predicate:"updateRestoreMessages",params:[{name:"messages",type:"Vector"},{name:"pts",type:"int"}],type:"Update"},{id:"1806337288",predicate:"updateUserTyping",params:[{name:"user_id",type:"int"}],type:"Update"},{id:"1011273702",predicate:"updateChatUserTyping",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"}],type:"Update"},{id:"125178264",predicate:"updateChatParticipants",params:[{name:"participants",type:"ChatParticipants"}],type:"Update"},{id:"469489699",predicate:"updateUserStatus",params:[{name:"user_id",type:"int"},{name:"status",type:"UserStatus"}],type:"Update"},{id:"-635250259",predicate:"updateUserName",params:[{name:"user_id",type:"int"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"Update"},{id:"-1791935732",predicate:"updateUserPhoto",params:[{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"photo",type:"UserProfilePhoto"},{name:"previous",type:"Bool"}],type:"Update"},{id:"628472761",predicate:"updateContactRegistered",params:[{name:"user_id",type:"int"},{name:"date",type:"int"}],type:"Update"},{id:"1369737882",predicate:"updateContactLink",params:[{name:"user_id",type:"int"},{name:"my_link",type:"contacts.MyLink"},{name:"foreign_link",type:"contacts.ForeignLink"}],type:"Update"},{id:"1869154659",predicate:"updateActivation",params:[{name:"user_id",type:"int"}],type:"Update"},{id:"-1895411046",predicate:"updateNewAuthorization",params:[{name:"auth_key_id",type:"long"},{name:"date",type:"int"},{name:"device",type:"string"},{name:"location",type:"string"}],type:"Update"},{id:"-1519637954",predicate:"updates.state",params:[{name:"pts",type:"int"},{name:"qts",type:"int"},{name:"date",type:"int"},{name:"seq",type:"int"},{name:"unread_count",type:"int"}],type:"updates.State"},{id:"1567990072",predicate:"updates.differenceEmpty",params:[{name:"date",type:"int"},{name:"seq",type:"int"}],type:"updates.Difference"},{id:"16030880",predicate:"updates.difference",params:[{name:"new_messages",type:"Vector"},{name:"new_encrypted_messages",type:"Vector"},{name:"other_updates",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"},{name:"state",type:"updates.State"}],type:"updates.Difference"},{id:"-1459938943",predicate:"updates.differenceSlice",params:[{name:"new_messages",type:"Vector"},{name:"new_encrypted_messages",type:"Vector"},{name:"other_updates",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"},{name:"intermediate_state",type:"updates.State"}],type:"updates.Difference"},{id:"-484987010",predicate:"updatesTooLong",params:[],type:"Updates"},{id:"-738961532",predicate:"updateShortMessage",params:[{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"message",type:"string"},{name:"pts",type:"int"},{name:"date",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"724548942",predicate:"updateShortChatMessage",params:[{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"chat_id",type:"int"},{name:"message",type:"string"},{name:"pts",type:"int"},{name:"date",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"2027216577",predicate:"updateShort",params:[{name:"update",type:"Update"},{name:"date",type:"int"}],type:"Updates"},{id:"1918567619",predicate:"updatesCombined",params:[{name:"updates",type:"Vector"},{name:"users",type:"Vector"},{name:"chats",type:"Vector"},{name:"date",type:"int"},{name:"seq_start",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"1957577280",predicate:"updates",params:[{name:"updates",type:"Vector"},{name:"users",type:"Vector"},{name:"chats",type:"Vector"},{name:"date",type:"int"},{name:"seq",type:"int"}],type:"Updates"},{id:"-1916114267",predicate:"photos.photos",params:[{name:"photos",type:"Vector"},{name:"users",type:"Vector"}],type:"photos.Photos"},{id:"352657236",predicate:"photos.photosSlice",params:[{name:"count",type:"int"},{name:"photos",type:"Vector"},{name:"users",type:"Vector"}],type:"photos.Photos"},{id:"539045032",predicate:"photos.photo",params:[{name:"photo",type:"Photo"},{name:"users",type:"Vector"}],type:"photos.Photo"},{id:"157948117",predicate:"upload.file",params:[{name:"type",type:"storage.FileType"},{name:"mtime",type:"int"},{name:"bytes",type:"bytes"}],type:"upload.File"},{id:"784507964",predicate:"dcOption",params:[{name:"id",type:"int"},{name:"hostname",type:"string"},{name:"ip_address",type:"string"},{name:"port",type:"int"}],type:"DcOption"},{id:"777313652",predicate:"config",params:[{name:"date",type:"int"},{name:"test_mode",type:"Bool"},{name:"this_dc",type:"int"},{name:"dc_options",type:"Vector"},{name:"chat_size_max",type:"int"},{name:"broadcast_size_max",type:"int"}],type:"Config"},{id:"-1910892683",predicate:"nearestDc",params:[{name:"country",type:"string"},{name:"this_dc",type:"int"},{name:"nearest_dc",type:"int"}],type:"NearestDc"},{id:"-1987579119",predicate:"help.appUpdate",params:[{name:"id",type:"int"},{name:"critical",type:"Bool"},{name:"url",type:"string"},{name:"text",type:"string"}],type:"help.AppUpdate"},{id:"-1000708810",predicate:"help.noAppUpdate",params:[],type:"help.AppUpdate"},{id:"415997816",predicate:"help.inviteText",params:[{name:"message",type:"string"}],type:"help.InviteText"},{id:"1047852486",predicate:"messages.statedMessagesLinks",params:[{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"},{name:"links",type:"Vector"},{name:"pts",type:"int"},{name:"seq",type:"int"}],type:"messages.StatedMessages"},{id:"-1448138623",predicate:"messages.statedMessageLink",params:[{name:"message",type:"Message"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"},{name:"links",type:"Vector"},{name:"pts",type:"int"},{name:"seq",type:"int"}],type:"messages.StatedMessage"},{id:"-371504577",predicate:"messages.sentMessageLink",params:[{name:"id",type:"int"},{name:"date",type:"int"},{name:"pts",type:"int"},{name:"seq",type:"int"},{name:"links",type:"Vector"}],type:"messages.SentMessage"},{id:"1960072954",predicate:"inputGeoChat",params:[{name:"chat_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputGeoChat"},{id:"1301143240",predicate:"inputNotifyGeoChatPeer",params:[{name:"peer",type:"InputGeoChat"}],type:"InputNotifyPeer"},{id:"1978329690",predicate:"geoChat",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"title",type:"string"},{name:"address",type:"string"},{name:"venue",type:"string"},{name:"geo",type:"GeoPoint"},{name:"photo",type:"ChatPhoto"},{name:"participants_count",type:"int"},{name:"date",type:"int"},{name:"checked_in",type:"Bool"},{name:"version",type:"int"}],type:"Chat"},{id:"1613830811",predicate:"geoChatMessageEmpty",params:[{name:"chat_id",type:"int"},{name:"id",type:"int"}],type:"GeoChatMessage"},{id:"1158019297",predicate:"geoChatMessage",params:[{name:"chat_id",type:"int"},{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"date",type:"int"},{name:"message",type:"string"},{name:"media",type:"MessageMedia"}],type:"GeoChatMessage"},{id:"-749755826",predicate:"geoChatMessageService",params:[{name:"chat_id",type:"int"},{name:"id",type:"int"},{name:"from_id",type:"int"},{name:"date",type:"int"},{name:"action",type:"MessageAction"}],type:"GeoChatMessage"},{id:"397498251",predicate:"geochats.statedMessage",params:[{name:"message",type:"GeoChatMessage"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"},{name:"seq",type:"int"}],type:"geochats.StatedMessage"},{id:"1224651367",predicate:"geochats.located",params:[{name:"results",type:"Vector"},{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"geochats.Located"},{id:"-783127119",predicate:"geochats.messages",params:[{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"geochats.Messages"},{id:"-1135057944",predicate:"geochats.messagesSlice",params:[{name:"count",type:"int"},{name:"messages",type:"Vector"},{name:"chats",type:"Vector"},{name:"users",type:"Vector"}],type:"geochats.Messages"},{id:"1862504124",predicate:"messageActionGeoChatCreate",params:[{name:"title",type:"string"},{name:"address",type:"string"}],type:"MessageAction"},{id:"209540062",predicate:"messageActionGeoChatCheckin",params:[],type:"MessageAction"},{id:"1516823543",predicate:"updateNewGeoChatMessage",params:[{name:"message",type:"GeoChatMessage"}],type:"Update"},{id:"1662091044",predicate:"wallPaperSolid",params:[{name:"id",type:"int"},{name:"title",type:"string"},{name:"bg_color",type:"int"},{name:"color",type:"int"}],type:"WallPaper"},{id:"314359194",predicate:"updateNewEncryptedMessage",params:[{name:"message",type:"EncryptedMessage"},{name:"qts",type:"int"}],type:"Update"},{id:"386986326",predicate:"updateEncryptedChatTyping",params:[{name:"chat_id",type:"int"}],type:"Update"},{id:"-1264392051",predicate:"updateEncryption",params:[{name:"chat",type:"EncryptedChat"},{name:"date",type:"int"}],type:"Update"},{id:"956179895",predicate:"updateEncryptedMessagesRead",params:[{name:"chat_id",type:"int"},{name:"max_date",type:"int"},{name:"date",type:"int"}],type:"Update"},{id:"-1417756512",predicate:"encryptedChatEmpty",params:[{name:"id",type:"int"}],type:"EncryptedChat"},{id:"1006044124",predicate:"encryptedChatWaiting",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"admin_id",type:"int"},{name:"participant_id",type:"int"}],type:"EncryptedChat"},{id:"-931638658",predicate:"encryptedChatRequested",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"admin_id",type:"int"},{name:"participant_id",type:"int"},{name:"g_a",type:"bytes"}],type:"EncryptedChat"},{id:"-94974410",predicate:"encryptedChat",params:[{name:"id",type:"int"},{name:"access_hash",type:"long"},{name:"date",type:"int"},{name:"admin_id",type:"int"},{name:"participant_id",type:"int"},{name:"g_a_or_b",type:"bytes"},{name:"key_fingerprint",type:"long"}],type:"EncryptedChat"},{id:"332848423",predicate:"encryptedChatDiscarded",params:[{name:"id",type:"int"}],type:"EncryptedChat"},{id:"-247351839",predicate:"inputEncryptedChat",params:[{name:"chat_id",type:"int"},{name:"access_hash",type:"long"}],type:"InputEncryptedChat"},{id:"-1038136962",predicate:"encryptedFileEmpty",params:[],type:"EncryptedFile"},{id:"1248893260",predicate:"encryptedFile",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"size",type:"int"},{name:"dc_id",type:"int"},{name:"key_fingerprint",type:"int"}],type:"EncryptedFile"},{id:"406307684",predicate:"inputEncryptedFileEmpty",params:[],type:"InputEncryptedFile"},{id:"1690108678",predicate:"inputEncryptedFileUploaded",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"md5_checksum",type:"string"},{name:"key_fingerprint",type:"int"}],type:"InputEncryptedFile"},{id:"1511503333",predicate:"inputEncryptedFile",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputEncryptedFile"},{id:"-182231723",predicate:"inputEncryptedFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"-317144808",predicate:"encryptedMessage",params:[{name:"random_id",type:"long"},{name:"chat_id",type:"int"},{name:"date",type:"int"},{name:"bytes",type:"bytes"},{name:"file",type:"EncryptedFile"}],type:"EncryptedMessage"},{id:"594758406",predicate:"encryptedMessageService",params:[{name:"random_id",type:"long"},{name:"chat_id",type:"int"},{name:"date",type:"int"},{name:"bytes",type:"bytes"}],type:"EncryptedMessage"},{id:"-1717290801",predicate:"decryptedMessageLayer",params:[{name:"layer",type:"int"},{name:"message",type:"DecryptedMessage"}],type:"DecryptedMessageLayer"},{id:"528568095",predicate:"decryptedMessage",params:[{name:"random_id",type:"long"},{name:"random_bytes",type:"bytes"},{name:"message",type:"string"},{name:"media",type:"DecryptedMessageMedia"}],type:"DecryptedMessage"},{id:"-1438109059",predicate:"decryptedMessageService",params:[{name:"random_id",type:"long"},{name:"random_bytes",type:"bytes"},{name:"action",type:"DecryptedMessageAction"}],type:"DecryptedMessage"},{id:"144661578",predicate:"decryptedMessageMediaEmpty",params:[],type:"DecryptedMessageMedia"},{id:"846826124",predicate:"decryptedMessageMediaPhoto",params:[{name:"thumb",type:"bytes"},{name:"thumb_w",type:"int"},{name:"thumb_h",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"size",type:"int"},{name:"key",type:"bytes"},{name:"iv",type:"bytes"}],type:"DecryptedMessageMedia"},{id:"1290694387",predicate:"decryptedMessageMediaVideo",params:[{name:"thumb",type:"bytes"},{name:"thumb_w",type:"int"},{name:"thumb_h",type:"int"},{name:"duration",type:"int"},{name:"w",type:"int"},{name:"h",type:"int"},{name:"size",type:"int"},{name:"key",type:"bytes"},{name:"iv",type:"bytes"}],type:"DecryptedMessageMedia"},{id:"893913689",predicate:"decryptedMessageMediaGeoPoint",params:[{name:"lat",type:"double"},{name:"long",type:"double"}],type:"DecryptedMessageMedia"},{id:"1485441687",predicate:"decryptedMessageMediaContact",params:[{name:"phone_number",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"},{name:"user_id",type:"int"}],type:"DecryptedMessageMedia"},{id:"-1586283796",predicate:"decryptedMessageActionSetMessageTTL",params:[{name:"ttl_seconds",type:"int"}],type:"DecryptedMessageAction"},{id:"-1058912715",predicate:"messages.dhConfigNotModified",params:[{name:"random",type:"bytes"}],type:"messages.DhConfig"},{id:"740433629",predicate:"messages.dhConfig",params:[{name:"g",type:"int"},{name:"p",type:"bytes"},{name:"version",type:"int"},{name:"random",type:"bytes"}],type:"messages.DhConfig"},{id:"1443858741",predicate:"messages.sentEncryptedMessage",params:[{name:"date",type:"int"}],type:"messages.SentEncryptedMessage"},{id:"-1802240206",predicate:"messages.sentEncryptedFile",params:[{name:"date",type:"int"},{name:"file",type:"EncryptedFile"}],type:"messages.SentEncryptedMessage"},{id:"-95482955",predicate:"inputFileBig",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"name",type:"string"}],type:"InputFile"},{id:"767652808",predicate:"inputEncryptedFileBigUploaded",params:[{name:"id",type:"long"},{name:"parts",type:"int"},{name:"key_fingerprint",type:"int"}],type:"InputEncryptedFile"},{id:"974056226",predicate:"updateChatParticipantAdd",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"inviter_id",type:"int"},{name:"version",type:"int"}],type:"Update"},{id:"1851755554",predicate:"updateChatParticipantDelete",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"int"},{name:"version",type:"int"}],type:"Update"},{id:"-1906403213",predicate:"updateDcOptions",params:[{name:"dc_options",type:"Vector"}],type:"Update"},{id:"1638323254",predicate:"inputMediaUploadedAudio",params:[{name:"file",type:"InputFile"},{name:"duration",type:"int"}],type:"InputMedia"},{id:"-1986820223",predicate:"inputMediaAudio",params:[{name:"id",type:"InputAudio"}],type:"InputMedia"},{id:"887592125",predicate:"inputMediaUploadedDocument",params:[{name:"file",type:"InputFile"},{name:"file_name",type:"string"},{name:"mime_type",type:"string"}],type:"InputMedia"},{id:"1044831837",predicate:"inputMediaUploadedThumbDocument",params:[{name:"file",type:"InputFile"},{name:"thumb",type:"InputFile"},{name:"file_name",type:"string"},{name:"mime_type",type:"string"}],type:"InputMedia"},{id:"-779818943",predicate:"inputMediaDocument",params:[{name:"id",type:"InputDocument"}],type:"InputMedia"},{id:"802824708",predicate:"messageMediaDocument",params:[{name:"document",type:"Document"}],type:"MessageMedia"},{id:"-961117440",predicate:"messageMediaAudio",params:[{name:"audio",type:"Audio"}],type:"MessageMedia"},{id:"-648356732",predicate:"inputAudioEmpty",params:[],type:"InputAudio"},{id:"2010398975",predicate:"inputAudio",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputAudio"},{id:"1928391342",predicate:"inputDocumentEmpty",params:[],type:"InputDocument"},{id:"410618194",predicate:"inputDocument",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputDocument"},{id:"1960591437",predicate:"inputAudioFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"1313188841",predicate:"inputDocumentFileLocation",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"}],type:"InputFileLocation"},{id:"-1332395189",predicate:"decryptedMessageMediaDocument",params:[{name:"thumb",type:"bytes"},{name:"thumb_w",type:"int"},{name:"thumb_h",type:"int"},{name:"file_name",type:"string"},{name:"mime_type",type:"string"},{name:"size",type:"int"},{name:"key",type:"bytes"},{name:"iv",type:"bytes"}],type:"DecryptedMessageMedia"},{id:"1619031439",predicate:"decryptedMessageMediaAudio",params:[{name:"duration",type:"int"},{name:"size",type:"int"},{name:"key",type:"bytes"},{name:"iv",type:"bytes"}],type:"DecryptedMessageMedia"},{id:"1483311320",predicate:"audioEmpty",params:[{name:"id",type:"long"}],type:"Audio"},{id:"1114908135",predicate:"audio",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"duration",type:"int"},{name:"size",type:"int"},{name:"dc_id",type:"int"}],type:"Audio"},{id:"922273905",predicate:"documentEmpty",params:[{name:"id",type:"long"}],type:"Document"},{id:"-1627626714",predicate:"document",params:[{name:"id",type:"long"},{name:"access_hash",type:"long"},{name:"user_id",type:"int"},{name:"date",type:"int"},{name:"file_name",type:"string"},{name:"mime_type",type:"string"},{name:"size",type:"int"},{name:"thumb",type:"PhotoSize"},{name:"dc_id",type:"int"}],type:"Document"},{id:"398898678",predicate:"help.support",params:[{name:"phone_number",type:"string"},{name:"user",type:"User"}],type:"help.Support"}],methods:[{id:"-878758099",method:"invokeAfterMsg",params:[{name:"msg_id",type:"long"},{name:"query",type:"!X"}],type:"X"},{id:"1036301552",method:"invokeAfterMsgs",params:[{name:"msg_ids",type:"Vector"},{name:"query",type:"!X"}],type:"X"},{id:"1877286395",method:"auth.checkPhone",params:[{name:"phone_number",type:"string"}],type:"auth.CheckedPhone"},{id:"1988976461",method:"auth.sendCode",params:[{name:"phone_number",type:"string"},{name:"sms_type",type:"int"},{name:"api_id",type:"int"},{name:"api_hash",type:"string"},{name:"lang_code",type:"string"}],type:"auth.SentCode"},{id:"63247716",method:"auth.sendCall",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"}],type:"Bool"},{id:"453408308",method:"auth.signUp",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"},{name:"phone_code",type:"string"},{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"auth.Authorization"},{id:"-1126886015",method:"auth.signIn",params:[{name:"phone_number",type:"string"},{name:"phone_code_hash",type:"string"},{name:"phone_code",type:"string"}],type:"auth.Authorization"},{id:"1461180992",method:"auth.logOut",params:[],type:"Bool"},{id:"-1616179942",method:"auth.resetAuthorizations",params:[],type:"Bool"},{id:"1998331287",method:"auth.sendInvites",params:[{name:"phone_numbers",type:"Vector"},{name:"message",type:"string"}],type:"Bool"},{id:"-440401971",method:"auth.exportAuthorization",params:[{name:"dc_id",type:"int"}],type:"auth.ExportedAuthorization"},{id:"-470837741",method:"auth.importAuthorization",params:[{name:"id",type:"int"},{name:"bytes",type:"bytes"}],type:"auth.Authorization"},{id:"1147957548",method:"account.registerDevice",params:[{name:"token_type",type:"int"},{name:"token",type:"string"},{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"app_sandbox",type:"Bool"},{name:"lang_code",type:"string"}],type:"Bool"},{id:"1707432768",method:"account.unregisterDevice",params:[{name:"token_type",type:"int"},{name:"token",type:"string"}],type:"Bool"},{id:"-2067899501",method:"account.updateNotifySettings",params:[{name:"peer",type:"InputNotifyPeer"},{name:"settings",type:"InputPeerNotifySettings"}],type:"Bool"},{id:"313765169",method:"account.getNotifySettings",params:[{name:"peer",type:"InputNotifyPeer"}],type:"PeerNotifySettings"},{id:"-612493497",method:"account.resetNotifySettings",params:[],type:"Bool"},{id:"-259486360",method:"account.updateProfile",params:[{name:"first_name",type:"string"},{name:"last_name",type:"string"}],type:"User"},{id:"1713919532",method:"account.updateStatus",params:[{name:"offline",type:"Bool"}],type:"Bool"},{id:"-1068696894",method:"account.getWallPapers",params:[],type:"Vector"},{id:"227648840",method:"users.getUsers",params:[{name:"id",type:"Vector"}],type:"Vector"},{id:"-902781519",method:"users.getFullUser",params:[{name:"id",type:"InputUser"}],type:"UserFull"},{id:"-995929106",method:"contacts.getStatuses",params:[],type:"Vector"},{id:"583445000",method:"contacts.getContacts",params:[{name:"hash",type:"string"}],type:"contacts.Contacts"},{id:"-634342611",method:"contacts.importContacts",params:[{name:"contacts",type:"Vector"},{name:"replace",type:"Bool"}],type:"contacts.ImportedContacts"},{id:"301470424",method:"contacts.search",params:[{name:"q",type:"string"},{name:"limit",type:"int"}],type:"contacts.Found"},{id:"-847825880",method:"contacts.getSuggested",params:[{name:"limit",type:"int"}],type:"contacts.Suggested"},{id:"-1902823612",method:"contacts.deleteContact",params:[{name:"id",type:"InputUser"}],type:"contacts.Link"},{id:"1504393374",method:"contacts.deleteContacts",params:[{name:"id",type:"Vector"}],type:"Bool"},{id:"858475004",method:"contacts.block",params:[{name:"id",type:"InputUser"}],type:"Bool"},{id:"-448724803",method:"contacts.unblock",params:[{name:"id",type:"InputUser"}],type:"Bool"},{id:"-176409329",method:"contacts.getBlocked",params:[{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"contacts.Blocked"},{id:"1109588596",method:"messages.getMessages",params:[{name:"id",type:"Vector"}],type:"messages.Messages"},{id:"-321970698",method:"messages.getDialogs",params:[{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"messages.Dialogs"},{id:"-1834885329",method:"messages.getHistory",params:[{name:"peer",type:"InputPeer"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"messages.Messages"},{id:"132772523",method:"messages.search",params:[{name:"peer",type:"InputPeer"},{name:"q",type:"string"},{name:"filter",type:"MessagesFilter"},{name:"min_date",type:"int"},{name:"max_date",type:"int"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"messages.Messages"},{id:"-1336990448",method:"messages.readHistory",params:[{name:"peer",type:"InputPeer"},{name:"max_id",type:"int"},{name:"offset",type:"int"}],type:"messages.AffectedHistory"},{id:"-185009311",method:"messages.deleteHistory",params:[{name:"peer",type:"InputPeer"},{name:"offset",type:"int"}],type:"messages.AffectedHistory"},{id:"351460618",method:"messages.deleteMessages",params:[{name:"id",type:"Vector"}],type:"Vector"},{id:"962567550",method:"messages.restoreMessages",params:[{name:"id",type:"Vector"}],type:"Vector"},{id:"682347368",method:"messages.receivedMessages",params:[{name:"max_id",type:"int"}],type:"Vector"},{id:"1905801705",method:"messages.setTyping",params:[{name:"peer",type:"InputPeer"},{name:"typing",type:"Bool"}],type:"Bool"},{id:"1289620139",method:"messages.sendMessage",params:[{name:"peer",type:"InputPeer"},{name:"message",type:"string"},{name:"random_id",type:"long"}],type:"messages.SentMessage"},{id:"-1547149962",method:"messages.sendMedia",params:[{name:"peer",type:"InputPeer"},{name:"media",type:"InputMedia"},{name:"random_id",type:"long"}],type:"messages.StatedMessage"},{id:"1363988751",method:"messages.forwardMessages",params:[{name:"peer",type:"InputPeer"},{name:"id",type:"Vector"}],type:"messages.StatedMessages"},{id:"1013621127",method:"messages.getChats",params:[{name:"id",type:"Vector"}],type:"messages.Chats"},{id:"998448230",method:"messages.getFullChat",params:[{name:"chat_id",type:"int"}],type:"messages.ChatFull"},{id:"-1262720843",method:"messages.editChatTitle",params:[{name:"chat_id",type:"int"},{name:"title",type:"string"}],type:"messages.StatedMessage"},{id:"-662601187",method:"messages.editChatPhoto",params:[{name:"chat_id",type:"int"},{name:"photo",type:"InputChatPhoto"}],type:"messages.StatedMessage"},{id:"787082910",method:"messages.addChatUser",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"InputUser"},{name:"fwd_limit",type:"int"}],type:"messages.StatedMessage"},{id:"-1010447069",method:"messages.deleteChatUser",params:[{name:"chat_id",type:"int"},{name:"user_id",type:"InputUser"}],type:"messages.StatedMessage"},{id:"1100847854",method:"messages.createChat",params:[{name:"users",type:"Vector"},{name:"title",type:"string"}],type:"messages.StatedMessage"},{id:"-304838614",method:"updates.getState",params:[],type:"updates.State"},{id:"168039573",method:"updates.getDifference",params:[{name:"pts",type:"int"},{name:"date",type:"int"},{name:"qts",type:"int"}],type:"updates.Difference"},{id:"-285902432",method:"photos.updateProfilePhoto",params:[{name:"id",type:"InputPhoto"},{name:"crop",type:"InputPhotoCrop"}],type:"UserProfilePhoto"},{id:"-720397176",method:"photos.uploadProfilePhoto",params:[{name:"file",type:"InputFile"},{name:"caption",type:"string"},{name:"geo_point",type:"InputGeoPoint"},{name:"crop",type:"InputPhotoCrop"}],type:"photos.Photo"},{id:"-1291540959",method:"upload.saveFilePart",params:[{name:"file_id",type:"long"},{name:"file_part",type:"int"},{name:"bytes",type:"bytes"}],type:"Bool"},{id:"-475607115",method:"upload.getFile",params:[{name:"location",type:"InputFileLocation"},{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"upload.File"},{id:"-990308245",method:"help.getConfig",params:[],type:"Config"},{id:"531836966",method:"help.getNearestDc",params:[],type:"NearestDc"},{id:"-938300290",method:"help.getAppUpdate",params:[{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"lang_code",type:"string"}],type:"help.AppUpdate"},{id:"1862465352",method:"help.saveAppLog",params:[{name:"events",type:"Vector"}],type:"Bool"},{id:"-1532407418",method:"help.getInviteText",params:[{name:"lang_code",type:"string"}],type:"help.InviteText"},{id:"-1209117380",method:"photos.getUserPhotos",params:[{name:"user_id",type:"InputUser"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"photos.Photos"},{id:"66319602",method:"messages.forwardMessage",params:[{name:"peer",type:"InputPeer"},{name:"id",type:"int"},{name:"random_id",type:"long"}],type:"messages.StatedMessage"},{id:"1102776690",method:"messages.sendBroadcast",params:[{name:"contacts",type:"Vector"},{name:"message",type:"string"},{name:"media",type:"InputMedia"}],type:"messages.StatedMessages"},{id:"2132356495",method:"geochats.getLocated",params:[{name:"geo_point",type:"InputGeoPoint"},{name:"radius",type:"int"},{name:"limit",type:"int"}],type:"geochats.Located"},{id:"-515735953",method:"geochats.getRecents",params:[{name:"offset",type:"int"},{name:"limit",type:"int"}],type:"geochats.Messages"},{id:"1437853947",method:"geochats.checkin",params:[{name:"peer",type:"InputGeoChat"}],type:"geochats.StatedMessage"},{id:"1730338159",method:"geochats.getFullChat",params:[{name:"peer",type:"InputGeoChat"}],type:"messages.ChatFull"},{id:"1284383347",method:"geochats.editChatTitle",params:[{name:"peer",type:"InputGeoChat"},{name:"title",type:"string"},{name:"address",type:"string"}],type:"geochats.StatedMessage"},{id:"903355029",method:"geochats.editChatPhoto",params:[{name:"peer",type:"InputGeoChat"},{name:"photo",type:"InputChatPhoto"}],type:"geochats.StatedMessage"},{id:"-808598451",method:"geochats.search",params:[{name:"peer",type:"InputGeoChat"},{name:"q",type:"string"},{name:"filter",type:"MessagesFilter"},{name:"min_date",type:"int"},{name:"max_date",type:"int"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"geochats.Messages"},{id:"-1254131096",method:"geochats.getHistory",params:[{name:"peer",type:"InputGeoChat"},{name:"offset",type:"int"},{name:"max_id",type:"int"},{name:"limit",type:"int"}],type:"geochats.Messages"},{id:"146319145",method:"geochats.setTyping",params:[{name:"peer",type:"InputGeoChat"},{name:"typing",type:"Bool"}],type:"Bool"},{id:"102432836",method:"geochats.sendMessage",params:[{name:"peer",type:"InputGeoChat"},{name:"message",type:"string"},{name:"random_id",type:"long"}],type:"geochats.StatedMessage"},{id:"-1192173825",method:"geochats.sendMedia",params:[{name:"peer",type:"InputGeoChat"},{name:"media",type:"InputMedia"},{name:"random_id",type:"long"}],type:"geochats.StatedMessage"},{id:"235482646",method:"geochats.createGeoChat",params:[{name:"title",type:"string"},{name:"geo_point",type:"InputGeoPoint"},{name:"address",type:"string"},{name:"venue",type:"string"}],type:"geochats.StatedMessage"},{id:"651135312",method:"messages.getDhConfig",params:[{name:"version",type:"int"},{name:"random_length",type:"int"}],type:"messages.DhConfig"},{id:"-162681021",method:"messages.requestEncryption",params:[{name:"user_id",type:"InputUser"},{name:"random_id",type:"int"},{name:"g_a",type:"bytes"}],type:"EncryptedChat"},{id:"1035731989",method:"messages.acceptEncryption",params:[{name:"peer",type:"InputEncryptedChat"},{name:"g_b",type:"bytes"},{name:"key_fingerprint",type:"long"}],type:"EncryptedChat"},{id:"-304536635",method:"messages.discardEncryption",params:[{name:"chat_id",type:"int"}],type:"Bool"},{id:"2031374829",method:"messages.setEncryptedTyping",params:[{name:"peer",type:"InputEncryptedChat"},{name:"typing",type:"Bool"}],type:"Bool"},{id:"2135648522",method:"messages.readEncryptedHistory",params:[{name:"peer",type:"InputEncryptedChat"},{name:"max_date",type:"int"}],type:"Bool"},{id:"-1451792525",method:"messages.sendEncrypted",params:[{name:"peer",type:"InputEncryptedChat"},{name:"random_id",type:"long"},{name:"data",type:"bytes"}],type:"messages.SentEncryptedMessage"},{id:"-1701831834",method:"messages.sendEncryptedFile",params:[{name:"peer",type:"InputEncryptedChat"},{name:"random_id",type:"long"},{name:"data",type:"bytes"},{name:"file",type:"InputEncryptedFile"}],type:"messages.SentEncryptedMessage"},{id:"852769188",method:"messages.sendEncryptedService",params:[{name:"peer",type:"InputEncryptedChat"},{name:"random_id",type:"long"},{name:"data",type:"bytes"}],type:"messages.SentEncryptedMessage"},{id:"1436924774",method:"messages.receivedQueue",params:[{name:"max_qts",type:"int"}],type:"Vector"},{id:"-562337987",method:"upload.saveBigFilePart",params:[{name:"file_id",type:"long"},{name:"file_part",type:"int"},{name:"file_total_parts",type:"int"},{name:"bytes",type:"bytes"}],type:"Bool"},{id:"1769565673",method:"initConnection",params:[{name:"api_id",type:"int"},{name:"device_model",type:"string"},{name:"system_version",type:"string"},{name:"app_version",type:"string"},{name:"lang_code",type:"string"},{name:"query",type:"!X"}],type:"X"},{id:"-1663104819",method:"help.getSupport",params:[],type:"help.Support"},{id:"-576320196",method:"invokeWithLayer12",params:[{name:"query",type:"!X"}],type:"X"}]},Config.Schema.API.layer=12,Config.Emoji={"00a9":["©",["copyright"]],"00ae":["®",["registered"]],"203c":["‼",["bangbang"]],2049:["⁉",["interrobang"]],2122:["™",["tm"]],2139:["ℹ",["information_source"]],2194:["↔",["left_right_arrow"]],2195:["↕",["arrow_up_down"]],2196:["↖",["arrow_upper_left"]],2197:["↗",["arrow_upper_right"]],2198:["↘",["arrow_lower_right"]],2199:["↙",["arrow_lower_left"]],"21a9":["↩",["leftwards_arrow_with_hook"]],"21aa":["↪",["arrow_right_hook"]],"231a":["⌚",["watch"]],"231b":["⌛",["hourglass"]],"23e9":["⏩",["fast_forward"]],"23ea":["⏪",["rewind"]],"23eb":["⏫",["arrow_double_up"]],"23ec":["⏬",["arrow_double_down"]],"23f0":["⏰",["alarm_clock"]],"23f3":["⏳",["hourglass_flowing_sand"]],"24c2":["Ⓜ",["m"]],"25aa":["▪",["black_small_square"]],"25ab":["▫",["white_small_square"]],"25b6":["▶",["arrow_forward"]],"25c0":["◀",["arrow_backward"]],"25fb":["◻",["white_medium_square"]],"25fc":["◼",["black_medium_square"]],"25fd":["◽",["white_medium_small_square"]],"25fe":["◾",["black_medium_small_square"]],2600:["☀",["sunny"]],2601:["☁",["cloud"]],"260e":["☎",["phone","telephone"]],2611:["☑",["ballot_box_with_check"]],2614:["☔",["umbrella"]],2615:["☕",["coffee"]],"261d":["☝",["point_up"]],"263a":["☺",["relaxed"]],2648:["♈",["aries"]],2649:["♉",["taurus"]],"264a":["♊",["gemini"]],"264b":["♋",["cancer"]],"264c":["♌",["leo"]],"264d":["♍",["virgo"]],"264e":["♎",["libra"]],"264f":["♏",["scorpius"]],2650:["♐",["sagittarius"]],2651:["♑",["capricorn"]],2652:["♒",["aquarius"]],2653:["♓",["pisces"]],2660:["♠",["spades"]],2663:["♣",["clubs"]],2665:["♥",["hearts"]],2666:["♦",["diamonds"]],2668:["♨",["hotsprings"]],"267b":["♻",["recycle"]],"267f":["♿",["wheelchair"]],2693:["⚓",["anchor"]],"26a0":["⚠",["warning"]],"26a1":["⚡",["zap"]],"26aa":["⚪",["white_circle"]],"26ab":["⚫",["black_circle"]],"26bd":["⚽",["soccer"]],"26be":["⚾",["baseball"]],"26c4":["⛄",["snowman"]],"26c5":["⛅",["partly_sunny"]],"26ce":["⛎",["ophiuchus"]],"26d4":["⛔",["no_entry"]],"26ea":["⛪",["church"]],"26f2":["⛲",["fountain"]],"26f3":["⛳",["golf"]],"26f5":["⛵",["boat","sailboat"]],"26fa":["⛺",["tent"]],"26fd":["⛽",["fuelpump"]],2702:["✂",["scissors"]],2705:["✅",["white_check_mark"]],2708:["✈",["airplane"]],2709:["✉",["email","envelope"]],"270a":["✊",["fist"]],"270b":["✋",["hand","raised_hand"]],"270c":["✌",["v"]],"270f":["✏",["pencil2"]],2712:["✒",["black_nib"]],2714:["✔",["heavy_check_mark"]],2716:["✖",["heavy_multiplication_x"]],2728:["✨",["sparkles"]],2733:["✳",["eight_spoked_asterisk"]],2734:["✴",["eight_pointed_black_star"]],2744:["❄",["snowflake"]],2747:["❇",["sparkle"]],"274c":["❌",["x"]],"274e":["❎",["negative_squared_cross_mark"]],2753:["❓",["question"]],2754:["❔",["grey_question"]],2755:["❕",["grey_exclamation"]],2757:["❗",["exclamation","heavy_exclamation_mark"]],2764:["❤",["heart"],"<3"],2795:["➕",["heavy_plus_sign"]],2796:["➖",["heavy_minus_sign"]],2797:["➗",["heavy_division_sign"]],"27a1":["➡",["arrow_right"]],"27b0":["➰",["curly_loop"]],"27bf":["➿",["loop"]],2934:["⤴",["arrow_heading_up"]],2935:["⤵",["arrow_heading_down"]],"2b05":["⬅",["arrow_left"]],"2b06":["⬆",["arrow_up"]],"2b07":["⬇",["arrow_down"]],"2b1b":["⬛",["black_large_square"]],"2b1c":["⬜",["white_large_square"]],"2b50":["⭐",["star"]],"2b55":["⭕",["o"]],3030:["〰",["wavy_dash"]],"303d":["〽",["part_alternation_mark"]],3297:["㊗",["congratulations"]],3299:["㊙",["secret"]],"1f004":["🀄",["mahjong"]],"1f0cf":["🃏",["black_joker"]],"1f170":["🅰",["a"]],"1f171":["🅱",["b"]],"1f17e":["🅾",["o2"]],"1f17f":["🅿",["parking"]],"1f18e":["🆎",["ab"]],"1f191":["🆑",["cl"]],"1f192":["🆒",["cool"]],"1f193":["🆓",["free"]],"1f194":["🆔",["id"]],"1f195":["🆕",["new"]],"1f196":["🆖",["ng"]],"1f197":["🆗",["ok"]],"1f198":["🆘",["sos"]],"1f199":["🆙",["up"]],"1f19a":["🆚",["vs"]],"1f201":["🈁",["koko"]],"1f202":["🈂",["sa"]],"1f21a":["🈚",["u7121"]],"1f22f":["🈯",["u6307"]],"1f232":["🈲",["u7981"]],"1f233":["🈳",["u7a7a"]],"1f234":["🈴",["u5408"]],"1f235":["🈵",["u6e80"]],"1f236":["🈶",["u6709"]],"1f237":["🈷",["u6708"]],"1f238":["🈸",["u7533"]],"1f239":["🈹",["u5272"]],"1f23a":["🈺",["u55b6"]],"1f250":["🉐",["ideograph_advantage"]],"1f251":["🉑",["accept"]],"1f300":["🌀",["cyclone"]],"1f301":["🌁",["foggy"]],"1f302":["🌂",["closed_umbrella"]],"1f303":["🌃",["stars"]],"1f304":["🌄",["sunrise_over_mountains"]],"1f305":["🌅",["sunrise"]],"1f306":["🌆",["city_sunset"]],"1f307":["🌇",["city_sunrise"]],"1f308":["🌈",["rainbow"]],"1f309":["🌉",["bridge_at_night"]],"1f30a":["🌊",["ocean"]],"1f30b":["🌋",["volcano"]],"1f30c":["🌌",["milky_way"]],"1f30d":["🌍",["earth_africa"]],"1f30e":["🌎",["earth_americas"]],"1f30f":["🌏",["earth_asia"]],"1f310":["🌐",["globe_with_meridians"]],"1f311":["🌑",["new_moon"]],"1f312":["🌒",["waxing_crescent_moon"]],"1f313":["🌓",["first_quarter_moon"]],"1f314":["🌔",["moon","waxing_gibbous_moon"]],"1f315":["🌕",["full_moon"]],"1f316":["🌖",["waning_gibbous_moon"]],"1f317":["🌗",["last_quarter_moon"]],"1f318":["🌘",["waning_crescent_moon"]],"1f319":["🌙",["crescent_moon"]],"1f31a":["🌚",["new_moon_with_face"]],"1f31b":["🌛",["first_quarter_moon_with_face"]],"1f31c":["🌜",["last_quarter_moon_with_face"]],"1f31d":["🌝",["full_moon_with_face"]],"1f31e":["🌞",["sun_with_face"]],"1f31f":["🌟",["star2"]],"1f330":["🌰",["chestnut"]],"1f331":["🌱",["seedling"]],"1f332":["🌲",["evergreen_tree"]],"1f333":["🌳",["deciduous_tree"]],"1f334":["🌴",["palm_tree"]],"1f335":["🌵",["cactus"]],"1f337":["🌷",["tulip"]],"1f338":["🌸",["cherry_blossom"]],"1f339":["🌹",["rose"]],"1f33a":["🌺",["hibiscus"]],"1f33b":["🌻",["sunflower"]],"1f33c":["🌼",["blossom"]],"1f33d":["🌽",["corn"]],"1f33e":["🌾",["ear_of_rice"]],"1f33f":["🌿",["herb"]],"1f340":["🍀",["four_leaf_clover"]],"1f341":["🍁",["maple_leaf"]],"1f342":["🍂",["fallen_leaf"]],"1f343":["🍃",["leaves"]],"1f344":["🍄",["mushroom"]],"1f345":["🍅",["tomato"]],"1f346":["🍆",["eggplant"]],"1f347":["🍇",["grapes"]],"1f348":["🍈",["melon"]],"1f349":["🍉",["watermelon"]],"1f34a":["🍊",["tangerine"]],"1f34b":["🍋",["lemon"]],"1f34c":["🍌",["banana"]],"1f34d":["🍍",["pineapple"]],"1f34e":["🍎",["apple"]],"1f34f":["🍏",["green_apple"]],"1f350":["🍐",["pear"]],"1f351":["🍑",["peach"]],"1f352":["🍒",["cherries"]],"1f353":["🍓",["strawberry"]],"1f354":["🍔",["hamburger"]],"1f355":["🍕",["pizza"]],"1f356":["🍖",["meat_on_bone"]],"1f357":["🍗",["poultry_leg"]],"1f358":["🍘",["rice_cracker"]],"1f359":["🍙",["rice_ball"]],"1f35a":["🍚",["rice"]],"1f35b":["🍛",["curry"]],"1f35c":["🍜",["ramen"]],"1f35d":["🍝",["spaghetti"]],"1f35e":["🍞",["bread"]],"1f35f":["🍟",["fries"]],"1f360":["🍠",["sweet_potato"]],"1f361":["🍡",["dango"]],"1f362":["🍢",["oden"]],"1f363":["🍣",["sushi"]],"1f364":["🍤",["fried_shrimp"]],"1f365":["🍥",["fish_cake"]],"1f366":["🍦",["icecream"]],"1f367":["🍧",["shaved_ice"]],"1f368":["🍨",["ice_cream"]],"1f369":["🍩",["doughnut"]],"1f36a":["🍪",["cookie"]],"1f36b":["🍫",["chocolate_bar"]],"1f36c":["🍬",["candy"]],"1f36d":["🍭",["lollipop"]],"1f36e":["🍮",["custard"]],"1f36f":["🍯",["honey_pot"]],"1f370":["🍰",["cake"]],"1f371":["🍱",["bento"]],"1f372":["🍲",["stew"]],"1f373":["🍳",["egg"]],"1f374":["🍴",["fork_and_knife"]],"1f375":["🍵",["tea"]],"1f376":["🍶",["sake"]],"1f377":["🍷",["wine_glass"]],"1f378":["🍸",["cocktail"]],"1f379":["🍹",["tropical_drink"]],"1f37a":["🍺",["beer"]],"1f37b":["🍻",["beers"]],"1f37c":["🍼",["baby_bottle"]],"1f380":["🎀",["ribbon"]],"1f381":["🎁",["gift"]],"1f382":["🎂",["birthday"]],"1f383":["🎃",["jack_o_lantern"]],"1f384":["🎄",["christmas_tree"]],"1f385":["🎅",["santa"]],"1f386":["🎆",["fireworks"]],"1f387":["🎇",["sparkler"]],"1f388":["🎈",["balloon"]],"1f389":["🎉",["tada"]],"1f38a":["🎊",["confetti_ball"]],"1f38b":["🎋",["tanabata_tree"]],"1f38c":["🎌",["crossed_flags"]],"1f38d":["🎍",["bamboo"]],"1f38e":["🎎",["dolls"]],"1f38f":["🎏",["flags"]],"1f390":["🎐",["wind_chime"]],"1f391":["🎑",["rice_scene"]],"1f392":["🎒",["school_satchel"]],"1f393":["🎓",["mortar_board"]],"1f3a0":["🎠",["carousel_horse"]],"1f3a1":["🎡",["ferris_wheel"]],"1f3a2":["🎢",["roller_coaster"]],"1f3a3":["🎣",["fishing_pole_and_fish"]],"1f3a4":["🎤",["microphone"]],"1f3a5":["🎥",["movie_camera"]],"1f3a6":["🎦",["cinema"]],"1f3a7":["🎧",["headphones"]],"1f3a8":["🎨",["art"]],"1f3a9":["🎩",["tophat"]],"1f3aa":["🎪",["circus_tent"]],"1f3ab":["🎫",["ticket"]],"1f3ac":["🎬",["clapper"]],"1f3ad":["🎭",["performing_arts"]],"1f3ae":["🎮",["video_game"]],"1f3af":["🎯",["dart"]],"1f3b0":["🎰",["slot_machine"]],"1f3b1":["🎱",["8ball"]],"1f3b2":["🎲",["game_die"]],"1f3b3":["🎳",["bowling"]],"1f3b4":["🎴",["flower_playing_cards"]],"1f3b5":["🎵",["musical_note"]],"1f3b6":["🎶",["notes"]],"1f3b7":["🎷",["saxophone"]],"1f3b8":["🎸",["guitar"]],"1f3b9":["🎹",["musical_keyboard"]],"1f3ba":["🎺",["trumpet"]],"1f3bb":["🎻",["violin"]],"1f3bc":["🎼",["musical_score"]],"1f3bd":["🎽",["running_shirt_with_sash"]],"1f3be":["🎾",["tennis"]],"1f3bf":["🎿",["ski"]],"1f3c0":["🏀",["basketball"]],"1f3c1":["🏁",["checkered_flag"]],"1f3c2":["🏂",["snowboarder"]],"1f3c3":["🏃",["runner","running"]],"1f3c4":["🏄",["surfer"]],"1f3c6":["🏆",["trophy"]],"1f3c7":["🏇",["horse_racing"]],"1f3c8":["🏈",["football"]],"1f3c9":["🏉",["rugby_football"]],"1f3ca":["🏊",["swimmer"]],"1f3e0":["🏠",["house"]],"1f3e1":["🏡",["house_with_garden"]],"1f3e2":["🏢",["office"]],"1f3e3":["🏣",["post_office"]],"1f3e4":["🏤",["european_post_office"]],"1f3e5":["🏥",["hospital"]],"1f3e6":["🏦",["bank"]],"1f3e7":["🏧",["atm"]],"1f3e8":["🏨",["hotel"]],"1f3e9":["🏩",["love_hotel"]],"1f3ea":["🏪",["convenience_store"]],"1f3eb":["🏫",["school"]],"1f3ec":["🏬",["department_store"]],"1f3ed":["🏭",["factory"]],"1f3ee":["🏮",["izakaya_lantern","lantern"]],"1f3ef":["🏯",["japanese_castle"]],"1f3f0":["🏰",["european_castle"]],"1f400":["🐀",["rat"]],"1f401":["🐁",["mouse2"]],"1f402":["🐂",["ox"]],"1f403":["🐃",["water_buffalo"]],"1f404":["🐄",["cow2"]],"1f405":["🐅",["tiger2"]],"1f406":["🐆",["leopard"]],"1f407":["🐇",["rabbit2"]],"1f408":["🐈",["cat2"]],"1f409":["🐉",["dragon"]],"1f40a":["🐊",["crocodile"]],"1f40b":["🐋",["whale2"]],"1f40c":["🐌",["snail"]],"1f40d":["🐍",["snake"]],"1f40e":["🐎",["racehorse"]],"1f40f":["🐏",["ram"]],"1f410":["🐐",["goat"]],"1f411":["🐑",["sheep"]],"1f412":["🐒",["monkey"]],"1f413":["🐓",["rooster"]],"1f414":["🐔",["chicken"]],"1f415":["🐕",["dog2"]],"1f416":["🐖",["pig2"]],"1f417":["🐗",["boar"]],"1f418":["🐘",["elephant"]],"1f419":["🐙",["octopus"]],"1f41a":["🐚",["shell"]],"1f41b":["🐛",["bug"]],"1f41c":["🐜",["ant"]],"1f41d":["🐝",["bee","honeybee"]],"1f41e":["🐞",["beetle"]],"1f41f":["🐟",["fish"]],"1f420":["🐠",["tropical_fish"]],"1f421":["🐡",["blowfish"]],"1f422":["🐢",["turtle"]],"1f423":["🐣",["hatching_chick"]],"1f424":["🐤",["baby_chick"]],"1f425":["🐥",["hatched_chick"]],"1f426":["🐦",["bird"]],"1f427":["🐧",["penguin"]],"1f428":["🐨",["koala"]],"1f429":["🐩",["poodle"]],"1f42a":["🐪",["dromedary_camel"]],"1f42b":["🐫",["camel"]],"1f42c":["🐬",["dolphin","flipper"]],"1f42d":["🐭",["mouse"]],"1f42e":["🐮",["cow"]],"1f42f":["🐯",["tiger"]],"1f430":["🐰",["rabbit"]],"1f431":["🐱",["cat"]],"1f432":["🐲",["dragon_face"]],"1f433":["🐳",["whale"]],"1f434":["🐴",["horse"]],"1f435":["🐵",["monkey_face"]],"1f436":["🐶",["dog"]],"1f437":["🐷",["pig"]],"1f438":["🐸",["frog"]],"1f439":["🐹",["hamster"]],"1f43a":["🐺",["wolf"]],"1f43b":["🐻",["bear"]],"1f43c":["🐼",["panda_face"]],"1f43d":["🐽",["pig_nose"]],"1f43e":["🐾",["feet","paw_prints"]],"1f440":["👀",["eyes"]],"1f442":["👂",["ear"]],"1f443":["👃",["nose"]],"1f444":["👄",["lips"]],"1f445":["👅",["tongue"]],"1f446":["👆",["point_up_2"]],"1f447":["👇",["point_down"]],"1f448":["👈",["point_left"]],"1f449":["👉",["point_right"]],"1f44a":["👊",["facepunch","punch"]],"1f44b":["👋",["wave"]],"1f44c":["👌",["ok_hand"]],"1f44d":["👍",["+1","thumbsup"]],"1f44e":["👎",["-1","thumbsdown"]],"1f44f":["👏",["clap"]],"1f450":["👐",["open_hands"]],"1f451":["👑",["crown"]],"1f452":["👒",["womans_hat"]],"1f453":["👓",["eyeglasses"]],"1f454":["👔",["necktie"]],"1f455":["👕",["shirt","tshirt"]],"1f456":["👖",["jeans"]],"1f457":["👗",["dress"]],"1f458":["👘",["kimono"]],"1f459":["👙",["bikini"]],"1f45a":["👚",["womans_clothes"]],"1f45b":["👛",["purse"]],"1f45c":["👜",["handbag"]],"1f45d":["👝",["pouch"]],"1f45e":["👞",["mans_shoe","shoe"]],"1f45f":["👟",["athletic_shoe"]],"1f460":["👠",["high_heel"]],"1f461":["👡",["sandal"]],"1f462":["👢",["boot"]],"1f463":["👣",["footprints"]],"1f464":["👤",["bust_in_silhouette"]],"1f465":["👥",["busts_in_silhouette"]],"1f466":["👦",["boy"]],"1f467":["👧",["girl"]],"1f468":["👨",["man"]],"1f469":["👩",["woman"]],"1f46a":["👪",["family"]],"1f46b":["👫",["couple"]],"1f46c":["👬",["two_men_holding_hands"]],"1f46d":["👭",["two_women_holding_hands"]],"1f46e":["👮",["cop"]],"1f46f":["👯",["dancers"]],"1f470":["👰",["bride_with_veil"]],"1f471":["👱",["person_with_blond_hair"]],"1f472":["👲",["man_with_gua_pi_mao"]],"1f473":["👳",["man_with_turban"]],"1f474":["👴",["older_man"]],"1f475":["👵",["older_woman"]],"1f476":["👶",["baby"]],"1f477":["👷",["construction_worker"]],"1f478":["👸",["princess"]],"1f479":["👹",["japanese_ogre"]],"1f47a":["👺",["japanese_goblin"]],"1f47b":["👻",["ghost"]],"1f47c":["👼",["angel"]],"1f47d":["👽",["alien"]],"1f47e":["👾",["space_invader"]],"1f47f":["👿",["imp"]],"1f480":["💀",["skull"]],"1f481":["💁",["information_desk_person"]],"1f482":["💂",["guardsman"]],"1f483":["💃",["dancer"]],"1f484":["💄",["lipstick"]],"1f485":["💅",["nail_care"]],"1f486":["💆",["massage"]],"1f487":["💇",["haircut"]],"1f488":["💈",["barber"]],"1f489":["💉",["syringe"]],"1f48a":["💊",["pill"]],"1f48b":["💋",["kiss"]],"1f48c":["💌",["love_letter"]],"1f48d":["💍",["ring"]],"1f48e":["💎",["gem"]],"1f48f":["💏",["couplekiss"]],"1f490":["💐",["bouquet"]],"1f491":["💑",["couple_with_heart"]],"1f492":["💒",["wedding"]],"1f493":["💓",["heartbeat"]],"1f494":["💔",["broken_heart"],"t;t+=2)r.push(parseInt(e.substr(t,2),16));return r}function bytesToBase64(e){for(var t,n="",r=e.length,o=0,s=0;r>s;s++)t=s%3,o|=e[s]<<(16>>>t&24),(2===t||r-s===1)&&(n+=String.fromCharCode(uint6ToBase64(o>>>18&63),uint6ToBase64(o>>>12&63),uint6ToBase64(o>>>6&63),uint6ToBase64(63&o)),o=0);return n.replace(/A(?=A$|$)/g,"=")}function uint6ToBase64(e){return 26>e?e+65:52>e?e+71:62>e?e-4:62===e?43:63===e?47:65}function bytesCmp(e,t){var n=e.length;if(n!=t.length)return!1;for(var r=0;n>r;r++)if(e[r]!=t[r])return!1;return!0}function bytesXor(e,t){for(var n=e.length,r=[],o=0;n>o;++o)r[o]=e[o]^t[o];return r}function bytesToWords(e){for(var t=e.length,n=[],r=0;t>r;r++)n[r>>>2]|=e[r]<<24-r%4*8;return new CryptoJS.lib.WordArray.init(n,t)}function bytesFromWords(e){for(var t=e.words,n=e.sigBytes,r=[],o=0;n>o;o++)r.push(t[o>>>2]>>>24-o%4*8&255);return r}function bytesFromBigInt(e,t){for(var n=e.toByteArray();!n[0]&&(!t||n.length>t);)n=n.slice(1);return n}function bytesToArrayBuffer(e){return new Uint8Array(e).buffer}function bytesFromArrayBuffer(e){for(var t=e.byteLength,n=new Uint8Array(e),r=[],o=0;t>o;++o)r[o]=n[o];return r}function longToInts(e){var t=bigStringInt(e).divideAndRemainder(bigint(4294967296));return[t[0].intValue(),t[1].intValue()]}function longToBytes(e){return bytesFromWords({words:longToInts(e),sigBytes:8}).reverse()}function longFromInts(e,t){return bigint(e).shiftLeft(32).add(bigint(t)).toString(10)}function intToUint(e){return e=parseInt(e),0>e&&(e+=4294967296),e}function uintToInt(e){return e>2147483647&&(e-=4294967296),e}function sha1Hash(e){var t=sha1.hash(e,!0);return t}function rsaEncrypt(e,t){var n=255-t.length;if(n>0){var r=new Array(n);(new SecureRandom).nextBytes(r),t=t.concat(r)}var o=new BigInteger(e.modulus,16),s=new BigInteger(e.exponent,16),i=new BigInteger(t),a=i.modPowInt(s,o),c=bytesFromBigInt(a,256);return c}function aesEncrypt(e,t,n){var r=16-e.length%16;if(r>0&&16>r){var o=new Array(r);(new SecureRandom).nextBytes(o),e=e.concat(o)}var s=CryptoJS.AES.encrypt(bytesToWords(e),bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}).ciphertext,i=bytesFromWords(s);return i}function aesDecrypt(e,t,n){var r=CryptoJS.AES.decrypt({ciphertext:bytesToWords(e)},bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}),o=bytesFromWords(r);return o}function gzipUncompress(e){var t=new Zlib.Gunzip(e).decompress();return t}function nextRandomInt(e){return Math.floor(Math.random()*e)}function pqPrimeFactorization(e){var t=new BigInteger(e),n=!1;if(console.log("PQ start",e,t.bitLength()),t.bitLength()<=64)try{n=pqPrimeLong(goog.math.Long.fromString(t.toString(16),16))}catch(r){console.error(r)}return n===!1&&(n=pqPrimeBigInteger(t)),console.log("PQ finish"),n}function pqPrimeBigInteger(e){for(var t,n=0,r=0;3>r;r++){for(var o=(15&nextRandomInt(128))+17,s=bigint(nextRandomInt(1e9)+1),i=s.clone(),a=1<c;c++){++n;for(var f=s.clone(),h=s.clone(),u=bigint(o);!h.equals(BigInteger.ZERO);)h.and(BigInteger.ONE).equals(BigInteger.ZERO)||(u=u.add(f),u.compareTo(e)>0&&(u=u.subtract(e))),f=f.add(f),f.compareTo(e)>0&&(f=f.subtract(e)),h=h.shiftRight(1);s=u.clone();var d=s.compareTo(i)<0?i.subtract(s):s.subtract(i);if(t=d.gcd(e),!t.equals(BigInteger.ONE))break;0==(c&c-1)&&(i=s.clone())}if(t.compareTo(BigInteger.ONE)>0)break}var l,g,p=e.divide(t);return t.compareTo(p)>0?(l=p,g=t):(l=t,g=p),[bytesFromBigInt(l),bytesFromBigInt(g)]}function gcdLong(e,t){for(;e.notEquals(goog.math.Long.ZERO)&&t.notEquals(goog.math.Long.ZERO);){for(;t.and(goog.math.Long.ONE).equals(goog.math.Long.ZERO);)t=t.shiftRight(1);for(;e.and(goog.math.Long.ONE).equals(goog.math.Long.ZERO);)e=e.shiftRight(1);e.compare(t)>0?e=e.subtract(t):t=t.subtract(e)}return t.equals(goog.math.Long.ZERO)?e:t}function pqPrimeLong(e){for(var t,n=0,r=0;3>r;r++){for(var o=goog.math.Long.fromInt((15&nextRandomInt(128))+17),s=goog.math.Long.fromInt(nextRandomInt(1e9)+1),i=s,a=1<c;c++){++n;for(var f=s,h=s,u=o;h.notEquals(goog.math.Long.ZERO);)h.and(goog.math.Long.ONE).notEquals(goog.math.Long.ZERO)&&(u=u.add(f),u.compare(e)>0&&(u=u.subtract(e))),f=f.add(f),f.compare(e)>0&&(f=f.subtract(e)),h=h.shiftRight(1);s=u;var d=s.compare(i)<0?i.subtract(s):s.subtract(i);if(t=gcdLong(d,e),t.notEquals(goog.math.Long.ONE))break;0==(c&c-1)&&(i=s)}if(t.compare(goog.math.Long.ONE)>0)break}var l,g,p=e.div(t);return t.compare(p)>0?(l=p,g=t):(l=t,g=p),[bytesFromHex(l.toString(16)),bytesFromHex(g.toString(16))]}function TLSerialization(e){return e=e||{},this.maxLength=e.startMaxLength||2048,this.offset=0,this.createBuffer(),this.mtproto=e.mtproto||!1,this}function TLDeserialization(e,t){return t=t||{},this.offset=0,this.buffer=e,this.intView=new Uint32Array(this.buffer),this.byteView=new Uint8Array(this.buffer),this.mtproto=t.mtproto||!1,this}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(){for(var e=[],t=0;t>>",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);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),r=new Float64Array(t);r[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");var n=unescape(encodeURIComponent(e));this.checkLength(n.length+8);var r=n.length;253>=r?this.byteView[this.offset++]=r:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&r,this.byteView[this.offset++]=(65280&r)>>8,this.byteView[this.offset++]=(16711680&r)>>16);for(var o=0;r>o;o++)this.byteView[this.offset++]=n.charCodeAt(o);for(;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeBytes=function(e,t){this.debug&&console.log(">>>",bytesToHex(e),(t||"")+":bytes"),this.checkLength(e.length+8);var n=e.length;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);for(var r=0;n>r;r++)this.byteView[this.offset++]=e[r];for(;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeIntBytes=function(e,t,n){var r=e.length;if(t%32||8*r!=t)throw new Error("Invalid bits: "+t+", "+e.length);this.debug&&console.log(">>>",bytesToHex(e),(n||"")+":int"+t),this.checkLength(r);for(var o=0;r>o;o++)this.byteView[this.offset++]=e[o]},TLSerialization.prototype.storeRawBytes=function(e,t){var n=e.length;this.debug&&console.log(">>>",bytesToHex(e),t||""),this.checkLength(n);for(var r=0;n>r;r++)this.byteView[this.offset++]=e[r]},TLSerialization.prototype.storeMethod=function(e,t){var n,r=this.mtproto?Config.Schema.MTProto:Config.Schema.API,o=!1;for(n=0;n=4*this.intView.length)throw new Error("Nothing to fetch");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),r=new Float64Array(t);return n[0]=this.readInt((e||"")+":double[low]"),n[1]=this.readInt((e||"")+":double[high]"),r[0]},TLDeserialization.prototype.fetchLong=function(e){var t=this.readInt((e||"")+":long[low]"),n=this.readInt((e||"")+":long[high]"),r=bigint(n).shiftLeft(32).add(bigint(t)).toString();return r},TLDeserialization.prototype.fetchBool=function(e){var t=this.readInt((e||"")+":bool");if(2574415285==t)return!0;if(3162085175==t)return!1;throw new Error("Unknown Bool constructor "+t)},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="",r=0;t>r;r++)n+=String.fromCharCode(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;try{var o=decodeURIComponent(escape(n))}catch(s){var o=n}return this.debug&&console.log("<<<",o,(e||"")+":string"),o},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;for(var n=[],r=0;t>r;r++)n.push(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;return this.debug&&console.log("<<<",bytesToHex(n),(e||"")+":bytes"),n},TLDeserialization.prototype.fetchIntBytes=function(e,t){if(e%32)throw new Error("Invalid bits: "+e);for(var n=e/8,r=[],o=0;n>o;o++)r.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(r),(t||"")+":int"+e),r},TLDeserialization.prototype.fetchRawBytes=function(e,t){e===!1&&(e=this.readInt((t||"")+"_length"));for(var n=[],r=0;e>r;r++)n.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(n),t||""),n},TLDeserialization.prototype.fetchObject=function(e,t){switch(e){case"int":return this.fetchInt(t);case"long":return this.fetchLong(t);case"int128":return this.fetchIntBytes(128,t);case"int256":return this.fetchIntBytes(256,t);case"int512":return this.fetchIntBytes(512,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 r=this.readInt(t+"[count]"),o=[];if(r>0)for(var s=e.substr(7,e.length-8),i=0;r>i;i++)o.push(this.fetchObject(s,t+"["+i+"]"));return o}var a=this.mtproto?Config.Schema.MTProto:Config.Schema.API,c=!1,f=!1;if("%"==e.charAt(0)){var h=e.substr(1);for(i=0;i=97&&e.charAt(0)<=122){for(i=0;ii[0]||r[0]==i[0]&&r[1]>=i[1])&&(i=[r[0],r[1]+4]),r=i,longFromInts(i[0],i[1])}function n(t,n){var s=t-Math.floor((n||tsNow())/1e3),i=Math.abs(o-s)>10;return e.set({server_time_offset:s}),r=[0,0],o=s,console.log("Apply server time",t,n,s,i),i}var r=[0,0],o=0;return e.get("server_time_offset").then(function(e){e&&(o=e)}),{generateID:t,applyServerTime:n}}]).factory("MtpAuthorizer",["MtpDcConfigurator","MtpRsaKeysManager","MtpSecureRandom","MtpMessageIdGenerator","$http","$q","$timeout",function(e,t,n,r,o,s,i){function a(t,n){var s=n.byteLength,i=new Int32Array(n),a=new TLSerialization;a.storeLongP(0,0,"auth_key_id"),a.storeLong(r.generateID(),"msg_id"),a.storeInt(s,"request_length");var c=a.getBuffer(),f=new Int32Array(c),h=c.byteLength,u=new ArrayBuffer(h+s),d=new Int32Array(u);return d.set(f),d.set(i,f.length),delete o.defaults.headers.post["Content-Type"],delete o.defaults.headers.common.Accept,"ArrayBufferView"in window||(d=d.buffer),o.post("http://"+e.chooseServer(t)+"/apiw1",d,{responseType:"arraybuffer",transformRequest:null,transformResponse:function(e){{var t=new TLDeserialization(e,{mtproto:!0});t.fetchLong("auth_key_id"),t.fetchLong("msg_id"),t.fetchInt("msg_len")}return rng_seed_time(),t}})}function c(e){var n=e.deferred,r=new TLSerialization({mtproto:!0});r.storeMethod("req_pq",{nonce:e.nonce}),console.log(dT(),"Send req_pq",bytesToHex(e.nonce)),a(e.dcID,r.getBuffer()).then(function(r){var o=r.data,s=o.fetchObject("ResPQ");if("resPQ"!=s._)throw new Error("resPQ response invalid: "+s._);if(!bytesCmp(e.nonce,s.nonce))throw new Error("resPQ nonce mismatch");if(e.serverNonce=s.server_nonce,e.pq=s.pq,e.fingerprints=s.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");if(console.log(dT(),"PQ factorization start"),window.Worker){var i=new Worker("js/lib/pq_worker.js");i.onmessage=function(t){e.p=t.data[0],e.q=t.data[1],console.log(dT(),"PQ factorization done"),f(e)},i.onerror=function(e){console.log("Worker error",e,e.stack),n.reject(e)},i.postMessage(e.pq)}else{var a=pqPrimeFactorization(e.pq);e.p=a[0],e.q=a[1],console.log(dT(),"PQ factorization done"),f(e)}},function(e){n.reject(e)}),i(function(){t.prepare()})}function f(e){var t=e.deferred;e.newNonce=new Array(32),n.nextBytes(e.newNonce);var r=new TLSerialization({mtproto:!0});r.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 o=sha1Hash(r.getBuffer()).concat(r.getBytes()),s=new TLSerialization({mtproto:!0});s.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,o)}),console.log(dT(),"Send req_DH_params"),a(e.dcID,s.getBuffer()).then(function(n){var r=n.data,o=r.fetchObject("Server_DH_Params","RESPONSE");if("server_DH_params_fail"!=o._&&"server_DH_params_ok"!=o._)return t.reject(new Error("Server_DH_Params response invalid: "+o._)),!1;if(!bytesCmp(e.nonce,o.nonce))return t.reject(new Error("Server_DH_Params nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,o.server_nonce))return t.reject(new Error("Server_DH_Params server_nonce mismatch")),!1;if("server_DH_params_fail"==o._){var s=sha1Hash(e.newNonce).slice(-16);return bytesCmp(s,o.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{h(e,o.encrypted_answer)}catch(i){return t.reject(i),!1}u(e)},function(e){t.reject(e)})}function h(e,t){e.localTime=tsNow(),e.tmpAesKey=sha1Hash(e.newNonce.concat(e.serverNonce)).concat(sha1Hash(e.serverNonce.concat(e.newNonce)).slice(0,12)),e.tmpAesIv=sha1Hash(e.serverNonce.concat(e.newNonce)).slice(12).concat(sha1Hash([].concat(e.newNonce,e.newNonce)),e.newNonce.slice(0,4));var n=aesDecrypt(t,e.tmpAesKey,e.tmpAesIv),o=n.slice(0,20),s=n.slice(20),i=bytesToArrayBuffer(s),a=new TLDeserialization(i,{mtproto:!0}),c=a.fetchObject("Server_DH_inner_data");if("server_DH_inner_data"!=c._)throw new Error("server_DH_inner_data response invalid: "+constructor);if(!bytesCmp(e.nonce,c.nonce))throw new Error("server_DH_inner_data nonce mismatch");if(!bytesCmp(e.serverNonce,c.server_nonce))throw new Error("server_DH_inner_data serverNonce mismatch");console.log(dT(),"Done decrypting answer"),e.g=c.g,e.dhPrime=c.dh_prime,e.gA=c.g_a,e.serverTime=c.server_time,e.retry=0;var f=a.getOffset();if(!bytesCmp(o,sha1Hash(s.slice(0,f))))throw new Error("server_DH_inner_data SHA1-hash mismatch");r.applyServerTime(e.serverTime,e.localTime)}function u(e){var t=e.deferred;e.b=new Array(256),n.nextBytes(e.b);var r=new BigInteger(e.b),o=new BigInteger(e.dhPrime),s=bytesFromBigInt(bigint(e.g).modPow(r,o)),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:s},"Client_DH_Inner_Data");var c=sha1Hash(i.getBuffer()).concat(i.getBytes()),f=aesEncrypt(c,e.tmpAesKey,e.tmpAesIv),h=new TLSerialization({mtproto:!0});h.storeMethod("set_client_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,encrypted_data:f}),console.log(dT(),"Send set_client_DH_params"),a(e.dcID,h.getBuffer()).then(function(n){var r=n.data,o=r.fetchObject("Set_client_DH_params_answer");if("dh_gen_ok"!=o._&&"dh_gen_retry"!=o._&&"dh_gen_fail"!=o._)return t.reject(new Error("Set_client_DH_params_answer response invalid: "+o._)),!1;if(!bytesCmp(e.nonce,o.nonce))return t.reject(new Error("Set_client_DH_params_answer nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,o.server_nonce))return t.reject(new Error("Set_client_DH_params_answer server_nonce mismatch")),!1;var s=new BigInteger(e.b),i=new BigInteger(e.dhPrime),a=bytesFromBigInt(new BigInteger(e.gA).modPow(s,i)),c=sha1Hash(a),f=c.slice(0,8),h=c.slice(-8);switch(console.log(dT(),"Got Set_client_DH_params_answer",o._),o._){case"dh_gen_ok":var d=sha1Hash(e.newNonce.concat([1],f)).slice(-16);if(!bytesCmp(d,o.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=h,e.authKey=a,e.serverSalt=l,t.resolve(e);break;case"dh_gen_retry":var g=sha1Hash(e.newNonce.concat([2],f)).slice(-16);return bytesCmp(g,o.new_nonce_hash2)?u(e):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash2 mismatch")),!1);case"dh_gen_fail":var p=sha1Hash(e.newNonce.concat([3],f)).slice(-16);return bytesCmp(p,o.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)})}function d(t){if(void 0!==l[t])return l[t];for(var n=[],r=0;16>r;r++)n.push(nextRandomInt(255));if(!e.chooseServer(t))return s.reject(new Error("No server found for dc "+t));var o={dcID:t,nonce:n,deferred:s.defer()};return i(function(){c(o)}),l[t]=o.deferred.promise}var l={};return{auth:d}}]).factory("MtpAesService",["$q",function(e){return{encrypt:function(t,n,r){return e.when(aesEncrypt(t,n,r))},decrypt:function(t,n,r){return e.when(aesDecrypt(t,n,r))}}}]).factory("MtpSha1Service",["$q",function(e){return{hash:function(t){var n=e.defer();return setTimeout(function(){n.resolve(sha1Hash(t))},0),n.promise}}}]).factory("MtpNetworkerFactory",["MtpDcConfigurator","MtpMessageIdGenerator","MtpSecureRandom","MtpSha1Service","MtpAesService","AppConfigManager","$http","$q","$timeout","$interval","$rootScope",function(e,t,n,r,o,s,i,a,c,f,h){function u(e,t,n,r){r=r||{},this.dcID=e,this.iii=l++,this.authKey=t,this.authKeyID=sha1Hash(t).slice(-8),this.serverSalt=n,this.upload=r.fileUpload||r.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=f(this.checkLongPoll.bind(this),1e4),this.checkLongPoll(),g||(g=!0,h.offline=!0,h.offlineConnecting=!0)}var d,l=0,g=!1;return h.retryOnline=function(){$(document.body).trigger("online")},u.prototype.updateSession=function(){console.log(dT(),"Update session"),this.seqNo=0,this.sessionID=new Array(8),n.nextBytes(this.sessionID)},u.prototype.updateSentMessage=function(e){var n=this.sentMessages[e];if(!n)return!1;var r=this;if(n.container){var o=[];angular.forEach(n.inner,function(e){var t=r.updateSentMessage(e);t&&o.push(t.msg_id)}),n.inner=o}return n.msg_id=t.generateID(),n.seq_no=this.generateSeqNo(n.notContentRelated||n.container),this.sentMessages[n.msg_id]=n,delete r.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,r){var o=new TLSerialization({mtproto:!0});o.storeMethod(e,n);var s=t.generateID(),i=this.generateSeqNo(),a={msg_id:s,seq_no:i,body:o.getBytes()};return window._debugMode&&console.log(dT(),"MT call",e,n,s,i),this.pushMessage(a,r)},u.prototype.wrapMtpMessage=function(e,n){n=n||{};var r=new TLSerialization({mtproto:!0});r.storeObject(e,"Object");var o=t.generateID(),s=this.generateSeqNo(n.notContentRelated),i={msg_id:o,seq_no:s,body:r.getBytes()};return window._debugMode&&console.log(dT(),"MT message",e,o,s),this.pushMessage(i,n)},u.prototype.wrapApiCall=function(e,n,r){var o=new TLSerialization(r);this.connectionInited||(o.storeInt(3718647100,"invokeWithLayer12"),o.storeInt(1769565673,"initConnection"),o.storeInt(2496,"api_id"),o.storeString(navigator.userAgent||"Unknown UserAgent","device_model"),o.storeString(navigator.platform||"Unknown Platform","system_version"),o.storeString("0.1","app_version"),o.storeString(navigator.language||"en","lang_code")),r.afterMessageID&&(o.storeInt(3416209197,"invokeAfterMsg"),o.storeLong(r.afterMessageID,"msg_id")),o.storeMethod(e,n);var s=t.generateID(),i=this.generateSeqNo(),a={msg_id:s,seq_no:i,body:o.getBytes(),isAPI:!0};return window._debugMode?console.log(dT(),"Api call",e,n,s,i,r):console.log(dT(),"Api call",e,s,i),this.pushMessage(a,r)},u.prototype.checkLongPoll=function(){var e=this.cleanupSent();if(this.longPollPending&&tsNow()=a)&&((o=h.sentMessages[t])&&(s.push(o),i+=o.body.length+32,o.isAPI?c=!0:o.longPoll&&(f=!0)),delete h.pendingMessages[t])}),c&&!f){var u=new TLSerialization({mtproto:!0});u.storeMethod("http_wait",{max_delay:0,wait_after:0,max_wait:1e3}),s.push({msg_id:t.generateID(),seq_no:this.generateSeqNo(),body:u.getBytes()})}if(s.length){var d=[];if(s.length>1){var l=new TLSerialization({mtproto:!0,startMaxLength:i+64});l.storeInt(1945237724,"CONTAINER[id]"),l.storeInt(s.length,"CONTAINER[count]");for(var g=[],n=0;ns;s++)this.processMessage(e.messages[s],n,r);break;case"bad_server_salt":console.log(dT(),"Bad server salt",e);var i=this.sentMessages[e.bad_msg_id];if(!i||i.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 i=this.sentMessages[e.bad_msg_id];if(!i||i.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))&&this.updateSession();var a=this.updateSentMessage(e.bad_msg_id);this.pushResend(a.msg_id),this.ackMessage(n)}break;case"message":this.serverMessages.push(e.msg_id),this.processMessage(e.body,e.msg_id,r);break;case"new_session_created":this.ackMessage(n),this.processMessageAck(e.first_msg_id),this.applyServerSalt(e.server_salt),this.onSessionCreate(r,n);break;case"msgs_ack":for(var s=0;s=w||!t||!t.length)return!1;var n=t.shift(),r=n.activeDelta||1;b[e]+=r;I++;n.cb().then(function(t){b[e]-=r,o(e),n.deferred.resolve(t)},function(t){b[e]-=r,o(e),n.deferred.reject(t)})}function s(){if(g)return g;if(n.requestFileSystem=n.requestFileSystem||n.webkitRequestFileSystem,!n.requestFileSystem)return g=t.reject({type:"FS_BROWSER_UNSUPPORTED",description:"requestFileSystem not present"});var e=t.defer();return n.requestFileSystem(n.TEMPORARY,5242880,function(t){l=t,e.resolve()},function(t){e.reject(t)}),g=e.promise}function i(e,n){var r=t.defer();return e.onwriteend=function(){r.resolve()},e.onerror=function(){r.reject()},e.write(new Blob([bytesToArrayBuffer(n)])),r.promise}function a(e){switch(e._){case"inputVideoFileLocation":return"video"+e.id+".mp4";case"inputDocumentFileLocation":return"doc"+e.id;case"inputAudioFileLocation":return"audio"+e.id}return e.volume_id||console.trace("Empty location",e),e.volume_id+"_"+e.local_id+"_"+e.secret+".jpg"}function c(e){if(!e)return!1;var t=a(e);return v[t]||!1}function f(e,n){var r=a(e);if(y[r])return y[r];var o,c=t.defer(),f=function(e){c.reject(e),o&&o.truncate(0),f=angular.noop};return s().then(function(){l.root.getFile(r,{create:!1},function(e){c.resolve(v[r]=e.toURL())},function(){l.root.getFile(r,{create:!0},function(e){e.createWriter(function(t){o=t,i(t,n).then(function(){c.resolve(v[r]=e.toURL())},f)},f)},f)})},function(){c.resolve("data:image/jpeg;base64,"+bytesToBase64(n))}),y[r]=c.promise}function h(n){var o=a(n),c=y[o]||m[o];if(c)return c;var f,h=t.defer(),u=function(e){h.reject(e),f&&f.truncate(0),u=angular.noop},d=function(){l.root.getFile(o,{create:!0},function(t){var s=r(n.dc_id,function(){return e.invokeApi("upload.getFile",{location:angular.extend({},n,{_:"inputFileLocation"}),offset:0,limit:0},{dcID:n.dc_id,fileDownload:!0,createNetworker:!0})});t.createWriter(function(e){f=e,s.then(function(n){i(e,n.bytes).then(function(){h.resolve(v[o]=t.toURL())},u)},u)},u)},u)};return s().then(function(){l.root.getFile(o,{create:!1},function(e){e.file(function(t){t.size?h.resolve(v[o]=e.toURL()):(console.log("Small file empty",t),d())},u)},d)},function(){r(n.dc_id,function(){return e.invokeApi("upload.getFile",{location:angular.extend({},n,{_:"inputFileLocation"}),offset:0,limit:0},{dcID:n.dc_id,fileDownload:!0,createNetworker:!0})}).then(function(e){h.resolve(v[o]="data:image/jpeg;base64,"+bytesToBase64(e.bytes))},u)}),m[o]=h.promise}function u(n,o,c,f,h){h=h||{},console.log(dT(),"Dload file",n,o,c);var u=a(o),d=y[u]||m[u];if(d)return d;var g,p=t.defer(),_=function(e){console.error(e),p.reject(e),g&&g.truncate(0),_=angular.noop},b=function(s){s.createWriter(function(a){g=a;for(var f,d=524288,l=t.when(),y=0;c>y;y+=d)f=t.defer(),function(t,f,l,g){return r(n,function(){return e.invokeApi("upload.getFile",{location:o,offset:f,limit:d},{dcID:n,fileDownload:!0,createNetworker:!0})},6).then(function(e){g.then(function(){return i(a,e.bytes).then(function(){l.resolve()},_).then(function(){t?p.resolve(v[u]=s.toURL(h.mime||"image/jpeg")):p.notify({done:f+d,total:c})})})})}(y+d>=c,y,f,l),l=f.promise},_)};return f?b(f):s().then(function(){l.root.getFile(u,{create:!1},function(e){e.file(function(t){t.size>=c?p.resolve(v[u]=e.toURL()):(console.log("File bad size",t,c),l.root.getFile(u,{create:!0},b,_))},_)},function(){l.root.getFile(u,{create:!0},b,_)})},function(){for(var s,i=[],a=c>30400?524288:4096,f=t.when(),d=0;c>d;d+=a)s=t.defer(),function(t,s,f,d){return r(n,function(){return e.invokeApi("upload.getFile",{location:o,offset:s,limit:a},{dcID:n,fileDownload:!0,createNetworker:!0})},6).then(function(e){d.then(function(){try{if(i.push(bytesToArrayBuffer(e.bytes)),f.resolve(),t){try{var n=new Blob(i,{type:h.mime||"image/jpeg"})}catch(r){window.BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder;var o=new BlobBuilder;angular.forEach(i,function(e){o.append(e)});var n=o.getBlob(h.mime||"image/jpeg")}window.URL=window.URL||window.webkitURL,p.resolve(v[u]=URL.createObjectURL(n))}else p.notify({done:s+a,total:c})}catch(r){_(r)}},_)})}(d+a>=c,d,s,f),f=s.promise}),m[u]=p.promise}function d(n){var r=n.size,o=r>102400?524288:4096,s=Math.ceil(r/o),i=0;if(s>1500)return t.reject({type:"FILE_TOO_BIG"});var a,c=[nextRandomInt(4294967295),nextRandomInt(4294967295)],f=t.defer(),h=function(e){console.error("Error",e),f.reject(e),h=angular.noop},u=0,d={_:"inputFile",id:c,parts:s,name:n.name,md5_checksum:""},l=t.when();for(a=0;r>a;a+=o)!function(a,u){l=l.then(function(){var l=t.defer(),g=new FileReader,y=n.slice(a,a+o);return g.onloadend=function(t){if(t.target.readyState==FileReader.DONE){var n=p=p.then(function(){return e.invokeApi("upload.saveFilePart",{file_id:c,file_part:u,bytes:bytesFromArrayBuffer(t.target.result)},{startMaxLength:o+256,fileUpload:!0})},h);n.then(function(){i++,l.resolve(),i>=s?f.resolve(d):(console.log(dT(),"Progress",i*o/r),f.notify({done:i*o,total:r}))},h)}},g.readAsArrayBuffer(y),l.promise})}(a,u++);return f.promise}var l=!1,g=!1,p=t.when(),y={},m={},v={},_={},b={},w=5,I=0;return{getCachedFile:c,downloadFile:u,downloadSmallFile:h,saveSmallFile:f,uploadFile:d}}]); +function bigint(e){return new BigInteger(e.toString(16),16)}function bigStringInt(e){return new BigInteger(e,10)}function dHexDump(e){for(var t=[],n=0;nt;t+=2)r.push(parseInt(e.substr(t,2),16));return r}function bytesToBase64(e){for(var t,n="",r=e.length,o=0,s=0;r>s;s++)t=s%3,o|=e[s]<<(16>>>t&24),(2===t||r-s===1)&&(n+=String.fromCharCode(uint6ToBase64(o>>>18&63),uint6ToBase64(o>>>12&63),uint6ToBase64(o>>>6&63),uint6ToBase64(63&o)),o=0);return n.replace(/A(?=A$|$)/g,"=")}function uint6ToBase64(e){return 26>e?e+65:52>e?e+71:62>e?e-4:62===e?43:63===e?47:65}function bytesCmp(e,t){var n=e.length;if(n!=t.length)return!1;for(var r=0;n>r;r++)if(e[r]!=t[r])return!1;return!0}function bytesXor(e,t){for(var n=e.length,r=[],o=0;n>o;++o)r[o]=e[o]^t[o];return r}function bytesToWords(e){for(var t=e.length,n=[],r=0;t>r;r++)n[r>>>2]|=e[r]<<24-r%4*8;return new CryptoJS.lib.WordArray.init(n,t)}function bytesFromWords(e){for(var t=e.words,n=e.sigBytes,r=[],o=0;n>o;o++)r.push(t[o>>>2]>>>24-o%4*8&255);return r}function bytesFromBigInt(e,t){for(var n=e.toByteArray();!n[0]&&(!t||n.length>t);)n=n.slice(1);return n}function bytesToArrayBuffer(e){return new Uint8Array(e).buffer}function bytesFromArrayBuffer(e){for(var t=e.byteLength,n=new Uint8Array(e),r=[],o=0;t>o;++o)r[o]=n[o];return r}function longToInts(e){var t=bigStringInt(e).divideAndRemainder(bigint(4294967296));return[t[0].intValue(),t[1].intValue()]}function longToBytes(e){return bytesFromWords({words:longToInts(e),sigBytes:8}).reverse()}function longFromInts(e,t){return bigint(e).shiftLeft(32).add(bigint(t)).toString(10)}function intToUint(e){return e=parseInt(e),0>e&&(e+=4294967296),e}function uintToInt(e){return e>2147483647&&(e-=4294967296),e}function sha1Hash(e){var t=sha1.hash(e,!0);return t}function rsaEncrypt(e,t){var n=255-t.length;if(n>0){var r=new Array(n);(new SecureRandom).nextBytes(r),t=t.concat(r)}var o=new BigInteger(e.modulus,16),s=new BigInteger(e.exponent,16),i=new BigInteger(t),a=i.modPowInt(s,o),c=bytesFromBigInt(a,256);return c}function aesEncrypt(e,t,n){var r=16-e.length%16;if(r>0&&16>r){var o=new Array(r);(new SecureRandom).nextBytes(o),e=e.concat(o)}var s=CryptoJS.AES.encrypt(bytesToWords(e),bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}).ciphertext,i=bytesFromWords(s);return i}function aesDecrypt(e,t,n){var r=CryptoJS.AES.decrypt({ciphertext:bytesToWords(e)},bytesToWords(t),{iv:bytesToWords(n),padding:CryptoJS.pad.NoPadding,mode:CryptoJS.mode.IGE}),o=bytesFromWords(r);return o}function gzipUncompress(e){var t=new Zlib.Gunzip(e).decompress();return t}function nextRandomInt(e){return Math.floor(Math.random()*e)}function pqPrimeFactorization(e){var t=new BigInteger(e),n=!1;if(console.log("PQ start",e,t.bitLength()),t.bitLength()<=64)try{n=pqPrimeLong(goog.math.Long.fromString(t.toString(16),16))}catch(r){console.error("Pq long Exception",r)}return n===!1&&(n=pqPrimeBigInteger(t)),console.log("PQ finish"),n}function pqPrimeBigInteger(e){for(var t,n=0,r=0;3>r;r++){for(var o=(15&nextRandomInt(128))+17,s=bigint(nextRandomInt(1e9)+1),i=s.clone(),a=1<c;c++){++n;for(var f=s.clone(),h=s.clone(),u=bigint(o);!h.equals(BigInteger.ZERO);)h.and(BigInteger.ONE).equals(BigInteger.ZERO)||(u=u.add(f),u.compareTo(e)>0&&(u=u.subtract(e))),f=f.add(f),f.compareTo(e)>0&&(f=f.subtract(e)),h=h.shiftRight(1);s=u.clone();var d=s.compareTo(i)<0?i.subtract(s):s.subtract(i);if(t=d.gcd(e),!t.equals(BigInteger.ONE))break;0==(c&c-1)&&(i=s.clone())}if(t.compareTo(BigInteger.ONE)>0)break}var l,g,p=e.divide(t);return t.compareTo(p)>0?(l=p,g=t):(l=t,g=p),[bytesFromBigInt(l),bytesFromBigInt(g)]}function gcdLong(e,t){for(;e.notEquals(goog.math.Long.ZERO)&&t.notEquals(goog.math.Long.ZERO);){for(;t.and(goog.math.Long.ONE).equals(goog.math.Long.ZERO);)t=t.shiftRight(1);for(;e.and(goog.math.Long.ONE).equals(goog.math.Long.ZERO);)e=e.shiftRight(1);e.compare(t)>0?e=e.subtract(t):t=t.subtract(e)}return t.equals(goog.math.Long.ZERO)?e:t}function pqPrimeLong(e){for(var t,n=0,r=0;3>r;r++){for(var o=goog.math.Long.fromInt((15&nextRandomInt(128))+17),s=goog.math.Long.fromInt(nextRandomInt(1e9)+1),i=s,a=1<c;c++){++n;for(var f=s,h=s,u=o;h.notEquals(goog.math.Long.ZERO);)h.and(goog.math.Long.ONE).notEquals(goog.math.Long.ZERO)&&(u=u.add(f),u.compare(e)>0&&(u=u.subtract(e))),f=f.add(f),f.compare(e)>0&&(f=f.subtract(e)),h=h.shiftRight(1);s=u;var d=s.compare(i)<0?i.subtract(s):s.subtract(i);if(t=gcdLong(d,e),t.notEquals(goog.math.Long.ONE))break;0==(c&c-1)&&(i=s)}if(t.compare(goog.math.Long.ONE)>0)break}var l,g,p=e.div(t);return t.compare(p)>0?(l=p,g=t):(l=t,g=p),[bytesFromHex(l.toString(16)),bytesFromHex(g.toString(16))]}function TLSerialization(e){return e=e||{},this.maxLength=e.startMaxLength||2048,this.offset=0,this.createBuffer(),this.mtproto=e.mtproto||!1,this}function TLDeserialization(e,t){return t=t||{},this.offset=0,this.buffer=e,this.intView=new Uint32Array(this.buffer),this.byteView=new Uint8Array(this.buffer),this.mtproto=t.mtproto||!1,this}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(){for(var e=[],t=0;t>>",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);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),r=new Float64Array(t);r[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");var n=unescape(encodeURIComponent(e));this.checkLength(n.length+8);var r=n.length;253>=r?this.byteView[this.offset++]=r:(this.byteView[this.offset++]=254,this.byteView[this.offset++]=255&r,this.byteView[this.offset++]=(65280&r)>>8,this.byteView[this.offset++]=(16711680&r)>>16);for(var o=0;r>o;o++)this.byteView[this.offset++]=n.charCodeAt(o);for(;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeBytes=function(e,t){this.debug&&console.log(">>>",bytesToHex(e),(t||"")+":bytes"),this.checkLength(e.length+8);var n=e.length;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);for(var r=0;n>r;r++)this.byteView[this.offset++]=e[r];for(;this.offset%4;)this.byteView[this.offset++]=0},TLSerialization.prototype.storeIntBytes=function(e,t,n){var r=e.length;if(t%32||8*r!=t)throw new Error("Invalid bits: "+t+", "+e.length);this.debug&&console.log(">>>",bytesToHex(e),(n||"")+":int"+t),this.checkLength(r);for(var o=0;r>o;o++)this.byteView[this.offset++]=e[o]},TLSerialization.prototype.storeRawBytes=function(e,t){var n=e.length;this.debug&&console.log(">>>",bytesToHex(e),t||""),this.checkLength(n);for(var r=0;n>r;r++)this.byteView[this.offset++]=e[r]},TLSerialization.prototype.storeMethod=function(e,t){var n,r=this.mtproto?Config.Schema.MTProto:Config.Schema.API,o=!1;for(n=0;n=4*this.intView.length)throw new Error("Nothing to fetch");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),r=new Float64Array(t);return n[0]=this.readInt((e||"")+":double[low]"),n[1]=this.readInt((e||"")+":double[high]"),r[0]},TLDeserialization.prototype.fetchLong=function(e){var t=this.readInt((e||"")+":long[low]"),n=this.readInt((e||"")+":long[high]"),r=bigint(n).shiftLeft(32).add(bigint(t)).toString();return r},TLDeserialization.prototype.fetchBool=function(e){var t=this.readInt((e||"")+":bool");if(2574415285==t)return!0;if(3162085175==t)return!1;throw new Error("Unknown Bool constructor "+t)},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="",r=0;t>r;r++)n+=String.fromCharCode(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;try{var o=decodeURIComponent(escape(n))}catch(s){var o=n}return this.debug&&console.log("<<<",o,(e||"")+":string"),o},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;for(var n=[],r=0;t>r;r++)n.push(this.byteView[this.offset++]);for(;this.offset%4;)this.offset++;return this.debug&&console.log("<<<",bytesToHex(n),(e||"")+":bytes"),n},TLDeserialization.prototype.fetchIntBytes=function(e,t){if(e%32)throw new Error("Invalid bits: "+e);for(var n=e/8,r=[],o=0;n>o;o++)r.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(r),(t||"")+":int"+e),r},TLDeserialization.prototype.fetchRawBytes=function(e,t){e===!1&&(e=this.readInt((t||"")+"_length"));for(var n=[],r=0;e>r;r++)n.push(this.byteView[this.offset++]);return this.debug&&console.log("<<<",bytesToHex(n),t||""),n},TLDeserialization.prototype.fetchObject=function(e,t){switch(e){case"int":return this.fetchInt(t);case"long":return this.fetchLong(t);case"int128":return this.fetchIntBytes(128,t);case"int256":return this.fetchIntBytes(256,t);case"int512":return this.fetchIntBytes(512,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 r=this.readInt(t+"[count]"),o=[];if(r>0)for(var s=e.substr(7,e.length-8),i=0;r>i;i++)o.push(this.fetchObject(s,t+"["+i+"]"));return o}var a=this.mtproto?Config.Schema.MTProto:Config.Schema.API,c=!1,f=!1;if("%"==e.charAt(0)){var h=e.substr(1);for(i=0;i=97&&e.charAt(0)<=122){for(i=0;ii[0]||r[0]==i[0]&&r[1]>=i[1])&&(i=[r[0],r[1]+4]),r=i,longFromInts(i[0],i[1])}function n(t,n){var s=t-Math.floor((n||tsNow())/1e3),i=Math.abs(o-s)>10;return e.set({server_time_offset:s}),r=[0,0],o=s,console.log("Apply server time",t,n,s,i),i}var r=[0,0],o=0;return e.get("server_time_offset").then(function(e){e&&(o=e)}),{generateID:t,applyServerTime:n}}]).factory("MtpAuthorizer",["MtpDcConfigurator","MtpRsaKeysManager","MtpSecureRandom","MtpMessageIdGenerator","$http","$q","$timeout",function(e,t,n,r,o,s,i){function a(t,n){var s=n.byteLength,i=new Int32Array(n),a=new TLSerialization;a.storeLongP(0,0,"auth_key_id"),a.storeLong(r.generateID(),"msg_id"),a.storeInt(s,"request_length");var c=a.getBuffer(),f=new Int32Array(c),h=c.byteLength,u=new ArrayBuffer(h+s),d=new Int32Array(u);return d.set(f),d.set(i,f.length),delete o.defaults.headers.post["Content-Type"],delete o.defaults.headers.common.Accept,"ArrayBufferView"in window||(d=d.buffer),o.post("http://"+e.chooseServer(t)+"/apiw1",d,{responseType:"arraybuffer",transformRequest:null,transformResponse:function(e){{var t=new TLDeserialization(e,{mtproto:!0});t.fetchLong("auth_key_id"),t.fetchLong("msg_id"),t.fetchInt("msg_len")}return rng_seed_time(),t}})}function c(e){var n=e.deferred,r=new TLSerialization({mtproto:!0});r.storeMethod("req_pq",{nonce:e.nonce}),console.log(dT(),"Send req_pq",bytesToHex(e.nonce)),a(e.dcID,r.getBuffer()).then(function(r){var o=r.data,s=o.fetchObject("ResPQ");if("resPQ"!=s._)throw new Error("resPQ response invalid: "+s._);if(!bytesCmp(e.nonce,s.nonce))throw new Error("resPQ nonce mismatch");if(e.serverNonce=s.server_nonce,e.pq=s.pq,e.fingerprints=s.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");if(console.log(dT(),"PQ factorization start"),window.Worker){var i=new Worker("js/lib/pq_worker.js");i.onmessage=function(t){e.p=t.data[0],e.q=t.data[1],console.log(dT(),"PQ factorization done"),f(e)},i.onerror=function(e){console.log("Worker error",e,e.stack),n.reject(e)},i.postMessage(e.pq)}else{var a=pqPrimeFactorization(e.pq);e.p=a[0],e.q=a[1],console.log(dT(),"PQ factorization done"),f(e)}},function(e){n.reject(e)}),i(function(){t.prepare()})}function f(e){var t=e.deferred;e.newNonce=new Array(32),n.nextBytes(e.newNonce);var r=new TLSerialization({mtproto:!0});r.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 o=sha1Hash(r.getBuffer()).concat(r.getBytes()),s=new TLSerialization({mtproto:!0});s.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,o)}),console.log(dT(),"Send req_DH_params"),a(e.dcID,s.getBuffer()).then(function(n){var r=n.data,o=r.fetchObject("Server_DH_Params","RESPONSE");if("server_DH_params_fail"!=o._&&"server_DH_params_ok"!=o._)return t.reject(new Error("Server_DH_Params response invalid: "+o._)),!1;if(!bytesCmp(e.nonce,o.nonce))return t.reject(new Error("Server_DH_Params nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,o.server_nonce))return t.reject(new Error("Server_DH_Params server_nonce mismatch")),!1;if("server_DH_params_fail"==o._){var s=sha1Hash(e.newNonce).slice(-16);return bytesCmp(s,o.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{h(e,o.encrypted_answer)}catch(i){return t.reject(i),!1}u(e)},function(e){t.reject(e)})}function h(e,t){e.localTime=tsNow(),e.tmpAesKey=sha1Hash(e.newNonce.concat(e.serverNonce)).concat(sha1Hash(e.serverNonce.concat(e.newNonce)).slice(0,12)),e.tmpAesIv=sha1Hash(e.serverNonce.concat(e.newNonce)).slice(12).concat(sha1Hash([].concat(e.newNonce,e.newNonce)),e.newNonce.slice(0,4));var n=aesDecrypt(t,e.tmpAesKey,e.tmpAesIv),o=n.slice(0,20),s=n.slice(20),i=bytesToArrayBuffer(s),a=new TLDeserialization(i,{mtproto:!0}),c=a.fetchObject("Server_DH_inner_data");if("server_DH_inner_data"!=c._)throw new Error("server_DH_inner_data response invalid: "+constructor);if(!bytesCmp(e.nonce,c.nonce))throw new Error("server_DH_inner_data nonce mismatch");if(!bytesCmp(e.serverNonce,c.server_nonce))throw new Error("server_DH_inner_data serverNonce mismatch");console.log(dT(),"Done decrypting answer"),e.g=c.g,e.dhPrime=c.dh_prime,e.gA=c.g_a,e.serverTime=c.server_time,e.retry=0;var f=a.getOffset();if(!bytesCmp(o,sha1Hash(s.slice(0,f))))throw new Error("server_DH_inner_data SHA1-hash mismatch");r.applyServerTime(e.serverTime,e.localTime)}function u(e){var t=e.deferred;e.b=new Array(256),n.nextBytes(e.b);var r=new BigInteger(e.b),o=new BigInteger(e.dhPrime),s=bytesFromBigInt(bigint(e.g).modPow(r,o)),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:s},"Client_DH_Inner_Data");var c=sha1Hash(i.getBuffer()).concat(i.getBytes()),f=aesEncrypt(c,e.tmpAesKey,e.tmpAesIv),h=new TLSerialization({mtproto:!0});h.storeMethod("set_client_DH_params",{nonce:e.nonce,server_nonce:e.serverNonce,encrypted_data:f}),console.log(dT(),"Send set_client_DH_params"),a(e.dcID,h.getBuffer()).then(function(n){var r=n.data,o=r.fetchObject("Set_client_DH_params_answer");if("dh_gen_ok"!=o._&&"dh_gen_retry"!=o._&&"dh_gen_fail"!=o._)return t.reject(new Error("Set_client_DH_params_answer response invalid: "+o._)),!1;if(!bytesCmp(e.nonce,o.nonce))return t.reject(new Error("Set_client_DH_params_answer nonce mismatch")),!1;if(!bytesCmp(e.serverNonce,o.server_nonce))return t.reject(new Error("Set_client_DH_params_answer server_nonce mismatch")),!1;var s=new BigInteger(e.b),i=new BigInteger(e.dhPrime),a=bytesFromBigInt(new BigInteger(e.gA).modPow(s,i)),c=sha1Hash(a),f=c.slice(0,8),h=c.slice(-8);switch(console.log(dT(),"Got Set_client_DH_params_answer",o._),o._){case"dh_gen_ok":var d=sha1Hash(e.newNonce.concat([1],f)).slice(-16);if(!bytesCmp(d,o.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=h,e.authKey=a,e.serverSalt=l,t.resolve(e);break;case"dh_gen_retry":var g=sha1Hash(e.newNonce.concat([2],f)).slice(-16);return bytesCmp(g,o.new_nonce_hash2)?u(e):(t.reject(new Error("Set_client_DH_params_answer new_nonce_hash2 mismatch")),!1);case"dh_gen_fail":var p=sha1Hash(e.newNonce.concat([3],f)).slice(-16);return bytesCmp(p,o.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)})}function d(t){if(void 0!==l[t])return l[t];for(var n=[],r=0;16>r;r++)n.push(nextRandomInt(255));if(!e.chooseServer(t))return s.reject(new Error("No server found for dc "+t));var o={dcID:t,nonce:n,deferred:s.defer()};return i(function(){c(o)}),l[t]=o.deferred.promise}var l={};return{auth:d}}]).factory("MtpAesService",["$q",function(e){return{encrypt:function(t,n,r){return e.when(aesEncrypt(t,n,r))},decrypt:function(t,n,r){return e.when(aesDecrypt(t,n,r))}}}]).factory("MtpSha1Service",["$q",function(e){return{hash:function(t){var n=e.defer();return setTimeout(function(){n.resolve(sha1Hash(t))},0),n.promise}}}]).factory("MtpNetworkerFactory",["MtpDcConfigurator","MtpMessageIdGenerator","MtpSecureRandom","MtpSha1Service","MtpAesService","AppConfigManager","$http","$q","$timeout","$interval","$rootScope",function(e,t,n,r,o,s,i,a,c,f,h){function u(e,t,n,r){r=r||{},this.dcID=e,this.iii=l++,this.authKey=t,this.authKeyID=sha1Hash(t).slice(-8),this.serverSalt=n,this.upload=r.fileUpload||r.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=f(this.checkLongPoll.bind(this),1e4),this.checkLongPoll(),g||(g=!0,h.offline=!0,h.offlineConnecting=!0)}var d,l=0,g=!1;return h.retryOnline=function(){$(document.body).trigger("online")},u.prototype.updateSession=function(){console.log(dT(),"Update session"),this.seqNo=0,this.sessionID=new Array(8),n.nextBytes(this.sessionID)},u.prototype.updateSentMessage=function(e){var n=this.sentMessages[e];if(!n)return!1;var r=this;if(n.container){var o=[];angular.forEach(n.inner,function(e){var t=r.updateSentMessage(e);t&&o.push(t.msg_id)}),n.inner=o}return n.msg_id=t.generateID(),n.seq_no=this.generateSeqNo(n.notContentRelated||n.container),this.sentMessages[n.msg_id]=n,delete r.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,r){var o=new TLSerialization({mtproto:!0});o.storeMethod(e,n);var s=t.generateID(),i=this.generateSeqNo(),a={msg_id:s,seq_no:i,body:o.getBytes()};return window._debugMode&&console.log(dT(),"MT call",e,n,s,i),this.pushMessage(a,r)},u.prototype.wrapMtpMessage=function(e,n){n=n||{};var r=new TLSerialization({mtproto:!0});r.storeObject(e,"Object");var o=t.generateID(),s=this.generateSeqNo(n.notContentRelated),i={msg_id:o,seq_no:s,body:r.getBytes()};return window._debugMode&&console.log(dT(),"MT message",e,o,s),this.pushMessage(i,n)},u.prototype.wrapApiCall=function(e,n,r){var o=new TLSerialization(r);this.connectionInited||(o.storeInt(3718647100,"invokeWithLayer12"),o.storeInt(1769565673,"initConnection"),o.storeInt(2496,"api_id"),o.storeString(navigator.userAgent||"Unknown UserAgent","device_model"),o.storeString(navigator.platform||"Unknown Platform","system_version"),o.storeString("0.1","app_version"),o.storeString(navigator.language||"en","lang_code")),r.afterMessageID&&(o.storeInt(3416209197,"invokeAfterMsg"),o.storeLong(r.afterMessageID,"msg_id")),o.storeMethod(e,n);var s=t.generateID(),i=this.generateSeqNo(),a={msg_id:s,seq_no:i,body:o.getBytes(),isAPI:!0};return window._debugMode?console.log(dT(),"Api call",e,n,s,i,r):console.log(dT(),"Api call",e,s,i),this.pushMessage(a,r)},u.prototype.checkLongPoll=function(){var e=this.cleanupSent();if(this.longPollPending&&tsNow()=a)&&((o=h.sentMessages[t])&&(s.push(o),i+=o.body.length+32,o.isAPI?c=!0:o.longPoll&&(f=!0)),delete h.pendingMessages[t])}),c&&!f){var u=new TLSerialization({mtproto:!0});u.storeMethod("http_wait",{max_delay:0,wait_after:0,max_wait:1e3}),s.push({msg_id:t.generateID(),seq_no:this.generateSeqNo(),body:u.getBytes()})}if(s.length){var d=[];if(s.length>1){var l=new TLSerialization({mtproto:!0,startMaxLength:i+64});l.storeInt(1945237724,"CONTAINER[id]"),l.storeInt(s.length,"CONTAINER[count]");for(var g=[],n=0;ns;s++)this.processMessage(e.messages[s],n,r);break;case"bad_server_salt":console.log(dT(),"Bad server salt",e);var i=this.sentMessages[e.bad_msg_id];if(!i||i.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 i=this.sentMessages[e.bad_msg_id];if(!i||i.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))&&this.updateSession();var a=this.updateSentMessage(e.bad_msg_id);this.pushResend(a.msg_id),this.ackMessage(n)}break;case"message":this.serverMessages.push(e.msg_id),this.processMessage(e.body,e.msg_id,r);break;case"new_session_created":this.ackMessage(n),this.processMessageAck(e.first_msg_id),this.applyServerSalt(e.server_salt),this.onSessionCreate(r,n);break;case"msgs_ack":for(var s=0;s=b||!t||!t.length)return!1;var n=t.shift(),r=n.activeDelta||1;w[e]+=r;I++;n.cb().then(function(t){w[e]-=r,o(e),n.deferred.resolve(t)},function(t){w[e]-=r,o(e),n.deferred.reject(t)})}function s(){if(g)return g;if(n.requestFileSystem=n.requestFileSystem||n.webkitRequestFileSystem,!n.requestFileSystem)return g=t.reject({type:"FS_BROWSER_UNSUPPORTED",description:"requestFileSystem not present"});var e=t.defer();return n.requestFileSystem(n.TEMPORARY,5242880,function(t){l=t,e.resolve()},function(t){e.reject(t)}),g=e.promise}function i(e,n){var r=t.defer();return e.onwriteend=function(){r.resolve()},e.onerror=function(){r.reject()},e.write(new Blob([bytesToArrayBuffer(n)])),r.promise}function a(e){switch(e._){case"inputVideoFileLocation":return"video"+e.id+".mp4";case"inputDocumentFileLocation":return"doc"+e.id;case"inputAudioFileLocation":return"audio"+e.id}return e.volume_id||console.trace("Empty location",e),e.volume_id+"_"+e.local_id+"_"+e.secret+".jpg"}function c(e){if(!e)return!1;var t=a(e);return _[t]||!1}function f(e,n){var r=a(e);if(y[r])return y[r];var o,c=t.defer(),f=function(e){c.reject(e),o&&o.truncate(0),f=angular.noop};return s().then(function(){l.root.getFile(r,{create:!1},function(e){c.resolve(_[r]=e.toURL())},function(){l.root.getFile(r,{create:!0},function(e){e.createWriter(function(t){o=t,i(t,n).then(function(){c.resolve(_[r]=e.toURL())},f)},f)},f)})},function(){c.resolve("data:image/jpeg;base64,"+bytesToBase64(n))}),y[r]=c.promise}function h(n){var o=a(n),c=y[o]||m[o];if(c)return c;var f,h=t.defer(),u=function(e){h.reject(e),f&&f.truncate(0),u=angular.noop},d=function(){l.root.getFile(o,{create:!0},function(t){var s=r(n.dc_id,function(){return e.invokeApi("upload.getFile",{location:angular.extend({},n,{_:"inputFileLocation"}),offset:0,limit:0},{dcID:n.dc_id,fileDownload:!0,createNetworker:!0})});t.createWriter(function(e){f=e,s.then(function(n){i(e,n.bytes).then(function(){h.resolve(_[o]=t.toURL())},u)},u)},u)},u)};return s().then(function(){l.root.getFile(o,{create:!1},function(e){e.file(function(t){t.size?h.resolve(_[o]=e.toURL()):(console.log("Small file empty",t),d())},u)},d)},function(){r(n.dc_id,function(){return e.invokeApi("upload.getFile",{location:angular.extend({},n,{_:"inputFileLocation"}),offset:0,limit:0},{dcID:n.dc_id,fileDownload:!0,createNetworker:!0})}).then(function(e){h.resolve(_[o]="data:image/jpeg;base64,"+bytesToBase64(e.bytes))},u)}),m[o]=h.promise}function u(n,o,c,f,h){h=h||{},console.log(dT(),"Dload file",n,o,c);var u=a(o),d=y[u]||m[u];if(d)return d;var g,p=t.defer(),v=!1,w=!1,b=function(e){p.reject(e),g&&g.truncate(0),b=angular.noop},I=function(s){s.createWriter(function(a){g=a;for(var f,d=524288,l=t.when(),y=0;c>y;y+=d)f=t.defer(),function(f,l,g,y){return r(n,function(){return v?t.when():e.invokeApi("upload.getFile",{location:o,offset:l,limit:d},{dcID:n,fileDownload:!0,createNetworker:!0})},6).then(function(e){y.then(function(){return v?t.when():i(a,e.bytes).then(function(){g.resolve()},b).then(function(){f?(w=!0,p.resolve(_[u]=s.toURL(h.mime||"image/jpeg"))):p.notify({done:l+d,total:c})})})})}(y+d>=c,y,f,l),l=f.promise},b)};return f?I(f):s().then(function(){l.root.getFile(u,{create:!1},function(e){e.file(function(t){t.size>=c?(w=!0,p.resolve(_[u]=e.toURL())):(console.log("File bad size",t,c),l.root.getFile(u,{create:!0},I,b))},b)},function(){l.root.getFile(u,{create:!0},I,b)})},function(){for(var s,i=[],a=c>30400?524288:4096,f=t.when(),d=0;c>d;d+=a)s=t.defer(),function(s,f,d,l){return r(n,function(){return v?t.when():e.invokeApi("upload.getFile",{location:o,offset:f,limit:a},{dcID:n,fileDownload:!0,createNetworker:!0})},6).then(function(e){l.then(function(){if(v)return t.when();try{if(i.push(bytesToArrayBuffer(e.bytes)),d.resolve(),s){try{var n=new Blob(i,{type:h.mime||"image/jpeg"})}catch(r){window.BlobBuilder=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder;var o=new BlobBuilder;angular.forEach(i,function(e){o.append(e)});var n=o.getBlob(h.mime||"image/jpeg")}window.URL=window.URL||window.webkitURL,w=!0,p.resolve(_[u]=URL.createObjectURL(n))}else p.notify({done:f+a,total:c})}catch(r){b(r)}},b)})}(d+a>=c,d,s,f),f=s.promise}),p.promise.cancel=function(){v||w||(v=!0,delete m[u],b({type:"DOWNLOAD_CANCELED"}))},m[u]=p.promise}function d(n){var r=n.size,o=r>102400?524288:30720,s=Math.ceil(r/o),i=!1,a=!1,c=0;if(s>1500)return t.reject({type:"FILE_TOO_BIG"});var f,h=[nextRandomInt(4294967295),nextRandomInt(4294967295)],u=t.defer(),d=function(e){u.reject(e),d=angular.noop},l=0,g={_:"inputFile",id:h,parts:s,name:n.name,md5_checksum:""},y=t.when();for(f=0;r>f;f+=o)!function(f,l){y=y.then(function(){var y=t.defer(),m=new FileReader,_=n.slice(f,f+o);return m.onloadend=function(t){if(!i&&t.target.readyState==FileReader.DONE){var n=p=p.then(function(){return e.invokeApi("upload.saveFilePart",{file_id:h,file_part:l,bytes:bytesFromArrayBuffer(t.target.result)},{startMaxLength:o+256,fileUpload:!0})},d);n.then(function(){c++,y.resolve(),c>=s?(u.resolve(g),a=!0):(console.log(dT(),"Progress",c*o/r),u.notify({done:c*o,total:r}))},d)}},m.readAsArrayBuffer(_),y.promise})}(f,l++);return u.promise.cancel=function(){console.log("cancel upload",i,a),i||a||(i=!0,d({type:"UPLOAD_CANCELED"}))},u.promise}var l=!1,g=!1,p=t.when(),y={},m={},_={},v={},w={},b=5,I=0;return{getCachedFile:c,downloadFile:u,downloadSmallFile:h,saveSmallFile:f,uploadFile:d}}]); function dT(){return"["+(((new Date).getTime()-_logTimer)/1e3).toFixed(3)+"]"}function checkClick(e,t){return 1==e.which&&(e.ctrlKey||e.metaKey)||2==e.which?!0:(t||e.preventDefault(),!1)}function checkDragEvent(e){if(!e||e.target&&("IMG"==e.target.tagName||"A"==e.target.tagName))return!1;if(!e.dataTransfer||!e.dataTransfer.types)return!0;for(var t=0;t0,window._debugMode=location.search.indexOf("debug=1")>0,window._osX=-1!=(navigator.platform||"").toLowerCase().indexOf("mac")||-1!=(navigator.userAgent||"").toLowerCase().indexOf("mac"),window._retina=window.devicePixelRatio>1,window._osX||$("body").addClass("non_osx"),$("body").addClass(window._retina?"is_2x":"is_1x"),$(window).on("load",function(){setTimeout(function(){window.scrollTo(0,1)},0)}),angular.module("myApp",["ngRoute","ngAnimate","ngSanitize","ui.bootstrap","pasvaz.bindonce","mtproto.services","myApp.filters","myApp.services","myApp.templates","myApp.directives","myApp.controllers"]).config(["$locationProvider","$routeProvider","$compileProvider",function(e,o,i){var t,n,r,a,s,l,m,p={},d={};for(n=0;n0?{_:"inputPeerForeign",user_id:t,access_hash:e.getUser(t).access_hash||0}:0>t?{_:"inputPeerChat",chat_id:-t}:void 0},getPeerSearchText:function(a){var o;if(a>0)o=e.getUserSearchText(a);else if(0>a){var n=t.getChat(-a);o=n.title||""}return o},getOutputPeer:function(e){return e>0?{_:"peerUser",user_id:e}:{_:"peerChat",chat_id:-e}},getPeerID:function(e){if(angular.isObject(e))return e.user_id?e.user_id:-e.chat_id;var t="u"==e.charAt(0),a=e.substr(1).split("_");return t?a[0]:-a[0]||0},getPeer:function(a){return a>0?e.getUser(a):t.getChat(-a)},getPeerPhoto:function(a,o,n){return a>0?e.getUserPhoto(a,o):t.getChatPhoto(-a,n)}}}]).service("SearchIndexManager",function(){function e(){return{shortIndexes:{},fullTexts:{}}}function t(e){e=e.replace(n," ").replace(r,"").toLowerCase();for(var t in i)i.hasOwnProperty(t)&&(e=e.replace(i[t],t));return e}function a(e,a,o){if(void 0!==o.fullTexts[e])return!1;if(a=t(a),!a.length)return!1;var n=o.shortIndexes;o.fullTexts[e]=a,angular.forEach(a.split(" "),function(t){var a,o,r=Math.min(t.length,3);for(o=1;r>=o;o++)a=t.substr(0,o),void 0===n[a]?n[a]=[e]:n[a].push(e)})}function o(e,a){console.time("search");var o=a.shortIndexes,n=a.fullTexts;e=t(e);var r,i,s,d,c,u=e.split(" "),l=!1;for(i=0;ir.length)&&(l=r)}for(r={},s=0;s,<\s]+/g,r=/^\s+|\s$/g,i={a:/[áâäà]/g,e:/[éêëè]/g,i:/[íîïì]/g,o:/[óôöò]/g,u:/[úûüù]/g,c:/ç/g,ss:/ß/g};return{createIndex:e,indexObject:a,cleanSearchText:t,search:o}}).service("AppMessagesManager",["$q","$rootScope","$location","$filter","ApiUpdatesManager","AppUsersManager","AppChatsManager","AppPeersManager","AppPhotosManager","AppVideoManager","AppDocsManager","AppAudioManager","MtpApiManager","MtpApiFileManager","RichTextProcessor","NotificationsManager","SearchIndexManager",function(e,t,a,o,n,r,i,s,d,c,u,l,p,h,g,m,f){function _(t,a,o){var n=R;if(angular.isString(t)&&t.length){if(!o||G.query!==t){G.query=t;var d=f.search(t,B);G.dialogs=[],angular.forEach(R.dialogs,function(e){d[e.peerID]&&G.dialogs.push(e)}),G.count=G.dialogs.length}n=G}else G.query=!1;var c=0;if(a>0)for(c=0;cn.dialogs[c].top_message);c++);return null!==n.count&&n.dialogs.length==n.count||n.dialogs.length>=c+(o||1)?e.when({count:n.count,dialogs:n.dialogs.slice(c,c+(o||20))}):(o=o||20,p.invokeApi("messages.getDialogs",{offset:c,limit:o,max_id:a||0}).then(function(e){if(r.saveApiUsers(e.users),i.saveApiChats(e.chats),D(e.messages),a>0)for(c=0;cn.dialogs[c].top_message);c++);return n.count="messages.dialogsSlice"==e._?e.count:e.dialogs.length,n.dialogs.splice(c,n.dialogs.length-c),angular.forEach(e.dialogs,function(e){var t=s.getPeerID(e.peer),a=s.getPeerSearchText(t);f.indexObject(t,a,B),n.dialogs.push({peerID:t,top_message:e.top_message,unread_count:e.unread_count}),void 0===q[t]&&(q[t]={count:null,history:[e.top_message],pending:[]})}),{count:n.count,dialogs:n.dialogs.slice(c,c+o)}}))}function v(e,t,a,o){return p.invokeApi("messages.getHistory",{peer:e,offset:0,limit:a,max_id:t||0}).then(function(n){r.saveApiUsers(n.users),i.saveApiChats(n.chats),D(n.messages),o.count="messages.messagesSlice"==n._?n.count:n.messages.length;var s=0;if(t>0)for(s=0;so.history[s]);s++);return o.history.splice(s,o.history.length-s),angular.forEach(n.messages,function(e){o.history.push(e.id)}),a-=n.messages.length,a>0&&o.history.length1&&(c=Math.min(1e3,u[0].unread_count),o=c)}if(a>0)for(i=0;ir.history[i]);i++);return null!==r.count&&r.history.length==r.count||r.history.length>=i+(o||1)?e.when({count:r.count,history:d.concat(r.history.slice(i,i+(o||20))),unreadLimit:c}):(c&&(o=Math.max(20,c+2)),o=o||20,v(t,a,o,r).then(function(){if(i=0,a>0)for(i=0;ir.history[i]);i++);return{count:r.count,history:d.concat(r.history.slice(i,i+o)),unreadLimit:c}}))}function y(e,t,a,o,n){return p.invokeApi("messages.search",{peer:e,q:t||"",filter:a||{_:"inputMessagesFilterEmpty"},min_date:0,max_date:0,limit:n||20,max_id:o||0}).then(function(e){r.saveApiUsers(e.users),i.saveApiChats(e.chats),D(e.messages);var t="messages.messagesSlice"==e._?e.count:e.messages.length,a=[];return angular.forEach(e.messages,function(e){a.push(e.id)}),{count:t,history:a}})}function b(e){return p.invokeApi("messages.deleteMessages",{id:e}).then(function(e){return n.saveUpdate({_:"updateDeleteMessages",messages:e}),e})}function M(t,a,o){return n.saveSeq(a.seq)?a.offset?p.invokeApi(o,{peer:t,offset:a.offset,max_id:0}).then(function(e){return M(t,e,o)}):e.when():!1}function A(e){var a=s.getPeerID(e),o=q[a],n=F(a);if(!n[0]||!n[0].unread_count){if(!o||!o.history.length)return!1;var r,i,d=!1;for(u=o.history.length;u>=0;u--)if(r=o.history[u],i=T[r],i&&!i.out&&i.unread){d=!0;break}if(!d)return!1}var c=p.invokeApi("messages.readHistory",{peer:e,offset:0,max_id:0}).then(function(t){return M(e,t,"messages.readHistory")}).then(function(){n[0]&&(n[0].unread_count=0,t.$broadcast("dialog_unread",{peerID:a,count:0}))});if(o&&o.history.length){var r,i,u,a,n;for(u=0;u=0?(r="photo",i="photo."+a.type.split("/")[1]):"video/"==a.type.substr(0,6)?(r="video",i="video.mp4"):"audio/mpeg"==a.type||"audio/mp3"==a.type?(r="audio",i="audio.mp3"):(r="document",i="document."+a.type.split("/")[1]):(r="document",i="document."+a.type.split("/")[1]),a.name||(a.name=i),void 0===l&&(l=q[e]={count:null,history:[],pending:[]}),p.getUserID().then(function(o){var i={_:"messageMediaPending",type:r,file_name:a.name,size:a.size,progress:{percent:1,total:a.size}},m={_:"message",id:d,from_id:o,to_id:s.getOutputPeer(e),out:!0,unread:!0,date:tsNow()/1e3,message:"",media:i,random_id:u,pending:!0},f=function(e){var t=N[d];e?(m.error=!0,t&&(t.error=!0)):(delete m.error,t&&delete t.error)};m.send=function(){h.uploadFile(a).then(function(e){var t;switch(r){case"photo":t={_:"inputMediaUploadedPhoto",file:e};break;case"video":t={_:"inputMediaUploadedVideo",file:e,duration:0,w:0,h:0};break;case"audio":t={_:"inputMediaUploadedAudio",file:e,duration:0};break;case"document":default:t={_:"inputMediaUploadedDocument",file:e,file_name:a.name,mime_type:a.type}}p.invokeApi("messages.sendMedia",{peer:g,media:t,random_id:c}).then(function(e){n.saveSeq(e.seq)&&(n.saveUpdate({_:"updateMessageID",random_id:u,id:e.message.id}),m.date=e.message.date,m.id=e.message.id,m.media=e.message.media,n.saveUpdate({_:"updateNewMessage",message:m,pts:e.pts}))},function(){f(!0)})},function(){f(!0)},function(a){var o=N[d],n=Math.max(1,Math.floor(100*a.done/a.total));i.progress.done=a.done,i.progress.percent=n,o&&(o.media.progress.done=a.done,o.media.progress.percent=n,t.$broadcast("history_update",{peerID:e}))})},D([m]),l.pending.unshift(d),t.$broadcast("history_append",{peerID:e,messageID:d,my:!0}),m.send()}),j[u]=[e,d]}function k(e,a){var o=V--,r=[nextRandomInt(4294967295),nextRandomInt(4294967295)],i=bigint(r[0]).shiftLeft(32).add(bigint(r[1])).toString(),d=q[e],c=s.getInputPeerByID(e);void 0===d&&(d=q[e]={count:null,history:[],pending:[]}),p.getUserID().then(function(u){var l;switch(a._){case"inputMediaContact":l=angular.extend({},a,{_:"messageMediaContact"})}var h={_:"message",id:o,from_id:u,to_id:s.getOutputPeer(e),out:!0,unread:!0,date:tsNow()/1e3,message:"",media:l,random_id:i,pending:!0},g=function(e){var t=N[o];e?(h.error=!0,t&&(t.error=!0)):(delete h.error,t&&delete t.error)};h.send=function(){p.invokeApi("messages.sendMedia",{peer:c,media:a,random_id:r}).then(function(e){n.saveSeq(e.seq)&&(n.saveUpdate({_:"updateMessageID",random_id:i,id:e.message.id}),h.date=e.message.date,h.id=e.message.id,h.media=e.message.media,n.saveUpdate({_:"updateNewMessage",message:h,pts:e.pts}))},function(){g(!0)})},D([h]),d.pending.unshift(o),t.$broadcast("history_append",{peerID:e,messageID:o,my:!0}),h.send()}),j[i]=[e,o]}function I(e,t){return p.invokeApi("messages.forwardMessages",{peer:s.getInputPeerByID(e),id:t}).then(function(e){r.saveApiUsers(e.users),i.saveApiChats(e.chats),n.saveSeq(e.seq)&&angular.forEach(e.messages,function(t){n.saveUpdate({_:"updateNewMessage",message:t,pts:e.pts})})})}function P(e,t){var a=j[e];if(a){var o,n=a[0],r=a[1],i=q[n],s=!1,d=!1;for(o=0;ot?t:e.out?t:e.from_id}function E(e,t){if(void 0!==z[e])return z[e];var a=angular.copy(T[e])||{id:e};return a.fromUser=r.getUser(a.from_id),(a.chatID=a.to_id.chat_id)?(a.peerID=-a.chatID,a.peerData=i.getChat(a.chatID),a.peerString=i.getChatString(a.chatID)):(a.peerID=a.out?a.to_id.user_id:a.from_id,a.peerData=r.getUser(a.peerID),a.peerString=r.getUserString(a.peerID)),a.peerPhoto=s.getPeerPhoto(a.peerID,"User","Group"),a.unreadCount=t,"messageService"==a._&&a.action.user_id&&(a.action.user=r.getUser(a.action.user_id)),a.message&&a.message.length&&(a.richMessage=g.wrapRichText(a.message.substr(0,64),{noLinks:!0,noLinebreaks:!0})),a.dateText=o("dateOrTime")(a.date),z[e]=a}function x(e){if(void 0!==N[e])return N[e];var t=angular.copy(T[e])||{id:e};if(t.fromUser=r.getUser(t.from_id),t.fromPhoto=r.getUserPhoto(t.from_id,"User"),"messageForwarded"==t._&&(t.fwdUser=r.getUser(t.fwd_from_id)),t.media){switch(t.media._){case"messageMediaPhoto":t.media.photo=d.wrapForHistory(t.media.photo.id);break;case"messageMediaVideo":t.media.video=c.wrapForHistory(t.media.video.id);break;case"messageMediaDocument":t.media.document=u.wrapForHistory(t.media.document.id);break;case"messageMediaAudio":t.media.audio=l.wrapForHistory(t.media.audio.id);break;case"messageMediaContact":t.media.rFullName=g.wrapRichText(t.media.first_name+" "+(t.media.last_name||""),{noLinks:!0,noLinebreaks:!0})}t.media.user_id&&(t.media.user=r.getUser(t.media.user_id),t.media.userPhoto=r.getUserPhoto(t.media.user_id,"User"))}else if(t.action){switch(t.action._){case"messageActionChatEditPhoto":t.action.photo=d.wrapForHistory(t.action.photo.id);break;case"messageActionChatCreate":case"messageActionChatEditTitle":t.action.rTitle=g.wrapRichText(t.action.title,{noLinks:!0,noLinebreaks:!0})||"DELETED"}t.action.user_id&&(t.action.user=r.getUser(t.action.user_id),t.action.userPhoto=r.getUserPhoto(t.action.user_id,"User"))}return t.message&&t.message.length&&(t.richMessage=g.wrapRichText(t.message)),N[e]=t}function F(e){for(var t=0;t0?(c.title=(s.first_name||"")+(s.first_name&&s.last_name?" ":"")+(s.last_name||""),o=d,a=r.getUserString(n)):(c.title=(s.first_name||s.last_name||"Somebody")+" @ "+(i.getChat(-n).title||"Unknown chat"),o=i.getChatPhoto(-n,"Group"),a=i.getChatString(-n)),c.onclick=function(){t.$broadcast("history_focus",{peerString:a})},c.message=u,c.image=o.placeholder,c.key="msg"+e.id,o.location&&!o.location.empty?h.downloadSmallFile(o.location,o.size).then(function(t){c.image=t,e.unread&&m.notify(c)}):m.notify(c)}var T={},N={},z={},q={},R={count:null,dialogs:[]},j={},O={},H={},V=-1,B=f.createIndex(),G={query:!1};return m.start(),t.$on("apiUpdate",function(e,a){switch(a._){case"updateMessageID":O[a.id]=a.random_id;break;case"updateNewMessage":var o=a.message,n=C(o),r=q[n];if(void 0!==r){var i=q[n].history[0];if(o.id<=i)return!1}else r=q[n]={count:null,history:[],pending:[]};D([o]),null!==r.count&&r.count++,r.history.unshift(o.id);var d,c=O[o.id];c&&((d=P(c,o))&&t.$broadcast("history_update",{peerID:n}),delete O[o.id]),d||t.$broadcast("history_append",{peerID:n,messageID:o.id});var u,l=F(n);l.length?(u=l[0],R.dialogs.splice(l[1],1)):u={peerID:n,unread_count:0,top_message:!1},!o.out&&o.unread&&u.unread_count++,u.top_message=o.id,f.indexObject(n,s.getPeerSearchText(n),B),R.dialogs.unshift(u),t.$broadcast("dialogs_update",u),t.idle.isIDLE&&!o.out&&o.unread&&m.getPeerMuted(n).then(function(e){o.unread&&!e&&L(o)});break;case"updateReadMessages":var p,o,h,n,l,u,g={};for(h=0;hr&&(o=e,n=r)}),o}function s(e){var t=angular.copy(l[e])||{_:"photoEmpty"},a=260,o=260,n=i(t,a,o),r={placeholder:"img/placeholders/PhotoThumbConversation.gif",width:a,height:o};return n&&"photoSizeEmpty"!=n._?(n.w>n.h?r.height=parseInt(n.h*a/n.w):r.width=parseInt(n.w*o/n.h),r.location=n.location,r.size=n.size):(r.width=100,r.height=100),t.thumb=r,t}function d(e){if(l[e]){var a=l[e],n=$(window).width()-36,r=$(t).height()-150,s=i(a,n,r);s&&!s.preloaded&&(s.preloaded=!0,s.size?o.downloadFile(s.location.dc_id,{_:"inputFileLocation",volume_id:s.location.volume_id,local_id:s.location.local_id,secret:s.location.secret},s.size):o.downloadSmallFile(s.location))}}function c(e){var a=s(e),o=$(window).width()-36,r=$(t).height()-150,d=i(a,o,r),c={placeholder:"img/placeholders/PhotoThumbModal.gif"};return o>800&&(o-=200),c.width=o,c.height=r,d&&"photoSizeEmpty"!=d._&&(d.w/d.h>o/r?c.height=parseInt(d.h*o/d.w):(c.width=parseInt(d.w*r/d.h),c.width>o&&(c.height=parseInt(c.height*o/c.width),c.width=o)),c.width>=d.w&&c.height>=d.h&&(c.width=d.w,c.height=d.h),c.location=d.location,c.size=d.size),a.full=c,a.fromUser=n.getUser(a.user_id),a}function u(t){var o=a.$new(!0);o.photoID=t;e.open({templateUrl:"partials/photo_modal.html",controller:"PhotoModalController",scope:o,windowClass:"photo_modal_window"})}var l={};return a.preloadPhoto=d,a.openPhoto=u,{savePhoto:r,preloadPhoto:d,wrapForHistory:s,wrapForFull:c,openPhoto:u}}]).service("AppVideoManager",["$rootScope","$modal","$window","$timeout","MtpApiFileManager","AppUsersManager",function(e,t,a,o,n,r){function i(e){l[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(n.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function s(e){if(void 0!==p[e])return p[e];var t=angular.copy(l[e]),a=200,o=200,n=t.thumb,r={placeholder:"img/placeholders/VideoThumbConversation.gif",width:a,height:o};return n&&"photoSizeEmpty"!=n._&&(n.w>n.h?r.height=parseInt(n.h*a/n.w):r.width=parseInt(n.w*o/n.h),r.location=n.location,r.size=n.size),t.thumb=r,p[e]=t}function d(e){var t=s(e),o=Math.min($(window).width()-60,542),n=$(a).height()-150,i={placeholder:"img/placeholders/VideoThumbModal.gif",width:o,height:n};return t.w&&t.h?t.w>t.h?i.height=parseInt(t.h*o/t.w):(i.width=parseInt(t.w*n/t.h),i.width>o&&(i.height=parseInt(i.height*o/i.width),i.width=o)):i.height=i.width=Math.min(o,n),t.full=i,t.fullThumb=angular.copy(t.thumb),t.fullThumb.width=i.width,t.fullThumb.height=i.height,t.fromUser=r.getUser(t.user_id),t}function c(a){var o=e.$new(!0);o.videoID=a,o.progress={enabled:!1},o.player={};t.open({templateUrl:"partials/video_modal.html",controller:"VideoModalController",scope:o})}function u(t,a,r){function i(t){console.log("dl progress",t),d.progress.done=t.done,d.progress.percent=Math.max(1,Math.floor(100*t.done/t.total)),e.$broadcast("history_update")}var s=l[t],d=p[t]||s||{},c={_:"inputVideoFileLocation",id:t,access_hash:a||s.access_hash};d.progress={enabled:!0,percent:1,total:s.size};var u="mp4",h="video/mpeg4",g="video"+t+"."+u;window.chrome&&chrome.fileSystem&&chrome.fileSystem.chooseEntry?chrome.fileSystem.chooseEntry({type:"saveFile",suggestedName:g,accepts:[{mimeTypes:[h],extensions:[u]}]},function(e){n.downloadFile(s.dc_id,c,s.size,e,{mime:h}).then(function(){delete d.progress,console.log("file save done")},function(e){console.log("video download failed",e),d.progress.enabled=!1},i)}):n.downloadFile(s.dc_id,c,s.size,null,{mime:h}).then(function(e){if(delete d.progress,r)return void window.open(e,"_blank");var t=$("Download").css({position:"absolute",top:1,left:1}).attr("href",e).attr("target","_blank").attr("download",g).appendTo("body");t[0].dataset.downloadurl=[h,g,e].join(":"),t[0].click(),o(function(){t.remove()},100)},function(e){console.log("video download failed",e),d.progress.enabled=!1},i)}var l={},p={};return e.openVideo=c,e.downloadVideo=u,{saveVideo:i,wrapForHistory:s,wrapForFull:d,openVideo:c}}]).service("AppDocsManager",["$rootScope","$modal","$window","$timeout","MtpApiFileManager",function(e,t,a,o,n){function r(e){d[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(n.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function i(e){if(void 0!==c[e])return c[e];var t=angular.copy(d[e]),a=100,o=100,n=t.thumb,r={width:a,height:o};return n&&"photoSizeEmpty"!=n._?(n.w>n.h?r.height=parseInt(n.h*a/n.w):r.width=parseInt(n.w*o/n.h),r.location=n.location,r.size=n.size):r=!1,t.thumb=r,t.canDownload=!(window.chrome&&chrome.fileSystem&&chrome.fileSystem.chooseEntry),t.withPreview=t.canDownload&&t.mime_type.match(/^(image\/|application\/pdf)/),c[e]=t}function s(t,a,r){function i(t){console.log("dl progress",t),u.progress.done=t.done,u.progress.percent=Math.max(1,Math.floor(100*t.done/t.total)),e.$broadcast("history_update")}var s=d[t],u=c[t]||s||{},l={_:"inputDocumentFileLocation",id:t,access_hash:a||s.access_hash};if(u.progress={enabled:!0,percent:1,total:s.size},window.chrome&&chrome.fileSystem&&chrome.fileSystem.chooseEntry){var p=(s.file_name.split(".",2)||[])[1]||"";chrome.fileSystem.chooseEntry({type:"saveFile",suggestedName:s.file_name,accepts:[{mimeTypes:[s.mime_type],extensions:[p]}]},function(e){n.downloadFile(s.dc_id,l,s.size,e,{mime:s.mime_type}).then(function(){delete u.progress,console.log("file save done")},function(e){console.log("document download failed",e),u.progress.enabled=!1},i)})}else n.downloadFile(s.dc_id,l,s.size,null,{mime:s.mime_type}).then(function(e){if(delete u.progress,r)return void window.open(e,"_blank");var t=$("Download").css({position:"absolute",top:1,left:1}).attr("href",e).attr("target","_blank").attr("download",s.file_name).appendTo("body");t[0].dataset.downloadurl=[s.mime_type,s.file_name,e].join(":"),t[0].click(),o(function(){t.remove()},100)},function(e){console.log("document download failed",e),u.progress.enabled=!1},i)}var d={},c={};return e.downloadDoc=s,{saveDoc:r,wrapForHistory:i,downloadDoc:s}}]).service("AppAudioManager",["$rootScope","$modal","$window","$timeout","$sce","MtpApiFileManager",function(e,t,a,o,n,r){function i(e){c[e.id]=e}function s(e){if(void 0!==u[e])return u[e];var t=angular.copy(c[e]);return u[e]=t}function d(t,a){function i(t){console.log("dl progress",t),d.progress.done=t.done,d.progress.percent=Math.max(1,Math.floor(100*t.done/t.total)),e.$broadcast("history_update")}var s=c[t],d=u[t]||s||{},l={_:"inputAudioFileLocation",id:t,access_hash:a||s.access_hash};d.progress={enabled:!0,percent:1,total:s.size},r.downloadFile(s.dc_id,l,s.size,null,{mime:"audio/mpeg"}).then(function(t){delete d.progress,d.url=n.trustAsResourceUrl(t),d.autoplay=!0,o(function(){console.log("disable autoplay"),delete d.autoplay,e.$broadcast("history_update")},1e3)},function(e){console.log("document download failed",e),historyDoc.progress.enabled=!1},i)}var c={},u={};return e.openAudio=d,{saveAudio:i,wrapForHistory:s,openAudio:d}}]).service("ExternalResourcesManager",["$q","$http",function(e,t){function a(e){return void 0!==o[e]?o[e]:o[e]=t.get(e,{responseType:"blob",transformRequest:null}).then(function(e){return window.URL=window.URL||window.webkitURL,window.URL.createObjectURL(e.data)})}var o={};return{downloadImage:a}}]).service("ApiUpdatesManager",["$rootScope","MtpNetworkerFactory","AppUsersManager","AppChatsManager","AppPeersManager","MtpApiManager",function(e,t,a,o,n,r){function i(e){if(l.invalid)return!1;if(e.seq){if(!c(e.seq,e.seq_start))return!1;e.date&&(l.date=e.date)}switch(e._){case"updatesTooLong":s();break;case"updateShort":d(e.update);break;case"updatesCombined":case"updates":a.saveApiUsers(e.users),o.saveApiChats(e.chats);for(var t,i,u,t=0;tl.seq&&(console.warn("Seq hole",t,l.seq),s()),!1):(l.seq=e,!0):!0}function u(){t.setUpdatesProcessor(i),r.invokeApi("updates.getState").then(function(e){l.seq=e.seq,l.pts=e.pts,l.date=e.date,delete l.invalid})}var l={invalid:!0};return{saveUpdate:d,saveSeq:c,attach:u}}]).service("RichTextProcessor",["$sce","$sanitize",function(e,t){function a(e){return e.replace(/&/g,"&").replace(/([^\#-~| |!])/g,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(//g,">")}function o(e){for(var t,a,o,n,r=0;r-1)return a=Math.floor(t/n),o=t%n,{category:r,row:a,column:o};return console.error("emoji not found in spritesheet",e),null}function n(n,i){if(!n||!n.length)return"";i=i||{},n=n.replace(/\ufe0f/g,"",n);for(var p,h,g,m=n,f=[],_=!1;p=m.match(u);)f.push(a(m.substr(0,p.index))),p[1]?i.noLinks?f.push(a(p[0])):p[3]?f.push('',a(p[3]+p[4]),""):f.push('',a(p[2]+"://"+p[4]),""):p[5]?f.push(i.noLinebreaks?" ":"
"):p[6]&&((r=s[p[6]])&&(g=o(r))?(h=a(d[r][1][0]),_=!0,f.push('',":",h,":")):f.push(a(p[6]))),m=m.substr(p.index+p[0].length);if(f.push(a(m)),n=t(f.join("")),_&&(n=n.replace(//g,'')),!i.noLinks){var v=n.match(l),w=v&&v[1];w&&(n=n+'
')}return e.trustAs("html",n)}var r,i=[],s={},d=Config.Emoji,c=18;for(r in d)i.push(d[r][0]),s[d[r][0]]=r;var u=new RegExp("((?:(ftp|https?)://|(?:mailto:)?([A-Za-z0-9._%+-]+@))(\\S*\\.\\S*[^\\s.;,(){}<>\"']))|(\\n)|("+i.join("|")+")","i"),l=/(?:https?:\/\/)?(?:www\.)?youtu(?:|.be|be.com|.b)(?:\/v\/|\/watch\\?v=|e\/|\/watch(?:.+)v=)(.{11})(?:\&[^\s]*)?/;return{wrapRichText:n}}]).service("IdleManager",["$rootScope","$window","$timeout",function(e,t,a){function o(){i||(i=!0,$(t).on("blur focus keydown mousedown touchstart",n))}function n(o){"mousemove"==o.type&&$(t).off("mousemove",n);var i="blur"==o.type||"timeout"==o.type?!0:!1;a.cancel(r),i||(r=a(function(){n({type:"timeout"})},3e4)),e.idle.isIDLE!=i&&(e.$apply(function(){e.idle.isIDLE=i}),i&&"timeout"==o.type&&$(t).on("mousemove",n))}e.idle={isIDLE:!1};var r,i=!1;return{start:o}}]).service("StatusManager",["$timeout","$rootScope","MtpApiManager","IdleManager",function(e,t,a){function o(){d||(d=!0,t.$watch("idle.isIDLE",r),t.$watch("offline",r))}function n(e){var o=tsNow();if(!(e&&!s||!e&&5e4>o-s||t.offline))return s=e?0:o,a.invokeApi("account.updateStatus",{offline:e})}function r(){i&&e.cancel(i),t.idle.isIDLE?i=e(function(){n(!0)},5e3):(n(!1),i=e(r,6e4))}var i,s=0,d=!1;return{start:o}}]).service("NotificationsManager",["$rootScope","$window","$timeout","$interval","$q","MtpApiManager","AppPeersManager","IdleManager","AppConfigManager",function(e,t,a,o,n,r,i,s,d){function c(e){return void 0!==A[e]?A[e]:A[e]=r.invokeApi("account.getNotifySettings",{peer:{_:"inputNotifyPeer",peer:i.getInputPeerByID(e)}})}function u(e,t){var a=angular.copy(t);return a._="inputPeerNotifySettings",A[e]=n.when(t),r.invokeApi("account.updateNotifySettings",{peer:{_:"inputNotifyPeer",peer:i.getInputPeerByID(e)},settings:a})}function l(e){return c(e).then(function(e){return"peerNotifySettings"==e._&&1e3*e.mute_until>tsNow()})}function p(){if(!w)return!1;"granted"!==Notification.permission&&"denied"!==Notification.permission&&$(t).on("click",h);try{$(t).on("beforeunload",_)}catch(e){}}function h(){Notification.requestPermission(),$(t).off("click",h)}function g(t){return e.idle.isIDLE?(M++,w&&"granted"===Notification.permission?(d.get("notify_nosound").then(function(e){e||m()}),void d.get("notify_nodesktop").then(function(e){if(!e){var a=++b,o=t.key||"k"+a,n=new Notification(t.title,{icon:t.image||"",body:t.message||""});n.onclick=function(){n.close(),window.chrome&&chrome.app&&chrome.app.window&&chrome.app.window.current().focus(),window.focus(),_(),t.onclick&&t.onclick()},n.onclose=function(){delete y[o],_()},y[o]=n}})):!1):!1}function m(){var e="img/sound_a.wav";$("#notify_sound").html('')}function f(e){var t=y[e];if(t)try{t.close&&t.close()}catch(a){}}function _(){angular.forEach(y,function(e){try{e.close&&e.close()}catch(t){}}),y={}}var v,w="Notification"in window,y={},b=0,M=0,A={},S=$('link[rel="icon"]'),D=$(''),U=document.title;return e.$watch("idle.isIDLE",function(e){o.cancel(v),e?(U=document.title,v=o(function(){var e=tsNow();!M||e%2e3>1e3?(document.title=U,$('link[rel="icon"]').replaceWith(S)):(document.title=M>1?M+" notifications":"1 notification",$('link[rel="icon"]').replaceWith(D))},1e3)):(M=0,document.title=U,$('link[rel="icon"]').replaceWith(S),_())}),{start:p,notify:g,cancel:f,clear:_,getPeerSettings:c,getPeerMuted:l,savePeerSettings:u}}]).service("ErrorService",["$rootScope","$modal",function(e,t){function a(a,o){o=o||{};var n=e.$new();return angular.extend(n,a),t.open({templateUrl:"partials/error_modal.html",scope:n,windowClass:o.windowClass||"error_modal_window"})}function o(e,t){return a({title:e,description:t})}return{show:a,alert:o}}]).service("PeersSelectService",["$rootScope","$modal",function(e,t){function a(){var a=e.$new();return t.open({templateUrl:"partials/peer_select.html",controller:"PeerSelectController",scope:a,windowClass:"peer_select_window"}).result}return{selectPeer:a}}]).service("ContactsSelectService",["$rootScope","$modal",function(e,t){function a(a,o){o=o||{};var n=e.$new();return n.multiSelect=a,angular.extend(n,o),t.open({templateUrl:"partials/contacts_modal.html",controller:"ContactsModalController",scope:n,windowClass:"contacts_modal_window"}).result}return{selectContacts:function(e){return a(!0,e)},selectContact:function(e){return a(!1,e)}}}]); -"use strict";angular.module("myApp.controllers",[]).controller("AppWelcomeController",["$scope","$location","MtpApiManager",function(e,t,o){o.getUserID().then(function(o){o?t.url("/im"):e.showWelcome=!0})}]).controller("AppLoginController",["$scope","$location","$timeout","MtpApiManager","ErrorService",function(e,t,o,n,r){function a(e){n.setUserAuth(i.dcID,{expires:e.expires,id:e.user.id}),o.cancel(c),t.url("/im")}function s(){o.cancel(c),--e.callPending.remaining?c=o(s,1e3):(e.callPending.success=!1,n.invokeApi("auth.sendCall",{phone_number:e.credentials.phone_number,phone_code_hash:e.credentials.phone_code_hash},i).then(function(){e.callPending.success=!0}))}n.getUserID().then(function(e){return e?void t.url("/im"):void 0});var i={dcID:1,createNetworker:!0};e.credentials={},e.progress={},e.callPending={};var c;e.sendCode=function(){o.cancel(c),e.progress.enabled=!0,n.invokeApi("auth.checkPhone",{phone_number:e.credentials.phone_number},i).then(function(t){return e.progress.enabled=!1,t.phone_registered?(e.progress.enabled=!0,void n.invokeApi("auth.sendCode",{phone_number:e.credentials.phone_number,sms_type:0,api_id:2496,api_hash:"8da85b0d5bfe62527e5b244c209159c3"},i).then(function(t){e.progress.enabled=!1,e.credentials.phone_code_hash=t.phone_code_hash,e.credentials.phone_occupied=t.phone_registered,e.error={},e.callPending.remaining=t.send_call_timeout,s()},function(t){switch(e.progress.enabled=!1,console.log("sendCode error",t),t.type){case"PHONE_NUMBER_INVALID":e.error={field:"phone"}}})):(r.show({error:{code:400,type:"ACCOUNT_REQUIRED"},phone:e.credentials.phone_number}),!1)},function(t){switch(e.progress.enabled=!1,t.type){case"PHONE_NUMBER_INVALID":e.error={field:"phone"};break;default:r.alert("Unknown error occured","Please check your internet connection or install the latest version of Google Chrome browser.")}})},e.logIn=function(t){var o="auth.signIn",r={phone_number:e.credentials.phone_number,phone_code_hash:e.credentials.phone_code_hash,phone_code:e.credentials.phone_code};t&&(o="auth.signUp",angular.extend(r,{first_name:e.credentials.first_name,last_name:e.credentials.last_name})),e.progress.enabled=!0,n.invokeApi(o,r,i).then(a,function(t){if(e.progress.enabled=!1,400==t.code&&"PHONE_NUMBER_UNOCCUPIED"==t.type)return e.logIn(!0);if(400==t.code&&"PHONE_NUMBER_OCCUPIED"==t.type)return e.logIn(!1);switch(t.type){case"FIRSTNAME_INVALID":e.error={field:"first_name"};break;case"LASTNAME_INVALID":e.error={field:"last_name"};break;case"PHONE_CODE_INVALID":e.error={field:"phone_code"}}})}}]).controller("AppIMController",["$scope","$location","$routeParams","$modal","$rootScope","$modalStack","MtpApiManager","AppUsersManager","ContactsSelectService",function(e,t,o,n,r,a,s,i,c){function l(){e.curDialog={peer:o.p||!1}}e.$on("$routeUpdate",l),e.$on("history_focus",function(o,n){a.dismissAll(),n.peerString==e.curDialog.peer?e.$broadcast("ui_history_focus"):t.url("/im?p="+n.peerString)}),e.isLoggedIn=!0,e.openSettings=function(){n.open({templateUrl:"partials/settings_modal.html",controller:"SettingsModalController",scope:r.$new(),windowClass:"settings_modal_window"})},e.openContacts=function(){c.selectContact().then(function(t){e.dialogSelect(i.getUserString(t))})},e.openGroup=function(){c.selectContacts().then(function(t){if(1==t.length)e.dialogSelect(i.getUserString(t[0]));else if(t.length>1){var o=r.$new();o.userIDs=t,n.open({templateUrl:"partials/chat_create_modal.html",controller:"ChatCreateModalController",scope:o,windowClass:"contacts_modal_window"})}})},e.dialogSelect=function(e){r.$broadcast("history_focus",{peerString:e})},l()}]).controller("AppImDialogsController",["$scope","$location","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppPeersManager",function(e,t,o,n,r,a){function s(){l=0,u=0,p=!1,d={},c=!1,a.getDialogs(e.search.query,u).then(function(t){e.dialogs=[],e.contacts=[],t.dialogs.length&&(l+=t.dialogs.length,u=t.dialogs[t.dialogs.length-1].top_message,p=null===t.count||l0?s=t:0>t&&(a=s+t),o=a;s>o;o++)n=e.history[o],r&&n.from_id==r.from_id&&n.date0){var t=[];angular.forEach(e.selectedMsgs,function(e,o){t.push(o)}),i.deleteMessages(t).then(function(){D()})}}function I(){if(e.selectedCount>0){var t=[];angular.forEach(e.selectedMsgs,function(e,o){t.push(o)}),u.selectPeer().then(function(e){var o=c.getPeerID(e);i.forwardMessages(o,t).then(function(){D(),n.$broadcast("history_focus",{peerString:e})})})}}function A(){e.selectActions?D():(e.selectActions=!0,e.$broadcast("ui_panel_update"))}function U(t){t&&(e.missedCount=0),e.mediaType=t||!1,e.history=[],m()}function P(){e.curDialog.peerID>0?n.openUser(e.curDialog.peerID):e.curDialog.peerID<0&&n.openChat(-e.curDialog.peerID)}e.$watch("curDialog.peer",h),l.attach(),p.start(),d.start(),e.history=[],e.mediaType=!1,e.selectedMsgs={},e.selectedCount=0,e.selectActions=!1,e.missedCount=0,e.typing={},e.state={},e.toggleMessage=C,e.selectedDelete=v,e.selectedForward=I,e.selectedCancel=D,e.selectedFlush=M,e.toggleEdit=A,e.toggleMedia=U,e.showPeerInfo=P;var b,S=0,w=!1,E=0,k={photos:"inputMessagesFilterPhotos",video:"inputMessagesFilterVideo",documents:"inputMessagesFilterDocument"},F=0,N={};e.$on("history_update",angular.noop),e.$on("history_append",function(t,r){if(r.peerID==e.curDialog.peerID){if(e.mediaType)return void(r.my?U():e.missedCount++);e.history.push(i.wrapForHistory(r.messageID)),f(-3),e.typing={},e.$broadcast("ui_history_append",{my:r.my}),r.my&&(e.historyUnread={}),S++,n.idle.isIDLE||o(function(){i.readHistory(e.curDialog.inputPeer)})}}),e.$on("history_delete",function(t,o){if(o.peerID==e.curDialog.peerID){for(var n=[],r=0;r0){var t=[];return angular.forEach(e.selectedContacts,function(e,o){t.push(o)}),o.close(t)}},e.importContact=function(){t.open({templateUrl:"partials/import_contact_modal.html",controller:"ImportContactModalController",windowClass:"import_contact_modal_window"}).result.then(function(t){t&&r(e.search&&e.search.query||"")})}}]).controller("PeerSelectController",["$scope","$modalInstance",function(e,t){e.dialogSelect=function(e){t.close(e)}}]).controller("ChatCreateModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,o,n,r,a,s){e.group={name:""},e.createGroup=function(){if(e.group.name){var t=[];return angular.forEach(e.userIDs,function(e){t.push({_:"inputUserContact",user_id:e})}),n.invokeApi("messages.createChat",{title:e.group.name,users:t}).then(function(e){r.saveApiUsers(e.users),a.saveApiChats(e.chats),s.saveSeq(e.seq)&&s.saveUpdate({_:"updateNewMessage",message:e.message,pts:e.pts});var t=a.getChatString(e.message.to_id.chat_id);o.$broadcast("history_focus",{peerString:t})})}},e.back=function(){t.dismiss()}}]).controller("ChatEditModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,o,n,r,a,s){var i=a.getChat(e.chatID);e.group={name:i.title},e.updateGroup=function(){return e.group.name?e.group.name==i.title?t.close():n.invokeApi("messages.editChatTitle",{chat_id:e.chatID,title:e.group.name}).then(function(t){r.saveApiUsers(t.users),a.saveApiChats(t.chats),s.saveSeq(t.seq)&&s.saveUpdate({_:"updateNewMessage",message:t.message,pts:t.pts});var n=a.getChatString(e.chatID);o.$broadcast("history_focus",{peerString:n})}):void 0}}]).controller("ImportContactModalController",["$scope","$modalInstance","$rootScope","AppUsersManager",function(e,t,o,n){void 0===e.importContact&&(e.importContact={}),e.doImport=function(){e.importContact&&e.importContact.phone&&(e.progress={enabled:!0},n.importContact(e.importContact.phone,e.importContact.first_name,e.importContact.last_name).then(function(e){t.close(e)})["finally"](function(){delete e.progress.enabled}))}}]); +"use strict";angular.module("myApp.services",[]).service("AppConfigManager",["$q",function(e){function t(){for(var t=Array.prototype.slice.call(arguments),a=[],o=1==t.length,d=!0,c=0;c0?{_:"inputPeerForeign",user_id:t,access_hash:e.getUser(t).access_hash||0}:0>t?{_:"inputPeerChat",chat_id:-t}:void 0},getPeerSearchText:function(a){var o;if(a>0)o=e.getUserSearchText(a);else if(0>a){var n=t.getChat(-a);o=n.title||""}return o},getOutputPeer:function(e){return e>0?{_:"peerUser",user_id:e}:{_:"peerChat",chat_id:-e}},getPeerID:function(e){if(angular.isObject(e))return e.user_id?e.user_id:-e.chat_id;var t="u"==e.charAt(0),a=e.substr(1).split("_");return t?a[0]:-a[0]||0},getPeer:function(a){return a>0?e.getUser(a):t.getChat(-a)},getPeerPhoto:function(a,o,n){return a>0?e.getUserPhoto(a,o):t.getChatPhoto(-a,n)}}}]).service("SearchIndexManager",function(){function e(){return{shortIndexes:{},fullTexts:{}}}function t(e){e=e.replace(n," ").replace(r,"").toLowerCase();for(var t in i)i.hasOwnProperty(t)&&(e=e.replace(i[t],t));return e}function a(e,a,o){if(void 0!==o.fullTexts[e])return!1;if(a=t(a),!a.length)return!1;var n=o.shortIndexes;o.fullTexts[e]=a,angular.forEach(a.split(" "),function(t){var a,o,r=Math.min(t.length,3);for(o=1;r>=o;o++)a=t.substr(0,o),void 0===n[a]?n[a]=[e]:n[a].push(e)})}function o(e,a){console.time("search");var o=a.shortIndexes,n=a.fullTexts;e=t(e);var r,i,s,d,c,u=e.split(" "),l=!1;for(i=0;ir.length)&&(l=r)}for(r={},s=0;s,<\s]+/g,r=/^\s+|\s$/g,i={a:/[áâäà]/g,e:/[éêëè]/g,i:/[íîïì]/g,o:/[óôöò]/g,u:/[úûüù]/g,c:/ç/g,ss:/ß/g};return{createIndex:e,indexObject:a,cleanSearchText:t,search:o}}).service("AppMessagesManager",["$q","$rootScope","$location","$filter","ApiUpdatesManager","AppUsersManager","AppChatsManager","AppPeersManager","AppPhotosManager","AppVideoManager","AppDocsManager","AppAudioManager","MtpApiManager","MtpApiFileManager","RichTextProcessor","NotificationsManager","SearchIndexManager",function(e,t,a,o,n,r,i,s,d,c,u,l,p,h,g,m,f){function v(t,a,o){var n=j;if(angular.isString(t)&&t.length){if(!o||J.query!==t){J.query=t;var d=f.search(t,G);J.dialogs=[],angular.forEach(j.dialogs,function(e){d[e.peerID]&&J.dialogs.push(e)}),J.count=J.dialogs.length}n=J}else J.query=!1;var c=0;if(a>0)for(c=0;cn.dialogs[c].top_message);c++);return null!==n.count&&n.dialogs.length==n.count||n.dialogs.length>=c+(o||1)?e.when({count:n.count,dialogs:n.dialogs.slice(c,c+(o||20))}):(o=o||20,p.invokeApi("messages.getDialogs",{offset:c,limit:o,max_id:a||0}).then(function(e){if(r.saveApiUsers(e.users),i.saveApiChats(e.chats),D(e.messages),a>0)for(c=0;cn.dialogs[c].top_message);c++);return n.count="messages.dialogsSlice"==e._?e.count:e.dialogs.length,n.dialogs.splice(c,n.dialogs.length-c),angular.forEach(e.dialogs,function(e){var t=s.getPeerID(e.peer),a=s.getPeerSearchText(t);f.indexObject(t,a,G),n.dialogs.push({peerID:t,top_message:e.top_message,unread_count:e.unread_count}),void 0===R[t]&&(R[t]={count:null,history:[e.top_message],pending:[]})}),{count:n.count,dialogs:n.dialogs.slice(c,c+o)}}))}function _(e,t,a,o){return console.log("fill history storage",e,t,a,angular.copy(o)),p.invokeApi("messages.getHistory",{peer:e,offset:0,limit:a,max_id:t||0}).then(function(n){r.saveApiUsers(n.users),i.saveApiChats(n.chats),D(n.messages),o.count="messages.messagesSlice"==n._?n.count:n.messages.length;var s=0;if(t>0)for(s=0;so.history[s]);s++);return o.history.splice(s,o.history.length-s),angular.forEach(n.messages,function(e){o.history.push(e.id)}),a-=n.messages.length,a>0&&o.history.length1&&(c=Math.min(1e3,u[0].unread_count),o=c)}if(a>0)for(i=0;ir.history[i]);i++);return null!==r.count&&r.history.length==r.count||r.history.length>=i+(o||1)?e.when({count:r.count,history:d.concat(r.history.slice(i,i+(o||20))),unreadLimit:c}):(c&&(o=Math.max(20,c+2)),o=o||20,_(t,a,o,r).then(function(){if(i=0,a>0)for(i=0;ir.history[i]);i++);return{count:r.count,history:d.concat(r.history.slice(i,i+o)),unreadLimit:c}}))}function y(e,t,a,o,n){return p.invokeApi("messages.search",{peer:e,q:t||"",filter:a||{_:"inputMessagesFilterEmpty"},min_date:0,max_date:0,limit:n||20,max_id:o||0}).then(function(e){r.saveApiUsers(e.users),i.saveApiChats(e.chats),D(e.messages);var t="messages.messagesSlice"==e._?e.count:e.messages.length,a=[];return angular.forEach(e.messages,function(e){a.push(e.id)}),{count:t,history:a}})}function b(e){return p.invokeApi("messages.deleteMessages",{id:e}).then(function(e){return n.saveUpdate({_:"updateDeleteMessages",messages:e}),e})}function M(t,a,o){return n.saveSeq(a.seq)?a.offset?p.invokeApi(o,{peer:t,offset:a.offset,max_id:0}).then(function(e){return M(t,e,o)}):e.when():!1}function S(e){var a=s.getPeerID(e),o=R[a],n=L(a);if(!n[0]||!n[0].unread_count){if(!o||!o.history.length)return!1;var r,i,d=!1;for(u=o.history.length;u>=0;u--)if(r=o.history[u],i=N[r],i&&!i.out&&i.unread){d=!0;break}if(!d)return!1}var c=p.invokeApi("messages.readHistory",{peer:e,offset:0,max_id:0}).then(function(t){return M(e,t,"messages.readHistory")}).then(function(){n[0]&&(n[0].unread_count=0,t.$broadcast("dialog_unread",{peerID:a,count:0}))});if(o&&o.history.length){var r,i,u,a,n;for(u=0;u=0?(r="photo",i="photo."+a.type.split("/")[1]):"video/"==a.type.substr(0,6)?(r="video",i="video.mp4"):"audio/mpeg"==a.type||"audio/mp3"==a.type?(r="audio",i="audio.mp3"):(r="document",i="document."+a.type.split("/")[1]):(r="document",i="document."+a.type.split("/")[1]),a.name||(a.name=i),void 0===l&&(l=R[e]={count:null,history:[],pending:[]}),p.getUserID().then(function(o){var i={_:"messageMediaPending",type:r,file_name:a.name,size:a.size,progress:{percent:1,total:a.size}},m={_:"message",id:d,from_id:o,to_id:s.getOutputPeer(e),out:!0,unread:!0,date:tsNow()/1e3,message:"",media:i,random_id:u,pending:!0},f=function(e){var t=z[d];e?(m.error=!0,t&&(t.error=!0)):(delete m.error,t&&delete t.error)};m.send=function(){var o=!1,s=h.uploadFile(a);s.then(function(e){o=!0;var t;switch(r){case"photo":t={_:"inputMediaUploadedPhoto",file:e};break;case"video":t={_:"inputMediaUploadedVideo",file:e,duration:0,w:0,h:0};break;case"audio":t={_:"inputMediaUploadedAudio",file:e,duration:0};break;case"document":default:t={_:"inputMediaUploadedDocument",file:e,file_name:a.name,mime_type:a.type}}p.invokeApi("messages.sendMedia",{peer:g,media:t,random_id:c}).then(function(e){n.saveSeq(e.seq)&&(n.saveUpdate({_:"updateMessageID",random_id:u,id:e.message.id}),m.date=e.message.date,m.id=e.message.id,m.media=e.message.media,n.saveUpdate({_:"updateNewMessage",message:m,pts:e.pts}))},function(){f(!0)})},function(){f(!0)},function(a){i.progress.done=a.done,i.progress.percent=Math.max(1,Math.floor(100*a.done/a.total)),t.$broadcast("history_update",{peerID:e})}),i.progress.cancel=function(){o||(s.cancel(),P(u))}},D([m]),l.pending.unshift(d),t.$broadcast("history_append",{peerID:e,messageID:d,my:!0}),m.send()}),O[u]=[e,d]}function $(e,a){var o=B--,r=[nextRandomInt(4294967295),nextRandomInt(4294967295)],i=bigint(r[0]).shiftLeft(32).add(bigint(r[1])).toString(),d=R[e],c=s.getInputPeerByID(e);void 0===d&&(d=R[e]={count:null,history:[],pending:[]}),p.getUserID().then(function(u){var l;switch(a._){case"inputMediaContact":l=angular.extend({},a,{_:"messageMediaContact"})}var h={_:"message",id:o,from_id:u,to_id:s.getOutputPeer(e),out:!0,unread:!0,date:tsNow()/1e3,message:"",media:l,random_id:i,pending:!0},g=function(e){var t=z[o];e?(h.error=!0,t&&(t.error=!0)):(delete h.error,t&&delete t.error)};h.send=function(){p.invokeApi("messages.sendMedia",{peer:c,media:a,random_id:r}).then(function(e){n.saveSeq(e.seq)&&(n.saveUpdate({_:"updateMessageID",random_id:i,id:e.message.id}),h.date=e.message.date,h.id=e.message.id,h.media=e.message.media,n.saveUpdate({_:"updateNewMessage",message:h,pts:e.pts}))},function(){g(!0)})},D([h]),d.pending.unshift(o),t.$broadcast("history_append",{peerID:e,messageID:o,my:!0}),h.send()}),O[i]=[e,o]}function I(e,t){return p.invokeApi("messages.forwardMessages",{peer:s.getInputPeerByID(e),id:t}).then(function(e){r.saveApiUsers(e.users),i.saveApiChats(e.chats),n.saveSeq(e.seq)&&angular.forEach(e.messages,function(t){n.saveUpdate({_:"updateNewMessage",message:t,pts:e.pts})})})}function P(e){var t=O[e];if(console.log("pending",e,t),t){var a,o=t[0],r=t[1],i=R[o];for(n.saveUpdate({_:"updateDeleteMessages",messages:[r]}),a=0;at?t:e.out?t:e.from_id}function x(e,t){if(void 0!==q[e])return q[e];var a=angular.copy(N[e])||{id:e};return a.fromUser=r.getUser(a.from_id),(a.chatID=a.to_id.chat_id)?(a.peerID=-a.chatID,a.peerData=i.getChat(a.chatID),a.peerString=i.getChatString(a.chatID)):(a.peerID=a.out?a.to_id.user_id:a.from_id,a.peerData=r.getUser(a.peerID),a.peerString=r.getUserString(a.peerID)),a.peerPhoto=s.getPeerPhoto(a.peerID,"User","Group"),a.unreadCount=t,"messageService"==a._&&a.action.user_id&&(a.action.user=r.getUser(a.action.user_id)),a.message&&a.message.length&&(a.richMessage=g.wrapRichText(a.message.substr(0,64),{noLinks:!0,noLinebreaks:!0})),a.dateText=o("dateOrTime")(a.date),q[e]=a}function F(e){if(void 0!==z[e])return z[e];var t=angular.copy(N[e])||{id:e};if(t.media&&void 0!==t.media.progress&&(t.media.progress=N[e].media.progress),t.fromUser=r.getUser(t.from_id),t.fromPhoto=r.getUserPhoto(t.from_id,"User"),"messageForwarded"==t._&&(t.fwdUser=r.getUser(t.fwd_from_id)),t.media){switch(t.media._){case"messageMediaPhoto":t.media.photo=d.wrapForHistory(t.media.photo.id);break;case"messageMediaVideo":t.media.video=c.wrapForHistory(t.media.video.id);break;case"messageMediaDocument":t.media.document=u.wrapForHistory(t.media.document.id);break;case"messageMediaAudio":t.media.audio=l.wrapForHistory(t.media.audio.id);break;case"messageMediaContact":t.media.rFullName=g.wrapRichText(t.media.first_name+" "+(t.media.last_name||""),{noLinks:!0,noLinebreaks:!0})}t.media.user_id&&(t.media.user=r.getUser(t.media.user_id),t.media.userPhoto=r.getUserPhoto(t.media.user_id,"User"))}else if(t.action){switch(t.action._){case"messageActionChatEditPhoto":t.action.photo=d.wrapForHistory(t.action.photo.id);break;case"messageActionChatCreate":case"messageActionChatEditTitle":t.action.rTitle=g.wrapRichText(t.action.title,{noLinks:!0,noLinebreaks:!0})||"DELETED"}t.action.user_id&&(t.action.user=r.getUser(t.action.user_id),t.action.userPhoto=r.getUserPhoto(t.action.user_id,"User"))}return t.message&&t.message.length&&(t.richMessage=g.wrapRichText(t.message)),z[e]=t}function L(e){for(var t=0;t0?(c.title=(s.first_name||"")+(s.first_name&&s.last_name?" ":"")+(s.last_name||""),o=d,a=r.getUserString(n)):(c.title=(s.first_name||s.last_name||"Somebody")+" @ "+(i.getChat(-n).title||"Unknown chat"),o=i.getChatPhoto(-n,"Group"),a=i.getChatString(-n)),c.onclick=function(){t.$broadcast("history_focus",{peerString:a})},c.message=u,c.image=o.placeholder,c.key="msg"+e.id,o.location&&!o.location.empty?h.downloadSmallFile(o.location,o.size).then(function(t){c.image=t,e.unread&&m.notify(c)}):m.notify(c)}var N={},z={},q={},R={},j={count:null,dialogs:[]},O={},H={},V={},B=-1,G=f.createIndex(),J={query:!1};return m.start(),t.$on("apiUpdate",function(e,a){switch(a._){case"updateMessageID":H[a.id]=a.random_id;break;case"updateNewMessage":var o=a.message,n=E(o),r=R[n];if(void 0!==r){var i=R[n].history[0];if(o.id<=i)return!1}else r=R[n]={count:null,history:[],pending:[]};D([o]),null!==r.count&&r.count++,r.history.unshift(o.id);var d,c=H[o.id];c&&((d=C(c,o))&&t.$broadcast("history_update",{peerID:n}),delete H[o.id]),d||t.$broadcast("history_append",{peerID:n,messageID:o.id});var u,l=L(n);l.length?(u=l[0],j.dialogs.splice(l[1],1)):u={peerID:n,unread_count:0,top_message:!1},!o.out&&o.unread&&u.unread_count++,u.top_message=o.id,f.indexObject(n,s.getPeerSearchText(n),G),j.dialogs.unshift(u),t.$broadcast("dialogs_update",u),t.idle.isIDLE&&!o.out&&o.unread&&m.getPeerMuted(n).then(function(e){o.unread&&!e&&T(o)});break;case"updateReadMessages":var p,o,h,n,l,u,g={};for(h=0;hr&&(o=e,n=r)}),o}function s(e){var t=angular.copy(l[e])||{_:"photoEmpty"},a=260,o=260,n=i(t,a,o),r={placeholder:"img/placeholders/PhotoThumbConversation.gif",width:a,height:o};return n&&"photoSizeEmpty"!=n._?(n.w>n.h?r.height=parseInt(n.h*a/n.w):r.width=parseInt(n.w*o/n.h),r.location=n.location,r.size=n.size):(r.width=100,r.height=100),t.thumb=r,t}function d(e){if(l[e]){var a=l[e],n=$(window).width()-36,r=$(t).height()-150,s=i(a,n,r);s&&!s.preloaded&&(s.preloaded=!0,s.size?o.downloadFile(s.location.dc_id,{_:"inputFileLocation",volume_id:s.location.volume_id,local_id:s.location.local_id,secret:s.location.secret},s.size):o.downloadSmallFile(s.location))}}function c(e){var a=s(e),o=$(window).width()-36,r=$(t).height()-150,d=i(a,o,r),c={placeholder:"img/placeholders/PhotoThumbModal.gif"};return o>800&&(o-=200),c.width=o,c.height=r,d&&"photoSizeEmpty"!=d._&&(d.w/d.h>o/r?c.height=parseInt(d.h*o/d.w):(c.width=parseInt(d.w*r/d.h),c.width>o&&(c.height=parseInt(c.height*o/c.width),c.width=o)),c.width>=d.w&&c.height>=d.h&&(c.width=d.w,c.height=d.h),c.location=d.location,c.size=d.size),a.full=c,a.fromUser=n.getUser(a.user_id),a}function u(t){var o=a.$new(!0);o.photoID=t;e.open({templateUrl:"partials/photo_modal.html",controller:"PhotoModalController",scope:o,windowClass:"photo_modal_window"})}var l={};return a.preloadPhoto=d,a.openPhoto=u,{savePhoto:r,preloadPhoto:d,wrapForHistory:s,wrapForFull:c,openPhoto:u}}]).service("AppVideoManager",["$rootScope","$modal","$window","$timeout","MtpApiFileManager","AppUsersManager",function(e,t,a,o,n,r){function i(e){l[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(n.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function s(e){if(void 0!==p[e])return p[e];var t=angular.copy(l[e]),a=200,o=200,n=t.thumb,r={placeholder:"img/placeholders/VideoThumbConversation.gif",width:a,height:o};return n&&"photoSizeEmpty"!=n._&&(n.w>n.h?r.height=parseInt(n.h*a/n.w):r.width=parseInt(n.w*o/n.h),r.location=n.location,r.size=n.size),t.thumb=r,p[e]=t}function d(e){var t=s(e),o=Math.min($(window).width()-60,542),n=$(a).height()-150,i={placeholder:"img/placeholders/VideoThumbModal.gif",width:o,height:n};return t.w&&t.h?t.w>t.h?i.height=parseInt(t.h*o/t.w):(i.width=parseInt(t.w*n/t.h),i.width>o&&(i.height=parseInt(i.height*o/i.width),i.width=o)):i.height=i.width=Math.min(o,n),t.full=i,t.fullThumb=angular.copy(t.thumb),t.fullThumb.width=i.width,t.fullThumb.height=i.height,t.fromUser=r.getUser(t.user_id),t}function c(a){var o=e.$new(!0);o.videoID=a,o.progress={enabled:!1},o.player={};t.open({templateUrl:"partials/video_modal.html",controller:"VideoModalController",scope:o})}function u(t,a,r){function i(t){console.log("dl progress",t),d.progress.done=t.done,d.progress.percent=Math.max(1,Math.floor(100*t.done/t.total)),e.$broadcast("history_update")}var s=l[t],d=p[t]||s||{},c={_:"inputVideoFileLocation",id:t,access_hash:a||s.access_hash};d.progress={enabled:!0,percent:1,total:s.size};var u="mp4",h="video/mpeg4",g="video"+t+"."+u;if(window.chrome&&chrome.fileSystem&&chrome.fileSystem.chooseEntry)chrome.fileSystem.chooseEntry({type:"saveFile",suggestedName:g,accepts:[{mimeTypes:[h],extensions:[u]}]},function(e){var t=n.downloadFile(s.dc_id,c,s.size,e,{mime:h});t.then(function(){delete d.progress,console.log("file save done")},function(e){console.log("video download failed",e),d.progress.enabled=!1},i),d.progress.cancel=t.cancel});else{var m=n.downloadFile(s.dc_id,c,s.size,null,{mime:h});m.then(function(e){if(delete d.progress,r)return void window.open(e,"_blank");var t=$("Download").css({position:"absolute",top:1,left:1}).attr("href",e).attr("target","_blank").attr("download",g).appendTo("body");t[0].dataset.downloadurl=[h,g,e].join(":"),t[0].click(),o(function(){t.remove()},100)},function(e){console.log("video download failed",e),d.progress.enabled=!1},i),d.progress.cancel=m.cancel}}var l={},p={};return e.openVideo=c,e.downloadVideo=u,{saveVideo:i,wrapForHistory:s,wrapForFull:d,openVideo:c}}]).service("AppDocsManager",["$rootScope","$modal","$window","$timeout","MtpApiFileManager",function(e,t,a,o,n){function r(e){d[e.id]=e,e.thumb&&"photoCachedSize"==e.thumb._&&(n.saveSmallFile(e.thumb.location,e.thumb.bytes),e.thumb.size=e.thumb.bytes.length,delete e.thumb.bytes,e.thumb._="photoSize")}function i(e){if(void 0!==c[e])return c[e];var t=angular.copy(d[e]),a=100,o=100,n=t.thumb,r={width:a,height:o};return n&&"photoSizeEmpty"!=n._?(n.w>n.h?r.height=parseInt(n.h*a/n.w):r.width=parseInt(n.w*o/n.h),r.location=n.location,r.size=n.size):r=!1,t.thumb=r,t.canDownload=!(window.chrome&&chrome.fileSystem&&chrome.fileSystem.chooseEntry),t.withPreview=t.canDownload&&t.mime_type.match(/^(image\/|application\/pdf)/),c[e]=t}function s(t,a,r){function i(t){console.log("dl progress",t),u.progress.done=t.done,u.progress.percent=Math.max(1,Math.floor(100*t.done/t.total)),e.$broadcast("history_update")}var s=d[t],u=c[t]||s||{},l={_:"inputDocumentFileLocation",id:t,access_hash:a||s.access_hash};if(u.progress={enabled:!0,percent:1,total:s.size},window.chrome&&chrome.fileSystem&&chrome.fileSystem.chooseEntry){var p=(s.file_name.split(".",2)||[])[1]||"";chrome.fileSystem.chooseEntry({type:"saveFile",suggestedName:s.file_name,accepts:[{mimeTypes:[s.mime_type],extensions:[p]}]},function(e){var t=n.downloadFile(s.dc_id,l,s.size,e,{mime:s.mime_type});t.then(function(){delete u.progress,console.log("file save done")},function(e){console.log("document download failed",e),u.progress.enabled=!1},i),u.progress.cancel=t.cancel})}else{var h=n.downloadFile(s.dc_id,l,s.size,null,{mime:s.mime_type});h.then(function(e){if(delete u.progress,r)return void window.open(e,"_blank");var t=$("Download").css({position:"absolute",top:1,left:1}).attr("href",e).attr("target","_blank").attr("download",s.file_name).appendTo("body");t[0].dataset.downloadurl=[s.mime_type,s.file_name,e].join(":"),t[0].click(),o(function(){t.remove()},100)},function(e){console.log("document download failed",e),u.progress.enabled=!1},i),u.progress.cancel=h.cancel}}var d={},c={};return e.downloadDoc=s,{saveDoc:r,wrapForHistory:i,downloadDoc:s}}]).service("AppAudioManager",["$rootScope","$modal","$window","$timeout","$sce","MtpApiFileManager",function(e,t,a,o,n,r){function i(e){c[e.id]=e}function s(e){if(void 0!==u[e])return u[e];var t=angular.copy(c[e]);return u[e]=t}function d(t,a){function i(t){console.log("dl progress",t),d.progress.done=t.done,d.progress.percent=Math.max(1,Math.floor(100*t.done/t.total)),e.$broadcast("history_update")}var s=c[t],d=u[t]||s||{},l={_:"inputAudioFileLocation",id:t,access_hash:a||s.access_hash};d.progress={enabled:!0,percent:1,total:s.size};var p=r.downloadFile(s.dc_id,l,s.size,null,{mime:"audio/mpeg"});p.then(function(t){delete d.progress,d.url=n.trustAsResourceUrl(t),d.autoplay=!0,o(function(){console.log("disable autoplay"),delete d.autoplay,e.$broadcast("history_update")},1e3)},function(e){console.log("audio download failed",e),d.progress.enabled=!1},i),d.progress.cancel=p.cancel}var c={},u={};return e.openAudio=d,{saveAudio:i,wrapForHistory:s,openAudio:d}}]).service("ExternalResourcesManager",["$q","$http",function(e,t){function a(e){return void 0!==o[e]?o[e]:o[e]=t.get(e,{responseType:"blob",transformRequest:null}).then(function(e){return window.URL=window.URL||window.webkitURL,window.URL.createObjectURL(e.data)})}var o={};return{downloadImage:a}}]).service("ApiUpdatesManager",["$rootScope","MtpNetworkerFactory","AppUsersManager","AppChatsManager","AppPeersManager","MtpApiManager",function(e,t,a,o,n,r){function i(e){if(l.invalid)return!1;if(e.seq){if(!c(e.seq,e.seq_start))return!1;e.date&&(l.date=e.date)}switch(e._){case"updatesTooLong":s();break;case"updateShort":d(e.update);break;case"updatesCombined":case"updates":a.saveApiUsers(e.users),o.saveApiChats(e.chats); +for(var t,i,u,t=0;tl.seq&&(console.warn("Seq hole",t,l.seq),s()),!1):(l.seq=e,!0):!0}function u(){t.setUpdatesProcessor(i),r.invokeApi("updates.getState").then(function(e){l.seq=e.seq,l.pts=e.pts,l.date=e.date,delete l.invalid})}var l={invalid:!0};return{saveUpdate:d,saveSeq:c,attach:u}}]).service("RichTextProcessor",["$sce","$sanitize",function(e,t){function a(e){return e.replace(/&/g,"&").replace(/([^\#-~| |!])/g,function(e){return"&#"+e.charCodeAt(0)+";"}).replace(//g,">")}function o(e){for(var t,a,o,n,r=0;r-1)return a=Math.floor(t/n),o=t%n,{category:r,row:a,column:o};return console.error("emoji not found in spritesheet",e),null}function n(n,i){if(!n||!n.length)return"";i=i||{},n=n.replace(/\ufe0f/g,"",n);for(var p,h,g,m=n,f=[],v=!1;p=m.match(u);)f.push(a(m.substr(0,p.index))),p[1]?i.noLinks?f.push(a(p[0])):p[3]?f.push('',a(p[3]+p[4]),""):f.push('',a(p[2]+"://"+p[4]),""):p[5]?f.push(i.noLinebreaks?" ":"
"):p[6]&&((r=s[p[6]])&&(g=o(r))?(h=a(d[r][1][0]),v=!0,f.push('',":",h,":")):f.push(a(p[6]))),m=m.substr(p.index+p[0].length);if(f.push(a(m)),n=t(f.join("")),v&&(n=n.replace(//g,'')),!i.noLinks){var _=n.match(l),w=_&&_[1];w&&(n=n+'
')}return e.trustAs("html",n)}var r,i=[],s={},d=Config.Emoji,c=18;for(r in d)i.push(d[r][0]),s[d[r][0]]=r;var u=new RegExp("((?:(ftp|https?)://|(?:mailto:)?([A-Za-z0-9._%+-]+@))(\\S*\\.\\S*[^\\s.;,(){}<>\"']))|(\\n)|("+i.join("|")+")","i"),l=/(?:https?:\/\/)?(?:www\.)?youtu(?:|.be|be.com|.b)(?:\/v\/|\/watch\\?v=|e\/|\/watch(?:.+)v=)(.{11})(?:\&[^\s]*)?/;return{wrapRichText:n}}]).service("IdleManager",["$rootScope","$window","$timeout",function(e,t,a){function o(){i||(i=!0,$(t).on("blur focus keydown mousedown touchstart",n))}function n(o){"mousemove"==o.type&&$(t).off("mousemove",n);var i="blur"==o.type||"timeout"==o.type?!0:!1;a.cancel(r),i||(r=a(function(){n({type:"timeout"})},3e4)),e.idle.isIDLE!=i&&(e.$apply(function(){e.idle.isIDLE=i}),i&&"timeout"==o.type&&$(t).on("mousemove",n))}e.idle={isIDLE:!1};var r,i=!1;return{start:o}}]).service("StatusManager",["$timeout","$rootScope","MtpApiManager","IdleManager",function(e,t,a){function o(){d||(d=!0,t.$watch("idle.isIDLE",r),t.$watch("offline",r))}function n(e){var o=tsNow();if(!(e&&!s||!e&&5e4>o-s||t.offline))return s=e?0:o,a.invokeApi("account.updateStatus",{offline:e},{noErrorBox:!0})}function r(){i&&e.cancel(i),t.idle.isIDLE?i=e(function(){n(!0)},5e3):(n(!1),i=e(r,6e4))}var i,s=0,d=!1;return{start:o}}]).service("NotificationsManager",["$rootScope","$window","$timeout","$interval","$q","MtpApiManager","AppPeersManager","IdleManager","AppConfigManager",function(e,t,a,o,n,r,i,s,d){function c(e){return void 0!==S[e]?S[e]:S[e]=r.invokeApi("account.getNotifySettings",{peer:{_:"inputNotifyPeer",peer:i.getInputPeerByID(e)}})}function u(e,t){var a=angular.copy(t);return a._="inputPeerNotifySettings",S[e]=n.when(t),r.invokeApi("account.updateNotifySettings",{peer:{_:"inputNotifyPeer",peer:i.getInputPeerByID(e)},settings:a})}function l(e){return c(e).then(function(e){return"peerNotifySettings"==e._&&1e3*e.mute_until>tsNow()})}function p(){if(!w)return!1;"granted"!==Notification.permission&&"denied"!==Notification.permission&&$(t).on("click",h);try{$(t).on("beforeunload",v)}catch(e){}}function h(){Notification.requestPermission(),$(t).off("click",h)}function g(t){return e.idle.isIDLE?(M++,w&&"granted"===Notification.permission?(d.get("notify_nosound").then(function(e){e||m()}),void d.get("notify_nodesktop").then(function(e){if(!e){var a=++b,o=t.key||"k"+a,n=new Notification(t.title,{icon:t.image||"",body:t.message||""});n.onclick=function(){n.close(),window.chrome&&chrome.app&&chrome.app.window&&chrome.app.window.current().focus(),window.focus(),v(),t.onclick&&t.onclick()},n.onclose=function(){delete y[o],v()},y[o]=n}})):!1):!1}function m(){var e="img/sound_a.wav";$("#notify_sound").html('')}function f(e){var t=y[e];if(t)try{t.close&&t.close()}catch(a){}}function v(){angular.forEach(y,function(e){try{e.close&&e.close()}catch(t){}}),y={}}var _,w="Notification"in window,y={},b=0,M=0,S={},A=$('link[rel="icon"]'),D=$(''),k=document.title;return e.$watch("idle.isIDLE",function(e){o.cancel(_),e?(k=document.title,_=o(function(){var e=tsNow();!M||e%2e3>1e3?(document.title=k,$('link[rel="icon"]').replaceWith(A)):(document.title=M>1?M+" notifications":"1 notification",$('link[rel="icon"]').replaceWith(D))},1e3)):(M=0,document.title=k,$('link[rel="icon"]').replaceWith(A),v())}),{start:p,notify:g,cancel:f,clear:v,getPeerSettings:c,getPeerMuted:l,savePeerSettings:u}}]).service("ErrorService",["$rootScope","$modal",function(e,t){function a(a,o){if(n>=2)return console.log("Skip error box, too many open",n,a,o),!1;o=o||{};var r=e.$new();angular.extend(r,a),n++;var i=t.open({templateUrl:"partials/error_modal.html",scope:r,windowClass:o.windowClass||"error_modal_window"});return i.result["finally"](function(){n--}),i}function o(e,t){return a({title:e,description:t})}var n=0;return{show:a,alert:o}}]).service("PeersSelectService",["$rootScope","$modal",function(e,t){function a(){var a=e.$new();return t.open({templateUrl:"partials/peer_select.html",controller:"PeerSelectController",scope:a,windowClass:"peer_select_window"}).result}return{selectPeer:a}}]).service("ContactsSelectService",["$rootScope","$modal",function(e,t){function a(a,o){o=o||{};var n=e.$new();return n.multiSelect=a,angular.extend(n,o),t.open({templateUrl:"partials/contacts_modal.html",controller:"ContactsModalController",scope:n,windowClass:"contacts_modal_window"}).result}return{selectContacts:function(e){return a(!0,e)},selectContact:function(e){return a(!1,e)}}}]); +"use strict";angular.module("myApp.controllers",[]).controller("AppWelcomeController",["$scope","$location","MtpApiManager",function(e,t,o){o.getUserID().then(function(o){o?t.url("/im"):e.showWelcome=!0})}]).controller("AppLoginController",["$scope","$location","$timeout","MtpApiManager","ErrorService",function(e,t,o,n,r){function a(e){n.setUserAuth(i.dcID,{expires:e.expires,id:e.user.id}),o.cancel(c),t.url("/im")}function s(){o.cancel(c),--e.callPending.remaining?c=o(s,1e3):(e.callPending.success=!1,n.invokeApi("auth.sendCall",{phone_number:e.credentials.phone_number,phone_code_hash:e.credentials.phone_code_hash},i).then(function(){e.callPending.success=!0}))}n.getUserID().then(function(e){return e?void t.url("/im"):void 0});var i={dcID:1,createNetworker:!0};e.credentials={},e.progress={},e.callPending={};var c;e.sendCode=function(){o.cancel(c),e.progress.enabled=!0,n.invokeApi("auth.checkPhone",{phone_number:e.credentials.phone_number},i).then(function(t){return e.progress.enabled=!1,t.phone_registered?(e.progress.enabled=!0,void n.invokeApi("auth.sendCode",{phone_number:e.credentials.phone_number,sms_type:0,api_id:2496,api_hash:"8da85b0d5bfe62527e5b244c209159c3"},i).then(function(t){e.progress.enabled=!1,e.credentials.phone_code_hash=t.phone_code_hash,e.credentials.phone_occupied=t.phone_registered,e.error={},e.callPending.remaining=t.send_call_timeout,s()},function(t){switch(e.progress.enabled=!1,console.log("sendCode error",t),t.type){case"PHONE_NUMBER_INVALID":e.error={field:"phone"},t.handled=!0}})):(r.show({error:{code:400,type:"ACCOUNT_REQUIRED"},phone:e.credentials.phone_number}),!1)},function(t){switch(e.progress.enabled=!1,t.type){case"PHONE_NUMBER_INVALID":e.error={field:"phone"},t.handled=!0}})},e.logIn=function(t){var o="auth.signIn",r={phone_number:e.credentials.phone_number,phone_code_hash:e.credentials.phone_code_hash,phone_code:e.credentials.phone_code};t&&(o="auth.signUp",angular.extend(r,{first_name:e.credentials.first_name,last_name:e.credentials.last_name})),e.progress.enabled=!0,n.invokeApi(o,r,i).then(a,function(t){if(e.progress.enabled=!1,400==t.code&&"PHONE_NUMBER_UNOCCUPIED"==t.type)return t.handled=!0,e.logIn(!0);if(400==t.code&&"PHONE_NUMBER_OCCUPIED"==t.type)return t.handled=!0,e.logIn(!1);switch(t.type){case"FIRSTNAME_INVALID":e.error={field:"first_name"},t.handled=!0;break;case"LASTNAME_INVALID":e.error={field:"last_name"},t.handled=!0;break;case"PHONE_CODE_INVALID":e.error={field:"phone_code"},t.handled=!0}})}}]).controller("AppIMController",["$scope","$location","$routeParams","$modal","$rootScope","$modalStack","MtpApiManager","AppUsersManager","ContactsSelectService",function(e,t,o,n,r,a,s,i,c){function l(){e.curDialog={peer:o.p||!1}}e.$on("$routeUpdate",l),e.$on("history_focus",function(o,n){a.dismissAll(),n.peerString==e.curDialog.peer?e.$broadcast("ui_history_focus"):t.url("/im?p="+n.peerString)}),e.isLoggedIn=!0,e.openSettings=function(){n.open({templateUrl:"partials/settings_modal.html",controller:"SettingsModalController",scope:r.$new(),windowClass:"settings_modal_window"})},e.openContacts=function(){c.selectContact().then(function(t){e.dialogSelect(i.getUserString(t))})},e.openGroup=function(){c.selectContacts().then(function(t){if(1==t.length)e.dialogSelect(i.getUserString(t[0]));else if(t.length>1){var o=r.$new();o.userIDs=t,n.open({templateUrl:"partials/chat_create_modal.html",controller:"ChatCreateModalController",scope:o,windowClass:"contacts_modal_window"})}})},e.dialogSelect=function(e){r.$broadcast("history_focus",{peerString:e})},l()}]).controller("AppImDialogsController",["$scope","$location","MtpApiManager","AppUsersManager","AppChatsManager","AppMessagesManager","AppPeersManager",function(e,t,o,n,r,a){function s(){l=0,u=0,p=!1,d={},c=!1,a.getDialogs(e.search.query,u).then(function(t){e.dialogs=[],e.contacts=[],t.dialogs.length&&(l+=t.dialogs.length,u=t.dialogs[t.dialogs.length-1].top_message,p=null===t.count||l0?s=t:0>t&&(a=s+t),o=a;s>o;o++)n=e.history[o],r&&n.from_id==r.from_id&&n.date0){var t=[];angular.forEach(e.selectedMsgs,function(e,o){t.push(o)}),i.deleteMessages(t).then(function(){D()})}}function v(){if(e.selectedCount>0){var t=[];angular.forEach(e.selectedMsgs,function(e,o){t.push(o)}),u.selectPeer().then(function(e){var o=c.getPeerID(e);i.forwardMessages(o,t).then(function(){D(),n.$broadcast("history_focus",{peerString:e})})})}}function A(){e.selectActions?D():(e.selectActions=!0,e.$broadcast("ui_panel_update"))}function U(t){t&&(e.missedCount=0),e.mediaType=t||!1,e.history=[],m()}function P(){e.curDialog.peerID>0?n.openUser(e.curDialog.peerID):e.curDialog.peerID<0&&n.openChat(-e.curDialog.peerID)}e.$watch("curDialog.peer",h),l.attach(),p.start(),d.start(),e.history=[],e.mediaType=!1,e.selectedMsgs={},e.selectedCount=0,e.selectActions=!1,e.missedCount=0,e.typing={},e.state={},e.toggleMessage=C,e.selectedDelete=I,e.selectedForward=v,e.selectedCancel=D,e.selectedFlush=M,e.toggleEdit=A,e.toggleMedia=U,e.showPeerInfo=P;var b,S=0,w=!1,E=0,F={photos:"inputMessagesFilterPhotos",video:"inputMessagesFilterVideo",documents:"inputMessagesFilterDocument"},k=0,N={};e.$on("history_update",angular.noop),e.$on("history_append",function(t,r){if(r.peerID==e.curDialog.peerID){if(e.mediaType)return void(r.my?U():e.missedCount++);e.history.push(i.wrapForHistory(r.messageID)),f(-3),e.typing={},e.$broadcast("ui_history_append",{my:r.my}),r.my&&(e.historyUnread={}),S++,n.idle.isIDLE||o(function(){i.readHistory(e.curDialog.inputPeer)})}}),e.$on("history_delete",function(t,o){if(o.peerID==e.curDialog.peerID){for(var n=[],r=0;r0){var t=[];return angular.forEach(e.selectedContacts,function(e,o){t.push(o)}),o.close(t)}},e.importContact=function(){t.open({templateUrl:"partials/import_contact_modal.html",controller:"ImportContactModalController",windowClass:"import_contact_modal_window"}).result.then(function(t){t&&r(e.search&&e.search.query||"")})}}]).controller("PeerSelectController",["$scope","$modalInstance",function(e,t){e.dialogSelect=function(e){t.close(e)}}]).controller("ChatCreateModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,o,n,r,a,s){e.group={name:""},e.createGroup=function(){if(e.group.name){var t=[];return angular.forEach(e.userIDs,function(e){t.push({_:"inputUserContact",user_id:e})}),n.invokeApi("messages.createChat",{title:e.group.name,users:t}).then(function(e){r.saveApiUsers(e.users),a.saveApiChats(e.chats),s.saveSeq(e.seq)&&s.saveUpdate({_:"updateNewMessage",message:e.message,pts:e.pts});var t=a.getChatString(e.message.to_id.chat_id);o.$broadcast("history_focus",{peerString:t})})}},e.back=function(){t.dismiss()}}]).controller("ChatEditModalController",["$scope","$modalInstance","$rootScope","MtpApiManager","AppUsersManager","AppChatsManager","ApiUpdatesManager",function(e,t,o,n,r,a,s){var i=a.getChat(e.chatID);e.group={name:i.title},e.updateGroup=function(){return e.group.name?e.group.name==i.title?t.close():n.invokeApi("messages.editChatTitle",{chat_id:e.chatID,title:e.group.name}).then(function(t){r.saveApiUsers(t.users),a.saveApiChats(t.chats),s.saveSeq(t.seq)&&s.saveUpdate({_:"updateNewMessage",message:t.message,pts:t.pts});var n=a.getChatString(e.chatID);o.$broadcast("history_focus",{peerString:n})}):void 0}}]).controller("ImportContactModalController",["$scope","$modalInstance","$rootScope","AppUsersManager",function(e,t,o,n){void 0===e.importContact&&(e.importContact={}),e.doImport=function(){e.importContact&&e.importContact.phone&&(e.progress={enabled:!0},n.importContact(e.importContact.phone,e.importContact.first_name,e.importContact.last_name).then(function(e){t.close(e)})["finally"](function(){delete e.progress.enabled}))}}]); "use strict";angular.module("myApp.filters",[]).filter("userName",[function(){return function(t){return t&&(t.first_name||t.last_name)?t.first_name+" "+t.last_name:"DELETED"}}]).filter("userFirstName",[function(){return function(t){return t&&(t.first_name||t.last_name)?t.first_name||t.last_name:"DELETED"}}]).filter("userStatus",["$filter",function(t){return function(r){return r&&r.status&&"userStatusEmpty"!=r.status._?"userStatusOnline"==r.status._?"online":"last seen "+t("relativeTime")(r.status.was_online):"offline"}}]).filter("chatTitle",[function(){return function(t){return t&&t.title?t.title:"DELETED"}}]).filter("dateOrTime",["$filter",function(t){var r={};return function(e){if(r[e])return r[e];var n=1e3*e,u=Math.abs(tsNow()-n),i="HH:mm";return u>5184e5?i="shortDate":u>432e5&&(i="EEE"),r[e]=t("date")(n,i)}}]).filter("duration",[function(){return function(t){var r=t%60,e=Math.floor((t-r)/60);return 10>r&&(r="0"+r),e+":"+r}}]).filter("phoneNumber",[function(){return function(t){var r=" ";return t=(t||"").replace(/\D/g,""),"7"==t.charAt(0)&&11==t.length?"+"+t.charAt(0)+r+"("+t.substr(1,3)+")"+r+t.substr(4,3)+"-"+t.substr(7,2)+"-"+t.substr(9,2):"+"+t}}]).filter("formatSize",[function(){return function(t){return t?1024>t?t+" b":1048576>t?Math.round(t/1024*10)/10+" Kb":Math.round(t/1048576*100)/100+" Mb":"0"}}]).filter("formatSizeProgress",["$filter",function(t){return function(r){var e=t("formatSize")(r.done),n=e.split(" "),u=t("formatSize")(r.total),i=u.split(" ");return i[1]===n[1]?n[0]+" of "+i[0]+" "+(n[1]||""):e+" of "+u}}]).filter("nl2br",[function(){return function(t){return t.replace(/\n/g,"
")}}]).filter("richText",["$filter",function(t){return function(r){return t("linky")(r,"_blank").replace(/\n| /g,"
")}}]).filter("relativeTime",["$filter",function(t){return function(r){var e=1e3*r,n=Math.abs(tsNow()-e);return 6e4>n?"just now":3e6>n?Math.ceil(n/6e4)+" minutes ago":1e7>n?Math.ceil(n/36e5)+" hours ago":t("dateOrTime")(r)}}]); -angular.module("myApp.templates",[]).run(["$templateCache",function(n){n.put("partials/chat_create_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/chat_edit_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/chat_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/contacts_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/dialog.html",'\n\n
\n
\n \n \n
\n\n
\n \n
\n\n
\n\n
\n \n \n \n \n
\n\n
\n \n You{{((dialogMessage.out || dialogMessage.peerID < 0) && (dialogMessage.message.length || dialogMessage.media && dialogMessage.media._ != \'messageMediaEmpty\')) ? \':\' : \'\'}}\n \n\n \n Photo\n Video\n Document\n Audio\n Location\n Contact\n \n\n \n created the group \n changed group name\n changed group photo\n removed group photo\n\n \n \n returned to group\n \n \n invited \n \n \n\n \n \n left group\n \n \n kicked \n \n \n \n\n \n
\n\n
\n
\n'),n.put("partials/edit_contact_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/error_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/head.html",'
\n \n
'),n.put("partials/im.html",'
\n\n
\n\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n\n
\n
\n Please select a chat to start messaging\n
\n
\n Loading history\n
\n\n
\n
\n\n
\n\n
\n
\n\n Info\n Edit\n\n \n \n Show all messages\n +{{missedCount}}\n \n\n
\n

Photos

\n

Videos

\n

Documents

\n\n

\n
\n \n {{historyPeer.data | userStatus}}\n
\n
\n \n \n \n \n \n
\n

\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n
\n No messages here yet...\n
\n
\n
\n
\n
\n\n
\n
\n is typing\n
\n
\n\n
\n\n
\n\n
\n\n
\n\n \n\n
\n\n
\n\n
\n
\n \n \n
\n
\n \n
\n
\n
Drop photos here to send
\n \n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n
\n\n \n
\n
\n\n
\n\n
\n\n
\n\n
\n
\n\n
\n\n
\n\n\n
\n\n\n\n
\n\n'),n.put("partials/import_contact_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/login.html",'
\n\n\n\n'),n.put("partials/message.html",'
\n \n \n
\n\n
\n\n\n
\n\n
\n
\n\n \n\n \n \n created the group «»\n \n \n changed group name to «»\n \n \n changed group photo\n \n \n removed group photo\n \n \n \n invited \n \n \n returned to group\n \n \n \n \n kicked \n \n \n left group\n \n \n\n \n \n\n
\n\n \n \n \n\n
\n\n
\n
\n \n
\n\n \n \n \n\n \n\n \n \n \n
\n \n
\n\n
\n\n \n \n\n
\n Forwarded message from , \n
\n\n
\n\n \n \n \n\n
\n \n \n \n \n \n\n
\n
\n Video\n \n \n
\n \n
\n
\n
\n \n {{historyMessage.media.video.progress.percent}}% Complete (success)\n \n
\n
\n
\n
\n
\n\n
\n \n \n
\n \n
\n
\n\n
\n
\n \n \n \n
\n
\n Download\n Open\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n \n \n \n \n\n
\n
\n \n Voice message\n \n \n \n
\n
\n Play\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n\n \n \n \n\n
\n \n \n \n
\n \n \n
\n
\n
\n\n
\n \n
\n
\n \n \n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n\n
\n
\n\n
\n
\n\n
\n\n'),n.put("partials/peer_select.html",'
\n\n \n\n \n\n
'),n.put("partials/photo_modal.html",'
\n\n \n\n
'),n.put("partials/settings_modal.html",'
\n\n \n\n \n
\n'),n.put("partials/user_modal.html",'
\n\n \n\n\n \n\n
'),n.put("partials/video_modal.html",'
\n\n \n\n
'),n.put("partials/welcome.html",'
\n\n\n
\n\n
\n \n\n
\n
\n

Welcome to an unofficial web-client of mobile Telegram messenger.

\n

It is an alpha, which means it is still not 200% secure and functional.

\n

Visit telegram.org to learn more.

\n
\n Start Messaging\n
\n
\n\n
\n') +angular.module("myApp.templates",[]).run(["$templateCache",function(n){n.put("partials/chat_create_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/chat_edit_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/chat_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/contacts_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/dialog.html",'\n\n
\n
\n \n \n
\n\n
\n \n
\n\n
\n\n
\n \n \n \n \n
\n\n
\n \n You{{((dialogMessage.out || dialogMessage.peerID < 0) && (dialogMessage.message.length || dialogMessage.media && dialogMessage.media._ != \'messageMediaEmpty\')) ? \':\' : \'\'}}\n \n\n \n Photo\n Video\n Document\n Audio\n Location\n Contact\n \n\n \n created the group \n changed group name\n changed group photo\n removed group photo\n\n \n \n returned to group\n \n \n invited \n \n \n\n \n \n left group\n \n \n kicked \n \n \n \n\n \n
\n\n
\n
\n'),n.put("partials/edit_contact_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/error_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/head.html",'
\n \n
'),n.put("partials/im.html",'
\n\n
\n\n
\n\n
\n
\n \n \n
\n
\n
\n
\n \n \n
\n
\n
\n
\n\n
\n
\n Please select a chat to start messaging\n
\n
\n Loading history\n
\n\n
\n
\n\n
\n\n
\n
\n\n Info\n Edit\n\n \n \n Show all messages\n +{{missedCount}}\n \n\n
\n

Photos

\n

Videos

\n

Documents

\n\n

\n
\n \n {{historyPeer.data | userStatus}}\n
\n
\n \n \n \n \n \n
\n

\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n\n
\n
\n No messages here yet...\n
\n
\n
\n
\n
\n\n
\n
\n is typing\n
\n
\n\n
\n\n
\n\n
\n\n
\n\n \n\n
\n\n
\n\n
\n
\n \n \n
\n
\n \n
\n
\n
Drop photos here to send
\n \n\n
\n \n \n
\n\n
\n \n \n
\n\n
\n \n
\n\n \n
\n
\n\n
\n\n
\n\n
\n\n
\n
\n\n
\n\n
\n\n\n
\n\n\n\n
\n\n'),n.put("partials/import_contact_modal.html",'
\n\n \n\n \n\n
'),n.put("partials/login.html",'
\n\n\n\n'),n.put("partials/message.html",'
\n \n \n
\n\n
\n\n\n
\n\n
\n
\n\n \n\n \n \n created the group «»\n \n \n changed group name to «»\n \n \n changed group photo\n \n \n removed group photo\n \n \n \n invited \n \n \n returned to group\n \n \n \n \n kicked \n \n \n left group\n \n \n\n \n \n\n
\n\n \n \n \n\n
\n\n
\n
\n \n
\n\n \n \n \n\n \n\n \n \n \n
\n \n
\n\n
\n\n \n \n\n
\n Forwarded message from , \n
\n\n
\n\n \n \n \n\n
\n \n \n \n \n \n\n
\n
\n Video\n \n \n
\n \n
\n Cancel\n
\n
\n
\n
\n
\n
\n
\n
\n\n
\n \n \n
\n \n
\n
\n\n
\n
\n \n \n \n
\n
\n Download\n Open\n
\n
\n Cancel\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n \n \n \n \n\n
\n
\n \n Voice message\n \n \n \n
\n
\n Play\n
\n
\n Cancel\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n\n \n \n \n\n
\n \n \n \n
\n \n \n
\n
\n
\n\n
\n \n
\n
\n \n \n
\n
\n Cancel\n
\n
\n
\n
\n
\n
\n
\n
\n\n\n
\n\n
\n
\n\n
\n
\n\n
\n\n'),n.put("partials/peer_select.html",'
\n\n \n\n \n\n
'),n.put("partials/photo_modal.html",'
\n\n \n\n
'),n.put("partials/settings_modal.html",'
\n\n \n\n \n
\n'),n.put("partials/user_modal.html",'
\n\n \n\n\n \n\n
'),n.put("partials/video_modal.html",'
\n\n \n\n
'),n.put("partials/welcome.html",'
\n\n\n
\n\n
\n \n\n
\n
\n

Welcome to an unofficial web-client of mobile Telegram messenger.

\n

It is an alpha, which means it is still not 200% secure and functional.

\n

Visit telegram.org to learn more.

\n
\n Start Messaging\n
\n
\n\n
\n') }]); -"use strict";angular.module("myApp.directives",["myApp.filters"]).directive("myDialog",function(){return{restrict:"AE",scope:!0,translude:!1,templateUrl:"partials/dialog.html"}}).directive("myMessage",function(){return{restrict:"AE",scope:!0,translude:!1,templateUrl:"partials/message.html"}}).directive("myDialogsList",["$window","$timeout",function(e,t){function o(o,i,n){function r(){return n.modal?($(i).css({height:$(e).height()-200}),void h()):(l&&l.offsetHeight||(l=$(".tg_page_head")[0]),c&&c.offsetHeight||(c=$(".im_page_footer")[0]),$(i).css({height:$(e).height()-c.offsetHeight-(l?l.offsetHeight:44)-72}),void h())}var a=$(".im_dialogs_wrap",i)[0],s=$(".im_dialogs_scrollable_wrap",i)[0],l=$(".tg_page_head")[0],c=$(".im_page_footer")[0],d=!1;onContentLoaded(function(){$(a).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0})});var h=function(){onContentLoaded(function(){$(a).nanoScroller()})};o.$on("ui_dialogs_prepend",h),o.$on("ui_dialogs_append",function(){onContentLoaded(function(){h(),d=!1,t(function(){$(s).trigger("scroll")})})}),o.$on("ui_dialogs_change",function(){onContentLoaded(function(){h(),d=!1,t(function(){$(s).trigger("scroll")})})}),$(s).on("scroll",function(){!d&&s.scrollTop>=s.scrollHeight-s.clientHeight-300&&(o.$emit("dialogs_need_more"),d=!0)}),$(e).on("resize",r),r(),setTimeout(r,1e3)}return{link:o}}]).directive("myContactsList",["$window","$timeout",function(e){function t(t,o){function i(){$(o).css({height:$(e).height()-(r&&r.offsetHeight||0)-(n&&n.offsetHeight||0)-200}),$(a).nanoScroller()}var n=$(".contacts_modal_search")[0],r=$(".contacts_modal_panel")[0],a=$(".contacts_wrap",o)[0];onContentLoaded(function(){$(a).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),i()}),$(e).on("resize",i),t.$on("contacts_change",function(){onContentLoaded(i)})}return{link:t}}]).directive("myHistory",["$window","$timeout","$transition",function(e,t,o){function i(i,n){function r(t){if(n.is(":visible")&&$(n[0].parentNode).is(":visible")){$(f).is(":visible")&&$(f).css({height:$(_).height()}),p&&p.offsetHeight||(p=$(".tg_page_head")[0]),m&&m.offsetHeight||(m=$(".im_page_footer")[0]);var o=$(e).height()-u.offsetHeight-g.offsetHeight-(p?p.offsetHeight:44)-m.offsetHeight;$(s).css({height:o}),$(c).css({minHeight:o-44}),a(),t!==!0&&(T&&onContentLoaded(function(){d.scrollTop=d.scrollHeight,b()}),b(100))}}function a(){$(l).css({marginTop:0}),l.offsetHeight>0&&l.offsetHeight<=d.offsetHeight&&$(l).css({marginTop:d.offsetHeight-l.offsetHeight-20-44+"px"}),$(s).nanoScroller()}var s=$(".im_history_wrap",n)[0],l=$(".im_history_messages",n)[0],c=$(".im_history",n)[0],d=$(".im_history_scrollable_wrap",n)[0],h=$(".im_history_scrollable",n)[0],u=$(".im_history_panel_wrap",n)[0],g=$(".im_bottom_panel_wrap",n)[0],f=$(".im_send_form_wrap",n)[0],p=$(".tg_page_head")[0],m=$(".im_page_footer")[0],_=$(".im_send_form",n)[0],v=!1;onContentLoaded(function(){d.scrollTop=d.scrollHeight,$(s).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0})});var y,b=function(e){t(function(){$(d).hasClass("im_history_to_bottom")||$(s).nanoScroller()},e||0)},w=!1,C=["transform","webkitTransform","MozTransform","msTransform","OTransform"];for(y=0;y=d.scrollHeight-d.clientHeight,!v&&d.scrollTop<=300&&(v=!0,i.$emit("history_need_more"))))}),$(e).on("resize",r),r(),onContentLoaded(r)}return{link:i}}]).directive("mySendForm",["$timeout","AppConfigManager",function(e,t){function o(o,i){function n(){if(v){e.cancel(y);var t=$("
").text(o.draftMessage.text||"").html();t=t.replace(/\n/g,"
"),$(v).html(t),a()}}function r(){v&&($(v).trigger("change"),a())}function a(){var e=v.offsetHeight;k!=e&&(k=e,o.$emit("ui_editor_resize"))}function s(){onContentLoaded(function(){_.focus()})}function l(e){var t,i=e&&e.target;if(i&&(t=i.src)&&0===t.indexOf("data")){i.parentNode.removeChild(i),t=t.substr(5).split(";");for(var n=t[0],r=atob(t[1].split(",")[1]),a=new Uint8Array(r.length),s=0;se-C||(C=e,o.$emit("ui_typing"))});var k=v.offsetHeight;$("body").on("dragenter dragleave dragover drop",d),$(document).on("paste",c),v&&$(v).on("DOMNodeInserted",l),o.$on("ui_peer_change",s),o.$on("ui_history_focus",s),o.$on("ui_history_change",s),o.$on("ui_message_send",s),o.$on("ui_peer_draft",n),o.$on("ui_message_before_send",r),o.$on("$destroy",function(){$("body").off("dragenter dragleave dragover drop",d),$(document).off("paste",c),v&&$(v).off("DOMNodeInserted",l)}),s()}return{link:o,scope:{draftMessage:"="}}}]).directive("myLoadThumb",["MtpApiFileManager",function(e){function t(t,o){var i=0,n=e.getCachedFile(t.thumb&&t.thumb.location&&!t.thumb.location.empty&&t.thumb.location);n&&o.attr("src",n),t.thumb&&t.thumb.width&&t.thumb.height&&(o.attr("width",t.thumb.width),o.attr("height",t.thumb.height));var r=(t.$watchCollection("thumb.location",function(n){t.thumb&&t.thumb.width&&t.thumb.height&&(o.attr("width",t.thumb.width),o.attr("height",t.thumb.height));var a=++i;if(!n||n.empty)return o.attr("src",t.thumb&&t.thumb.placeholder||"img/blank.gif"),void r();var s=e.getCachedFile(n);return s?(o.attr("src",s),void r()):(o.attr("src")||o.attr("src",t.thumb.placeholder||"img/blank.gif"),void e.downloadSmallFile(t.thumb.location).then(function(e){a==i&&(o.attr("src",e),r())},function(e){console.log("Download image failed",e,t.thumb.location,o[0]),a==i&&(o.attr("src",t.thumb.placeholder||"img/blank.gif"),r())}))}),angular.noop)}return{link:t,scope:{thumb:"="}}}]).directive("myLoadFullPhoto",["MtpApiFileManager",function(e){function t(t,o){var i=$("img",o);if(i.attr("src",e.getCachedFile(t.thumbLocation)||"img/blank.gif").addClass("thumb_blurred").addClass("thumb_blur_animation"),t.fullPhoto.location){var n;if(t.fullPhoto.size){var r={_:"inputFileLocation",volume_id:t.fullPhoto.location.volume_id,local_id:t.fullPhoto.location.local_id,secret:t.fullPhoto.location.secret};n=e.downloadFile(t.fullPhoto.location.dc_id,r,t.fullPhoto.size)}else n=e.downloadSmallFile(t.fullPhoto.location);t.progress={enabled:!0,percent:1},n.then(function(e){t.progress.enabled=!1,i.attr("src",e).removeClass("thumb_blurred")},function(e){console.log("Download image failed",e,t.fullPhoto.location),t.progress.enabled=!1,t.error=e&&"FS_BROWSER_UNSUPPORTED"==e.type?{html:'Your browser doesn\'t support LocalFileSystem feature which is needed to display this image.
Please, install Google Chrome or use mobile app instead.'}:{text:"Download failed",error:e}},function(e){t.progress.percent=Math.max(1,Math.floor(100*e.done/e.total))})}}return{link:t,transclude:!0,template:'
{{progress.percent}}% Complete (success)
{{error.text}}
',scope:{fullPhoto:"=",thumbLocation:"="}}}]).directive("myLoadVideo",["$sce","MtpApiFileManager",function(e,t){function o(o){o.progress={enabled:!0,percent:1},o.player={};var i,n={_:"inputVideoFileLocation",id:o.video.id,access_hash:o.video.access_hash},r=!1;if(navigator.plugins)for(i=0;i=0&&(r=!0);t.downloadFile(o.video.dc_id,n,o.video.size,null,{mime:"video/mp4"}).then(function(t){o.progress.enabled=!1,o.player.hasQuicktime=r,o.player.quicktime=!1,o.player.src=e.trustAsResourceUrl(t)},function(e){console.log("Download video failed",e,o.video),o.progress.enabled=!1,o.player.src="",o.error=e&&"FS_BROWSER_UNSUPPORTED"==e.type?{html:'Your browser doesn\'t support LocalFileSystem feature which is needed to play this video.
Please, install Google Chrome or use mobile app instead.'}:{text:"Video download failed",error:e}},function(e){o.progress.percent=Math.max(1,Math.floor(100*e.done/e.total))})}return{link:o,transclude:!0,template:'
{{progress.percent}}% Complete (success)
{{error.text}}
',scope:{video:"="}}}]).directive("myMapPoint",["ExternalResourcesManager",function(e){function t(t,o){var i="AIzaSyC32ij28dCa0YzEV_HqbWfIwTZQql-RNS0",n="https://maps.googleapis.com/maps/api/staticmap?sensor=false¢er="+t.point.lat+","+t.point["long"]+"&zoom=13&size=200x100&scale=2&key="+i;e.downloadImage(n).then(function(e){o.append('')}),o.attr("href","https://maps.google.com/?q="+t.point.lat+","+t.point["long"]),o.attr("target","_blank")}return{link:t,scope:{point:"="}}}]).directive("myLoadingDots",["$interval",function(){function e(e,o){o.html(t(o[0])?'
':"...")}function t(e){if(void 0===o&&(o=void 0!==e.style.animationName,o===!1)){var t,i="Webkit Moz O ms Khtml".split(" ");for(t=0;te?$(i[0].parentNode).css("marginTop",(o-e)/2):$(i[0].parentNode).css("marginTop",""),t(function(){$(i[0].parentNode).addClass("modal-content-animated")},300)};onContentLoaded(n),$(e).on("resize",n),o.$on("ui_height",function(){onContentLoaded(n)})}return{link:o}}]).directive("myVerticalPosition",["$window","$timeout",function(e){function t(t,o,i){var n=function(){var t=o[0].offsetHeight,n=$(e).height(),r=i.myVerticalPosition&&parseFloat(i.myVerticalPosition)||.5,a=n>t?parseInt((n-t)*r):"";o.css({marginTop:a,marginBottom:a})};onContentLoaded(n),$(e).on("resize",n),t.$on("ui_height",function(){onContentLoaded(n)})}return{link:t}}]); \ No newline at end of file +"use strict";angular.module("myApp.directives",["myApp.filters"]).directive("myDialog",function(){return{restrict:"AE",scope:!0,translude:!1,templateUrl:"partials/dialog.html"}}).directive("myMessage",function(){return{restrict:"AE",scope:!0,translude:!1,templateUrl:"partials/message.html"}}).directive("myDialogsList",["$window","$timeout",function(e,t){function o(o,i,n){function r(){return n.modal?($(i).css({height:$(e).height()-200}),void h()):(l&&l.offsetHeight||(l=$(".tg_page_head")[0]),c&&c.offsetHeight||(c=$(".im_page_footer")[0]),$(i).css({height:$(e).height()-c.offsetHeight-(l?l.offsetHeight:44)-72}),void h())}var a=$(".im_dialogs_wrap",i)[0],s=$(".im_dialogs_scrollable_wrap",i)[0],l=$(".tg_page_head")[0],c=$(".im_page_footer")[0],d=!1;onContentLoaded(function(){$(a).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0})});var h=function(){onContentLoaded(function(){$(a).nanoScroller()})};o.$on("ui_dialogs_prepend",h),o.$on("ui_dialogs_append",function(){onContentLoaded(function(){h(),d=!1,t(function(){$(s).trigger("scroll")})})}),o.$on("ui_dialogs_change",function(){onContentLoaded(function(){h(),d=!1,t(function(){$(s).trigger("scroll")})})}),$(s).on("scroll",function(){!d&&s.scrollTop>=s.scrollHeight-s.clientHeight-300&&(o.$emit("dialogs_need_more"),d=!0)}),$(e).on("resize",r),r(),setTimeout(r,1e3)}return{link:o}}]).directive("myContactsList",["$window","$timeout",function(e){function t(t,o){function i(){$(o).css({height:$(e).height()-(r&&r.offsetHeight||0)-(n&&n.offsetHeight||0)-200}),$(a).nanoScroller()}var n=$(".contacts_modal_search")[0],r=$(".contacts_modal_panel")[0],a=$(".contacts_wrap",o)[0];onContentLoaded(function(){$(a).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0}),i()}),$(e).on("resize",i),t.$on("contacts_change",function(){onContentLoaded(i)})}return{link:t}}]).directive("myHistory",["$window","$timeout","$transition",function(e,t,o){function i(i,n){function r(t){if(n.is(":visible")&&$(n[0].parentNode).is(":visible")){$(f).is(":visible")&&$(f).css({height:$(_).height()}),p&&p.offsetHeight||(p=$(".tg_page_head")[0]),m&&m.offsetHeight||(m=$(".im_page_footer")[0]);var o=$(e).height()-u.offsetHeight-g.offsetHeight-(p?p.offsetHeight:44)-m.offsetHeight;$(s).css({height:o}),$(c).css({minHeight:o-44}),a(),t!==!0&&(T&&onContentLoaded(function(){d.scrollTop=d.scrollHeight,b()}),b(100))}}function a(){$(l).css({marginTop:0}),l.offsetHeight>0&&l.offsetHeight<=d.offsetHeight&&$(l).css({marginTop:d.offsetHeight-l.offsetHeight-20-44+"px"}),$(s).nanoScroller()}var s=$(".im_history_wrap",n)[0],l=$(".im_history_messages",n)[0],c=$(".im_history",n)[0],d=$(".im_history_scrollable_wrap",n)[0],h=$(".im_history_scrollable",n)[0],u=$(".im_history_panel_wrap",n)[0],g=$(".im_bottom_panel_wrap",n)[0],f=$(".im_send_form_wrap",n)[0],p=$(".tg_page_head")[0],m=$(".im_page_footer")[0],_=$(".im_send_form",n)[0],v=!1;onContentLoaded(function(){d.scrollTop=d.scrollHeight,$(s).nanoScroller({preventPageScrolling:!0,tabIndex:-1,iOSNativeScrolling:!0})});var y,b=function(e){t(function(){$(d).hasClass("im_history_to_bottom")||$(s).nanoScroller()},e||0)},w=!1,C=["transform","webkitTransform","MozTransform","msTransform","OTransform"];for(y=0;y=d.scrollHeight-d.clientHeight,!v&&d.scrollTop<=300&&(v=!0,i.$emit("history_need_more"))))}),$(e).on("resize",r),r(),onContentLoaded(r)}return{link:i}}]).directive("mySendForm",["$timeout","AppConfigManager",function(e,t){function o(o,i){function n(){if(v){e.cancel(y);var t=$("
").text(o.draftMessage.text||"").html();t=t.replace(/\n/g,"
"),$(v).html(t),a()}}function r(){v&&($(v).trigger("change"),a())}function a(){var e=v.offsetHeight;k!=e&&(k=e,o.$emit("ui_editor_resize"))}function s(){onContentLoaded(function(){_.focus()})}function l(e){var t,i=e&&e.target;if(i&&(t=i.src)&&0===t.indexOf("data")){i.parentNode.removeChild(i),t=t.substr(5).split(";");for(var n=t[0],r=atob(t[1].split(",")[1]),a=new Uint8Array(r.length),s=0;se-C||(C=e,o.$emit("ui_typing"))});var k=v.offsetHeight;$("body").on("dragenter dragleave dragover drop",d),$(document).on("paste",c),v&&$(v).on("DOMNodeInserted",l),o.$on("ui_peer_change",s),o.$on("ui_history_focus",s),o.$on("ui_history_change",s),o.$on("ui_message_send",s),o.$on("ui_peer_draft",n),o.$on("ui_message_before_send",r),o.$on("$destroy",function(){$("body").off("dragenter dragleave dragover drop",d),$(document).off("paste",c),v&&$(v).off("DOMNodeInserted",l)}),s()}return{link:o,scope:{draftMessage:"="}}}]).directive("myLoadThumb",["MtpApiFileManager",function(e){function t(t,o){var i=0,n=e.getCachedFile(t.thumb&&t.thumb.location&&!t.thumb.location.empty&&t.thumb.location);n&&o.attr("src",n),t.thumb&&t.thumb.width&&t.thumb.height&&(o.attr("width",t.thumb.width),o.attr("height",t.thumb.height));var r=(t.$watchCollection("thumb.location",function(n){t.thumb&&t.thumb.width&&t.thumb.height&&(o.attr("width",t.thumb.width),o.attr("height",t.thumb.height));var a=++i;if(!n||n.empty)return o.attr("src",t.thumb&&t.thumb.placeholder||"img/blank.gif"),void r();var s=e.getCachedFile(n);return s?(o.attr("src",s),void r()):(o.attr("src")||o.attr("src",t.thumb.placeholder||"img/blank.gif"),void e.downloadSmallFile(t.thumb.location).then(function(e){a==i&&(o.attr("src",e),r())},function(e){console.log("Download image failed",e,t.thumb.location,o[0]),a==i&&(o.attr("src",t.thumb.placeholder||"img/blank.gif"),r())}))}),angular.noop)}return{link:t,scope:{thumb:"="}}}]).directive("myLoadFullPhoto",["MtpApiFileManager",function(e){function t(t,o){var i=$("img",o);if(i.attr("src",e.getCachedFile(t.thumbLocation)||"img/blank.gif").addClass("thumb_blurred").addClass("thumb_blur_animation"),t.fullPhoto.location){var n;if(t.fullPhoto.size){var r={_:"inputFileLocation",volume_id:t.fullPhoto.location.volume_id,local_id:t.fullPhoto.location.local_id,secret:t.fullPhoto.location.secret};n=e.downloadFile(t.fullPhoto.location.dc_id,r,t.fullPhoto.size)}else n=e.downloadSmallFile(t.fullPhoto.location);t.progress={enabled:!0,percent:1},n.then(function(e){t.progress.enabled=!1,i.attr("src",e).removeClass("thumb_blurred")},function(e){console.log("Download image failed",e,t.fullPhoto.location),t.progress.enabled=!1,t.error=e&&"FS_BROWSER_UNSUPPORTED"==e.type?{html:'Your browser doesn\'t support LocalFileSystem feature which is needed to display this image.
Please, install Google Chrome or use mobile app instead.'}:{text:"Download failed",error:e}},function(e){t.progress.percent=Math.max(1,Math.floor(100*e.done/e.total))})}}return{link:t,transclude:!0,template:'
{{progress.percent}}% Complete (success)
{{error.text}}
',scope:{fullPhoto:"=",thumbLocation:"="}}}]).directive("myLoadVideo",["$sce","MtpApiFileManager",function(e,t){function o(o){o.progress={enabled:!0,percent:1},o.player={};var i,n={_:"inputVideoFileLocation",id:o.video.id,access_hash:o.video.access_hash},r=!1;if(navigator.plugins)for(i=0;i=0&&(r=!0);var a=t.downloadFile(o.video.dc_id,n,o.video.size,null,{mime:"video/mp4"});a.then(function(t){o.progress.enabled=!1,o.player.hasQuicktime=r,o.player.quicktime=!1,o.player.src=e.trustAsResourceUrl(t)},function(e){console.log("Download video failed",e,o.video),o.progress.enabled=!1,o.player.src="",o.error=e&&"FS_BROWSER_UNSUPPORTED"==e.type?{html:'Your browser doesn\'t support LocalFileSystem feature which is needed to play this video.
Please, install Google Chrome or use mobile app instead.'}:{text:"Video download failed",error:e}},function(e){o.progress.percent=Math.max(1,Math.floor(100*e.done/e.total))}),o.$on("$destroy",function(){a.cancel()})}return{link:o,transclude:!0,template:'
{{progress.percent}}% Complete (success)
',scope:{video:"="}}}]).directive("myMapPoint",["ExternalResourcesManager",function(e){function t(t,o){var i="AIzaSyC32ij28dCa0YzEV_HqbWfIwTZQql-RNS0",n="https://maps.googleapis.com/maps/api/staticmap?sensor=false¢er="+t.point.lat+","+t.point["long"]+"&zoom=13&size=200x100&scale=2&key="+i;e.downloadImage(n).then(function(e){o.append('')}),o.attr("href","https://maps.google.com/?q="+t.point.lat+","+t.point["long"]),o.attr("target","_blank")}return{link:t,scope:{point:"="}}}]).directive("myLoadingDots",["$interval",function(){function e(e,o){o.html(t(o[0])?'
':"...")}function t(e){if(void 0===o&&(o=void 0!==e.style.animationName,o===!1)){var t,i="Webkit Moz O ms Khtml".split(" ");for(t=0;te?$(i[0].parentNode).css("marginTop",(o-e)/2):$(i[0].parentNode).css("marginTop",""),t(function(){$(i[0].parentNode).addClass("modal-content-animated")},300)};onContentLoaded(n),$(e).on("resize",n),o.$on("ui_height",function(){onContentLoaded(n)})}return{link:o}}]).directive("myVerticalPosition",["$window","$timeout",function(e){function t(t,o,i){var n=function(){var t=o[0].offsetHeight,n=$(e).height(),r=i.myVerticalPosition&&parseFloat(i.myVerticalPosition)||.5,a=n>t?parseInt((n-t)*r):"";o.css({marginTop:a,marginBottom:a})};onContentLoaded(n),$(e).on("resize",n),t.$on("ui_height",function(){onContentLoaded(n)})}return{link:t}}]); \ No newline at end of file diff --git a/js/lib/mtproto.js b/js/lib/mtproto.js index 00cc115d..e37c14ae 100644 --- a/js/lib/mtproto.js +++ b/js/lib/mtproto.js @@ -281,7 +281,7 @@ function pqPrimeFactorization (pqBytes) { try { result = pqPrimeLong(goog.math.Long.fromString(what.toString(16), 16)); } catch (e) { - console.error(e); + console.error('Pq long Exception', e); }; // console.timeEnd('PQ long'); } @@ -2457,7 +2457,7 @@ factory('MtpNetworkerFactory', function (MtpDcConfigurator, MtpMessageIdGenerato }). -factory('MtpApiManager', function (AppConfigManager, MtpAuthorizer, MtpNetworkerFactory, $q) { +factory('MtpApiManager', function (AppConfigManager, MtpAuthorizer, MtpNetworkerFactory, ErrorService, $q) { var cachedNetworkers = {}, cachedUploadNetworkers = {}, cachedExportPromise = {}, @@ -2489,6 +2489,7 @@ factory('MtpApiManager', function (AppConfigManager, MtpAuthorizer, MtpNetworker AppConfigManager.remove('dc' + baseDcID + '_auth_key'); } baseDcID = false; + error.handled = true; }); } @@ -2547,6 +2548,25 @@ factory('MtpApiManager', function (AppConfigManager, MtpAuthorizer, MtpNetworker options = options || {}; var deferred = $q.defer(), + rejectPromise = function (error) { + if (!error) { + error = {type: 'ERROR_EMPTY'}; + } else if (!angular.isObject(error)) { + error = {message: error}; + } + deferred.reject(error); + + if (!options.noErrorBox) { + error.input = method; + error.stack = error.stack || stack; + setTimeout(function () { + if (!error.handled) { + ErrorService.show({error: error}); + error.handled = true; + } + }, 100); + } + }, dcID, networkerPromise; @@ -2558,7 +2578,8 @@ factory('MtpApiManager', function (AppConfigManager, MtpAuthorizer, MtpNetworker }); } - var cachedNetworker; + var cachedNetworker, + stack = false; networkerPromise.then(function (networker) { return (cachedNetworker = networker).wrapApiCall(method, params, options).then( @@ -2574,11 +2595,11 @@ factory('MtpApiManager', function (AppConfigManager, MtpAuthorizer, MtpNetworker if (cachedExportPromise[dcID] === undefined) { var exportDeferred = $q.defer(); - mtpInvokeApi('auth.exportAuthorization', {dc_id: dcID}).then(function (exportedAuth) { + mtpInvokeApi('auth.exportAuthorization', {dc_id: dcID}, {noErrorBox: true}).then(function (exportedAuth) { mtpInvokeApi('auth.importAuthorization', { id: exportedAuth.id, bytes: exportedAuth.bytes - }, {dcID: dcID}).then(function () { + }, {dcID: dcID, noErrorBox: true}).then(function () { exportDeferred.resolve(); }, function (e) { exportDeferred.reject(e); @@ -2594,10 +2615,10 @@ factory('MtpApiManager', function (AppConfigManager, MtpAuthorizer, MtpNetworker (cachedNetworker = networker).wrapApiCall(method, params, options).then(function (result) { deferred.resolve(result); }, function (error) { - deferred.reject(error); + rejectPromise(error); }); }, function (error) { - deferred.reject(error); + rejectPromise(error); }); } else if (error.code == 303) { @@ -2613,19 +2634,25 @@ factory('MtpApiManager', function (AppConfigManager, MtpAuthorizer, MtpNetworker networker.wrapApiCall(method, params, options).then(function (result) { deferred.resolve(result); }, function (error) { - deferred.reject(error); + rejectPromise(error); }); }); } } else { - deferred.reject(error); + rejectPromise(error); } }); }, function (error) { - deferred.reject(error); + rejectPromise(error); }); + if (!(stack = (stack || (new Error()).stack))) { + try {window.unexistingFunction();} catch (e) { + stack = e.stack || ''; + } + } + return deferred.promise; }; @@ -2900,10 +2927,11 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { } var deferred = $q.defer(), + canceled = false, + resolved = false, cacheFileWriter, errorHandler = function (error) { - console.error(error); - // console.log('fail'); + // console.error('Dl Error', error); deferred.reject(error); if (cacheFileWriter) cacheFileWriter.truncate(0); errorHandler = angular.noop; @@ -2921,7 +2949,10 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { writeFileDeferred = $q.defer(); (function (isFinal, offset, writeFileDeferred, writeFilePromise) { return downloadRequest(dcID, function () { - // console.log('next big promise'); + // console.log('next big promise'); + if (canceled) { + return $q.when(); + } return MtpApiManager.invokeApi('upload.getFile', { location: location, offset: offset, @@ -2937,6 +2968,9 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { // console.log('waiting for file promise', offset); writeFilePromise.then(function () { // console.log('resolved file promise', offset); + if (canceled) { + return $q.when(); + } return fileWriteBytes(fileWriter, result.bytes).then(function () { @@ -2947,6 +2981,7 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { if (isFinal) { // console.timeEnd(fileName + ' ' + (size / 1024)); + resolved = true; deferred.resolve(cachedDownloads[fileName] = fileEntry.toURL(options.mime || 'image/jpeg')); } else { // console.log('notify', {done: offset + limit, total: size}); @@ -2976,10 +3011,13 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { fileEntry.file(function(file) { // console.log(dT(), 'Check size', file.size, size); if (file.size >= size/* && false*/) { + resolved = true; deferred.resolve(cachedDownloads[fileName] = fileEntry.toURL()); } else { + // setTimeout(function () { console.log('File bad size', file, size); cachedFs.root.getFile(fileName, {create: true}, saveToFileEntry, errorHandler) + // }, 10000); } }, errorHandler); }, function () { @@ -2995,6 +3033,9 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { writeBlobDeferred = $q.defer(); (function (isFinal, offset, writeBlobDeferred, writeBlobPromise) { return downloadRequest(dcID, function () { + if (canceled) { + return $q.when(); + } return MtpApiManager.invokeApi('upload.getFile', { location: location, offset: offset, @@ -3006,6 +3047,9 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { }); }, 6).then(function (result) { writeBlobPromise.then(function () { + if (canceled) { + return $q.when(); + } try { blobParts.push(bytesToArrayBuffer(result.bytes)); writeBlobDeferred.resolve(); @@ -3022,8 +3066,8 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { var blob = bb.getBlob(options.mime || 'image/jpeg'); } - window.URL = window.URL || window.webkitURL; + resolved = true; deferred.resolve(cachedDownloads[fileName] = URL.createObjectURL(blob)); } else { deferred.notify({done: offset + limit, total: size}); @@ -3044,6 +3088,14 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { }); } + deferred.promise.cancel = function () { + if (!canceled && !resolved) { + canceled = true; + delete cachedDownloadPromises[fileName]; + errorHandler({type: 'DOWNLOAD_CANCELED'}); + } + } + return cachedDownloadPromises[fileName] = deferred.promise; } @@ -3079,8 +3131,11 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { function uploadFile (file) { var fileSize = file.size, // partSize = fileSize > 102400 ? 65536 : 4096, - partSize = fileSize > 102400 ? 524288 : 4096, + // partSize = fileSize > 102400 ? 524288 : 4096, + partSize = fileSize > 102400 ? 524288 : 30720, totalParts = Math.ceil(fileSize / partSize), + canceled = false, + resolved = false, doneParts = 0; if (totalParts > 1500) { @@ -3090,7 +3145,7 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { var fileID = [nextRandomInt(0xFFFFFFFF), nextRandomInt(0xFFFFFFFF)], deferred = $q.defer(), errorHandler = function (error) { - console.error('Error', error); + // console.error('Up Error', error); deferred.reject(error); errorHandler = angular.noop; }, @@ -3116,7 +3171,7 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { var blob = file.slice(offset, offset + partSize); reader.onloadend = function (e) { - if (e.target.readyState != FileReader.DONE) { + if (canceled || e.target.readyState != FileReader.DONE) { return; } var apiCurPromise = apiUploadPromise = apiUploadPromise.then(function () { @@ -3135,6 +3190,7 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { fileReadDeferred.resolve(); if (doneParts >= totalParts) { deferred.resolve(resultInputFile); + resolved = true; } else { console.log(dT(), 'Progress', doneParts * partSize / fileSize); deferred.notify({done: doneParts * partSize, total: fileSize}); @@ -3149,6 +3205,14 @@ factory('MtpApiFileManager', function (MtpApiManager, $q, $window) { })(offset, part++); } + deferred.promise.cancel = function () { + console.log('cancel upload', canceled, resolved); + if (!canceled && !resolved) { + canceled = true; + errorHandler({type: 'UPLOAD_CANCELED'}); + } + } + return deferred.promise; }