mirror of
https://github.com/MarshalX/telegram-crawler.git
synced 2024-12-11 09:23:40 +01:00
308 lines
21 KiB
HTML
308 lines
21 KiB
HTML
<!DOCTYPE html>
|
||
<html class="">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>TL schema for serialization of TL schemas</title>
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta property="description" content="If necessary, a TL schema can be serialized in binary form. Here, this serialization format is defined by a TL schema (usually…">
|
||
<meta property="og:title" content="TL schema for serialization of TL schemas">
|
||
<meta property="og:image" content="">
|
||
<meta property="og:description" content="If necessary, a TL schema can be serialized in binary form. Here, this serialization format is defined by a TL schema (usually…">
|
||
<link rel="shortcut icon" href="/favicon.ico?4" type="image/x-icon" />
|
||
|
||
<link href="/css/bootstrap.min.css?3" rel="stylesheet">
|
||
|
||
<link href="/css/telegram.css?214" rel="stylesheet" media="screen">
|
||
<style>
|
||
</style>
|
||
</head>
|
||
<body class="preload">
|
||
<div class="dev_page_wrap">
|
||
<div class="dev_page_head navbar navbar-static-top navbar-tg">
|
||
<div class="navbar-inner">
|
||
<div class="container clearfix">
|
||
<ul class="nav navbar-nav navbar-right hidden-xs"><li class="navbar-twitter"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i><span> Twitter</span></a></li></ul>
|
||
<ul class="nav navbar-nav">
|
||
<li><a href="//telegram.org/">Home</a></li>
|
||
<li class="hidden-xs"><a href="//telegram.org/faq">FAQ</a></li>
|
||
<li class="hidden-xs"><a href="//telegram.org/apps">Apps</a></li>
|
||
<li class=""><a href="/api">API</a></li>
|
||
<li class="active"><a href="/mtproto">Protocol</a></li>
|
||
<li class=""><a href="/schema">Schema</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="container clearfix">
|
||
<div class="dev_page">
|
||
<div id="dev_page_content_wrap" class=" ">
|
||
<div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/mtproto" >Mobile Protocol</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/mtproto/TL-tl" >TL schema for serialization of TL schemas</a></li></ul></div>
|
||
<h1 id="dev_page_title">TL schema for serialization of TL schemas</h1>
|
||
|
||
<div id="dev_page_content"><p>If necessary, a <a href="TL">TL</a> schema can be serialized in binary form. Here, this serialization format is defined by a TL schema (usually stored in the file <code>tl.tl</code>). This can be useful, for example, to make it possible to write a parser one time for converting a TL schema from text form (stored in the file <code>something.tl</code>) to binary form (stored in the file <code>something.tlo</code>). All other programs (for example, auto-generators of TL-(de)serializers for various programming languages) only need to know how to read <code>.tlo</code> files, which only requires generating an automatic deserializer according to the schema presented below.</p>
|
||
<p>First, a fragment of the file <code>common.tl</code> with certain required built-in types:</p>
|
||
<pre><code>/////
|
||
//
|
||
// Common Types (source file common.tl, only necessary definitions included)
|
||
//
|
||
/////
|
||
|
||
// Built-in types
|
||
int ? = Int;
|
||
long ? = Long;
|
||
double ? = Double;
|
||
string ? = String;
|
||
|
||
// Boolean emulation
|
||
boolFalse = Bool;
|
||
boolTrue = Bool;
|
||
|
||
// Vector
|
||
vector {t:Type} # [t] = Vector t;
|
||
tuple {t:Type} {n:#} [t] = Tuple t n;
|
||
vectorTotal {t:Type} total_count:int vector:%(Vector t) = VectorTotal t;
|
||
|
||
Empty False;
|
||
true = True;</code></pre>
|
||
<p>Next, properly, comes <code>tl.tl</code> itself. Note that the declaration for a fairly complex data type required only twenty lines in TL. This demonstrates the expressiveness and compactness of the TL language.</p>
|
||
<pre><code>/////
|
||
//
|
||
// Serialized binary TL-schema in TL format, source file tl.tl
|
||
//
|
||
/////
|
||
tls.schema_v2 version:int date:int types_num:# types:types_num*[tls.Type]
|
||
|
||
constructor_num:# constructors:constructor_num*[tls.Combinator]
|
||
functions_num:# functions:functions_num*[tls.Combinator] = tls.Schema;
|
||
tls.type name:int id:string constructors_num:int flags:int arity:int params_type:long = tls.Type;
|
||
|
||
tls.combinator name:int id:string type_name:int left:tls.CombinatorLeft right:tls.CombinatorRight = tls.Combinator;
|
||
tls.combinatorLeftBuiltin = tls.CombinatorLeft;
|
||
tls.combinatorLeft args_num:# args:args_num*[tls.Arg] = tls.CombinatorLeft;
|
||
tls.combinatorRight value:tls.TypeExpr = tls.CombinatorRight;
|
||
|
||
tls.arg id:string flags:# var_num:flags.1?int exist_var_num:flags.2?int exist_var_bit:flags.2?int type:tls.TypeExpr = tls.Arg;
|
||
|
||
tls.exprType _:tls.TypeExpr = tls.Expr;
|
||
|
||
tls.exprNat _:tls.NatExpr = tls.Expr;
|
||
tls.natConst value:int = tls.NatExpr;
|
||
|
||
tls.natVar dif:int var_num:int = tls.NatExpr;
|
||
tls.typeVar var_num:int flags:int = tls.TypeExpr;
|
||
|
||
tls.array multiplicity:tls.NatExpr args_num:# args:args_num*[tls.Arg] = tls.TypeExpr;
|
||
tls.typeExpr name:int flags:int children_num:# children:children_num*[tls.Expr] = tls.TypeExpr;</code></pre>
|
||
<h2><a class="anchor" href="#remarks" id="remarks" name="remarks"><i class="anchor-icon"></i></a>Remarks</h2>
|
||
<p>Schema serialization (version 2) always begins with the index number of the <code>tls.schema_v2</code> constructor for <code>tls.Schema</code>.
|
||
Because the CRC32 of the string</p>
|
||
<pre><code>tls.schema_v2 version:int date:int types_num:# types:types_num*[ tls.Type ] constructor_num:# constructors:constructor_num*[ tls.Combinator ] functions_num:# functions:functions_num*[ tls.Combinator ] = tls.Schema</code></pre>
|
||
<p>is 0x3a2f9be2, this constant is in fact the magic number for tlo files in the current version’s format.
|
||
If the format is extended in the future (for example, if TL’s additional features are supported), then a <code>tls.schema_v3</code> constructor with a different number will appear.</p>
|
||
<h2><a class="anchor" href="#example" id="example" name="example"><i class="anchor-icon"></i></a>Example</h2>
|
||
<p>If one adds declarations for the used built-in types (like <code>int ? = Int;</code>) from the file <code>common.tl</code> before <code>tl.tl</code> and serialize the resulting schema, the following binary data is obtained (<code>tl.tlo</code>):</p>
|
||
<div class="richcode">
|
||
<p><strong>0000</strong>: 3a2f9be2 00000000 51fec698 00000015 12eb4386 70659eff 00002301 00000000<br>
|
||
<strong>0020</strong>: 00000000 00000000 00000000 00000000 12eb4386 250be282 6f6f4204 0000006c<br>
|
||
<strong>0040</strong>: 00000002 02000010 00000000 00000000 00000000 12eb4386 2210c154 756f4406<br>
|
||
<strong>0060</strong>: 00656c62 00000001 02000000 00000000 00000000 00000000 12eb4386 00000000<br>
|
||
<strong>0080</strong>: 6c614605 00006573 00000000 00000401 00000000 00000000 00000000 12eb4386<br>
|
||
<strong>00a0</strong>: a8509bda 746e4903 00000001 02000001 00000000 00000000 00000000 12eb4386<br>
|
||
<strong>00c0</strong>: 22076cba 6e6f4c04 00000067 00000001 02000001 00000000 00000000 00000000<br>
|
||
<strong>00e0</strong>: 12eb4386 b5286e24 72745306 00676e69 00000001 02000001 00000000 00000000<br>
|
||
<strong>0100</strong>: 00000000 12eb4386 3fedd339 75725404 00000065 00000001 02000000 00000000<br>
|
||
<strong>0120</strong>: 00000000 00000000 12eb4386 9770768a 70755405 0000656c 00000001 02000000<br>
|
||
<strong>0140</strong>: 00000002 00000002 00000000 12eb4386 2cecf817 70795404 00000065 00000000<br>
|
||
<strong>0160</strong>: 00000000 00000000 00000000 00000000 12eb4386 1cb5c415 63655606 00726f74<br>
|
||
<strong>0180</strong>: 00000001 02000008 00000001 00000000 00000000 12eb4386 10133f47 6365560b<br>
|
||
<strong>01a0</strong>: 54726f74 6c61746f 00000001 02000000 00000001 00000000 00000000 12eb4386<br>
|
||
<strong>01c0</strong>: 29dfe61b 736c7407 6772412e 00000001 02000000 00000000 00000000 00000000<br>
|
||
<strong>01e0</strong>: 12eb4386 5c0a1ed5 736c740e 6d6f432e 616e6962 00726f74 00000001 02000000<br>
|
||
<strong>0200</strong>: 00000000 00000000 00000000 12eb4386 8133d9ba 736c7412 6d6f432e 616e6962<br>
|
||
<strong>0220</strong>: 4c726f74 00746665 00000002 02000010 00000000 00000000 00000000 12eb4386<br>
|
||
<strong>0240</strong>: 2c064372 736c7413 6d6f432e 616e6962 52726f74 74686769 00000001 02000000<br>
|
||
<strong>0260</strong>: 00000000 00000000 00000000 12eb4386 307d41a0 736c7408 7078452e 00000072<br>
|
||
<strong>0280</strong>: 00000002 02000010 00000000 00000000 00000000 12eb4386 c2635441 736c740b<br>
|
||
<strong>02a0</strong>: 74614e2e 72707845 00000002 02000010 00000000 00000000 00000000 12eb4386<br>
|
||
<strong>02c0</strong>: 3a2f9be2 736c740a 6863532e 00616d65 00000001 02000000 00000000 00000000<br>
|
||
<strong>02e0</strong>: 00000000 12eb4386 12eb4386 736c7408 7079542e 00000065 00000001 02000000<br>
|
||
<strong>0300</strong>: 00000000 00000000 00000000 12eb4386 193fd378 736c740c 7079542e 70784565<br>
|
||
<strong>0320</strong>: 00000072 00000003 02000010 00000000 00000000 00000000 00000018 5c0a1ed5<br>
|
||
<strong>0340</strong>: bc799737 6f6f6209 6c61466c 00006573 250be282 4c12c6d9 00000000 2c064372<br>
|
||
<strong>0360</strong>: c1863d08 250be282 00000000 00000000 5c0a1ed5 997275b5 6f6f6208 7572546c<br>
|
||
<strong>0380</strong>: 00000065 250be282 4c12c6d9 00000000 2c064372 c1863d08 250be282 00000000<br>
|
||
<strong>03a0</strong>: 00000000 5c0a1ed5 2210c154 756f6406 00656c62 2210c154 cd211f63 2c064372<br>
|
||
<strong>03c0</strong>: c1863d08 2210c154 00000000 00000000 5c0a1ed5 a8509bda 746e6903 a8509bda<br>
|
||
<strong>03e0</strong>: cd211f63 2c064372 c1863d08 a8509bda 00000000 00000000 5c0a1ed5 22076cba<br>
|
||
<strong>0400</strong>: 6e6f6c04 00000067 22076cba cd211f63 2c064372 c1863d08 22076cba 00000000<br>
|
||
<strong>0420</strong>: 00000000 5c0a1ed5 b5286e24 72747306 00676e69 b5286e24 cd211f63 2c064372<br>
|
||
<strong>0440</strong>: c1863d08 b5286e24 00000000 00000000 5c0a1ed5 3fedd339 75727404 00000065<br>
|
||
<strong>0460</strong>: 3fedd339 4c12c6d9 00000000 2c064372 c1863d08 3fedd339 00000000 00000000<br>
|
||
<strong>0480</strong>: 5c0a1ed5 9770768a 70757405 0000656c 9770768a 4c12c6d9 00000003 29dfe61b<br>
|
||
<strong>04a0</strong>: 00007401 00020005 00000000 c1863d08 2cecf817 00000000 00000000 29dfe61b<br>
|
||
<strong>04c0</strong>: 00006e01 00020005 00000001 c1863d08 70659eff 00000000 00000000 29dfe61b<br>
|
||
<strong>04e0</strong>: 00000000 00000000 d9fb20de 4e8a14f0 00000000 00000001 00000001 29dfe61b<br>
|
||
<strong>0500</strong>: 00000000 00000000 0142ceae 00000000 00000000 2c064372 c1863d08 9770768a<br>
|
||
<strong>0520</strong>: 00000000 00000002 ecc9da78 0142ceae 00000000 00000000 dcb49bd8 4e8a14f0<br>
|
||
<strong>0540</strong>: 00000000 00000001 5c0a1ed5 1cb5c415 63657606 00726f74 1cb5c415 4c12c6d9<br>
|
||
<strong>0560</strong>: 00000003 29dfe61b 00007401 00020005 00000000 c1863d08 2cecf817 00000000<br>
|
||
<strong>0580</strong>: 00000000 29dfe61b 00000000 00000004 00000001 c1863d08 70659eff 00000000<br>
|
||
<strong>05a0</strong>: 00000000 29dfe61b 00000000 00000000 d9fb20de 4e8a14f0 00000000 00000001<br>
|
||
<strong>05c0</strong>: 00000001 29dfe61b 00000000 00000000 0142ceae 00000000 00000000 2c064372<br>
|
||
<strong>05e0</strong>: c1863d08 1cb5c415 00000000 00000001 ecc9da78 0142ceae 00000000 00000000<br>
|
||
<strong>0600</strong>: 5c0a1ed5 10133f47 6365760b 54726f74 6c61746f 10133f47 4c12c6d9 00000003<br>
|
||
<strong>0620</strong>: 29dfe61b 00007401 00020005 00000000 c1863d08 2cecf817 00000000 00000000<br>
|
||
<strong>0640</strong>: 29dfe61b 746f740b 635f6c61 746e756f 00000000 c1863d08 a8509bda 00000001<br>
|
||
<strong>0660</strong>: 00000000 29dfe61b 63657606 00726f74 00000000 c1863d08 1cb5c415 00000001<br>
|
||
<strong>0680</strong>: 00000001 ecc9da78 0142ceae 00000000 00000000 2c064372 c1863d08 10133f47<br>
|
||
<strong>06a0</strong>: 00000000 00000001 ecc9da78 0142ceae 00000000 00000000 5c0a1ed5 29dfe61b<br>
|
||
<strong>06c0</strong>: 736c7407 6772612e 29dfe61b 4c12c6d9 00000006 29dfe61b 00646902 00000000<br>
|
||
<strong>06e0</strong>: c1863d08 b5286e24 00000001 00000000 29dfe61b 616c6605 00007367 00000004<br>
|
||
<strong>0700</strong>: 00000000 c1863d08 70659eff 00000000 00000000 29dfe61b 72617607 6d756e5f<br>
|
||
<strong>0720</strong>: 00000002 00000000 00000001 c1863d08 a8509bda 00000001 00000000 29dfe61b<br>
|
||
<strong>0740</strong>: 6978650d 765f7473 6e5f7261 00006d75 00000002 00000000 00000002 c1863d08<br>
|
||
<strong>0760</strong>: a8509bda 00000001 00000000 29dfe61b 6978650d 765f7473 625f7261 00007469<br>
|
||
<strong>0780</strong>: 00000002 00000000 00000002 c1863d08 a8509bda 00000001 00000000 29dfe61b<br>
|
||
<strong>07a0</strong>: 70797404 00000065 00000000 c1863d08 193fd378 00000000 00000000 2c064372<br>
|
||
<strong>07c0</strong>: c1863d08 29dfe61b 00000000 00000000 5c0a1ed5 5c0a1ed5 736c740e 6d6f632e<br>
|
||
<strong>07e0</strong>: 616e6962 00726f74 5c0a1ed5 4c12c6d9 00000005 29dfe61b 6d616e04 00000065<br>
|
||
<strong>0800</strong>: 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b 00646902 00000000<br>
|
||
<strong>0820</strong>: c1863d08 b5286e24 00000001 00000000 29dfe61b 70797409 616e5f65 0000656d<br>
|
||
<strong>0840</strong>: 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b 66656c04 00000074<br>
|
||
<strong>0860</strong>: 00000000 c1863d08 8133d9ba 00000000 00000000 29dfe61b 67697205 00007468<br>
|
||
<strong>0880</strong>: 00000000 c1863d08 2c064372 00000000 00000000 2c064372 c1863d08 5c0a1ed5<br>
|
||
<strong>08a0</strong>: 00000000 00000000 5c0a1ed5 cd211f63 736c7419 6d6f632e 616e6962 4c726f74<br>
|
||
<strong>08c0</strong>: 42746665 746c6975 00006e69 8133d9ba 4c12c6d9 00000000 2c064372 c1863d08<br>
|
||
<strong>08e0</strong>: 8133d9ba 00000000 00000000 5c0a1ed5 4c12c6d9 736c7412 6d6f632e 616e6962<br>
|
||
<strong>0900</strong>: 4c726f74 00746665 8133d9ba 4c12c6d9 00000002 29dfe61b 67726108 756e5f73<br>
|
||
<strong>0920</strong>: 0000006d 00000004 00000000 c1863d08 70659eff 00000000 00000000 29dfe61b<br>
|
||
<strong>0940</strong>: 67726104 00000073 00000000 d9fb20de 4e8a14f0 00000000 00000000 00000001<br>
|
||
<strong>0960</strong>: 29dfe61b 00000000 00000000 c1863d08 29dfe61b 00000000 00000000 2c064372<br>
|
||
<strong>0980</strong>: c1863d08 8133d9ba 00000000 00000000 5c0a1ed5 2c064372 736c7413 6d6f632e<br>
|
||
<strong>09a0</strong>: 616e6962 52726f74 74686769 2c064372 4c12c6d9 00000001 29dfe61b 6c617605<br>
|
||
<strong>09c0</strong>: 00006575 00000000 c1863d08 193fd378 00000000 00000000 2c064372 c1863d08<br>
|
||
<strong>09e0</strong>: 2c064372 00000000 00000000 5c0a1ed5 ecc9da78 736c740c 7078652e 70795472<br>
|
||
<strong>0a00</strong>: 00000065 307d41a0 4c12c6d9 00000001 29dfe61b 00000000 00000000 c1863d08<br>
|
||
<strong>0a20</strong>: 193fd378 00000000 00000000 2c064372 c1863d08 307d41a0 00000000 00000000<br>
|
||
<strong>0a40</strong>: 5c0a1ed5 dcb49bd8 736c740b 7078652e 74614e72 307d41a0 4c12c6d9 00000001<br>
|
||
<strong>0a60</strong>: 29dfe61b 00000000 00000000 c1863d08 c2635441 00000000 00000000 2c064372<br>
|
||
<strong>0a80</strong>: c1863d08 307d41a0 00000000 00000000 5c0a1ed5 8ce940b1 736c740c 74616e2e<br>
|
||
<strong>0aa0</strong>: 736e6f43 00000074 c2635441 4c12c6d9 00000001 29dfe61b 6c617605 00006575<br>
|
||
<strong>0ac0</strong>: 00000000 c1863d08 a8509bda 00000001 00000000 2c064372 c1863d08 c2635441<br>
|
||
<strong>0ae0</strong>: 00000000 00000000 5c0a1ed5 4e8a14f0 736c740a 74616e2e 00726156 c2635441<br>
|
||
<strong>0b00</strong>: 4c12c6d9 00000002 29dfe61b 66696403 00000000 c1863d08 a8509bda 00000001<br>
|
||
<strong>0b20</strong>: 00000000 29dfe61b 72617607 6d756e5f 00000000 c1863d08 a8509bda 00000001<br>
|
||
<strong>0b40</strong>: 00000000 2c064372 c1863d08 c2635441 00000000 00000000 5c0a1ed5 3a2f9be2<br>
|
||
<strong>0b60</strong>: 736c740d 6863732e 5f616d65 00003276 3a2f9be2 4c12c6d9 00000008 29dfe61b<br>
|
||
<strong>0b80</strong>: 72657607 6e6f6973 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b<br>
|
||
<strong>0ba0</strong>: 74616404 00000065 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b<br>
|
||
<strong>0bc0</strong>: 70797409 6e5f7365 00006d75 00000004 00000000 c1863d08 70659eff 00000000<br>
|
||
<strong>0be0</strong>: 00000000 29dfe61b 70797405 00007365 00000000 d9fb20de 4e8a14f0 00000000<br>
|
||
<strong>0c00</strong>: 00000000 00000001 29dfe61b 00000000 00000000 c1863d08 12eb4386 00000000<br>
|
||
<strong>0c20</strong>: 00000000 29dfe61b 6e6f630f 75727473 726f7463 6d756e5f 00000004 00000001<br>
|
||
<strong>0c40</strong>: c1863d08 70659eff 00000000 00000000 29dfe61b 6e6f630c 75727473 726f7463<br>
|
||
<strong>0c60</strong>: 00000073 00000000 d9fb20de 4e8a14f0 00000000 00000001 00000001 29dfe61b<br>
|
||
<strong>0c80</strong>: 00000000 00000000 c1863d08 5c0a1ed5 00000000 00000000 29dfe61b 6e75660d<br>
|
||
<strong>0ca0</strong>: 6f697463 6e5f736e 00006d75 00000004 00000002 c1863d08 70659eff 00000000<br>
|
||
<strong>0cc0</strong>: 00000000 29dfe61b 6e756609 6f697463 0000736e 00000000 d9fb20de 4e8a14f0<br>
|
||
<strong>0ce0</strong>: 00000000 00000002 00000001 29dfe61b 00000000 00000000 c1863d08 5c0a1ed5<br>
|
||
<strong>0d00</strong>: 00000000 00000000 2c064372 c1863d08 3a2f9be2 00000000 00000000 5c0a1ed5<br>
|
||
<strong>0d20</strong>: 12eb4386 736c7408 7079742e 00000065 12eb4386 4c12c6d9 00000006 29dfe61b<br>
|
||
<strong>0d40</strong>: 6d616e04 00000065 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b<br>
|
||
<strong>0d60</strong>: 00646902 00000000 c1863d08 b5286e24 00000001 00000000 29dfe61b 6e6f6310<br>
|
||
<strong>0d80</strong>: 75727473 726f7463 756e5f73 0000006d 00000000 c1863d08 a8509bda 00000001<br>
|
||
<strong>0da0</strong>: 00000000 29dfe61b 616c6605 00007367 00000000 c1863d08 a8509bda 00000001<br>
|
||
<strong>0dc0</strong>: 00000000 29dfe61b 69726105 00007974 00000000 c1863d08 a8509bda 00000001<br>
|
||
<strong>0de0</strong>: 00000000 29dfe61b 7261700b 5f736d61 65707974 00000000 c1863d08 22076cba<br>
|
||
<strong>0e00</strong>: 00000001 00000000 2c064372 c1863d08 12eb4386 00000000 00000000 5c0a1ed5<br>
|
||
<strong>0e20</strong>: 0142ceae 736c740b 7079742e 72615665 193fd378 4c12c6d9 00000002 29dfe61b<br>
|
||
<strong>0e40</strong>: 72617607 6d756e5f 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b<br>
|
||
<strong>0e60</strong>: 616c6605 00007367 00000000 c1863d08 a8509bda 00000001 00000000 2c064372<br>
|
||
<strong>0e80</strong>: c1863d08 193fd378 00000000 00000000 5c0a1ed5 d9fb20de 736c7409 7272612e<br>
|
||
<strong>0ea0</strong>: 00007961 193fd378 4c12c6d9 00000003 29dfe61b 6c756d0c 6c706974 74696369<br>
|
||
<strong>0ec0</strong>: 00000079 00000000 c1863d08 c2635441 00000000 00000000 29dfe61b 67726108<br>
|
||
<strong>0ee0</strong>: 756e5f73 0000006d 00000004 00000000 c1863d08 70659eff 00000000 00000000<br>
|
||
<strong>0f00</strong>: 29dfe61b 67726104 00000073 00000000 d9fb20de 4e8a14f0 00000000 00000000<br>
|
||
<strong>0f20</strong>: 00000001 29dfe61b 00000000 00000000 c1863d08 29dfe61b 00000000 00000000<br>
|
||
<strong>0f40</strong>: 2c064372 c1863d08 193fd378 00000000 00000000 5c0a1ed5 c1863d08 736c740c<br>
|
||
<strong>0f60</strong>: 7079742e 70784565 00000072 193fd378 4c12c6d9 00000004 29dfe61b 6d616e04<br>
|
||
<strong>0f80</strong>: 00000065 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b 616c6605<br>
|
||
<strong>0fa0</strong>: 00007367 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b 6968630c<br>
|
||
<strong>0fc0</strong>: 6572646c 756e5f6e 0000006d 00000004 00000000 c1863d08 70659eff 00000000<br>
|
||
<strong>0fe0</strong>: 00000000 29dfe61b 69686308 6572646c 0000006e 00000000 d9fb20de 4e8a14f0<br>
|
||
<strong>1000</strong>: 00000000 00000000 00000001 29dfe61b 00000000 00000000 c1863d08 307d41a0<br>
|
||
<strong>1020</strong>: 00000000 00000000 2c064372 c1863d08 193fd378 00000000 00000000 00000000 </p>
|
||
</div></div>
|
||
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
<div class="footer_wrap">
|
||
<div class="footer_columns_wrap footer_desktop">
|
||
<div class="footer_column footer_column_telegram">
|
||
<h5>Telegram</h5>
|
||
<div class="footer_telegram_description"></div>
|
||
Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed.
|
||
</div>
|
||
|
||
<div class="footer_column">
|
||
<h5><a href="//telegram.org/faq">About</a></h5>
|
||
<ul>
|
||
<li><a href="//telegram.org/faq">FAQ</a></li>
|
||
<li><a href="//telegram.org/blog">Blog</a></li>
|
||
<li><a href="//telegram.org/jobs">Jobs</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="footer_column">
|
||
<h5><a href="//telegram.org/apps#mobile-apps">Mobile Apps</a></h5>
|
||
<ul>
|
||
<li><a href="//telegram.org/dl/ios">iPhone/iPad</a></li>
|
||
<li><a href="//telegram.org/dl/android">Android</a></li>
|
||
<li><a href="//telegram.org/dl/wp">Windows Phone</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="footer_column">
|
||
<h5><a href="//telegram.org/apps#desktop-apps">Desktop Apps</a></h5>
|
||
<ul>
|
||
<li><a href="//desktop.telegram.org/">PC/Mac/Linux</a></li>
|
||
<li><a href="//macos.telegram.org/">macOS</a></li>
|
||
<li><a href="//telegram.org/dl/web">Web-browser</a></li>
|
||
</ul>
|
||
</div>
|
||
<div class="footer_column footer_column_platform">
|
||
<h5><a href="//core.telegram.org/">Platform</a></h5>
|
||
<ul>
|
||
<li><a href="//core.telegram.org/api">API</a></li>
|
||
<li><a href="//translations.telegram.org/">Translations</a></li>
|
||
<li><a href="//instantview.telegram.org/">Instant View</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
<div class="footer_columns_wrap footer_mobile">
|
||
<div class="footer_column">
|
||
<h5><a href="//telegram.org/faq">About</a></h5>
|
||
</div>
|
||
<div class="footer_column">
|
||
<h5><a href="//telegram.org/blog">Blog</a></h5>
|
||
</div>
|
||
<div class="footer_column">
|
||
<h5><a href="//telegram.org/apps">Apps</a></h5>
|
||
</div>
|
||
<div class="footer_column">
|
||
<h5><a href="//core.telegram.org/">Platform</a></h5>
|
||
</div>
|
||
<div class="footer_column">
|
||
<h5><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)">Twitter</a></h5>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<script src="/js/main.js?42"></script>
|
||
|
||
<script>backToTopInit("Go up");
|
||
removePreloadInit();
|
||
</script>
|
||
</body>
|
||
</html>
|
||
|