From lanhaiping@gmail.com Sat Oct 14 17:31:51 2006 From: lanhaiping@gmail.com (lan haiping) Date: Sun, 15 Oct 2006 00:31:51 +0800 Subject: [Wannier] pw2wannier90 CRASH in example5/6/7 Message-ID: ------=_Part_103901_17606692.1160843511206 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, all Recently, i try to use wannier function to analyze TM-oxide born charge.But Right now i come to CRASH when i tried to understand these examples implemented in wannier90 package. of coz, there is no problem for me to run example1-example4 just with wannier90.x without pw2wannnier.x following the guide of tutorial.pdf. But i turned to example5-7 ,all came to CRASH when i run pw2wannier90.x. Information stated in CRASH is %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% task # 0 from davcio : error # 10 i/o error in davcio %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Would you please do me a favor? any hints would be appreciated. Regards, hai-ping ------=_Part_103901_17606692.1160843511206 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline
Hi, all
 
   Recently, i try to use wannier function to analyze TM-oxide born charge.But Right now i come to CRASH when i tried to understand
these examples implemented in wannier90 package.
 of coz, there is no problem for me to run example1-example4 just with wannier90.x without pw2wannnier.x following the guide of tutorial.pdf.  But i turned to example5-7 ,all came to CRASH when i run pw2wannier90.x.   Information stated in CRASH is
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     task #         0
     from davcio : error #        10
     i/o error in davcio
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
Would you please do me a favor? any hints would be appreciated.
 
Regards,
 
