結果

問題 No.9000 Hello World! (テスト用)
ユーザー kimiyuki
提出日時 2018-03-23 18:20:23
言語 Bash
(Bash 5.2.21)
結果
RE  
実行時間 -
コード長 51,955 bytes
コンパイル時間 53 ms
コンパイル使用メモリ 6,948 KB
実行使用メモリ 6,948 KB
最終ジャッジ日時 2024-06-24 21:32:30
合計ジャッジ時間 861 ms
ジャッジサーバーID
(参考情報)
judge2 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other RE * 4
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

�PNG
·
���
IHDR���E���···����k�����StEXtComment�= :;: <<'a86e4bb8062f308935461bdd23d2bf0dc3a24ec37871f6473d06e68e1b3ca58e'
·HV·��·GIDATx��··�0·D�����"͇��T�_�··�Y� 8·&�I�· @·9&�W� �*��·�O&�!��񴥳R�u�"�-Dг�·5��dy���a�{��Q·Y·�dR·8�~9�dQ��{����',�K]�y�!f*kT⮿�����!
    <�··�v·O�r�O���c·�<b��··�B·y(o�·��U<KQ�� �··�.�[F��i����··�g·Pe·�ǒԍ��i<�x··K�b ܟ���·�2F/k�����q���1p6���.�G�V��S�����X·1�w�
    +@�5�|�8����B�j1`�^`��N��&au·,ߎ�p����|P�&vk�!�q��"Az�|···!c�J�sM���·tEXt
a86e4bb8062f308935461bdd23d2bf0dc3a24ec37871f6473d06e68e1b3ca58e
base64 -d <<EOF > Interpreter.pm
cGFja2FnZSBQaWV0OjpJbnRlcnByZXRlcjsKCnVzZSA1LjYuMDsgICAjICBvciBzby4KdXNlIHN0cmljdDsKdXNlIENhcnA7CiMgdXNlIEltYWdlOjpNYWdpY2s7CgpvdXIgJFZFUlNJT04gPSAnMC
    4wMyc7Cgo9aGVhZDEgTkFNRQoKUGlldDo6SW50ZXJwcmV0ZXIgLSBJbnRlcnByZXRlciBmb3IgdGhlIFBpZXQgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UKCj1oZWFkMSBTWU5PUFNJUwoKICAgIHVz
    ZSBQaWV0OjpJbnRlcnByZXRlcjsKCiAgICBteSAkcCA9IFBpZXQ6OkludGVycHJldGVyLT5uZXcoaW1hZ2UgPT4gJ215X2NvZGUuZ2lmJyk7CgogICAgJHAtPnJ1bjsKCj1oZWFkMSBERVNDUk
    lQVElPTgoKUGlldCBpcyBhIHByb2dyYW1taW5nIGxhbmd1YWdlIGluIHdoaWNoIHByb2dyYW1zIGxvb2sgbGlrZSBhYnN0cmFjdApwYWludGluZ3MuIFRoZSBsYW5ndWFnZSBpcyBuYW1lZCBh
    ZnRlciBQaWV0IE1vbmRyaWFuLCB3aG8gcGlvbmVlcmVkCnRoZSBmaWVsZCBvZiBnZW9tZXRyaWMgYWJzdHJhY3QgYXJ0LiAgVGhlIGxhbmd1YWdlIGlzIGZ1bGx5IGRlc2NyaWJlZAphdCBodH
    RwOi8vd3d3LnBoeXNpY3MudXN5ZC5lZHUuYXUvfm1hci9lc290ZXJpYy9waWV0Lmh0bWwuICBBIFBpZXQKcHJvZ3JhbSBpcyBhbiBpbWFnZSBmaWxlLCB1c3VhbGx5IGEgZ2lmLCB3aGljaCB1
    c2VzIGEgc2V0IG9mIDIwIGNvbG9ycwphbmQgdGhlIHRyYW5zaXRpb25zIGJldHdlZW4gYmxvY2tzIG9mIHRob3NlIGNvbG9ycyB0byBkZWZpbmUgYSBzZXJpZXMKb2YgaW5zdHJ1Y3Rpb25zIG
    FuZCBwcm9ncmFtIGZsb3cuICBTZWUgdGhlIGFib3ZlIFVSTCBmb3IgbW9yZSBkZXRhaWxzLgooTm90ZTogc29tZSBzYW1wbGUgcHJvZ3JhbXMgdGhlcmUgbWF5IG5vdCB3b3JrLCBhcyB0aGV5
    IHdlcmUKY29uc3RydWN0ZWQgYmVmb3JlIGEgd29ya2luZyBpbnRlcnByZXRlciB3YXMgYXZhaWxhYmxlLikKClNpbmNlIFBpZXQgaXMgYSB2aXN1YWwgbGFuZ3VhZ2UsIGFuIGltYWdlIHBhcn
    NpbmcgbWVjaGFuaXNtIGlzCnJlcXVpcmVkLiAgVGhpcyBtb2R1bGUgdXNlcyBJbWFnZTo6TWFnaWNrLCBzbyBpdCB3b3VsZCBiZSB0byB5b3VyCmFkdmFudGFnZSB0byBkb3dubG9hZCwgaW5z
    dGFsbCwgYW5kIHRlc3QgdGhhdCBtb2R1bGUgYW5kIGl0cwpyZWxhdGVkIHN0dWZmIGJlZm9yZSB0cnlpbmcgdG8gdXNlIHRoaXMgb25lLiAgCgo9Y3V0CgojICBJbml0aWFsaXplIHZhcmlhYm
    xlcyBhbmQgbG9va3VwIGhhc2hlcwoKJHwgPSAxOyAgICAgIyAgYnVmZmVyIGJhZC4KCm15ICRIRVhfQkxBQ0sgID0gJzAwMDAwMCc7Cm15ICRIRVhfV0hJVEUgID0gJ0ZGRkZGRic7CgpteSAl
    aGV4MmNvbG9yICA9ICggJ0ZGQzBDMCcgPT4gJ2xpZ2h0IHJlZCcsICAgICAgICAnRkZGRkMwJyA9PiAnbGlnaHQgeWVsbG93JywKCQkgICAnQzBGRkMwJyA9PiAnbGlnaHQgZ3JlZW4nLCAgIC
    AgICdDMEZGRkYnID0+ICdsaWdodCBjeWFuJywKCQkgICAnQzBDMEZGJyA9PiAnbGlnaHQgYmx1ZScsICAgICAgICdGRkMwRkYnID0
    +ICdsaWdodCBtYWdlbnRhJywKCQkgICAnRkYwMDAwJyA9PiAncmVkJywgICAgICAgICAgICAgICdGRkZGMDAnID0+ICd5ZWxsb3cnLAoJCSAgICcwMEZGMDAnID0
    +ICdncmVlbicsCSAgICAgICAgICAgJzAwRkZGRicgPT4gJ2N5YW4nLAoJCSAgICcwMDAwRkYnID0
    +ICdibHVlJywgICAgICAgICAgICAgJ0ZGMDBGRicgPT4gJ21hZ2VudGEnLAoJCSAgICdDMDAwMDAnID0
    +ICdkYXJrIHJlZCcsICAgICAgICAgJ0MwQzAwMCcgPT4gJ2RhcmsgeWVsbG93JywKCQkgICAnMDBDMDAwJyA9PiAnZGFyayBncmVlbicsICAgICAgICcwMEMwQzAnID0
    +ICdkYXJrIGN5YW4nLAoJCSAgICcwMDAwQzAnID0
    +ICdkYXJrIGJsdWUnLCAgICAgICAgJ0MwMDBDMCcgPT4gJ2RhcmsgbWFnZW50YScsCgkJICAgJ0ZGRkZGRicgPT4gJ3doaXRlJywJICAgICAgICAgICAnMDAwMDAwJyA9PiAnYmxhY2snLAoJC
    SAgICk7CgpteSAlaGV4MmFiYnIgICA9ICggJ0ZGQzBDMCcgPT4gJ2xSJywgJ0ZGRkZDMCcgPT4gJ2xZJywgJ0MwRkZDMCcgPT4gJ2xHJywKCQkgICAnQzBGRkZGJyA9PiAnbEMnLCAnQzBDMEZ
    GJyA9PiAnbEInLCAnRkZDMEZGJyA9PiAnbE0nLAoJCSAgICdGRjAwMDAnID0+ICcgUicsICdGRkZGMDAnID0+ICcgWScsICcwMEZGMDAnID0
    +ICcgRycsCgkJICAgJzAwRkZGRicgPT4gJyBDJywgJzAwMDBGRicgPT4gJyBCJywgJ0ZGMDBGRicgPT4gJyBNJywKCQkgICAnQzAwMDAwJyA9PiAnZFInLCAnQzBDMDAwJyA9PiAnZFknLCAnM
    DBDMDAwJyA9PiAnZEcnLAoJCSAgICcwMEMwQzAnID0+ICdkQycsICcwMDAwQzAnID0+ICdkQicsICdDMDAwQzAnID0
    +ICdkTScsCgkJICAgJ0ZGRkZGRicgPT4gJ1d0JywgJzAwMDAwMCcgPT4gJ0JrJywKCQkgICApOwoKbXkgJWhleDJodWUgICAgPSAoICdGRkMwQzAnID0+IDAsICdGRkZGQzAnID0
    +IDEsICdDMEZGQzAnID0+IDIsCgkJICAgJ0MwRkZGRicgPT4gMywgJ0MwQzBGRicgPT4gNCwgJ0ZGQzBGRicgPT4gNSwKCQkgICAnRkYwMDAwJyA9PiAwLCAnRkZGRjAwJyA9PiAxLCAnMDBGR
    jAwJyA9PiAyLAoJCSAgICcwMEZGRkYnID0+IDMsICcwMDAwRkYnID0+IDQsICdGRjAwRkYnID0
    +IDUsCgkJICAgJ0MwMDAwMCcgPT4gMCwgJ0MwQzAwMCcgPT4gMSwgJzAwQzAwMCcgPT4gMiwKCQkgICAnMDBDMEMwJyA9PiAzLCAnMDAwMEMwJyA9PiA0LCAnQzAwMEMwJyA9PiA1LAoJCSAgI
    CdGRkZGRkYnID0+IC0xLCAnMDAwMDAwJyA9PiAtMSwKCQkgICApOwoKbXkgJWhleDJsaWdodCAgPSAoICdGRkMwQzAnID0+IDAsICdGRkZGQzAnID0+IDAsICdDMEZGQzAnID0
    +IDAsCgkJICAgJ0MwRkZGRicgPT4gMCwgJ0MwQzBGRicgPT4gMCwgJ0ZGQzBGRicgPT4gMCwKCQkgICAnRkYwMDAwJyA9PiAxLCAnRkZGRjAwJyA9PiAxLCAnMDBGRjAwJyA9PiAxLAoJCSAgI
    CcwMEZGRkYnID0+IDEsICcwMDAwRkYnID0+IDEsICdGRjAwRkYnID0
    +IDEsCgkJICAgJ0MwMDAwMCcgPT4gMiwgJ0MwQzAwMCcgPT4gMiwgJzAwQzAwMCcgPT4gMiwKCQkgICAnMDBDMEMwJyA9PiAyLCAnMDAwMEMwJyA9PiAyLCAnQzAwMEMwJyA9PiAyLAoJCSAgI
    CdGRkZGRkYnID0+IC0xLCAnMDAwMDAwJyA9PiAtMSwKCQkgICApOwoKbXkgQGRvX2FyciA9ICgKCSAgICAgIFsgJ2RvX25vb3AnLCAgICAgICdkb19wdXNoJywgICAgICdkb19wb3AnIF0sCgk
    gICAgICBbICdkb19hZGQnLCAgICAgICAnZG9fc3VidHJhY3QnLCAnZG9fbXVsdGlwbHknIF0sCgkgICAgICBbICdkb19kaXZpZGUnLCAgICAnZG9fbW9kJywgICAgICAnZG9fbm90JyBdLAoJI
    CAgICAgWyAnZG9fZ3JlYXRlcicsICAgJ2RvX3BvaW50ZXInLCAgJ2RvX3N3aXRjaCcgXSwKCSAgICAgIFsgJ2RvX2R1cGxpY2F0ZScsICdkb19yb2xsJywgICAgICdkb19pbl9uJyBdLAoJICA
    gICAgWyAnZG9faW5fYycsICAgICAgJ2RvX291dF9uJywgICAgJ2RvX291dF9jJyBdLAoJICAgICAgKTsKCgojIyMjIyAgQmVnaW4gcHVibGljIG1ldGhvZHMgCiMKIyAgICAgIG5vdGU6ICBJJ
    20gbm90IHVzaW5nIGFjY2Vzc29yIG1ldGhvZHMgdG8gZ2V0IGF0IG1vc3Qgb2JqZWN0CiMgICAgICAgICAgICAgcHJvcGVydHkgdmFyaWFibGVzLiAgT24gcHVycG9zZS4KCj1oZWFkMSBNRVR
    IT0RTCgo9b3ZlcgoKPWl0ZW0gbXkgJHBpZXQgPSBQaWV0OjpJbnRlcnByZXRlci0
    +bmV3KCAlYXJncyApOwoKSW5zdGFudGlhdGVzIGFuZCByZXR1cm5zIGEgbmV3IFBpZXQ6OkludGVycHJldGVyIG9iamVjdC4gIFZhbGlkCmFyZ3VtZW50cyBhcmU6Cgo9b3ZlcgoKPWl0ZW0ga
    W1hZ2UgPT4gJ215X3Byb2cuZ2lmJwoKU3BlY2lmaWVzIHRoZSBwcm9ncmFtIGltYWdlIGZpbGUgdG8gbG9hZCBpbnRvIHRoZSBpbnRlcnByZXRlci4gCgo9aXRlbSBjb2RlbF9zaXplID0
    +ICRzaXplCgpUZWxscyB0aGUgaW50ZXJwcmV0ZXIgaG93IGxhcmdlIGEgY29kZWwgaXMsIGluIHBpeGVscy4gIERlZmF1bHRzIHRvIDEuCgo9aXRlbSBub25zdGFuZGFyZCA9PiAoJ3doaXRlJ
    3wnYmxhY2snKSAKClNldHMgdGhlIGJlaGF2aW9yIG9mIG5vbi1zdGFuZGFyZCBjb2xvcmVkIGNvZGVscyB0byBlaXRoZXIgJ3doaXRlJyBvcgonYmxhY2snLiAgRGVmYXVsdHMgdG8gJ3doaXR
    lJy4KCj1pdGVtIGRlYnVnID0+ICgxfDApIAoKVHVybnMgb24gZGVidWdnaW5nIGluZm9ybWF0aW9uLCBpbmNsdWRpbmcgd2FybmluZ3MuCgo9aXRlbSB3YXJuID0
    +ICgxfDApIAoKVHVybnMgb24gd2FybmluZ3Mgb25seS4KCj1pdGVtIHRyYWNlID0
    +ICgxfDApIAoKVHVybnMgb24gcHJvZ3JhbSB0cmFjaW5nLCB3aGljaCBvbmx5IG91dHB1dHMgaW5zdHJ1Y3Rpb25zIGFuZCB2YWx1ZXMuCgo9YmFjawoKPWN1dAoKc3ViIG5ldyB7CiAgICAKI
    CAgICMgIHVzYWdlOiAgbXkgJHBpZXQgPSBQaWV0OjpJbnRlcnByZXRlci0
    +bmV3KCBkZWJ1ZyA9PiAxLCAuLi4gKTsKICAgICMKICAgICMgICAgIFRoZSBJbnN0YW50aWF0b3IuICBSZXR1cm5zIGEgbmV3IGludGVycHJldGVyIG9iamVjdCwgcmVhZHkgdG8gZ28uIAogI
    CAgIyAgICAgQWNjZXB0cyBmbGFncyB0byBpbml0aWFsaXplIHByb3BlcnRpZXMgb24gY3JlYXRpb24uCgogICAgbXkgKCRjbGFzcywgJWFyZ3MpID0gQF87CiAgICAKICAgIG15ICRzZWxmID0
    gYmxlc3MgewoKCV9pbWFnZSAgICAgICA9PiB1bmRlZiwKCV9maWxlbmFtZSAgICA9PiB1bmRlZiwKCV9yb3dzICAgICAgICA9PiB1bmRlZiwKCV9jb2xzICAgICAgICA9PiB1bmRlZiwKCV9tY
    XRyaXggICAgICA9PiB1bmRlZiwKCV9jb2RlbF9zaXplICA9PiAkYXJnc3tjb2RlbF9zaXplfSAgfHwgMSwKCV9kZWJ1ZyAgICAgICA9PiAkYXJnc3tkZWJ1Z30gICAgICAgfHwgMCwKCV90cmF
    jZSAgICAgICA9PiAkYXJnc3t0cmFjZX0gICAgICAgfHwgMCwKCV93YXJuICAgICAgICA9PiAkYXJnc3t3YXJufSAgICAgICAgfHwgMCwKCV9ub25zdGFuZGFyZCA9PiAkYXJnc3tub25zdGFuZ
    GFyZH0gfHwgJ3doaXRlJywgCgogICAgfSwgcmVmKCRjbGFzcykgfHwgJGNsYXNzOwoKICAgICRzZWxmLT5yZXNldDsKICAgICRzZWxmLT5pbWFnZSgkYXJnc3tpbWFnZX0pIGlmICRhcmdze2l
    tYWdlfTsKCiAgICByZXR1cm4gJHNlbGY7Cn0KCj1pdGVtICRwaWV0LT5yZXNldDsKClJlc2V0cyB0aGUgUFZNIChQaWV0IFZpcnR1YWwgTWFjaGluZSkgYmFjayB0byB0aGUgZGVmYXVsdCBzd
    GF0ZS4KQWZ0ZXIgYSByZXNldCwgdGhlIGN1cnJlbnQgeCBhbmQgeSBzaG91bGQgYm90aCBiZSAwLCB0aGUgRFAgcG9pbnRzIHRvCnRoZSByaWdodCwgdGhlIENDIHBvaW50cyB0byB0aGUgbGV
    mdCwgYW5kIHRoZSBzdGFjayBzaG91bGQgYmUgZW1wdHkuCgo9Y3V0CgpzdWIgcmVzZXQgewoKICAgICMgIHVzYWdlOiAgJHBpZXQtPnJlc2V0OwogICAgIwogICAgIyAgICAgUmVzZXRzIHRoZ
    SBQVk0gKFBpZXQgVmlydHVhbCBNYWNoaW5lKSBiYWNrIHRvIHRoZSBpbml0aWFsIHN0YXRlLgoKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgJHNlbGYtPntfZHB9ICAgID0gIDA7ICAgIyA
    gIERpcmVjdGlvbiBQb2ludGVyOiAgMD1yaWdodCwgMT1kb3duLCAyPWxlZnQsIDM9dXAKICAgICRzZWxmLT57X2NjfSAgICA9IC0xOyAgICMgICAgICAgQ29kZWwgQ2hvb3NlcjogLTE9bGVmd
    CwgMT1yaWdodAogICAgJHNlbGYtPntfY3h9ICAgID0gIDA7ICAgIyAgQ3VycmVudCB4IHBvc2l0aW9uCiAgICAkc2VsZi0
    +e19jeX0gICAgPSAgMDsgICAjICBDdXJyZW50IHkgcG9zaXRpb24KCiAgICAkc2VsZi0
    +e19zdGFja30gICAgICAgICA9IFtdOwogICAgJHNlbGYtPntfY2hhbmdlX2ZsYWd9ICAgPSAwOwogICAgJHNlbGYtPntfc3RlcF9udW1iZXJ9ICAgPSB1bmRlZjsKICAgICRzZWxmLT57X2N1c
    nJlbnRfYmxvY2t9ID0gdW5kZWY7CiAgICAkc2VsZi0+e19ibG9ja192YWx1ZX0gICA9IHVuZGVmOwoKICAgICRzZWxmLT57X2xhc3RfY29sb3J9ID0gJHNlbGYtPm1hdHJpeCgkc2VsZi0
    +e19jeH0sJHNlbGYtPntfY3l9KTsKfQoKPWl0ZW0gJHBpZXQtPmltYWdlKCdteXByb2cuZ2lmJyk7CgpMb2FkcyBpbiBhIHByb2dyYW0gaW1hZ2UgZnJvbSB0aGUgc3BlY2lmaWVkIGZpbGUuI
    CBUaGUgaW50ZXJwcmV0ZXIgd2FzCmRlc2lnbmVkIGFuZCB0ZXN0ZWQgdXNpbmcgZ2lmIGltYWdlcywgYnV0IGFueSBmb3JtYXQgdGhhdCBpcyBzdXBwb3J0ZWQKYnkgSW1hZ2U6Ok1hZ2ljayB
    zaG91bGQgd29yayBqdXN0IGZpbmUuICBPbmNlIHRoZSBmaWxlIGhhcyBiZWVuCmxvYWRlZCwgaXQgaXMgaW5zcGVjdGVkIGFuZCBwcm9jZXNzZWQsIGNyZWF0aW5nIGEgcnVuLW1hdHJpeCBhb
    mQKZGV0ZXJtaW5pbmcgc29tZSB1c2VmdWwgcHJvcGVydGllcyBmcm9tIHRoZSBpbWFnZS4gIAoKTm90ZTogQmUgc3VyZSB0byBzZXQgdGhlIGNvZGVsIHNpemUsIGlmIG5lZWRlZCwgYmVmb3J
    lIGxvYWRpbmcgdGhlCmltYWdlLiAgT3RoZXJ3aXNlLCBhIHNpemUgb2YgMSB3aWxsIGJlIGFzc3VtZWQsIGFuZCB0aGUgY29kZWwgY29sdW1ucwphbmQgcm93cyB3aWxsIG5vdCBiZSBjYWxjd
    WxhdGVkIGNvcnJlY3RseSwgY2F1c2luZyBwYWluIGFuZAppcnJpdGF0aW9uLgoKPWN1dAoKc3ViIGltYWdlIHsKCiAgICAjICB1c2FnZTogICRwaWV0LT5pbWFnZSgnbXlwcm9nLmdpZicpOwo
    gICAgIwogICAgIyAgICAgTG9hZHMgaW4gYW4gaW1hZ2UgZnJvbSBhIGZpbGUgdG8gdXNlIGFzIHRoZSBQaWV0IHByb2dyYW0uICBJbnNwZWN0cwogICAgIyAgICAgdGhlIGltYWdlLCBhbmQgZ
    2VuZXJhdGVzIHByb3BlcnRpZXMgYW5kIHRoZSBydW4gbWF0cml4IGZyb20gaXQuCgogICAgbXkgKCRzZWxmLCAkZmlsZSkgPSBAXzsKCiAgICB1bmxlc3MgKGRlZmluZWQgJGZpbGUpIHsgCgl
    jYXJwICJObyBpbWFnZSBmaWxlIGdpdmVuIGluIFBpZXQ6OkludGVycHJldGVyOjppbWFnZSgpIjsKCXJldHVybjsKICAgIH0gIAogICAgdW5sZXNzICgtZSAkZmlsZSkgewoJY2FycCAiRmlsZ
    SAkZmlsZSBkb2VzIG5vdCBleGlzdCBpbiBQaWV0OjpJbnRlcnByZXRlcjo6aW1hZ2UoKSI7CglyZXR1cm47CiAgICB9IAoKICAgICMgIFJlYWQgZmlsZSBpbnRvIG9iamVjdCBhbmQgcHJvY2V
    zcwoKICAgICRzZWxmLT57X2ZpbGVuYW1lfSAgPSAkZmlsZTsKICAgICRzZWxmLT57X2ltYWdlfSAgICAgPSBJbWFnZV9fTWFnaWNrLT5uZXc7CiAgICAkc2VsZi0
    +e19pbWFnZX0tPlJlYWQoJGZpbGUpOwoKICAgICRzZWxmLT5fcHJvY2Vzc19pbWFnZTsKfQoKPWl0ZW0gJHBpZXQtPnJ1bjsKClN0YXJ0cyB0aGUgUGlldCBpbnRlcnByZXRlciBydW5uaW5nI
    GZyb20gdGhlIHVwcGVyLWxlZnQgY29kZWwuClByb2dyYW0gZXhlY3V0aW9uIGlzIGRlc2NyaWJlZCB1bmRlciAiTGFuZ3VhZ2UgQ29uY2VwdHMiLCBiZWxvdy4KCj1jdXQKCnN1YiBydW4gewo
    KICAgICMgIHVzYWdlOiAgJHBpZXQtPnJ1bjsKICAgICMKICAgICMgICAgIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMuICBXZSBpbml0aWFsaXplIHRoZSBQVk0sIGFuZCAKICAgI
    CMgICAgIHN0YXJ0IHJ1bm5pbmcgdGhyb3VnaCB0aGUgcHJvZ3JhbSBpbWFnZS4gIAoKICAgIG15ICRzZWxmID0gc2hpZnQ7IAogICAgcmV0dXJuIHVubGVzcyAkc2VsZi0
    +e19tYXRyaXh9OwoKICAgICRzZWxmLT5yZXNldDsKICAgIHByaW50ICRzZWxmLT50b190ZXh0IGlmICRzZWxmLT57X2RlYnVnfTsKCiAgICAjICBzdGFydGluZyBhdCB0aGUgdXBwZXIgbGVmd
    Cwgc3RhcnQgc3RlcHBpbmcgdGhyb3VnaCB0aGUgY29kZWwgYmxvY2tzCgogICAgd2hpbGUgKDEpIHsKCSRzZWxmLT57X3N0ZXBfbnVtYmVyfSA9ICRzZWxmLT5zdGVwOwoJbGFzdCB1bmxlc3M
    gJHNlbGYtPntfc3RlcF9udW1iZXJ9OwogICAgfQoKICAgICRzZWxmLT5fZGVidWcoIlxuRW5kIE9mIExpbmUuIik7Cn0KCj1pdGVtICRkb25lID0gJHBpZXQtPnN0ZXA7CgpQZXJmb3JtcyBvb
    mUgInN0ZXAiIG9mIGEgUGlldCBwcm9ncmFtLCB3aGVyZSBhIHN0ZXAgaXMgb25lIHRyYW5zaXRpb24KZnJvbSBvbmUgY29kZWwgYmxvY2sgdG8gdGhlIG5leHQuICBBIGZhaWxlZCB0cmFuc2l
    0aW9uICh0cnlpbmcgdG8gZ28Kb3V0IG9mIGJvdW5kcywgb3Igb250byBibGFjaykgaXMgbm90IGNvbnNpZGVyZWQgYSBzdGVwLCBidXQgYSBzbGlkZQppbnRvIG9yIG91dCBvZiBhIHdoaWxlI
    GJsb2NrIGlzLiAgUmV0dXJucyB0aGUgc3RlcCBjb3VudCBudW1iZXIsIG9yCnVuZGVmIGlmIHRoZSBzdGVwIHRlcm1pbmF0ZXMgdGhlIHByb2dyYW0uCgo9Y3V0CgpzdWIgc3RlcCB7CgogICA
    gIyAgdXNhZ2U6ICAkZG9uZSA9ICRwaWV0LT5zdGVwOwogICAgIwogICAgIyAgICAgUGVyZm9ybXMgb25lICJzdGVwIiBvZiBhIFBpZXQgcHJvZ3JhbSwgd2hlcmUgYSBzdGVwIGlzIG9uZSB0c
    mFuc2l0aW9uCiAgICAjICAgICBmcm9tIG9uZSBjb2RlbCBibG9jayB0byB0aGUgbmV4dC4gIEEgZmFpbGVkIHRyYW5zaXRpb24gKHRyeWluZyB0byBnbwogICAgIyAgICAgb3V0IG9mIGJvdW5
    kcywgb3Igb250byBibGFjaykgaXMgbm90IGNvbnNpZGVyZWQgYSBzdGVwLCBidXQgYSBzbGlkZQogICAgIyAgICAgaW50byBvciBvdXQgb2YgYSB3aGlsZSBibG9jayBpcy4gIFJldHVybnMgd
    GhlIHN0ZXAgY291bnQgbnVtYmVyLCBvcgogICAgIyAgICAgdW5kZWYgaWYgdGhlIHN0ZXAgdGVybWluYXRlcyB0aGUgcHJvZ3JhbS4KCiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgICRzZWx
    mLT5fcHJvY2Vzc19jdXJyZW50X2Jsb2NrOwogICAgJHNlbGYtPntfc3RlcF9udW1iZXJ9Kys7CiAgICAkc2VsZi0+X2RlYnVnKCJcbi0tIFNURVA6ICAkc2VsZi0
    +e19zdGVwX251bWJlcn0iKTsKCiAgICBteSAkdHJpZXNfbGVmdCA9IDg7CgogICAgd2hpbGUgKCR0cmllc19sZWZ0KSB7CgoJIyAgZmluZCB0aGUgZWRnZSBvZiB0aGUgY3VycmVudCBjb2Rlb
    CBjb2xvciBibG9jayBpbiB0aGUKCSMgIGRpcmVjdGlvbiBvZiB0aGUgZHAsIHRoZW4gZmluZCB0aGUgY29kZWwgb24gdGhlIGVkZ2UKCSMgIGZ1cnRoZXN0IGluIHRoZSBkaXJlY3Rpb24gb2Y
    gdGhlIGNjCgoJbXkgKCRleCwgJGV5KSA9ICRzZWxmLT5fZ2V0X2VkZ2VfY29kZWw7CgkKCSMgIGdldCB0aGUgY29kZWwgaW1tZWRpYXRlbHkgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgZHAKC
    glteSAoJG54LCAkbnkpID0gJHNlbGYtPl9nZXRfbmV4dF9jb2RlbCgkZXgsICRleSk7CgkKCWlmICggISAkc2VsZi0
    +X2lzX3ZhbGlkKCRueCwkbnkpICkgewoJICAgIAoJICAgICMgIHBvaW50ZXIgY2FuJ3QgbW92ZTsgcm90YXRlIGRwIG9yIHRvZ2dsZSBjYyBhbmQgdHJ5IGFnYWluCgkgICAgCgkgICAgaWYgK
    CRzZWxmLT57X2NoYW5nZV9mbGFnfSkgewoJCSRzZWxmLT57X2RwfSA9ICgkc2VsZi0
    +e19kcH0gKyAxKSAlIDQ7CgkJJHNlbGYtPntfY2hhbmdlX2ZsYWd9ID0gMDsKCSAgICB9CgkgICAgZWxzZSB7CgkJJHNlbGYtPntfY2N9ID0gJHNlbGYtPntfY2N9ICogLTE7CgkJJHNlbGYtP
    ntfY2hhbmdlX2ZsYWd9ID0gMTsKCSAgICB9CgkgICAgCgkgICAgbXkgJHdoeSA9ICRzZWxmLT5faXNfYmxhY2soJG54LCRueSk
    /ImJsYWNrIjoiaW52YWxpZCI7CgkgICAgJHNlbGYtPl9kZWJ1ZygiIHRyeWluZyBhZ2FpbiAoJHdoeSBhdCAkbngsJG55KSAtIG5ldyBEUDogIi4KCQkJICAkc2VsZi0
    +e19kcH0uIiAgbmV3IENDOiAiLiRzZWxmLT57X2NjfSk7CgkgICAgCgkgICAgJHRyaWVzX2xlZnQtLTsKCSAgICBuZXh0OwoJfQoKCWVsc2lmICggJHNlbGYtPl9pc193aGl0ZSgkbngsJG55K
    SApIHsKCgkgICAgIyAgc2xpZGUgYWNyb3NzIHdoaXRlIHNxdWFyZXMgLSBubyBvcGVyYXRpb24gcGVyZm9ybWVkCgoJICAgICRzZWxmLT5fZGVidWcoIiBFWDogJGV4ICBFWTogJGV5ICA9PiA
    gTlg6ICRueCAgTlk6ICRueSAgIChEUDogIi4KCQkJICAkc2VsZi0
    +e19kcH0uIiAgQ0M6ICIuJHNlbGYtPntfY2N9LiIpIChXSElURSkiKTsKCgkgICAgJHNlbGYtPntfbGFzdF9jb2xvcn0gPSAkSEVYX1dISVRFOwoJfQoKCWVsc2UgewoKCSAgICAjICBnZXQgd
    GhlIGNvbG9yIG9mIHRoZSBuZXcgY29kZWwsIGNvbXBhcmUgaXQgd2l0aCB0aGUgY29sb3Igb2YKCSAgICAjICB0aGUgbGFzdCBjb2RlbCBibG9jaywgYW5kIGxvb2sgdXAgdGhlIG9wZXJhdGl
    vbiB0byBwZXJmb3JtCgoJICAgIG15ICRuZXdfY29sb3IgPSAkc2VsZi0
    +bWF0cml4KCRueCwkbnkpOwoJICAgICRzZWxmLT5fZGVidWcoIiBFWDogJGV4ICBFWTogJGV5ICA9PiAgTlg6ICRueCAgTlk6ICRueSAgIChEUDogIi4KCQkJICAkc2VsZi0
    +e19kcH0uIiAgQ0M6ICIuJHNlbGYtPntfY2N9LiIpIik7CgkgICAgCgkgICAgJHNlbGYtPmRvX2FjdGlvbigkc2VsZi0
    +e19sYXN0X2NvbG9yfSwgCgkJCSAgICAgJG5ld19jb2xvciwgCgkJCSAgICAgJHNlbGYtPntfYmxvY2tfdmFsdWV9KSB1bmxlc3MKCQkJCSAoJHNlbGYtPntfbGFzdF9jb2xvcn0gZXEgJEhFW
    F9XSElURSk7CgkgICAgCgkgICAgJHNlbGYtPl9kZWJ1ZygiICBTVEFDSzogICIuam9pbigiLCIsJHNlbGYtPl9zdGFjaykpOwoJICAgIAoJICAgICRzZWxmLT57X2xhc3RfY29sb3J9ID0gJG5
    ld19jb2xvcjsKCX0KCgkjICBzZXQgdGhlIG5ldyBwaXhlbCBhbmQgZmluaXNoCgoJJHNlbGYtPntfY3h9ID0gJG54OwoJJHNlbGYtPntfY3l9ID0gJG55OwoJcmV0dXJuICRzZWxmLT57X3N0Z
    XBfbnVtYmVyfTsKICAgIH0KfQoKCiMjICBwdWJsaWMgYWNjZXNzb3IgYW5kIG91dHB1dCBtZXRob2RzIC0gbm8gYXV0b2xvYWQhIG5vIENsYXNzOjpTdHJ1Y3QhIHdvb290IQoKPWl0ZW0gJHB
    pZXQtPmRlYnVnKDEpOwoKVHVybnMgZGVidWdnaW5nIGluZm9ybWF0aW9uIG9uIG9yIG9mZi4KCj1pdGVtICRwaWV0LT53YXJuKDEpOwoKVHVybnMgd2FybmluZ3Mgb24gb3Igb2ZmLgoKPWl0Z
    W0gJHBpZXQtPnRyYWNlKDEpOwoKVHVybnMgcHJvZ3JhbSBpbnN0cnVjdGlvbiB0cmFjaW5nIG9uIG9yIG9mZi4KCj1pdGVtICRwaWV0LT5jb2RlbF9zaXplKDUpOwoKU2V0cyBvciByZXR1cm5
    zIHRoZSBjb2RlbCBzaXplIGZvciB0aGUgcHJvZ3JhbSBpbWFnZS4KCj1pdGVtICRwaWV0LT5ub25zdGFuZGFyZCgnd2hpdGUnKTsKClNldHMgdGhlIGJlaGF2aW9yIG9mIG5vbi1zdGFuZGFyZ
    CBjb2RlbHMgdG8gJ3doaXRlJyBvciAnYmxhY2snLgoKPWl0ZW0gJHJvd3MgPSAkcGlldC0
    +cm93czsKClJldHVybnMgdGhlIG51bWJlciBvZiBjb2RlbCByb3dzIGluIHRoZSBwcm9ncmFtIGltYWdlLgoKPWl0ZW0gJGNvbHMgPSAkcGlldC0
    +cm93czsKClJldHVybnMgdGhlIG51bWJlciBvZiBjb2RlbCBjb2x1bW5zIGluIHRoZSBwcm9ncmFtIGltYWdlLgoKPWl0ZW0gJGZpbGUgPSAkcGlldC0
    +cm93czsKClJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCB0aGUgcHJvZ3JhbSBpbWFnZSB3YXMgbG9hZGVkLgoKPWN1dAoKc3ViIGRlYnVnIHsKICAgIG15ICgkc2VsZ
    iwgJHZhbCkgPSBAXzsKICAgICRzZWxmLT57X2RlYnVnfSA9ICR2YWwgaWYgKEBfID4gMSk7CiAgICByZXR1cm4gJHNlbGYtPntfZGVidWd9Owp9CgpzdWIgd2FybiB7CiAgICBteSAoJHNlbGY
    sICR2YWwpID0gQF87CiAgICAkc2VsZi0+e193YXJufSA9ICR2YWwgaWYgKEBfID4gMSk7CiAgICByZXR1cm4gJHNlbGYtPntfd2Fybn07Cn0KCnN1YiB0cmFjZSB7CiAgICBteSAoJHNlbGYsI
    CR2YWwpID0gQF87CiAgICAkc2VsZi0+e190cmFjZX0gPSAkdmFsIGlmIChAXyA
    +IDEpOwogICAgcmV0dXJuICRzZWxmLT57X3RyYWNlfTsKfQoKc3ViIGNvZGVsX3NpemUgewogICAgbXkgKCRzZWxmLCAkdmFsKSA9IEBfOwogICAgJHNlbGYtPntfY29kZWxfc2l6ZX0gPSAkd
    mFsIGlmIChAXyA+IDEpOwogICAgcmV0dXJuICRzZWxmLT57X2NvZGVsX3NpemV9Owp9CgpzdWIgbm9uc3RhbmRhcmQgewogICAgbXkgKCRzZWxmLCAkdmFsKSA9IEBfOwogICAgJHNlbGYtPnt
    fbm9uc3RhbmRhcmR9ID0gJHZhbCBpZiAoQF8gPiAxKTsKICAgIHJldHVybiAkc2VsZi0
    +e19ub25zdGFuZGFyZH07Cn0KCnN1YiBmaWxlbmFtZSB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgcmV0dXJuICRzZWxmLT57X2ZpbGVuYW1lfTsKfQoKc3ViIHJvd3MgewogICAgbXkgJ
    HNlbGYgPSBzaGlmdDsKICAgIHJldHVybiAkc2VsZi0+e19yb3dzfTsKfQoKc3ViIGNvbHMgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIHJldHVybiAkc2VsZi0
    +e19jb2xzfTsKfQoKCnN1YiBtYXRyaXggewoKICAgICMgIHVzYWdlOiAgbXkgJGhleCA9ICRwaWV0LT5tYXRyaXgoJHgsJHkpOwogICAgIyAgICAgICAgICAkcGlldC0
    +bWF0cml4KCR4LCR5LCdGRjAwMDAnKTsKICAgICMKICAgICMgICAgIEFsbG93cyB0aGUgdXNlciB0byBnZXQgb3Igc2V0IHRoZSBoZXggdmFsdWUgZm9yIGEgZ2l2ZW4gbWF0cml4IGNlbGwuC
    gogICAgbXkgKCRzZWxmLCAkeCwgJHksICRoZXgpID0gQF87CgogICAgaWYgKCRoZXgpIHsKCSRzZWxmLT57X21hdHJpeH1bJHhdWyR5XSA9ICRoZXg7CiAgICB9CiAgICByZXR1cm4gJHNlbGY
    tPntfbWF0cml4fVskeF1bJHldOwp9CgpzdWIgZ2V0X21hdHJpeCB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgcmV0dXJuICRzZWxmLT57X21hdHJpeH07Cn0KCnN1YiBzZXRfbWF0cml4I
    HsKICAgICMgICAkbWF0cml4X3JlZiBzaG91bGQgYmUgYSBsaXN0IG9mIGxpc3RzOyBzZWUgX3Byb2Nlc3NfaW1hZ2UKICAgIAogICAgbXkgKCRzZWxmLCAkbWF0cml4X3JlZikgPSBAXzsKICA
    gICRzZWxmLT57X21hdHJpeH0gPSAkbWF0cml4X3JlZjsKfQoKPWl0ZW0gJHBpZXQtPnN0YXRlKCJDSEVDSyIpOwoKUHJpbnRzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0Z
    SBvZiB0aGUgUFZNLCB3aXRoIGFuCm9wdGlvbmFsIGxhYmVsLiAgSW5mb3JtYXRpb24gcmVwb3J0ZWQgaW5jbHVkZXMgdGhlIGZpbGVuYW1lLCBudW1iZXIgb2YKY29kZWwgY29sdW1ucyBhbmQ
    gcm93cywgd2hpY2ggZGVidWdnaW5nLCB3YXJuaW5nLCBvciB0cmFjaW5nIGZsYWdzIGFyZQpzZXQsIGhvdyBub24tc3RhbmRhcmQgY29sb3JlZCBjb2RlbHMgYXJlIGhhbmRsZWQsIHRoZSBzd
    GVwIG51bWJlciwgdGhlCmN1cnJlbnQgeCBhbmQgeSBwb3NpdGlvbiBvZiB0aGUgcG9pbnRlciwgdGhlIGRpcmVjdGlvbnMgb2YgdGhlIERQIGFuZApDQywgdGhlIGxhc3QgY29sb3IgdmlzaXR
    lZCwgYW5kIHRoZSB2YWx1ZXMgY3VycmVudGx5IG9uIHRoZSBzdGFjay4KCj1jdXQKCnN1YiBzdGF0ZSB7ICAgICAKCiAgICAjIyMgIFByaW50cyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91d
    CB0aGUgUFZNIHN0YXRlLCB3aXRoIGEgbGFiZWwKICAgIAogICAgbXkgKCRzZWxmLCAkbGFiZWwpID0gQF87CiAgICAKICAgIHByaW50ICIkbGFiZWw6XG4iIGlmIChkZWZpbmVkICRsYWJlbCk
    7CiAgICBwcmludCAiJHNlbGYtPntfZmlsZW5hbWV9ICAoJHNlbGYtPntfY29sc30geCAkc2VsZi0+e19yb3dzfSkgICAiOwogICAgaWYgKCRzZWxmLT57X3dhcm59ICB8fCAkc2VsZi0
    +e19kZWJ1Z30gfHwgCgkkc2VsZi0+e190cmFjZX0gfHwgJHNlbGYtPntfbm9uc3RhbmRhcmR9KSB7CglwcmludCAiQiIgaWYgKCRzZWxmLT57X25vbnN0YW5kYXJkfSBlcSAnYmxhY2snKTsKC
    XByaW50ICJEIiBpZiAkc2VsZi0+e19kZWJ1Z307CglwcmludCAiVCIgaWYgJHNlbGYtPntfdHJhY2V9OwoJcHJpbnQgIlciIGlmICRzZWxmLT57X3dhcm59OwogICAgfQogICAgcHJpbnQgIlx
    uIjsKICAgIAogICAgcHJpbnQgIiAgQ29kZWwgU2l6ZTogICRzZWxmLT57X2NvZGVsX3NpemV9XG4iOwogICAgcHJpbnQgIiAgU3RlcDogICRzZWxmLT57X3N0ZXBfbnVtYmVyfSAgIENYOiAgJ
    HNlbGYtPntfY3h9ICAgQ1k6ICAkc2VsZi0+e19jeX0iIC4KCSAgIiAgIERQOiAgJHNlbGYtPntfZHB9ICAgQ0M6ICAkc2VsZi0
    +e19jY31cbiI7CiAgICBwcmludCAiICBMYXN0IGNvbG9yOiAgIiAuICRoZXgyY29sb3J7JHNlbGYtPntfbGFzdF9jb2xvcn19IC4gIlxuIjsKICAgIHByaW50ICIgIFN0YWNrOiAgIiAuIGpva
    W4oIiwiLCRzZWxmLT5fc3RhY2spIC4gIlxuIjsKICAgIAp9Cgo9aXRlbSBwcmludCAkcGlldC0
    +dG9fdGV4dDsKClJldHVybnMgYSBuaWNlbHkgZm9ybWF0dGVkIHRleHQgdmVyc2lvbiBvZiB0aGUgcHJvZ3JhbSBpbWFnZSdzIGNvZGVsCm1hdHJpeCwgd2l0aCB0aGUgZmlsZW5hbWUsIGNvZ
    GVsIHNpemUsIGFuZCBjb2x1bW4vcm93IGluZm9ybWF0aW9uLgoKPWJhY2sKCj1jdXQKCnN1YiB0b190ZXh0IHsKCiAgICAjIyMgIFByaW50cyBhIHNpbXBsZSB0ZXh0IHJlcHJlc2VudGF0aW9
    uIG9mIHRoZSBwcm9ncmFtIGltYWdlIHRvIHN0ZG91dAoKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gdW5sZXNzICRzZWxmLT57X21hdHJpeH07CgogICAgbXkgJGNvbnRlbnQgP
    SAKICAgICAgICAgICJJbWFnZSAkc2VsZi0+e19maWxlbmFtZX06ICgkc2VsZi0+e19jb2xzfSB4ICRzZWxmLT57X3Jvd3N9IDsiIC4KICAgICAgICAgICIgY29kZWwgc2l6ZSAkc2VsZi0
    +e19jb2RlbF9zaXplfSlcbiI7CiAgICAKICAgIGZvciBteSAkaiAoMC4uKCRzZWxmLT57X3Jvd3N9LTEpKSB7Cglmb3IgbXkgJGkgKDAuLigkc2VsZi0
    +e19jb2xzfS0xKSkgewoJICAgIG15ICRoZXggPSAkc2VsZi0
    +bWF0cml4KCRpLCAkaik7CgkgICAgJGNvbnRlbnQgLj0gIiRoZXgyYWJicnskaGV4fSAiOwoJfQoJJGNvbnRlbnQgLj0gIlxuIjsKICAgIH0KCiAgICByZXR1cm4gJGNvbnRlbnQ7Cn0KCgojI
    yMjIyAgUGlldCBmdW5jdGlvbiBzdWJyb3V0aW5lcwojICAgICAgKGxlYXZpbmcgdGhlc2UgInB1YmxpYyIgZm9yIG5vdywgZm9yIHRlc3RpbmcgcHVycG9zZXMpCgpzdWIgZG9fYWN0aW9uIHs
    KCiAgICAjIyMgIHRha2VzIG9sZCBhbmQgbmV3IGhleCBjb2xvcnMsIHBsdXMgYSBibG9jayB2YWx1ZSwgYW5kIHBlcmZvcm1zCiAgICAjIyMgIHRoZSBhcHByb3ByaWF0ZSBvcGVyYXRpb24KC
    iAgICBteSAoJHNlbGYsICRvbGQsICRuZXcsICR2YWx1ZSkgPSBAXzsKCiAgICAkc2VsZi0
    +X2RlYnVnKCIgIE9sZCBDb2xvcjogJGhleDJjb2xvcnskb2xkfSA9PiBOZXcgQ29sb3I6ICRoZXgyY29sb3J7JG5ld30iKTsKICAgIG15ICRkaWZmX2h1ZSAgID0gKCRoZXgyaHVleyRuZXd9I
    CAgLSAkaGV4Mmh1ZXskb2xkfSkgICAlIDY7CiAgICBteSAkZGlmZl9saWdodCA9ICgkaGV4MmxpZ2h0eyRuZXd9IC0gJGhleDJsaWdodHskb2xkfSkgJSAzOwoKICAgIG15ICRtZXRob2QgPSA
    kZG9fYXJyWyRkaWZmX2h1ZV1bJGRpZmZfbGlnaHRdOwogICAgJHNlbGYtPiRtZXRob2QoJHZhbHVlKTsKfQoKc3ViIGRvX25vb3AgewoKICAgICMjIyAgZG9lcyBub3RoaW5nLiAgc2hvdWxkI
    G5ldmVyIGJlIGNhbGxlZCwgaW5jbHVkZWQgZm9yIGNvbXBsZXRlbmVzcwoKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgJHNlbGYtPl9kZWJ1ZygiIE9QRVI6IG5vb3AiKTsKICAgICRzZWx
    mLT5fdHJhY2UoIk5PT1AiKTsKfQoKc3ViIGRvX3B1c2ggewoKICAgICMjIyAgcHVzaGVzIHRoZSBnaXZlbiBibG9jayB2YWx1ZSBvbnRvIHRoZSBzdGFjawoKICAgIG15ICgkc2VsZiwgJGJsb
    2NrX3ZhbHVlKSA9IEBfOwoKICAgICRzZWxmLT5fZGVidWcoIiBPUEVSOiBwdXNoICgkYmxvY2tfdmFsdWUpIik7CiAgICAkc2VsZi0
    +X3RyYWNlKCJQVVNIICRibG9ja192YWx1ZSIpOwoKICAgICRzZWxmLT5fc3RhY2tfcHVzaCgkYmxvY2tfdmFsdWUpOwp9CgpzdWIgZG9fcG9wIHsKCiAgICAjIyMgIHBvcHMgdGhlIHRvcCB2Y
    Wx1ZSBmcm9tIHRoZSBzdGFjayBhbmQgZGlzY2FyZHMgaXQKCiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgIG15ICR0bXAgPSAkc2VsZi0+X3N0YWNrX3BvcDsKCiAgICAkc2VsZi0
    +X2RlYnVnKCIgT1BFUjogcG9wICgkdG1wKSIpOwogICAgJHNlbGYtPl90cmFjZSgiUE9QICAkdG1wIik7Cn0KCnN1YiBkb19hZGQgewoKICAgICMjIyAgUG9wcyB0aGUgdG9wIHR3byB2YWx1Z
    XMgb2ZmIHRoZSBzdGFjaywgYWRkcyB0aGVtLCBhbmQgcHVzaGVzCiAgICAjIyMgIHRoZSByZXN1bHQgYmFjayBvbiB0aGUgc3RhY2suCgogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICBteSA
    kdG9wICA9ICRzZWxmLT5fc3RhY2tfcG9wOwogICAgbXkgJG5leHQgPSAkc2VsZi0+X3N0YWNrX3BvcDsKICAgICRzZWxmLT5fc3RhY2tfcHVzaCgkbmV4dCskdG9wKTsKCiAgICAkc2VsZi0
    +X2RlYnVnKCIgT1BFUjogYWRkICAgICAiLigkbmV4dCskdG9wKSk7CiAgICAkc2VsZi0
    +X3RyYWNlKCJBREQgICRuZXh0ICR0b3AiKTsKfQoKc3ViIGRvX3N1YnRyYWN0IHsKCiAgICAjIyMgIFBvcHMgdGhlIHRvcCB0d28gdmFsdWVzIG9mZiB0aGUgc3RhY2ssIHN1YnRyYWN0cyB0a
    GUgdG9wIHZhbHVlIAogICAgIyMjICBmcm9tIHRoZSBzZWNvbmQgdG9wIHZhbHVlLCBhbmQgcHVzaGVzIHRoZSByZXN1bHQgYmFjayBvbiB0aGUgc3RhY2suCgogICAgbXkgJHNlbGYgPSBzaGl
    mdDsKCiAgICBteSAkdG9wICA9ICRzZWxmLT5fc3RhY2tfcG9wOwogICAgbXkgJG5leHQgPSAkc2VsZi0
    +X3N0YWNrX3BvcDsKICAgICRzZWxmLT5fc3RhY2tfcHVzaCgkbmV4dC0kdG9wKTsKCiAgICAkc2VsZi0
    +X2RlYnVnKCIgT1BFUjogc3VidHJhY3QgICAgIi4oJG5leHQtJHRvcCkpOwogICAgJHNlbGYtPl90cmFjZSgiU1VCICAkbmV4dCAkdG9wIik7Cn0KCnN1YiBkb19tdWx0aXBseSB7CgogICAgI
    yMjICBQb3BzIHRoZSB0b3AgdHdvIHZhbHVlcyBvZmYgdGhlIHN0YWNrLCBtdWx0aXBsaWVzIHRoZW0sIGFuZAogICAgIyMjICBwdXNoZXMgdGhlIHJlc3VsdCBiYWNrIG9uIHRoZSBzdGFjay4
    KCiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgIG15ICR0b3AgID0gJHNlbGYtPl9zdGFja19wb3A7CiAgICBteSAkbmV4dCA9ICRzZWxmLT5fc3RhY2tfcG9wOwogICAgJHNlbGYtPl9zdGFja
    19wdXNoKCRuZXh0KiR0b3ApOwoKICAgICRzZWxmLT5fZGVidWcoIiBPUEVSOiBtdWx0aXBseSAgICAiLigkbmV4dCokdG9wKSk7CiAgICAkc2VsZi0
    +X3RyYWNlKCJNVUxUICRuZXh0ICR0b3AiKTsKfQoKc3ViIGRvX2RpdmlkZSB7CgogICAgIyMjICBQb3BzIHRoZSB0b3AgdHdvIHZhbHVlcyBvZmYgdGhlIHN0YWNrLCBjYWxjdWxhdGVzIHRoZ
    SBpbnRlZ2VyCiAgICAjIyMgIGRpdmlzaW9uIG9mIHRoZSBzZWNvbmQgdG9wIHZhbHVlIGJ5IHRoZSB0b3AgdmFsdWUsIGFuZCBwdXNoZXMKICAgICMjIyAgdGhlIHJlc3VsdCBiYWNrIG9uIHR
    oZSBzdGFjay4KCiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgIG15ICR0b3AgID0gJHNlbGYtPl9zdGFja19wb3A7CiAgICBteSAkbmV4dCA9ICRzZWxmLT5fc3RhY2tfcG9wOwogICAgJHNlb
    GYtPl9zdGFja19wdXNoKGludCgkbmV4dC8kdG9wKSk7CgogICAgJHNlbGYtPl9kZWJ1ZygiIE9QRVI6IGRpdmlkZSAgICAiLihpbnQoJG5leHQvJHRvcCkpKTsKICAgICRzZWxmLT5fdHJhY2U
    oIkRJViAgJG5leHQgJHRvcCIpOwp9CgpzdWIgZG9fbW9kIHsKCiAgICAjIyMgIFBvcHMgdGhlIHRvcCB0d28gdmFsdWVzIG9mZiB0aGUgc3RhY2ssIGNhbGN1bGF0ZXMgdGhlIHNlY29uZCB0b
    3AgCiAgICAjIyMgIHZhbHVlIG1vZHVsbyB0aGUgdG9wIHZhbHVlLCBhbmQgcHVzaGVzIHRoZSByZXN1bHQgYmFjayBvbiB0aGUgc3RhY2suCgogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICB
    teSAkdG9wICA9ICRzZWxmLT5fc3RhY2tfcG9wOwogICAgbXkgJG5leHQgPSAkc2VsZi0
    +X3N0YWNrX3BvcDsKICAgICRzZWxmLT5fc3RhY2tfcHVzaCgkbmV4dCUkdG9wKTsKCiAgICAkc2VsZi0
    +X2RlYnVnKCIgT1BFUjogbW9kICAgICAiLigkbmV4dCUkdG9wKSk7CiAgICAkc2VsZi0
    +X3RyYWNlKCJNT0QgICRuZXh0ICR0b3AiKTsKfQoKc3ViIGRvX25vdCB7CgogICAgIyMjICBSZXBsYWNlcyB0aGUgdG9wIHZhbHVlIG9mIHRoZSBzdGFjayB3aXRoIDAgaWYgaXQgaXMgbm9uL
    Xplcm8sCiAgICAjIyMgIG9yIDEgaWYgaXQgaXMgemVyby4KCiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgIG15ICR0b3AgPSAkc2VsZi0
    +X3N0YWNrX3BvcDsKICAgICRzZWxmLT5fc3RhY2tfcHVzaCghJHRvcCswKTsKCiAgICAkc2VsZi0
    +X2RlYnVnKCIgT1BFUjogbm90ICAgICIuKCEkdG9wKzApKTsKICAgICRzZWxmLT5fdHJhY2UoIk5PVCAgJHRvcCIpOwp9CgpzdWIgZG9fZ3JlYXRlciB7CgogICAgIyMjICBQb3BzIHRoZSB0b
    3AgdHdvIHZhbHVlcyBvZmYgdGhlIHN0YWNrLCBhbmQgcHVzaGVzIDEgb24gdG8gdGhlCiAgICAjIyMgIHN0YWNrIGlmIHRoZSBzZWNvbmQgdG9wIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGU
    gdG9wIHZhbHVlLAogICAgIyMjICBvciAwIGlmIGl0IGlzIG5vdCBncmVhdGVyLgoKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgbXkgJHRvcCAgPSAkc2VsZi0
    +X3N0YWNrX3BvcDsKICAgIG15ICRuZXh0ID0gJHNlbGYtPl9zdGFja19wb3A7CiAgICAkc2VsZi0
    +X3N0YWNrX3B1c2goKCgkbmV4dD4kdG9wKT8xOjApKzApOwoKICAgICRzZWxmLT5fZGVidWcoIiBPUEVSOiBncmVhdGVyICAgIi4oKCgkbmV4dD4kdG9wKT8xOjApKzApKTsKICAgICRzZWxmL
    T5fdHJhY2UoIkdUUiAgJG5leHQgJHRvcCIpOwp9CgpzdWIgZG9fcG9pbnRlciB7CgogICAgIyMjICBQb3BzIHRoZSB0b3AgdmFsdWUgb2ZmIHRoZSBzdGFjayBhbmQgcm90YXRlcyB0aGUgRFA
    gY2xvY2t3aXNlCiAgICAjIyMgIHRoYXQgbWFueSBzdGVwcywgb3IgY291bnRlcmNsb2Nrd2lzZSBpZiBpdCBpcyBuZWdhdGl2ZS4KCiAgICBteSAkc2VsZiA9IHNoaWZ0OwoKICAgIG15ICR0b
    3AgPSAkc2VsZi0+X3N0YWNrX3BvcDsKCiAgICAkc2VsZi0+X2RlYnVnKCIgT1BFUjogcG9pbnRlciAgKCR0b3ApIik7CiAgICAkc2VsZi0
    +X3RyYWNlKCJQTlRSICR0b3AiKTsKCiAgICAkc2VsZi0
    +e19kcH0gPSAoJHNlbGYtPntfZHB9ICsgJHRvcCkgJSA0Owp9CgpzdWIgZG9fc3dpdGNoIHsKCiAgICAjIyMgIFBvcHMgdGhlIHRvcCB2YWx1ZSBvZmYgdGhlIHN0YWNrIGFuZCB0b2dnbGVzI
    HRoZSBDQyB0aGF0IG1hbnkgdGltZXMuIAoKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgbXkgJHRvcCA9ICRzZWxmLT5fc3RhY2tfcG9wOwoKICAgICRzZWxmLT5fZGVidWcoIiBPUEVSOiB
    zd2l0Y2ggICAoJHRvcCkiKTsKICAgICRzZWxmLT5fdHJhY2UoIlNXQ0ggJHRvcCIpOwoKICAgICRzZWxmLT57X2NjfSA9ICRzZWxmLT57X2NjfSAqIC0xIGlmICgkdG9wICUyKTsKfQoKc3ViI
    GRvX2R1cGxpY2F0ZSB7CgogICAgIyMjICBQdXNoZXMgYSBjb3B5IG9mIHRoZSB0b3AgdmFsdWUgb24gdGhlIHN0YWNrIG9uIHRvIHRoZSBzdGFjay4gCgogICAgbXkgJHNlbGYgPSBzaGlmdDs
    KCiAgICBteSAkdG9wID0gJHNlbGYtPl9zdGFja19wb3A7CiAgICAkc2VsZi0+X3N0YWNrX3B1c2goJHRvcCk7CiAgICAkc2VsZi0
    +X3N0YWNrX3B1c2goJHRvcCk7CgogICAgJHNlbGYtPl9kZWJ1ZygiIE9QRVI6IGR1cGxpY2F0ZSAgKCR0b3ApIik7CiAgICAkc2VsZi0
    +X3RyYWNlKCJEVVAgICR0b3AiKTsKfQoKc3ViIGRvX3JvbGwgewoKICAgICMjIyAgUG9wcyB0aGUgdG9wIHR3byB2YWx1ZXMgb2ZmIHRoZSBzdGFjayBhbmQgInJvbGxzIiB0aGUKICAgICMjI
    yAgcmVtYWluaW5nIHN0YWNrIGVudHJpZXMgdG8gYSBkZXB0aCBlcXVhbCB0byB0aGUgc2Vjb25kIHZhbHVlCiAgICAjIyMgIHBvcHBlZCwgYnkgYSBudW1iZXIgb2Ygcm9sbHMgZXF1YWwgdG8
    gdGhlIGZpcnN0IHZhbHVlCiAgICAjIyMgIHBvcHBlZC4gQSBzaW5nbGUgcm9sbCB0byBkZXB0aCBuIGlzIGRlZmluZWQgYXMgYnVyeWluZyB0aGUKICAgICMjIyAgdG9wIHZhbHVlIG9uIHRoZ
    SBzdGFjayBuIGRlZXAgYW5kIGJyaW5naW5nIGFsbCB2YWx1ZXMgYWJvdmUKICAgICMjIyAgaXQgdXAgYnkgMSBwbGFjZS4gQSBuZWdhdGl2ZSBudW1iZXIgb2Ygcm9sbHMgcm9sbHMgaW4gdGh
    lCiAgICAjIyMgIG9wcG9zaXRlIGRpcmVjdGlvbi4gQSBuZWdhdGl2ZSBkZXB0aCBpcyBhbiBlcnJvciBhbmQgdGhlCiAgICAjIyMgIGNvbW1hbmQgaXMgaWdub3JlZC4KCiAgICBteSAkc2VsZ
    iA9IHNoaWZ0OwoKICAgICMgdGhlcmUncyBhbHdheXMgZ290IHRvIGJlIG9uZSBiYWQgYXBwbGUgaW4gdGhlIGJ1bmNoLi4uCgogICAgbXkgJG51bSAgID0gJHNlbGYtPl9zdGFja19wb3A7CiA
    gICBteSAkZGVwdGggPSAkc2VsZi0+X3N0YWNrX3BvcDsKCiAgICAkc2VsZi0+X2RlYnVnKCIgT1BFUjogcm9sbDogICRudW0gdGltZXMsICRkZXB0aCBkZWVwIik7CiAgICAkc2VsZi0
    +X3RyYWNlKCJST0xMICRkZXB0aCAkbnVtIik7CgogICAgJG51bSA9ICRudW0gJSAkZGVwdGg7CiAgICByZXR1cm4gaWYgKCRkZXB0aCA8PSAwKTsKICAgIHJldHVybiBpZiAoJG51bSAgID09I
    DApOwoKICAgIG15IEBzdGFjayA9ICRzZWxmLT5fc3RhY2s7CiAgICBteSBAdG1wID0gQHN0YWNrWygkI3N0YWNrLSRkZXB0aCsxKS4uJCNzdGFja107IAoKICAgIGlmICgkbnVtPjApIHsKCUB
    0bXAgPSAoQHRtcFstJG51bS4uLTFdLCBAdG1wWzAuLigkI3RtcC0kbnVtKV0pOyAKICAgIH0KICAgIGVsc2UgewoJQHRtcCA9IChAdG1wWy0kbnVtLi4kI3RtcF0sIEB0bXBbMC4uKC0kbnVtL
    TEpXSk7IAogICAgfQoKICAgIHNwbGljZShAc3RhY2ssICQjc3RhY2stJGRlcHRoKzEsICRkZXB0aCwgQHRtcCk7CiAgICAkc2VsZi0
    +e19zdGFja30gPSBcQHN0YWNrOwp9CgpzdWIgZG9faW5fbiB7CgogICAgIyMjICBSZWFkcyBhIHZhbHVlIGZyb20gU1RESU4gYXMgYSBudW1iZXIsIGFuZCBwdXNoZXMgaXQgb24gdG8gdGhlI
    HN0YWNrLgoKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgbXkgJGMgPSBvcmQoJl9nZXRvbmUpOyAgICAgICAgICMgIHNob3VsZCB0aGlzIGJlOiAgbXkgJGMgPSA8PjsgY2hvbXAgJGM7ICA
    gPyAgCgogICAgJHNlbGYtPl9kZWJ1ZygiIE9QRVI6IGluX246ICBnb3QgJGMiKTsKICAgICRzZWxmLT5fdHJhY2UoIk5fSU4iKTsKCiAgICAkc2VsZi0
    +X3N0YWNrX3B1c2goJGMpOwp9CgpzdWIgZG9fb3V0X24gewoKICAgICMjIyAgUG9wcyB0aGUgdG9wIHZhbHVlIG9mZiB0aGUgc3RhY2sgYW5kIHByaW50cyBpdCB0byBTVERPVVQgYXMgYSBud
    W1iZXIuCgogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiAgICBteSAkdG9wID0gJHNlbGYtPl9zdGFja19wb3A7CiAgICBwcmludCAkdG9wIHVubGVzcyAkc2VsZi0
    +e190cmFjZX07CgogICAgJHNlbGYtPl9kZWJ1ZygiIE9QRVI6IG91dF9uICAgICAgT1VUIC0gJHRvcCIpOwogICAgJHNlbGYtPl90cmFjZSgiTk9VVCAkdG9wIik7Cn0KCnN1YiBkb19pbl9jI
    HsKCiAgICAjIyMgIFJlYWRzIGEgdmFsdWUgZnJvbSBTVERJTiBhcyBhIGNoYXJhY3RlciwgYW5kIHB1c2hlcyBpdCBvbiB0byB0aGUgc3RhY2suCgogICAgbXkgJHNlbGYgPSBzaGlmdDsKCiA
    gICBteSAkYyA9ICZfZ2V0b25lOwoKICAgICRzZWxmLT5fZGVidWcoIiBPUEVSOiBpbl9jOiAgZ290ICRjIik7CiAgICAkc2VsZi0
    +X3RyYWNlKCJDX0lOIik7CgogICAgJHNlbGYtPl9zdGFja19wdXNoKCRjKTsKfQoKc3ViIGRvX291dF9jIHsKCiAgICAjIyMgIFBvcHMgdGhlIHRvcCB2YWx1ZSBvZmYgdGhlIHN0YWNrIGFuZ
    CBwcmludHMgaXQgdG8gU1RET1VUIGFzIGEgY2hhcmFjdGVyLgoKICAgIG15ICRzZWxmID0gc2hpZnQ7CgogICAgbXkgJHRvcCA9IGNocigkc2VsZi0
    +X3N0YWNrX3BvcCk7CiAgICBwcmludCAkdG9wIHVubGVzcyAkc2VsZi0
    +e190cmFjZX07CgogICAgJHNlbGYtPl9kZWJ1ZygiIE9QRVI6IG91dF9jICAgICAgIE9VVCAtICR0b3AiKTsKICAgICRzZWxmLT5fdHJhY2UoIkNPVVQgJHRvcCIpOwp9CgoKIyMjIyMgIGJlZ
    2luICJwcml2YXRlIiBtZXRob2RzCgoKc3ViIF9yZ2JhMmhleCB7CgogICAgIyMjICBjb252ZXJ0cyBJbWFnZU1hZ2ljaydzIFJHQkEgZm9ybWF0IHRvIGEgZnJpZW5kbGllciBoZXggbnVtYmV
    yCiAgICAjICAgICAgIGJ1Zz8gIHdlIGhhdmUgdG8gZGl2aWRlIGJ5IDI1NyB0byBnZXQgdGhlIHJpZ2h0IHJhbmdlIC0gaXMgdGhpcyByaWdodD8KCiAgICBteSAoJG51bWJlciwgJGhleCk7C
    iAgICAoc2hpZnQgQF8pID1+IC9eKFxkKyksKFxkKyksKFxkKykvOwogICAgZm9yICRudW1iZXIgKCQxLCQyLCQzKSB7CgkkaGV4IC49IHNwcmludGYoIiUwMlgiLCAkbnVtYmVyLzI1Nyk7CiA
    gICB9CiAgICByZXR1cm4gJGhleDsKfQoKCnN1YiBfcHJvY2Vzc19pbWFnZSB7CiAgICAKICAgICMjIyAgZ2VuZXJhdGVzIHVzZWZ1bCBpbmZvcm1hdGlvbiBhbmQgdGhlIHJ1biBtYXRyaXggZ
    nJvbSB0aGUgaW1hZ2UgcHJvcGVydHkKCiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgbXkgQG1hdHJpeDsKCiAgICByZXR1cm4gdW5sZXNzIChteSAkaW1nID0gJHNlbGYtPntfaW1hZ2V9KTs
    KCiAgICAkc2VsZi0+e19jb2xzfSAgID0gJGltZy0+R2V0KCdjb2x1bW5zJyk7CiAgICAkc2VsZi0+e19yb3dzfSAgID0gJGltZy0
    +R2V0KCdyb3dzJyk7CgogICAgIyAgY3ljbGUgdGhyb3VnaCBpbWFnZSBhbmQgcG9wdWxhdGUgcnVuIG1hdHJpeAogICAgIyAgbm90ZTogIG9ubHkgcmVhZHMgZXZlcnkgJGNvZGVsX3NpemUgc
    Gl4ZWxzLCBza2lwcyBvdmVyIHRoZSByZXN0CgogICAgbXkgJGogPSAwOwogICAgd2hpbGUgKCRqIDw9ICgkc2VsZi0
    +e19yb3dzfS0xKSkgewoJbXkgJGkgPSAwOwoJd2hpbGUgKCRpIDw9ICgkc2VsZi0
    +e19jb2xzfS0xKSkgewoJICAgICRtYXRyaXhbaW50KCRpLyRzZWxmLT57X2NvZGVsX3NpemV9KV1baW50KCRqLyRzZWxmLT57X2NvZGVsX3NpemV9KV0gPQoJCV9yZ2JhMmhleCgkc2VsZi0
    +e19pbWFnZX0tPkdldCgicGl4ZWxbJGksJGpdIikpOwoJICAgICRpICs9ICRzZWxmLT57X2NvZGVsX3NpemV9OwoJfQoJJGogKz0gJHNlbGYtPntfY29kZWxfc2l6ZX07CiAgICB9CgogICAgJ
    HNlbGYtPntfbWF0cml4fSA9IFxAbWF0cml4OwogICAgJHNlbGYtPntfY29sc30gLz0gJHNlbGYtPntfY29kZWxfc2l6ZX07CiAgICAkc2VsZi0+e19yb3dzfSAvPSAkc2VsZi0
    +e19jb2RlbF9zaXplfTsKfQoKCnN1YiBfcHJvY2Vzc19jdXJyZW50X2Jsb2NrIHsKCiAgICAjIyMgIHByb2Nlc3NlcyBhbmQgcmV0cmlldmVzIGluZm9ybWF0aW9uIGFib3V0IGN1cnJlbnQgY
    29kZWwgYmxvY2suCiAgICAjIyMgIGEgY29sb3IgYmxvY2sgaXMgYW4gYXJyYXkgb2YgWyR4LCR5XSBjb29yZGluYXRlIHBhaXJzLgogICAgIwogICAgIyAgICAgICB0b2RvOiAgY29sb3IgYmx
    vY2sgbWVtb2l6YXRpb24KCiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgCiAgICAkc2VsZi0+e19jb2RlbHNfc2Vlbn0gPSB7ICIkc2VsZi0
    +e19jeH1cXyRzZWxmLT57X2N5fSIgPT4gMSB9OwoKICAgIG15IEBjb2RlbF9saXN0ID0gJHNlbGYtPl9uZWlnaGJvcl9saXN0KCAkc2VsZi0
    +e19jeH0sICRzZWxmLT57X2N5fSApOwoKICAgICRzZWxmLT57X2N1cnJlbnRfYmxvY2t9ID0gXEBjb2RlbF9saXN0OwogICAgJHNlbGYtPntfYmxvY2tfdmFsdWV9ICAgPSBzY2FsYXIgQGNvZ
    GVsX2xpc3Q7CiAgICAkc2VsZi0+e19jb2RlbHNfc2Vlbn0gICA9IHVuZGVmOwp9CgoKc3ViIF9uZWlnaGJvcl9saXN0IHsKICAgIAogICAgIyMjICBzaXN0ZXIgbWV0aG9kIHRvIF9wcm9jZXN
    zX2N1cnJlbnRfYmxvY2ssIGNhbGxzIGl0c2VsZiByZWN1cnNpdmVseQogICAgIyMjICB0byBnZW5lcmF0ZSBhIGxpc3Qgb2Ygc2VlZC1maWxsZWQgbmVpZ2hib3IgY29kZWxzCgogICAgbXkgK
    CRzZWxmLCAkeCwgJHkpID0gQF87CiAgICAKICAgIG15IEBuZWlnaGJvcnMgPSAoKTsKICAgIG15ICRoZXggID0gJHNlbGYtPm1hdHJpeCgkeCwkeSk7CiAgICAKICAgICMgIGxvb3AgdGhyb3V
    naCB0aGUgY29kZWxzIGFib3ZlLCBiZWxvdywgbGVmdCwgYW5kIHJpZ2h0IG9mIHRoZSBjdXJyZW50IG9uZQogCiAgICBmb3IgbXkgJGkgKC0xLCAwLCAxKSB7Cglmb3IgbXkgJGogKC0xLCAwL
    CAxKSB7CgkgICAgbmV4dCBpZiAoYWJzKCRpKT09YWJzKCRqKSk7CgoJICAgIG15ICRtPSR4KyRpOwoJICAgIG15ICRuPSR5KyRqOwoKCSAgICAjICBpZiB0aGUgc2VsZWN0ZWQgYWRqYWNlbnQ
    gY29kZWwgaXMgaW4gcmFuZ2UsIG5vdCBibGFjaywgYW5kIHRoZSAKCSAgICAjICBzYW1lIGNvbG9yIGFzIHRoZSBjdXJyZW50IGNvZGVsLCB0aGVuIGhvd2R5LCBuZWlnaGJvciEKCgkgICAgb
    mV4dCB1bmxlc3MgJHNlbGYtPl9pc192YWxpZCgkbSwkbik7CgkgICAgCgkgICAgaWYgKCghZGVmaW5lZCAkc2VsZi0+e19jb2RlbHNfc2Vlbn17IiRtXF8kbiJ9KSAmJgoJCSgkc2VsZi0
    +bWF0cml4KCRtLCAkbikgZXEgJGhleCkpIHsKCQlwdXNoIChAbmVpZ2hib3JzLCBbJG0sJG5dKTsKCSAgICB9CgkgICAgJHNlbGYtPntfY29kZWxzX3NlZW59eyIkbVxfJG4ifSA9IDE7Cgl9C
    iAgICB9CgogICAgIyAgcmV0dXJuIHRoZSBjdXJyZW50IGNvZGVsLCBhbmQgdGhlIG5laWdoYm9ycyBvZiBhbGwgaXRzIG5laWdoYm9ycwoKICAgIHJldHVybiAoIFskeCwkeV0sCgkgICAgIG1
    hcCB7ICRzZWxmLT5fbmVpZ2hib3JfbGlzdCggJCRfWzBdLCAkJF9bMV0gKSB9IEBuZWlnaGJvcnMpOwp9CgoKc3ViIF9pc192YWxpZCB7CgogICAgIyMjICByZXR1cm5zIGZhbHNlIGlmIGNvZ
    GVsIGlzIG91dCBvZiBib3VuZHMgb3IgYmxhY2ssIHRydWUgb3RoZXJ3aXNlCgogICAgbXkgKCRzZWxmLCAkeCwgJHkpID0gQF87CiAgICByZXR1cm4gISgoJHggPj0gJHNlbGYtPntfY29sc30
    pIHx8ICgkeCA8IDApIHx8CgkgICAgICgkeSA+PSAkc2VsZi0
    +e19yb3dzfSkgfHwgKCR5IDwgMCkgfHwKCSAgICAgKCRzZWxmLT5faXNfYmxhY2soJHgsJHkpKSk7Cn0KCgpzdWIgX2lzX2JsYWNrIHsKCiAgICAjIyMgIHJldHVybnMgdHJ1ZSBpZiBjb2Rlb
    CBpcyAiYmxhY2siLCBmYWxzZSBvdGhlcndpc2UKCiAgICBteSAoJHNlbGYsICR4LCAkeSkgPSBAXzsKICAgIHJldHVybiB1bmxlc3MgKG15ICRoZXggPSAkc2VsZi0
    +bWF0cml4KCR4LCAkeSkpOwoKICAgIHJldHVybiAoJHNlbGYtPntfbm9uc3RhbmRhcmR9IGVxICdibGFjaycpICYmCiAgICAgICAgICAgKCFkZWZpbmVkICRoZXgyY29sb3J7JGhleH0pICAgI
    CAgICB8fAogICAgICAgICAgICgkaGV4IGVxICRIRVhfQkxBQ0spOwp9CgoKc3ViIF9pc193aGl0ZSB7CgogICAgIyMjICByZXR1cm5zIHRydWUgaWYgY29kZWwgaXMgIndoaXRlIiwgZmFsc2U
    gb3RoZXJ3aXNlCgogICAgbXkgKCRzZWxmLCAkeCwgJHkpID0gQF87CiAgICBteSAkaGV4ID0gJHNlbGYtPm1hdHJpeCgkeCwgJHkpOwoKICAgIHJldHVybiAoJHNlbGYtPntfbm9uc3RhbmRhc
    mR9IGVxICd3aGl0ZScpICYmCiAgICAgICAgICAgKCFkZWZpbmVkICRoZXgyY29sb3J7JGhleH0pIHx8IAogICAgICAgICAgICgkaGV4IGVxICRIRVhfV0hJVEUpOwp9CgoKc3ViIF9nZXRfbmV
    4dF9jb2RlbCB7CiAgICAKICAgICMjIyAgZmluZHMgdGhlIGVkZ2Ugb2YgdGhlIGN1cnJlbnQgY29kZWwgYmxvY2ssIGFuZCByZXR1cm5zIGEKICAgICMjIyAgcG9pbnQgaW4gdGhlIGRpcmVjd
    GlvbiBvZiB0aGUgZHAgZnJvbSBpdAoKICAgIG15ICgkc2VsZiwgJHgsICR5KSA9IEBfOwogICAgCiAgICBpZiAgICAoJHNlbGYtPntfZHB9ID09IDEpIHsgJHkrKyB9CiAgICBlbHNpZiAoJHN
    lbGYtPntfZHB9ID09IDIpIHsgJHgtLSB9CiAgICBlbHNpZiAoJHNlbGYtPntfZHB9ID09IDMpIHsgJHktLSB9CiAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgIHsgJHgrKyB9CiAgICAKI
    CAgIHJldHVybiAoJHgsICR5KTsKfQoKCnN1YiBfZ2V0X2VkZ2VfY29kZWwgewoKICAgICMjIyAgcmV0dXJucyB0aGUgY29kZWwgcG9pbnQgb24gdGhlIGZhciBlZGdlIG9mIHRoZSBjdXJyZW5
    0IGJsb2NrLgogICAgIyMjICBnZXRzIHRoZSBlZGdlIGJ5IGZpbmRpbmcgdGhlIGluZGV4IGZ1cnRoZXN0IGluIHRoZSBkaXJlY3Rpb24KICAgICMjIyAgb2YgdGhlIGRwLCB0aGVuIGdldHRpb
    mcgYWxsIHBvaW50cyB3aXRoIHRoYXQgaW5kZXguCgogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIG15ICRjb2RlbDsKCiAgICAjICAgIEkga25vdyBpdCBsb29rcyBsaWtlIGRhcmsgbWFnaWM
    sIGJ1dCBpdCdzIHJlYWxseSBqdXN0IGEgYnVuY2ggCiAgICAjICAgIG9mIGJyYWluIGRlYWQgcG9pbnQgc29ydGluZyBzdHVmZiBhbGwgbXVzaGVkIHRvZ2V0aGVyLgoKICAgIGlmICAgICgkc
    2VsZi0+e19kcH0gPT0gMSkgewoJbXkgQHNvcnRlZCA9IHNvcnQgeyQkYlsxXSA8PT4gJCRhWzFdfSBAeyRzZWxmLT57X2N1cnJlbnRfYmxvY2t9fTsKCW15IEBlZGdlICAgPSBzb3J0IHskJGF
    bMF0gPD0+ICQkYlswXX0gZ3JlcCB7JCRfWzFdID09ICRzb3J0ZWRbMF1bMV19IEBzb3J0ZWQ7CgkkY29kZWwgICAgID0gKCRzZWxmLT57X2NjfT4wKT8kZWRnZVswXTokZWRnZVskI2VkZ2VdO
    wogICAgfQogICAgZWxzaWYgKCRzZWxmLT57X2RwfSA9PSAyKSB7CglteSBAc29ydGVkID0gc29ydCB7JCRhWzBdIDw9PiAkJGJbMF19IEB7JHNlbGYtPntfY3VycmVudF9ibG9ja319OwoJbXk
    gQGVkZ2UgICA9IHNvcnQgeyQkYVsxXSA8PT4gJCRiWzFdfSBncmVwIHskJF9bMF0gPT0gJHNvcnRlZFswXVswXX0gQHNvcnRlZDsKCSRjb2RlbCAgICAgPSAoJHNlbGYtPntfY2N9PjApPyRlZ
    GdlWzBdOiRlZGdlWyQjZWRnZV07CiAgICB9CiAgICBlbHNpZiAoJHNlbGYtPntfZHB9ID09IDMpIHsKCW15IEBzb3J0ZWQgPSBzb3J0IHskJGFbMV0gPD0+ICQkYlsxXX0gQHskc2VsZi0
    +e19jdXJyZW50X2Jsb2NrfX07CglteSBAZWRnZSAgID0gc29ydCB7JCRhWzBdIDw9PiAkJGJbMF19IGdyZXAgeyQkX1sxXSA9PSAkc29ydGVkWzBdWzFdfSBAc29ydGVkOwoJJGNvZGVsICAgI
    CA9ICgkc2VsZi0+e19jY30+MCk/JGVkZ2VbJCNlZGdlXTokZWRnZVswXTsKICAgIH0KICAgIGVsc2UgewoJbXkgQHNvcnRlZCA9IHNvcnQgeyQkYlswXSA8PT4gJCRhWzBdfSBAeyRzZWxmLT5
    7X2N1cnJlbnRfYmxvY2t9fTsKCW15IEBlZGdlICAgPSBzb3J0IHskJGFbMV0gPD0
    +ICQkYlsxXX0gZ3JlcCB7JCRfWzBdID09ICRzb3J0ZWRbMF1bMF19IEBzb3J0ZWQ7CgkkY29kZWwgICAgID0gKCRzZWxmLT57X2NjfT4wKT8kZWRnZVskI2VkZ2VdOiRlZGdlWzBdOwogICAgf
    QoKICAgIHJldHVybiBAJGNvZGVsOwp9CgpzdWIgX3N0YWNrIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgICByZXR1cm4gQHskc2VsZi0
    +e19zdGFja319Owp9CgpzdWIgX3N0YWNrX3B1c2ggewogICAgbXkgKCRzZWxmLCAkdmFsdWUpID0gQF87CiAgICBwdXNoKEB7JHNlbGYtPntfc3RhY2t9fSwkdmFsdWUpOwp9CgpzdWIgX3N0Y
    WNrX3BvcCB7CiAgICBteSAkc2VsZiA9IHNoaWZ0OwogICAgcmV0dXJuIHBvcCBAeyRzZWxmLT57X3N0YWNrfX07Cn0KCgojICBJJ20gZ29pbmcgdG8gYXNzdW1lIHRoYXQgVGVybTo6UmVhZEt
    leSBpc24ndCBpbnN0YWxsZWQsIGFuZCBkbyBzb21lIG1hZ2ljIGhlcmUuCgpCRUdJTiB7IHVzZSBQT1NJWCBxdyg6dGVybWlvc19oKTsKICAgICAgICBteSAoJHRlcm0sICRvdGVybSwgJGVja
    G8sICRub2VjaG8sICRmZF9zdGRpbik7CiAgICAgICAgJGZkX3N0ZGluID0gZmlsZW5vKFNURElOKTsKICAgICAgICAkdGVybSAgICAgPSBQT1NJWDo6VGVybWlvcy0
    +bmV3KCk7CiAgICAgICAgJHRlcm0tPmdldGF0dHIoJGZkX3N0ZGluKTsKICAgICAgICAkb3Rlcm0gICAgPSAkdGVybS0
    +Z2V0bGZsYWcoKTsKICAgICAgICAkZWNobyAgICAgPSBFQ0hPIHwgRUNIT0sgfCBJQ0FOT047CiAgICAgICAgJG5vZWNobyAgID0gJG90ZXJtICYgfiRlY2hvOwoJCglzdWIgX2dldG9uZSAoK
    SB7CgkgICAgbXkgJGtleSA9ICcnOwoJICAgICR0ZXJtLT5zZXRsZmxhZygkb3Rlcm0pOwoJICAgICR0ZXJtLT5zZXRjYyhWVElNRSwgMCk7CgkgICAgJHRlcm0tPnNldGF0dHIoJGZkX3N0ZGl
    uLCBUQ1NBTk9XKTsKCSAgICBzeXNyZWFkKFNURElOLCAka2V5LCAxKTsKCSAgICByZXR1cm4gJGtleTsKCX0KfQoKCiMgIFRoZXNlIGxpdHRsZSBndXlzIGxvb2sgaWRlbnRpY2FsLCBidXQgY
    XJlIHJlYWxseSB1c2VkIGZvciB0d28gZGlmZmVyZW50IHRoaW5ncy4gIFJlYWxseS4KCnN1YiBfZGVidWcgewogICAgbXkgJHNlbGYgPSBzaGlmdDsKICAgIGlmICgkc2VsZi0
    +e19kZWJ1Z30pIHsKICAgICAgICBteSAkbWVzc2FnZSA9IHNoaWZ0OwoJcHJpbnQgIiRtZXNzYWdlXG4iOwogICAgfQp9CgpzdWIgX3RyYWNlIHsKICAgIG15ICRzZWxmID0gc2hpZnQ7CiAgI
    CBpZiAoJHNlbGYtPntfdHJhY2V9KSB7CglteSAkbWVzc2FnZSA9IHNoaWZ0IDsKCXByaW50ICIgICRtZXNzYWdlXG4iOwogICAgfQp9CgoKPWhlYWQxIExBTkdVQUdFIENPTkNFUFRTCgo9aGV
    hZDIgQ29sb3JzCgo9YmVnaW4gdGV4dAoKICNGRkMwQzAgICAgI0ZGRkZDMCAgICAgICNDMEZGQzAgICAgI0MwRkZGRiAgICAjQzBDMEZGICAgICAgI0ZGQzBGRgpsaWdodCByZWQgbGlnaHQge
    WVsbG93IGxpZ2h0IGdyZWVuIGxpZ2h0IGN5YW4gbGlnaHQgYmx1ZSBsaWdodCBtYWdlbnRhCgogI0ZGMDAwMCAgICAjRkZGRjAwICAgICAgIzAwRkYwMCAgICAjMDBGRkZGICAgICMwMDAwRkY
    gICAgICAjRkYwMEZGCiAgIHJlZCAgICAgICB5ZWxsb3cgICAgICAgZ3JlZW4gICAgICAgY3lhbiAgICAgICBibHVlICAgICAgIG1hZ2VudGEKCiAjQzAwMDAwICAgICNDMEMwMDAgICAgICAjM
    DBDMDAwICAgICMwMEMwQzAgICAgIzAwMDBDMCAgICAgICNDMDAwQzAKZGFyayByZWQgIGRhcmsgeWVsbG93ICBkYXJrIGdyZWVuICBkYXJrIGN5YW4gIGRhcmsgYmx1ZSAgIGRhcmsgbWFnZW5
    0YQoKICAgICAgICAgICAgICAgICAjRkZGRkZGICAgICAgICAgICAgICAgICAgIzAwMDAwMAogICAgICAgICAgICAgICAgICB3aGl0ZSAgICAgICAgICAgICAgICAgICAgYmxhY2sgCgo9ZW5kI
    HRleHQKClBpZXQgdXNlcyAyMCBkaXN0aW5jdCBjb2xvcnMsIDE4IG9mIHdoaWNoIGFyZSByZWxhdGVkIGN5Y2xpY2FsbHkgaW4gdHdvIHdheXM6Cgo9aGVhZDMgSHVlIEN5Y2xlOgoKUmVkIC0
    +IFllbGxvdyAtPiBDeWFuIC0+IEJsdWUgLT4gTWFnZW50YSAtPiBSZWQKCj1oZWFkMyBMaWdodG5lc3MgQ3ljbGU6CgpMaWdodCAtPiBOb3JtYWwgLT4gRGFyayAtPiBMaWdodAoKTm90ZSB0a
    GF0ICJsaWdodCIgaXMgY29uc2lkZXJlZCB0byBiZSBvbmUgc3RlcCAiZGFya2VyIiB0aGFuICJkYXJrIiwKYW5kIHZpY2UgdmVyc2EuICBXaGl0ZSBhbmQgYmxhY2sgZG8gbm90IGZhbGwgaW5
    0byBlaXRoZXIgY3ljbGUuCgpBZGRpdGlvbmFsIGNvbG9ycyAoc3VjaCBhcyBvcmFuZ2Ugb3IgYnJvd24pIG1heSBhbHNvIGJlIHVzZWQuICBJbiB0aGUKZGVmYXVsdCBjYXNlLCBub24tc3Rhb
    mRhcmQgY29sb3JzIGFyZSB0cmVhdGVkIGJ5IHRoZSBQVk0gKFBpZXQgVmlydHVhbApNYWNoaW5lKSBhcyB0aGUgc2FtZSBhcyB3aGl0ZSwgc28gbWF5IGJlIHVzZWQgZnJlZWx5IHdoZXJldmV
    yIHdoaXRlIGlzCnVzZWQuICBZb3UgbWF5IGFsc28gdXNlIHRoZSBub25zdGFuZGFyZCgpIG1ldGhvZCB0byB0ZWxsIHRoZSBQVk0gdG8KdHJlYXQgdGhlbSB0aGUgc2FtZSBhcyBibGFjay4KC
    j1oZWFkMiBDb2RlbHMKClBpZXQgY29kZSB0YWtlcyB0aGUgZm9ybSBvZiBhbiBpbWFnZSBtYWRlIHVwIG9mIHRoZSByZWNvZ25pc2VkIGNvbG9ycy4KSW5kaXZpZHVhbCBwaXhlbHMgb2YgY29
    sb3IgYXJlIHNpZ25pZmljYW50IGluIHRoZSBsYW5ndWFnZSwgc28gaXQgaXMKY29tbW9uIGZvciBwcm9ncmFtcyB0byBiZSBlbmxhcmdlZCBmb3Igdmlld2luZyBzbyB0aGF0IHRoZSBkZXRha
    WxzIGFyZQplYXNpbHkgdmlzaWJsZS4gIEluIHN1Y2ggZW5sYXJnZWQgcHJvZ3JhbXMsIHRoZSB0ZXJtICJjb2RlbCIgaXMgdXNlZAp0byBtZWFuIGEgYmxvY2sgb2YgY29sb3IgZXF1aXZhbGV
    udCB0byBhIHNpbmdsZSBwaXhlbCBvZiBjb2RlLCB0bwphdm9pZCBjb25mdXNpb24gd2l0aCB0aGUgYWN0dWFsIHBpeGVscyBvZiB0aGUgZW5sYXJnZWQgZ3JhcGhpYywgb2YKd2hpY2ggbWFue
    SBtYXkgbWFrZSB1cCBvbmUgY29kZWwuCgo9aGVhZDIgU3RhY2sKClBpZXQgdXNlcyBhIHN0YWNrIGZvciBzdG9yYWdlIG9mIGFsbCBkYXRhIHZhbHVlcy4gIERhdGEgdmFsdWVzIGV4aXN0Cm9
    ubHkgYXMgaW50ZWdlcnMsIHRob3VnaCB0aGV5IG1heSBiZSByZWFkIGluIG9yIHByaW50ZWQgYXMgVW5pY29kZQpjaGFyYWN0ZXIgdmFsdWVzIHdpdGggdGhlIGFwcHJvcHJpYXRlIGNvbW1hb
    mRzLgoKPWhlYWQyIFByb2dyYW0gRXhlY3V0aW9uCgpUaGUgUGlldCBsYW5ndWFnZSBpbnRlcnByZXRlciBiZWdpbnMgZXhlY3V0aW5nIGEgcHJvZ3JhbSBpbiB0aGUgY29sb3IKYmxvY2sgd2h
    pY2ggaW5jbHVkZXMgdGhlIHVwcGVyIGxlZnQgY29kZWwgb2YgdGhlIHByb2dyYW0uICBUaGUKaW50ZXJwcmV0ZXIgbWFpbnRhaW5zIGEgRGlyZWN0aW9uIFBvaW50ZXIgKERQKSwgaW5pdGlhb
    Gx5IHBvaW50aW5nIHRvCnRoZSByaWdodC4gIFRoZSBEUCBtYXkgcG9pbnQgZWl0aGVyIHJpZ2h0LCBsZWZ0LCBkb3duIG9yIHVwLiAgVGhlCmludGVycHJldGVyIGFsc28gbWFpbnRhaW5zIGE
    gQ29kZWwgQ2hvb3NlciAoQ0MpLCBpbml0aWFsbHkgcG9pbnRpbmcKbGVmdC4gVGhlIENDIG1heSBwb2ludCBlaXRoZXIgbGVmdCBvciByaWdodC4gIFRoZSBkaXJlY3Rpb25zIG9mIHRoZSBEU
    AphbmQgQ0Mgd2lsbCBvZnRlbiBjaGFuZ2UgZHVyaW5nIHByb2dyYW0gZXhlY3V0aW9uLiAgQXMgaXQgZXhlY3V0ZXMgdGhlCnByb2dyYW0sIHRoZSBpbnRlcnByZXRlciB0cmF2ZXJzZXMgdGh
    lIGNvbG9yIGJsb2NrcyBvZiB0aGUgcHJvZ3JhbQp1bmRlciB0aGUgZm9sbG93aW5nIHJ1bGVzOgoKPW92ZXIKCj1pdGVtIDEgCgpUaGUgaW50ZXJwcmV0ZXIgZmluZHMgdGhlIGVkZ2Ugb2Ygd
    GhlIGN1cnJlbnQgY29sb3IgYmxvY2sgd2hpY2ggaXMKZnVydGhlc3QgaW4gdGhlIGRpcmVjdGlvbiBvZiB0aGUgRFAuIChUaGlzIGVkZ2UgbWF5IGJlIGRpc2pvaW50IGlmIHRoZQpibG9jayB
    pcyBvZiBhIGNvbXBsZXggc2hhcGUuKQoKPWl0ZW0gMgoKVGhlIGludGVycHJldGVyIGZpbmRzIHRoZSBjb2RlbCBvZiB0aGUgY3VycmVudCBjb2xvciBibG9jayBvbiB0aGF0CmVkZ2Ugd2hpY
    2ggaXMgZnVydGhlc3QgdG8gdGhlIENDJ3MgZGlyZWN0aW9uIG9mIHRoZSBEUCdzIGRpcmVjdGlvbiBvZgp0cmF2ZWwuICAoRm9yIGV4YW1wbGUsIGlmIHRoZSBEUCBwb2ludHMgZG93bndhcmR
    zLCBhbmQgdGhlIENDIGlzIHRvCnRoZSBsZWZ0LCB0aGUgaW50ZXJwcmV0ZXIgbG9va3MgZm9yIHRoZSByaWdodG1vc3QgY29kZWwgb24gdGhlIGVkZ2UuKQoKPWl0ZW0gMwoKVGhlIGludGVyc
    HJldGVyIHRyYXZlbHMgZnJvbSB0aGF0IGNvZGVsIGludG8gdGhlIGNvbG9yIGJsb2NrCmNvbnRhaW5pbmcgdGhlIGNvZGVsIGltbWVkaWF0ZWx5IGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIER
    QLiAgCgo9YmFjawoKVGhlIGludGVycHJldGVyIGNvbnRpbnVlcyBkb2luZyB0aGlzIHVudGlsIHRoZSBwcm9ncmFtIHRlcm1pbmF0ZXMuCgo9aGVhZDEgU1lOVEFYIEVMRU1FTlRTCgo9aGVhZ
    DIgTnVtYmVycwoKRWFjaCBub24tYmxhY2ssIG5vbi13aGl0ZSBjb2xvciBibG9jayBpbiBhIFBpZXQgcHJvZ3JhbSByZXByZXNlbnRzIGFuCmludGVnZXIgZXF1YWwgdG8gdGhlIG51bWJlciB
    vZiBjb2RlbHMgaW4gdGhhdCBibG9jay4gIE5vdGUgdGhhdApub24tcG9zaXRpdmUgaW50ZWdlcnMgY2Fubm90IGJlIHJlcHJlc2VudGVkLCBhbHRob3VnaCB0aGV5IGNhbiBiZQpjb25zdHJ1Y
    3RlZCB3aXRoIG9wZXJhdG9ycy4gIFdoZW4gdGhlIGludGVycHJldGVyIGVuY291bnRlcnMgYSBudW1iZXIsCml0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IGRvIGFueXRoaW5nIHdpdGggaXQuICB
    JbiBwYXJ0aWN1bGFyLCBpdCBpcyBub3QKYXV0b21hdGljYWxseSBwdXNoZWQgb24gdG8gdGhlIHN0YWNrIC0gdGhlcmUgaXMgYW4gZXhwbGljaXQgY29tbWFuZApmb3IgdGhhdC4KCj1oZWFkM
    iBCbGFjayBCbG9ja3MgYW5kIEVkZ2VzCgpCbGFjayBjb2xvciBibG9ja3MgYW5kIHRoZSBlZGdlcyBvZiB0aGUgcHJvZ3JhbSByZXN0cmljdCBwcm9ncmFtIGZsb3cuCklmIHRoZSBQaWV0IGl
    udGVycHJldGVyIGF0dGVtcHRzIHRvIG1vdmUgaW50byBhIGJsYWNrIGJsb2NrIG9yIG9mZiBhbgplZGdlLCBpdCBpcyBzdG9wcGVkIGFuZCB0aGUgQ0MgaXMgdG9nZ2xlZC4gIFRoZSBpbnRlc
    nByZXRlciB0aGVuCmF0dGVtcHRzIHRvIG1vdmUgZnJvbSBpdHMgY3VycmVudCBibG9jayBhZ2Fpbi4gIElmIGl0IGZhaWxzIGEgc2Vjb25kCnRpbWUsIHRoZSBEUCBpcyBtb3ZlZCBjbG9ja3d
    pc2Ugb25lIHN0ZXAuICBUaGVzZSBhdHRlbXB0cyBhcmUKcmVwZWF0ZWQsIHdpdGggdGhlIENDIGFuZCBEUCBiZWluZyBjaGFuZ2VkIGJldHdlZW4gYWx0ZXJuYXRlIGF0dGVtcHRzLgpJZiwgY
    WZ0ZXIgZWlnaHQgYXR0ZW1wdHMgdGhlIGludGVycHJldGVyIGNhbm5vdCBsZWF2ZSBpdHMgY3VycmVudApjb2xvciBibG9jaywgdGhlcmUgaXMgbm8gd2F5IG91dCBhbmQgdGhlIHByb2dyYW0
    gdGVybWluYXRlcy4KCj1oZWFkMiBXaGl0ZSBCbG9ja3MKCldoaXRlIGNvbG9yIGJsb2NrcyBhcmUgImZyZWUiIHpvbmVzIHRocm91Z2ggd2hpY2ggdGhlIGludGVycHJldGVyCnBhc3NlcyB1b
    mhpbmRlcmVkLiAgSWYgaXQgbW92ZXMgZnJvbSBhIGNvbG9yIGJsb2NrIGludG8gYSB3aGl0ZSBhcmVhLAp0aGUgaW50ZXJwcmV0ZXIgInNsaWRlcyIgdGhyb3VnaCB0aGUgd2hpdGUgY29kZWx
    zIGluIHRoZSBkaXJlY3Rpb24gb2YKdGhlIERQIHVudGlsIGl0IHJlYWNoZXMgYSBub24td2hpdGUgY29sb3IgYmxvY2suICBJZiB0aGUgaW50ZXJwcmV0ZXIKc2xpZGVzIGludG8gYSBibGFja
    yBibG9jayBvciBhbiBlZGdlLCBpdCBpcyBjb25zaWRlcmVkIHJlc3RyaWN0ZWQgKHNlZQphYm92ZSksIG90aGVyd2lzZSBpdCBtb3ZlcyBpbnRvIHRoZSBjb2xvciBibG9jayBzbyBlbmNvdW5
    0ZXJlZC4KU2xpZGluZyBhY3Jvc3Mgd2hpdGUgYmxvY2tzIGRvZXMgbm90IGNhdXNlIGEgY29tbWFuZCB0byBiZSBleGVjdXRlZC4KCj1oZWFkMiBDb21tYW5kcwoKQ29tbWFuZHMgYXJlIGRlZ
    mluZWQgYnkgdGhlIHRyYW5zaXRpb24gb2YgY29sb3IgZnJvbSBvbmUgY29sb3IgYmxvY2sKdG8gdGhlIG5leHQgYXMgdGhlIGludGVycHJldGVyIHRyYXZlbHMgdGhyb3VnaCB0aGUgcHJvZ3J
    hbS4gIFRoZQpudW1iZXIgb2Ygc3RlcHMgYWxvbmcgdGhlIEh1ZSBDeWNsZSBhbmQgTGlnaHRuZXNzIEN5Y2xlIGluIGVhY2gKdHJhbnNpdGlvbiBkZXRlcm1pbmUgdGhlIGNvbW1hbmQgZXhlY
    3V0ZWQsIGFzIHNob3duIGluIHRoZSB0YWJsZQpiZWxvdy4gIElmIHRoZSB0cmFuc2l0aW9uIGJldHdlZW4gY29sb3IgYmxvY2tzIG9jY3VycyB2aWEgYSBzbGlkZQphY3Jvc3MgYSB3aGl0ZSB
    ibG9jaywgbm8gY29tbWFuZCBpcyBleGVjdXRlZC4KCj1vdmVyCgo9aXRlbSAoMCBodWUgc3RlcHMsIDEgc3RlcCBkYXJrZXIpID0
    +IEI8cHVzaD4KClB1c2hlcyB0aGUgdmFsdWUgb2YgdGhlIGNvbG9yIGJsb2NrIGp1c3QgZXhpdGVkIG9uIHRvIHRoZSBzdGFjay4KTm90ZTogdmFsdWVzIGFyZSBub3QgYXV0b21hdGljYWxse
    SBwdXNoZWQgb250byB0aGUgc3RhY2sgLSB0aGUgcHVzaApvcGVyYXRpb24gbXVzdCBiZSBleHBsaWNpdGx5IGNhcnJpZWQgb3V0LgoKPWl0ZW0gKDAgaHVlIHN0ZXBzLCAyIHN0ZXBzIGRhcmt
    lcikgPT4gQjxwb3A+CgpQb3BzIHRoZSB0b3AgdmFsdWUgb2ZmIHRoZSBzdGFjayBhbmQgZGlzY2FyZHMgaXQuIAoKPWl0ZW0gKDEgaHVlIHN0ZXAsIDAgc3RlcHMgZGFya2VyKSA9PiBCPGFkZ
    D4KClBvcHMgdGhlIHRvcCB0d28gdmFsdWVzIG9mZiB0aGUgc3RhY2ssIGFkZHMgdGhlbSwgYW5kIHB1c2hlcyB0aGUKcmVzdWx0IGJhY2sgb24gdGhlIHN0YWNrLgoKPWl0ZW0gKDEgaHVlIHN
    0ZXAsIDEgc3RlcCBkYXJrZXIpID0+IEI8c3VidHJhY3Q
    +CgpQb3BzIHRoZSB0b3AgdHdvIHZhbHVlcyBvZmYgdGhlIHN0YWNrLCBzdWJ0cmFjdHMgdGhlIHRvcCB2YWx1ZSBmcm9tCnRoZSBzZWNvbmQgdG9wIHZhbHVlLCBhbmQgcHVzaGVzIHRoZSByZ
    XN1bHQgYmFjayBvbiB0aGUgc3RhY2suIAoKPWl0ZW0gKDEgaHVlIHN0ZXAsIDIgc3RlcHMgZGFya2VyKSA9PiBCPG11bHRpcGx5PgoKUG9wcyB0aGUgdG9wIHR3byB2YWx1ZXMgb2ZmIHRoZSB
    zdGFjaywgbXVsdGlwbGllcyB0aGVtLCBhbmQgcHVzaGVzIHRoZQpyZXN1bHQgYmFjayBvbiB0aGUgc3RhY2suIAoKPWl0ZW0gKDIgaHVlIHN0ZXBzLCAwIHN0ZXBzIGRhcmtlcikgPT4gQjxka
    XZpZGU+CgpQb3BzIHRoZSB0b3AgdHdvIHZhbHVlcyBvZmYgdGhlIHN0YWNrLCBjYWxjdWxhdGVzIHRoZSBpbnRlZ2VyIGRpdmlzaW9uCm9mIHRoZSBzZWNvbmQgdG9wIHZhbHVlIGJ5IHRoZSB
    0b3AgdmFsdWUsIGFuZCBwdXNoZXMgdGhlIHJlc3VsdCBiYWNrCm9uIHRoZSBzdGFjay4gCgo9aXRlbSAoMiBodWUgc3RlcHMsIDEgc3RlcCBkYXJrZXIpID0
    +IEI8bW9kPgoKUG9wcyB0aGUgdG9wIHR3byB2YWx1ZXMgb2ZmIHRoZSBzdGFjaywgY2FsY3VsYXRlcyB0aGUgc2Vjb25kIHRvcCB2YWx1ZQptb2R1bG8gdGhlIHRvcCB2YWx1ZSwgYW5kIHB1c
    2hlcyB0aGUgcmVzdWx0IGJhY2sgb24gdGhlIHN0YWNrLiAKCj1pdGVtICgyIGh1ZSBzdGVwcywgMiBzdGVwcyBkYXJrZXIpID0
    +IEI8bm90PgoKUmVwbGFjZXMgdGhlIHRvcCB2YWx1ZSBvZiB0aGUgc3RhY2sgd2l0aCAwIGlmIGl0IGlzIG5vbi16ZXJvLCBhbmQgMSBpZgppdCBpcyB6ZXJvLiAKCj1pdGVtICgzIGh1ZSBzd
    GVwcywgMCBzdGVwcyBkYXJrZXIpID0+IEI8Z3JlYXRlcj4KClBvcHMgdGhlIHRvcCB0d28gdmFsdWVzIG9mZiB0aGUgc3RhY2ssIGFuZCBwdXNoZXMgMSBvbiB0byB0aGUgc3RhY2sgaWYKdGh
    lIHNlY29uZCB0b3AgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSB0b3AgdmFsdWUsIGFuZCBwdXNoZXMgMCBpZiBpdAppcyBub3QgZ3JlYXRlci4gCgo9aXRlbSAoMyBodWUgc3RlcHMsIDEgc
    3RlcCBkYXJrZXIpID0+IEI8cG9pbnRlcj4KClBvcHMgdGhlIHRvcCB2YWx1ZSBvZmYgdGhlIHN0YWNrIGFuZCByb3RhdGVzIHRoZSBEUCBjbG9ja3dpc2UgdGhhdAptYW55IHN0ZXBzLCBvciB
    jb3VudGVyY2xvY2t3aXNlIGlmIGl0IGlzIG5lZ2F0aXZlLiAKCj1pdGVtICgzIGh1ZSBzdGVwcywgMiBzdGVwcyBkYXJrZXIpID0
    +IEI8c3dpdGNoPgoKUG9wcyB0aGUgdG9wIHZhbHVlIG9mZiB0aGUgc3RhY2sgYW5kIHRvZ2dsZXMgdGhlIENDIHRoYXQgbWFueSB0aW1lcy4gCgo9aXRlbSAoNCBodWUgc3RlcHMsIDAgc3Rlc
    HMgZGFya2VyKSA9PiBCPGR1cGxpY2F0ZT4KClB1c2hlcyBhIGNvcHkgb2YgdGhlIHRvcCB2YWx1ZSBvbiB0aGUgc3RhY2sgb24gdG8gdGhlIHN0YWNrLiAKCj1pdGVtICg0IGh1ZSBzdGVwcyw
    gMSBzdGVwIGRhcmtlcikgPT4gQjxyb2xsPgoKUG9wcyB0aGUgdG9wIHR3byB2YWx1ZXMgb2ZmIHRoZSBzdGFjayBhbmQgInJvbGxzIiB0aGUgcmVtYWluaW5nIHN0YWNrCmVudHJpZXMgdG8gY
    SBkZXB0aCBlcXVhbCB0byB0aGUgc2Vjb25kIHZhbHVlIHBvcHBlZCwgYnkgYSBudW1iZXIgb2YKcm9sbHMgZXF1YWwgdG8gdGhlIGZpcnN0IHZhbHVlIHBvcHBlZC4gQSBzaW5nbGUgcm9sbCB
    0byBkZXB0aCBuaXMKZGVmaW5lZCBhcyBidXJ5aW5nIHRoZSB0b3AgdmFsdWUgb24gdGhlIHN0YWNrIG4gZGVlcCBhbmQgYnJpbmdpbmcgYWxsCnZhbHVlcyBhYm92ZSBpdCB1cCBieSAxIHBsY
    WNlLiBBIG5lZ2F0aXZlIG51bWJlciBvZiByb2xscyByb2xscyBpbiB0aGUKb3Bwb3NpdGUgZGlyZWN0aW9uLiBBIG5lZ2F0aXZlIGRlcHRoIGlzIGFuIGVycm9yIGFuZCB0aGUgY29tbWFuZCB
    pcwppZ25vcmVkLiAKCj1pdGVtICg0IGh1ZSBzdGVwcywgMiBzdGVwcyBkYXJrZXIpID0
    +IEI8bnVtYmVyX2luPgoKUmVhZHMgYSBjaGFyYWN0ZXIgZnJvbSBTVERJTiBhcyBhIG51bWJlciwgYW5kIHB1c2hlcyBpdCBvbiB0byB0aGUgc3RhY2suCgo9aXRlbSAoNSBodWUgc3RlcHMsI
    DAgc3RlcHMgZGFya2VyKSA9PiBCPGNoYXJhY3Rlcl9pbj4KClJlYWRzIGEgdmFsdWUgZnJvbSBTVERJTiBhcyBhIGNoYXJhY3RlciwgYW5kIHB1c2hlcyBpdCBvbiB0byB0aGUgc3RhY2suCgo
    9aXRlbSAoNSBodWUgc3RlcHMsIDEgc3RlcCBkYXJrZXIpID0
    +IEI8bnVtYmVyX291dD4KClBvcHMgdGhlIHRvcCB2YWx1ZSBvZmYgdGhlIHN0YWNrIGFuZCBwcmludHMgaXQgdG8gU1RET1VUIGFzIGEgbnVtYmVyLgoKPWl0ZW0gKDUgaHVlIHN0ZXBzLCAyI
    HN0ZXBzIGRhcmtlcikgPT4gQjxjaGFyYWN0ZXJfb3V0PgoKUmVhZHMgYSB2YWx1ZSBmcm9tIFNURElOIGFzIGEgY2hhcmFjdGVyLCBhbmQgcHVzaGVzIGl0IG9uIHRvIHRoZSBzdGFjay4KCj1
    iYWNrCgpBbnkgb3BlcmF0aW9ucyB3aGljaCBjYW5ub3QgYmUgcGVyZm9ybWVkIChzdWNoIGFzIHBvcHBpbmcgdmFsdWVzIHdoZW4Kbm90IGVub3VnaCBhcmUgb24gdGhlIHN0YWNrKSBhcmUgc
    2ltcGx5IGlnbm9yZWQuCgo9aGVhZDEgQVVUSE9SCgpNYXJjIE1hamNoZXIgKHBpZXQtaW50ZXJwcmV0ZXJAbWFqY2hlci5jb20pCgo9aGVhZDEgU0VFIEFMU08KCkw8aHR0cDovL3d3dy5tYWp
    jaGVyLmNvbS9jb2RlL3BpZXQ+IAoKTDxodHRwOi8vd3d3LnBoeXNpY3MudXN5ZC5lZHUuYXUvfm1hci9lc290ZXJpYy9waWV0Lmh0bWw
    +Cgo9Y3V0CgoKMTsKCnBhY2thZ2UgSW1hZ2VfX01hZ2ljazsKdXNlIENvbXByZXNzOjpabGliOwoKc3ViIG5ldyB7CiAgICBteSAoJGNsYXNzKSA9IEBfOwogICAgbXkgJHNlbGYgPSBibGVzc
    yB7CglfZmlsZW5hbWUgICAgPT4gdW5kZWYsCglfd2lkdGggICAgICAgPT4gdW5kZWYsCglfaGVnaWh0ICAgICAgPT4gdW5kZWYsCglfZGF0YSAgICAgICAgPT4gdW5kZWYsCiAgICB9LCByZWY
    oJGNsYXNzKSB8fCAkY2xhc3M7CiAgICByZXR1cm4gJHNlbGY7Cn0KCnN1YiBfcmVhZF9maWxlX2FuZF9zcGxpdF90b19jaHVua3MgewogICAgbXkgKCRzZWxmLCAkZmlsZW5hbWUpID0gQF87C
    iAgICBvcGVuIG15ICRmaCwgJzwgOnJhdyA6Ynl0ZXMnLCAkZmlsZW5hbWUgb3IgZGllOwogICAgbXkgJGJ1ZmZlcjsKICAgIHJlYWQgJGZoLCAkYnVmZmVyLCA4OwogICAgZGllIGlmICRidWZ
    mZXIgbmUgIlx4ODlQTkdcclxuXHgxYVxuIjsKICAgIG15IEBjaHVua3MgPSAoKTsKICAgIHdoaWxlIChyZWFkICRmaCwgJGJ1ZmZlciwgNCkgewoJbXkgJGNodW5rID0ge307CgkkY2h1bmstP
    ntsZW5ndGh9ID0gdW5wYWNrICdOJywgJGJ1ZmZlcjsKCXJlYWQgJGZoLCAkYnVmZmVyLCA0OwoJJGNodW5rLT57dHlwZX0gPSAkYnVmZmVyOwoJcmVhZCAkZmgsICRidWZmZXIsICRjaHVuay0
    +e2xlbmd0aH07CgkkY2h1bmstPntkYXRhfSA9ICRidWZmZXI7CglyZWFkICRmaCwgJGJ1ZmZlciwgNDsKCSRjaHVuay0
    +e2NyYzMyfSA9IHVucGFjayAnTicsICRidWZmZXI7CglwdXNoIEBjaHVua3MsICRjaHVuazsKICAgIH0KICAgIGNsb3NlICRmaDsKICAgIHJldHVybiBAY2h1bmtzOwp9CgpzdWIgUmVhZCB7C
    iAgICBteSAoJHNlbGYsICRmaWxlbmFtZSkgPSBAXzsKICAgICRzZWxmLT57X2ZpbGVuYW1lfSA9ICRmaWxlbmFtZTsKICAgIG15IEBjaHVua3MgPSAkc2VsZi0
    +X3JlYWRfZmlsZV9hbmRfc3BsaXRfdG9fY2h1bmtzKCRmaWxlbmFtZSk7CgogICAgIyBjaGVjayBJSERSCiAgICBkaWUgaWYgJGNodW5rc1swXS0
    +e3R5cGV9IG5lICdJSERSJzsKICAgICRzZWxmLT57X3dpZHRofSAgPSB1bnBhY2sgJ04nLCAoc3Vic3RyICRjaHVua3NbMF0tPntkYXRhfSwgMCwgNCk7CiAgICAkc2VsZi0
    +e19oZWlnaHR9ID0gdW5wYWNrICdOJywgKHN1YnN0ciAkY2h1bmtzWzBdLT57ZGF0YX0sIDQsIDgpOwogICAgZGllIGlmIChzdWJzdHIgJGNodW5rc1swXS0
    +e2RhdGF9LCA4KSAhPSAiXHgwOFx4MDJcMFwwXDAiOwoKICAgICMgY29uY2F0IElEQVQKICAgIG15ICRkYXRhID0gJyc7CiAgICBmb3JlYWNoIG15ICRjaHVuayAoQGNodW5rcykgewoJaWYgK
    CRjaHVuay0+e3R5cGV9IGVxICdJREFUJykgewoJICAgICRkYXRhIC49ICRjaHVuay0
    +e2RhdGF9OwoJfQogICAgfQoKICAgICMgZGVmbGF0ZQogICAgbXkgJHpsaWIgPSBpbmZsYXRlSW5pdCgpIG9yIGRpZTsKICAgIG15ICgkaW1hZ2UsICRzdGF0dXMpID0gJHpsaWItPmluZmxhd
    GUoXCRkYXRhKTsKICAgIGRpZSBpZiAkc3RhdHVzICE9IFpfU1RSRUFNX0VORDsKICAgICRzZWxmLT57X2RhdGF9ID0gJGltYWdlOwp9CgpzdWIgR2V0IHsKICAgIG15ICgkc2VsZiwgJHMpID0
    gQF87CiAgICBpZiAoJHMgZXEgJ3Jvd3MnKSB7CglyZXR1cm4gJHNlbGYtPntfaGVpZ2h0fTsKICAgIH0gZWxzaWYgKCRzIGVxICdjb2x1bW5zJykgewoJcmV0dXJuICRzZWxmLT57X3dpZHRof
    TsKICAgIH0gZWxzZSB7CgkkcyA9fiAvXnBpeGVsXFsoXGQrKSwoXGQrKV0kLzsKCW15ICR4ID0gJDE7CglteSAkeSA9ICQyOwoJbXkgJG9mZnNldCA9ICR5ICogKCRzZWxmLT57X3dpZHRofSA
    qIDMgKyAxKSArICgkeCAqIDMgKyAxKTsKCW15ICRyID0gMjU3ICogb3JkIChzdWJzdHIgJHNlbGYtPntfZGF0YX0sICRvZmZzZXQsICAgICAxKTsgICMgd2hhdCBpcyAyNTcgPz8
    /CglteSAkZyA9IDI1NyAqIG9yZCAoc3Vic3RyICRzZWxmLT57X2RhdGF9LCAkb2Zmc2V0ICsgMSwgMSk7CglteSAkYiA9IDI1NyAqIG9yZCAoc3Vic3RyICRzZWxmLT57X2RhdGF9LCAkb2Zmc
    2V0ICsgMiwgMSk7CglyZXR1cm4gIiRyLCRnLCRiIjsKICAgIH0KfQoKcGFja2FnZSBNYWluOwpkaWUgaWYgQEFSR1YgIT0gMTsKbXkgJHAgPSBQaWV0OjpJbnRlcnByZXRlci0
    +bmV3KGltYWdlID0+ICRBUkdWWzBdKTsKJHAtPnJ1bjsK<hide>
EOF
perl Interpreter.pm $0
#�[������IEND�B`�
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0