Return-Path: Received: from smtp1.osuosl.org (smtp1.osuosl.org [IPv6:2605:bc80:3010::138]) by lists.linuxfoundation.org (Postfix) with ESMTP id D5948C0029 for ; Mon, 5 Jun 2023 16:21:21 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id AB1D7820C8 for ; Mon, 5 Jun 2023 16:21:21 +0000 (UTC) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org AB1D7820C8 Authentication-Results: smtp1.osuosl.org; dkim=pass (2048-bit key) header.d=protonmail.com header.i=@protonmail.com header.a=rsa-sha256 header.s=protonmail3 header.b=aWVqRqBo X-Virus-Scanned: amavisd-new at osuosl.org X-Spam-Flag: NO X-Spam-Score: -1.838 X-Spam-Level: X-Spam-Status: No, score=-1.838 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, HTML_OBFUSCATE_05_10=0.26, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1xrh7Xf-nqVW for ; Mon, 5 Jun 2023 16:21:20 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.osuosl.org 909498208B Received: from mail-4322.protonmail.ch (mail-4322.protonmail.ch [185.70.43.22]) by smtp1.osuosl.org (Postfix) with ESMTPS id 909498208B for ; Mon, 5 Jun 2023 16:21:19 +0000 (UTC) Date: Mon, 05 Jun 2023 16:21:06 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1685982076; x=1686241276; bh=n9lHCueSvJ41KUXQ0rpAXZyOZ3Kf1F9n47lm3S8zeU8=; h=Date:To:From:Subject:Message-ID:Feedback-ID:From:To:Cc:Date: Subject:Reply-To:Feedback-ID:Message-ID:BIMI-Selector; b=aWVqRqBoQwaDaAGfJ8snmeRMVCCX58s9DS76y2/fdASP/7M0awXKscvvTaykDv4I/ 3DkZkldpr8bs4P0Z5mBNdxebHgbiDCY47ejGj50EzwDOjn0S5e2V0SaNZCdXVLK0hZ Nu5yiVnkZuJm7wjT7Rnizql2sjZO4u+p1kxkfUqM4/+Fq+su+Gq5/J233aIHEq8zIa 9SqigYein1UhS/SpIWnKz9gB1xqG2g6gi5sFHpfkls18+VufESLkETd7fD6t7/5KHz 4Oab5zcE5gPI0k/tfwH25PDd8r770r35BG+B+JaRl2iCLi1MwzDX4jggmvziw14YJh QuJWizEg8r6uQ== To: "bitcoin-dev@lists.linuxfoundation.org" From: josibake Message-ID: Feedback-ID: 27113594:user:proton MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pgp-signature"; micalg=pgp-sha256; boundary="------24c83aba855cf9862a658f13b81f87a9bc0736b79e61a07a2cb86fad17629481"; charset=utf-8 X-Mailman-Approved-At: Mon, 05 Jun 2023 16:38:11 +0000 Subject: [bitcoin-dev] BIP for Silent Payments X-BeenThere: bitcoin-dev@lists.linuxfoundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Bitcoin Protocol Discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Jun 2023 16:21:22 -0000 This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------24c83aba855cf9862a658f13b81f87a9bc0736b79e61a07a2cb86fad17629481 Content-Type: multipart/mixed;boundary=---------------------68fa26e36e7ee1d7aeb2c7c4cf10c9c2 -----------------------68fa26e36e7ee1d7aeb2c7c4cf10c9c2 Content-Type: multipart/alternative;boundary=---------------------f9d6556610f43cd77d6ac94c12555830 -----------------------f9d6556610f43cd77d6ac94c12555830 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain;charset=utf-8 Hi all, After what has seemed like an eternity of refining and tweaking (pun inten= ded) the original write-up proposed by Ruben Somsen back in March 2022, we= 'd like to submit a Silent Payments BIP for your consideration and review. For convenience, the overview from the BIP is in plain text below. Please = note: the overview is not the full specification; the full specification c= an be found at https://github.com/bitcoin/bips/pull/1458/files , along wit= h a WIP implementation for Bitcoin Core at https://github.com/bitcoin/bitc= oin/pull/27827 . Looking forward to hearing your thoughts! -- Ruben, Josie =3D=3D Silent Payments =3D=3D Using a new address for each Bitcoin transaction is a crucial aspect of ma= intaining privacy. This often requires a secure interaction between sender= and receiver so that the receiver can hand out a fresh address, a batch o= f fresh addresses, or a method for the sender to generate addresses on-dem= and, such as an xpub. However, interaction is often infeasible and in many cases undesirable. To= solve for this, various protocols have been proposed which use a static p= ayment address and notifications sent via the blockchain. These protocols = eliminate the need for interaction, but at the expense of increased costs = for one-time payments and a noticeable footprint in the blockchain, potent= ially revealing metadata about the sender and receiver. Notification schem= es also allow the receiver to link all payments from the same sender, comp= romising sender privacy. This proposal aims to address the limitations of these current approaches = by presenting a solution that eliminates the need for interaction, elimina= tes the need for notifications, and protects both sender and receiver priv= acy. These benefits come at the cost of requiring wallets to scan the bloc= kchain in order to detect payments. This added requirement is generally fe= asible for full nodes but poses a challenge for light clients. While it is= possible today to implement a privacy-preserving light client at the cost= of increased bandwidth, light client support is considered an area of ope= n research =3D=3D Goals =3D=3D We aim to present a protocol which satisfies the following properties: - No increase in the size or cost of transactions - Resulting transactions blend in with other bitcoin transactions and ca= n=E2=80=99t be distinguished - Transactions can=E2=80=99t be linked to a silent payment address by an= outside observer - No sender-receiver interaction required - No linking of multiple payments to the same sender - Each silent payment goes to a unique address, avoiding accidental addr= ess reuse - Supports payment labeling - Uses existing seed phrase or descriptor methods for backup and recover= y - Separates scanning and spending responsibilities - Compatible with other spending protocols, such as CoinJoin - Light client/SPV wallet support - Protocol is upgrade-able =3D=3D Overview =3D=3D We first present an informal overview of the protocol. In what follows, up= percase letters represent public keys, lowercase letters represent private= keys, || refers to byte concatenation, and G represents the generator poi= nt for secp256k1. Each section of the overview is incomplete on its own an= d is meant to build on the previous section in order to introduce and brie= fly explain each aspect of the protocol. =3D=3D=3D Simple case =3D=3D=3D Bob publishes a public key B as a silent payment address. Alice discovers = Bob's silent payment address, selects a UTXO with private key a, public ke= y A and creates a destination output P for Bob in the following manner: - Let P =3D hash(a=C2=B7B)=C2=B7G + B - Encode P as a=C2=A0BIP341 taproot output Since a=C2=B7B =3D=3D b=C2=B7A (Elliptic Curve Diffie-Hellman), Bob scans = with his private key b by collecting the input public keys for each transa= ction with at least one unspent taproot output and performing the ECDH cal= culation until P is found (e.g. calculating P =3D hash(b=C2=B7A)=C2=B7G + = B and seeing that P is present in the transaction outputs). =3D=3D=3D Creating more than one output =3D=3D=3D In order to allow Alice to create more than one output for Bob, we include= d an integer in the following manner: - Let n =3D 0 - Let P0 =3D hash(a=C2=B7B || n)=C2=B7G + B - For additional outputs: - Increment n by one (n++) - Let Pi =3D hash(a=C2=B7B || n)=C2=B7G + B Bob detects this output the same as before by searching for P0 =3D hash(b=C2= =B7A || 0)=C2=B7G + B. Once he detects the first output, he must: - Check for P1 =3D hash(b=C2=B7A || 1)=C2=B7G + B - If P1 is not found, stop - If P1 is found, continue to check for P2 and so on until an additional= output is not found Since Bob will only perform these subsequent checks after a transaction wi= th at least one output paying him is found, the increase to his overall sc= anning requirement is negligible. =3D=3D=3D Preventing address reuse =3D=3D=3D If Alice were to use a different UTXO from the same public key A for a sub= sequent payment to Bob, she would end up deriving the same destination P. = To prevent this, Alice should include a hash of the outpoint in the follow= ing manner: - Let outpoint_hash =3D hash(txid || vout) - Let P0 =3D hash(outpoint_hash=C2=B7a=C2=B7B || 0)=C2=B7G + B Bob must include the same outpoint_hash when scanning. =3D=3D=3D Using all inputs =3D=3D=3D In our simplified example we have been referring to Alice=E2=80=99s transa= ctions as having only one input A, but in reality a Bitcoin transaction ca= n have many inputs. Instead of requiring Alice to pick a particular input = and requiring Bob to check each input separately, we can instead require A= lice to perform the tweak with the sum of the input public keys[3]. This s= ignificantly reduces Bob's scanning requirement, makes light client suppor= t more feasible[4], and protects Alice's privacy in collaborative transact= ion protocols such as CoinJoin[5]. Alice performs the tweak with the sum of her input private keys in the fol= lowing manner: - Let outpoints_hash =3D hash(txid0 || vout0 || =E2=80=A6 txidn || voutn= ) - Let a =3D a0 + a1 =E2=80=A6 + an - Let P0 =3D hash(outpoints_hash=C2=B7a=C2=B7B || 0)=C2=B7G + B =3D=3D=3D Spend and Scan Key =3D=3D=3D Since Bob needs his private key b to check for incoming payments, this req= uires b to be exposed to an online device. To minimize the risks involved,= Bob can instead publish an address of the form (Bscan, Bspend). This allo= ws Bob to keep bspend in offline cold storage and perform the scanning wit= h the public key Bspend and private key bscan. Alice performs the tweak us= ing both of Bob=E2=80=99s public keys in the following manner: - Let P0 =3D hash(outpoints_hash=C2=B7a=C2=B7Bscan || 0)=C2=B7G + Bspend Bob detects this payment by calculating P0 =3D hash(outpoints_hash=C2=B7bs= can=C2=B7A)=C2=B7G + Bspend with his online device and can spend from his = cold storage signing device using (hash(outpoints_hash=C2=B7bscan=C2=B7A) = + bspend) mod p as the private key. =3D=3D=3D Labels =3D=3D=3D For a single silent payment address of the form (Bscan, Bspend), Bob may w= ish to differentiate incoming payments. Naively, Bob could publish multipl= e silent payment addresses, but this would require him to scan for each on= e, which becomes prohibitively expensive. Instead, Bob can label his spend= public key Bspend with an integer m in the following way: - Let Bm =3D Bspend + m=C2=B7G - Publish (Bscan, B0), (Bscan, B1) =E2=80=A6 Alice performs the tweak as before using one of the published (Bscan, Bm) = pairs. Bob detects the labeled payment in the following manner: - Let P0 =3D hash(outpoints_hash=C2=B7bscan=C2=B7A || 0)=C2=B7G + Bspend - Subtract P0 from each of the transaction outputs and check if the rema= inder matches any of the labels (1=C2=B7G, 2=C2=B7G ..) that the wallet ha= s previously used It is important to note that an outside observer can easily deduce that ea= ch published (Bscan, Bm) pair is owned by the same entity as each publishe= d address will have Bscan in common. As such, labels are not meant as a wa= y for Bob to manage separate identities, but rather a way for Bob to deter= mine the source of an incoming payment. =3D=3D=3D Labels for change =3D=3D=3D Bob can also use labels for managing his own change outputs. To do so, he = can reserve a secret change label in the following manner: - Let Bchange =3D Bspend + hash(bscan)=C2=B7G Now, whenever Bob is spending (to a silent payment address or otherwise), = he can create a change output for himself using the silent payments protoc= ol and his change label in the following manner: - Let a =3D a0 + a1 =E2=80=A6 + an represent the private keys of the inp= uts Bob is using to fund the transaction - Let Pchange =3D hash(outpoints_hash=C2=B7a=C2=B7Bchange || 0)=C2=B7G += Bspend This gives Bob an alternative to using BIP32 for managing change, while st= ill allowing him to know which of his unspent outputs were change when rec= overing his wallet from the master key. The change label needs to remain a= secret in order to ensure nobody else can label payments as change. Sent with Proton Mail secure email. -----------------------f9d6556610f43cd77d6ac94c12555830 Content-Type: multipart/related;boundary=---------------------d84e5ee5a68fb0695e50623466db238c -----------------------d84e5ee5a68fb0695e50623466db238c Content-Type: text/html;charset=utf-8 Content-Transfer-Encoding: base64 PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0 cHg7Ij48c3Bhbj5IaSBhbGwsPC9zcGFuPjxkaXY+PGJyPjwvZGl2PjxkaXY+QWZ0ZXIKIHdoYXQg aGFzIHNlZW1lZCBsaWtlIGFuIGV0ZXJuaXR5IG9mIHJlZmluaW5nIGFuZCB0d2Vha2luZyAocHVu IAppbnRlbmRlZCkgdGhlIG9yaWdpbmFsIHdyaXRlLXVwIHByb3Bvc2VkIGJ5IFJ1YmVuIFNvbXNl biBiYWNrIGluIDxzcGFuPjxhIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vcmVmZXJyZXIgbm9mb2xs b3cgbm9vcGVuZXIiIGhyZWY9Imh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9waXBl cm1haWwvYml0Y29pbi1kZXYvMjAyMi1NYXJjaC8wMjAxODAuaHRtbCIgdGl0bGU9Ik1hcmNoIDIw MjIiPk1hcmNoIDIwMjI8L2E+LCB3ZSdkIGxpa2UgdG8gc3VibWl0IGEgU2lsZW50IFBheW1lbnRz IEJJUCBmb3IgeW91ciBjb25zaWRlcmF0aW9uIGFuZCByZXZpZXcuPC9zcGFuPjwvZGl2PjxkaXY+ PHNwYW4+PGJyPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPjxzcGFuPjxzcGFuPkZvciBjb252ZW5p ZW5jZSwgdGhlIG92ZXJ2aWV3IGZyb20gdGhlIEJJUCBpcyBpbiBwbGFpbiB0ZXh0IGJlbG93LiA8 c3Bhbj5QbGVhc2Ugbm90ZTogdGhlIG92ZXJ2aWV3IGlzIG5vdCB0aGUgZnVsbCBzcGVjaWZpY2F0 aW9uOyB0aGUgZnVsbCBzcGVjaWZpY2F0aW9uIGNhbiBiZSBmb3VuZCBhdDxzcGFuPiA8c3Bhbj48 YSB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub3JlZmVycmVyIG5vZm9sbG93IG5vb3BlbmVyIiBocmVm PSJodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXBzL3B1bGwvMTQ1OC9maWxlcyI+aHR0cHM6 Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9wdWxsLzE0NTgvZmlsZXM8L2E+PC9zcGFuPiAsIGFs b25nIHdpdGggYSBXSVAgaW1wbGVtZW50YXRpb24gZm9yIEJpdGNvaW4gQ29yZSBhdCA8c3Bhbj48 YSByZWw9Im5vcmVmZXJyZXIgbm9mb2xsb3cgbm9vcGVuZXIiIGhyZWY9Imh0dHBzOi8vZ2l0aHVi LmNvbS9iaXRjb2luL2JpdGNvaW4vcHVsbC8yNzgyNyIgdGl0bGU9Imh0dHBzOi8vZ2l0aHViLmNv bS9iaXRjb2luL2JpdGNvaW4vcHVsbC8yNzgyNyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vZ2l0 aHViLmNvbS9iaXRjb2luL2JpdGNvaW4vcHVsbC8yNzgyNzwvYT4gLiA8L3NwYW4+PC9zcGFuPjwv c3Bhbj48YnI+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj48c3Bhbj48c3Bh bj48YnI+PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9kaXY+PGRpdj48c3Bhbj48c3Bhbj48c3Bhbj5M b29raW5nIGZvcndhcmQgdG8gaGVhcmluZyB5b3VyIHRob3VnaHRzITwvc3Bhbj48L3NwYW4+PC9z cGFuPjwvZGl2PjxkaXY+PHNwYW4+PHNwYW4+PHNwYW4+PGJyPjwvc3Bhbj48L3NwYW4+PC9zcGFu PjwvZGl2PjxkaXY+PGRpdj48c3Bhbj48c3Bhbj48c3Bhbj4tLSBSdWJlbiwgSm9zaWU8L3NwYW4+ PC9zcGFuPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuPjxzcGFuPjxzcGFuPjxicj48L3NwYW4+PC9z cGFuPjwvc3Bhbj48L2Rpdj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3Jt YWwiPj09IFNpbGVudCBQYXltZW50cyA9PTwvc3Bhbj48YnI+PHAgZGlyPSJhdXRvIj48c3BhbiBz dHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5Vc2luZyBhIG5ldyBhZGRyZXNzIGZvciBlYWNoIEJp dGNvaW4gdHJhbnNhY3Rpb24gaXMgYQpjcnVjaWFsIGFzcGVjdCBvZiBtYWludGFpbmluZyBwcml2 YWN5LiBUaGlzIG9mdGVuIHJlcXVpcmVzIGEgc2VjdXJlCmludGVyYWN0aW9uIGJldHdlZW4gc2Vu ZGVyIGFuZCByZWNlaXZlciBzbyB0aGF0IHRoZSByZWNlaXZlciBjYW4gaGFuZApvdXQgYSBmcmVz aCBhZGRyZXNzLCBhIGJhdGNoIG9mIGZyZXNoIGFkZHJlc3Nlcywgb3IgYSBtZXRob2QgZm9yIHRo ZQpzZW5kZXIgdG8gZ2VuZXJhdGUgYWRkcmVzc2VzIG9uLWRlbWFuZCwgc3VjaCBhcyBhbiB4cHVi Lgo8L3NwYW4+PC9wPjxwIGRpcj0iYXV0byI+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1h bCI+SG93ZXZlciwgaW50ZXJhY3Rpb24gaXMgb2Z0ZW4gaW5mZWFzaWJsZSBhbmQgaW4gbWFueSBj YXNlcwogdW5kZXNpcmFibGUuIFRvIHNvbHZlIGZvciB0aGlzLCB2YXJpb3VzIHByb3RvY29scyBo YXZlIGJlZW4gcHJvcG9zZWQKd2hpY2ggdXNlIGEgc3RhdGljIHBheW1lbnQgYWRkcmVzcyBhbmQg bm90aWZpY2F0aW9ucyBzZW50IHZpYSB0aGUKYmxvY2tjaGFpbi4KIFRoZXNlIHByb3RvY29scyBl bGltaW5hdGUgdGhlIG5lZWQgZm9yIGludGVyYWN0aW9uLCBidXQgYXQgdGhlIGV4cGVuc2UKb2Yg aW5jcmVhc2VkIGNvc3RzIGZvciBvbmUtdGltZSBwYXltZW50cyBhbmQgYSBub3RpY2VhYmxlIGZv b3RwcmludCBpbgp0aGUgYmxvY2tjaGFpbiwgcG90ZW50aWFsbHkgcmV2ZWFsaW5nIG1ldGFkYXRh IGFib3V0IHRoZSBzZW5kZXIgYW5kCnJlY2VpdmVyLiBOb3RpZmljYXRpb24gc2NoZW1lcyBhbHNv IGFsbG93IHRoZSByZWNlaXZlciB0byBsaW5rIGFsbApwYXltZW50cyBmcm9tIHRoZSBzYW1lIHNl bmRlciwgY29tcHJvbWlzaW5nIHNlbmRlciBwcml2YWN5Lgo8L3NwYW4+PC9wPjxwIGRpcj0iYXV0 byI+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+VGhpcyBwcm9wb3NhbCBhaW1zIHRv IGFkZHJlc3MgdGhlIGxpbWl0YXRpb25zIG9mIHRoZXNlCmN1cnJlbnQgYXBwcm9hY2hlcyBieSBw cmVzZW50aW5nIGEgc29sdXRpb24gdGhhdCBlbGltaW5hdGVzIHRoZSBuZWVkIGZvcgogaW50ZXJh Y3Rpb24sIGVsaW1pbmF0ZXMgdGhlIG5lZWQgZm9yIG5vdGlmaWNhdGlvbnMsIGFuZCBwcm90ZWN0 cyBib3RoCnNlbmRlciBhbmQgcmVjZWl2ZXIgcHJpdmFjeS4gVGhlc2UgYmVuZWZpdHMgY29tZSBh dCB0aGUgY29zdCBvZgpyZXF1aXJpbmcgd2FsbGV0cyB0byBzY2FuIHRoZSBibG9ja2NoYWluIGlu IG9yZGVyIHRvIGRldGVjdCBwYXltZW50cy4KVGhpcyBhZGRlZCByZXF1aXJlbWVudCBpcyBnZW5l cmFsbHkgZmVhc2libGUgZm9yIGZ1bGwgbm9kZXMgYnV0IHBvc2VzIGEKY2hhbGxlbmdlIGZvciBs aWdodCBjbGllbnRzLiBXaGlsZSBpdCBpcyBwb3NzaWJsZSB0b2RheSB0byBpbXBsZW1lbnQgYQpw cml2YWN5LXByZXNlcnZpbmcgbGlnaHQgY2xpZW50IGF0IHRoZSBjb3N0IG9mIGluY3JlYXNlZCBi YW5kd2lkdGgsCmxpZ2h0IGNsaWVudCBzdXBwb3J0IGlzIGNvbnNpZGVyZWQgYW4gYXJlYSBvZiBv cGVuIHJlc2VhcmNoPC9zcGFuPjwvcD48cCBkaXI9ImF1dG8iPjxzcGFuIHN0eWxlPSJsaW5lLWhl aWdodDpub3JtYWwiPj09IEdvYWxzID09IDwvc3Bhbj48YnI+PC9wPjxwIGRpcj0iYXV0byI+PHNw YW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+V2UgYWltIHRvIHByZXNlbnQgYSBwcm90b2Nv bCB3aGljaCBzYXRpc2ZpZXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOjwvc3Bhbj48YnI+PC9w Pjx1bD48bGk+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+Tm8gaW5jcmVhc2UgaW4g dGhlIHNpemUgb3IgY29zdCBvZiB0cmFuc2FjdGlvbnM8L3NwYW4+PGJyPjwvbGk+PC91bD48dWwg ZGlyPSJhdXRvIj48bGk+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+UmVzdWx0aW5n IHRyYW5zYWN0aW9ucyBibGVuZCBpbiB3aXRoIG90aGVyIGJpdGNvaW4gdHJhbnNhY3Rpb25zIGFu ZCBjYW7igJl0IGJlIGRpc3Rpbmd1aXNoZWQ8L3NwYW4+PC9saT48bGk+PHNwYW4gc3R5bGU9Imxp bmUtaGVpZ2h0Om5vcm1hbCI+VHJhbnNhY3Rpb25zIGNhbuKAmXQgYmUgbGlua2VkIHRvIGEgc2ls ZW50IHBheW1lbnQgYWRkcmVzcyBieSBhbiBvdXRzaWRlIG9ic2VydmVyPC9zcGFuPjwvbGk+PGxp PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPk5vIHNlbmRlci1yZWNlaXZlciBpbnRl cmFjdGlvbiByZXF1aXJlZDwvc3Bhbj48L2xpPjxsaT48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6 bm9ybWFsIj5ObyBsaW5raW5nIG9mIG11bHRpcGxlIHBheW1lbnRzIHRvIHRoZSBzYW1lIHNlbmRl cjwvc3Bhbj48L2xpPjxsaT48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5FYWNoIHNp bGVudCBwYXltZW50IGdvZXMgdG8gYSB1bmlxdWUgYWRkcmVzcywgYXZvaWRpbmcgYWNjaWRlbnRh bCBhZGRyZXNzIHJldXNlPC9zcGFuPjwvbGk+PGxpPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpu b3JtYWwiPlN1cHBvcnRzIHBheW1lbnQgbGFiZWxpbmc8L3NwYW4+PC9saT48bGk+PHNwYW4gc3R5 bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+VXNlcyBleGlzdGluZyBzZWVkIHBocmFzZSBvciBkZXNj cmlwdG9yIG1ldGhvZHMgZm9yIGJhY2t1cCBhbmQgcmVjb3Zlcnk8L3NwYW4+PC9saT48bGk+PHNw YW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+U2VwYXJhdGVzIHNjYW5uaW5nIGFuZCBzcGVu ZGluZyByZXNwb25zaWJpbGl0aWVzPC9zcGFuPjwvbGk+PGxpPjxzcGFuIHN0eWxlPSJsaW5lLWhl aWdodDpub3JtYWwiPkNvbXBhdGlibGUgd2l0aCBvdGhlciBzcGVuZGluZyBwcm90b2NvbHMsIHN1 Y2ggYXMgQ29pbkpvaW48L3NwYW4+PC9saT48bGk+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5v cm1hbCI+TGlnaHQgY2xpZW50L1NQViB3YWxsZXQgc3VwcG9ydDwvc3Bhbj48L2xpPjxsaT48c3Bh biBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5Qcm90b2NvbCBpcyB1cGdyYWRlLWFibGU8L3Nw YW4+PC9saT48L3VsPjxkaXY+PGJyPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0 Om5vcm1hbCI+PT0gT3ZlcnZpZXcgPT0gPC9zcGFuPjxicj48L2Rpdj48cCBkaXI9ImF1dG8iPjxz cGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPldlIGZpcnN0IHByZXNlbnQgYW4gaW5mb3Jt YWwgb3ZlcnZpZXcgb2YgdGhlIHByb3RvY29sLiBJbgp3aGF0IGZvbGxvd3MsIHVwcGVyY2FzZSBs ZXR0ZXJzIHJlcHJlc2VudCBwdWJsaWMga2V5cywgbG93ZXJjYXNlIGxldHRlcnMKIHJlcHJlc2Vu dCBwcml2YXRlIGtleXMsIDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj58 fDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4gcmVmZXJzIHRvIGJ5dGUg Y29uY2F0ZW5hdGlvbiwgYW5kIDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFs Ij5HPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPiByZXByZXNlbnRzIHRo ZSBnZW5lcmF0b3IgcG9pbnQgZm9yIDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9y bWFsIj5zZWNwMjU2azE8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+Lgog RWFjaCBzZWN0aW9uIG9mIHRoZSBvdmVydmlldyBpcyBpbmNvbXBsZXRlIG9uIGl0cyBvd24gYW5k IGlzIG1lYW50IHRvCmJ1aWxkIG9uIHRoZSBwcmV2aW91cyBzZWN0aW9uIGluIG9yZGVyIHRvIGlu dHJvZHVjZSBhbmQgYnJpZWZseSBleHBsYWluCmVhY2ggYXNwZWN0IG9mIHRoZSBwcm90b2NvbC48 L3NwYW4+PC9wPjxwIGRpcj0iYXV0byI+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+ PT09IFNpbXBsZSBjYXNlID09PTwvc3Bhbj48YnI+PC9wPjxwIGRpcj0iYXV0byI+PHNwYW4gc3R5 bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+Qm9iIHB1Ymxpc2hlcyBhIHB1YmxpYyBrZXkgPC9zcGFu PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPkI8L3NwYW4+PHNwYW4gc3R5bGU9Imxp bmUtaGVpZ2h0Om5vcm1hbCI+IGFzIGEgc2lsZW50IHBheW1lbnQgYWRkcmVzcy4gQWxpY2UgZGlz Y292ZXJzIEJvYidzIHNpbGVudCBwYXltZW50IGFkZHJlc3MsIHNlbGVjdHMgYSBVVFhPIHdpdGgg cHJpdmF0ZSBrZXkgPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPmE8L3Nw YW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+LCBwdWJsaWMga2V5IDwvc3Bhbj48 c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5BPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5l LWhlaWdodDpub3JtYWwiPiBhbmQgY3JlYXRlcyBhIGRlc3RpbmF0aW9uIG91dHB1dCA8L3NwYW4+ PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+UDwvc3Bhbj48c3BhbiBzdHlsZT0ibGlu ZS1oZWlnaHQ6bm9ybWFsIj4gZm9yIEJvYiBpbiB0aGUgZm9sbG93aW5nIG1hbm5lcjoKPC9zcGFu PjwvcD48dWwgZGlyPSJhdXRvIj48bGk+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+ TGV0IDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5QID0gaGFzaChhwrdC KcK3RyArIEI8L3NwYW4+PC9saT48bGk+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+ RW5jb2RlIDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5QPC9zcGFuPjxz cGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPiBhcyBhJm5ic3A7PC9zcGFuPjxzcGFuIHN0 eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPkJJUDM0MTwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1o ZWlnaHQ6bm9ybWFsIj4gdGFwcm9vdCBvdXRwdXQ8L3NwYW4+PC9saT48L3VsPjxkaXY+PGJyPjwv ZGl2PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPgpTaW5jZSBhwrdCID09IGLCt0Eg KEVsbGlwdGljIEN1cnZlIERpZmZpZS1IZWxsbWFuKSwgQm9iIHNjYW5zIHdpdGggaGlzIHByaXZh dGUga2V5IGIKIGJ5IGNvbGxlY3RpbmcgdGhlIGlucHV0IHB1YmxpYyBrZXlzIGZvciBlYWNoIHRy YW5zYWN0aW9uIHdpdGggYXQgbGVhc3QKb25lIHVuc3BlbnQgdGFwcm9vdCBvdXRwdXQgYW5kIHBl cmZvcm1pbmcgdGhlIEVDREggY2FsY3VsYXRpb24gdW50aWwgUDwvc3Bhbj48c3BhbiBzdHlsZT0i bGluZS1oZWlnaHQ6bm9ybWFsIj4gaXMgZm91bmQgKGUuZy4gY2FsY3VsYXRpbmcgPC9zcGFuPjxz cGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPlAgPSBoYXNoKGLCt0EpwrdHICsgQjwvc3Bh bj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4gYW5kIHNlZWluZyB0aGF0IDwvc3Bh bj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5QPC9zcGFuPjxzcGFuIHN0eWxlPSJs aW5lLWhlaWdodDpub3JtYWwiPiBpcyBwcmVzZW50IGluIHRoZSB0cmFuc2FjdGlvbiBvdXRwdXRz KS4gPC9zcGFuPjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJsaW5l LWhlaWdodDpub3JtYWwiPj09PSBDcmVhdGluZyBtb3JlIHRoYW4gb25lIG91dHB1dCA9PT08L3Nw YW4+PGJyPjxwIGRpcj0iYXV0byI+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+SW4g b3JkZXIgdG8gYWxsb3cgQWxpY2UgdG8gY3JlYXRlIG1vcmUgdGhhbiBvbmUgb3V0cHV0IGZvciBC b2I8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+LCB3ZSBpbmNsdWRlZCBh biBpbnRlZ2VyIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyOgo8L3NwYW4+PC9wPjx1bCBkaXI9ImF1 dG8iPjxsaT48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5MZXQgPC9zcGFuPjxzcGFu IHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPm4gPSAwPC9zcGFuPjwvbGk+PGxpPjxzcGFuIHN0 eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPkxldCA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVp Z2h0Om5vcm1hbCI+UDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4wPC9z cGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPiA9IGhhc2goYcK3QiB8fCBuKcK3 RyArIEI8L3NwYW4+PC9saT48bGk+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+Rm9y IGFkZGl0aW9uYWwgb3V0cHV0czo8L3NwYW4+PHVsIGRpcj0iYXV0byI+PGxpPjxzcGFuIHN0eWxl PSJsaW5lLWhlaWdodDpub3JtYWwiPkluY3JlbWVudCA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUt aGVpZ2h0Om5vcm1hbCI+bjwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4g Ynkgb25lICg8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+bisrPC9zcGFu PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPik8L3NwYW4+PC9saT48bGk+PHNwYW4g c3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+TGV0IDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1o ZWlnaHQ6bm9ybWFsIj5QPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPmk8 L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+ID0gaGFzaChhwrdCIHx8IG4p wrdHICsgQjwvc3Bhbj48L2xpPjwvdWw+PC9saT48L3VsPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdo dDpub3JtYWwiPgpCb2IgZGV0ZWN0cyB0aGlzIG91dHB1dCB0aGUgc2FtZSBhcyBiZWZvcmUgYnkg c2VhcmNoaW5nIGZvciA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+UDwv c3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4wPC9zcGFuPjxzcGFuIHN0eWxl PSJsaW5lLWhlaWdodDpub3JtYWwiPiA9IGhhc2goYsK3QSB8fCAwKcK3RyArIEI8L3NwYW4+PHNw YW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+LiBPbmNlIGhlIGRldGVjdHMgdGhlIGZpcnN0 IG91dHB1dCwgaGUgbXVzdDoKPC9zcGFuPjx1bCBkaXI9ImF1dG8iPjxsaT48c3BhbiBzdHlsZT0i bGluZS1oZWlnaHQ6bm9ybWFsIj5DaGVjayBmb3IgPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhl aWdodDpub3JtYWwiPlA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+MTwv c3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4gPSBoYXNoKGLCt0EgfHwgMSnC t0cgKyBCPC9zcGFuPjwvbGk+PGxpPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPklm IDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5QPC9zcGFuPjxzcGFuIHN0 eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPjE8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0 Om5vcm1hbCI+IGlzIG5vdCBmb3VuZCwgc3RvcDwvc3Bhbj48L2xpPjxsaT48c3BhbiBzdHlsZT0i bGluZS1oZWlnaHQ6bm9ybWFsIj5JZiA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5v cm1hbCI+UDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4xPC9zcGFuPjxz cGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPiBpcyBmb3VuZCwgY29udGludWUgdG8gY2hl Y2sgZm9yIDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5QPC9zcGFuPjxz cGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPjI8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUt aGVpZ2h0Om5vcm1hbCI+IGFuZCBzbyBvbiB1bnRpbCBhbiBhZGRpdGlvbmFsIG91dHB1dCBpcyBu b3QgZm91bmQ8L3NwYW4+PC9saT48L3VsPjxkaXY+PGJyPjwvZGl2PjxzcGFuIHN0eWxlPSJsaW5l LWhlaWdodDpub3JtYWwiPgpTaW5jZSBCb2Igd2lsbCBvbmx5IHBlcmZvcm0gdGhlc2Ugc3Vic2Vx dWVudCBjaGVja3MgYWZ0ZXIgYSB0cmFuc2FjdGlvbgp3aXRoIGF0IGxlYXN0IG9uZSBvdXRwdXQg cGF5aW5nIGhpbSBpcyBmb3VuZCwgdGhlIGluY3JlYXNlIHRvIGhpcwpvdmVyYWxsIHNjYW5uaW5n IHJlcXVpcmVtZW50IGlzIG5lZ2xpZ2libGUuCjwvc3Bhbj48cCBkaXI9ImF1dG8iPjxzcGFuIHN0 eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPiA9PT0gUHJldmVudGluZyBhZGRyZXNzIHJldXNlID09 PTxicj48L3NwYW4+PC9wPjxwIGRpcj0iYXV0byI+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5v cm1hbCI+SWYgQWxpY2Ugd2VyZSB0byB1c2UgYSBkaWZmZXJlbnQgVVRYTyBmcm9tIHRoZSBzYW1l IHB1YmxpYyBrZXkgPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPkE8L3Nw YW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+IGZvciBhIHN1YnNlcXVlbnQgcGF5 bWVudCB0byBCb2IsIHNoZSB3b3VsZCBlbmQgdXAgZGVyaXZpbmcgdGhlIHNhbWUgZGVzdGluYXRp b24gPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPlA8L3NwYW4+PHNwYW4g c3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+LiBUbyBwcmV2ZW50IHRoaXMsIEFsaWNlIHNob3Vs ZCBpbmNsdWRlIGEgaGFzaCBvZiB0aGUgb3V0cG9pbnQgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXI6 Cjwvc3Bhbj48L3A+PHVsIGRpcj0iYXV0byI+PGxpPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpu b3JtYWwiPkxldCA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+b3V0cG9p bnRfaGFzaCA9IGhhc2godHhpZCB8fCB2b3V0KTwvc3Bhbj48L2xpPjxsaT48c3BhbiBzdHlsZT0i bGluZS1oZWlnaHQ6bm9ybWFsIj5MZXQgPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpu b3JtYWwiPlA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+MDwvc3Bhbj48 c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4gPSBoYXNoKG91dHBvaW50X2hhc2jCt2HC t0IgfHwgMCnCt0cgKyBCPC9zcGFuPjwvbGk+PC91bD48ZGl2Pjxicj48L2Rpdj48c3BhbiBzdHls ZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4KQm9iIG11c3QgaW5jbHVkZSB0aGUgc2FtZSA8L3NwYW4+ PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+b3V0cG9pbnRfaGFzaDwvc3Bhbj48c3Bh biBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4gd2hlbiBzY2FubmluZy4KPC9zcGFuPjxwIGRp cj0iYXV0byI+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+ID09PSBVc2luZyBhbGwg aW5wdXRzID09PTwvc3Bhbj48L3A+PHAgZGlyPSJhdXRvIj48c3BhbiBzdHlsZT0ibGluZS1oZWln aHQ6bm9ybWFsIj5JbiBvdXIgc2ltcGxpZmllZCBleGFtcGxlIHdlIGhhdmUgYmVlbiByZWZlcnJp bmcgdG8gQWxpY2XigJlzIHRyYW5zYWN0aW9ucyBhcyBoYXZpbmcgb25seSBvbmUgaW5wdXQgPC9z cGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPkE8L3NwYW4+PHNwYW4gc3R5bGU9 ImxpbmUtaGVpZ2h0Om5vcm1hbCI+LAogYnV0IGluIHJlYWxpdHkgYSBCaXRjb2luIHRyYW5zYWN0 aW9uIGNhbiBoYXZlIG1hbnkgaW5wdXRzLiBJbnN0ZWFkIG9mCnJlcXVpcmluZyBBbGljZSB0byBw aWNrIGEgcGFydGljdWxhciBpbnB1dCBhbmQgcmVxdWlyaW5nIEJvYiB0byBjaGVjawplYWNoIGlu cHV0IHNlcGFyYXRlbHksIHdlIGNhbiBpbnN0ZWFkIHJlcXVpcmUgQWxpY2UgdG8gcGVyZm9ybSB0 aGUgdHdlYWsKIHdpdGggdGhlIHN1bSBvZiB0aGUgaW5wdXQgcHVibGljIGtleXM8L3NwYW4+PHNw YW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+Wzwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1o ZWlnaHQ6bm9ybWFsIj4zPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPl08 L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+LiBUaGlzIHNpZ25pZmljYW50 bHkgcmVkdWNlcyBCb2IncyBzY2FubmluZyByZXF1aXJlbWVudCwgbWFrZXMgbGlnaHQgY2xpZW50 IHN1cHBvcnQgbW9yZSBmZWFzaWJsZTwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9y bWFsIj5bPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPjQ8L3NwYW4+PHNw YW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+XTwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1o ZWlnaHQ6bm9ybWFsIj4sIGFuZCBwcm90ZWN0cyBBbGljZSdzIHByaXZhY3kgaW4gY29sbGFib3Jh dGl2ZSB0cmFuc2FjdGlvbiBwcm90b2NvbHMgc3VjaCBhcyBDb2luSm9pbjwvc3Bhbj48c3BhbiBz dHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5bPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdo dDpub3JtYWwiPjU8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+XTwvc3Bh bj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4uCjwvc3Bhbj48L3A+PHAgZGlyPSJh dXRvIj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5BbGljZSBwZXJmb3JtcyB0aGUg dHdlYWsgd2l0aCB0aGUgc3VtIG9mIGhlciBpbnB1dCBwcml2YXRlIGtleXMgaW4gdGhlIGZvbGxv d2luZyBtYW5uZXI6Cjwvc3Bhbj48L3A+PHVsIGRpcj0iYXV0byI+PGxpPjxzcGFuIHN0eWxlPSJs aW5lLWhlaWdodDpub3JtYWwiPkxldCA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5v cm1hbCI+b3V0cG9pbnRzX2hhc2ggPSBoYXNoKHR4aWQ8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUt aGVpZ2h0Om5vcm1hbCI+MDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4g fHwgdm91dDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4wPC9zcGFuPjxz cGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPiB8fCDigKYgdHhpZDwvc3Bhbj48c3BhbiBz dHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5uPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdo dDpub3JtYWwiPiB8fCB2b3V0PC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwi Pm48L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+KTwvc3Bhbj48L2xpPjxs aT48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5MZXQgPC9zcGFuPjxzcGFuIHN0eWxl PSJsaW5lLWhlaWdodDpub3JtYWwiPmEgPSBhPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdo dDpub3JtYWwiPjA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+ICsgYTwv c3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4xPC9zcGFuPjxzcGFuIHN0eWxl PSJsaW5lLWhlaWdodDpub3JtYWwiPiDigKYgKyBhPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhl aWdodDpub3JtYWwiPm48L3NwYW4+PC9saT48bGk+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5v cm1hbCI+TGV0IDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5QPC9zcGFu PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPjA8L3NwYW4+PHNwYW4gc3R5bGU9Imxp bmUtaGVpZ2h0Om5vcm1hbCI+ID0gaGFzaChvdXRwb2ludHNfaGFzaMK3YcK3QiB8fCAwKcK3RyAr IEI8L3NwYW4+PC9saT48L3VsPjxkaXY+PGJyPjwvZGl2PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdo dDpub3JtYWwiPiA9PT0gU3BlbmQgYW5kIFNjYW4gS2V5ID09PTwvc3Bhbj48cCBkaXI9ImF1dG8i PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPlNpbmNlIEJvYiBuZWVkcyBoaXMgcHJp dmF0ZSBrZXkgPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPmI8L3NwYW4+ PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+IHRvIGNoZWNrIGZvciBpbmNvbWluZyBw YXltZW50cywgdGhpcyByZXF1aXJlcyA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5v cm1hbCI+Yjwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4gdG8gYmUgZXhw b3NlZCB0byBhbiBvbmxpbmUgZGV2aWNlLiBUbyBtaW5pbWl6ZSB0aGUgcmlza3MgaW52b2x2ZWQs IEJvYiBjYW4gaW5zdGVhZCBwdWJsaXNoIGFuIGFkZHJlc3Mgb2YgdGhlIGZvcm0gPC9zcGFuPjxz cGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPihCPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5l LWhlaWdodDpub3JtYWwiPnNjYW48L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1h bCI+LCBCPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPnNwZW5kPC9zcGFu PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPik8L3NwYW4+PHNwYW4gc3R5bGU9Imxp bmUtaGVpZ2h0Om5vcm1hbCI+LiBUaGlzIGFsbG93cyBCb2IgdG8ga2VlcCA8L3NwYW4+PHNwYW4g c3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+Yjwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWln aHQ6bm9ybWFsIj5zcGVuZDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4g aW4gb2ZmbGluZSBjb2xkIHN0b3JhZ2UgYW5kIHBlcmZvcm0gdGhlIHNjYW5uaW5nIHdpdGggdGhl IHB1YmxpYyBrZXkgPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPkI8L3Nw YW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+c3BlbmQ8L3NwYW4+PHNwYW4gc3R5 bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+IGFuZCBwcml2YXRlIGtleSA8L3NwYW4+PHNwYW4gc3R5 bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+Yjwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6 bm9ybWFsIj5zY2FuPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPi4gQWxp Y2UgcGVyZm9ybXMgdGhlIHR3ZWFrIHVzaW5nIGJvdGggb2YgQm9i4oCZcyBwdWJsaWMga2V5cyBp biB0aGUgZm9sbG93aW5nIG1hbm5lcjoKPC9zcGFuPjwvcD48dWwgZGlyPSJhdXRvIj48bGk+PHNw YW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+TGV0IDwvc3Bhbj48c3BhbiBzdHlsZT0ibGlu ZS1oZWlnaHQ6bm9ybWFsIj5QPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwi PjA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+ID0gaGFzaChvdXRwb2lu dHNfaGFzaMK3YcK3Qjwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5zY2Fu PC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPiB8fCAwKcK3RyArIEI8L3Nw YW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+c3BlbmQ8L3NwYW4+PC9saT48L3Vs PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFu IHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBz dHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5Cb2IgZGV0ZWN0cyB0aGlzIHBheW1lbnQgYnkgY2Fs Y3VsYXRpbmcgPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPlA8L3NwYW4+ PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+MDwvc3Bhbj48c3BhbiBzdHlsZT0ibGlu ZS1oZWlnaHQ6bm9ybWFsIj4gPSBoYXNoKG91dHBvaW50c19oYXNowrdiPC9zcGFuPjxzcGFuIHN0 eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPnNjYW48L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVp Z2h0Om5vcm1hbCI+wrdBKcK3RyArIEI8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5v cm1hbCI+c3BlbmQ8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+IHdpdGgg aGlzIG9ubGluZSBkZXZpY2UgYW5kIGNhbiBzcGVuZCBmcm9tIGhpcyBjb2xkIHN0b3JhZ2Ugc2ln bmluZyBkZXZpY2UgdXNpbmcgPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwi PihoYXNoKG91dHBvaW50c19oYXNowrdiPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpu b3JtYWwiPnNjYW48L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+wrdBKSAr IGI8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+c3BlbmQ8L3NwYW4+PHNw YW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+KSBtb2QgcDwvc3Bhbj48c3BhbiBzdHlsZT0i bGluZS1oZWlnaHQ6bm9ybWFsIj4gYXMgdGhlIHByaXZhdGUga2V5Lgo8L3NwYW4+PHAgZGlyPSJh dXRvIj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4gPT09IExhYmVscyA9PT08L3Nw YW4+PC9wPjxwIGRpcj0iYXV0byI+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+Rm9y IGEgc2luZ2xlIHNpbGVudCBwYXltZW50IGFkZHJlc3Mgb2YgdGhlIGZvcm0gPC9zcGFuPjxzcGFu IHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPihCPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhl aWdodDpub3JtYWwiPnNjYW48L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+ LCBCPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPnNwZW5kPC9zcGFuPjxz cGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPik8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUt aGVpZ2h0Om5vcm1hbCI+LAogQm9iIG1heSB3aXNoIHRvIGRpZmZlcmVudGlhdGUgaW5jb21pbmcg cGF5bWVudHMuIE5haXZlbHksIEJvYiBjb3VsZApwdWJsaXNoIG11bHRpcGxlIHNpbGVudCBwYXlt ZW50IGFkZHJlc3NlcywgYnV0IHRoaXMgd291bGQgcmVxdWlyZSBoaW0gdG8KIHNjYW4gZm9yIGVh Y2ggb25lLCB3aGljaCBiZWNvbWVzIHByb2hpYml0aXZlbHkgZXhwZW5zaXZlLiBJbnN0ZWFkLCBC b2IKY2FuIGxhYmVsIGhpcyBzcGVuZCBwdWJsaWMga2V5IDwvc3Bhbj48c3BhbiBzdHlsZT0ibGlu ZS1oZWlnaHQ6bm9ybWFsIj5CPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwi PnNwZW5kPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPiB3aXRoIGFuIGlu dGVnZXIgPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPm08L3NwYW4+PHNw YW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+IGluIHRoZSBmb2xsb3dpbmcgd2F5Ogo8L3Nw YW4+PC9wPjx1bCBkaXI9ImF1dG8iPjxsaT48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFs Ij5MZXQgPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPkI8L3NwYW4+PHNw YW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+bTwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1o ZWlnaHQ6bm9ybWFsIj4gPSBCPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwi PnNwZW5kPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPiArIG3Ct0c8L3Nw YW4+PC9saT48bGk+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+UHVibGlzaCA8L3Nw YW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+KEI8L3NwYW4+PHNwYW4gc3R5bGU9 ImxpbmUtaGVpZ2h0Om5vcm1hbCI+c2Nhbjwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6 bm9ybWFsIj4sIEI8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+MDwvc3Bh bj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4pPC9zcGFuPjxzcGFuIHN0eWxlPSJs aW5lLWhlaWdodDpub3JtYWwiPiwgPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3Jt YWwiPihCPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPnNjYW48L3NwYW4+ PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+LCBCPC9zcGFuPjxzcGFuIHN0eWxlPSJs aW5lLWhlaWdodDpub3JtYWwiPjE8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1h bCI+KSDigKY8L3NwYW4+PC9saT48L3VsPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwi Pjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPjxicj48 L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5BbGljZSBw ZXJmb3JtcyB0aGUgdHdlYWsgYXMgYmVmb3JlIHVzaW5nIG9uZSBvZiB0aGUgcHVibGlzaGVkIDwv c3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4oQjwvc3Bhbj48c3BhbiBzdHls ZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5zY2FuPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdo dDpub3JtYWwiPiwgQjwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5tPC9z cGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPik8L3NwYW4+PHNwYW4gc3R5bGU9 ImxpbmUtaGVpZ2h0Om5vcm1hbCI+IHBhaXJzLiBCb2IgZGV0ZWN0cyB0aGUgbGFiZWxlZCBwYXlt ZW50IGluIHRoZSBmb2xsb3dpbmcgbWFubmVyOiA8YnI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4g c3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+PGJyPjwvc3Bhbj48dWwgZGlyPSJhdXRvIj48bGk+ PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+TGV0IDwvc3Bhbj48c3BhbiBzdHlsZT0i bGluZS1oZWlnaHQ6bm9ybWFsIj5QPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3Jt YWwiPjA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+ID0gaGFzaChvdXRw b2ludHNfaGFzaMK3Yjwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5zY2Fu PC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPsK3QSB8fCAwKcK3RyArIEI8 L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+c3BlbmQ8L3NwYW4+PC9saT48 bGk+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+U3VidHJhY3QgPC9zcGFuPjxzcGFu IHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPlA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVp Z2h0Om5vcm1hbCI+MDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4gZnJv bSBlYWNoIG9mIHRoZSB0cmFuc2FjdGlvbiBvdXRwdXRzIGFuZCBjaGVjayBpZiB0aGUgcmVtYWlu ZGVyIG1hdGNoZXMgYW55IG9mIHRoZSBsYWJlbHMgKDwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1o ZWlnaHQ6bm9ybWFsIj4xwrdHLCAywrdHIC4uPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdo dDpub3JtYWwiPikgdGhhdCB0aGUgd2FsbGV0IGhhcyBwcmV2aW91c2x5IHVzZWQ8L3NwYW4+PC9s aT48L3VsPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPjwvc3Bhbj48L2Rpdj48ZGl2 PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPjxicj48L3NwYW4+PC9kaXY+PGRpdj48 c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5JdCBpcyBpbXBvcnRhbnQgdG8gbm90ZSB0 aGF0IGFuIG91dHNpZGUgb2JzZXJ2ZXIgY2FuIGVhc2lseSBkZWR1Y2UgdGhhdCBlYWNoIHB1Ymxp c2hlZCA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+KEI8L3NwYW4+PHNw YW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+c2Nhbjwvc3Bhbj48c3BhbiBzdHlsZT0ibGlu ZS1oZWlnaHQ6bm9ybWFsIj4sIEI8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1h bCI+bTwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4pPC9zcGFuPjxzcGFu IHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPiBwYWlyIGlzIG93bmVkIGJ5IHRoZSBzYW1lIGVu dGl0eSBhcyBlYWNoIHB1Ymxpc2hlZCBhZGRyZXNzIHdpbGwgaGF2ZSA8L3NwYW4+PHNwYW4gc3R5 bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+Qjwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6 bm9ybWFsIj5zY2FuPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPgogaW4g Y29tbW9uLiBBcyBzdWNoLCBsYWJlbHMgYXJlIG5vdCBtZWFudCBhcyBhIHdheSBmb3IgQm9iIHRv IG1hbmFnZQpzZXBhcmF0ZSBpZGVudGl0aWVzLCBidXQgcmF0aGVyIGEgd2F5IGZvciBCb2IgdG8g ZGV0ZXJtaW5lIHRoZSBzb3VyY2Ugb2YKIGFuIGluY29taW5nIHBheW1lbnQuCjwvc3Bhbj48cCBk aXI9ImF1dG8iPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPiA9PT0gTGFiZWxzIGZv ciBjaGFuZ2UgPT09PC9zcGFuPjwvcD48cCBkaXI9ImF1dG8iPjxzcGFuIHN0eWxlPSJsaW5lLWhl aWdodDpub3JtYWwiPkJvYiBjYW4gYWxzbyB1c2UgbGFiZWxzIGZvciBtYW5hZ2luZyBoaXMgb3du IGNoYW5nZQpvdXRwdXRzLiBUbyBkbyBzbywgaGUgY2FuIHJlc2VydmUgYSBzZWNyZXQgY2hhbmdl IGxhYmVsIGluIHRoZSBmb2xsb3dpbmcKIG1hbm5lcjoKPC9zcGFuPjwvcD48dWwgZGlyPSJhdXRv Ij48bGk+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+TGV0IDwvc3Bhbj48c3BhbiBz dHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5CPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdo dDpub3JtYWwiPmNoYW5nZTwvc3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4g PSBCPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPnNwZW5kPC9zcGFuPjxz cGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwiPiArIGhhc2goYjwvc3Bhbj48c3BhbiBzdHls ZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5zY2FuPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdo dDpub3JtYWwiPinCt0c8L3NwYW4+PC9saT48L3VsPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpu b3JtYWwiPjwvc3Bhbj48L2Rpdj48ZGl2PjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3JtYWwi Pjxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5O b3csIHdoZW5ldmVyIEJvYiBpcyBzcGVuZGluZyAodG8gYSBzaWxlbnQgcGF5bWVudCBhZGRyZXNz IG9yCm90aGVyd2lzZSksIGhlIGNhbiBjcmVhdGUgYSBjaGFuZ2Ugb3V0cHV0IGZvciBoaW1zZWxm IHVzaW5nIHRoZSBzaWxlbnQKcGF5bWVudHMgcHJvdG9jb2wgYW5kIGhpcyBjaGFuZ2UgbGFiZWwg aW4gdGhlIGZvbGxvd2luZyBtYW5uZXI6IDxicj48L3NwYW4+PC9kaXY+PGRpdj48c3BhbiBzdHls ZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj48YnI+PC9zcGFuPjx1bCBkaXI9ImF1dG8iPjxsaT48c3Bh biBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5MZXQgPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5l LWhlaWdodDpub3JtYWwiPmEgPSBhPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3Jt YWwiPjA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+ICsgYTwvc3Bhbj48 c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj4xPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5l LWhlaWdodDpub3JtYWwiPiDigKYgKyBhPC9zcGFuPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpu b3JtYWwiPm48L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+IHJlcHJlc2Vu dCB0aGUgcHJpdmF0ZSBrZXlzIG9mIHRoZSBpbnB1dHMgQm9iIGlzIHVzaW5nIHRvIGZ1bmQgdGhl IHRyYW5zYWN0aW9uPC9zcGFuPjwvbGk+PGxpPjxzcGFuIHN0eWxlPSJsaW5lLWhlaWdodDpub3Jt YWwiPkxldCA8L3NwYW4+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0Om5vcm1hbCI+UDwvc3Bhbj48 c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5jaGFuZ2U8L3NwYW4+PHNwYW4gc3R5bGU9 ImxpbmUtaGVpZ2h0Om5vcm1hbCI+ID0gaGFzaChvdXRwb2ludHNfaGFzaMK3YcK3Qjwvc3Bhbj48 c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6bm9ybWFsIj5jaGFuZ2U8L3NwYW4+PHNwYW4gc3R5bGU9 ImxpbmUtaGVpZ2h0Om5vcm1hbCI+IHx8IDApwrdHICsgQjwvc3Bhbj48c3BhbiBzdHlsZT0ibGlu ZS1oZWlnaHQ6bm9ybWFsIj5zcGVuZDwvc3Bhbj48L2xpPjwvdWw+PHNwYW4gc3R5bGU9ImxpbmUt aGVpZ2h0Om5vcm1hbCI+PC9zcGFuPjwvZGl2PjxkaXY+PHNwYW4gc3R5bGU9ImxpbmUtaGVpZ2h0 Om5vcm1hbCI+PGJyPjwvc3Bhbj48L2Rpdj48c3Bhbj48c3BhbiBzdHlsZT0ibGluZS1oZWlnaHQ6 bm9ybWFsIj5UaGlzIGdpdmVzIEJvYiBhbiBhbHRlcm5hdGl2ZSB0byB1c2luZyBCSVAzMiBmb3Ig bWFuYWdpbmcgY2hhbmdlLCB3aGlsZQpzdGlsbCBhbGxvd2luZyBoaW0gdG8ga25vdyB3aGljaCBv ZiBoaXMgdW5zcGVudCBvdXRwdXRzIHdlcmUgY2hhbmdlIHdoZW4KIHJlY292ZXJpbmcgaGlzIHdh bGxldCBmcm9tIHRoZSBtYXN0ZXIga2V5LiBUaGUgY2hhbmdlIGxhYmVsIG5lZWRzIHRvCnJlbWFp biBhIHNlY3JldCBpbiBvcmRlciB0byBlbnN1cmUgbm9ib2R5IGVsc2UgY2FuIGxhYmVsIHBheW1l bnRzIGFzCmNoYW5nZS48L3NwYW4+PC9zcGFuPjxicj48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZh bWlseTogQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsiPjxicj48L2Rpdj4KPGRp diBjbGFzcz0icHJvdG9ubWFpbF9zaWduYXR1cmVfYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTog QXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsiPgogICAgPGRpdiBjbGFzcz0icHJv dG9ubWFpbF9zaWduYXR1cmVfYmxvY2stdXNlciBwcm90b25tYWlsX3NpZ25hdHVyZV9ibG9jay1l bXB0eSI+CiAgICAgICAgCiAgICAgICAgICAgIDwvZGl2PgogICAgCiAgICAgICAgICAgIDxkaXYg Y2xhc3M9InByb3Rvbm1haWxfc2lnbmF0dXJlX2Jsb2NrLXByb3RvbiI+CiAgICAgICAgU2VudCB3 aXRoIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL3Byb3Rvbi5tZS8iIHJlbD0ibm9v cGVuZXIgbm9yZWZlcnJlciI+UHJvdG9uIE1haWw8L2E+IHNlY3VyZSBlbWFpbC4KICAgIDwvZGl2 Pgo8L2Rpdj4K -----------------------d84e5ee5a68fb0695e50623466db238c-- -----------------------f9d6556610f43cd77d6ac94c12555830-- -----------------------68fa26e36e7ee1d7aeb2c7c4cf10c9c2 Content-Type: application/pgp-keys; filename="publickey - josibake@protonmail.com - 0x616516B8.asc"; name="publickey - josibake@protonmail.com - 0x616516B8.asc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="publickey - josibake@protonmail.com - 0x616516B8.asc"; name="publickey - josibake@protonmail.com - 0x616516B8.asc" LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCgp4c0ZOQkdETWFRSUJFQURhRjhO dUdMdG5NSDF5WUNUUnlXa0tscWFnczlqUGcyV3R4Q3BmUVBjRlNvMXUKczh0ZmN3SjdRL2xtZ2Ev MEg4WnJNQVNwNEY4VkJ6d0lLY2Y4RTBTdTBxSEQwVHRDVHdReGlZM1hvM1paCmkvcU05TGZxQ3ZK SHdtamdWc2JIOHJwRmVwSndYeFY2cG5vZ1hFUkRwOHVCSG5NNUlON0VhUG9rQXF6cApXcER1d2F4 VE9MVWNwYTd3aDg0em1xdEFpV0tMczhmYkE4TnM2WlJXRjYxVlZMbm9FU0VFSGtOYjVucDkKWW42 RnRxUXVGcUR1Wi9DeUwyMG4rc0VpaHRzYmlCYkxsS00zRHBIRzIxbWNXenRreXh3VVJzV1RvdGpo CjhjUm82eU1nVTAwYnpXQlNCek01bWlqaGxWdXhvbjhVdzRuZWs3eHZBWmFvU3duVmJIYkV5eHhU TWdMbwpadW1OV2pERkc0RGZiRHBuemtrVzY3a1A5bWxCcEpTWHJZRUFJRnFCQW9ZZlNRV21KWEN4 OW1DNy96cEwKeG9pU3dHR2NvT0FDTVV3dDlIOEVFRmtFOE5tUDVKUkRHcjUxYjNoZDhQTWhlK1Z6 OXJpTys3SDd0elRnCkwzcjlvSDZGNXRzNGhVdm5wdFY4cFFkR2J3OUx3aUhOd1BlWDN4SUNhR2h0 Y1FKNGJlSGNSWnZYL1QxRwoyN1p1NjBKZnhmNE5sczBybTNXK1o0S1ZxamxBWHVNc2pCZzhXeS9O U0Z4QmMzZDhYdmljWm1WTXFRYWoKL1dhQUNRVnllbjdTU0NNeHZ4cmdNc2RYTnBOV1BackJhRVN3 RVBSczVLeGMzVVdzMXFVL0dDbHA3YndOCjNScmVYalJDLzYybmRuQUVUNmRicFVlNGdvSVoxMVh0 TnhrQjNRQVJBUUFCelRGcWIzTnBZbUZyWlVCdwpjbTkwYjI1dFlXbHNMbU52YlNBOGFtOXphV0po YTJWQWNISnZkRzl1YldGcGJDNWpiMjArd3NHTkJCQUIKQ0FBZ0JRSmd6SmlaQmdzSkJ3Z0RBZ1FW Q0FvQ0JCWUNBUUFDR1FFQ0d3TUNIZ0VBSVFrUWl0eTFXTVR6ClBXVVdJUVJoWlJhNDYyN1FLSUw4 U25xSzNMVll4UE05WlZjd0QvOTlJQitsL29FUHA0ZkcwcWRURERPTQovaUhuZENmSXFmOXVaZ3pT NnQyTGMzUWY3Qlk2ZDlrTytJbzhoQzI5dGpGZFd4TFlrWVdHWkZMSUVRcWoKQndCSjZ4Umtmclpu YjJROFpRdk11Nk9sV1RtYTBoSnB5OXVaV1BMeXczTTZVMnRpdjRPMFlvM3U2RVVLCnJOQjJpclpq eHc5MlVHbW5JSHlXOFhkT1c2cjdXSFZpUXUyVGU4VWJYZUZzMWphMGJIZVJNbjlhNStMaQpoZ1Zt NXAvdVpSMW5abG51cWkwcVlySGhmUEZoUE9UQWdMZUNrdHRBS0NyRFpNYWw5WU5heHBkTzFRZG0K Uk02UGYwclRBcW1QTkEzZG9iSDZiZ0M2WXgwZjhtRnpOR2pvaTByZ3FNbEJ3UDNqR0gxOVVZNExu amV1Cjdtakllb1dDSVh2c3RQSkVnWlZxall6QjBJdWhZUFU4RHZZaVNwejdrWWFVMlphL0ZIUlRt MlB5NUhiYQo2NlFGMTZpR1FQaXNXT2JtcHpQK0pLWnFqd0k4VXRCeVU4S09Lb21NZllFZVVNUDdl MHJQNUJSWEo1N0UKZm5NUlBkNUR2dFRWdzQrQUt1TzdjbEc0bHRubVl4dHVQTUkwWWRIYm12UWFz Nmthc2pxTG15ZUZNa1NtCjdEMHhwS0R5SytjYWJPaFNSczlmcUpvUFV6NENHeU9XeXZrYVhiRkpl eExyOVpiU1Q5VGdjN0xEN00xRApia0VrSy9SNzlZVk9uamVaT29zOE5YRDNrRjZ5c1gvUzkzKzlu VnFLclFROUt2UDkrNGIrdlFsRXZTNnIKY29ldElLZEY2bmxRU25iVHFvSG5Ed0xTdUhsSGZWZjND T1N2NHRXN0JBd28yNk5lU1JmeUZEQm5RUzVpCkpNN0JUUVJnekdrQ0FSQUE2Z0FZQ21lWjFuVktX OUgvVDBDMkhNWGMwRE1zbTNacUN6MVF2dDRXV0NYVApJNitXbzRvUlZLUXRwdDR3aU91Z25TT0U4 cTMzSzRTS3Y5QW5JWjJaenJVT3p2RGU5Yk1mcDhZVnYvUGUKbkFXbS9acHNJaysyV3dZc1FsdzNC aE9CV0NYMXlhUko2bVlWZHNJS3dDMW5xS1laT1AxcW0rSGRUWUFJCk1LdkE2WjcxR3N6elI3akNh Z05ObGdlU3N2cFpYUzcrSUROWlNGUXJyNHYrR1M3d0Vqd1A1REVUaHB0UQp1djA2TzBNNVMxT3ZH OStBQjhITHhZVkFBb3FFS25VNjZZZmtJaWhzT1hpWHJScXJSUm8ydFg5MDVPNksKc0E1N0hUT3JN NlgvQVVLWmhZNDVuVjVWcGQxc3BXOHFyS3NRQnM0NXYyREZuQmkvSmsrWm1Yak1FZENlCkN3MDlz WUlJM1JISnh1V25paW9tbFArU3F1dHVCbWNCdXY3ZW9ONVU3T0Y0S2lPcGJHMlk2ZS9zczV5TApk SzJPcnVHeFdUZWNVUDRPL1ZaL09lNUFWR0xTZ1JSTFcrb0lTSUhySE0xcWZFN0RrMWpUTWJoQUdh VlkKUmM2azV3YmxvcXIzQlgzQ0hUUkl0dTlJZUVHUTVGTng5NVNmL3REUUVOSGhPK0wyZkkxdC9L TlJsSUUxCjZEcHdEeTV3MCtJWmptbWEvOHI2cHBPaUJiSVNrbW1FTFRxQURSTzBhR0t3b21BTXRv Nk5WdCtZVTNZZwpWU09DTUcvRExhMzBORU5lQ1luUllQcmNCUnNxcUF3Q0ZWR2pBcUcrQUplTDRJ OUNkZUh3U1RaVnpFOWUKN2Z5U3U0YXR4NDVaQ1I4MWFsUCtIWVh3eXhkckdkakZJZVZNRk1NQUVR RUFBY0xCZGdRWUFRZ0FDUVVDCllNeVltUUliREFBaENSQ0szTFZZeFBNOVpSWWhCR0ZsRnJqcmJ0 QW9ndnhLZW9yY3RWakU4ejFsUkxNUAovUmJtOHUrTWhoZHRTQ21DMUppdWgzOTk3VnIrN1N1ck1v OXQ4TlVpQVdobitoejlPVGgzdFdHbzc3N1EKSVBGc21GcnNWa0pjVnhHdjZvS01NVFZpR05tOUsw NGVORmRLa3NDUUluNFJMTzl1WHAyS21VUkt6cFNyCklJVUFOVExXZ1ZZa3VjMVB1d1VaMW4yTjl3 UzQ5WHRtRXNIMWpjR0FpZTVXM2FvSGR0dWZMOWJ1cDYxVgo1UHRFUlVMZldYT3g1UXRiRTNidTdx S1VMa0wrTXYwQ1dsazgrR05rVGNWSGVkUU1JQ3ZyNlhBU0lYUTcKZTFINTdUNk1IanozTjQ2bFNs ZnNTS0RraGUrYkNkQmxaeEdBN3FSS3A0T3VsYWp5SzJSTW93WnRobnpiCk9RZXptdkE1bkVrRjB3 blZBMld5VWVJamhua2c5TmtkWllTcFpTMmtib3RNbjJhYUFOSWEzaVV1ZU1WWApYbmNacStEWkgr bzlLRVRJaTg2eHRBZzFmKzNMb2k5WDFNazRqeXd3QXRSSkg5amZ5c0p0bEJsaXU1MGgKZ1Rkbnpa QlpodGdKaE8xYVVoZlVGL2V3elpWc0cxZ2Zsb0lRTVVHT0dBNWV0QkxuTnZMbzNVRXNnaWQyCk5P Z2dVeEl1T2RrV0ZET1FncHNsVE9BNkxjdE1LWGtoMFYrZ3YvQlh5MmEreTlzL1VhRzBUcEJUVzdq QQpwZy9YYmF3cUpNQUZ5VTY5WVZvYXJiejFMMmdIUWVxeEhwZVdZb0FGWWkrZW93L2lzbjRlMy9Q cnlVekkKQTd5dHFvcnk1a0YzZnBwZXZtZHZ3czlhTnZaRThuMVJIWFFUdG9Ta2F5Tk15bXIzUy9t UkFDeHVxK1YzCjkwczFVYjlvQ1dSYnB0ZEFwRlRlajVISQo9SFFlaAotLS0tLUVORCBQR1AgUFVC TElDIEtFWSBCTE9DSy0tLS0tCg== -----------------------68fa26e36e7ee1d7aeb2c7c4cf10c9c2-- --------24c83aba855cf9862a658f13b81f87a9bc0736b79e61a07a2cb86fad17629481 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: ProtonMail wsFzBAEBCAAnBYJkfgtXCZCK3LVYxPM9ZRYhBGFlFrjrbtAogvxKeorctVjE 8z1lAAC/fQ//XSYX2TuhQGtnvaYdD2gRK6N+/Vop9r8XNvjcB9X2FZWyx9re zKiAngCRC+fA6buumo4Pv0OcQcek/1WpgdYEDQMj2cczg8LTweEncfWTHwyX RUb57UT2FW3uXXfZoED+uUYRBluaTZNOnfY8LMuiCxGS0pLtrGS5UDJZ98V+ bf1poIe0pVwSGpSEFFBzAZxKHl6GK6a920b0g9K0GqaUCukpDDWERLad9QGp PGM8kFHaDAiwMWQXELUiItRZ45N+Lt1779J1hsLaeO/5wh4w86RKgzU/r4az jAPv/9NRfyjAdszMVSy1HMJji5xd+e8yVHeMEcB2a+LJrsByH6khWczFkHC/ 6KcsDas4TRAgr6ud2peHPUIwl5mLTChQxfLXw8AX0jBl8/bexMX8EW9jBp53 B4N9MXR/NvGmVqJexCXqUM7VQONnBSFPYWQuuSM8BWsW275AB8sO3n3FxJPR kviF++5tIkYiAxVSEU8V4fZltb1TSQOcyDrw5n2booIMaqNATBR9SNR5THTn orwEKYdXN0uETa3wmUcOT8cUmHz+vZkcQ3L4E3WjVtzRkcELWgnRLZyGWH+y ag+sQVupd5goSl5MtQ1x2YSaACvV0YKmn8asFcjLkiww9lJysdyQ8eA/YQv8 ztRxrSgUF5B5gmvPVn31/8pJKEB66c1F2GU= =XnEA -----END PGP SIGNATURE----- --------24c83aba855cf9862a658f13b81f87a9bc0736b79e61a07a2cb86fad17629481--