hai-ping
------=_Part_103901_17606692.1160843511206-- From mostofi@MIT.EDU Sat Oct 14 17:46:03 2006 From: mostofi@MIT.EDU (Arash A Mostofi) Date: Sat, 14 Oct 2006 12:46:03 -0400 (EDT) Subject: [Wannier] pw2wannier90 CRASH in example5/6/7 In-Reply-To: References: Message-ID: ----------------------------------------- Dr Arash A Mostofi Dept of Materials Science and Engineering 13-4084 MIT 77 Massachusetts Avenue Cambridge MA 02139-4307 USA Tel: 617.2536026 ----------------------------------------- On Sun, 15 Oct 2006, lan haiping wrote: > Hi, all > > Recently, i try to use wannier function to analyze TM-oxide born > charge.But Right now i come to CRASH when i tried to understand > these examples implemented in wannier90 package. > of coz, there is no problem for me to run example1-example4 just with > wannier90.x without pw2wannnier.x following the guide of tutorial.pdf. But > i turned to example5-7 ,all came to CRASH when i run pw2wannier90.x. > Information stated in CRASH is > > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > task # 0 > from davcio : error # 10 > i/o error in davcio > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > > Would you please do me a favor? any hints would be appreciated. > > Regards, > > hai-ping > From mostofi@MIT.EDU Sat Oct 14 17:49:29 2006 From: mostofi@MIT.EDU (Arash A Mostofi) Date: Sat, 14 Oct 2006 12:49:29 -0400 (EDT) Subject: [Wannier] pw2wannier90 CRASH in example5/6/7 In-Reply-To: References: Message-ID: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---559023410-959030623-1160844569=:4756 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Are you running on multiple CPUs? You may want to try the attached files: put pw2wannier90.f90 in the PP directory of espresso and wannier.f90 in the Modules directory and recompile pw2wannier90. Let us know if the problem persists. If so, you'll need to send us more information, ie pwscf and wannier90 input/output files. Arash On Sun, 15 Oct 2006, lan haiping wrote: > Hi, all > > Recently, i try to use wannier function to analyze TM-oxide born > charge.But Right now i come to CRASH when i tried to understand > these examples implemented in wannier90 package. > of coz, there is no problem for me to run example1-example4 just with > wannier90.x without pw2wannnier.x following the guide of tutorial.pdf. But > i turned to example5-7 ,all came to CRASH when i run pw2wannier90.x. > Information stated in CRASH is > > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > task # 0 > from davcio : error # 10 > i/o error in davcio > %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > > Would you please do me a favor? any hints would be appreciated. > > Regards, > > hai-ping > ---559023410-959030623-1160844569=:4756 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=pw2wannier90.f90 Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=pw2wannier90.f90 IQ0KISBDb3B5cmlnaHQgKEMpIDIwMDMgUFdTQ0YgZ3JvdXANCiEgVGhpcyBm aWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUNCiEg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFNlZSB0aGUgZmlsZSBgTGlj ZW5zZScNCiEgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBwcmVzZW50 IGRpc3RyaWJ1dGlvbiwNCiEgb3IgaHR0cDovL3d3dy5nbnUub3JnL2NvcHls ZWZ0L2dwbC50eHQgLg0KIQ0KI2luY2x1ZGUgImZfZGVmcy5oIg0KIQ0KIS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KcHJvZ3JhbSBwdzJ3YW5uaWVy OTANCiAgISBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgdG8gdGhlIFdhbm5pZXI5 MCBjb2RlOiBzZWUgaHR0cDovL3d3dy53YW5uaWVyLm9yZw0KICAhLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICENCiAgVVNFIGlvX2dsb2JhbCwg IE9OTFkgOiBzdGRvdXQsIGlvbm9kZSwgaW9ub2RlX2lkDQogIFVTRSBtcF9n bG9iYWwsICBPTkxZIDogbXBpbWUsIGt1bml0DQogIFVTRSBtcCwgICAgICAg ICBPTkxZIDogbXBfYmNhc3QNCiAgVVNFIGNlbGxfYmFzZSwgIE9OTFkgOiBh dCwgYmcNCiAgdXNlIGxzZGFfbW9kLCAgIE9OTFkgOiBuc3BpbiwgaXNrDQog IHVzZSBrbGlzdCwgICAgICBPTkxZIDogbmtzdG90DQogIHVzZSBrdGV0cmEs ICAgICBPTkxZIDogazEsIGsyLCBrMywgbmsxLCBuazIsIG5rMw0KICB1c2Ug aW9fZmlsZXMsICAgT05MWSA6IG5kX25tYnIsIHByZWZpeCwgdG1wX2Rpcg0K ICB1c2Ugbm9uY29sbGluX21vZHVsZSwgT05MWSA6IG5vbmNvbGluDQogIHVz ZSB3dmZjdCwgICAgICAgICAgICBPTkxZIDogZ2FtbWFfb25seQ0KICB1c2Ug d2Fubmllcg0KICAhDQogIGltcGxpY2l0IG5vbmUNCiAgaW50ZWdlciA6OiBp aywgaSwga3VuaXR0bXAsIGlvcw0KICBDSEFSQUNURVIoTEVOPTQpIDo6IHNw aW5fY29tcG9uZW50DQogIENIQVJBQ1RFUihsZW49MjU2KSA6OiBvdXRkaXIN Cg0KICAhIHRoZXNlIGFyZSBpbiB3YW5uaWVyIG1vZHVsZS4uLi4uLT4gaW50 ZWdlciA6OiBpc3BpbncsIGlrc3RhcnQsIGlrc3RvcCwgaWtudW0NCiAgbmFt ZWxpc3QgLyBpbnB1dHBwIC8gb3V0ZGlyLCBwcmVmaXgsIHNwaW5fY29tcG9u ZW50LCB3YW5fbW9kZSwgJg0KICAgICAgIHNlZWRuYW1lLCB3cml0ZV91bmss IHdyaXRlX2Ftbiwgd3JpdGVfbW1uLCB3dmZuX2Zvcm1hdHRlZCwgcmVkdWNl X3Vuaw0KICAhDQogIGNhbGwgc3RhcnRfcG9zdHByb2MgKG5kX25tYnIpDQog ICENCiAgISBSZWFkIGlucHV0IG9uIGkvbyBub2RlIGFuZCBicm9hZGNhc3Qg dG8gdGhlIHJlc3QNCiAgIQ0KICBpZihpb25vZGUpIHRoZW4NCiAgICAgIQ0K ICAgICAhIENoZWNrIHRvIHNlZSBpZiB3ZSBhcmUgcmVhZGluZyBmcm9tIGEg ZmlsZQ0KICAgICAhDQogICAgIGNhbGwgaW5wdXRfZnJvbV9maWxlKCkNCiAg ICAgIQ0KICAgICAhICAgc2V0IGRlZmF1bHQgdmFsdWVzIGZvciB2YXJpYWJs ZXMgaW4gbmFtZWxpc3QNCiAgICAgIQ0KICAgICBvdXRkaXIgPSAnLi8nDQog ICAgIHByZWZpeCA9ICcgJw0KICAgICBzZWVkbmFtZSA9ICd3YW5uaWVyJw0K ICAgICBzcGluX2NvbXBvbmVudCA9ICdub25lJw0KICAgICB3YW5fbW9kZSA9 ICdzdGFuZGFsb25lJw0KICAgICB3dmZuX2Zvcm1hdHRlZCA9IC5mYWxzZS4N CiAgICAgd3JpdGVfdW5rID0gLmZhbHNlLg0KICAgICB3cml0ZV9hbW4gPSAu dHJ1ZS4NCiAgICAgd3JpdGVfbW1uID0gLnRydWUuDQogICAgIHJlZHVjZV91 bms9IC5mYWxzZS4NCiAgICAgIQ0KICAgICAhICAgICByZWFkaW5nIHRoZSBu YW1lbGlzdCBpbnB1dHBwDQogICAgICENCiAgICAgcmVhZCAoNSwgaW5wdXRw cCwgZXJyPTIwMCxpb3N0YXQ9aW9zKQ0KICAgICAhDQoyMDAgIGNhbGwgZXJy b3JlKCAncGhxX3JlYWRpbicsICdyZWFkaW5nIGlucHV0cHAgbmFtZWxpc3Qn LCBhYnMoaW9zKSApDQogICAgICENCiAgICAgISAgICAgQ2hlY2sgb2YgbmFt ZWxpc3QgdmFyaWFibGVzDQogICAgICENCiAgICAgdG1wX2RpciA9IFRSSU0o b3V0ZGlyKSANCiAgICAgISBiYWNrIHRvIGFsbCBub2Rlcw0KICBlbmQgaWYN CiAgIQ0KICAhIGJyb2FkY2FzdCBpbnB1dCB2YXJpYWJsZSB0byBhbGwgbm9k ZXMNCiAgIQ0KICBjYWxsIG1wX2JjYXN0KG91dGRpcixpb25vZGVfaWQpICAg IA0KICBjYWxsIG1wX2JjYXN0KHRtcF9kaXIsaW9ub2RlX2lkKQ0KICBjYWxs IG1wX2JjYXN0KHByZWZpeCxpb25vZGVfaWQpDQogIGNhbGwgbXBfYmNhc3Qo c2VlZG5hbWUsaW9ub2RlX2lkKQ0KICBjYWxsIG1wX2JjYXN0KHNwaW5fY29t cG9uZW50LGlvbm9kZV9pZCkNCiAgY2FsbCBtcF9iY2FzdCh3YW5fbW9kZSxp b25vZGVfaWQpDQogIGNhbGwgbXBfYmNhc3Qod3Zmbl9mb3JtYXR0ZWQsaW9u b2RlX2lkKQ0KICBjYWxsIG1wX2JjYXN0KHdyaXRlX3Vuayxpb25vZGVfaWQp DQogIGNhbGwgbXBfYmNhc3Qod3JpdGVfYW1uLGlvbm9kZV9pZCkNCiAgY2Fs bCBtcF9iY2FzdCh3cml0ZV9tbW4saW9ub2RlX2lkKQ0KICBjYWxsIG1wX2Jj YXN0KHJlZHVjZV91bmssaW9ub2RlX2lkKQ0KICAhDQogICEgICBOb3cgYWxs b2NhdGUgc3BhY2UgZm9yIHB3c2NmIHZhcmlhYmxlcywgcmVhZCBhbmQgY2hl Y2sgdGhlbS4NCiAgIQ0KICBsb2d3YW5uID0gLnRydWUuDQogIHdyaXRlKHN0 ZG91dCwqKQ0KICB3cml0ZShzdGRvdXQsKikgJyBSZWFkaW5nIG5zY2Zfc2F2 ZSBkYXRhJw0KICBjYWxsIHJlYWRfZmlsZSAgDQogIHdyaXRlKHN0ZG91dCwq KQ0KICAhDQogICEgTWFrZSBzdXJlIHdlIGFyZW4ndCByZWFkaW5nIGZyb20g YSBHQU1NQSBvciBOQ0xTIGNhbGN1bGF0aW9uDQogICENCiAgaWYgKGdhbW1h X29ubHkpIGNhbGwgZXJyb3JlKCdwdzJ3YW5uaWVyOTAnLCYNCiAgICAgICAn S1BPSU5UIEdBTU1BIGNhbGN1bGF0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZCcs MSkNCiAgaWYgKG5vbmNvbGluKSBjYWxsIGVycm9yZSgncHcyd2Fubmllcjkw JywmDQogICAgICAgJ05vbi1jb2xsaW5lYXIgY2FsY3VsYXRpb24gaXMgbm90 IGltcGxlbWVudGVkJywxKQ0KICAhDQogICEgSGVyZSB3ZSBzaG91bGQgdHJh cCByZXN0YXJ0cyBmcm9tIGEgZGlmZmVyZW50IG51bWJlciBvZiBub2Rlcy4N CiAgISBvciBhdHRlbXB0cyBhdCBrcG9pbnQgZGlzdHJpYnV0aW9uDQogICEN CiAgU0VMRUNUIENBU0UgKCBUUklNKCBzcGluX2NvbXBvbmVudCApICkNCiAg Q0FTRSAoICd1cCcgKQ0KICAgICB3cml0ZShzdGRvdXQsKikgJyBTcGluIENB U0UgKCB1cCApJw0KICAgICBpc3BpbncgID0gMQ0KICAgICBpa3N0YXJ0ID0g MQ0KICAgICBpa3N0b3AgID0gbmtzdG90LzINCiAgICAgaWtudW0gICA9IG5r c3RvdC8yDQogIENBU0UgKCAnZG93bicgKQ0KICAgICB3cml0ZShzdGRvdXQs KikgJyBTcGluIENBU0UgKCBkb3duICknDQogICAgIGlzcGludyA9IDINCiAg ICAgaWtzdGFydCA9IG5rc3RvdC8yICsgMQ0KICAgICBpa3N0b3AgID0gbmtz dG90DQogICAgIGlrbnVtICAgPSBua3N0b3QvMg0KICBDQVNFIERFRkFVTFQN CiAgICAgd3JpdGUoc3Rkb3V0LCopICcgU3BpbiBDQVNFICggZGVmYXVsdCA9 IHVucG9sYXJpemVkICknDQogICAgIGlzcGludyA9IDANCiAgICAgaWtzdGFy dCA9IDENCiAgICAgaWtzdG9wICA9IG5rc3RvdA0KICAgICBpa251bSAgID0g bmtzdG90DQogIEVORCBTRUxFQ1QNCiAgIQ0KICB3cml0ZShzdGRvdXQsKikN CiAgd3JpdGUoc3Rkb3V0LCopICcgV2FubmllciBtb2RlIGlzOiAnLHdhbl9t b2RlDQogIHdyaXRlKHN0ZG91dCwqKQ0KICAhDQogIGlmKHdhbl9tb2RlLmVx LidzdGFuZGFsb25lJykgdGhlbg0KICAgICAhDQogICAgIHdyaXRlKHN0ZG91 dCwqKSAnIC0tLS0tLS0tLS0tLS0tLS0tJw0KICAgICB3cml0ZShzdGRvdXQs KikgJyAqKiogUmVhZGluZyBubmtwICcNCiAgICAgd3JpdGUoc3Rkb3V0LCop ICcgLS0tLS0tLS0tLS0tLS0tLS0nDQogICAgIHdyaXRlKHN0ZG91dCwqKQ0K ICAgICBjYWxsIHJlYWRfbm5rcA0KICAgICB3cml0ZShzdGRvdXQsKikgJyBP cGVuaW5nIHBwLWZpbGVzICcNCiAgICAgY2FsbCBvcGVuZmlsX3BwDQogICAg IGNhbGwgeWxtX2V4cGFuc2lvbg0KICAgICB3cml0ZShzdGRvdXQsKikNCiAg ICAgd3JpdGUoc3Rkb3V0LCopDQogICAgIGlmKHdyaXRlX2FtbikgdGhlbg0K ICAgICAgICB3cml0ZShzdGRvdXQsKikgJyAtLS0tLS0tLS0tLS0tLS0nDQog ICAgICAgIHdyaXRlKHN0ZG91dCwqKSAnICoqKiBDb21wdXRlICBBICcNCiAg ICAgICAgd3JpdGUoc3Rkb3V0LCopICcgLS0tLS0tLS0tLS0tLS0tJw0KICAg ICAgICB3cml0ZShzdGRvdXQsKikNCiAgICAgICAgY2FsbCBjb21wdXRlX2Ft bg0KICAgICAgICB3cml0ZShzdGRvdXQsKikNCiAgICAgZWxzZQ0KICAgICAg ICB3cml0ZShzdGRvdXQsKikgJyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLScNCiAgICAgICAgd3JpdGUoc3Rkb3V0LCopICcgKioqIEEgbWF0cml4 IGlzIG5vdCBjb21wdXRlZCAnDQogICAgICAgIHdyaXRlKHN0ZG91dCwqKSAn IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJw0KICAgICAgICB3cml0 ZShzdGRvdXQsKikNCiAgICAgZW5kaWYNCiAgICAgaWYod3JpdGVfbW1uKSB0 aGVuDQogICAgICAgIHdyaXRlKHN0ZG91dCwqKSAnIC0tLS0tLS0tLS0tLS0t LScNCiAgICAgICAgd3JpdGUoc3Rkb3V0LCopICcgKioqIENvbXB1dGUgIE0g Jw0KICAgICAgICB3cml0ZShzdGRvdXQsKikgJyAtLS0tLS0tLS0tLS0tLS0n DQogICAgICAgIHdyaXRlKHN0ZG91dCwqKSANCiAgICAgICAgY2FsbCBjb21w dXRlX21tbg0KICAgICAgICB3cml0ZShzdGRvdXQsKikNCiAgICAgZWxzZQ0K ICAgICAgICB3cml0ZShzdGRvdXQsKikgJyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLScNCiAgICAgICAgd3JpdGUoc3Rkb3V0LCopICcgKioqIE0g bWF0cml4IGlzIG5vdCBjb21wdXRlZCAnDQogICAgICAgIHdyaXRlKHN0ZG91 dCwqKSAnIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tJw0KICAgICAg ICB3cml0ZShzdGRvdXQsKikNCiAgICAgZW5kaWYNCiAgICAgd3JpdGUoc3Rk b3V0LCopICcgLS0tLS0tLS0tLS0tLS0tLScNCiAgICAgd3JpdGUoc3Rkb3V0 LCopICcgKioqIFdyaXRlIGJhbmRzICcNCiAgICAgd3JpdGUoc3Rkb3V0LCop ICcgLS0tLS0tLS0tLS0tLS0tLScNCiAgICAgd3JpdGUoc3Rkb3V0LCopDQog ICAgIGNhbGwgd3JpdGVfYmFuZA0KICAgICB3cml0ZShzdGRvdXQsKikNCiAg ICAgaWYod3JpdGVfdW5rKSB0aGVuDQogICAgICAgIHdyaXRlKHN0ZG91dCwq KSAnIC0tLS0tLS0tLS0tLS0tLS0tLS0tJw0KICAgICAgICB3cml0ZShzdGRv dXQsKikgJyAqKiogV3JpdGUgcGxvdCBpbmZvICcNCiAgICAgICAgd3JpdGUo c3Rkb3V0LCopICcgLS0tLS0tLS0tLS0tLS0tLS0tLS0nDQogICAgICAgIHdy aXRlKHN0ZG91dCwqKQ0KICAgICAgICBjYWxsIHdyaXRlX3Bsb3QNCiAgICAg ICAgd3JpdGUoc3Rkb3V0LCopDQogICAgIGVsc2UNCiAgICAgICAgd3JpdGUo c3Rkb3V0LCopICcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nDQog ICAgICAgIHdyaXRlKHN0ZG91dCwqKSAnICoqKiBQbG90IGluZm8gaXMgbm90 IHByaW50ZWQgJw0KICAgICAgICB3cml0ZShzdGRvdXQsKikgJyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLScNCiAgICAgICAgd3JpdGUoc3Rkb3V0 LCopDQogICAgIGVuZGlmDQogICAgIHdyaXRlKHN0ZG91dCwqKSAnIC0tLS0t LS0tLS0tLScNCiAgICAgd3JpdGUoc3Rkb3V0LCopICcgKioqIFN0b3AgcHAg Jw0KICAgICB3cml0ZShzdGRvdXQsKikgJyAtLS0tLS0tLS0tLS0nIA0KICAg ICB3cml0ZShzdGRvdXQsKikNCiAgICAgY2FsbCBzdG9wX3BwDQogICAgICEN CiAgZW5kaWYNCiAgIQ0KICBpZih3YW5fbW9kZS5lcS4nbGlicmFyeScpIHRo ZW4NCiAgICAgIQ0KISAgICAgc2VlZG5hbWU9J3dhbm5pZXInDQogICAgIHdy aXRlKHN0ZG91dCwqKSAnIFNldHRpbmcgdXAuLi4nDQogICAgIGNhbGwgc2V0 dXBfbm5rcA0KICAgICB3cml0ZShzdGRvdXQsKikNCiAgICAgd3JpdGUoc3Rk b3V0LCopICcgT3BlbmluZyBwcC1maWxlcyAnDQogICAgIGNhbGwgb3BlbmZp bF9wcA0KICAgICB3cml0ZShzdGRvdXQsKikNCiAgICAgd3JpdGUoc3Rkb3V0 LCopICcgWWxtIGV4cGFuc2lvbicNCiAgICAgY2FsbCB5bG1fZXhwYW5zaW9u DQogICAgIHdyaXRlKHN0ZG91dCwqKQ0KICAgICBjYWxsIGNvbXB1dGVfYW1u DQogICAgIGNhbGwgY29tcHV0ZV9tbW4NCiAgICAgY2FsbCB3cml0ZV9iYW5k DQogICAgIGlmKHdyaXRlX3VuaykgY2FsbCB3cml0ZV9wbG90DQogICAgIGNh bGwgcnVuX3dhbm5pZXINCiAgICAgY2FsbCBsaWJfZGVhbGxvYw0KICAgICBj YWxsIHN0b3BfcHANCiAgICAgIQ0KICBlbmRpZg0KICAhDQogIGlmKHdhbl9t b2RlLmVxLid3YW5uaWVyMnNpYycpIHRoZW4NCiAgICAgIQ0KICAgICBjYWxs IHJlYWRfbm5rcA0KICAgICBjYWxsIHdhbjJzaWMNCiAgICAgIQ0KICBlbmRp Zg0KICAhDQogIHN0b3ANCmVuZCBwcm9ncmFtIHB3Mndhbm5pZXI5MA0KIQ0K IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWJyb3V0aW5lIGxpYl9k ZWFsbG9jDQogICEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAhDQog IHVzZSB3YW5uaWVyDQoNCiAgaW1wbGljaXQgbm9uZQ0KDQogIGRlYWxsb2Nh dGUobV9tYXQsdV9tYXQsdV9tYXRfb3B0LGFfbWF0LGVpZ3ZhbCkNCg0KICBy ZXR1cm4NCmVuZCBzdWJyb3V0aW5lIGxpYl9kZWFsbG9jDQohDQohLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0NCnN1YnJvdXRpbmUgc2V0dXBfbm5rcA0K ICAhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIQ0KICB1c2UgaW9f Z2xvYmFsLCBvbmx5IDogc3Rkb3V0LCBpb25vZGUsIGlvbm9kZV9pZA0KICB1 c2Uga2luZHMsICAgICBvbmx5IDogRFANCiAgdXNlIGNvbnN0YW50cywgb25s eSA6IGVwczYsIHRwaQ0KICB1c2UgY2VsbF9iYXNlLCBvbmx5IDogYXQsIGJn LCBhbGF0DQogIHVzZSBndmVjdCwgICAgIG9ubHkgOiBnLCBnZw0KICB1c2Ug aW9uc19iYXNlLCBvbmx5IDogbmF0LCB0YXUsIGl0eXAsIGF0bQ0KICB1c2Ug a2xpc3QsICAgICBvbmx5IDogeGsNCiAgVVNFIG1wLCAgICAgICAgIE9OTFkg OiBtcF9iY2FzdA0KICB1c2Ugd3ZmY3QsICAgICBvbmx5IDogbmJuZCxucHd4 DQogIHVzZSB3YW5uaWVyDQoNCiAgaW1wbGljaXQgbm9uZQ0KICByZWFsKERQ KSA6OiBnXygzKSwgZ2dfDQogIGludGVnZXIgIDo6IGlrLCBpYiwgaWcsIGl3 LCBpYSwgaW5kZXhiLCB0eXBlDQogIHJlYWwoRFApIDo6IHhub3JtLCB6bm9y bSwgY29zZW5vDQogIGludGVnZXIgIDo6IGV4Y2x1ZGVfYmFuZHMobmJuZCkN CiAgcmVhbChEUCkgOjogYm9ocg0KDQogICEgYWFtOiB0cmFuc2xhdGlvbnMg YmV0d2VlbiBQVzJXYW5uaWVyOTAgYW5kIFdhbm5pZXI5MA0KICAhIHB3Mndh bm5pZXI5MCAgIDw9PT4gICBXYW5uaWVyOTANCiAgISAgICBuYm5kICAgICAg ICAgICAgICAgIG51bV9iYW5kc190b3QNCiAgISAgICBuX3dhbm5pZXIgICAg ICAgICAgIG51bV93YW5uDQogICEgICAgbnVtX2JhbmRzICAgICAgICAgICBu dW1fYmFuZHMNCiAgISAgICBuYXQgICAgICAgICAgICAgICAgIG51bV9hdG9t cw0KICAhICAgIGlrbnVtICAgICAgICAgICAgICAgbnVtX2twdHMNCiAgISAg ICBybGF0dCAgICAgICAgICAgICAgIHRyYW5zcG9zZShyZWFsX2xhdHRpY2Up DQogICEgICAgZ2xhdHQgICAgICAgICAgICAgICB0cmFuc3Bvc2UocmVjaXBf bGF0dGljZSkNCiAgISAgICBrcHRfbGF0dCAgICAgICAgICAgIGtwdF9sYXR0 DQogICEgICAgbm5iICAgICAgICAgICAgICAgICBubnRvdA0KICAhICAgIGtw YiAgICAgICAgICAgICAgICAgbm5saXN0DQogICEgICAgZ19rcGIgICAgICAg ICAgICAgICBubmNlbGwNCiAgISAgICBtcF9ncmlkICAgICAgICAgICAgIG1w X2dyaWQNCiAgISAgICBjZW50ZXJfdyAgICAgICAgICAgIHByb2pfc2l0ZQ0K ICAhICAgIGxfdyxtcl93LHJfdyAgICAgICAgcHJval9sLHByb2pfbSxwcm9q X3JhZGlhbA0KICAhICAgIHhheGlzLHpheGlzICAgICAgICAgcHJval94LHBy b2pfeg0KICAhICAgIGFscGhhX3cgICAgICAgICAgICAgcHJval96b25hDQog ICEgICAgZXhjbHVkZV9iYW5kcyAgICAgICBleGNsdWRlX2JhbmRzDQogICEg ICAgYXRjYXJ0ICAgICAgICAgICAgICBhdG9tc19jYXJ0DQogICEgICAgYXRz eW0gICAgICAgICAgICAgICBhdG9tX3N5bWJvbHMNCg0KICBib2hyID0gMC41 MjkxNzcyMTA4ZDANCg0KICBhbGxvY2F0ZSgga3B0X2xhdHQoMyxpa251bSkg KQ0KICBhbGxvY2F0ZSggYXRjYXJ0KDMsbmF0KSwgYXRzeW0obmF0KSApDQog IGFsbG9jYXRlKCBrcGIoaWtudW0sbnVtX25ubWF4KSwgZ19rcGIoMyxpa251 bSxudW1fbm5tYXgpICkNCiAgYWxsb2NhdGUoIGNlbnRlcl93KDMsbmJuZCks IGFscGhhX3cobmJuZCksIGxfdyhuYm5kKSwgJg0KICAgICAgIG1yX3cobmJu ZCksIHJfdyhuYm5kKSwgemF4aXMoMyxuYm5kKSwgeGF4aXMoMyxuYm5kKSAp DQogIGFsbG9jYXRlKCBleGNsdWRlZF9iYW5kKG5ibmQpICkNCg0KICAhIHJl YWwgbGF0dGljZSAoQ2FydGVzaWFucywgQW5nc3Ryb20pDQogIHJsYXR0KDos OikgPSB0cmFuc3Bvc2UoYXQoOiw6KSkqYWxhdCpib2hyDQogICEgcmVjaXBy b2NhbCBsYXR0aWNlIChDYXJ0ZXNpYW5zLCBBbmdzdHJvbSkNCiAgZ2xhdHQo Oiw6KSA9IHRyYW5zcG9zZShiZyg6LDopKSp0cGkvKGFsYXQqYm9ocikNCiAg ISBjb252ZXJ0IENhcnRlc2lhbiBrLXBvaW50cyB0byBjcnlzdGFsbG9ncmFw aGljIGNvLW9yZGluYXRlcw0KICBrcHRfbGF0dCg6LDopPXhrKDosOikNCiAg Q0FMTCBjcnlzdF90b19jYXJ0KGlrbnVtLGtwdF9sYXR0LGF0LC0xKQ0KICAh IGF0b20gY28tb3JkaW5hdGVzIGluIENhcnRlc2lhbiBjby1vcmRzIGFuZCBB bmdzdHJvbSB1bml0cw0KICBhdGNhcnQoOiw6KSA9IHRhdSg6LDopKmJvaHIq YWxhdA0KICAhIGF0b20gc3ltYm9scw0KICBkbyBpYT0xLG5hdA0KICAgICB0 eXBlPWl0eXAoaWEpDQogICAgIGF0c3ltKGlhKT1hdG0odHlwZSkNCiAgZW5k ZG8NCg0KICAhIE1QIGdyaWQgZGltZW5zaW9ucw0KICBjYWxsIGZpbmRfbXBf Z3JpZChrcHRfbGF0dCxtcF9ncmlkKDMpKQ0KDQogIHdyaXRlKHN0ZG91dCwn KCIgIC0gTnVtYmVyIG9mIGF0b21zIGlzICgiLGkzLCIpIiknKSBuYXQgDQoN CiNpZmRlZiBfX1dBTkxJQg0KICBpZiAoaW9ub2RlKSB0aGVuDQogICAgIGNh bGwgd2Fubmllcl9zZXR1cChzZWVkbmFtZSxtcF9ncmlkLGlrbnVtLCAmICAg ICAgICAgICEgaW5wdXQNCiAgICAgICAgICBybGF0dCxnbGF0dCxrcHRfbGF0 dCxuYm5kLG5hdCxhdHN5bSxhdGNhcnQsICYgICAgISBpbnB1dA0KICAgICAg ICAgIG5uYixrcGIsZ19rcGIsbnVtX2JhbmRzLG5fd2FubmllcixjZW50ZXJf dywgJiAgICAhIG91dHB1dA0KICAgICAgICAgIGxfdyxtcl93LHJfdyx6YXhp cyx4YXhpcyxhbHBoYV93LGV4Y2x1ZGVfYmFuZHMpICAhIG91dHB1dA0KICBl bmRpZg0KI2VuZGlmDQoNCiAgY2FsbCBtcF9iY2FzdChubmIsaW9ub2RlX2lk KQ0KICBjYWxsIG1wX2JjYXN0KGtwYixpb25vZGVfaWQpDQogIGNhbGwgbXBf YmNhc3QoZ19rcGIsaW9ub2RlX2lkKQ0KICBjYWxsIG1wX2JjYXN0KG51bV9i YW5kcyxpb25vZGVfaWQpDQogIGNhbGwgbXBfYmNhc3Qobl93YW5uaWVyLGlv bm9kZV9pZCkNCiAgY2FsbCBtcF9iY2FzdChjZW50ZXJfdyxpb25vZGVfaWQp DQogIGNhbGwgbXBfYmNhc3QobF93LGlvbm9kZV9pZCkNCiAgY2FsbCBtcF9i Y2FzdChtcl93LGlvbm9kZV9pZCkNCiAgY2FsbCBtcF9iY2FzdChyX3csaW9u b2RlX2lkKQ0KICBjYWxsIG1wX2JjYXN0KHpheGlzLGlvbm9kZV9pZCkNCiAg Y2FsbCBtcF9iY2FzdCh4YXhpcyxpb25vZGVfaWQpDQogIGNhbGwgbXBfYmNh c3QoYWxwaGFfdyxpb25vZGVfaWQpDQogIGNhbGwgbXBfYmNhc3QoZXhjbHVk ZV9iYW5kcyxpb25vZGVfaWQpDQoNCiAgYWxsb2NhdGUoIGdmKG5wd3gsbl93 YW5uaWVyKSwgY3NwaCgxNixuX3dhbm5pZXIpICkgDQoNCiAgd3JpdGUoc3Rk b3V0LCcoIiAgLSBOdW1iZXIgb2Ygd2FubmllciBmdW5jdGlvbnMgaXMgKCIs aTMsIikiKScpIG5fd2FubmllciANCg0KICBleGNsdWRlZF9iYW5kKDE6bmJu ZCk9LmZhbHNlLg0KICBuZXhiYW5kPTANCiAgYmFuZF9sb29wOiBkbyBpYj0x LG5ibmQNCiAgICAgaW5kZXhiPWV4Y2x1ZGVfYmFuZHMoaWIpDQogICAgIGlm IChpbmRleGI+bmJuZCAub3IuIGluZGV4YjwwKSB0aGVuDQogICAgICAgIGNh bGwgZXJyb3JlKCdzZXR1cF9ubmtwJywnIHdyb25nIGV4Y2x1ZGVkIGJhbmQg aW5kZXggJywgMSkNCiAgICAgZWxzZWlmIChpbmRleGIuZXEuMCkgdGhlbiAN CiAgICAgICAgZXhpdCBiYW5kX2xvb3ANCiAgICAgZWxzZQ0KICAgICAgICBu ZXhiYW5kPW5leGJhbmQrMQ0KICAgICAgICBleGNsdWRlZF9iYW5kKGluZGV4 Yik9LnRydWUuDQogICAgIGVuZGlmDQogIGVuZGRvIGJhbmRfbG9vcA0KDQog IGlmICggKG5ibmQtbmV4YmFuZCkubmUubnVtX2JhbmRzICkgJg0KICAgICAg IGNhbGwgZXJyb3JlKCdzZXR1cF9ubmtwJywnIHNvbWV0aGluZyB3cm9uZyB3 aXRoIG51bV9iYW5kcycsMSkNCg0KICBkbyBpdz0xLG5fd2Fubmllcg0KICAg ICB4bm9ybSA9IHNxcnQoeGF4aXMoMSxpdykqeGF4aXMoMSxpdykgKyB4YXhp cygyLGl3KSp4YXhpcygyLGl3KSArICYNCiAgICAgICAgICB4YXhpcygzLGl3 KSp4YXhpcygzLGl3KSkNCiAgICAgaWYgKHhub3JtIDwgZXBzNikgY2FsbCBl cnJvcmUgKCdzZXR1cF9ubmtwJywnIHx4YXhpc3wgPCBlcHMgJywxKQ0KICAg ICB6bm9ybSA9IHNxcnQoemF4aXMoMSxpdykqemF4aXMoMSxpdykgKyB6YXhp cygyLGl3KSp6YXhpcygyLGl3KSArICYNCiAgICAgICAgICB6YXhpcygzLGl3 KSp6YXhpcygzLGl3KSkNCiAgICAgaWYgKHpub3JtIDwgZXBzNikgY2FsbCBl cnJvcmUgKCdzZXR1cF9ubmtwJywnIHx6YXhpc3wgPCBlcHMgJywxKQ0KICAg ICBjb3Nlbm8gPSAoeGF4aXMoMSxpdykqemF4aXMoMSxpdykgKyB4YXhpcygy LGl3KSp6YXhpcygyLGl3KSArICYNCiAgICAgICAgICB4YXhpcygzLGl3KSp6 YXhpcygzLGl3KSkveG5vcm0vem5vcm0NCiAgICAgaWYgKGFicyhjb3Nlbm8p ID4gZXBzNikgJg0KICAgICAgICAgIGNhbGwgZXJyb3JlKCdzZXR1cF9ubmtw JywnIHhheGlzIGFuZCB6YXhpcyBhcmUgbm90IG9ydGhvZ29uYWwgIScsMSkN CiAgICAgaWYgKGFscGhhX3coaXcpIDwgZXBzNikgJg0KICAgICAgICAgIGNh bGwgZXJyb3JlKCdzZXR1cF9ubmtwJywnIHpvbmEgdmFsdWUgbXVzdCBiZSBw b3NpdGl2ZScsIDEpDQogICAgICEgY29udmVydCB3YW5uaWVyIGNlbnRlciBp biBjYXJ0ZXNpYW4gY29vcmRpbmF0ZXMgKGluIHVuaXQgb2YgYWxhdCkNCiAg ICAgQ0FMTCBjcnlzdF90b19jYXJ0KCAxLCBjZW50ZXJfdyg6LGl3KSwgYXQs IDEgKQ0KICBlbmRkbw0KICB3cml0ZShzdGRvdXQsKikgJyAtIEFsbCBndWlk aW5nIGZ1bmN0aW9ucyBhcmUgZ2l2ZW4gJw0KDQogIG5uYng9MA0KICBubmI9 bWF4KG5uYngsbm5iKQ0KDQogIGFsbG9jYXRlKCBpZ18oaWtudW0sbm5iKSAp DQoNCiAgZG8gaWs9MSwgaWtudW0NCiAgICAgZG8gaWIgPSAxLCBubmINCiAg ICAgICAgZ18oOikgPSBSRUFMKCBnX2twYig6LGlrLGliKSApDQogICAgICAg IGNhbGwgdHJudmVjdCAoZ18sIGF0LCBiZywgMSkNCiAgICAgICAgZ2dfID0g Z18oMSkqZ18oMSkgKyBnXygyKSpnXygyKSArIGdfKDMpKmdfKDMpDQogICAg ICAgIGlnXyhpayxpYikgPSAwDQogICAgICAgIGlnID0gMQ0KICAgICAgICBk byB3aGlsZSAgKGdnKGlnKSA8PSBnZ18gKyBlcHM2KSANCiAgICAgICAgICAg aWYgKCAoYWJzKGcoMSxpZyktZ18oMSkpIDwgZXBzNikgLmFuZC4gICYNCiAg ICAgICAgICAgICAgICAoYWJzKGcoMixpZyktZ18oMikpIDwgZXBzNikgLmFu ZC4gICYNCiAgICAgICAgICAgICAgICAoYWJzKGcoMyxpZyktZ18oMykpIDwg ZXBzNikgICkgaWdfKGlrLGliKSA9IGlnDQogICAgICAgICAgIGlnPSBpZyAr MQ0KICAgICAgICBlbmQgZG8NCiAgICAgZW5kIGRvDQogIGVuZCBkbw0KICB3 cml0ZShzdGRvdXQsKikgJyAtIEFsbCBuZWlnaGJvdXJzIGFyZSBmb3VuZCAn DQogIHdyaXRlKHN0ZG91dCwqKQ0KICANCiAgcmV0dXJuDQplbmQgc3Vicm91 dGluZSBzZXR1cF9ubmtwDQogIQ0KICEtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQ0Kc3Vicm91dGluZSBydW5fd2Fubmllcg0KICAhLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0NCiAgIQ0KICB1c2UgaW9fZ2xvYmFsLCBvbmx5IDog aW9ub2RlLCBpb25vZGVfaWQNCiAgdXNlIGlvbnNfYmFzZSwgb25seSA6IG5h dA0KICB1c2UgbXAsICAgICAgICBvbmx5IDogbXBfYmNhc3QNCiAgdXNlIHdh bm5pZXINCg0KICBpbXBsaWNpdCBub25lDQoNCiAgYWxsb2NhdGUodV9tYXQo bl93YW5uaWVyLG5fd2Fubmllcixpa251bSkpDQogIGFsbG9jYXRlKHVfbWF0 X29wdChudW1fYmFuZHMsbl93YW5uaWVyLGlrbnVtKSkNCiAgYWxsb2NhdGUo bHdpbmRvdyhudW1fYmFuZHMsaWtudW0pKQ0KICBhbGxvY2F0ZSh3YW5uX2Nl bnRlcnMoMyxuX3dhbm5pZXIpKQ0KICBhbGxvY2F0ZSh3YW5uX3NwcmVhZHMo bl93YW5uaWVyKSkNCg0KI2lmZGVmIF9fV0FOTElCDQogIGlmIChpb25vZGUp IHRoZW4NCiAgICAgY2FsbCB3YW5uaWVyX3J1bihzZWVkbmFtZSxtcF9ncmlk LGlrbnVtLHJsYXR0LCAmICAgICAgICAgICAgICAgICEgaW5wdXQNCiAgICAg ICAgICBnbGF0dCxrcHRfbGF0dCxudW1fYmFuZHMsbl93YW5uaWVyLG5uYixu YXQsICYgICAgICAgICAgICAgICEgaW5wdXQNCiAgICAgICAgICBhdHN5bSxh dGNhcnQsbV9tYXQsYV9tYXQsZWlndmFsLCAmICAgICAgICAgICAgICAgICAg ICAgICAgICEgaW5wdXQNCiAgICAgICAgICB1X21hdCx1X21hdF9vcHQsbHdp bmRvdyx3YW5uX2NlbnRlcnMsd2Fubl9zcHJlYWRzLHNwcmVhZHMpICEgb3V0 cHV0DQogIGVuZGlmDQojZW5kaWYNCg0KICBjYWxsIG1wX2JjYXN0KHVfbWF0 LGlvbm9kZV9pZCkNCiAgY2FsbCBtcF9iY2FzdCh1X21hdF9vcHQsaW9ub2Rl X2lkKQ0KICBjYWxsIG1wX2JjYXN0KGx3aW5kb3csaW9ub2RlX2lkKQ0KICBj YWxsIG1wX2JjYXN0KHdhbm5fY2VudGVycyxpb25vZGVfaWQpDQogIGNhbGwg bXBfYmNhc3Qod2Fubl9zcHJlYWRzLGlvbm9kZV9pZCkNCiAgY2FsbCBtcF9i Y2FzdChzcHJlYWRzLGlvbm9kZV9pZCkNCg0KICByZXR1cm4NCmVuZCBzdWJy b3V0aW5lIHJ1bl93YW5uaWVyDQohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCiENCnN1YnJvdXRpbmUgZmluZF9tcF9ncmlkDQogICEtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQ0KICAhDQogIHVzZSBpb19nbG9iYWwsIG9ubHkg OiBzdGRvdXQNCiAgdXNlIGtpbmRzLCAgICAgb25seTogRFANCiAgdXNlIHdh bm5pZXINCg0KICBpbXBsaWNpdCBub25lDQoNCiAgISA8PDxsb2NhbCB2YXJp YWJsZXM+Pj4NCiAgaW50ZWdlciAgOjogaWssbnRlbXAsaWkNCiAgcmVhbChE UCkgOjogbWluX2ssdGVtcCgzLGlrbnVtKSxtcGcxDQoNCiAgbWluX2s9bWlu dmFsKGtwdF9sYXR0KDEsOikpDQogIGlpPTANCiAgZG8gaWs9MSxpa251bQ0K ICAgICBpZiAoa3B0X2xhdHQoMSxpaykuZXEubWluX2spIHRoZW4NCiAgICAg ICAgaWk9aWkrMQ0KICAgICAgICB0ZW1wKDosaWkpPWtwdF9sYXR0KDosaWsp DQogICAgIGVuZGlmDQogIGVuZGRvDQogIG50ZW1wPWlpDQoNCiAgbWluX2s9 bWludmFsKHRlbXAoMiwxOm50ZW1wKSkNCiAgaWk9MA0KICBkbyBpaz0xLG50 ZW1wDQogICAgIGlmICh0ZW1wKDIsaWspLmVxLm1pbl9rKSB0aGVuDQogICAg ICAgIGlpPWlpKzENCiAgICAgZW5kaWYNCiAgZW5kZG8NCiAgbXBfZ3JpZCgz KT1paQ0KDQogIG1pbl9rPW1pbnZhbCh0ZW1wKDMsMTpudGVtcCkpDQogIGlp PTANCiAgZG8gaWs9MSxudGVtcA0KICAgICBpZiAodGVtcCgzLGlrKS5lcS5t aW5faykgdGhlbg0KICAgICAgICBpaT1paSsxDQogICAgIGVuZGlmDQogIGVu ZGRvDQogIG1wX2dyaWQoMik9aWkNCg0KICBpZiAoIChtcF9ncmlkKDIpLmVx LjApIC5vci4gKG1wX2dyaWQoMykuZXEuMCkgKSAmDQogICAgICAgY2FsbCBl cnJvcmUoJ2ZpbmRfbXBfZ3JpZCcsJyBvbmUgb3IgbW9yZSBtcF9ncmlkIGRp bWVuc2lvbnMgaXMgemVybycsIDEpICANCg0KICBtcGcxPWlrbnVtLyhtcF9n cmlkKDIpKm1wX2dyaWQoMykpDQoNCiAgbXBfZ3JpZCgxKSA9IG5pbnQobXBn MSkNCg0KICB3cml0ZShzdGRvdXQsKikNCiAgd3JpdGUoc3Rkb3V0LCcoMyhh LGkzKSknKSAnICBNUCBncmlkIGlzICcsbXBfZ3JpZCgxKSwnIHgnLG1wX2dy aWQoMiksJyB4JyxtcF9ncmlkKDMpDQoNCiAgaWYgKHJlYWwobXBfZ3JpZCgx KSxraW5kPURQKS5uZS5tcGcxKSAmDQogICAgICAgY2FsbCBlcnJvcmUoJ2Zp bmRfbXBfZ3JpZCcsJyBkZXRlcm1pbmluZyBtcF9ncmlkIGZhaWxlZCcsIDEp DQoNCiAgcmV0dXJuDQplbmQgc3Vicm91dGluZSBmaW5kX21wX2dyaWQNCiEt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIQ0Kc3Vicm91dGluZSByZWFk X25ua3ANCiAgIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICENCiAg VVNFIGlvX2dsb2JhbCwgT05MWSA6IHN0ZG91dCwgaW9ub2RlLCBpb25vZGVf aWQNCiAgdXNlIGtpbmRzLCAgICAgb25seTogRFANCiAgdXNlIGNvbnN0YW50 cywgb25seSA6IGVwczYsIHRwaQ0KICB1c2UgY2VsbF9iYXNlLCBvbmx5IDog YXQsIGJnLCBhbGF0DQogIHVzZSBndmVjdCwgICAgIG9ubHkgOiBnLCBnZw0K ICB1c2UgaW9fZmlsZXMsICBvbmx5IDogZmluZF9mcmVlX3VuaXQNCiAgdXNl IGtsaXN0LCAgICAgb25seSA6IG5rc3RvdCwgeGsNCiAgVVNFIG1wLCAgICAg ICAgT05MWSA6IG1wX2JjYXN0DQogIHVzZSB3dmZjdCwgICAgIG9ubHkgOiBu cHd4LCBuYm5kDQogIHVzZSB3YW5uaWVyDQoNCiAgaW1wbGljaXQgbm9uZQ0K DQogIHJlYWwoRFApIDo6IGdfKDMpLCBnZ18NCiAgaW50ZWdlciA6OiBpaywg aWIsIGlnLCBpcG9sLCBpdywgaWR1bSwgaW5kZXhiDQogIGludGVnZXIgbnVt aywgaSwgag0KICByZWFsKERQKSA6OiBib2hyLCB4eCgzKSwgeG5vcm0sIHpu b3JtLCBjb3Nlbm8NCiAgQ0hBUkFDVEVSKExFTj04MCkgOjogbGluZTEsIGxp bmUyDQogIGxvZ2ljYWwgOjogaGF2ZV9ubmtwDQoNCiAgaWYgKGlvbm9kZSkg dGhlbiAgISBSZWFkIG5ua3AgZmlsZSBvbiBpb25vZGUgb25seQ0KDQogICAg IGlucXVpcmUoZmlsZT1UUklNKHNlZWRuYW1lKS8vIi5ubmtwIixleGlzdD1o YXZlX25ua3ApDQogICAgIGlmKC5ub3QuIGhhdmVfbm5rcCkgdGhlbg0KICAg ICAgICB3cml0ZShzdGRvdXQsKikgJyBDb3VsZCBub3QgZmluZCB0aGUgZmls ZSAnLy9UUklNKHNlZWRuYW1lKS8vJy5ubmtwJw0KICAgICAgICBzdG9wDQog ICAgIGVuZCBpZg0KDQogICAgIGl1bl9ubmtwID0gZmluZF9mcmVlX3VuaXQo KQ0KICAgICBvcGVuICh1bml0PWl1bl9ubmtwLCBmaWxlPVRSSU0oc2VlZG5h bWUpLy8iLm5ua3AiLGZvcm09J2Zvcm1hdHRlZCcpDQoNCiAgZW5kaWYNCg0K ICBubmJ4PTANCiAgDQogICEgICBjaGVjayB0aGUgaW5mb3JtYXRpb24gZnJv bSAqLm5ua3Agd2l0aCB0aGUgbnNjZl9zYXZlIGRhdGENCiAgd3JpdGUoc3Rk b3V0LCopICcgQ2hlY2tpbmcgaW5mbyBmcm9tIHdhbm5pZXIubm5rcCBmaWxl JyANCiAgd3JpdGUoc3Rkb3V0LCopDQogIGJvaHIgPSAwLjUyOTE3NzIxMDhk MA0KICANCiAgaWYgKGlvbm9kZSkgdGhlbiAgICEgcmVhZCBmcm9tIGlvbm9k ZSBvbmx5DQoNCiAgICAgY2FsbCBzY2FuX2ZpbGVfdG8oJ3JlYWxfbGF0dGlj ZScpDQogICAgIGRvIGo9MSwzDQogICAgICAgIHJlYWQoaXVuX25ua3AsKikg KHJsYXR0KGksaiksaT0xLDMpDQogICAgICAgIGRvIGkgPSAxLDMNCiAgICAg ICAgICAgcmxhdHQoaSxqKSA9IHJsYXR0KGksaikvKGFsYXQqYm9ocikNCiAg ICAgICAgZW5kZG8NCiAgICAgZW5kZG8NCiAgICAgZG8gaj0xLDMNCiAgICAg ICAgZG8gaT0xLDMNCiAgICAgICAgICAgaWYoYWJzKHJsYXR0KGksaiktYXQo aSxqKSkuZ3QuZXBzNikgdGhlbg0KICAgICAgICAgICAgICB3cml0ZShzdGRv dXQsKikgICcgU29tZXRoaW5nIHdyb25nISAnDQogICAgICAgICAgICAgIHdy aXRlKHN0ZG91dCwqKSAgJyBybGF0dChpLGopID0nLHJsYXR0KGksaiksICAn IGF0KGksaik9JyxhdChpLGopDQogICAgICAgICAgICAgIHN0b3ANCiAgICAg ICAgICAgZW5kaWYNCiAgICAgICAgZW5kZG8NCiAgICAgZW5kZG8NCiAgICAg d3JpdGUoc3Rkb3V0LCopICcgLSBSZWFsIGxhdHRpY2UgaXMgb2snDQoNCiAg ICAgY2FsbCBzY2FuX2ZpbGVfdG8oJ3JlY2lwX2xhdHRpY2UnKQ0KICAgICBk byBqPTEsMw0KICAgICAgICByZWFkKGl1bl9ubmtwLCopIChnbGF0dChpLGop LGk9MSwzKQ0KICAgICAgICBkbyBpID0gMSwzDQogICAgICAgICAgIGdsYXR0 KGksaikgPSAoYWxhdCpib2hyKSpnbGF0dChpLGopL3RwaQ0KICAgICAgICBl bmRkbw0KICAgICBlbmRkbw0KICAgICBkbyBqPTEsMw0KICAgICAgICBkbyBp PTEsMw0KICAgICAgICAgICBpZihhYnMoZ2xhdHQoaSxqKS1iZyhpLGopKS5n dC5lcHM2KSB0aGVuDQogICAgICAgICAgICAgIHdyaXRlKHN0ZG91dCwqKSAg JyBTb21ldGhpbmcgd3JvbmchICcNCiAgICAgICAgICAgICAgd3JpdGUoc3Rk b3V0LCopICAnIGdsYXR0KGksaik9JyxnbGF0dChpLGopLCAnIGJnKGksaik9 JyxiZyhpLGopDQogICAgICAgICAgICAgIHN0b3ANCiAgICAgICAgICAgZW5k aWYNCiAgICAgICAgZW5kZG8NCiAgICAgZW5kZG8NCiAgICAgd3JpdGUoc3Rk b3V0LCopICcgLSBSZWNpcHJvY2FsIGxhdHRpY2UgaXMgb2snDQoNCiAgICAg Y2FsbCBzY2FuX2ZpbGVfdG8oJ2twb2ludHMnKQ0KICAgICByZWFkKGl1bl9u bmtwLCopIG51bWsNCiAgICAgaWYobnVtay5uZS5pa251bSkgdGhlbg0KICAg ICAgICB3cml0ZShzdGRvdXQsKikgICcgU29tZXRoaW5nIHdyb25nISAnDQog ICAgICAgIHdyaXRlKHN0ZG91dCwqKSAgJyBudW1rPScsbnVtaywgJyBpa251 bT0nLGlrbnVtDQogICAgICAgIHN0b3ANCiAgICAgZW5kaWYNCiAgICAgZG8g aT0xLG51bWsNCiAgICAgICAgcmVhZChpdW5fbm5rcCwqKSB4eCgxKSwgeHgo MiksIHh4KDMpDQogICAgICAgIENBTEwgY3J5c3RfdG9fY2FydCggMSwgeHgs IGJnLCAxICkNCiAgICAgICAgaWYoYWJzKHh4KDEpLXhrKDEsaSkpLmd0LmVw czYub3IuICYNCiAgICAgICAgICAgICBhYnMoeHgoMikteGsoMixpKSkuZ3Qu ZXBzNi5vci4gJg0KICAgICAgICAgICAgIGFicyh4eCgzKS14aygzLGkpKS5n dC5lcHM2KSB0aGVuDQogICAgICAgICAgIHdyaXRlKHN0ZG91dCwqKSAgJyBT b21ldGhpbmcgd3JvbmchICcNCiAgICAgICAgICAgd3JpdGUoc3Rkb3V0LCop ICcgay1wb2ludCAnLGksJyBpcyB3cm9uZycNCiAgICAgICAgICAgd3JpdGUo c3Rkb3V0LCopIHh4KDEpLCB4eCgyKSwgeHgoMykgDQogICAgICAgICAgIHdy aXRlKHN0ZG91dCwqKSB4aygxLGkpLCB4aygyLGkpLCB4aygzLGkpDQogICAg ICAgICAgIHN0b3ANCiAgICAgICAgZW5kaWYNCiAgICAgZW5kZG8NCiAgICAg d3JpdGUoc3Rkb3V0LCopICcgLSBLLXBvaW50cyBhcmUgb2snDQoNCiAgZW5k aWYgISBpb25vZGUNCg0KICAhIEJyb2FkY2FzdA0KICBjYWxsIG1wX2JjYXN0 KHJsYXR0LGlvbm9kZV9pZCkNCiAgY2FsbCBtcF9iY2FzdChnbGF0dCxpb25v ZGVfaWQpDQogIA0KICBpZiAoaW9ub2RlKSB0aGVuICAgISByZWFkIGZyb20g aW9ub2RlIG9ubHkNCiAgICAgY2FsbCBzY2FuX2ZpbGVfdG8oJ3Byb2plY3Rp b25zJykNCiAgICAgcmVhZChpdW5fbm5rcCwqKSBuX3dhbm5pZXINCiAgZW5k aWYNCg0KICAhIEJyb2FkY2FzdA0KICBjYWxsIG1wX2JjYXN0KG5fd2Fubmll cixpb25vZGVfaWQpDQoNCiAgYWxsb2NhdGUoIGNlbnRlcl93KDMsbl93YW5u aWVyKSwgYWxwaGFfdyhuX3dhbm5pZXIpLCBnZihucHd4LG5fd2Fubmllciks ICYNCiAgICAgICBsX3cobl93YW5uaWVyKSwgbXJfdyhuX3dhbm5pZXIpLCBy X3cobl93YW5uaWVyKSwgJg0KICAgICAgIHpheGlzKDMsbl93YW5uaWVyKSwg eGF4aXMoMyxuX3dhbm5pZXIpLCBjc3BoKDE2LG5fd2FubmllcikgKQ0KDQog IHdyaXRlKHN0ZG91dCwnKCIgIC0gTnVtYmVyIG9mIHdhbm5pZXIgZnVuY3Rp b25zIGlzIG9rICgiLGkzLCIpIiknKSBuX3dhbm5pZXIgDQoNCiAgaWYgKGlv bm9kZSkgdGhlbiAgICEgcmVhZCBmcm9tIGlvbm9kZSBvbmx5DQogICAgIGRv IGl3PTEsbl93YW5uaWVyDQogICAgICAgIHJlYWQoaXVuX25ua3AsKikgKGNl bnRlcl93KGksaXcpLCBpPTEsMyksIGxfdyhpdyksIG1yX3coaXcpLCByX3co aXcpDQogICAgICAgIHJlYWQoaXVuX25ua3AsKikgKHpheGlzKGksaXcpLGk9 MSwzKSwoeGF4aXMoaSxpdyksaT0xLDMpLGFscGhhX3coaXcpDQogICAgICAg IHhub3JtID0gc3FydCh4YXhpcygxLGl3KSp4YXhpcygxLGl3KSArIHhheGlz KDIsaXcpKnhheGlzKDIsaXcpICsgJg0KICAgICAgICAgICAgIHhheGlzKDMs aXcpKnhheGlzKDMsaXcpKQ0KICAgICAgICBpZiAoeG5vcm0gPCBlcHM2KSBj YWxsIGVycm9yZSAoJ3JlYWRfbm5rcCcsJyB8eGF4aXN8IDwgZXBzICcsMSkN CiAgICAgICAgem5vcm0gPSBzcXJ0KHpheGlzKDEsaXcpKnpheGlzKDEsaXcp ICsgemF4aXMoMixpdykqemF4aXMoMixpdykgKyAmDQogICAgICAgICAgICAg emF4aXMoMyxpdykqemF4aXMoMyxpdykpDQogICAgICAgIGlmICh6bm9ybSA8 IGVwczYpIGNhbGwgZXJyb3JlICgncmVhZF9ubmtwJywnIHx6YXhpc3wgPCBl cHMgJywxKQ0KICAgICAgICBjb3Nlbm8gPSAoeGF4aXMoMSxpdykqemF4aXMo MSxpdykgKyB4YXhpcygyLGl3KSp6YXhpcygyLGl3KSArICYNCiAgICAgICAg ICAgICB4YXhpcygzLGl3KSp6YXhpcygzLGl3KSkveG5vcm0vem5vcm0NCiAg ICAgICAgaWYgKGFicyhjb3Nlbm8pID4gZXBzNikgJg0KICAgICAgICAgICAg IGNhbGwgZXJyb3JlKCdyZWFkX25ua3AnLCcgeGF4aXMgYW5kIHpheGlzIGFy ZSBub3Qgb3J0aG9nb25hbCAhJywxKQ0KICAgICAgICBpZiAoYWxwaGFfdyhp dykgPCBlcHM2KSAmDQogICAgICAgICAgICAgY2FsbCBlcnJvcmUoJ3JlYWRf bm5rcCcsJyB6b25hIHZhbHVlIG11c3QgYmUgcG9zaXRpdmUnLCAxKQ0KICAg ICAgICAhIGNvbnZlcnQgd2FubmllciBjZW50ZXIgaW4gY2FydGVzaWFuIGNv b3JkaW5hdGVzIChpbiB1bml0IG9mIGFsYXQpDQogICAgICAgIENBTEwgY3J5 c3RfdG9fY2FydCggMSwgY2VudGVyX3coOixpdyksIGF0LCAxICkNCiAgICAg ZW5kZG8NCiAgZW5kaWYNCg0KICB3cml0ZShzdGRvdXQsKikgJyAtIEFsbCBn dWlkaW5nIGZ1bmN0aW9ucyBhcmUgZ2l2ZW4gJw0KDQogICEgQnJvYWRjYXN0 DQogIGNhbGwgbXBfYmNhc3QoY2VudGVyX3csaW9ub2RlX2lkKQ0KICBjYWxs IG1wX2JjYXN0KGxfdyxpb25vZGVfaWQpDQogIGNhbGwgbXBfYmNhc3QobXJf dyxpb25vZGVfaWQpDQogIGNhbGwgbXBfYmNhc3Qocl93LGlvbm9kZV9pZCkN CiAgY2FsbCBtcF9iY2FzdCh6YXhpcyxpb25vZGVfaWQpDQogIGNhbGwgbXBf YmNhc3QoeGF4aXMsaW9ub2RlX2lkKQ0KICBjYWxsIG1wX2JjYXN0KGFscGhh X3csaW9ub2RlX2lkKQ0KDQogICENCiAgd3JpdGUoc3Rkb3V0LCopDQogIHdy aXRlKHN0ZG91dCwqKSAnUHJvamVjdGlvbnM6Jw0KICBkbyBpdz0xLG5fd2Fu bmllcg0KICAgICB3cml0ZShzdGRvdXQsJygzZjEyLjYsM2kzLGYxMi42KScp ICYNCiAgICAgICAgICBjZW50ZXJfdygxOjMsaXcpLGxfdyhpdyksbXJfdyhp dykscl93KGl3KSxhbHBoYV93KGl3KQ0KICBlbmRkbw0KDQogIGlmIChpb25v ZGUpIHRoZW4gICAhIHJlYWQgZnJvbSBpb25vZGUgb25seQ0KICAgICBjYWxs IHNjYW5fZmlsZV90bygnbm5rcHRzJykNCiAgICAgcmVhZCAoaXVuX25ua3As Kikgbm5iDQogIGVuZGlmDQoNCiAgISBCcm9hZGNhc3QNCiAgY2FsbCBtcF9i Y2FzdChubmIsaW9ub2RlX2lkKQ0KICAhDQogIG5uYnggPSBtYXggKG5uYngs IG5uYiApDQogICENCiAgYWxsb2NhdGUgKCBrcGIoaWtudW0sbm5ieCksIGdf a3BiKDMsaWtudW0sbm5ieCksaWdfKGlrbnVtLG5uYngpICkNCg0KICAhICBy ZWFkIGRhdGEgYWJvdXQgbmVpZ2hib3Vycw0KICB3cml0ZShzdGRvdXQsKikN CiAgd3JpdGUoc3Rkb3V0LCopICcgUmVhZGluZyBkYXRhIGFib3V0IGstcG9p bnQgbmVpZ2hib3VycyAnDQogIHdyaXRlKHN0ZG91dCwqKQ0KICANCiAgaWYg KGlvbm9kZSkgdGhlbg0KICAgICBkbyBpaz0xLCBpa251bQ0KICAgICAgICBk byBpYiA9IDEsIG5uYg0KICAgICAgICAgICByZWFkKGl1bl9ubmtwLCopIGlk dW0sIGtwYihpayxpYiksIChnX2twYihpcG9sLGlrLGliKSwgaXBvbCA9MSwz KQ0KICAgICAgICBlbmRkbw0KICAgICBlbmRkbw0KICBlbmRpZg0KDQogICEg QnJvYWRjYXN0DQogIGNhbGwgbXBfYmNhc3Qoa3BiLGlvbm9kZV9pZCkNCiAg Y2FsbCBtcF9iY2FzdChnX2twYixpb25vZGVfaWQpDQoNCiAgZG8gaWs9MSwg aWtudW0NCiAgICAgZG8gaWIgPSAxLCBubmINCiAgICAgICAgZ18oOikgPSBS RUFMKCBnX2twYig6LGlrLGliKSApDQogICAgICAgIGNhbGwgdHJudmVjdCAo Z18sIGF0LCBiZywgMSkNCiAgICAgICAgZ2dfID0gZ18oMSkqZ18oMSkgKyBn XygyKSpnXygyKSArIGdfKDMpKmdfKDMpDQogICAgICAgIGlnXyhpayxpYikg PSAwDQogICAgICAgIGlnID0gMQ0KICAgICAgICBkbyB3aGlsZSAgKGdnKGln KSA8PSBnZ18gKyBlcHM2KSANCiAgICAgICAgICAgaWYgKCAoYWJzKGcoMSxp ZyktZ18oMSkpIDwgZXBzNikgLmFuZC4gICYNCiAgICAgICAgICAgICAgICAo YWJzKGcoMixpZyktZ18oMikpIDwgZXBzNikgLmFuZC4gICYNCiAgICAgICAg ICAgICAgICAoYWJzKGcoMyxpZyktZ18oMykpIDwgZXBzNikgICkgaWdfKGlr LGliKSA9IGlnDQogICAgICAgICAgIGlnPSBpZyArMQ0KICAgICAgICBlbmQg ZG8NCiAgICAgZW5kIGRvDQogIGVuZCBkbw0KICB3cml0ZShzdGRvdXQsKikg JyBBbGwgbmVpZ2hib3VycyBhcmUgZm91bmQgJw0KICB3cml0ZShzdGRvdXQs KikNCg0KICBhbGxvY2F0ZSggZXhjbHVkZWRfYmFuZChuYm5kKSApDQoNCiAg aWYgKGlvbm9kZSkgdGhlbiAgICAgISByZWFkIGZyb20gaW9ub2RlIG9ubHkN CiAgICAgY2FsbCBzY2FuX2ZpbGVfdG8oJ2V4Y2x1ZGVfYmFuZHMnKQ0KICAg ICByZWFkIChpdW5fbm5rcCwqKSBuZXhiYW5kDQogICAgIGV4Y2x1ZGVkX2Jh bmQoMTpuYm5kKT0uZmFsc2UuDQogICAgIGRvIGk9MSxuZXhiYW5kDQogICAg ICAgIHJlYWQoaXVuX25ua3AsKikgaW5kZXhiDQogICAgICAgIGlmIChpbmRl eGI8MSAub3IuIGluZGV4Yj5uYm5kKSAmDQogICAgICAgICAgICAgY2FsbCBl cnJvcmUoJ3JlYWRfbm5rcCcsJyB3cm9uZyBleGNsdWRlZCBiYW5kIGluZGV4 ICcsIDEpDQogICAgICAgIGV4Y2x1ZGVkX2JhbmQoaW5kZXhiKT0udHJ1ZS4N CiAgICAgZW5kZG8NCiAgZW5kaWYNCg0KICAhIEJyb2FkY2FzdA0KICBjYWxs IG1wX2JjYXN0KG5leGJhbmQsaW9ub2RlX2lkKQ0KICBjYWxsIG1wX2JjYXN0 KGV4Y2x1ZGVkX2JhbmQsaW9ub2RlX2lkKQ0KDQogIGlmIChpb25vZGUpIGNs b3NlIChpdW5fbm5rcCkgICAhIGlvbm9kZSBvbmx5DQoNCiAgcmV0dXJuDQpl bmQgc3Vicm91dGluZSByZWFkX25ua3ANCiENCiEtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQ0Kc3Vicm91dGluZSBzY2FuX2ZpbGVfdG8gKGtleXdvcmQp DQogICAhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICENCiAgIHVz ZSB3YW5uaWVyLCBvbmx5IDppdW5fbm5rcA0KICAgVVNFIGlvX2dsb2JhbCwg IE9OTFkgOiBzdGRvdXQNCiAgIGltcGxpY2l0IG5vbmUNCiAgIGNoYXJhY3Rl cihsZW49KikgOjoga2V5d29yZA0KICAgY2hhcmFjdGVyKGxlbj04MCkgOjog bGluZTEsIGxpbmUyDQohDQohIGJ5IHVuY29tbWVudGluZyB0aGUgZm9sbG93 aW5nIGxpbmUgdGhlIGZpbGUgc2NhbiByZXN0YXJ0cyBldmVyeSB0aW1lIA0K ISBmcm9tIHRoZSBiZWdpbm5pbmcgdGh1cyBtYWtpbmcgdGhlIHJlYWRpbmcg aW5kZXBlbmRlbnQgb24gdGhlIG9yZGVyIA0KISBvZiBkYXRhLWJsb2Nrcw0K ISAgIHJld2luZCAoaXVuX25ua3ApDQohDQoxMCBjb250aW51ZQ0KICAgcmVh ZChpdW5fbm5rcCwqLGVuZD0yMCkgbGluZTEsIGxpbmUyDQogICBpZihsaW5l MS5uZS4nYmVnaW4nKSAgZ290byAxMA0KICAgaWYobGluZTIubmUua2V5d29y ZCkgZ290byAxMA0KICAgcmV0dXJuDQoyMCB3cml0ZSAoc3Rkb3V0LCopIGtl eXdvcmQsIiBkYXRhLWJsb2NrIG1pc3NpbmcgIg0KICAgc3RvcA0KZW5kIHN1 YnJvdXRpbmUgc2Nhbl9maWxlX3RvDQohDQohLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCnN1YnJvdXRpbmUgY29tcHV0ZV9tbW4NCiAgICEtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgIQ0KICAgVVNFIGlvX2dsb2JhbCwg IE9OTFkgOiBzdGRvdXQsIGlvbm9kZQ0KICAgdXNlIGtpbmRzLCAgICAgICAg ICAgb25seTogRFANCiAgIHVzZSB3dmZjdCwgICAgICAgICAgIG9ubHkgOiBu Ym5kLCBucHcsIG5wd3gsIGlnaywgZzJraW4NCiAgIHVzZSB3YXZlZnVuY3Rp b25zX21vZHVsZSwgb25seSA6IGV2YywgcHNpYw0KICAgdXNlIGdzbW9vdGgs ICAgICAgICAgb25seTogbmxzLCBucnh4cywgbnIxcywgbnIycywgbnIzcywg bnJ4MXMsIG5yeDJzLCBucngzcw0KICAgdXNlIGtsaXN0LCAgICAgICAgICAg b25seSA6IG5rc3RvdCwgeGsNCiAgIHVzZSBpb19maWxlcywgICAgICAgIG9u bHkgOiBud29yZHdmYywgaXVud2ZjDQogICB1c2UgaW9fZmlsZXMsICAgICAg ICBvbmx5IDogZmluZF9mcmVlX3VuaXQNCiAgIHVzZSBndmVjdCwgICAgICAg ICAgIG9ubHkgOiBnLCBuZ20sIGVjdXR3ZmMNCiAgIHVzZSBjZWxsX2Jhc2Us ICAgICAgIG9ubHkgOiB0cGliYTIsIG9tZWdhLCBhbGF0LCB0cGliYSwgYXQs IGJnDQogICBVU0UgaW9uc19iYXNlLCAgICAgICBvbmx5IDogbmF0LCBudHlw ID0+IG5zcCwgaXR5cCwgdGF1DQogICB1c2UgY29uc3RhbnRzLCAgICAgICBv bmx5IDogdHBpDQogICB1c2UgdXNwcCwgICAgICAgICAgICBvbmx5IDogbmti LCB2a2INCiAgIFVTRSB1c3BwX3BhcmFtLCAgICAgIE9OTFkgOiBuaCwgdHZh bnAsIGxtYXhxDQogICB1c2UgYmVjbW9kLCAgICAgICAgICBvbmx5IDogYmVj cA0KICAgdXNlIHdhbm5pZXINCg0KICAgaW1wbGljaXQgbm9uZQ0KDQogICBp bnRlZ2VyIDo6IG1tbl90b3QsIGlrLCBpa3AsIGlwb2wsIGliLCBucHdxLCBp LCBtLCBuDQogICBpbnRlZ2VyIDo6IGlrYiwgamtiLCBpaCwgamgsIG5hLCBu dCwgaWprYjAsIGluZCwgbmJ0DQogICBpbnRlZ2VyIDo6IGlrZXZjLCBpa3Bl dmNxDQogICBjb21wbGV4KERQKSwgYWxsb2NhdGFibGUgOjogcGhhc2UoOiks IGF1eCg6KSwgZXZjcSg6LDopLCBiZWNwMig6LDopLCBNa2IoOiw6KQ0KICAg Y29tcGxleChEUCksIGFsbG9jYXRhYmxlIDo6IHFiKDosOiw6LDopLCBxZ20o OikNCiAgIHJlYWwoRFApLCBhbGxvY2F0YWJsZSAgICA6OiBxZyg6KSwgeWxt KDosOiksIGR4ayg6LDopDQogICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSAgICAg OjogaWdrcSg6KQ0KICAgY29tcGxleChEUCkgICAgICAgICAgICAgIDo6IG1t biwgWkRPVEMsIHBoYXNlMQ0KICAgcmVhbChEUCkgICAgICAgICAgICAgICAg IDo6IGFhLCBhcmcsIGdfKDMpDQogICBjaGFyYWN0ZXIgKGxlbj05KSAgICAg ICAgOjogY2RhdGUsY3RpbWUNCiAgIGNoYXJhY3RlciAobGVuPTYwKSAgICAg ICA6OiBoZWFkZXINCiAgIGxvZ2ljYWwgICAgICAgICAgICAgICAgICA6OiBh bnlfdXNwcA0KICAgaW50ZWdlciAgICAgICAgICAgICAgICAgIDo6IG5uLGlu bg0KICAgbG9naWNhbCAgICAgICAgICAgICAgICAgIDo6IG5uX2ZvdW5kDQoN CiAgIGFsbG9jYXRlKCBwaGFzZShucnh4cyksIGF1eChucHd4KSwgZXZjcShu cHd4LG5ibmQpLCBpZ2txKG5wd3gpICkNCg0KICAgaWYgKHdhbl9tb2RlLmVx LidsaWJyYXJ5JykgYWxsb2NhdGUobV9tYXQobnVtX2JhbmRzLG51bV9iYW5k cyxubmIsaWtudW0pKQ0KICAgDQogICBpZiAod2FuX21vZGUuZXEuJ3N0YW5k YWxvbmUnKSB0aGVuDQogICAgICBpdW5fbW1uID0gZmluZF9mcmVlX3VuaXQo KQ0KICAgICAgaWYgKGlvbm9kZSkgb3BlbiAodW5pdD1pdW5fbW1uLCBmaWxl PVRSSU0oc2VlZG5hbWUpLy8iLm1tbiIsZm9ybT0nZm9ybWF0dGVkJykNCiAg IGVuZGlmDQoNCiAgIG1tbl90b3QgPSAwDQogICBkbyBpaz0xLGlrbnVtDQog ICAgICBtbW5fdG90ID0gbW1uX3RvdCArIG5uYiAqIG5ibmQgKiBuYm5kDQog ICBlbmQgZG8NCiAgICENCiAgICEgICBVU1BQDQogICAhDQogICBhbnlfdXNw cCA9IEFOWSh0dmFucCgxOm50eXApKQ0KICAgIQ0KICAgaWYoYW55X3VzcHAp IHRoZW4NCiAgICAgIENBTEwgaW5pdF91c18xDQogICAgICBhbGxvY2F0ZSAo IGJlY3AobmtiLG5ibmQpLGJlY3AyKG5rYixuYm5kKSkNCiAgIGVuZCBpZg0K ICAgIQ0KICAgISAgICAgcWIgaXMgIEZUIG9mIFEocikgDQogICAhDQohICAg bmJ0ID0gMA0KISAgIGRvIGlrPTEsIGlrbnVtDQohICAgICAgbmJ0ID0gbmJ0 ICsgbm5iDQohICAgZW5kZG8NCiAgIG5idCA9IG5uYiAqIGlrbnVtDQogICAh DQogICBhbGxvY2F0ZSggcWcobmJ0KSApDQogICBhbGxvY2F0ZSAoZHhrKDMs bmJ0KSkNCiAgICENCiAgIGluZCA9IDANCiAgIGRvIGlrPTEsaWtudW0NCiAg ICAgIGRvIGliPTEsbm5iDQogICAgICAgICBpbmQgPSBpbmQgKyAxDQogICAg ICAgICBpa3AgPSBrcGIoaWssaWIpIA0KICAgICAgICAgIQ0KICAgICAgICAg Z18oOikgPSBSRUFMKCBnX2twYig6LGlrLGliKSApDQogICAgICAgICBjYWxs IHRybnZlY3QgKGdfLCBhdCwgYmcsIDEpDQogICAgICAgICBkeGsoOixpbmQp ID0geGsoOixpa3ApICtnXyg6KSAtIHhrKDosaWspIA0KICAgICAgICAgcWco aW5kKSA9IGR4aygxLGluZCkqZHhrKDEsaW5kKStkeGsoMixpbmQpKmR4aygy LGluZCkrZHhrKDMsaW5kKSpkeGsoMyxpbmQpDQogICAgICBlbmRkbw0KISAg ICAgIHdyaXRlIChzdGRvdXQsJyhpMywxMmY4LjQpJykgIGlrLCBxZygoaWst MSkqbm5iKzE6aWsqbm5iKQ0KICAgZW5kZG8gDQogICAhDQogICAhICBVU1BQ DQogICAhDQogICBpZihhbnlfdXNwcCkgdGhlbg0KDQogICAgICBhbGxvY2F0 ZSggeWxtKG5idCxsbWF4cSpsbWF4cSksIHFnbShuYnQpICkNCiAgICAgIGFs bG9jYXRlKCBxYiAobmtiLCBua2IsIG50eXAsIG5idCkgKQ0KICAgICAgIQ0K ICAgICAgY2FsbCB5bG1yMiAobG1heHEqbG1heHEsIG5idCwgZHhrLCBxZywg eWxtKQ0KICAgICAgcWcoOikgPSBzcXJ0KHFnKDopKSAqIHRwaWJhDQogICAg ICAhDQogICAgICBkbyBudCA9IDEsIG50eXANCiAgICAgICAgIGlmICh0dmFu cCAobnQpICkgdGhlbiANCiAgICAgICAgICAgIGRvIGloID0gMSwgbmggKG50 KQ0KICAgICAgICAgICAgICAgZG8gamggPSAxLCBuaCAobnQpDQogICAgICAg ICAgICAgICAgICBDQUxMIHF2YW4yIChuYnQsIGloLCBqaCwgbnQsIHFnLCBx Z20sIHlsbSkNCiAgICAgICAgICAgICAgICAgIHFiIChpaCwgamgsIG50LCAx Om5idCkgPSBvbWVnYSAqIHFnbSgxOm5idCkNCiAgICAgICAgICAgICAgIGVu ZGRvIA0KICAgICAgICAgICAgZW5kZG8gDQogICAgICAgICBlbmRpZiANCiAg ICAgIGVuZGRvIA0KICAgICAgIQ0KICAgICAgZGVhbGxvY2F0ZSAocWcsIHFn bSwgeWxtICkNCiAgICAgICENCiAgIGVuZCBpZg0KICAgd3JpdGUgKHN0ZG91 dCwnKC9hKScpICJNTU4iDQoNCiAgIGlmICh3YW5fbW9kZS5lcS4nc3RhbmRh bG9uZScpIHRoZW4NCiAgICAgIENBTEwgZGF0ZV9hbmRfdGltKCBjZGF0ZSwg Y3RpbWUgKQ0KICAgICAgaGVhZGVyPSdDcmVhdGVkIG9uICcvL2NkYXRlLy8n IGF0ICcvL2N0aW1lDQogICAgICBpZiAoaW9ub2RlKSB0aGVuDQogICAgICAg ICB3cml0ZSAoaXVuX21tbiwqKSBoZWFkZXINCiAgICAgICAgIHdyaXRlIChp dW5fbW1uLCopIG5ibmQtbmV4YmFuZCwgaWtudW0sIG5uYg0KICAgICAgZW5k aWYNCiAgIGVuZGlmDQogICAhDQogICBhbGxvY2F0ZSggTWtiKG5ibmQsbmJu ZCkgKQ0KICAgIQ0KICAgd3JpdGUoc3Rkb3V0LCcoYSxpOCknKSAnIGlrbnVt ID0gJyxpa251bQ0KDQogICBpbmQgPSAwDQogICBkbyBpaz0xLGlrbnVtDQog ICAgICB3cml0ZSAoc3Rkb3V0LCcoaTgpJykgaWsNCiAgICAgIGlrZXZjID0g aWsgKyBpa3N0YXJ0IC0gMSANCiAgICAgIGNhbGwgZGF2Y2lvIChldmMsIG53 b3Jkd2ZjLCBpdW53ZmMsIGlrZXZjLCAtMSApDQogICAgICBjYWxsIGdrX3Nv cnQgKHhrKDEsaWspLCBuZ20sIGcsIGVjdXR3ZmMgLyB0cGliYTIsIG5wdywg aWdrLCBnMmtpbikNCiAgICAgICENCiAgICAgICEgIFVTUFANCiAgICAgICEN CiAgICAgIGlmKGFueV91c3BwKSB0aGVuDQogICAgICAgICBjYWxsIGluaXRf dXNfMiAobnB3LCBpZ2ssIHhrKDEsaWspLCB2a2IpDQogICAgICAgICAhIGJl bG93IHdlIGNvbXB1dGUgdGhlIHByb2R1Y3Qgb2YgYmV0YSBmdW5jdGlvbnMg d2l0aCB8cHNpPiANCiAgICAgICAgIGNhbGwgY2NhbGJlYyAobmtiLCBucHd4 LCBucHcsIG5ibmQsIGJlY3AsIHZrYiwgZXZjKQ0KICAgICAgZW5kIGlmDQog ICAgICAhDQogICAgICAhDQogICAgICAhZG8gaWI9MSxubmIoaWspDQogICAg ICBkbyBpYj0xLG5uYg0KICAgICAgICAgaW5kID0gaW5kICsgMQ0KICAgICAg ICAgaWtwID0ga3BiKGlrLGliKQ0KISByZWFkIHdmYyBhdCBrK2INCiAgICAg ICAgIGlrcGV2Y3EgPSBpa3AgKyBpa3N0YXJ0IC0gMQ0KICAgICAgICAgY2Fs bCBkYXZjaW8gKGV2Y3EsIG53b3Jkd2ZjLCBpdW53ZmMsIGlrcGV2Y3EsIC0x ICkNCiAgICAgICAgIGNhbGwgZ2tfc29ydCAoeGsoMSxpa3ApLCBuZ20sIGcs IGVjdXR3ZmMgLyB0cGliYTIsIG5wd3EsIGlna3EsIGcya2luKQ0KISBjb21w dXRlIHRoZSBwaGFzZQ0KICAgICAgICAgcGhhc2UoOikgPSAoMC5kMCwwLmQw KQ0KICAgICAgICAgaWYgKCBpZ18oaWssaWIpPjApIHBoYXNlKCBubHMoaWdf KGlrLGliKSkgKSA9ICgxLmQwLDAuZDApDQogICAgICAgICBjYWxsIGNmdDNz IChwaGFzZSwgbnIxcywgbnIycywgbnIzcywgbnJ4MXMsIG5yeDJzLCBucngz cywgKzIpDQogICAgICAgICAhDQogICAgICAgICAhICBVU1BQDQogICAgICAg ICAhDQogICAgICAgICBpZihhbnlfdXNwcCkgdGhlbg0KICAgICAgICAgICAg Y2FsbCBpbml0X3VzXzIgKG5wd3EsIGlna3EsIHhrKDEsaWtwKSwgdmtiKQ0K ICAgICAgICAgICAgISBiZWxvdyB3ZSBjb21wdXRlIHRoZSBwcm9kdWN0IG9m IGJldGEgZnVuY3Rpb25zIHdpdGggfHBzaT4gDQogICAgICAgICAgICBjYWxs IGNjYWxiZWMgKG5rYiwgbnB3eCwgbnB3cSwgbmJuZCwgYmVjcDIsIHZrYiwg ZXZjcSkNCiAgICAgICAgIGVuZCBpZg0KICAgICAgICAgIQ0KICAgICAgICAg IQ0KICAgICAgICAgTWtiKDosOikgPSAoMC4wZDAsMC4wZDApIA0KICAgICAg ICAgIQ0KICAgICAgICAgaWYgKGFueV91c3BwKSB0aGVuDQogICAgICAgICAg ICBpamtiMCA9IDANCiAgICAgICAgICAgIGRvIG50ID0gMSwgbnR5cA0KICAg ICAgICAgICAgICAgaWYgKCB0dmFucChudCkgKSB0aGVuDQogICAgICAgICAg ICAgICAgICBkbyBuYSA9IDEsIG5hdA0KICAgICAgICAgICAgICAgICAgICAg IQ0KICAgICAgICAgICAgICAgICAgICAgYXJnID0gRE9UX1BST0RVQ1QoIGR4 ayg6LGluZCksIHRhdSg6LG5hKSApICogdHBpIA0KICAgICAgICAgICAgICAg ICAgICAgcGhhc2UxID0gQ01QTFggKCBDT1MoYXJnKSwgLVNJTihhcmcpICkN CiAgICAgICAgICAgICAgICAgICAgICENCiAgICAgICAgICAgICAgICAgICAg IGlmICggaXR5cChuYSkgPT0gbnQgKSB0aGVuDQogICAgICAgICAgICAgICAg ICAgICAgICBkbyBqaCA9IDEsIG5oKG50KQ0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgamtiID0gaWprYjAgKyBqaA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgZG8gaWggPSAxLCBuaChudCkNCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGlrYiA9IGlqa2IwICsgaWgNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICENCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRvIG0gPSAxLG5ibmQNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRvIG4gPSAxLG5ibmQNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE1rYihtLG4pID0gTWtiKG0sbikgKyAmDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGhhc2UxICogcWIoaWgsamgsbnQs aW5kKSAqICYNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDT05KRyggYmVjcChpa2IsbSkgKSAqIGJlY3AyKGprYixuKSANCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVuZGRvDQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbmRkbw0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgZW5kZG8gIWloDQogICAgICAgICAgICAgICAgICAgICAgICBlbmRk byAhamgNCiAgICAgICAgICAgICAgICAgICAgICAgIGlqa2IwID0gaWprYjAg KyBuaChudCkNCiAgICAgICAgICAgICAgICAgICAgIGVuZGlmICAhaXR5cA0K ICAgICAgICAgICAgICAgICAgZW5kZG8gICFuYXQgDQogICAgICAgICAgICAg ICBlbHNlICAhdHZhbnANCiAgICAgICAgICAgICAgICAgIGRvIG5hID0gMSwg bmF0DQogICAgICAgICAgICAgICAgICAgICBpZiAoIGl0eXAobmEpID09IG50 ICkgaWprYjAgPSBpamtiMCArIG5oKG50KQ0KICAgICAgICAgICAgICAgICAg ZW5kZG8NCiAgICAgICAgICAgICAgIGVuZGlmICF0dmFucA0KICAgICAgICAg ICAgZW5kZG8gIW50eXANCiAgICAgICAgIGVuZCBpZiAhIGFueV91c3BwDQog ICAgICAgICAhDQogICAgICAgICAhDQohIGxvb3BzIG9uIGJhbmRzDQogICAg ICAgICAhDQogICAgICAgICBpZiAod2FuX21vZGUuZXEuJ3N0YW5kYWxvbmUn KSB0aGVuDQogICAgICAgICAgICBpZiAoaW9ub2RlKSB3cml0ZSAoaXVuX21t biwnKDdpNSknKSBpaywgaWtwLCAoZ19rcGIoaXBvbCxpayxpYiksIGlwb2w9 MSwzKQ0KICAgICAgICAgZW5kaWYNCiAgICAgICAgICENCiAgICAgICAgIGRv IG09MSxuYm5kDQogICAgICAgICAgICBwc2ljKDopID0gKDAuZDAsIDAuZDAp DQogICAgICAgICAgICBwc2ljKG5scyAoaWdrICgxOm5wdykgKSApID0gZXZj ICgxOm5wdywgbSkNCiAgICAgICAgICAgIGNhbGwgY2Z0M3MgKHBzaWMsIG5y MXMsIG5yMnMsIG5yM3MsIG5yeDFzLCBucngycywgbnJ4M3MsICsyKQ0KICAg ICAgICAgICAgcHNpYygxOm5yeHhzKSA9IHBzaWMoMTpucnh4cykgKiBwaGFz ZSgxOm5yeHhzKQ0KICAgICAgICAgICAgY2FsbCBjZnQzcyAocHNpYywgbnIx cywgbnIycywgbnIzcywgbnJ4MXMsIG5yeDJzLCBucngzcywgLTIpDQogICAg ICAgICAgICBhdXgoMTpucHdxKSA9IHBzaWMobmxzIChpZ2txKDE6bnB3cSkg KSApDQogICAgICAgICAgICBhYSA9IDAuZDANCiAgICAgICAgICAgICENCiAg ICAgICAgICAgICENCiAgICAgICAgICAgIGRvIG49MSxuYm5kICAgDQogICAg ICAgICAgICAgICENCiAgICAgICAgICAgICAgbW1uID0gWkRPVEMgKG5wd3Es IGF1eCwxLGV2Y3EoMSxuKSwxKQ0KICAgICAgICAgICAgICAhDQogICAgICAg ICAgICAgICEgIE1rYihtLG4pID0gTWtiKG0sbikgKyBcc3VtX3tpakl9IHFi X3tpan1eSSAqIGVeLWkoYip0YXVfSSkNCiAgICAgICAgICAgICAgISAgICAg ICAgICAgICA8cHNpX20sazF8IGJldGFfaSxrMSA+IDwgYmV0YV9qLGsyIHwg cHNpX24sazIgPiANCiAgICAgICAgICAgICAgIQ0KICAgICAgICAgICAgICBj YWxsIHJlZHVjZSgyLG1tbikNCiAgICAgICAgICAgICAgTWtiKG0sbikgPSBt bW4gKyBNa2IobSxuKQ0KICAgICAgICAgICAgICAhDQogICAgICAgICAgICAg IGFhID0gYWEgKyBhYnMobW1uKSoqMg0KICAgICAgICAgICAgICAhDQogICAg ICAgICAgICBlbmQgZG8gISBuDQogICAgICAgICBlbmQgZG8gICAhIG0NCg0K DQogICAgICAgICBkbyBuPTEsbmJuZA0KICAgICAgICAgICAgaWYgKGV4Y2x1 ZGVkX2JhbmQobikpIGN5Y2xlDQogICAgICAgICAgICBkbyBtPTEsbmJuZA0K ICAgICAgICAgICAgICAgaWYgKGV4Y2x1ZGVkX2JhbmQobSkpIGN5Y2xlDQog ICAgICAgICAgICAgICBpZiAod2FuX21vZGUuZXEuJ3N0YW5kYWxvbmUnKSB0 aGVuDQogICAgICAgICAgICAgICAgICBpZiAoaW9ub2RlKSB3cml0ZSAoaXVu X21tbiwnKDJmMTguMTIpJykgTWtiKG0sbikNCiAgICAgICAgICAgICAgIGVs c2VpZiAod2FuX21vZGUuZXEuJ2xpYnJhcnknKSB0aGVuDQogICAgICAgICAg ICAgICAgICBtX21hdChtLG4saWIsaWspPU1rYihtLG4pDQogICAgICAgICAg ICAgICBlbHNlDQogICAgICAgICAgICAgICAgICBjYWxsIGVycm9yZSgnY29t cHV0ZV9tbW4nLCcgdmFsdWUgb2Ygd2FuX21vZGUgbm90IHJlY29nbmlzZWQn LDEpDQogICAgICAgICAgICAgICBlbmRpZg0KICAgICAgICAgICAgZW5kZG8N CiAgICAgICAgIGVuZGRvDQogICAgICAgICAgICANCiAgICAgIGVuZCBkbyAh aWINCiAgIGVuZCBkbyAgIWlrDQoNCiAgIGlmIChpb25vZGUgLmFuZC4gd2Fu X21vZGUuZXEuJ3N0YW5kYWxvbmUnKSBjbG9zZSAoaXVuX21tbikNCiEgDQog ICBkZWFsbG9jYXRlIChNa2IsIGR4aywgcGhhc2UsIGF1eCwgZXZjcSwgaWdr cSkNCiAgIGlmKGFueV91c3BwKSBkZWFsbG9jYXRlIChiZWNwLCBiZWNwMiwg cWIpDQohDQogICB3cml0ZShzdGRvdXQsKikNCiAgIHdyaXRlKHN0ZG91dCwq KSAnIE1NTiBjYWxjdWxhdGVkJw0KDQogICByZXR1cm4NCmVuZCBzdWJyb3V0 aW5lIGNvbXB1dGVfbW1uDQohDQohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0NCnN1YnJvdXRpbmUgY29tcHV0ZV9hbW4NCiAgICEtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KICAgIQ0KICAgVVNFIGlvX2dsb2JhbCwgIE9OTFkg OiBzdGRvdXQsIGlvbm9kZQ0KICAgdXNlIGtpbmRzLCAgICAgICAgICAgb25s eSA6IERQDQogICB1c2Uga2xpc3QsICAgICAgICAgICBvbmx5IDogbmtzdG90 LCB4aw0KICAgdXNlIHd2ZmN0LCAgICAgICAgICAgb25seSA6IG5ibmQsIG5w dywgbnB3eCwgaWdrLCBnMmtpbg0KICAgdXNlIHdhdmVmdW5jdGlvbnNfbW9k dWxlLCBvbmx5IDogZXZjDQogICB1c2UgaW9fZmlsZXMsICAgICAgICBvbmx5 IDogbndvcmR3ZmMsIGl1bndmYw0KICAgdXNlIGlvX2ZpbGVzLCAgICAgICAg b25seSA6IGZpbmRfZnJlZV91bml0DQogICB1c2UgZ3ZlY3QsICAgICAgICAg ICBvbmx5IDogZywgbmdtLCBlY3V0d2ZjDQogICB1c2UgY2VsbF9iYXNlLCAg ICAgICBvbmx5IDogdHBpYmEyDQogICB1c2UgdXNwcCwgICAgICAgICAgICBv bmx5IDogbmtiLCB2a2INCiAgIHVzZSBiZWNtb2QsICAgICAgICAgIG9ubHkg OiBiZWNwDQogICB1c2Ugd2Fubmllcg0KICAgVVNFIGlvbnNfYmFzZSwgICAg ICAgb25seSA6IG5hdCwgbnR5cCA9PiBuc3AsIGl0eXAsIHRhdQ0KICAgVVNF IHVzcHBfcGFyYW0sICAgICAgT05MWSA6IHR2YW5wDQoNCiAgIGltcGxpY2l0 IG5vbmUNCg0KICAgY29tcGxleChEUCkgOjogYW1uLCBaRE9UQw0KICAgY29t cGxleChEUCksIGFsbG9jYXRhYmxlIDo6IHNnZig6LDopDQogICBpbnRlZ2Vy IDo6IGFtbl90b3QsIGlrLCBpYm5kLCBpYm5kMSwgaXcsaSwgaWtldmMsIG50 DQogICBjaGFyYWN0ZXIgKGxlbj05KSAgOjogY2RhdGUsY3RpbWUNCiAgIGNo YXJhY3RlciAobGVuPTYwKSA6OiBoZWFkZXINCiAgIGxvZ2ljYWwgICAgICAg ICAgICA6OiBhbnlfdXNwcA0KDQogICAhY2FsbCByZWFkX2dmX2RlZmluaXRp b24uLi4uLj4gICB0aGlzIGlzIGRvbmUgYXQgdGhlIGJlZ2luDQoNCiAgIGFu eV91c3BwID1BTlkgKHR2YW5wKDE6bnR5cCkpIA0KDQogICBpZiAod2FuX21v ZGUuZXEuJ2xpYnJhcnknKSBhbGxvY2F0ZShhX21hdChudW1fYmFuZHMsbl93 YW5uaWVyLGlrbnVtKSkNCg0KICAgaWYgKHdhbl9tb2RlLmVxLidzdGFuZGFs b25lJykgdGhlbg0KICAgICAgaXVuX2FtbiA9IGZpbmRfZnJlZV91bml0KCkN CiAgICAgIGlmIChpb25vZGUpIG9wZW4gKHVuaXQ9aXVuX2FtbiwgZmlsZT1U UklNKHNlZWRuYW1lKS8vIi5hbW4iLGZvcm09J2Zvcm1hdHRlZCcpDQogICBl bmRpZg0KDQogICBhbW5fdG90ID0gaWtudW0gKiBuYm5kICogbl93YW5uaWVy DQogICB3cml0ZSAoc3Rkb3V0LCopICJBTU4iDQoNCiAgIGlmICh3YW5fbW9k ZS5lcS4nc3RhbmRhbG9uZScpIHRoZW4NCiAgICAgIENBTEwgZGF0ZV9hbmRf dGltKCBjZGF0ZSwgY3RpbWUgKSANCiAgICAgIGhlYWRlcj0nQ3JlYXRlZCBv biAnLy9jZGF0ZS8vJyBhdCAnLy9jdGltZQ0KICAgICAgaWYgKGlvbm9kZSkg dGhlbg0KICAgICAgICAgd3JpdGUgKGl1bl9hbW4sKikgaGVhZGVyIA0KICAg ICAgICAgd3JpdGUgKGl1bl9hbW4sKikgbmJuZC1uZXhiYW5kLCAgaWtudW0s IG5fd2FubmllciANCiAgICAgIGVuZGlmDQogICBlbmRpZg0KICAgIQ0KICAg YWxsb2NhdGUoIHNnZihucHd4LG5fd2FubmllcikpDQogICAhDQogICBpZiAo YW55X3VzcHApIHRoZW4NCiAgICAgIGFsbG9jYXRlICggYmVjcChua2Isbl93 YW5uaWVyKSkNCiAgICAgIENBTEwgaW5pdF91c18xDQogICBlbmQgaWYNCiAg ICENCiAgIHdyaXRlKHN0ZG91dCwnKGEsaTgpJykgJyBpa251bSA9ICcsaWtu dW0NCiAgIGRvIGlrPTEsaWtudW0NCiAgICAgIHdyaXRlIChzdGRvdXQsJyhp OCknKSBpaw0KICAgICAgaWtldmMgPSBpayArIGlrc3RhcnQgLSAxDQogICAg ICBjYWxsIGRhdmNpbyAoZXZjLCBud29yZHdmYywgaXVud2ZjLCBpa2V2Yywg LTEgKQ0KICAgICAgY2FsbCBna19zb3J0ICh4aygxLGlrKSwgbmdtLCBnLCBl Y3V0d2ZjIC8gdHBpYmEyLCBucHcsIGlnaywgZzJraW4pDQogICAgICBjYWxs IGdlbmVyYXRlX2d1aWRpbmdfZnVuY3Rpb25zKGlrKSAgICEgdGhleSBhcmUg Y2FsbGVkIGdmKG5wdyxuX3dhbm5pZXIpDQogICAgICAhDQogICAgICAhICBV U1BQDQogICAgICAhDQogICAgICBpZihhbnlfdXNwcCkgdGhlbg0KICAgICAg ICAgY2FsbCBpbml0X3VzXzIgKG5wdywgaWdrLCB4ayAoMSwgaWspLCB2a2Ip DQogICAgICAgICAhIGJlbG93IHdlIGNvbXB1dGUgdGhlIHByb2R1Y3Qgb2Yg YmV0YSBmdW5jdGlvbnMgd2l0aCB0cmlhbCBmdW5jLg0KICAgICAgICAgY2Fs bCBjY2FsYmVjIChua2IsIG5wd3gsIG5wdywgbl93YW5uaWVyLCBiZWNwLCB2 a2IsIGdmKQ0KICAgICAgICAgISBhbmQgd2UgdXNlIGl0IGZvciB0aGUgcHJv ZHVjdCBTfHRyaWFsX2Z1bmM+DQogICAgICAgICBjYWxsIHNfcHNpIChucHd4 LCBucHcsIG5fd2FubmllciwgZ2YsIHNnZikgIA0KICAgICAgZWxzZQ0KICAg ICAgICAgc2dmKDosOikgPSBnZig6LDopDQogICAgICBlbmRpZg0KICAgICAg IQ0KICAgICAgZG8gaXcgPSAxLG5fd2Fubmllcg0KICAgICAgICAgaWJuZDEg PSAwIA0KICAgICAgICAgZG8gaWJuZCA9IDEsbmJuZA0KICAgICAgICAgICAg YW1uID0gWkRPVEMobnB3LGV2YygxLGlibmQpLDEsc2dmKDEsaXcpLDEpIA0K ICAgICAgICAgICAgY2FsbCByZWR1Y2UoMixhbW4pDQogICAgICAgICAgICBp ZiAoZXhjbHVkZWRfYmFuZChpYm5kKSkgY3ljbGUNCiAgICAgICAgICAgIGli bmQxPWlibmQxKzENCiAgICAgICAgICAgIGlmICh3YW5fbW9kZS5lcS4nc3Rh bmRhbG9uZScpIHRoZW4NCiAgICAgICAgICAgICAgIGlmIChpb25vZGUpIHdy aXRlKGl1bl9hbW4sJygzaTUsMmYxOC4xMiknKSBpYm5kMSwgaXcsIGlrLCBh bW4NCiAgICAgICAgICAgIGVsc2VpZiAod2FuX21vZGUuZXEuJ2xpYnJhcnkn KSB0aGVuDQogICAgICAgICAgICAgICBhX21hdChpYm5kMSxpdyxpaykgPSBh bW4NCiAgICAgICAgICAgIGVsc2UNCiAgICAgICAgICAgICAgIGNhbGwgZXJy b3JlKCdjb21wdXRlX2FtbicsJyB2YWx1ZSBvZiB3YW5fbW9kZSBub3QgcmVj b2duaXNlZCcsMSkNCiAgICAgICAgICAgIGVuZGlmDQogICAgICAgICBlbmQg ZG8NCiAgICAgIGVuZCBkbw0KICAgZW5kIGRvICAhIGstcG9pbnRzDQogICBk ZWFsbG9jYXRlIChzZ2YsY3NwaCkNCiAgIGlmKGFueV91c3BwKSBkZWFsbG9j YXRlIChiZWNwKQ0KICAgIQ0KICAgaWYgKGlvbm9kZSAuYW5kLiB3YW5fbW9k ZS5lcS4nc3RhbmRhbG9uZScpIGNsb3NlIChpdW5fYW1uKQ0KICAgDQogICB3 cml0ZShzdGRvdXQsKikNCiAgIHdyaXRlKHN0ZG91dCwqKSAnIEFNTiBjYWxj dWxhdGVkJw0KDQogICByZXR1cm4NCmVuZCBzdWJyb3V0aW5lIGNvbXB1dGVf YW1uDQohDQohDQpzdWJyb3V0aW5lIGdlbmVyYXRlX2d1aWRpbmdfZnVuY3Rp b25zKGlrKQ0KICAgIQ0KICAgVVNFIGlvX2dsb2JhbCwgIE9OTFkgOiBzdGRv dXQNCiAgIHVzZSBjb25zdGFudHMsIG9ubHkgOiBwaSwgdHBpLCBmcGksIGVw czgNCiAgIHVzZSB3dmZjdCwgb25seSA6IG5wdywgZzJraW4sIGlnaw0KICAg dXNlIGd2ZWN0LCBvbmx5IDogaWcxLCBpZzIsIGlnMywgZw0KICAgdXNlIGNl bGxfYmFzZSwgIE9OTFkgOiB0cGliYTIsIG9tZWdhLCB0cGliYQ0KICAgdXNl IHdhbm5pZXINCiAgIHVzZSBrbGlzdCwgICAgICBvbmx5IDogeGsgDQogICBV U0UgY2VsbF9iYXNlLCBPTkxZIDogYmcNCg0KICAgaW1wbGljaXQgbm9uZQ0K DQogICBpbnRlZ2VyLCBwYXJhbWV0ZXIgOjogbG1heD0zLCBsbWF4Mj0obG1h eCsxKSoqMg0KICAgaW50ZWdlciA6OiBpdywgaWcsIGlrLCBiZ3RhdSgzKSwg aXNwaCwgbCwgbWVzaF9yDQogICBpbnRlZ2VyIDo6IGxtYXhfaXcsIGxtLCBp cG9sLCBuMSwgbjIsIG4zLCBucjEsIG5yMiwgbnIzLCBpaWcNCiAgIHJlYWwo RFApIDo6IGFyZywgYW5vcm0sIGZhYywgYWxwaGFfdzIsIHl5LCBhbGZhDQog ICBjb21wbGV4KERQKSA6OiBaRE9UQywga3BoYXNlLCBscGhhc2UsIGdmZiwg bHBoDQogICByZWFsKERQKSwgYWxsb2NhdGFibGUgOjogZ2soOiw6KSwgcWco OiksIHlsbSg6LDopLCByYWRpYWwoOiw6KQ0KICAgY29tcGxleChEUCksIGFs bG9jYXRhYmxlIDo6IHNrKDopIA0KICAgIQ0KICAgYWxsb2NhdGUoIGdrKDMs bnB3KSwgcWcobnB3KSwgeWxtKG5wdyxsbWF4MiksIHNrKG5wdyksIHJhZGlh bChucHcsMDpsbWF4KSApDQogICAhDQogICBkbyBpZyA9IDEsIG5wdw0KICAg ICAgZ2sgKDEsaWcpID0geGsoMSwgaWspICsgZygxLCBpZ2soaWcpICkNCiAg ICAgIGdrICgyLGlnKSA9IHhrKDIsIGlrKSArIGcoMiwgaWdrKGlnKSApDQog ICAgICBnayAoMyxpZykgPSB4aygzLCBpaykgKyBnKDMsIGlnayhpZykgKQ0K ICAgICAgcWcoaWcpID0gZ2soMSwgaWcpKioyICsgIGdrKDIsIGlnKSoqMiAr IGdrKDMsIGlnKSoqMg0KICAgZW5kZG8NCg0KICAgY2FsbCB5bG1yMiAobG1h eDIsIG5wdywgZ2ssIHFnLCB5bG0pDQogICAhIGRlZmluZSBxZyBhcyB0aGUg bm9ybSBvZiAoaytnKSBpbiBhLnUuDQogICBxZyg6KSA9IHNxcnQocWcoOikp ICogdHBpYmENCg0KICAgZG8gaXcgPSAxLCBuX3dhbm5pZXINCiAgICAgICEN CiAgICAgIGdmKDosaXcpID0gKDAuZDAsMC5kMCkNCg0KICAgICAgY2FsbCBy YWRpYWxwYXJ0KG5wdywgcWcsIGFscGhhX3coaXcpLCByX3coaXcpLCBsbWF4 LCByYWRpYWwpIA0KDQogICAgICBkbyBsbSA9IDEsIGxtYXgyDQogICAgICAg ICBpZiAoIGFicyhjc3BoKGxtLGl3KSkgPCBlcHM4ICkgY3ljbGUNCiAgICAg ICAgIGwgPSBpbnQgKHNxcnQoIGxtLTEuZDApKQ0KICAgICAgICAgbHBoYXNl ID0gKDAuZDAsLTEuZDApKipsDQogICAgICAgICAhDQogICAgICAgICBkbyBp Zz0xLG5wdw0KICAgICAgICAgICAgZ2YoaWcsaXcpID0gZ2YoaWcsaXcpICsg Y3NwaChsbSxpdykgKiB5bG0oaWcsbG0pICogcmFkaWFsKGlnLGwpICogbHBo YXNlDQogICAgICAgICBlbmQgZG8gIWlnDQogICAgICBlbmQgZG8gISBsbQ0K ICAgICAgZG8gaWc9MSxucHcNCiAgICAgICAgIGlpZyA9IGlnayhpZykNCiAg ICAgICAgIGFyZyA9ICggZ2soMSxpZykqY2VudGVyX3coMSxpdykgKyBnaygy LGlnKSpjZW50ZXJfdygyLGl3KSArICYNCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBnaygzLGlnKSpjZW50ZXJfdygzLGl3 KSApICogdHBpDQogICAgICAgICAhIGNlbnRlcl93IGFyZSBjYXJ0ZXNpYW4g Y29vcmRpbmF0ZXMgaW4gdW5pdHMgb2YgYWxhdCANCiAgICAgICAgIHNrKGln KSA9IENNUExYKGNvcyhhcmcpLCAtc2luKGFyZykgKQ0KICAgICAgICAgZ2Yo aWcsaXcpID0gZ2YoaWcsaXcpICogc2soaWcpIA0KICAgICAgZW5kIGRvDQog ICAgICBhbm9ybSA9IFJFQUwoWkRPVEMobnB3LGdmKDEsaXcpLDEsZ2YoMSxp dyksMSkpDQogICAgICBjYWxsIHJlZHVjZSgxLGFub3JtKQ0KISAgICAgIHdy aXRlIChzdGRvdXQsKikgaWssIGl3LCBhbm9ybQ0KICAgICAgZ2YoOixpdykg PSBnZig6LGl3KSAvIGRzcXJ0KGFub3JtKQ0KICAgZW5kIGRvDQogICAhDQog ICBkZWFsbG9jYXRlICggZ2ssIHFnLCB5bG0sIHNrLCByYWRpYWwpDQogICBy ZXR1cm4NCmVuZCBzdWJyb3V0aW5lIGdlbmVyYXRlX2d1aWRpbmdfZnVuY3Rp b25zDQoNCnN1YnJvdXRpbmUgd3JpdGVfYmFuZA0KICAgVVNFIGlvX2dsb2Jh bCwgIE9OTFkgOiBzdGRvdXQsIGlvbm9kZQ0KICAgdXNlIHd2ZmN0LCBvbmx5 IDogbmJuZCwgZXQNCiAgIHVzZSBrbGlzdCwgb25seSA6IG5rc3RvdA0KICAg dXNlIGNvbnN0YW50cywgb25seTogcnl0b2V2DQogICB1c2UgaW9fZmlsZXMs IG9ubHkgOiBmaW5kX2ZyZWVfdW5pdA0KICAgdXNlIHdhbm5pZXINCg0KICAg aW1wbGljaXQgbm9uZQ0KDQogICBpbnRlZ2VyIGlrLCBpYm5kLCBpYm5kMSwg aWtldmMNCg0KICAgaWYgKHdhbl9tb2RlLmVxLidzdGFuZGFsb25lJykgdGhl bg0KICAgICAgaXVuX2JhbmQgPSBmaW5kX2ZyZWVfdW5pdCgpDQogICAgICBp ZiAoaW9ub2RlKSBvcGVuICh1bml0PWl1bl9iYW5kLCBmaWxlPVRSSU0oc2Vl ZG5hbWUpLy8iLmVpZyIsZm9ybT0nZm9ybWF0dGVkJykNCiAgIGVuZGlmDQoN CiAgIGlmICh3YW5fbW9kZS5lcS4nbGlicmFyeScpIGFsbG9jYXRlKGVpZ3Zh bChudW1fYmFuZHMsaWtudW0pKQ0KDQogICBkbyBpaz1pa3N0YXJ0LGlrc3Rv cA0KICAgICAgaWtldmMgPSBpayAtIGlrc3RhcnQgKyAxDQogICAgICBpYm5k MT0wDQogICAgICBkbyBpYm5kPTEsbmJuZA0KICAgICAgICAgaWYgKGV4Y2x1 ZGVkX2JhbmQoaWJuZCkpIGN5Y2xlDQogICAgICAgICBpYm5kMT1pYm5kMSAr IDENCiAgICAgICAgIGlmICh3YW5fbW9kZS5lcS4nc3RhbmRhbG9uZScpIHRo ZW4NCiAgICAgICAgICAgIGlmIChpb25vZGUpIHdyaXRlIChpdW5fYmFuZCwn KDJpNSxmMTguMTIpJykgaWJuZDEsIGlrZXZjLCBldChpYm5kLGlrKSpyeXRv ZXYNCiAgICAgICAgIGVsc2VpZiAod2FuX21vZGUuZXEuJ2xpYnJhcnknKSB0 aGVuDQogICAgICAgICAgICBlaWd2YWwoaWJuZDEsaWtldmMpID0gZXQoaWJu ZCxpaykqcnl0b2V2DQogICAgICAgICBlbHNlDQogICAgICAgICAgICBjYWxs IGVycm9yZSgnd3JpdGVfYmFuZCcsJyB2YWx1ZSBvZiB3YW5fbW9kZSBub3Qg cmVjb2duaXNlZCcsMSkNCiAgICAgICAgIGVuZGlmDQogICAgICBlbmQgZG8N CiAgIGVuZCBkbw0KICAgcmV0dXJuDQplbmQgc3Vicm91dGluZSB3cml0ZV9i YW5kDQoNCnN1YnJvdXRpbmUgd3JpdGVfcGxvdA0KICAgVVNFIGlvX2dsb2Jh bCwgIE9OTFkgOiBzdGRvdXQsIGlvbm9kZQ0KICAgdXNlIHd2ZmN0LCBvbmx5 IDogbmJuZCwgbnB3LCBpZ2ssIGcya2luDQogICB1c2Ugd2F2ZWZ1bmN0aW9u c19tb2R1bGUsIG9ubHkgOiBldmMsIHBzaWMNCiAgIHVzZSBpb19maWxlcywg b25seSA6IGZpbmRfZnJlZV91bml0LCBud29yZHdmYywgaXVud2ZjDQogICB1 c2Ugd2Fubmllcg0KICAgdXNlIGdzbW9vdGgsICAgICAgICAgb25seSA6IG5s cywgbnJ4eHMsIG5yMXMsIG5yMnMsIG5yM3MsIG5yeDFzLCBucngycywgbnJ4 M3MNCiAgIHVzZSBrbGlzdCwgICAgICAgICAgIG9ubHkgOiBua3N0b3QsIHhr DQogICB1c2UgZ3ZlY3QsICAgICAgICAgICBvbmx5IDogZywgbmdtLCBlY3V0 d2ZjDQogICB1c2UgY2VsbF9iYXNlLCAgICAgICBvbmx5IDogdHBpYmEyDQoN CiAgIGltcGxpY2l0IG5vbmUNCiAgIGludGVnZXIgaWssIGlibmQsIGlibmQx LCBpa2V2YywgaTEsIGosIHNwaW4NCiAgIGNoYXJhY3RlcioyMCB3Zm5uYW1l DQoNCiAgICEgYWFtOiAxLzUvMDY6IGZvciB3cml0aW5nIHNtYWxsZXIgdW5r IGZpbGVzIA0KICAgaW50ZWdlciA6OiBuMWJ5MixuMmJ5MixuM2J5MixpLGss aW5kZXgscG9zDQogICBDT01QTEVYKERQKSxhbGxvY2F0YWJsZSA6OiBwc2lj X3NtYWxsKDopICAgDQogICAhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLSENCg0KI2lmZGVmIF9fUEFSQQ0KICAgaW50ZWdl ciBueHhzDQogICBDT01QTEVYKERQKSxhbGxvY2F0YWJsZSA6OiBwc2ljX2Fs bCg6KQ0KICAgbnh4cyA9IG5yeDFzICogbnJ4MnMgKiBucngzcw0KICAgYWxs b2NhdGUocHNpY19hbGwobnh4cykgKQ0KI2VuZGlmDQoNCiAgIGlmIChyZWR1 Y2VfdW5rKSB0aGVuDQogICAgICB3cml0ZShzdGRvdXQsJygzKGEsaTUpKScp ICducjFzID0nLG5yMXMsJ25yMnM9JyxucjJzLCducjNzPScsbnIzcw0KICAg ICAgbjFieTI9KG5yMXMrMSkvMjtuMmJ5Mj0obnIycysxKS8yO24zYnkyPShu cjNzKzEpLzINCiAgICAgIHdyaXRlKHN0ZG91dCwnKDMoYSxpNSkpJykgJ24x YnkyPScsbjFieTIsJ24yYnkyPScsbjJieTIsJ24zYnkyPScsbjNieTINCiAg ICAgIGFsbG9jYXRlKHBzaWNfc21hbGwobjFieTIqbjJieTIqbjNieTIpKSAg IA0KICAgZW5kaWYNCg0KICAgZG8gaWs9aWtzdGFydCxpa3N0b3ANCg0KICAg ICAgaWtldmMgPSBpayAtIGlrc3RhcnQgKyAxDQoNCiAgICAgIGl1bl9wbG90 ID0gZmluZF9mcmVlX3VuaXQoKQ0KICAgICAgIXdyaXRlKHdmbm5hbWUsMjAw KSBwLHNwaW4NCiAgICAgIHNwaW49aXNwaW53DQogICAgICBpZihpc3Bpbncu ZXEuMCkgc3Bpbj0xDQogICAgICB3cml0ZSh3Zm5uYW1lLDIwMCkgaWtldmMs IHNwaW4NCjIwMCAgIGZvcm1hdCAoJ1VOSycsaTUuNSwnLicsaTEpDQoNCiAg IGlmIChpb25vZGUpIHRoZW4NCiAgICAgIGlmKHd2Zm5fZm9ybWF0dGVkKSB0 aGVuDQogICAgICAgICBvcGVuICh1bml0PWl1bl9wbG90LCBmaWxlPXdmbm5h bWUsZm9ybT0nZm9ybWF0dGVkJykNCiAgICAgICAgIGlmIChyZWR1Y2VfdW5r KSB0aGVuDQogICAgICAgICAgICB3cml0ZShpdW5fcGxvdCwqKSAgbjFieTIs bjJieTIsbjNieTIsIGlrZXZjLCBuYm5kLW5leGJhbmQNCiAgICAgICAgIGVs c2UNCiAgICAgICAgICAgIHdyaXRlKGl1bl9wbG90LCopICBucjFzLG5yMnMs bnIzcywgaWtldmMsIG5ibmQtbmV4YmFuZA0KICAgICAgICAgZW5kaWYNCiAg ICAgIGVsc2UNCiAgICAgICAgIG9wZW4gKHVuaXQ9aXVuX3Bsb3QsIGZpbGU9 d2ZubmFtZSxmb3JtPSd1bmZvcm1hdHRlZCcpDQogICAgICAgICBpZiAocmVk dWNlX3VuaykgdGhlbg0KICAgICAgICAgICAgd3JpdGUoaXVuX3Bsb3QpICBu MWJ5MixuMmJ5MixuM2J5MiwgaWtldmMsIG5ibmQtbmV4YmFuZA0KICAgICAg ICAgZWxzZQ0KICAgICAgICAgICAgd3JpdGUoaXVuX3Bsb3QpICBucjFzLG5y MnMsbnIzcywgaWtldmMsIG5ibmQtbmV4YmFuZA0KICAgICAgICAgZW5kaWYN CiAgICAgIGVuZGlmDQogICBlbmQgaWYNCg0KICAgICAgY2FsbCBkYXZjaW8g KGV2YywgbndvcmR3ZmMsIGl1bndmYywgaWtldmMsIC0xICkNCiAgICAgIGNh bGwgZ2tfc29ydCAoeGsoMSxpayksIG5nbSwgZywgZWN1dHdmYyAvIHRwaWJh MiwgbnB3LCBpZ2ssIGcya2luKQ0KDQogICAgICBpYm5kMSA9IDANCiAgICAg IGRvIGlibmQ9MSxuYm5kDQogICAgICAgICBpZiAoZXhjbHVkZWRfYmFuZChp Ym5kKSkgY3ljbGUNCiAgICAgICAgIGlibmQxPWlibmQxICsgMQ0KICAgICAg ICAgcHNpYyg6KSA9ICgwLmQwLCAwLmQwKQ0KICAgICAgICAgcHNpYyhubHMg KGlnayAoMTpucHcpICkgKSA9IGV2YyAoMTpucHcsIGlibmQpDQogICAgICAg ICBjYWxsIGNmdDNzIChwc2ljLCBucjFzLCBucjJzLCBucjNzLCBucngxcywg bnJ4MnMsIG5yeDNzLCArMikNCiAgICAgICAgIGlmIChyZWR1Y2VfdW5rKSBw b3M9MA0KI2lmZGVmIF9fUEFSQQ0KICAgICAgICAgY2FsbCBjZ2F0aGVyX3Nt b290aChwc2ljLHBzaWNfYWxsKQ0KICAgICAgICAgaWYgKHJlZHVjZV91bmsp IHRoZW4NCiAgICAgICAgICAgIGRvIGs9MSxucjNzLDINCiAgICAgICAgICAg ICAgIGRvIGo9MSxucjJzLDINCiAgICAgICAgICAgICAgICAgIGRvIGk9MSxu cjFzLDINCiAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gKGstMSkqbnIz cypucjJzICsgKGotMSkqbnIycyArIGkNCiAgICAgICAgICAgICAgICAgICAg IHBvcz1wb3MrMQ0KICAgICAgICAgICAgICAgICAgICAgcHNpY19zbWFsbChw b3MpID0gcHNpY19hbGwoaW5kZXgpIA0KICAgICAgICAgICAgICAgICAgZW5k ZG8NCiAgICAgICAgICAgICAgIGVuZGRvDQogICAgICAgICAgICBlbmRkbw0K ICAgICAgICAgZW5kaWYNCiAgICAgIGlmIChpb25vZGUpIHRoZW4NCiAgICAg ICAgIGlmKHd2Zm5fZm9ybWF0dGVkKSB0aGVuDQogICAgICAgICAgICBpZiAo cmVkdWNlX3VuaykgdGhlbg0KICAgICAgICAgICAgICAgd3JpdGUgKGl1bl9w bG90LCcoMkVTMjAuMTApJykgKHBzaWNfc21hbGwoaiksaj0xLG4xYnkyKm4y YnkyKm4zYnkyKQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAg d3JpdGUgKGl1bl9wbG90LCopIChwc2ljX2FsbChqKSxqPTEsbnIxcypucjJz Km5yM3MpDQogICAgICAgICAgICBlbmRpZg0KICAgICAgICAgZWxzZQ0KICAg ICAgICAgICAgaWYgKHJlZHVjZV91bmspIHRoZW4NCiAgICAgICAgICAgICAg IHdyaXRlIChpdW5fcGxvdCkgKHBzaWNfc21hbGwoaiksaj0xLG4xYnkyKm4y YnkyKm4zYnkyKQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgICAg d3JpdGUgKGl1bl9wbG90KSAocHNpY19hbGwoaiksaj0xLG5yMXMqbnIycypu cjNzKQ0KICAgICAgICAgICAgZW5kaWYNCiAgICAgICAgIGVuZGlmDQogICAg ICBlbmQgaWYNCiNlbHNlDQogICAgICAgICBpZiAocmVkdWNlX3VuaykgdGhl bg0KICAgICAgICAgICAgZG8gaz0xLG5yM3MsMg0KICAgICAgICAgICAgICAg ZG8gaj0xLG5yMnMsMg0KICAgICAgICAgICAgICAgICAgZG8gaT0xLG5yMXMs Mg0KICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAoay0xKSpucjNzKm5y MnMgKyAoai0xKSpucjJzICsgaQ0KICAgICAgICAgICAgICAgICAgICAgcG9z PXBvcysxDQogICAgICAgICAgICAgICAgICAgICBwc2ljX3NtYWxsKHBvcykg PSBwc2ljKGluZGV4KSANCiAgICAgICAgICAgICAgICAgIGVuZGRvDQogICAg ICAgICAgICAgICBlbmRkbw0KICAgICAgICAgICAgZW5kZG8NCiAgICAgICAg IGVuZGlmDQogICAgICAgICBpZih3dmZuX2Zvcm1hdHRlZCkgdGhlbiANCiAg ICAgICAgICAgIGlmIChyZWR1Y2VfdW5rKSB0aGVuDQogICAgICAgICAgICAg ICB3cml0ZSAoaXVuX3Bsb3QsJygyRVMyMC4xMCknKSAocHNpY19zbWFsbChq KSxqPTEsbjFieTIqbjJieTIqbjNieTIpDQogICAgICAgICAgICBlbHNlDQog ICAgICAgICAgICAgICB3cml0ZSAoaXVuX3Bsb3QsKikgKHBzaWMoaiksaj0x LG5yMXMqbnIycypucjNzKQ0KICAgICAgICAgICAgZW5kaWYNCiAgICAgICAg IGVsc2UNCiAgICAgICAgICAgIGlmIChyZWR1Y2VfdW5rKSB0aGVuDQogICAg ICAgICAgICAgICB3cml0ZSAoaXVuX3Bsb3QpIChwc2ljX3NtYWxsKGopLGo9 MSxuMWJ5MipuMmJ5MipuM2J5MikNCiAgICAgICAgICAgIGVsc2UNCiAgICAg ICAgICAgICAgIHdyaXRlIChpdW5fcGxvdCkgKHBzaWMoaiksaj0xLG5yMXMq bnIycypucjNzKQ0KICAgICAgICAgICAgZW5kaWYNCiAgICAgICAgIGVuZGlm DQojZW5kaWYNCiAgICAgIGVuZCBkbyAhaWJuZA0KDQogICAgICBpZihpb25v ZGUpIGNsb3NlICh1bml0PWl1bl9wbG90KQ0KDQogICBlbmQgZG8gICFpaw0K ICAgDQogICBpZiAocmVkdWNlX3VuaykgZGVhbGxvY2F0ZShwc2ljX3NtYWxs KSAgIA0KDQojaWZkZWYgX19QQVJBDQogICBkZWFsbG9jYXRlKCBwc2ljX2Fs bCApDQojZW5kaWYNCiAgIHJldHVybg0KZW5kIHN1YnJvdXRpbmUgd3JpdGVf cGxvdA0KDQpzdWJyb3V0aW5lIHdhbjJzaWMgDQoNCiAgVVNFIGlvX2dsb2Jh bCwgIE9OTFkgOiBzdGRvdXQNCiAgVVNFIGtpbmRzLCBvbmx5IDogRFANCiAg dXNlIGlvX2ZpbGVzLCBvbmx5IDogaXVud2ZjLCBpdW5hdHNpY3dmYywgbndv cmR3ZmMsIG53b3Jkd2Fubg0KICBVU0UgY2VsbF9iYXNlLCBvbmx5IDogb21l Z2EsIHRwaWJhMg0KICB1c2UgZ3ZlY3QsIG9ubHkgOiBnLCBuZ20sIGVjdXR3 ZmMNCiAgdXNlIGdzbW9vdGgsIG9ubHk6IG5scywgbnJ4eHMsIG5yMXMsIG5y MnMsIG5yM3MsIG5yeDFzLCBucngycywgbnJ4M3MNCiAgdXNlIHdhdmVmdW5j dGlvbnNfbW9kdWxlLCBvbmx5IDogZXZjLCBwc2ljDQogIHVzZSB3dmZjdCwg b25seSA6IG5ibmQsIG5wd3gsIG5wdywgaWdrLCBnMmtpbg0KICB1c2Uga2xp c3QsIG9ubHkgOiBua3N0b3QsIHhrLCB3aw0KICB1c2Ugd2Fubmllcg0KDQog IGludGVnZXIgOjogaSwgaiwgbm4sIGlrLCBpYm5kLCBpdywgaWtldmMgDQog IGNvbXBsZXgoRFApLCBhbGxvY2F0YWJsZSA6OiBvcmJpdGFsKDosOiksIG9y Yig6LDopLCB1X21hdHJpeCg6LDosOikgDQoNCiAgb3BlbiAoMjAsIGZpbGUg PSBUUklNKHNlZWRuYW1lKS8vIi5kYXQiICwgZm9ybSA9ICdmb3JtYXR0ZWQn LCBzdGF0dXMgPSAndW5rbm93bicpDQogIHdyaXRlKHN0ZG91dCwqKSAnIHdh bm5pZXIgcGxvdCAnDQoNCiAgYWxsb2NhdGUgKCB1X21hdHJpeCggbl93YW5u aWVyLCBuX3dhbm5pZXIsIG5rc3RvdCkgKQ0KICBhbGxvY2F0ZSAoIG9yYml0 YWwoIG5wd3gsIG5fd2FubmllciksIG9yYiggbnJ4eHMsIG5fd2Fubmllcikp DQoNCiAgIQ0KICBkbyBpID0gMSwgbl93YW5uaWVyDQogICAgIGRvIGogPSAx LCBuX3dhbm5pZXINCiAgICAgICAgZG8gaWsgPSAxLCBua3N0b3QNCiAgICAg ICAgICAgcmVhZCAoMjAsICogKSB1X21hdHJpeChpLGosaWspDQogICAgICAg ICAgICFkbyBubiA9IDEsIG5uYihpaykNCiAgICAgICAgICAgZG8gbm4gPSAx LCBubmINCiAgICAgICAgICAgICAgcmVhZCAoMjAsICogKSAhIG1fbWF0cml4 IChpLGosbmtwLG5uKQ0KICAgICAgICAgICBlbmRkbw0KICAgICAgICBlbmRk byAgIW5rcA0KICAgICBlbmRkbyAhag0KICBlbmRkbyAhaQ0KICAhDQogIG9y Yig6LDopID0gKDAuMGQwLDAuMGQwKQ0KICBkbyBpaz0xLGlrbnVtDQogICAg IGlrZXZjID0gaWsgKyBpa3N0YXJ0IC0gMQ0KICAgICBjYWxsIGRhdmNpbyAo ZXZjLCBud29yZHdmYywgaXVud2ZjLCBpa2V2YywgLTEpDQogICAgIGNhbGwg Z2tfc29ydCAoeGsoMSxpayksIG5nbSwgZywgZWN1dHdmYy90cGliYTIsIG5w dywgaWdrLCBnMmtpbikNCiAgICAgd3JpdGUoc3Rkb3V0LCopICducHcgJyxu cHcNCiAgICAgZG8gaXc9MSxuX3dhbm5pZXINCiAgICAgICAgZG8gaj0xLG5w dw0KICAgICAgICAgICBvcmJpdGFsKGosaXcpID0gKDAuMGQwLDAuMGQwKQ0K ICAgICAgICAgICBkbyBpYm5kPTEsbl93YW5uaWVyDQogICAgICAgICAgICAg IG9yYml0YWwoaixpdykgPSBvcmJpdGFsKGosaXcpICsgdV9tYXRyaXgoaXcs aWJuZCxpaykqZXZjKGosaWJuZCkNCiAgICAgICAgICAgICAgd3JpdGUoc3Rk b3V0LCopIGosIGl3LCBpYm5kLCBpaywgb3JiaXRhbChqLGl3KSwgJg0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9tYXRyaXgoaXcsaWJuZCxp ayksIGV2YyhqLGlibmQpDQogICAgICAgICAgIGVuZGRvICFpYm5kDQogICAg ICAgIGVuZCBkbyAgIWoNCiAgICAgZW5kIGRvICF3YW5uaWVyDQogICAgIGNh bGwgZGF2Y2lvIChvcmJpdGFsLCBud29yZHdhbm4sIGl1bmF0c2ljd2ZjLCBp a2V2YywgKzEpDQogIGVuZCBkbyAhIGstcG9pbnRzDQoNCiAgZGVhbGxvY2F0 ZSAoIHVfbWF0cml4KSANCiAgd3JpdGUoc3Rkb3V0LCopICcgZGVhbGxvYyB1 ICcNCiAgZGVhbGxvY2F0ZSAoICBvcmJpdGFsKQ0KICB3cml0ZShzdGRvdXQs KikgJyBkZWFsbG9jIG9yYml0YWwgJw0KICBkZWFsbG9jYXRlICggb3JiICkN CiAgd3JpdGUoc3Rkb3V0LCopICcgZGVhbGxvYyBvcmIgJw0KICAhDQplbmQg c3Vicm91dGluZSB3YW4yc2ljIA0KDQpzdWJyb3V0aW5lIHlsbV9leHBhbnNp b24gDQogICBVU0UgaW9fZ2xvYmFsLCAgT05MWSA6IHN0ZG91dA0KICAgdXNl IGtpbmRzLCBPTkxZIDogIERQDQogICBVU0UgcmFuZG9tX251bWJlcnMsICAg ICAgIE9OTFkgOiBybmRtDQogICB1c2Ugd2Fubmllcg0KICAgaW1wbGljaXQg bm9uZQ0KICAgISBsb2NhbCB2YXJpYWJsZXMNCiAgIGludGVnZXIsIHBhcmFt ZXRlciA6OiBsbWF4Mj0xNg0KICAgaW50ZWdlciA6OiAgbG0sIGksIGlyLCBp dywgbQ0KICAgcmVhbChEUCkgOjogY2FwZWwNCiAgIHJlYWwoRFApLCBhbGxv Y2F0YWJsZSA6OiByKDosOiksIHJyKDopLCBycCg6LDopLCB5bG1fdyg6KSwg eWxtKDosOiksIG1seSg6LDopDQogICByZWFsKERQKSA6OiB1KDMsMykNCg0K ICAgYWxsb2NhdGUgKHIoMyxsbWF4MiksIHJwKDMsbG1heDIpLCBycihsbWF4 MiksIHlsbV93KGxtYXgyKSkNCiAgIGFsbG9jYXRlICh5bG0obG1heDIsbG1h eDIpLCBtbHkobG1heDIsbG1heDIpICkNCg0KICAgISBnZW5lcmF0ZSBhIHNl dCBvZiBucj1sbWF4MiByYW5kb20gdmVjdG9ycw0KICAgZG8gaXI9MSxsbWF4 Mg0KICAgICAgZG8gaT0xLDMNCiAgICAgICAgIHIoaSxpcikgPSBybmRtKCkg LTAuNWQwDQogICAgICBlbmQgZG8NCiAgIGVuZCBkbw0KICAgcnIoOikgPSBy KDEsOikqcigxLDopICsgcigyLDopKnIoMiw6KSArIHIoMyw6KSpyKDMsOikN CiAgICEtIGNvbXB1dGUgeWxtKGlyLGxtKQ0KICAgY2FsbCB5bG1yMihsbWF4 MiwgbG1heDIsIHIsIHJyLCB5bG0pDQogICAhLSBzdG9yZSB0aGUgaW52ZXJz ZSBvZiB5bG0oaXIsbG0pIGluIG1seShsbSxpcikNCiAgIGNhbGwgaW52bWF0 KGxtYXgyLCB5bG0sIG1seSwgY2FwZWwpDQogICAhLSBjaGVjayB0aGF0IHIg cG9pbnRzIGFyZSBpbmRlcGVuZGVudA0KICAgY2FsbCBjaGVja19pbnZlcnNl KGxtYXgyLCB5bG0sIG1seSkNCg0KICAgZG8gaXc9MSwgbl93YW5uaWVyDQoN CiAgICAgICEtIGRlZmluZSB0aGUgdSBtYXRyaXggdGhhdCByb3RhdGUgdGhl IHJlZmVyZW5jZSBmcmFtZQ0KICAgICAgY2FsbCBzZXRfdV9tYXRyaXggKHhh eGlzKDosaXcpLHpheGlzKDosaXcpLHUpDQogICAgICAhLSBmaW5kIHJvdGF0 ZWQgci12ZWN0b3JzIA0KICAgICAgcnAoOiw6KSA9IG1hdG11bCAoIHUoOiw6 KSAsIHIoOiw6KSApDQogICAgICAhLSBzZXQgeWxtIGZ1bnRpb24gYWNjb3Jk aW5nIHRvIHdhbm5pZXI5MCAobCxtcikgaW5kZXhpbmcgaW4gdGhlIHJvdGF0 ZXJkIHBvaW50cw0KICAgICAgY2FsbCB5bG1fd2Fubmllcih5bG1fdyxsX3co aXcpLG1yX3coaXcpLHJwLGxtYXgyKSANCg0KICAgICAgY3NwaCg6LGl3KSA9 IG1hdG11bCAobWx5KDosOiksIHlsbV93KDopKQ0KDQohICAgICAgd3JpdGUg KHN0ZG91dCwqKSANCiEgICAgICB3cml0ZSAoc3Rkb3V0LCcoMmk0LDIoMngs M2Y2LjMpKScpIGxfdyhpdyksIG1yX3coaXcpLCB4YXhpcyg6LGl3KSwgemF4 aXMoOixpdykNCiEgICAgICB3cml0ZSAoc3Rkb3V0LCcoMTZpNiknKSAgIChs bSwgbG09MSxsbWF4MikNCiEgICAgICB3cml0ZSAoc3Rkb3V0LCcoMTZmNi4z KScpIChjc3BoKGxtLGl3KSwgbG09MSxsbWF4MikNCg0KICAgZW5kIGRvDQog ICBkZWFsbG9jYXRlIChyLCBycCwgcnIsIHlsbV93LCB5bG0sIG1seSApDQoN CiAgIHJldHVybg0KZW5kIHN1YnJvdXRpbmUgeWxtX2V4cGFuc2lvbg0KDQpz dWJyb3V0aW5lIGNoZWNrX2ludmVyc2UobG1heDIsIHlsbSwgbWx5KQ0KICAg dXNlIGtpbmRzLCBPTkxZIDogIERQDQogICB1c2UgY29uc3RhbnRzLCBPTkxZ IDogIGVwczgNCiAgIGltcGxpY2l0IG5vbmUNCiAgICEgSS9PIHZhcmlhYmxl cw0KICAgaW50ZWdlciA6OiBsbWF4Mg0KICAgcmVhbChEUCkgOjogeWxtKGxt YXgyLGxtYXgyKSwgbWx5KGxtYXgyLGxtYXgyKQ0KICAgISBsb2NhbCB2YXJp YWJsZXMNCiAgIHJlYWwoRFApLCBhbGxvY2F0YWJsZSA6OiB1bm8oOiw6KQ0K ICAgcmVhbChEUCkgOjogY2FwZWwNCiAgIGludGVnZXIgOjogbG0NCiAgICEN CiAgIGFsbG9jYXRlICh1bm8obG1heDIsbG1heDIpICkNCiAgIHVubyA9IG1h dG11bChtbHksIHlsbSkNCiAgIGNhcGVsID0gMC5kMA0KICAgZG8gbG0gPSAx LCBsbWF4Mg0KICAgICAgdW5vKGxtLGxtKSA9IHVubyhsbSxsbSkgLSAxLmQw DQogICBlbmQgZG8NCiAgIGNhcGVsID0gY2FwZWwgKyBTVU0gKCBhYnModW5v KDE6bG1heDIsMTpsbWF4MikgKSApDQohICAgd3JpdGUgKHN0ZG91dCwqKSAi Y2FwZWwgPSAiLCBjYXBlbA0KICAgaWYgKGNhcGVsID4gZXBzOCkgY2FsbCBl cnJvcmUoJ3lsbV9leHBhbnNpb24nLCAmDQogICAgICAgICAgICAgICAgICAg ICcgaW52ZXJzaW9uIGZhaWxlZDogcigqLDE6bnIpIGFyZSBub3QgYWxsIGlu ZGVwZW5kZW50ICEhJywxKQ0KICAgZGVhbGxvY2F0ZSAodW5vKQ0KICAgcmV0 dXJuDQplbmQgc3Vicm91dGluZSBjaGVja19pbnZlcnNlDQogICANCnN1YnJv dXRpbmUgc2V0X3VfbWF0cml4KHgseix1KQ0KICAgdXNlIGtpbmRzLCBPTkxZ IDogIERQDQogICB1c2UgY29uc3RhbnRzLCBPTkxZIDogZXBzOA0KICAgaW1w bGljaXQgbm9uZQ0KICAgISBJL08gdmFyaWFibGVzDQogICByZWFsKERQKSA6 OiB4KDMpLHooMyksdSgzLDMpDQogICAhIGxvY2FsIHZhcmlhYmxlcw0KICAg cmVhbChEUCkgOjogeHgsIHp6LCB5KDMpLCBjb3Nlbm8NCg0KICAgeHggPSBz cXJ0KHgoMSkqeCgxKSArIHgoMikqeCgyKSArIHgoMykqeCgzKSkNCiAgIGlm ICh4eCA8IGVwczgpIGNhbGwgZXJyb3JlICgnc2V0X3VfbWF0cml4JywnIHx4 YXhpc3wgPCBlcHMgJywxKQ0KISAgIHgoOikgPSB4KDopL3h4DQogICB6eiA9 IHNxcnQoeigxKSp6KDEpICsgeigyKSp6KDIpICsgeigzKSp6KDMpKQ0KICAg aWYgKHp6IDwgZXBzOCkgY2FsbCBlcnJvcmUgKCdzZXRfdV9tYXRyaXgnLCcg fHpheGlzfCA8IGVwcyAnLDEpDQohICAgeig6KSA9IHooOikvenoNCg0KICAg Y29zZW5vID0gKHgoMSkqeigxKSArIHgoMikqeigyKSArIHgoMykqeigzKSkv eHgvenoNCiAgIGlmIChhYnMoY29zZW5vKSA+IGVwczgpIGNhbGwgZXJyb3Jl KCdzZXRfdV9tYXRyaXgnLCcgeGF4aXMgYW5kIHpheGlzIGFyZSBub3Qgb3J0 aG9nb25hbCAhJywxKQ0KDQogICB5KDEpID0gKHooMikqeCgzKSAtIHgoMikq eigzKSkveHgvenoNCiAgIHkoMikgPSAoeigzKSp4KDEpIC0geCgzKSp6KDEp KS94eC96eg0KICAgeSgzKSA9ICh6KDEpKngoMikgLSB4KDEpKnooMikpL3h4 L3p6DQoNCiAgIHUoMSw6KSA9IHgoOikveHgNCiAgIHUoMiw6KSA9IHkoOikN CiAgIHUoMyw6KSA9IHooOikvenoNCg0KISAgIHdyaXRlIChzdGRvdXQsJygz ZjEwLjcpJykgdSg6LDopDQoNCiAgIHJldHVybg0KDQplbmQgc3Vicm91dGlu ZSBzZXRfdV9tYXRyaXgNCg0Kc3Vicm91dGluZSB5bG1fd2Fubmllcih5bG0s bCxtcixyLG5yKSANCiENCiEgdGhpcyByb3V0aW5lIHJldHVybnMgaW4geWxt KHIpIHRoZSB2YWx1ZXMgYXQgdGhlIG5yIHBvaW50cyByKDE6MywxOm5yKSAN CiEgb2YgdGhlIHNwaGVyaWNhbCBoYXJtb25pYyBpZGVudGlmaWVkICBieSBp bmRpY2VzIChsLG1yKSANCiEgaW4gdGFibGUgMy4xIG9mIHRoZSB3YW5uaWVy ZjkwIHNwZWNpZmljYXRpb24uDQohIA0KISBObyByZWZlcmVuY2UgdG8gdGhl IHBhcnRpY3VsYXIgeWxtIG9yZGVyaW5nIGludGVybmFsIHRvIHF1YW50dW0t ZXNwcmVzc28NCiEgaXMgYXNzdW1lZC4gDQohDQohIElmIG9yZGVyaW5nIGlu IHdhbm5pZXI5MCBjb2RlIGlzIGNoYW5nZWQgb3IgZXh0ZW5kZWQgdGhpcyBz aG91bGQgYmUgdGhlIA0KISBvbmx5IHBsYWNlIHRvIGJlIG1vZGlmaWVkIGFj Y29yZGluZ2x5DQohDQogICB1c2Uga2luZHMsIE9OTFkgOiAgRFANCiAgIHVz ZSBjb25zdGFudHMsIE9OTFkgOiBwaSwgZnBpLCBlcHM4DQogICBpbXBsaWNp dCBub25lDQohIEkvTyB2YXJpYWJsZXMNCiENCiAgIGludGVnZXIgOjogbCwg bXIsIG5yDQogICByZWFsKERQKSA6OiB5bG0obnIpLCByKDMsbnIpDQohDQoh IGxvY2FsIHZhcmlhYmxlcw0KIQ0KICAgcmVhbChEUCksIGV4dGVybmFsIDo6 IHMsIHBfeixweCxweSwgZHoyLCBkeHosIGR5eiwgZHgybXkyLCBkeHksICYN CiAgICAgICAgICAgICAgICAgICAgICAgIGZ6MywgZnh6MiwgZnl6MiwgZnp4 Mm15MiwgZnh5eiwgZnh4Mm0zeTIsIGZ5M3gybXkyDQogICByZWFsKERQKSA6 OiByciwgY29zdCwgcGhpDQogICBpbnRlZ2VyIDo6IGlyDQogICByZWFsKERQ KSA6OiBiczIsIGJzMywgYnM2LCBiczEyDQogICBiczIgPSAxLmQwL3NxcnQo Mi5kMCkNCiAgIGJzMz0xLmQwL3NxcnQoMy5kMCkNCiAgIGJzNiA9IDEuZDAv c3FydCg2LmQwKQ0KICAgYnMxMiA9IDEuZDAvc3FydCgxMi5kMCkNCiENCiAg IGlmIChsID4gMyAuT1IuIGwgPCAtNSApIGNhbGwgZXJyb3JlKCd5bG1fd2Fu bmllcicsJyBsIG91dCBvZiByYW5nZSAnLCAxKQ0KICAgaWYgKGw+PTApIHRo ZW4NCiAgICAgIGlmIChtciA8IDEgLk9SLiBtciA+IDIqbCsxKSBjYWxsIGVy cm9yZSgneWxtX3dhbm5pZXInLCdtciBvdXQgb2YgcmFuZ2UnICwxKQ0KICAg ZWxzZQ0KICAgICAgaWYgKG1yIDwgMSAuT1IuIG1yID4gYWJzKGwpKzEgKSBj YWxsIGVycm9yZSgneWxtX3dhbm5pZXInLCdtciBvdXQgb2YgcmFuZ2UnLDEp DQogICBlbmQgaWYNCg0KICAgZG8gaXI9MSwgbnINCiAgICAgIHJyID0gc3Fy dCggcigxLGlyKSpyKDEsaXIpICsgIHIoMixpcikqcigyLGlyKSArIHIoMyxp cikqcigzLGlyKSApDQogICAgICBpZiAocnIgPCBlcHM4KSBjYWxsIGVycm9y ZSgneWxtX3dhbm5pZXInLCcgcnIgdG9vIHNtYWxsICcsMSkNCg0KICAgICAg Y29zdCA9ICByKDMsaXIpIC8gcnINCiAgICAgICENCiAgICAgICEgIGJld2Fy ZSB0aGUgYXJjIHRhbiwgaXQgaXMgZGVmaW5lZCBtb2R1bG8gcGkNCiAgICAg ICENCiAgICAgIGlmIChyKDEsaXIpID4gZXBzOCkgdGhlbg0KICAgICAgICAg cGhpID0gYXRhbiggcigyLGlyKS9yKDEsaXIpICkNCiAgICAgIGVsc2UgaWYg KHIoMSxpcikgPCAtZXBzOCApIHRoZW4NCiAgICAgICAgIHBoaSA9IGF0YW4o IHIoMixpcikvcigxLGlyKSApICsgcGkNCiAgICAgIGVsc2UNCiAgICAgICAg IHBoaSA9IHNpZ24oIHBpLzIuZDAscigyLGlyKSApDQogICAgICBlbmQgaWYN Cg0KICAgIA0KICAgICAgaWYgKGw9PTApIHRoZW4gICAhIHMgb3JiaXRhbA0K ICAgICAgICAgICAgICAgICAgICB5bG0oaXIpID0gcyhjb3N0LHBoaSkgIA0K ICAgICAgZW5kIGlmDQogICAgICBpZiAobD09MSkgdGhlbiAgICEgcCBvcmJp dGFscw0KICAgICAgICAgaWYgKG1yPT0xKSB5bG0oaXIpID0gcF96KGNvc3Qs cGhpKSANCiAgICAgICAgIGlmIChtcj09MikgeWxtKGlyKSA9IHB4KGNvc3Qs cGhpKQ0KICAgICAgICAgaWYgKG1yPT0zKSB5bG0oaXIpID0gcHkoY29zdCxw aGkpDQogICAgICBlbmQgaWYNCiAgICAgIGlmIChsPT0yKSB0aGVuICAgISBk IG9yYml0YWxzDQogICAgICAgICBpZiAobXI9PTEpIHlsbShpcikgPSBkejIo Y29zdCxwaGkpDQogICAgICAgICBpZiAobXI9PTIpIHlsbShpcikgPSBkeHoo Y29zdCxwaGkpDQogICAgICAgICBpZiAobXI9PTMpIHlsbShpcikgPSBkeXoo Y29zdCxwaGkpDQogICAgICAgICBpZiAobXI9PTQpIHlsbShpcikgPSBkeDJt eTIoY29zdCxwaGkpDQogICAgICAgICBpZiAobXI9PTUpIHlsbShpcikgPSBk eHkoY29zdCxwaGkpDQogICAgICBlbmRpZg0KICAgICAgaWYgKGw9PTMpIHRo ZW4gICAhIGYgb3JiaXRhbHMNCiAgICAgICAgIGlmIChtcj09MSkgeWxtKGly KSA9IGZ6Myhjb3N0LHBoaSkNCiAgICAgICAgIGlmIChtcj09MikgeWxtKGly KSA9IGZ4ejIoY29zdCxwaGkpDQogICAgICAgICBpZiAobXI9PTMpIHlsbShp cikgPSBmeXoyKGNvc3QscGhpKQ0KICAgICAgICAgaWYgKG1yPT00KSB5bG0o aXIpID0gZnp4Mm15Mihjb3N0LHBoaSkNCiAgICAgICAgIGlmIChtcj09NSkg eWxtKGlyKSA9IGZ4eXooY29zdCxwaGkpDQogICAgICAgICBpZiAobXI9PTYp IHlsbShpcikgPSBmeHgybTN5Mihjb3N0LHBoaSkNCiAgICAgICAgIGlmICht cj09NykgeWxtKGlyKSA9IGZ5M3gybXkyKGNvc3QscGhpKQ0KICAgICAgZW5k aWYNCiAgICAgIGlmIChsPT0tMSkgdGhlbiAgISAgc3AgaHlicmlkcw0KICAg ICAgICAgaWYgKG1yPT0xKSB5bG0oaXIpID0gYnMyICogKCBzKGNvc3QscGhp KSArIHB4KGNvc3QscGhpKSApIA0KICAgICAgICAgaWYgKG1yPT0yKSB5bG0o aXIpID0gYnMyICogKCBzKGNvc3QscGhpKSAtIHB4KGNvc3QscGhpKSApIA0K ICAgICAgZW5kIGlmDQogICAgICBpZiAobD09LTIpIHRoZW4gICEgIHNwMiBo eWJyaWRzIA0KICAgICAgICAgaWYgKG1yPT0xKSB5bG0oaXIpID0gYnMzKnMo Y29zdCxwaGkpLWJzNipweChjb3N0LHBoaSkrYnMyKnB5KGNvc3QscGhpKQ0K ICAgICAgICAgaWYgKG1yPT0yKSB5bG0oaXIpID0gYnMzKnMoY29zdCxwaGkp LWJzNipweChjb3N0LHBoaSktYnMyKnB5KGNvc3QscGhpKQ0KICAgICAgICAg aWYgKG1yPT0zKSB5bG0oaXIpID0gYnMzKnMoY29zdCxwaGkpICsyLmQwKmJz NipweChjb3N0LHBoaSkgDQogICAgICBlbmQgaWYNCiAgICAgIGlmIChsPT0t MykgdGhlbiAgISAgc3AzIGh5YnJpZHMNCiAgICAgICAgIGlmIChtcj09MSkg eWxtKGlyKSA9IDAuNWQwKihzKGNvc3QscGhpKStweChjb3N0LHBoaSkrcHko Y29zdCxwaGkpK3Bfeihjb3N0LHBoaSkpDQogICAgICAgICBpZiAobXI9PTIp IHlsbShpcikgPSAwLjVkMCoocyhjb3N0LHBoaSkrcHgoY29zdCxwaGkpLXB5 KGNvc3QscGhpKS1wX3ooY29zdCxwaGkpKQ0KICAgICAgICAgaWYgKG1yPT0z KSB5bG0oaXIpID0gMC41ZDAqKHMoY29zdCxwaGkpLXB4KGNvc3QscGhpKStw eShjb3N0LHBoaSktcF96KGNvc3QscGhpKSkNCiAgICAgICAgIGlmIChtcj09 NCkgeWxtKGlyKSA9IDAuNWQwKihzKGNvc3QscGhpKS1weChjb3N0LHBoaSkt cHkoY29zdCxwaGkpK3Bfeihjb3N0LHBoaSkpDQogICAgICBlbmQgaWYNCiAg ICAgIGlmIChsPT0tNCkgdGhlbiAgISAgc3AzZCBoeWJyaWRzDQogICAgICAg ICBpZiAobXI9PTEpIHlsbShpcikgPSBiczMqcyhjb3N0LHBoaSktYnM2KnB4 KGNvc3QscGhpKSticzIqcHkoY29zdCxwaGkpDQogICAgICAgICBpZiAobXI9 PTIpIHlsbShpcikgPSBiczMqcyhjb3N0LHBoaSktYnM2KnB4KGNvc3QscGhp KS1iczIqcHkoY29zdCxwaGkpDQogICAgICAgICBpZiAobXI9PTMpIHlsbShp cikgPSBiczMqcyhjb3N0LHBoaSkgKzIuZDAqYnM2KnB4KGNvc3QscGhpKSAN CiAgICAgICAgIGlmIChtcj09NCkgeWxtKGlyKSA9IGJzMipwX3ooY29zdCxw aGkpK2JzMipkejIoY29zdCxwaGkpDQogICAgICAgICBpZiAobXI9PTUpIHls bShpcikgPS1iczIqcF96KGNvc3QscGhpKSticzIqZHoyKGNvc3QscGhpKQ0K ICAgICAgZW5kIGlmDQogICAgICBpZiAobD09LTUpIHRoZW4gICEgc3AzZDIg aHlicmlkcw0KICAgICAgICAgaWYgKG1yPT0xKSB5bG0oaXIpID0gYnM2KnMo Y29zdCxwaGkpLWJzMipweChjb3N0LHBoaSktYnMxMipkejIoY29zdCxwaGkp Ky41KmR4Mm15Mihjb3N0LHBoaSkNCiAgICAgICAgIGlmIChtcj09MikgeWxt KGlyKSA9IGJzNipzKGNvc3QscGhpKSticzIqcHgoY29zdCxwaGkpLWJzMTIq ZHoyKGNvc3QscGhpKSsuNSpkeDJteTIoY29zdCxwaGkpDQogICAgICAgICBp ZiAobXI9PTMpIHlsbShpcikgPSBiczYqcyhjb3N0LHBoaSktYnMyKnB5KGNv c3QscGhpKS1iczEyKmR6Mihjb3N0LHBoaSktLjUqZHgybXkyKGNvc3QscGhp KQ0KICAgICAgICAgaWYgKG1yPT00KSB5bG0oaXIpID0gYnM2KnMoY29zdCxw aGkpK2JzMipweShjb3N0LHBoaSktYnMxMipkejIoY29zdCxwaGkpLS41KmR4 Mm15Mihjb3N0LHBoaSkNCiAgICAgICAgIGlmIChtcj09NSkgeWxtKGlyKSA9 IGJzNipzKGNvc3QscGhpKS1iczIqcF96KGNvc3QscGhpKSticzMqZHoyKGNv c3QscGhpKQ0KICAgICAgICAgaWYgKG1yPT02KSB5bG0oaXIpID0gYnM2KnMo Y29zdCxwaGkpK2JzMipwX3ooY29zdCxwaGkpK2JzMypkejIoY29zdCxwaGkp DQogICAgICBlbmQgaWYNCg0KICAgZW5kIGRvDQoNCiAgIHJldHVybg0KDQpl bmQgc3Vicm91dGluZSB5bG1fd2Fubmllcg0KDQohPT09PT09PT0gbCA9IDAg PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09DQpmdW5jdGlvbiBzKGNvc3QscGhp KQ0KICAgdXNlIGtpbmRzLCBPTkxZIDogIERQDQogICBpbXBsaWNpdCBub25l DQogICByZWFsKERQKSwgcGFyYW1ldGVyIDo6IHBpPTMuMTQxNTkyNjUzNTg5 NzlkMCwgZnBpID00LmQwKnBpDQogICByZWFsKERQKSA6OiBzLCBjb3N0LHBo aQ0KICAgcyA9IDEuZDAvIHNxcnQoZnBpKQ0KICAgcmV0dXJuDQplbmQgZnVu Y3Rpb24gcw0KIT09PT09PT09IGwgPSAxID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KZnVuY3Rpb24gcF96KGNvc3QscGhpKQ0KICAgdXNlIGtpbmRzLCBP TkxZIDogIERQDQogICBpbXBsaWNpdCBub25lDQogICByZWFsKERQKSwgcGFy YW1ldGVyIDo6IHBpPTMuMTQxNTkyNjUzNTg5NzlkMCwgZnBpID00LmQwKnBp DQogICByZWFsKERQKSA6OnBfeiwgY29zdCxwaGkNCiAgIHBfeiA9ICBzcXJ0 KDMuZDAvZnBpKSAqIGNvc3QNCiAgIHJldHVybg0KZW5kIGZ1bmN0aW9uIHBf eg0KZnVuY3Rpb24gcHgoY29zdCxwaGkpDQogICB1c2Uga2luZHMsIE9OTFkg OiAgRFANCiAgIGltcGxpY2l0IG5vbmUNCiAgIHJlYWwoRFApLCBwYXJhbWV0 ZXIgOjogcGk9My4xNDE1OTI2NTM1ODk3OWQwLCBmcGkgPTQuZDAqcGkNCiAg IHJlYWwoRFApIDo6cHgsIGNvc3QsIHBoaSwgc2ludA0KICAgc2ludCA9IHNx cnQoYWJzKDEuZDAgLSBjb3N0KmNvc3QpKQ0KICAgcHggPSAgc3FydCgzLmQw L2ZwaSkgKiBzaW50ICogY29zKHBoaSkNCiAgIHJldHVybg0KZW5kIGZ1bmN0 aW9uIHB4DQpmdW5jdGlvbiBweShjb3N0LHBoaSkNCiAgIHVzZSBraW5kcywg T05MWSA6ICBEUA0KICAgaW1wbGljaXQgbm9uZQ0KICAgcmVhbChEUCksIHBh cmFtZXRlciA6OiBwaT0zLjE0MTU5MjY1MzU4OTc5ZDAsIGZwaSA9NC5kMCpw aQ0KICAgcmVhbChEUCkgOjpweSwgY29zdCwgcGhpLCBzaW50DQogICBzaW50 ID0gc3FydChhYnMoMS5kMCAtIGNvc3QqY29zdCkpDQogICBweSA9ICBzcXJ0 KDMuZDAvZnBpKSAqIHNpbnQgKiBzaW4ocGhpKQ0KICAgcmV0dXJuDQplbmQg ZnVuY3Rpb24gcHkNCiE9PT09PT09PSBsID0gMiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0NCmZ1bmN0aW9uIGR6Mihjb3N0LHBoaSkNCiAgIHVzZSBraW5k cywgT05MWSA6ICBEUA0KICAgaW1wbGljaXQgbm9uZQ0KICAgcmVhbChEUCks IHBhcmFtZXRlciA6OiBwaT0zLjE0MTU5MjY1MzU4OTc5ZDAsIGZwaSA9NC5k MCpwaQ0KICAgcmVhbChEUCkgOjpkejIsIGNvc3QsIHBoaQ0KICAgZHoyID0g IHNxcnQoMS4yNWQwL2ZwaSkgKiAoMy5kMCogY29zdCpjb3N0LTEuZDApDQog ICByZXR1cm4NCmVuZCBmdW5jdGlvbiBkejINCmZ1bmN0aW9uIGR4eihjb3N0 LHBoaSkNCiAgIHVzZSBraW5kcywgT05MWSA6ICBEUA0KICAgaW1wbGljaXQg bm9uZQ0KICAgcmVhbChEUCksIHBhcmFtZXRlciA6OiBwaT0zLjE0MTU5MjY1 MzU4OTc5ZDAsIGZwaSA9NC5kMCpwaQ0KICAgcmVhbChEUCkgOjpkeHosIGNv c3QsIHBoaSwgc2ludA0KICAgc2ludCA9IHNxcnQoYWJzKDEuZDAgLSBjb3N0 KmNvc3QpKQ0KICAgZHh6ID0gIHNxcnQoMTUuZDAvZnBpKSAqIHNpbnQqY29z dCAqIGNvcyhwaGkpDQogICByZXR1cm4NCmVuZCBmdW5jdGlvbiBkeHoNCmZ1 bmN0aW9uIGR5eihjb3N0LHBoaSkNCiAgIHVzZSBraW5kcywgT05MWSA6ICBE UA0KICAgaW1wbGljaXQgbm9uZQ0KICAgcmVhbChEUCksIHBhcmFtZXRlciA6 OiBwaT0zLjE0MTU5MjY1MzU4OTc5ZDAsIGZwaSA9NC5kMCpwaQ0KICAgcmVh bChEUCkgOjpkeXosIGNvc3QsIHBoaSwgc2ludA0KICAgc2ludCA9IHNxcnQo YWJzKDEuZDAgLSBjb3N0KmNvc3QpKQ0KICAgZHl6ID0gIHNxcnQoMTUuZDAv ZnBpKSAqIHNpbnQqY29zdCAqIHNpbihwaGkpDQogICByZXR1cm4NCmVuZCBm dW5jdGlvbiBkeXoNCmZ1bmN0aW9uIGR4Mm15Mihjb3N0LHBoaSkNCiAgIHVz ZSBraW5kcywgT05MWSA6ICBEUA0KICAgaW1wbGljaXQgbm9uZQ0KICAgcmVh bChEUCksIHBhcmFtZXRlciA6OiBwaT0zLjE0MTU5MjY1MzU4OTc5ZDAsIGZw aSA9NC5kMCpwaQ0KICAgcmVhbChEUCkgOjpkeDJteTIsIGNvc3QsIHBoaSwg c2ludA0KICAgc2ludCA9IHNxcnQoYWJzKDEuZDAgLSBjb3N0KmNvc3QpKQ0K ICAgZHgybXkyID0gIHNxcnQoMy43NWQwL2ZwaSkgKiBzaW50KnNpbnQgKiBj b3MoMi5kMCpwaGkpDQogICByZXR1cm4NCmVuZCBmdW5jdGlvbiBkeDJteTIN CmZ1bmN0aW9uIGR4eShjb3N0LHBoaSkNCiAgIHVzZSBraW5kcywgT05MWSA6 ICBEUA0KICAgaW1wbGljaXQgbm9uZQ0KICAgcmVhbChEUCksIHBhcmFtZXRl ciA6OiBwaT0zLjE0MTU5MjY1MzU4OTc5ZDAsIGZwaSA9NC5kMCpwaQ0KICAg cmVhbChEUCkgOjpkeHksIGNvc3QsIHBoaSwgc2ludA0KICAgc2ludCA9IHNx cnQoYWJzKDEuZDAgLSBjb3N0KmNvc3QpKQ0KICAgZHh5ID0gIHNxcnQoMy43 NWQwL2ZwaSkgKiBzaW50KnNpbnQgKiBzaW4oMi5kMCpwaGkpDQogICByZXR1 cm4NCmVuZCBmdW5jdGlvbiBkeHkNCiE9PT09PT09PSBsID0gMyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0NCmZ1bmN0aW9uIGZ6Myhjb3N0LHBoaSkNCiAg IHVzZSBraW5kcywgT05MWSA6ICBEUA0KICAgaW1wbGljaXQgbm9uZQ0KICAg cmVhbChEUCksIHBhcmFtZXRlciA6OiBwaT0zLjE0MTU5MjY1MzU4OTc5ZDAs IGZwaSA9NC5kMCpwaQ0KICAgcmVhbChEUCkgOjpmejMsIGNvc3QsIHBoaQ0K ICAgZnozID0gIDAuMjVkMCpzcXJ0KDcuZDAvcGkpICogKCA1LmQwICogY29z dCAqIGNvc3QgLSAzLmQwICkgKiBjb3N0DQogICByZXR1cm4NCmVuZCBmdW5j dGlvbiBmejMNCmZ1bmN0aW9uIGZ4ejIoY29zdCxwaGkpDQogICB1c2Uga2lu ZHMsIE9OTFkgOiAgRFANCiAgIGltcGxpY2l0IG5vbmUNCiAgIHJlYWwoRFAp LCBwYXJhbWV0ZXIgOjogcGk9My4xNDE1OTI2NTM1ODk3OWQwLCBmcGkgPTQu ZDAqcGkNCiAgIHJlYWwoRFApIDo6Znh6MiwgY29zdCwgcGhpLCBzaW50DQog ICBzaW50ID0gc3FydChhYnMoMS5kMCAtIGNvc3QqY29zdCkpDQogICBmeHoy ID0gIDAuMjVkMCpzcXJ0KDEwLjVkMC9waSkgKiAoIDUuZDAgKiBjb3N0ICog Y29zdCAtIDEuZDAgKSAqIHNpbnQgKiBjb3MocGhpKQ0KICAgcmV0dXJuDQpl bmQgZnVuY3Rpb24gZnh6Mg0KZnVuY3Rpb24gZnl6Mihjb3N0LHBoaSkNCiAg IHVzZSBraW5kcywgT05MWSA6ICBEUA0KICAgaW1wbGljaXQgbm9uZQ0KICAg cmVhbChEUCksIHBhcmFtZXRlciA6OiBwaT0zLjE0MTU5MjY1MzU4OTc5ZDAs IGZwaSA9NC5kMCpwaQ0KICAgcmVhbChEUCkgOjpmeXoyLCBjb3N0LCBwaGks IHNpbnQNCiAgIHNpbnQgPSBzcXJ0KGFicygxLmQwIC0gY29zdCpjb3N0KSkN CiAgIGZ5ejIgPSAgMC4yNWQwKnNxcnQoMTAuNWQwL3BpKSAqICggNS5kMCAq IGNvc3QgKiBjb3N0IC0gMS5kMCApICogc2ludCAqIHNpbihwaGkpDQogICBy ZXR1cm4NCmVuZCBmdW5jdGlvbiBmeXoyDQpmdW5jdGlvbiBmengybXkyKGNv c3QscGhpKQ0KICAgdXNlIGtpbmRzLCBPTkxZIDogIERQDQogICBpbXBsaWNp dCBub25lDQogICByZWFsKERQKSwgcGFyYW1ldGVyIDo6IHBpPTMuMTQxNTky NjUzNTg5NzlkMCwgZnBpID00LmQwKnBpDQogICByZWFsKERQKSA6OmZ6eDJt eTIsIGNvc3QsIHBoaSwgc2ludA0KICAgc2ludCA9IHNxcnQoYWJzKDEuZDAg LSBjb3N0KmNvc3QpKQ0KICAgZnp4Mm15MiA9ICAwLjI1ZDAqc3FydCgxMDVk MC9waSkgKiBzaW50ICogc2ludCAqIGNvc3QgKiBjb3MoMi5kMCpwaGkpDQog ICByZXR1cm4NCmVuZCBmdW5jdGlvbiBmengybXkyDQpmdW5jdGlvbiBmeHl6 KGNvc3QscGhpKQ0KICAgdXNlIGtpbmRzLCBPTkxZIDogIERQDQogICBpbXBs aWNpdCBub25lDQogICByZWFsKERQKSwgcGFyYW1ldGVyIDo6IHBpPTMuMTQx NTkyNjUzNTg5NzlkMCwgZnBpID00LmQwKnBpDQogICByZWFsKERQKSA6OmZ4 eXosIGNvc3QsIHBoaSwgc2ludA0KICAgc2ludCA9IHNxcnQoYWJzKDEuZDAg LSBjb3N0KmNvc3QpKQ0KICAgZnh5eiA9ICAwLjI1ZDAqc3FydCgxMDVkMC9w aSkgKiBzaW50ICogc2ludCAqIGNvc3QgKiBzaW4oMi5kMCpwaGkpDQogICBy ZXR1cm4NCmVuZCBmdW5jdGlvbiBmeHl6DQpmdW5jdGlvbiBmeHgybTN5Mihj b3N0LHBoaSkNCiAgIHVzZSBraW5kcywgT05MWSA6ICBEUA0KICAgaW1wbGlj aXQgbm9uZQ0KICAgcmVhbChEUCksIHBhcmFtZXRlciA6OiBwaT0zLjE0MTU5 MjY1MzU4OTc5ZDAsIGZwaSA9NC5kMCpwaQ0KICAgcmVhbChEUCkgOjpmeHgy bTN5MiwgY29zdCwgcGhpLCBzaW50DQogICBzaW50ID0gc3FydChhYnMoMS5k MCAtIGNvc3QqY29zdCkpDQogICBmeHgybTN5MiA9ICAwLjI1ZDAqc3FydCgx Ny41ZDAvcGkpICogc2ludCAqIHNpbnQgKiBzaW50ICogY29zKDMuZDAqcGhp KQ0KICAgcmV0dXJuDQplbmQgZnVuY3Rpb24gZnh4Mm0zeTINCmZ1bmN0aW9u IGZ5M3gybXkyKGNvc3QscGhpKQ0KICAgdXNlIGtpbmRzLCBPTkxZIDogIERQ DQogICBpbXBsaWNpdCBub25lDQogICByZWFsKERQKSwgcGFyYW1ldGVyIDo6 IHBpPTMuMTQxNTkyNjUzNTg5NzlkMCwgZnBpID00LmQwKnBpDQogICByZWFs KERQKSA6OmZ5M3gybXkyLCBjb3N0LCBwaGksIHNpbnQNCiAgIHNpbnQgPSBz cXJ0KGFicygxLmQwIC0gY29zdCpjb3N0KSkNCiAgIGZ5M3gybXkyID0gIDAu MjVkMCpzcXJ0KDE3LjVkMC9waSkgKiBzaW50ICogc2ludCAqIHNpbnQgKiBz aW4oMy5kMCpwaGkpDQogICByZXR1cm4NCmVuZCBmdW5jdGlvbiBmeTN4Mm15 Mg0KIQ0KIQ0KIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpzdWJyb3V0 aW5lIHJhZGlhbHBhcnQobmcsIHEsIGFsZmEsIHJ2YWx1ZSwgbG1heCwgcmFk aWFsKQ0KICAhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIQ0KICAh IFRoaXMgcm91dGluZSBjb21wdXRlcyBhIHRhYmxlIHdpdGggdGhlIHJhZGlh bCBGb3VyaWVyIHRyYW5zZm9ybSANCiAgISBvZiB0aGUgcmFkaWFsIGZ1bmN0 aW9ucy4NCiAgIQ0KICBVU0Uga2luZHMsICAgICAgT05MWSA6IGRwDQogIFVT RSBjb25zdGFudHMsICBPTkxZIDogZnBpDQogIFVTRSBjZWxsX2Jhc2UsICBP TkxZIDogb21lZ2ENCiAgIQ0KICBpbXBsaWNpdCBub25lDQogICEgSS9PDQog IGludGVnZXIgOjogbmcsIHJ2YWx1ZSwgbG1heA0KICByZWFsKERQKSA6OiBx KG5nKSwgYWxmYSwgcmFkaWFsKG5nLDA6bG1heCkNCiAgISBsb2NhbCB2YXJp YWJsZXMNCiAgcmVhbChEUCksIHBhcmFtZXRlciA6OiB4bWluPS02LmQwLCBk eD0wLjAyNWQwLCBybWF4PTEwLmQwDQoNCiAgcmVhbChEUCkgOjogcmFkX2lu dCwgcHJlZiwgeA0KICBpbnRlZ2VyIDo6IGwsIGxwMSwgaXIsIGlnLCBtZXNo X3INCiAgcmVhbChEUCksIGFsbG9jYXRhYmxlIDo6IGJlcyg6KSwgZnVuY19y KDopLCByKDopLCByaWooOiksIGF1eCg6KQ0KDQogIG1lc2hfciA9IG5pbnQg KCAoIGxvZyAoIHJtYXggKSAtIHhtaW4gKSAvIGR4ICsgMSApDQogIGFsbG9j YXRlICggYmVzKG1lc2hfciksIGZ1bmNfcihtZXNoX3IpLCByKG1lc2hfciks IHJpaihtZXNoX3IpICkNCiAgYWxsb2NhdGUgKCBhdXgobWVzaF9yKSkNCiAg IQ0KICAhICAgIGNvbXB1dGUgdGhlIHJhZGlhbCBtZXNoDQogICENCiAgZG8g aXIgPSAxLCBtZXNoX3INCiAgICAgeCA9IHhtaW4gICsgREJMRSAoaXIgLSAx KSAqIGR4IA0KICAgICByIChpcikgPSBleHAgKHgpIC8gYWxmYQ0KICAgICBy aWogKGlyKSA9IGR4ICAqIHIgKGlyKQ0KICBlbmRkbw0KICAhDQogIGlmIChy dmFsdWU9PTEpIGZ1bmNfcig6KSA9IDIuZDAgKiBhbGZhKiooMy5kMC8yLmQw KSAqIGV4cCgtYWxmYSpyKDopKQ0KICBpZiAocnZhbHVlPT0yKSBmdW5jX3Io OikgPSAxLmQwL3NxcnQoOC5kMCkgKiBhbGZhKiooMy5kMC8yLmQwKSAqICYg DQogICAgICAgICAgICAgICAgICAgICAoMi4wZDAgLSBhbGZhKnIoOikpICog ZXhwKC1hbGZhKnIoOikqMC41ZDApDQogIGlmIChydmFsdWU9PTMpIGZ1bmNf cig6KSA9IHNxcnQoNC5kMC8yNy5kMCkgKiBhbGZhKiooMi4wZDAvMy4wZDAp ICogJg0KICAgICAgICAgICAgICAgICAgICAgKDEuZDAgLSAxLjVkMCphbGZh KnIoOikgKyAyLmQwKihhbGZhKnIoOikpKioyLzI3LmQwKSAqICYNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHAoLWFs ZmEqcig6KS8zLjBkMCkNCiAgcHJlZiA9IGZwaS9zcXJ0KG9tZWdhKQ0KICAh DQogIGRvIGwgPSAwLCBsbWF4DQogICAgIGRvIGlnPTEsbmcNCiAgICAgICBj YWxsIHNwaF9iZXMgKG1lc2hfciwgcigxKSwgcShpZyksIGwsIGJlcykNCiAg ICAgICBhdXgoOikgPSBiZXMoOikgKiBmdW5jX3IoOikgKiByKDopDQogICAg ICAgY2FsbCBzaW1wc29uIChtZXNoX3IsIGF1eCwgcmlqLCByYWRfaW50KQ0K ICAgICAgIHJhZGlhbChpZyxsKSA9IHJhZF9pbnQgKiBwcmVmDQogICAgIGVu ZGRvDQogIGVuZGRvDQoNCiAgZGVhbGxvY2F0ZSAoYmVzLCBmdW5jX3IsIHIs IHJpaiwgYXV4ICkNCiAgcmV0dXJuDQplbmQgc3Vicm91dGluZSByYWRpYWxw YXJ0DQoNCg0K ---559023410-959030623-1160844569=:4756 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=wannier.f90 Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=wannier.f90 IQ0KISBDb3B5cmlnaHQgKEMpIDIwMDMgUFdTQ0YgZ3JvdXANCiEgVGhpcyBm aWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUNCiEg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFNlZSB0aGUgZmlsZSBgTGlj ZW5zZScNCiEgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSBwcmVzZW50 IGRpc3RyaWJ1dGlvbiwNCiEgb3IgaHR0cDovL3d3dy5nbnUub3JnL2NvcHls ZWZ0L2dwbC50eHQgLg0KIQ0KI2luY2x1ZGUgImZfZGVmcy5oIg0KIQ0KbW9k dWxlIHdhbm5pZXINCiAgIFVTRSBraW5kcywgb25seSA6IERQDQogICAhaW50 ZWdlciwgYWxsb2NhdGFibGUgOjogbm5iKDopICAgICAgICEgI2IgIChpaykN CiAgIGludGVnZXIgICAgICAgICAgICAgIDo6IG5uYiAgICAgICAgICAhICNi DQogICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSA6OiBrcGIoOiw6KSAgICAgISBr K2IgKGlrLGliKQ0KICAgaW50ZWdlciwgYWxsb2NhdGFibGUgOjogZ19rcGIo Oiw6LDopICEgR19rK2IgKGlwb2wsaWssaWIpDQogICBpbnRlZ2VyLCBhbGxv Y2F0YWJsZSA6OiBpZ18oOiw6KSAgICAgISBHX2srYiAoaXBvbCxpayxpYikN CiAgIGludGVnZXIsIGFsbG9jYXRhYmxlIDo6IGx3KDosOiksIG13KDosOikg ISBsIGFuZCBtIG9mIHdhbm5pZXIgKDE2LG5fd2FubmllcikNCiAgIGludGVn ZXIsIGFsbG9jYXRhYmxlIDo6IG51bV9zcGgoOikgICAhIG51bS4gZnVuYy4g aW4gbGluLiBjb21iLiwgKG5fd2FubmllcikNCiAgIGxvZ2ljYWwsIGFsbG9j YXRhYmxlIDo6IGV4Y2x1ZGVkX2JhbmQoOikNCiAgIGludGVnZXIgIDo6IGl1 bl9ubmtwLCBpdW5fbW1uLCBpdW5fYW1uLCBpdW5fYmFuZCwgaXVuX3Bsb3Qs IG5uYngsIG5fd2FubmllciwgbmV4YmFuZA0KICAgY29tcGxleChEUCksIGFs bG9jYXRhYmxlIDo6IGdmKDosOikgICEgZ3VkaW5nX2Z1bmN0aW9uKG5wd3gs bl93YW5uaWVyKQ0KICAgaW50ZWdlciAgICAgICAgICAgICAgIDo6IGlzcGlu dywgaWtzdGFydCwgaWtzdG9wLCBpa251bQ0KICAgY2hhcmFjdGVyKExFTj0x NSkgICAgIDo6IHdhbl9tb2RlICAgICEgcnVubmluZyBtb2RlDQogICBsb2dp Y2FsICAgICAgICAgICAgICAgOjogbG9nd2Fubiwgd3Zmbl9mb3JtYXR0ZWQs IHdyaXRlX3VuaywgJg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdy aXRlX2Ftbiwgd3JpdGVfbW1uLCByZWR1Y2VfdW5rDQogICAhIGlucHV0IGRh dGEgZnJvbSBubmtwIGZpbGUNCiAgIHJlYWwoRFApLCBhbGxvY2F0YWJsZSA6 OiBjZW50ZXJfdyg6LDopICAgICAhIGNlbnRlcl93KDMsbl93YW5uaWVyKQ0K ICAgaW50ZWdlciwgYWxsb2NhdGFibGUgIDo6IGxfdyg6KSwgbXJfdyg6KSAh IGwgYW5kIG1yIG9mIHdhbm5pZXIgKG5fd2FubmllcikgYXMgZnJvbSB0YWJs ZSAzLjEsMy4yIG9mIHNwZWMuDQogICBpbnRlZ2VyLCBhbGxvY2F0YWJsZSAg Ojogcl93KDopICAgICAgISBpbmRleCBvZiByYWRpYWwgZnVuY3Rpb24gKG5f d2FubmllcikgYXMgZnJvbSB0YWJsZSAzLjMgb2Ygc3BlYy4NCiAgIHJlYWwo RFApLCBhbGxvY2F0YWJsZSA6OiB4YXhpcyg6LDopLHpheGlzKDosOikgISB4 YXhpcyBhbmQgemF4aXMoMyxuX3dhbm5pZXIpDQogICByZWFsKERQKSwgYWxs b2NhdGFibGUgOjogYWxwaGFfdyg6KSAgISBhbHBoYV93KG5fd2Fubmllcikg KCBjYWxsZWQgem9uYSBpbiB3YW5uaWVyIHNwZWMpDQogICAhDQogICByZWFs KERQKSwgYWxsb2NhdGFibGUgOjogY3NwaCg6LDopICAgICEgZXhwYW5zaW9u IGNvZWZmaWNpZW50cyBvZiBnZiBvbiBRRSB5bG0gZnVuY3Rpb24gKDE2LG5f d2FubmllcikNCiAgIENIQVJBQ1RFUihsZW49MjU2KSA6OiBzZWVkbmFtZSAg PSAnd2FubmllcicgICEgcHJlcGVuZGVkIHRvIGZpbGUgbmFtZXMgaW4gd2Fu bmllcjkwDQogICAhIEZvciBpbXBsZW1lbnRhdGlvbiBvZiB3YW5uaWVyX2xp Yg0KICAgaW50ZWdlciAgICAgICAgICAgICAgIDo6IG1wX2dyaWQoMykgICAg ICAgICAgICAhIGRpbWVuc2lvbnMgb2YgTVAgay1wb2ludCBncmlkDQogICBy ZWFsKERQKSAgICAgICAgICAgICAgOjogcmxhdHQoMywzKSxnbGF0dCgzLDMp ICEgcmVhbCBhbmQgcmVjaXAgbGF0dGljZXMgKENhcnRlc2lhbiBjby1vcmRz LCB1bml0cyBvZiBBbmdzdHJvbSkNCiAgIHJlYWwoRFApLCBhbGxvY2F0YWJs ZSA6OiBrcHRfbGF0dCg6LDopICAhIGstcG9pbnRzIGluIGNyeXN0YWwgY28t b3Jkcy4ga3B0X2xhdHQoMyxpa251bSkgIA0KICAgcmVhbChEUCksIGFsbG9j YXRhYmxlIDo6IGF0Y2FydCg6LDopICAgICEgYXRvbSBjZW50cmVzIGluIENh cnRlc2lhbiBjby1vcmRzIGFuZCBBbmdzdHJvbSB1bml0cy4gYXRjYXJ0KDMs bmF0KQ0KICAgaW50ZWdlciAgICAgICAgICAgICAgIDo6IG51bV9iYW5kcyAg ICAgICEgbnVtYmVyIG9mIGJhbmRzIGxlZnQgYWZ0ZXIgZXhjbHVzaW9ucw0K ICAgY2hhcmFjdGVyKGxlbj0zKSwgYWxsb2NhdGFibGUgOjogYXRzeW0oOikg ISBhdG9taWMgc3ltYm9scy4gYXRzeW0obmF0KQ0KICAgaW50ZWdlciAgICAg ICAgICAgICAgIDo6IG51bV9ubm1heD0xMg0KICAgY29tcGxleChEUCksIGFs bG9jYXRhYmxlIDo6IG1fbWF0KDosOiw6LDopLCBhX21hdCg6LDosOikNCiAg IGNvbXBsZXgoRFApLCBhbGxvY2F0YWJsZSA6OiB1X21hdCg6LDosOiksIHVf bWF0X29wdCg6LDosOikNCiAgIGxvZ2ljYWwsIGFsbG9jYXRhYmxlICAgICA6 OiBsd2luZG93KDosOikNCiAgIHJlYWwoRFApLCBhbGxvY2F0YWJsZSAgICA6 OiB3YW5uX2NlbnRlcnMoOiw6KSx3YW5uX3NwcmVhZHMoOikNCiAgIHJlYWwo RFApICAgICAgICAgICAgICAgICA6OiBzcHJlYWRzKDMpDQogICByZWFsKERQ KSwgYWxsb2NhdGFibGUgICAgOjogZWlndmFsKDosOikNCmVuZCBtb2R1bGUg d2Fubmllcg0KIQ0KDQoNCg== ---559023410-959030623-1160844569=:4756-- From vranjan@ncsu.edu Thu Oct 19 05:21:29 2006 From: vranjan@ncsu.edu (Vivek Ranjan) Date: Thu, 19 Oct 2006 00:21:29 -0400 (EDT) Subject: [Wannier] bto wannier functions Message-ID: <55076.75.178.189.40.1161231689.squirrel@webmail.ncsu.edu> Hi ! I want to know how the intial guess wannier functions of BaTiO_3 was chosen for producing fig.2, pg 133, of An Introduction to the Maximally-Localized Wannier Functions by Nicola Marzari, Ivo Souza, and David Vanderbilt, Scienticfic Highlight of the Month, Psi-K Newsletter 57, 129 (2003). I am using a single gaussian functions with five centers (Ba, Ti, and three O) : s and d type centered on Ba, s and p type centered on Ti, and three oxygens. Is this OK ? I want to calculate polarization within the unit cell of BaTiO_3 as well as make some nice figures. Thank you, Vivek __________________________________________________________________________ web : http://www.geocities.com/vivekranjanweb __________________________________________________________________________ Vivek Ranjan Email : vranjan@chips.ncsu.edu Center for High Performance Simulation : vranjan@ncsu.edu Department of Physics NC State University Phone : +1-919-513-0613 (Office) Campus Box 7518 Fax : +1-919-513-4804 Raleigh, NC 27695 -------------------------------------------------------------------------- From vranjan@ncsu.edu Thu Oct 19 04:56:30 2006 From: vranjan@ncsu.edu (Vivek Ranjan) Date: Wed, 18 Oct 2006 23:56:30 -0400 (EDT) Subject: [Wannier] (no subject) In-Reply-To: <20061019035318.2946.51878.Mailman@democritos.sissa.it> References: <20061019035318.2946.51878.Mailman@democritos.sissa.it> Message-ID: <33559.75.178.189.40.1161230190.squirrel@webmail.ncsu.edu> confirm 413355 From marzari@MIT.EDU Thu Oct 19 20:42:29 2006 From: marzari@MIT.EDU (Nicola Marzari) Date: Thu, 19 Oct 2006 15:42:29 -0400 Subject: [Wannier] bto wannier functions In-Reply-To: <55076.75.178.189.40.1161231689.squirrel@webmail.ncsu.edu> References: <55076.75.178.189.40.1161231689.squirrel@webmail.ncsu.edu> Message-ID: <4537D525.7030906@mit.edu> Hi Vivek, I did study different group of bands separately - e.g. the O 2s bands, with three spherically symmetric gaussians, or the O 2p bands, with p_x, p_y, p_z orbitals on each oxygen. I had 20 bands in total (18 electrons from the oxygens, 10 from the Ba, 12 from the Ti) and these were all the combinations I used, depending on the different groups of bands I was looking at (sometimes I would look at Ba 3p and O 2s together, or separately). In the fourth column, 0 means s, 1 means p, and in the fifth columun -1 0 and 1 mean px py and pz. note that that this is an old notation, superseded in the current wannier. nicola 1band/wannier.centers :::::::::::::: 0.500000 0.500000 0.500000 0 0 :::::::::::::: 3bands_Ba/wannier.centers :::::::::::::: 0.000000 0.000000 0.000000 1 -1 0.000000 0.000000 0.000000 1 0 0.000000 0.000000 0.000000 1 1 :::::::::::::: 3bands_O/wannier.centers :::::::::::::: 0.000000 0.500000 0.500000 0 0 0.500000 0.000000 0.500000 0 0 0.500000 0.500000 0.000000 0 0 :::::::::::::: 4bands/wannier.centers :::::::::::::: 0.000000 0.000000 0.000000 0 0 0.500000 0.500000 0.500000 1 -1 0.500000 0.500000 0.500000 1 0 0.500000 0.500000 0.500000 1 1 :::::::::::::: 6bands/wannier.centers :::::::::::::: 0.000000 0.000000 0.000000 1 -1 0.000000 0.000000 0.000000 1 0 0.000000 0.000000 0.000000 1 1 0.000000 0.500000 0.500000 0 0 0.500000 0.000000 0.500000 0 0 0.500000 0.500000 0.000000 0 0 :::::::::::::: 9bands/wannier.centers :::::::::::::: 0.000000 0.500000 0.500000 1 -1 0.000000 0.500000 0.500000 1 0 0.000000 0.500000 0.500000 1 1 0.500000 0.000000 0.500000 1 -1 0.500000 0.000000 0.500000 1 0 0.500000 0.000000 0.500000 1 1 0.500000 0.500000 0.000000 1 -1 0.500000 0.500000 0.000000 1 0 0.500000 0.500000 0.000000 1 1 Vivek Ranjan wrote: > Hi ! > > I want to know how the intial guess wannier functions of BaTiO_3 was > chosen for producing fig.2, pg 133, of An Introduction to the > Maximally-Localized Wannier Functions by Nicola Marzari, Ivo Souza, and > David Vanderbilt, Scienticfic Highlight of the Month, Psi-K Newsletter 57, > 129 (2003). > > I am using a single gaussian functions with five centers (Ba, Ti, and > three O) : s and d type centered on Ba, s and p type centered on Ti, and > three oxygens. Is this OK ? I want to calculate polarization within the > unit cell of BaTiO_3 as well as make some nice figures. > > > > Thank you, > Vivek > > > __________________________________________________________________________ > web : http://www.geocities.com/vivekranjanweb > __________________________________________________________________________ > Vivek Ranjan Email : vranjan@chips.ncsu.edu > Center for High Performance Simulation : vranjan@ncsu.edu > Department of Physics > NC State University Phone : +1-919-513-0613 (Office) > Campus Box 7518 Fax : +1-919-513-4804 > Raleigh, NC 27695 > -------------------------------------------------------------------------- > > _______________________________________________ > Wannier mailing list > Wannier@quantum-espresso.org > http://www.democritos.it/mailman/listinfo/wannier -- --------------------------------------------------------------------- Prof Nicola Marzari Department of Materials Science and Engineering 13-5066 MIT 77 Massachusetts Avenue Cambridge MA 02139-4307 USA tel 617.4522758 fax 2586534 marzari@mit.edu http://quasiamore.mit.edu From lanhaiping@gmail.com Sun Oct 22 13:53:05 2006 From: lanhaiping@gmail.com (lan haiping) Date: Sun, 22 Oct 2006 20:53:05 +0800 Subject: [Wannier] several questions about wannier calculation and settings Message-ID: ------=_Part_259863_8156769.1161521585966 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi. I tried to calculation anatase tio2 wannier center with wannier, but came to several failures with different error complains. one question is about kmesh setting: when i use 3x3x3 (or 4x4x2) mp grids , wannier could generate data tio2.nnkp without complain. But when i tried another mp grids such as 4x4x4, wannier would complain " kmesh_get: something wrong, found > 12 nearest neighbours" and exit without generating tio2.nnkp data file. would you please explain what the problem it is related to ? From mannual , i guess this error is due to kpoints' shell, but i donot follow much idea about this setting, would you please explain more about it ? Just with(4x4x2 mp mesh) , successfully finishing pw2wannier calculation , but wannier.x calculation gave this complain: "param_read: mismatch in tita.eig" . Does it mean scf calculation is not converged or wrong parameters for wannier.x ? another stupid question about projection setting: the setting Nicola gave for PbTiO3 in last mail is according its band's structure , and the projection functions are s/p type-like orbitals. i wanna know whether there are some guidelines for setting up initial projection functions ? input file for tio2.win num_wann = 24 num_iter = 400 begin atoms_cart Ti 0.000000000 -0.946250000 -1.189250000 Ti 0.000000000 0.946250000 1.189250000 O 0.000000000 0.946250000 -0.796426921 O 0.000000000 -0.946250000 0.796426921 O 1.892500000 0.946250000 1.582073079 O -1.892500000 -0.946250000 -1.582073079 end atoms_cart begin projections Ti:sp3 O : sp3 end projections begin unit_cell_cart bohr 3.5763081161879673 -3.5763081161879673 8.9894295386987704 3.5763081161879673 3.5763081161879673 8.9894295386987704 -3.5763081161879673 -3.5763081161879673 8.9894295386987704 end unit_cell_cart mp_grid : 4 4 2 begin kpoints ............. end kpoints regards, hai-ping ------=_Part_259863_8156769.1161521585966 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline
Hi.
 I tried to calculation anatase tio2 wannier center with wannier, but  came to several failures with different error complains.
 
one question is about kmesh setting:
   when i use 3x3x3 (or 4x4x2) mp grids , wannier could generate data tio2.nnkp without complain. But when i tried another mp grids such as 4x4x4, wannier would complain  " kmesh_get: something wrong, found > 12 nearest neighbours"  and exit without generating tio2.nnkp data file.   would you please  explain what the problem it is related to ?   From mannual , i guess this error is due to kpoints' shell, but i donot follow much idea about this setting, would you please explain more about it ?
 
Just with(4x4x2 mp mesh) , successfully finishing pw2wannier calculation , but wannier.x calculation gave this complain: "param_read: mismatch in tita.eig"  .  Does it mean scf calculation is not converged or wrong parameters for wannier.x ?
 
another stupid question about projection setting:    the setting Nicola gave for PbTiO3 in last mail  is according its band's structure , and the projection functions are s/p type-like orbitals.  i wanna know   whether there are some guidelines for setting up initial projection functions ?
 
input file for tio2.win

num_wann  = 24
num_iter  = 400

begin atoms_cart
Ti       0.000000000  -0.946250000  -1.189250000
Ti       0.000000000   0.946250000   1.189250000
O        0.000000000   0.946250000  -0.796426921
O        0.000000000  -0.946250000   0.796426921
O        1.892500000   0.946250000   1.582073079
O       -1.892500000  -0.946250000  -1.582073079
end atoms_cart

begin projections
Ti:sp3
O : sp3
end projections

begin unit_cell_cart
bohr
          3.5763081161879673  -3.5763081161879673  8.9894295386987704
          3.5763081161879673   3.5763081161879673  8.9894295386987704
         -3.5763081161879673  -3.5763081161879673   8.9894295386987704
end unit_cell_cart
mp_grid : 4 4  2
  begin kpoints

  .............
 end kpoints

 
regards,
hai-ping
 
 
------=_Part_259863_8156769.1161521585966-- From jry20@cam.ac.uk Sun Oct 22 15:58:34 2006 From: jry20@cam.ac.uk (Jonathan Yates) Date: Sun, 22 Oct 2006 15:58:34 +0100 (BST) Subject: [Wannier] several questions about wannier calculation and settings In-Reply-To: References: Message-ID: On Sun, 22 Oct 2006, lan haiping wrote: > one question is about kmesh setting: > when i use 3x3x3 (or 4x4x2) mp grids , wannier could generate data > tio2.nnkp without complain. But when i tried another mp grids such as 4x4x4, > wannier would complain " kmesh_get: something wrong, found > 12 nearest > neighbours" and exit without generating tio2.nnkp data file. would you > please explain what the problem it is related to ? From mannual , i guess > this error is due to kpoints' shell, but i donot follow much idea about this > setting, would you please explain more about it ? If you go back to the original formulation in the Marzari-Vanderbilt MLWF paper you see that rather than use a real space representation of the position operator we use a k-space finite difference approach. In 1-D a finite difference formula is trivial. For a general 3-D lattice it is a little more complicated; this is discussed in detail in Appendix B of M-V. Wannier90 takes your crystal lattice and finds the reciprocal lattice. It them looks for shells of kpoints away from the origin. Next it decides which combination of shells gives a good finite difference representation (it might be just the 1st shell, or the 1st and 2nd shells, or maybe the 1st, 4th and 7th shells). One thing we know from Appendix B of M-V is that we shouldn't need more than 12 kpoints to give a good finite difference representation. If the code finds more than 12 kpoints it aborts with the warning you found. This is normally an indication something is wrong with the lattice, or the kpoints. One way in which this can happen is if you use a 3x3x3 (or 6x6x6) mesh and don't give the kpoints to sufficient precision. For this reason we supply a script kmesh.pl in ./utilities/ - this gives the kpoints to the required accuracy. In your particular case I don't think this is the problem. In fact I could run your input file with a whole series of mp grids (inc 4x4x4) with no trouble at all. Maybe this a problem with your particular setup? [ie buggy compiler, or lapack library] You can find my exact input and outputs on the following webpage http://www.tcm.phy.cam.ac.uk/~jry20/wannier90/ > Just with(4x4x2 mp mesh) , successfully finishing pw2wannier calculation , > but wannier.x calculation gave this complain: "param_read: mismatch in > tita.eig" . Does it mean scf calculation is not converged or wrong > parameters for wannier.x ? It's nothing to do with the scf calculation. Wannier90 has found a different number of bands or kpoints to what it was expecting. In the example you gave (num_wann=24, mp_grid = 4 4 2), *.eig should have 24x4x4x2=768 lines. I suspect you might have included more than 24 bands in your pwscf nscf calculation. But can check this by looking at the *.eig file. Each line of of *.eig is band# kpoint# eigenvalue. > another stupid question about projection setting: the setting Nicola gave > for PbTiO3 in last mail is according its band's structure , and the > projection functions are s/p type-like orbitals. i wanna know whether > there are some guidelines for setting up initial projection functions ? Ok, I'll come back to this latter (or maybe someone else will say something). I will add that Nicola's article on MLWF for perovskites is available on cond-mat. http://arxiv.org/abs/cond-mat/9802210 I wasn't aware of this until recently; the actual article is from an AIP conference proceedings, but I couldn't find this electronically. Yours Jonathan -- Dr Jonathan Yates | Theory of Condensed Matter Group Corpus Christi College | Cavendish Laboratory Cambridge, CB2 1RH, UK | Cambridge, CB3 OHE, UK email jry20@cam.ac.uk | Tel +44 (0)1223 337461 From jry20@cam.ac.uk Sun Oct 22 22:04:28 2006 From: jry20@cam.ac.uk (Jonathan Yates) Date: Sun, 22 Oct 2006 22:04:28 +0100 Subject: [Wannier] several questions about wannier calculation and settings In-Reply-To: References: Message-ID: <453BDCDC.70608@cam.ac.uk> > another stupid question about projection setting: the setting Nicola > gave for PbTiO3 in last mail is according its band's structure , and > the projection functions are s/p type-like orbitals. i wanna know > whether there are some guidelines for setting up initial projection > functions ? The projections functions are just a starting guess. In an ideal world the wannier90 minimiser would be so good that it didn't need a starting guess. Sometimes this is true, but often the guess helps. The projections should reflect the character of states you are working with. So lets take Anatase. Your file has num_wann=24. I'm assuming this means you are including the Ti 3s/3p semi-core states. While this is good for the ab-initio calculation you probably don't want WF for those states (just because they aren't so interesting) After running the nscf calculation with 24 bands you could exclude the semi-core states from the pw2wannier90 and all subsequent calculations by putting exclude_bands = 1 2 3 4 in the wannier90 file. (with num_wann=16). So now you want 16 WF to describe the valence bands. Chemistry tells you that these are combinations of O 2s/2p states. So you could try O:sp3 or O:sp2;pz or O:s,p maybe all of these work equally well, maybe one is better. There are some existing papers on MLWF for TiO2 polymorphs Phys. Rev. B 69, 121101(R) (2004) Phys. Rev. B 74, 125113 (2006) Hope this helps Yours Jonathan ps. I made plenty of assumptions about your calculations, if I got anything wrong you'll have to correct me and give us more details. -- Dr Jonathan Yates | Theory of Condensed Matter Group Corpus Christi College | Cavendish Laboratory Cambridge, CB2 1RH, UK | Cambridge, CB3 OHE, UK email jry20@cam.ac.uk | Tel +44 (0)1223 337461