<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>14496</bug_id>
          
          <creation_ts>2008-02-17 19:19:37 +0300</creation_ts>
          <short_desc>[FR] add transfig patch for fig2sml (kivio export)</short_desc>
          <delta_ts>2010-11-18 16:24:20 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>transfig</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc>http://sourceforge.net/projects/xfig2sml/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Shigorin">mike</reporter>
          <assigned_to name="Vladislav Zavjalov">slazav</assigned_to>
          <cc>slazav</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>63916</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-02-17 19:19:37 +0300</bug_when>
    <thetext>Просьба добавить патч для конвертирования .fig в .sml (kivio stencils):
http://sourceforge.net/project/showfiles.php?group_id=34951

См. тж. #14435</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63917</commentid>
    <comment_count>1</comment_count>
      <attachid>2441</attachid>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2008-02-17 19:21:28 +0300</bug_when>
    <thetext>Created attachment 2441
patch to support sml, sxd formats

PS: Юр, ты ещё занимаешься этим пакетом?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114905</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2010-11-06 13:22:47 +0300</bug_when>
    <thetext>Вить, а тебе transfig &quot;по старой памяти&quot;?..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>115464</commentid>
    <comment_count>3</comment_count>
    <who name="Victor Forsyuk">force</who>
    <bug_when>2010-11-18 16:24:20 +0300</bug_when>
    <thetext>Попробовал сейчас собрать с этим патчем. Увы, патчик к 3.2.5d уже не прикладывается. Разбираться и допиливать этот патч нет ни времени, ни мотивации - transfig я никак не использую...

К этой баге я честно поставил WONTFIX и добавил @everybody в ACL. Или лучше передать nobody? Я не против собрать новую версию, буде такая появится, или исправить что-то, не требующее много времени. Но допиливать - нет охоты...</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>2441</attachid>
            <date>2008-02-17 19:21:28 +0300</date>
            <delta_ts>2008-02-17 19:21:28 +0300</delta_ts>
            <desc>patch to support sml, sxd formats</desc>
            <filename>transfig.3.2.sml.diff</filename>
            <type>text/plain</type>
            <size>49688</size>
            <attacher name="Michael Shigorin">mike</attacher>
            
              <data encoding="base64">ZGlmZiAtdXIgLS1uZXctZmlsZSB0cmFuc2ZpZy4zLjIuM2Qub3JpZy9kb2MvZmlnMmRldi4xIHRy
YW5zZmlnLjMuMi4zZC9kb2MvZmlnMmRldi4xCi0tLSB0cmFuc2ZpZy4zLjIuM2Qub3JpZy9kb2Mv
ZmlnMmRldi4xCVR1ZSBNYXkgMjkgMjE6MTM6MjYgMjAwMQorKysgdHJhbnNmaWcuMy4yLjNkL2Rv
Yy9maWcyZGV2LjEJRnJpIEp1biAyMSAxMjoyNzowNCAyMDAyCkBAIC00Miw3ICs0Miw3IEBACiAu
TFAKIFhmaWcgdmVyc2lvbiAzLjIuMyBhbmQgbGF0ZXIgc2F2ZXMgYW5kIGFsbG93cyB0aGUgdXNl
ciB0byBlZGl0IGNvbW1lbnRzCiBmb3IgZWFjaCBGaWcgb2JqZWN0LiAgVGhlc2UgY29tbWVudHMg
YXJlIG91dHB1dCB3aXRoIHNldmVyYWwgb2YgdGhlIG91dHB1dCBsYW5ndWFnZXMsCi1zdWNoIGFz
IFBvc3RTY3JpcHQsIENHTSwgTGFUZVgsIE1ldGFGb250LCBQaWNUZVgsIChhcyAlIGNvbW1lbnRz
KSwKK3N1Y2ggYXMgUG9zdFNjcmlwdCwgQ0dNLCBTTUwsIExhVGVYLCBNZXRhRm9udCwgUGljVGVY
LCAoYXMgJSBjb21tZW50cyksCiB0ayAoYXMgIyBjb21tZW50cyksIGFuZCBwaWMgKGFzIC5cXCIg
Y29tbWVudHMpLgogCiAuU0ggR0VORVJBTCBPUFRJT05TCkBAIC01Miw3ICs1Miw3IEBACiBWYWxp
ZCBsYW5ndWFnZXMgYXJlCiBcZkJib3gsIGNnbSwgZXBpYywgZWVwaWMsIGVlcGljZW11LCBlcHMs
IGdpZiwgaWJtZ2wsIGpwZWcsCiBsYXRleCwgbWFwIChIVE1MIGltYWdlIG1hcCksIG1mIChNZXRh
Rm9udCksIG1wIChNZXRhUG9zdCksIG1tcCAoTXVsdGlNZXRhUG9zdCksIAotcGN4LCBwZGYsIHBp
YywgcGljdGV4LCBwbmcsIHBwbSwgcHMsCitwY3gsIHBkZiwgcGljLCBwaWN0ZXgsIHBuZywgcHBt
LCBwcywgc21sLCBzeGQsCiBwc3RleCwgcHN0ZXhfdCwgc2xkIChBdXRvQ2FkIHNsaWRlIGZvcm1h
dCksIHRleHR5bCwgXGZSCiB0aWZmLCB0ayAodGNsL3RrKSwgdHBpYywgeGJtIGFuZAogLkIgeHBt
LgpkaWZmIC11ciAtLW5ldy1maWxlIHRyYW5zZmlnLjMuMi4zZC5vcmlnL2ZpZzJkZXYvSW1ha2Vm
aWxlIHRyYW5zZmlnLjMuMi4zZC9maWcyZGV2L0ltYWtlZmlsZQotLS0gdHJhbnNmaWcuMy4yLjNk
Lm9yaWcvZmlnMmRldi9JbWFrZWZpbGUJVGh1IEFwciAxOSAxOToxOTozOCAyMDAxCisrKyB0cmFu
c2ZpZy4zLjIuM2QvZmlnMmRldi9JbWFrZWZpbGUJV2VkIEp1bCAxNyAxMDo0NTo1NSAyMDAyCkBA
IC0yOTAsNiArMjkwLDcgQEAKIEluc3RhbGxTY3JpcHQoZmlnMnBzMnRleCwkKEJJTkRJUikpCiBJ
bnN0YWxsU2NyaXB0KGZpZzJwczJ0ZXguc2gsJChCSU5ESVIpKQogSW5zdGFsbFNjcmlwdChwaWMy
dHBpYywkKEJJTkRJUikpCitJbnN0YWxsU2NyaXB0KGZpZzJzeGQsJChCSU5ESVIpKQogCiBJbnN0
YWxsTWFuUGFnZShmaWcycHMydGV4LCQoTUFORElSKSkKIEluc3RhbGxNYW5QYWdlKHBpYzJ0cGlj
LCQoTUFORElSKSkKZGlmZiAtdXIgLS1uZXctZmlsZSB0cmFuc2ZpZy4zLjIuM2Qub3JpZy9maWcy
ZGV2L01ha2VmaWxlLm5vaW1ha2UgdHJhbnNmaWcuMy4yLjNkL2ZpZzJkZXYvTWFrZWZpbGUubm9p
bWFrZQotLS0gdHJhbnNmaWcuMy4yLjNkLm9yaWcvZmlnMmRldi9NYWtlZmlsZS5ub2ltYWtlCVR1
ZSBNYXkgMjkgMjE6MTY6MzcgMjAwMQorKysgdHJhbnNmaWcuMy4yLjNkL2ZpZzJkZXYvTWFrZWZp
bGUubm9pbWFrZQlXZWQgSnVsIDE3IDEwOjQyOjU3IDIwMDIKQEAgLTcyMCw2ICs3MjAsMTEgQEAK
IAllbHNlIChzZXQgLXg7ICQoTUtESVJISUVSKSAkKERFU1RESVIpJChCSU5ESVIpKTsgZmkKIAkk
KElOU1RBTEwpICQoSU5TVEFMTEZMQUdTKSAkKElOU1RCSU5GTEFHUykgcGljMnRwaWMuc2NyaXB0
ICQoREVTVERJUikkKEJJTkRJUikvcGljMnRwaWMKIAoraW5zdGFsbDo6IGZpZzJzeGQuc2gKKwlA
aWYgWyAtZCAkKERFU1RESVIpJChCSU5ESVIpIF07IHRoZW4gc2V0ICt4OyBcCisJZWxzZSAoc2V0
IC14OyAkKE1LRElSSElFUikgJChERVNURElSKSQoQklORElSKSk7IGZpCisJJChJTlNUQUxMKSAk
KElOU1RBTExGTEFHUykgJChJTlNUQklORkxBR1MpIGZpZzJzeGQuc2ggJChERVNURElSKSQoQklO
RElSKS9maWcyc3hkLnNoCisKIGluc3RhbGwubWFuOjogZmlnMnBzMnRleC5tYW4KIAlAaWYgWyAt
ZCAkKERFU1RESVIpJChNQU5ESVIpIF07IHRoZW4gc2V0ICt4OyBcCiAJZWxzZSAoc2V0IC14OyAk
KE1LRElSSElFUikgJChERVNURElSKSQoTUFORElSKSk7IGZpCmRpZmYgLXVyIC0tbmV3LWZpbGUg
dHJhbnNmaWcuMy4yLjNkLm9yaWcvZmlnMmRldi9kZXYvSW1ha2VmaWxlIHRyYW5zZmlnLjMuMi4z
ZC9maWcyZGV2L2Rldi9JbWFrZWZpbGUKLS0tIHRyYW5zZmlnLjMuMi4zZC5vcmlnL2ZpZzJkZXYv
ZGV2L0ltYWtlZmlsZQlUaHUgRmViIDE1IDE4OjQ1OjM1IDIwMDEKKysrIHRyYW5zZmlnLjMuMi4z
ZC9maWcyZGV2L2Rldi9JbWFrZWZpbGUJU3VuIEphbiAxMyAyMToyMDozNSAyMDAyCkBAIC0zOCwx
MiArMzgsMTIgQEAKIFJFQURKUEdPPXJlYWRqcGcubwogI2VuZGlmCiAKLVNSQ1MgPSAgZ2VuYm94
LmMgZ2VuY2dtLmMgZ2VuZXBpYy5jIGdlbmlibWdsLmMgZ2VubGF0ZXguYyBnZW5tYXAuYyBnZW5t
Zi5jIGdlbnBpYy5jIFwKK1NSQ1MgPSAgZ2VuYm94LmMgZ2VuY2dtLmMgZ2VuZXBpYy5jIGdlbmli
bWdsLmMgZ2VubGF0ZXguYyBnZW5zbWwuYyBnZW5zeGQuYyBnZW5tYXAuYyBnZW5tZi5jIGdlbnBp
Yy5jIFwKIAlnZW5waWN0ZXguYyBnZW5wcy5jIGdlbnBkZi5jIGdlbnBzdGV4LmMgZ2VudGV4dHls
LmMgZ2VudGsuYyBnZW50cGljLmMgXAogCWdlbmJpdG1hcHMuYyBnZW5nZS5jIGdlbm1wLmMgc2V0
ZmlnZm9udC5jIHBzZW5jb2RlLmMgXAogCXJlYWRwaWNzLmMgcmVhZGVwcy5jIHJlYWRnaWYuYyBy
ZWFkcGN4LmMgcmVhZHBwbS5jIFwKIAlyZWFkeGJtLmMgcmVhZHRpZi5jICQoUkVBRFBOR1MpICQo
UkVBREpQR1MpICQoUkVBRFhQTVMpCi1MSUJPQkpTID0gZ2VuYm94Lm8gZ2VuY2dtLm8gZ2VuZXBp
Yy5vIGdlbmlibWdsLm8gZ2VubGF0ZXgubyBnZW5tYXAubyBnZW5tZi5vIGdlbnBpYy5vIFwKK0xJ
Qk9CSlMgPSBnZW5ib3gubyBnZW5jZ20ubyBnZW5lcGljLm8gZ2VuaWJtZ2wubyBnZW5sYXRleC5v
IGdlbnNtbC5vIGdlbnN4ZC5vIGdlbm1hcC5vIGdlbm1mLm8gZ2VucGljLm8gXAogCWdlbnBpY3Rl
eC5vIGdlbnBzLm8gZ2VucGRmLm8gZ2VucHN0ZXgubyBnZW50ZXh0eWwubyBnZW50ay5vIGdlbnRw
aWMubyBcCiAJZ2VuYml0bWFwcy5vIGdlbmdlLm8gZ2VubXAubyBzZXRmaWdmb250Lm8gcHNlbmNv
ZGUubyBcCiAJcmVhZHBpY3MubyByZWFkZXBzLm8gcmVhZGdpZi5vIHJlYWRwY3gubyByZWFkcHBt
Lm8gXApkaWZmIC11ciAtLW5ldy1maWxlIHRyYW5zZmlnLjMuMi4zZC5vcmlnL2ZpZzJkZXYvZGV2
L2dlbnBzLmMgdHJhbnNmaWcuMy4yLjNkL2ZpZzJkZXYvZGV2L2dlbnBzLmMKLS0tIHRyYW5zZmln
LjMuMi4zZC5vcmlnL2ZpZzJkZXYvZGV2L2dlbnBzLmMJRnJpIEFwciAyMCAxOTozNzowMSAyMDAx
CisrKyB0cmFuc2ZpZy4zLjIuM2QvZmlnMmRldi9kZXYvZ2VucHMuYwlUaHUgSnVsICA0IDIwOjIx
OjI3IDIwMDIKQEAgLTIyNSwxMCArMjI1LDEwIEBACiAJCQl7IlRJRkYiLCAiTU1cMDAwKiIsCSAg
ICA0LCByZWFkX3RpZiwJRmFsc2V9LAogCQkJeyJYQk0iLCAiI2RlZmluZSIsCSAgICA3LCByZWFk
X3hibSwJVHJ1ZX0sCiAjaWZkZWYgVVNFX1BORwotCQkJeyJQTkciLCAiXDIxMVwxMjBcMTE2XDEw
N1wwMTVcMDEyXDAzMlwwMTIiLCA4LCByZWFkX3BuZywgVHJ1ZX0sCisvLwkJCXsiUE5HIiwgIlwy
MTFcMTIwXDExNlwxMDdcMDE1XDAxMlwwMzJcMDEyIiwgOCwgcmVhZF9wbmcsIFRydWV9LAogI2Vu
ZGlmCiAjaWZkZWYgVVNFX0pQRUcKLQkJCXsiSlBFRyIsICJcMzc3XDMzMFwzNzdcMzQwIiwgNCwg
cmVhZF9qcGcsCVRydWV9LAorLy8JCQl7IkpQRUciLCAiXDM3N1wzMzBcMzc3XDM0MCIsIDQsIHJl
YWRfanBnLAlUcnVlfSwKICNlbmRpZgogI2lmZGVmIFVTRV9YUE0KIAkJCXsiWFBNIiwgIi8qIFhQ
TSAqLyIsCSAgICA5LCByZWFkX3hwbSwJRmFsc2V9LApkaWZmIC11ciAtLW5ldy1maWxlIHRyYW5z
ZmlnLjMuMi4zZC5vcmlnL2ZpZzJkZXYvZGV2L2dlbnNtbC5jIHRyYW5zZmlnLjMuMi4zZC9maWcy
ZGV2L2Rldi9nZW5zbWwuYwotLS0gdHJhbnNmaWcuMy4yLjNkLm9yaWcvZmlnMmRldi9kZXYvZ2Vu
c21sLmMJVGh1IEphbiAgMSAwMTowMDowMCAxOTcwCisrKyB0cmFuc2ZpZy4zLjIuM2QvZmlnMmRl
di9kZXYvZ2Vuc21sLmMJRnJpIEp1biAyMSAxMjozNjowMCAyMDAyCkBAIC0wLDAgKzEsODY0IEBA
CisKKworLyoKKyAqIFRyYW5zRmlnOiBGYWNpbGl0eSBmb3IgVHJhbnNsYXRpbmcgRmlnIGNvZGUK
KyAqIENvcHlyaWdodCAoYykgMTk5MSBieSBNaWNhaCBCZWNrCisgKiBQYXJ0cyBDb3B5cmlnaHQg
KGMpIDE5ODUtMTk4OCBieSBTdXBvaiBTdXRhbnRoYXZpYnVsCisgKiBQYXJ0cyBDb3B5cmlnaHQg
KGMpIDE5ODktMTk5OSBieSBCcmlhbiBWLiBTbWl0aAorICoKKyAqIEFueSBwYXJ0eSBvYnRhaW5p
bmcgYSBjb3B5IG9mIHRoZXNlIGZpbGVzIGlzIGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCBhCisg
KiBmdWxsIGFuZCB1bnJlc3RyaWN0ZWQgaXJyZXZvY2FibGUsIHdvcmxkLXdpZGUsIHBhaWQgdXAs
IHJveWFsdHktZnJlZSwKKyAqIG5vbmV4Y2x1c2l2ZSByaWdodCBhbmQgbGljZW5zZSB0byBkZWFs
IGluIHRoaXMgc29mdHdhcmUgYW5kCisgKiBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3
YXJlIiksIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNl
LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAor
ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz
b25zIHdobyByZWNlaXZlCisgKiBjb3BpZXMgZnJvbSBhbnkgc3VjaCBwYXJ0eSB0byBkbyBzbywg
d2l0aCB0aGUgb25seSByZXF1aXJlbWVudCBiZWluZworICogdGhhdCB0aGlzIGNvcHlyaWdodCBu
b3RpY2UgcmVtYWluIGludGFjdC4KKyAqCisgKi8KKworLyoKKyAqCWdlbnNtbC5jIDogS2l2aW8g
U3RlbmNpbCBkcml2ZXIgZm9yIGZpZzJkZXYKKyAqCisgKglBdXRob3I6IFBldGVyIEtvcmYKKyAq
ICAgICAgQ29kZSBzdG9sZW4gZnJvbSBnZW5sYXRleC5jCisgKgorICovCisjaWYgZGVmaW5lZCho
cHV4KSB8fCBkZWZpbmVkKFNZU1YpIHx8IGRlZmluZWQoU1ZSNCkKKyNpbmNsdWRlIDxzeXMvdHlw
ZXMuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy9maWxlLmg+CisjaW5jbHVkZSAiZmlnMmRldi5o
IgorI2luY2x1ZGUgIm9iamVjdC5oIgorI2luY2x1ZGUgInRleGZvbnRzLmgiCisKK2V4dGVybiBk
b3VibGUgcmFkMmRlZzsKK2V4dGVybiB2b2lkIHVucHNmb250KCk7CisKKy8vc3RhdGljIHB1dF9i
b3goKTsKKy8vc3RhdGljIHB1dF9hcmNfYm94KCk7CisvL3N0YXRpYyBzaW5nbGVfbGluZSgpOwor
Ly9zdGF0aWMgc3RhcnRfbGluZSgpOwordm9pZCBlbmRfbGluZSgpOwordm9pZCBzZXRjb2xvcihp
bnQsaW50KTsKKworCisvL3N0YXRpYyBwdXRfc29saWRsaW5lKCk7CisvL3N0YXRpYyBwdXRfZGFz
aGxpbmUoKTsKKy8vc3RhdGljIHB1dF9kb3RsaW5lKCk7CisvL3N0YXRpYyBwdXRfcXVhcnRlcigp
OworCisjZGVmaW5lIHJpbnQoYSkgZmxvb3IoKGEpKzAuNSkgICAgIC8qIGNsb3NlIGVub3VnaD8g
Ki8KKworI2RlZmluZSBERVNDX05BTUUJInVua25vd24iCitleHRlcm4gY2hhciAgICAgICAgICAg
ICpmcm9tOworCisjZGVmaW5lCVNXQVAoeCx5KQl7dG1wPXg7IHg9eTsgeT10bXA7fQorLy8jZGVm
aW5lIFRSQU5TKHgseSkJCSgqdHJhbnNsYXRlX2Nvb3JkaW5hdGVzKSgmeCwmeSkKKy8vI2RlZmlu
ZSBUUkFOUzIoeDEseTEseDIseTIpCSgqdHJhbnNsYXRlX2Nvb3JkaW5hdGVzKSgmeDEsJnkxKTsg
XAorLy8JCQkJKCp0cmFuc2xhdGVfY29vcmRpbmF0ZXMpKCZ4MiwmeTIpCisvLyNkZWZpbmUgVFJB
TlNEKHgseSkJCSgqdHJhbnNsYXRlX2Nvb3JkaW5hdGVzX2QpKCZ4LCZ5KQorI2RlZmluZSBUUkFO
Uyh4LHkpCQl0cmFuc2xhdGUxKCZ4LCZ5KQorI2RlZmluZSBUUkFOUzIoeDEseTEseDIseTIpCXRy
YW5zbGF0ZTEoJngxLCZ5MSk7dHJhbnNsYXRlMSgmeDIsJnkyKTsKKworI2lmbmRlZiBNSU4KKyNk
ZWZpbmUJTUlOKHgseSkJKCgoeCkgPD0gKHkpKT8gKHgpOiAoeSkpCisjZW5kaWYKKyNpZm5kZWYg
TUFYCisjZGVmaW5lCU1BWCh4LHkpCSgoKHgpID49ICh5KSk/ICh4KTogKHkpKQorI2VuZGlmCisj
ZGVmaW5lCUFCUyh4KQkJKCgoeCkgPj0gMCk/ICh4KTogLSh4KSkKKyNkZWZpbmUgcm91bmQ0KHgp
CSgocm91bmQoMTAwMDAuMCooeCkpLzEwMDAwLjApKQorI2RlZmluZSByb3VuZDYoeCkJKChyb3Vu
ZCgxMDAwMDAwLjAqKHgpKS8xMDAwMDAwLjApKQorI2RlZmluZSBNQVhDSVJDTEVESUEJODAKKyNk
ZWZpbmUgTUFYQ0lSQ0xFUkFECSgoTUFYQ0lSQ0xFRElBLTAuNSkvKDIqNzIuMjcpKQorCisKKyNk
ZWZpbmUgU0NBTEVGQUtUT1IJMzAwCisKK3N0YXRpYyBjaGFyCQkJZGVzY19uYW1lW10gID0gREVT
Q19OQU1FOworc3RhdGljIGZsb2F0CQkJb2Zmc2V0eCxvZmZzZXR5LHNjYWxlPTE7CitzdGF0aWMg
aW50CQkJY291bnRlcj0wOworCitzdGF0aWMgdW5zaWduZWQgaW50IHJnYkNvbG9yVmFsKGludCBj
b2xvckluZGV4KTsKKy8vIHN0YXRpYyB1bnNpZ25lZCBpbnQgc2V0U3R5bGUoRl9jb21wb3VuZAkq
b2JqZWN0czspOworCisKK3N0YXRpYwlpbnQJdmVyYm9zZTsvLyAgPSAwOworZXh0ZXJuIGRvdWJs
ZQkJZGFzaF9tYWc7Ly8gID0gMS4wOworZXh0ZXJuIGludAkJdGhpY2tfd2lkdGg7Ly8gID0gMjsK
K2V4dGVybiBkb3VibGUJCXRvbGVyYW5jZTsvLyAgPSAyLjA7CitleHRlcm4gZG91YmxlCQlhcmNf
dG9sZXJhbmNlOy8vICA9IDEuMDsKK2V4dGVybiBpbnQJCSgqdHJhbnNsYXRlX2Nvb3JkaW5hdGVz
KSgpOy8vICA9IE5VTEw7CitleHRlcm4gaW50CQkoKnRyYW5zbGF0ZV9jb29yZGluYXRlc19kKSgp
Oy8vICA9IE5VTEw7CitleHRlcm4gZG91YmxlCQl1bml0bGVuZ3RoOworc3RhdGljIGludAljdXJf
dGhpY2tuZXNzOy8vIDE7CitleHRlcm4gZG91YmxlCQlsZG90X2RpYW1ldGVyOy8vIC4wLzcyLjA7
CitleHRlcm4gY2hhcgkJKmRvdF9jbWQ7Ly8gPXRpbmRvdDsKK2V4dGVybiBjaGFyCQkqbGRvdF9j
bWQ7Ly8gPWhpbl9sZG90OworZXh0ZXJuIGRvdWJsZQkJZG90X3hvZmZzZXQ7CitleHRlcm4gZG91
YmxlCQlkb3RfeW9mZnNldDsKK2V4dGVybiBkb3VibGUJCWxkb3RfeG9mZnNldDsKK2V4dGVybiBk
b3VibGUJCWxkb3RfeW9mZnNldDsKKworCitzdGF0aWMKK3RyYW5zbGF0ZTEoeHAsIHlwKQorZmxv
YXQJKnhwLCAqeXA7Cit7CitpZiAodmVyYm9zZSkgZnByaW50Zih0ZnAsICI8IS0tIHRyYW5zbGF0
ZTEgJS4zZiAlLjNmICUuM2YtLT5cbiIsKnhwLG9mZnNldHgsc2NhbGUpOworCSp4cCA9IChmbG9h
dCkoKnhwLW9mZnNldHgpL3NjYWxlOworCSp5cCA9IChmbG9hdCkoKnlwLW9mZnNldHkpL3NjYWxl
OworCisvLyp4cCA9ICp4cCArIDE7CisvLyp5cCA9ICp5cCArIDE7CisJfQorCitzdGF0aWMKK3Ry
YW5zbGF0ZTIoeHAsIHlwKQorZmxvYXQJKnhwLCAqeXA7Cit7CitpZiAodmVyYm9zZSkgZnByaW50
Zih0ZnAsICI8IS0tIHRyYW5zbGF0ZTIgLS0+XG4iKTsKKworLy8JKnhwIC89IChkb3VibGUpMTIw
OworLy8JKnlwIC89IChkb3VibGUpMTIwOworCSp4cCA9ICgqeHAtb2Zmc2V0eCkvc2NhbGU7CisJ
KnlwID0gKCp5cC1vZmZzZXR5KS9zY2FsZTsKKy8vCSp4cCA9ICp4cCArIDE7CisvLwkqeXAgPSAo
ZG91YmxlKShUT1AgLSAqeXAgLTEpOworCX0KKworc3RhdGljIHRyYW5zbGF0ZTFfZCh4cCwgeXAp
CitmbG9hdAkqeHAsICp5cDsKK3sKK2lmICh2ZXJib3NlKSBmcHJpbnRmKHRmcCwgIjwhLS0gdHJh
bnNsYXRlMV9kIC0tPlxuIik7CisvLwkqeHAgLz0gKGRvdWJsZSkxMjA7CisvLwkqeXAgLz0gKGRv
dWJsZSkxMjA7CisJKnhwID0gKCp4cC1vZmZzZXR4KS9zY2FsZTsKKwkqeXAgPSAoKnlwLW9mZnNl
dHkpL3NjYWxlOworLy8JKnhwID0gKnhwICsgMS4wOworLy8JKnlwID0gKnlwICsgMS4wOworCX0K
K3N0YXRpYwordHJhbnNsYXRlMl9kKHhwLCB5cCkKK2Zsb2F0CSp4cCwgKnlwOworeworaWYgKHZl
cmJvc2UpIGZwcmludGYodGZwLCAiPCEtLSB0cmFuc2xhdGUyX2QgLS0+XG4iKTsKKy8vCSp4cCAv
PSAoZG91YmxlKTEyMDsKKy8vCSp5cCAvPSAoZG91YmxlKTEyMDsKKwkqeHAgPSAoKnhwLW9mZnNl
dHgpL3NjYWxlOworCSp5cCA9ICgqeXAtb2Zmc2V0eSkvc2NhbGU7CisvLwkqeHAgPSAqeHAgKyAx
LjA7CisvLwkqeXAgPSAoZG91YmxlKVRPUCAtICp5cCAtMS4wOworCX0KKwordm9pZAorZ2Vuc21s
X29wdGlvbihvcHQsIG9wdGFyZykKKyAgY2hhciBvcHQsICpvcHRhcmc7Cit7CisgICAgaW50IGk7
CisKKyAgICBzd2l0Y2ggKG9wdCkgeworCWNhc2UgJ2EnOgorCSAgICBmcHJpbnRmKHN0ZGVyciwg
Indhcm5pbmc6IGxhdGV4IG9wdGlvbiAtYSBvYnNvbGV0ZSIpOworCSAgICBicmVhazsKKworCWNh
c2UgJ2QnOgorCSAgICBkYXNoX21hZyA9IGF0b2Yob3B0YXJnKTsJLyogc2V0IGRhc2ggbWFnbmlm
aWNhdGlvbiAqLworCSAgICBicmVhazsKKworCSAgICBkYXNoX21hZyA9IGF0b2Yob3B0YXJnKTsJ
Lyogc2V0IGRhc2ggbWFnbmlmaWNhdGlvbiAqLworCSAgICBicmVhazsKKworCisJY2FzZSAnZic6
CQkvKiBzZXQgZGVmYXVsdCB0ZXh0IGZvbnQgKi8KKwkgICAgZm9yICggaSA9IDE7IGkgPD0gTUFY
X0ZPTlQ7IGkrKyApCisJCWlmICggIXN0cmNtcChvcHRhcmcsIHRleGZvbnRuYW1lc1tpXSkgKSBi
cmVhazsKKworCSAgICBpZiAoIGkgPiBNQVhfRk9OVCkKKwkJCXsKKwkJCSAgZnByaW50ZihzdGRl
cnIsCisJCQkJCQkgIndhcm5pbmc6IG5vbi1zdGFuZGFyZCBmb250IG5hbWUgJXMgaWdub3JlZFxu
Iiwgb3B0YXJnKTsKKwkJCX0KKwkJIGVsc2UKKwkJCXsKKwkJCSAgdGV4Zm9udG5hbWVzWzBdID0g
dGV4Zm9udG5hbWVzW2ldOworI2lmZGVmIE5GU1MKKwkJCSAgdGV4Zm9udGZhbWlseVswXSA9IHRl
eGZvbnRmYW1pbHlbaV07CisJCQkgIHRleGZvbnRzZXJpZXNbMF0gPSB0ZXhmb250c2VyaWVzW2ld
OworCQkJICB0ZXhmb250c2hhcGVbMF0gPSB0ZXhmb250c2hhcGVbaV07CisjZW5kaWYKKwkJCX0K
KwkgICAgYnJlYWs7CisKKwljYXNlICdsJzoJCS8qIHNldCB0aGluL3RoaWNrIGxpbmUgdGhyZXNo
b2xkICovCisJICAgIHRoaWNrX3dpZHRoID0gYXRvaShvcHRhcmcpOworCSAgICBicmVhazsKKwor
CWNhc2UgJ3YnOgorCSAgICB2ZXJib3NlID0gMTsJCS8qIHZlcmJvc2UgbW9kZSAqLworCSAgICBi
cmVhazsKKworCWNhc2UgJ24nOgorCSAgICBzcHJpbnRmKGRlc2NfbmFtZSwiJXMiLG9wdGFyZyk7
CQkvKiBkZXNjcmlwdGlvbiBuYW1lIChsaWJyYXJ5KSAqLworCSAgICBicmVhazsKKworCWNhc2Ug
J3MnOgorCWNhc2UgJ20nOgorCWNhc2UgJ0wnOgorCSAgICBicmVhazsKKworCSAgICBicmVhazsK
KworCWRlZmF1bHQ6CisJICAgIHB1dF9tc2coRXJyX2JhZGFyZywgb3B0LCAibGF0ZXgiKTsKKwkg
ICAgZXhpdCgxKTsKKwl9Cit9CisKK3ZvaWQKK2dlbnNtbF9zdGFydChvYmplY3RzKQorICBGX2Nv
bXBvdW5kCSpvYmplY3RzOworeworCWludCB0bXA7CisJY2hhciBuYW1lMVs0MF09IiAgIjsKKwlm
bG9hdCB4MSx5MSx4Mix5MjsKKwlzdHJuY3B5KChjaGFyICopbmFtZTEsZnJvbSxzdHJsZW4oZnJv
bSktNCk7CisKKy8vCXN0cm5jcHkoKGNoYXIgKiluYW1lMSwoY2hhciAqKW5hbWUxLHN0cmxlbihu
YW1lMSktNCk7CisvLwltZW1jcHkocmluZGV4KChjb25zdCBjaGFyKilmcm9tLCcuJyksJ1wwJywx
KTsKKy8vCW5hbWVbc3RybGVuKChjb25zdCBjaGFyKilmcm9tKV09J1wwJzsKKwkvKiBwcmludCBh
bnkgd2hvbGUtZmlndXJlIGNvbW1lbnRzIHByZWZpeGVkIHdpdGggIiUiICovCisgICAgZnByaW50
Zih0ZnAsICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PlxuIik7CisKKy8vCWlmIChvYmplY3RzLT5j
b21tZW50cykgeworLy8JICAgIHByaW50X2NvbW1lbnRzKCI8IS0tICIsb2JqZWN0cy0+Y29tbWVu
dHMsICItLT4iKTsKKy8vCX0KKworLy8gICAgZnByaW50Zih0ZnAsICI8IS0tIGRvIG5vdCBlZGl0
ICEgZ2VuZXJhdGVkIHdpdGg6IGZpZzJkZXYgLUwgc21sICVzIC0tLT5cbiIsZnJvbSk7CisgICAg
ZnByaW50Zih0ZnAsICI8S2l2aW9TaGFwZVN0ZW5jaWwgY3JlYXRvcj1cImZpZzJkZXZcIj5cbiIg
KTsKKyAgICBmcHJpbnRmKHRmcCwgIjxLaXZpb1NNTFN0ZW5jaWxTcGF3bmVySW5mbz5cbiIgKTsK
KyAgICBmcHJpbnRmKHRmcCwgIjxBdXRob3IgZGF0YT1cInNlZSBSRUFETUUgZmlsZXNcIi8+XG4i
ICk7CisKKy8vICAgIHByaW50X2NvbW1lbnRzKCI8VGl0bGUgZGF0YT1cIiAgIixvYmplY3RzLT5j
b21tZW50cywgIlwiLz4iKTsKKyAgICBmcHJpbnRmKHRmcCwgIjxJZCBkYXRhPVwiJXNcIi8+XG4i
LG5hbWUxKTsKKyBpZiAob2JqZWN0cy0+Y29tbWVudHMpIHsKKwkgICAgcHJpbnRfY29tbWVudHMo
IjxEZXNjcmlwdGlvbiBkYXRhPVwiICAiLG9iamVjdHMtPmNvbW1lbnRzLCAiXCIvPiIpOworCSAg
ICBwcmludF9jb21tZW50cygiPFRpdGxlIGRhdGE9XCIgICIsb2JqZWN0cy0+Y29tbWVudHMsICJc
Ii8+Iik7CisgIH0gZWxzZQorICB7CisgICAgZnByaW50Zih0ZnAsICI8RGVzY3JpcHRpb24gZGF0
YT1cIiVzXCIvPlxuIixuYW1lMSk7CisgICAgZnByaW50Zih0ZnAsICI8VGl0bGUgZGF0YT1cIiVz
XCIvPlxuIixuYW1lMSk7CisgIH0KKyAgICBmcHJpbnRmKHRmcCwgIjxWZXJzaW9uIGRhdGE9XCIw
LjFcIi8+XG4iICk7CisgICAgZnByaW50Zih0ZnAsICI8V2ViIGRhdGE9XCJ3d3cueGZpZy5vcmdc
Ii8+XG4iICk7CisgICAgZnByaW50Zih0ZnAsICI8RW1haWwgZGF0YT1cInBldGVyQG5pZW5kby5k
ZVwiLz5cbiIgKTsKKyAgICBmcHJpbnRmKHRmcCwgIjxDb3B5cmlnaHQgZGF0YT1cInNlZSBSRUFE
TUUgZmlsZXMgXCIvPlxuIiApOworICAgIGZwcmludGYodGZwLCAiPEF1dG9VcGRhdGUgZGF0YT1c
Im9mZlwiLz5cbiIgKTsKKyAgICBmcHJpbnRmKHRmcCwgIjwvS2l2aW9TTUxTdGVuY2lsU3Bhd25l
ckluZm8+XG4iICk7CisKKwl0ZXhmb250c2l6ZXNbMF0gPSB0ZXhmb250c2l6ZXNbMV0gPQorCQlU
RVhGT05UU0laRShmb250X3NpemU/Zm9udF9zaXplOkRFRkFVTFRfRk9OVF9TSVpFKTsKKyAgICAg
ICAgbWFnPTE7CisgICAgICAgIHBwaT0xOworIAl1bml0bGVuZ3RoID0gbWFnL3BwaTsKKwlkYXNo
X21hZyAvPSB1bml0bGVuZ3RoOworCisvLyAgICBmcHJpbnRmKHRmcCwgIm1hZzogJWYscHBpOiAl
ZixkYXNobWFnOyAlZlxuIixtYWcscHBpLGRhc2hfbWFnKTsKKworLy8gICAgZnByaW50Zih0ZnAs
ICJ4MTogJWQseTE6ICVkLHgyOyAlZCx5MiAlZFxuIiwKKy8vICAgICAgb2JqZWN0cy0+bndjb3Ju
ZXIueCwKKy8vICAgICAgIG9iamVjdHMtPm53Y29ybmVyLnksb2JqZWN0cy0+c2Vjb3JuZXIueCxv
YmplY3RzLT5zZWNvcm5lci55KTsKKwkvL3RyYW5zbGF0ZV9jb29yZGluYXRlcyA9IHRyYW5zbGF0
ZTI7CisJLy90cmFuc2xhdGVfY29vcmRpbmF0ZXNfZCA9IHRyYW5zbGF0ZTJfZDsKKyAgICAgICAg
b2Zmc2V0eD0oZmxvYXQpbGx4OworCW9mZnNldHk9KGZsb2F0KWxseTsKKworCXgxPShmbG9hdCls
bHg7CisJeTE9KGZsb2F0KWxseTsKKwl4Mj0oZmxvYXQpdXJ4OworCXkyPShmbG9hdCl1cnk7CisJ
VFJBTlMyKHgxLCB5MSwgeDIsIHkyKTsKKwkvL2lmIChsbHggPiB1cngpIFNXQVAobGx4LCB1cngp
CisJLy9pZiAobGx5ID4gdXJ5KSBTV0FQKGxseSwgdXJ5KQorCisvLwlpZigodXJ4PjMwMCkgfHwg
KHVyeT4zMDApKSB7CisKKwkgIHNjYWxlPXVyeC9TQ0FMRUZBS1RPUjsKKworLy8JICBpZiAoc2Nh
bGU8MSkgc2NhbGU9MTsKKworLy8JICAgdXJ4PShkb3VibGUpdXJ4LzY7CisvLwkgICB1cnk9KGRv
dWJsZSl1cnkvNjsKKyAgICAgIGZwcmludGYodGZwLCAiPERpbWVuc2lvbnMgdz1cIiUuM2ZcIiBo
PVwiJS4zZlwiIGRlZmF1bHRBc3BlY3Q9XCIwLjc1XCIvPlxuIix4Mi9zY2FsZSx5Mi9zY2FsZSk7
CisgICAgICBmcHJpbnRmKHRmcCwgIjxLaXZpb1NoYXBlIHR5cGU9XCJUZXh0Qm94XCIgbmFtZT1c
IlRleHRCb3glZFwiICB4PVwiMC4wXCIgeT1cIjAuMFwiIHc9XCIlLjNmXCIgaD1cIiUuM2ZcIiAv
PlxuIixjb3VudGVyKysseDIvc2NhbGUseTIvc2NhbGUpOworCisvLwkgIFRSQU5TMihsbHgsIGxs
eSwgdXJ4LCB1cnkpOworLy8JfSBlbHNlCisvLwlmcHJpbnRmKHRmcCwgIjxEaW1lbnNpb25zIHc9
XCIlZFwiIGg9XCIlZFwiIGRlZmF1bHRBc3BlY3Q9XCIwLjc1XCIvPlxuIix1cngsdXJ5KTsKKwor
CisKKworCisJLyogTGFUZVggc3RhcnQgKi8KKworCS8qIHByaW50IGFueSB3aG9sZS1maWd1cmUg
Y29tbWVudHMgcHJlZml4ZWQgd2l0aCAiJSIgKi8KKy8vCWlmIChvYmplY3RzLT5jb21tZW50cykg
eworLy8JICAgIGZwcmludGYodGZwLCIlJVxuIik7CisvLwkgICAgcHJpbnRfY29tbWVudHMoIiUg
IixvYmplY3RzLT5jb21tZW50cywgIiIpOworLy8JICAgIGZwcmludGYodGZwLCIlJVxuIik7Cisv
Lwl9CisKKy8vCWZwcmludGYodGZwLCAiXFxzZXRsZW5ndGh7XFx1bml0bGVuZ3RofXslbGlzcH0l
JVxuIiwKKy8vCQkJCShsb25nKSAocm91bmQoNDczNjI4Ni43Mip1bml0bGVuZ3RoKSkpOworCS8q
IGRlZmluZSB0aGUgU2V0RmlnRm9udCBtYWNybyAqLworLy8JZGVmaW5lX3NldGZpZ2ZvbnQodGZw
KTsKKy8vCWZwcmludGYodGZwLCAiXFxiZWdpbntwaWN0dXJlfSglZCwlZCkoJWQsJWQpXG4iLAor
Ly8JIAkJCQkgdXJ4LWxseCwgdXJ5LWxseSwgbGx4LCBsbHkpOworCit9CisKK2ludAorZ2Vuc21s
X2VuZCgpCit7CisJZnByaW50Zih0ZnAsICI8L0tpdmlvU2hhcGVTdGVuY2lsPlxuIik7CisJLyog
YWxsIG9rICovCisJcmV0dXJuIDA7Cit9CisKKwordm9pZAorZ2Vuc21sX2xpbmUobCkKKyAgRl9s
aW5lCSpsOworeworCUZfcG9pbnQJCSpwLCAqcTsKKwlmbG9hdAkJeCwgeSx4MSx5MSwgbGx4LCBs
bHksIHVyeCwgdXJ5LCBhcnJvdzsKKyAgICAgICAgZmxvYXQgICAgICAgICAgIHIxLHIyOworCWlu
dCB0eXBlPTA7CisJaWYgKHZlcmJvc2UpCisJZnByaW50Zih0ZnAsICI8IS0tZGVwdGg6ICVkLCBU
eXBlOiAlZCwgU3R5bGU6ICVkLCBGYXJiZV9maWxsOiAlZCwgRmFyYmVfcGVuOiAlZCAtLT5cbiIs
bC0+ZGVwdGgsbC0+dHlwZSxsLT5maWxsX3N0eWxlLGwtPmZpbGxfY29sb3IsbC0+cGVuX2NvbG9y
KTsKKworCS8qIHByaW50IGFueSBjb21tZW50cyBwcmVmaXhlZCB3aXRoICIlIiAqLworCS8vcHJp
bnRfY29tbWVudHMoIiUgIixsLT5jb21tZW50cywgIiIpOworCisvLwlzZXRfbGluZXdpZHRoKGwt
PnRoaWNrbmVzcyk7CisvLwlzZXRjb2xvcihsLT5wZW5fY29sb3IpOworCXAgPSBsLT5wb2ludHM7
CisJcSA9IHAtPm5leHQ7CisKKworCisJaWYgKHEgPT0gTlVMTCkgeyAvKiBBIHNpbmdsZSBwb2lu
dCBsaW5lICovCisKKwkgICAgeCA9IHAtPng7IHkgPSBwLT55OworCSAgICBUUkFOUyh4LCB5KTsK
KworLy8JICAgIGZwcmludGYodGZwLCAiXFxwdXQoJTNkLCUzZCl7XFxtYWtlYm94KCUuNGYsJS40
Zil7JXN9fVxuIiwKKy8vCSAgICAgIHgsIHksIGRvdF94b2Zmc2V0LCBkb3RfeW9mZnNldCwgZG90
X2NtZCk7CisgICAgICAgICAgICAgIGZwcmludGYodGZwLCAiPEtpdmlvU2hhcGUgdHlwZT1cIkxp
bmVBcnJheVwiIG5hbWU9XCJQb2ludCVkXCI+XG4iLGNvdW50ZXIrKyk7CisKKwkgICAgICAgZnBy
aW50Zih0ZnAsICJcdDxMaW5lIHgxPVwiJS4zZlwiIHkxPVwiJS4zZlwiIHgyPVwiJS4zZlwiIHky
PVwiJS4zZlwiLz5cbiIsCisJICAgICAgICAgIHgsIHksIHgrMC4wMDEsIHkrMC4wMDEpOworCX0K
KworCS8qIGEgYm94LCBwZXJoYXBzIHdpdGggcm91bmRlZCBjb3JuZXJzICovCisJZWxzZQorCSBz
d2l0Y2ggKGwtPnR5cGUpIHsKKyAgICAgICAgICAgICAgIGNhc2UgVF9CT1g6CisgICAgICAgICAg
ICAgICBjYXNlIFRfQVJDX0JPWDogeworCSAgICB4ID0gcC0+eDsgeSA9IHAtPnk7CisJICAgIFRS
QU5TKHgsIHkpOworCSAgICBsbHggPSB1cnggPSB4OworCSAgICBsbHkgPSB1cnkgPSB5OworCSAg
ICB3aGlsZSAocSAhPSBOVUxMKSB7CisJCXggPSBxLT54OyB5ID0gcS0+eTsKKwkJVFJBTlMoeCwg
eSk7CisJCWlmICh4IDwgbGx4KSBsbHggPSB4OworCQlpZiAoeSA8IGxseSkgbGx5ID0geTsKKwkJ
aWYgKHggPiB1cngpIHVyeCA9IHg7CisJCWlmICh5ID4gdXJ5KSB1cnkgPSB5OworCQlxID0gcS0+
bmV4dDsKKwkJfQorCisgICAgICAgICAgICAvL2lmICgobC0+ZmlsbF9zdHlsZSAhPSAtMSkgJiYg
KGwtPmZpbGxfY29sb3IgIT0tMSApKSB7CisJICAgIGlmIChsLT50eXBlID09IFRfQVJDX0JPWCkg
eworCSAgICAgIC8vIHB1dF9hcmNfYm94IChsbHgsIGxseSwgdXJ4LCB1cnksIGwtPnJhZGl1cywg
bC0+c3R5bGUsIGwtPnN0eWxlX3ZhbCk7CisJICAgICAgcjE9bC0+cmFkaXVzL3NjYWxlL3BwaTsK
KyAgICAgICAgICAgICAgcjI9bC0+cmFkaXVzL3NjYWxlL3BwaTsKKy8vCSAgICAgIC8vVFJBTlMo
cjEscjIpOworCSAgICAgIAkgICAgICAgIGZwcmludGYodGZwLCAiPEtpdmlvU2hhcGUgdHlwZT1c
IlJvdW5kUmVjdGFuZ2xlXCIgbmFtZT1cIlJvdW5kUmVjdGFuZ2xlJWRcIiB4PVwiJS4zZlwiIHk9
XCIlLjNmXCIgdz1cIiUuM2ZcIiBoPVwiJS4zZlwiIHIxPVwiJTAuMmZcIiByMj1cIiUwLjJmXCI+
XG4iLAorCQkJY291bnRlcisrLCBsbHgsIGxseSwgdXJ4LWxseCwgdXJ5LWxseSxyMSxyMik7CisJ
CSAgfQorCSAgICBlbHNlIHsKKyAgICAgICAgICAgICAgZnByaW50Zih0ZnAsICI8S2l2aW9TaGFw
ZSB0eXBlPVwiUmVjdGFuZ2xlXCIgbmFtZT1cIlJlY3RhbmdsZSVkXCIgeD1cIiUuM2ZcIiB5PVwi
JS4zZlwiIHc9XCIlLjNmXCIgaD1cIiUuM2ZcIj5cbiIsCisJICBjb3VudGVyKyssIGxseCwgbGx5
LCB1cngtbGx4LCB1cnktbGx5KTsKKworCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
Lyp9IGVsc2UKKwkgICAgeworCSAgICAgICAgICAgZnByaW50Zih0ZnAsICI8S2l2aW9TaGFwZSB0
eXBlPVwiTGluZUFycmF5XCIgbmFtZT1cIlJlY3RhbmdsZSVkXCI+XG4iLGNvdW50ZXIrKyk7Cisg
ICAgICAgICAgICAgICAgICAgZnByaW50Zih0ZnAsICJcdDxMaW5lIHgxPVwiJS4zZlwiIHkxPVwi
JS4zZlwiIHgyPVwiJS4zZlwiIHkyPVwiJS4zZlwiLz5cbiIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsbHgsIGxseSwgdXJ4LGxseSk7CisgICAgICAgICAgICAgICAgICAg
ZnByaW50Zih0ZnAsICJcdDxMaW5lIHgxPVwiJS4zZlwiIHkxPVwiJS4zZlwiIHgyPVwiJS4zZlwi
IHkyPVwiJS4zZlwiLz5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
cngsbGx5LCB1cngsdXJ5KTsKKwkJZnByaW50Zih0ZnAsICJcdDxMaW5lIHgxPVwiJS4zZlwiIHkx
PVwiJS4zZlwiIHgyPVwiJS4zZlwiIHkyPVwiJS4zZlwiLz5cbiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1cngsdXJ5LGxseCx1cnkpOworCQlmcHJpbnRmKHRmcCwgIlx0
PExpbmUgeDE9XCIlLjNmXCIgeTE9XCIlLjNmXCIgeDI9XCIlLjNmXCIgeTI9XCIlLjNmXCIvPlxu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxseCx1cnksIGxseCxsbHkp
OworCSAgICB9CisqLworICAgICAgICAgICAgYnJlYWs7CisJICAgIH0KKyAgICAgICAgICAgIGNh
c2UgVF9QT0xZTElORToKKwkgICAgY2FzZSBUX1BPTFlHT046IHsKKworCSAgICAgIGlmICggKGwt
PmZpbGxfc3R5bGUgPT0gLTEpICYmIChsLT5maWxsX2NvbG9yID09LTEgKSkKKwkgICAgICAgICB7
CisJCSAgICBmcHJpbnRmKHRmcCwgIjxLaXZpb1NoYXBlIHR5cGU9XCJQb2x5bGluZVwiIG5hbWU9
XCJQb2x5bGluZSVkXCI+XG4iLGNvdW50ZXIrKyk7CisgICAgICAgICAgICAgdHlwZT0wOworCQkg
fQorICAgICAgICAgICAgIGVsc2UKKwkgICAgICAgIHsKKwkJICAgICBmcHJpbnRmKHRmcCwgIjxL
aXZpb1NoYXBlIHR5cGU9XCJQb2x5Z29uXCIgbmFtZT1cIlBvbHlnb24lZFwiPlxuIixjb3VudGVy
KyspOworCisKKwkJIHR5cGU9MDsKKworICAgICAgICAgCSAvLyBmcHJpbnRmKHRmcCwgIjxLaXZp
b1NoYXBlIHR5cGU9XCJMaW5lQXJyYXlcIiBuYW1lPVwiTGluZUFycmF5JWRcIj5cbiIsY291bnRl
cisrKTsKKwkJICAvL3R5cGU9MTsKKyAgICAgICAgICAgICAgfQorCisKKy8vCSAgICBpZiAobC0+
dHlwZSA9PSBUX0JPVU5ESU5HQk9YKQorLy8gICAgICAgIAlmcHJpbnRmKHRmcCwgIjxLaXZpb1No
YXBlIHR5cGU9XCJQb2x5Z29uXCIgbmFtZT1cIkxpbmVzXCI+XG4iKTsKKworCisKKwl3aGlsZSAo
cSAhPSBOVUxMKSB7CisJICAgIC8vYXJyb3cgPSAwOworCSAgICAvL2lmIChsLT5mb3JfYXJyb3cg
ICYmICBxLT5uZXh0ID09IE5VTEwpCisJCS8vYXJyb3cgPSAxOworCSAgICAvL2lmIChsLT5iYWNr
X2Fycm93ICAmJiAgcCA9PSBsLT5wb2ludHMpCisJCS8vYXJyb3cgPSAoYXJyb3cpPyAyOiAtMTsK
KwkJICBpZiAodHlwZT09MCkgeworCSAgIC8vIGlmICgobC0+dHlwZSA9PSBUX1BPTFlHT04pICYm
IChsLT5maWxsX3N0eWxlICE9IFVORklMTEVEKSkgeworCQkgICAgCSAgICAgICAgeCA9IHAtPng7
IHkgPSBwLT55OworCQkgICAgICAgIFRSQU5TKHgsIHkpOworCQkgICAgZnByaW50Zih0ZnAsICJc
dDxLaXZpb1BvaW50IHg9XCIlLjNmXCIgeT1cIiUuM2ZcIi8+XG4iLHgseSk7CisgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisJCSAgICAgICB4PXAt
Png7CisJCSAgICAgICB5PXAtPnk7CisJCSAgICAgICB4MT1xLT54OworICAgICAgICAgICAgICAg
ICAgICAgICB5MT1xLT55OworICAgICAgICAgICAgICAgICAgICAgICBUUkFOUzIoeCwgeSwgeDEs
IHkxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgZnByaW50Zih0ZnAsICJcdDxMaW5lIHgxPVwi
JS4zZlwiIHkxPVwiJS4zZlwiIHgyPVwiJS4zZlwiIHkyPVwiJS4zZlwiLz5cbiIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LCB5LCB4MSx5MSk7CisKKyAgICAgICAgCSAg
ICAgIC8vIHNpbmdsZV9saW5lKHAtPngsIHAtPnksIHEtPngsIHEtPnksIGFycm93LCBsLT5zdHls
ZSwgbC0+c3R5bGVfdmFsKTsKKwkJICAgICAgfQorCisJICAgIHAgPSBxOworCSAgICBxID0gcS0+
bmV4dDsKKwkgICAgfQorCisJICAgIGlmICh0eXBlPT0wKSB7CisKKwkgICAgCSAgICB4ID0gcC0+
eDsgeSA9IHAtPnk7CisJCSAgICBUUkFOUyh4LCB5KTsKKwkJICAgIGZwcmludGYodGZwLCAiXHQ8
S2l2aW9Qb2ludCB4PVwiJS4zZlwiIHk9XCIlLjNmXCIvPlxuIix4LHkpOworICAgICAgICAgICAg
fQorCQlicmVhazsKKyAgICAgICAgICB9CisgICAgICAgICAgZGVmYXVsdDogeyBmcHJpbnRmKHN0
ZGVyciwgIk9iamVrdCBuaWNodCB1bnRlcnN0/HR6dFxuIik7CisJICAgfQorCisJICB9CisJc2V0
X2xpbmV3aWR0aChsLT50aGlja25lc3MsbC0+cGVuX2NvbG9yKTsKKwkvL2lmICh0eXBlPT0wKQor
CXNldF9hcnJvdygmKGwtPmZvcl9hcnJvdyksJihsLT5iYWNrX2Fycm93KSk7CisKKwlzZXRjb2xv
cihsLT5maWxsX3N0eWxlLGwtPmZpbGxfY29sb3IpOworICAgICAgICBlbmRfbGluZSgpOworfQor
Cit2b2lkCitnZW5zbWxfc3BsaW5lKHMpCisgIEZfc3BsaW5lCSpzOworeworCWZwcmludGYoc3Rk
ZXJyLCAiQ2FuJ3QgZ2VuZXJhdGUgc3BsaW5lOyBvbWl0dGluZyBvYmplY3RcbiIpOworCX0KKwor
dm9pZAorZ2Vuc21sX2VsbGlwc2UoZSkKKyAgRl9lbGxpcHNlCSplOworeworCWZsb2F0ICB4LCB5
LCBkLCBkeCwgZHk7CisKKwlpZiAodmVyYm9zZSkKKwlpZiAodmVyYm9zZSkKKwlmcHJpbnRmKHRm
cCwgIjwhLS1kZXB0aDogJWQsIFR5cGU6ICVkLCBTdHlsZTogJWQsIEZhcmJlX2ZpbGw6ICVkLCBG
YXJiZV9wZW46ICVkIC0tPlxuIixlLT5kZXB0aCxlLT50eXBlLGUtPmZpbGxfc3R5bGUsZS0+Zmls
bF9jb2xvcixlLT5wZW5fY29sb3IpOworCisJLyogcHJpbnQgYW55IGNvbW1lbnRzIHByZWZpeGVk
IHdpdGggIiUiICovCisJcHJpbnRfY29tbWVudHMoIjwhLS0gIixlLT5jb21tZW50cywgIi0tPiIp
OworCisJc3dpdGNoIChlLT5zdHlsZSkgeworCSAgICBjYXNlIFNPTElEX0xJTkU6CisJCWJyZWFr
OworCSAgICBjYXNlIERBU0hfTElORToKKwkJZnByaW50ZihzdGRlcnIsICJEYXNoZWQgY2lyY2xl
cyBhbmQgZWxpcHNlcyBub3Qgc3VwcG9ydGVkXG4iKTsKKwkJYnJlYWs7CisJICAgIGNhc2UgRE9U
VEVEX0xJTkU6CisJCWZwcmludGYoc3RkZXJyLCAiRG90dGVkIGNpcmNsZXMgYW5kIGVsaXBzZXMg
bm90IHN1cHBvcnRlZFxuIik7CisJCWJyZWFrOworCSAgICB9CisKKwl4ID0gZS0+Y2VudGVyLng7
CisJeSA9IGUtPmNlbnRlci55OworCVRSQU5TKHgsIHkpOworCitUUkFOUyh4LCB5KTsKKyAJaWYg
KChlLT50eXBlID09IFRfQ0lSQ0xFX0JZX1JBRCB8fCBlLT50eXBlID09IFRfQ0lSQ0xFX0JZX0RJ
QSkKKwkJCSYmIGUtPnJhZGl1c2VzLngqdW5pdGxlbmd0aCA8PSBNQVhDSVJDTEVSQUQpIHsKKwkg
ICAgZCA9IDIgKiBlLT5yYWRpdXNlcy54OworCisKKworCSAgICBpZiAoZS0+ZmlsbF9zdHlsZSA9
PSBCTEFDS19GSUxMKQorLy8JICAgIAlmcHJpbnRmKHRmcCwgIlxccHV0KCUzZCwlM2Qpe1xcY2ly
Y2xlKnslZH19XG4iLCB4LCB5LCBkKQorICAgICAgICAgIDsKKwkgICAgZWxzZSB7CisvLwkgICAg
ICAJZnByaW50Zih0ZnAsICJcXHB1dCglM2QsJTNkKXtcXGNpcmNsZXslZH19XG4iLCB4LCB5LCBk
KTsKKwkJaWYgKGUtPmZpbGxfc3R5bGUgIT0gVU5GSUxMRUQpCisJCQlmcHJpbnRmKHN0ZGVyciwg
IkNpcmNsZSBhcmVhIGZpbGwgbm90IGltcGxlbWVudGVkXG4iKTsKKwkgICAgfQorICAgICAgICAg
ICAgIGZwcmludGYodGZwLCAiPCEtLSAtLT5cbiIpOworCisKKwkgICAgZnByaW50Zih0ZnAsICI8
S2l2aW9TaGFwZSB0eXBlPVwiRWxsaXBzZVwiIG5hbWU9XCJDaXJjbGUlZFwiIHg9XCIlLjNmXCIg
eT1cIiUuM2ZcIiB3PVwiJS4zZlwiICBoPVwiJS4zZlwiPlxuIiwKKwkgICAgICAgIGNvdW50ZXIr
Kyx4LCB5LCBkLCBkKTsKKworCX0gZWxzZSB7CisJICAgIGR4ID0gMiplLT5yYWRpdXNlcy54L3Nj
YWxlOworCSAgICBkeSA9IDIqZS0+cmFkaXVzZXMueSAvc2NhbGU7CisgICAgICAgICAgICB4ID0g
ZS0+Y2VudGVyLngtZS0+cmFkaXVzZXMueDsKKyAgIAkgICAgeSA9IGUtPmNlbnRlci55LWUtPnJh
ZGl1c2VzLnk7CisKKyAgICAgICAgICAgIFRSQU5TKHgseSk7CisgICAgICAgICAgICBmcHJpbnRm
KHRmcCwgIjxLaXZpb1NoYXBlIHR5cGU9XCJFbGxpcHNlXCIgbmFtZT1cIkVsbGlwc2UlZFwiIHg9
XCIlLjNmXCIgeT1cIiUuM2ZcIiB3PVwiJS4zZlwiIGg9XCIlLjNmXCI+XG4iLAorCSAgICAgY291
bnRlcisrLHgsIHksIGR4LCBkeSk7CisJfQorCXNldGNvbG9yKGUtPmZpbGxfc3R5bGUsZS0+Zmls
bF9jb2xvcik7CisJc2V0X2xpbmV3aWR0aChlLT50aGlja25lc3MsZS0+cGVuX2NvbG9yKTsKKwll
bmRfbGluZSgpOworICAgICAgfQorCit2b2lkCitnZW5zbWxfdGV4dCh0KQorICBGX3RleHQJKnQ7
Cit7CisJZmxvYXQgICAJeCwgeTsKKwljaGFyCSp0cG9zOworCXVuc2lnbmVkIGNoYXIJKmNwOwor
CisJaWYgKHZlcmJvc2UpCisJICAgIGZwcmludGYodGZwLCAiPCEtLSBGaWcgVEVYVCBvYmplY3Qt
LT5cbiIpOworCisJLyogcHJpbnQgYW55IGNvbW1lbnRzIHByZWZpeGVkIHdpdGggIiUiICovCisJ
cHJpbnRfY29tbWVudHMoIjwhLS0gIix0LT5jb21tZW50cywgIi0tPiIpOworCisJeCA9IHQtPmJh
c2VfeDsKKwl5ID0gdC0+YmFzZV95OworCVRSQU5TKHgsIHkpOworCisJc3dpdGNoICh0LT50eXBl
KSB7CisKKwkgICAgY2FzZSBUX0xFRlRfSlVTVElGSUVEOgorCSAgICBjYXNlIERFRkFVTFQ6CisJ
ICAgIAl0cG9zID0gIjAiOworCQlicmVhazsKKworCSAgICBjYXNlIFRfQ0VOVEVSX0pVU1RJRklF
RDoKKwkgICAgCXRwb3MgPSAiMSI7CisJCWJyZWFrOworCisJICAgIGNhc2UgVF9SSUdIVF9KVVNU
SUZJRUQ6CisJICAgIAl0cG9zID0gIltyYl0iOworCQlicmVhazsKKworCSAgICBkZWZhdWx0Ogor
CQlmcHJpbnRmKHN0ZGVyciwgIlRleHQgaW5jb3JyZWN0bHkgcG9zaXRpb25lZFxuIik7CisJICAg
IAl0cG9zID0gIltsYl0iOwkvKiBtYWtlIGxlZnQgaW4gdGhpcyBjYXNlICovCisJICAgIH0KKwor
CS8qIHNtYXNoIGlzIHVzZWQgdG8gcG9zaXRpb24gdGV4dCBhdCBiYXNlbGluZSAqLworLy8JdW5w
c2ZvbnQodCk7CisKK2ZwcmludGYodGZwLCAiPEtpdmlvU2hhcGUgdHlwZT1cIlRleHRCb3hcIiBu
YW1lPVwiVGV4dEJveCVkXCIgeD1cIiUuM2ZcIiB5PVwiJS4zZlwiIHc9XCIxMDBcIiBoPVwiMTAw
XCI+XG4iLGNvdW50ZXIrKyx4LHkpOworZnByaW50Zih0ZnAsICIgPFBvc2l0aW9uIHg9XCIwXCIg
eT1cIjBcIiAvPlxuIik7CitmcHJpbnRmKHRmcCwgIiA8RGltZW5zaW9uIHc9XCIxMDBcIiBoPVwi
MTAwXCIgLz5cbiIpOworc2V0Y29sb3IoMSx0LT5jb2xvcik7CitmcHJpbnRmKHRmcCwgIiA8S2l2
aW9UZXh0U3R5bGUgdlRleHRBbGlnbj1cIjMyXCIgaXNIdG1sPVwiMFwiIGhUZXh0QWxpZ249XCIl
ZFwiIHRleHQ9XCIlc1wiIC8+XG4iLHQtPnR5cGUsdC0+Y3N0cmluZyk7CitmcHJpbnRmKHRmcCwg
IiA8Rm9udCBmaXhlZFBpdGNoPVwiMFwiIHNpemU9XCIlZFwiIHN0cmlrZU91dD1cIjBcIiBmYW1p
bHk9XCJcIiBib2xkPVwiMFwiIHVuZGVybGluZT1cIjBcIiBjb2xvcj1cIiMwXCIvPlxuIix0LT5z
aXplKTsKK2ZwcmludGYodGZwLCAiPC9LaXZpb1NoYXBlPlxuIik7CisKKyAgICAgICAgeyBpbnQg
dGV4c2l6ZTsKKyAgICAgICAgICBkb3VibGUgYmFzZWxpbmVza2lwOworCisJICB0ZXhzaXplID0g
VEVYRk9OVE1BRyh0KTsKKwkgIGJhc2VsaW5lc2tpcCA9ICh0ZXhzaXplICogMS4yKTsKKworCX0K
KworCit9CisKK3ZvaWQKK2dlbnNtbF9hcmMoYSkKKyAgRl9hcmMJKmE7Cit7CisJRl9wb3MJCXAx
LCBwMiwgcHFbNF07CisJZG91YmxlCQljeCwgY3k7CisJZG91YmxlCQl2MXgsIHYxeSwgdjJ4LCB2
Mnk7CisJZG91YmxlCQlyLCBhbmdsZTEsIGFuZ2xlMjsKKwlmbG9hdAkJcTEsIHEyIDsKKwlmbG9h
dAkJeSx4OworCWludAkJcDFfYXJyb3csIHAyX2Fycm93LGk7CisJc3RhdGljIGNoYXIJKmFkMVs0
XSA9IHsgIiAwLC0xIiwgIiAxLCAwIiwgIiAwLCAxIiwgIi0xLCAwIiB9OworCXN0YXRpYyBjaGFy
CSphZDJbNF0gPSB7ICItMSwgMCIsICIgMCwtMSIsICIgMSwgMCIsICIgMCwgMSIgfTsKKworCWlm
ICh2ZXJib3NlKQorCSAgICBmcHJpbnRmKHRmcCwgIjwhLS0gRmlnIEFSQyBvYmplY3QgLS0+XG4i
KTsKKworCS8qIHByaW50IGFueSBjb21tZW50cyBwcmVmaXhlZCB3aXRoICIlIiAqLworCS8vIHBy
aW50X2NvbW1lbnRzKCIlICIsYS0+Y29tbWVudHMsICIiKTsKKworLy8Jc2V0X2xpbmV3aWR0aChh
LT50aGlja25lc3MpOworLy8JCWlmIChhLT5maWxsX3N0eWxlICE9IFVORklMTEVEKSBzZXRjb2xv
cihhLT5wZW5fY29sb3IpOworLy8Jc3dpdGNoIChhLT5zdHlsZSkgeworLy8JICAgIGNhc2UgU09M
SURfTElORToKKy8vCQlicmVhazsKKy8vCSAgICBjYXNlIERBU0hfTElORToKKy8vCQlmcHJpbnRm
KHN0ZGVyciwgIkRhc2hlZCBhcmNzIG5vdCBzdXBwb3J0ZWRcbiIpOworLy8JCWJyZWFrOworLy8J
ICAgIGNhc2UgRE9UVEVEX0xJTkU6CisvLwkJZnByaW50ZihzdGRlcnIsICJEb3R0ZWQgYXJjcyBu
b3Qgc3VwcG9ydGVkXG4iKTsKKy8vCQlicmVhazsKKy8vCX0KKy8vCWlmIChhLT5kaXJlY3Rpb24g
PT0gMSkgeworLy8JICAgIHAxID0gYS0+cG9pbnRbMF07CisvLwkgICAgcDIgPSBhLT5wb2ludFsy
XTsKKy8vCSAgICBwMV9hcnJvdyA9IChhLT5iYWNrX2Fycm93ICE9IE5VTEwpOworLy8JICAgIHAy
X2Fycm93ID0gKGEtPmZvcl9hcnJvdyAhPSBOVUxMKTsKKy8vCX0gZWxzZSB7CisvLwkgICAgcDEg
PSBhLT5wb2ludFsyXTsKKy8vCSAgICBwMiA9IGEtPnBvaW50WzBdOworLy8JICAgIHAxX2Fycm93
ID0gKGEtPmZvcl9hcnJvdyAhPSBOVUxMKTsKKy8vCSAgICBwMl9hcnJvdyA9IChhLT5iYWNrX2Fy
cm93ICE9IE5VTEwpOworLy8JfQorCisKKyAgICAgICBmcHJpbnRmKHRmcCwgIjxLaXZpb1NoYXBl
IHR5cGU9XCJCZXppZXJcIiBuYW1lPVwiQmV6aWVyJWRcIj5cbiIsY291bnRlcisrKTsKKworCisv
KgljeCA9IGEtPmNlbnRlci54OworCWN5ID0gYS0+Y2VudGVyLnk7CisJVFJBTlMyKHAxLngsIHAx
LnksIHAyLngsIHAyLnkpOworCVRSQU5TRChjeCwgY3kpOworCS8qKiogY29tcHV0ZSB2ZWN0b3Jz
IGFuZCBhbmdsZXMgZnJvbSBhcmMgY2VudGVyIHRvIHAxLCBwMiAqKiovCisvKgl2MXggPSAoZG91
YmxlKXAxLnggLSBjeDsKKwl2MXkgPSAoZG91YmxlKXAxLnkgLSBjeTsKKwl2MnggPSAoZG91Ymxl
KXAyLnggLSBjeDsKKwl2MnkgPSAoZG91YmxlKXAyLnkgLSBjeTsKKwlhbmdsZTEgPSBhdGFuMih2
MXksIHYxeCkgKiByYWQyZGVnOworCWFuZ2xlMiA9IGF0YW4yKHYyeSwgdjJ4KSAqIHJhZDJkZWc7
CisJaWYgKGFuZ2xlMSA8IDAuMCkKKwkgICAgYW5nbGUxICs9IDM2MC4wOworCWlmIChhbmdsZTIg
PCAwLjApCisJICAgIGFuZ2xlMiArPSAzNjAuMDsKKwkvKiBjb21wdXRlIGFyYyByYWRpdXMgKi8K
Ky8vCXIgPSBzcXJ0KHYxeCp2MXgrdjF5KnYxeSk7CisJLyoqKiBjb21wdXRlIGludGVyc2VjdGlv
biBvZiBhcmMgd2l0aCB4IGFuZCB5IGF4aXMgKG9yaWdpbiBhdCBjeCwgY3kpICovCisvLwlwcVsw
XS54ID0gcm91bmQoY3gpOworLy8JcHFbMF0ueSA9IHJvdW5kKGN5ICsgcik7CisvLwlwcVsxXS54
ID0gcm91bmQoY3ggLSByKTsKKy8vCXBxWzFdLnkgPSByb3VuZChjeSk7CisvLwlwcVsyXS54ID0g
cm91bmQoY3gpOworLy8JcHFbMl0ueSA9IHJvdW5kKGN5IC0gcik7CisvLwlwcVszXS54ID0gcm91
bmQoY3ggKyByKTsKKy8vCXBxWzNdLnkgPSByb3VuZChjeSk7CisKKworCWZvcihpPTA7aTw9Mjtp
KyspIHsKKyAgICAgICAgICB4PWEtPnBvaW50W2ldLng7CisgICAgICAgICAgeT1hLT5wb2ludFtp
XS55OworICAgICAgICAgIFRSQU5TKHgseSk7CisgICAgICAgICAgZnByaW50Zih0ZnAsICJcdDxL
aXZpb1BvaW50IHg9XCIlLjNmXCIgeT1cIiUuM2ZcIiB0eXBlPVwiYmV6aWVyXCIgLz5cbiIseCx5
KTsKKwkgIGlmIChpPT0xKSBmcHJpbnRmKHRmcCwgIlx0PEtpdmlvUG9pbnQgeD1cIiUuM2ZcIiB5
PVwiJS4zZlwiIHR5cGU9XCJiZXppZXJcIiAvPlxuIix4LHkpOworCSAgIH0KKworCS8qKiogY29t
cHV0ZSBpbiB3aGljaCBxdWFkcmFudHMgcDEgYW5kIHAyIGFyZSBsb2NhdGVkICoqKi8KKwkvKnEx
ID0gKGludCkoYW5nbGUxLzkwLjApOworCXEyID0gKGludCkoYW5nbGUyLzkwLjApOworCWlmIChm
YWJzKGFuZ2xlMSAtIDkwLjAqcTEpID4gYXJjX3RvbGVyYW5jZQorCSB8fCBmYWJzKGFuZ2xlMiAt
IDkwLjAqcTIpID4gYXJjX3RvbGVyYW5jZSkKKwkgICAgLy8gZnByaW50ZihzdGRlcnIsICJBcHBy
b3hpbWF0aW5nIGFyYyBieSBvdmFsc1xuIik7CisKKwkvKioqIERyYXcgYXJjICoqCisJaWYgKGEt
PnR5cGUgPT0gVF9PUEVOX0FSQyAmJiBhLT50aGlja25lc3MgIT0gMCAmJiBwMV9hcnJvdykKKwkg
ICAgLy8gZnByaW50Zih0ZnAsICJcXHB1dCglM2QsJTNkKXtcXHZlY3Rvciglcyl7MH19XG4iLCBw
MS54LCBwMS55LCBhZDFbcTFdKTsKKworCisJd2hpbGUgKHExICE9IHEyKSB7CisJICAgIHB1dF9x
dWFydGVyKHAxLCBwcVtxMV0sIHExKTsKKwkgICAgcDEgPSBwcVtxMV07CisJICAgIHExID0gKHEx
ICsgMSkgJSA0OworCSAgICB9CisJcHV0X3F1YXJ0ZXIocDEsIHAyLCBxMSk7CisJaWYgKGEtPnR5
cGUgPT0gVF9PUEVOX0FSQyAmJiBhLT50aGlja25lc3MgIT0gMCAmJiBwMl9hcnJvdykKKwkgICAg
Ly8gZnByaW50Zih0ZnAsICJcXHB1dCglM2QsJTNkKXtcXHZlY3Rvciglcyl7MH19XG4iLCBwMi54
LCBwMi55LCBhZDJbcTJdKTsKKworCWlmIChhLT5maWxsX3N0eWxlICE9IFVORklMTEVEKQorCQlm
cHJpbnRmKHN0ZGVyciwgIkFyYyBhcmVhIGZpbGwgbm90IGltcGxlbWVudGVkXG4iKTsKKy8vCXJl
c2V0Y29sb3IoYS0+cGVuX2NvbG9yKTsKKyAgICAgICAgKi8KKwlzZXRjb2xvcihhLT5maWxsX3N0
eWxlLGEtPmZpbGxfY29sb3IpOworCXNldF9saW5ld2lkdGgoYS0+dGhpY2tuZXNzLGEtPnBlbl9j
b2xvcik7CisgICAgICAgIGVuZF9saW5lKCk7CisKKwl9CisKKworI2RlZmluZSAgTUFYQ09MT1JT
IDMyCisKKy8qIG5lZWQgdGhpcyBmb3IgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIGNvbG9yIHJvdXRp
bmVzLiBTb3JyeSAqLworc3RhdGljIGludCBsYXN0Y29sb3I9LTE7CisKK3ZvaWQgc2V0Y29sb3Io
c3R5LGNvbCkKK2ludCBzdHksY29sOworeworaW50IGNvbG9yLHN0eWxlOworCitjb2xvcj1yZ2JD
b2xvclZhbChjb2wpOworCitpZihjb2w9PTcpIHsKKyBpZihzdHk9PTIwKQorICAgY29sb3I9MjU1
OworICBlbHNlCisgY29sb3I9KDI1NS8yMCkqc3R5OworIGNvbG9yPTI1NioyNTYqY29sb3IrMjU2
KmNvbG9yK2NvbG9yOworIH0KKworaWYoKGNvbD09MCkgfHwgKGNvbD09LTEpKSB7CitpZihzdHk9
PTIwKQorICAgY29sb3I9MDsKKyAgZWxzZQorICBjb2xvcj0yNTUtKDI1NS8yMCkqc3R5OworICBj
b2xvcj0yNTYqMjU2KmNvbG9yKzI1Nipjb2xvcitjb2xvcjsKKyB9CisKK2lmKHN0eT09LTEpCisg
IHN0eWxlPTA7CisgZWxzZQorICBzdHlsZT0xOworCisgZnByaW50Zih0ZnAsICJcdDxLaXZpb0Zp
bGxTdHlsZSBjb2xvclN0eWxlPVwiJWRcIiBjb2xvcj1cIiMlNi42eFwiIC8+XG4iLCBzdHlsZSAs
Y29sb3IpOworcmV0dXJuOworfQorCitpbnQKK3NldF9saW5ld2lkdGgodyxjb2wpCisgIGludAl3
LGNvbDsKK3sKKyBmbG9hdCBpLHg7CisgeD0xOworIGk9dy8yMDsKKyBmcHJpbnRmKHRmcCwgIlx0
PEtpdmlvTGluZVN0eWxlIHdpZHRoPVwiJS4zZlwiIGNhcFN0eWxlPVwiMzJcIiBwYXR0ZXJuPVwi
MVwiIGpvaW5TdHlsZT1cIjEyOFwiIGNvbG9yPVwiIyU2LjZ4XCIgLz5cbiIsCisgIGkscmdiQ29s
b3JWYWwoY29sKSApOworfQorCisKK3ZvaWQgZW5kX2xpbmUoKQoreworICAgIGZwcmludGYodGZw
LCAiPC9LaXZpb1NoYXBlPlxuIik7Cit9CisKK2ludAorc2V0X2Fycm93KEZfYXJyb3cgKmZvcl9h
cnJvdyxGX2Fycm93ICpiYWNrX2Fycm93KQoreworaW50IGYsIGZfdCwgZl9odCwgZl93aWQsIGIs
IGJfdCwgYl9odCwgYl93aWQ7CisKK2lmICh2ZXJib3NlKSBmcHJpbnRmKHRmcCwgIjwhLS0lZCAl
ZCAtLT5cbiIsKGZvcl9hcnJvdz09TlVMTCksKGJhY2tfYXJyb3c9PU5VTEwpKTsKKworaWYoKChm
b3JfYXJyb3c9PU5VTEwpPT0wKSAmJiAoKGJhY2tfYXJyb3c9PU5VTEwpPT0wKSkgeworIHJldHVy
bjsKK30KKworICBpZigoZm9yX2Fycm93IT1OVUxMKT09MCkgeworICBmX3Q9Zm9yX2Fycm93LT50
eXBlPT0wID8gMSA6IDI7CisgIGZfd2lkPWZvcl9hcnJvdy0+d2lkOworICBmX2h0PWZvcl9hcnJv
dy0+aHQ7CisgIH0KKyAgZWxzZQorICB7CisgIGZfdD09MDsKKyAgZl93aWQ9MDsKKyAgZl9odD0w
OworICB9CisgIGlmKChiYWNrX2Fycm93IT1OVUxMKT09MCkgeworICBiX3Q9YmFja19hcnJvdy0+
dHlwZT09MCA/IDEgOiAyOworICBiX3dpZD1iYWNrX2Fycm93LT53aWQ7CisgIGJfaHQ9YmFja19h
cnJvdy0+aHQ7CisgIH0KKyAgZWxzZQorICB7CisgIGJfdD0wOworICBiX3dpZD0wOworICBiX2h0
PTA7CisgIH0KKyAgIGZwcmludGYodGZwLCAiPEtpdmlvQXJyb3dIZWFkcz5cbiIpOworICAgZnBy
aW50Zih0ZnAsICJcdDxLaXZpb0Fycm93SGVhZCB3PVwiJWRcIiBsPVwiJWRcIiB0eXBlPVwiJWRc
IiBjdXQ9XCIwXCIgLz5cbiIsZl93aWQsZl9odCxmX3QpOworICAgZnByaW50Zih0ZnAsICJcdDxL
aXZpb0Fycm93SGVhZCB3PVwiJWRcIiBsPVwiJWRcIiB0eXBlPVwiJWRcIiBjdXQ9XCIwXCIgLz5c
biIsYl93aWQsYl9odCxiX3QpOworICAgZnByaW50Zih0ZnAsICI8L0tpdmlvQXJyb3dIZWFkcz5c
biIpOworICAgcmV0dXJuOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50CityZ2JDb2xvclZhbChp
bnQgY29sb3JJbmRleCkKK3sKKwlleHRlcm4gVXNlcl9jb2xvcgl1c2VyX2NvbG9yc1tdOworCXVu
c2lnbmVkIGludAlyZ2I7CisJc3RhdGljIHVuc2lnbmVkIGludAlyZ2JDb2xvcnNbTlVNX1NURF9D
T0xTXSA9IHsKKwkJMHgwMDAwMDAsIDB4MDAwMGZmLCAweDAwZmYwMCwgMHgwMGZmZmYsIDB4ZmYw
MDAwLCAweGZmMDBmZiwKKwkJMHhmZmZmMDAsIDB4ZmZmZmZmLCAweDAwMDA4ZiwgMHgwMDAwYjAs
IDB4MDAwMGQxLCAweDg3Y2ZmZiwKKwkJMHgwMDhmMDAsIDB4MDBiMDAwLCAweDAwZDEwMCwgMHgw
MDhmOGYsIDB4MDBiMGIwLCAweDAwZDFkMSwKKwkJMHg4ZjAwMDAsIDB4YjAwMDAwLCAweGQxMDAw
MCwgMHg4ZjAwOGYsIDB4YjAwMGIwLCAweGQxMDBkMSwKKwkJMHg4MDMwMDAsIDB4YTE0MDAwLCAw
eGI0NjEwMCwgMHhmZjgwODAsIDB4ZmZhMWExLCAweGZmYmZiZiwKKwkJMHhmZmUwZTAsIDB4ZmZk
NjAwCisJfTsKKworCWlmIChjb2xvckluZGV4ID09IERFRkFVTFQpCisJCXJnYiA9IHJnYkNvbG9y
c1swXTsKKwllbHNlIGlmIChjb2xvckluZGV4IDwgTlVNX1NURF9DT0xTKQorCQlyZ2IgPSByZ2JD
b2xvcnNbY29sb3JJbmRleF07CisJZWxzZQorCQlyZ2IgPSAoKHVzZXJfY29sb3JzW2NvbG9ySW5k
ZXgtTlVNX1NURF9DT0xTXS5yICYgMHhmZikgPDwgMTYpCisJCQl8ICgodXNlcl9jb2xvcnNbY29s
b3JJbmRleC1OVU1fU1REX0NPTFNdLmcgJiAweGZmKSA8PCA4KQorCQkJfCAodXNlcl9jb2xvcnNb
Y29sb3JJbmRleC1OVU1fU1REX0NPTFNdLmIgJiAweGZmKTsKKwlyZXR1cm4gcmdiOworfQorCisK
K3N0cnVjdCBkcml2ZXIgZGV2X3NtbCA9IHsKKyAgICAgCWdlbnNtbF9vcHRpb24sCisJZ2Vuc21s
X3N0YXJ0LAorCWdlbnNtbF9hcmMsCisJZ2Vuc21sX2VsbGlwc2UsCisJZ2Vuc21sX2xpbmUsCisJ
Z2Vuc21sX3NwbGluZSwKKwlnZW5zbWxfdGV4dCwKKwlnZW5zbWxfZW5kLAorCUVYQ0xVREVfVEVY
VAorfTsKZGlmZiAtdXIgLS1uZXctZmlsZSB0cmFuc2ZpZy4zLjIuM2Qub3JpZy9maWcyZGV2L2Rl
di9nZW5zeGQuYyB0cmFuc2ZpZy4zLjIuM2QvZmlnMmRldi9kZXYvZ2Vuc3hkLmMKLS0tIHRyYW5z
ZmlnLjMuMi4zZC5vcmlnL2ZpZzJkZXYvZGV2L2dlbnN4ZC5jCVRodSBKYW4gIDEgMDE6MDA6MDAg
MTk3MAorKysgdHJhbnNmaWcuMy4yLjNkL2ZpZzJkZXYvZGV2L2dlbnN4ZC5jCVdlZCBKdWwgMTcg
MTA6NDc6NTAgMjAwMgpAQCAtMCwwICsxLDc2NCBAQAorLyoKKyAqIFRyYW5zRmlnOiBGYWNpbGl0
eSBmb3IgVHJhbnNsYXRpbmcgRmlnIGNvZGUKKyAqIENvcHlyaWdodCAoYykgMTk5MSBieSBNaWNh
aCBCZWNrCisgKiBQYXJ0cyBDb3B5cmlnaHQgKGMpIDE5ODUtMTk4OCBieSBTdXBvaiBTdXRhbnRo
YXZpYnVsCisgKiBQYXJ0cyBDb3B5cmlnaHQgKGMpIDE5ODktMTk5OSBieSBCcmlhbiBWLiBTbWl0
aAorICoKKyAqIEFueSBwYXJ0eSBvYnRhaW5pbmcgYSBjb3B5IG9mIHRoZXNlIGZpbGVzIGlzIGdy
YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCBhCisgKiBmdWxsIGFuZCB1bnJlc3RyaWN0ZWQgaXJyZXZv
Y2FibGUsIHdvcmxkLXdpZGUsIHBhaWQgdXAsIHJveWFsdHktZnJlZSwKKyAqIG5vbmV4Y2x1c2l2
ZSByaWdodCBhbmQgbGljZW5zZSB0byBkZWFsIGluIHRoaXMgc29mdHdhcmUgYW5kCisgKiBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0
YXRpb24gdGhlCisgKiByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo
LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT
b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHdobyByZWNlaXZlCisgKiBjb3BpZXMgZnJv
bSBhbnkgc3VjaCBwYXJ0eSB0byBkbyBzbywgd2l0aCB0aGUgb25seSByZXF1aXJlbWVudCBiZWlu
ZworICogdGhhdCB0aGlzIGNvcHlyaWdodCBub3RpY2UgcmVtYWluIGludGFjdC4KKyAqCisgKi8K
KworLyoKKyAqCWdlbnN4ZC5jIDogb29PZmZpY2UgeG1sIGRyaXZlciBmb3IgZmlnMmRldgorICoK
KyAqCUF1dGhvcjogUGV0ZXIgS29yZgorICogICAgICBDb2RlIHN0b2xlbiBmcm9tIGdlbnN4ZC5j
CisgKgorICovCisjaWYgZGVmaW5lZChocHV4KSB8fCBkZWZpbmVkKFNZU1YpIHx8IGRlZmluZWQo
U1ZSNCkKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy9maWxl
Lmg+CisjaW5jbHVkZSAiZmlnMmRldi5oIgorI2luY2x1ZGUgIm9iamVjdC5oIgorI2luY2x1ZGUg
InRleGZvbnRzLmgiCisKK2V4dGVybiBkb3VibGUgcmFkMmRlZzsKK2V4dGVybiB2b2lkIHVucHNm
b250KCk7CisKKyNkZWZpbmUgcmludChhKSBmbG9vcigoYSkrMC41KSAgICAgLyogY2xvc2UgZW5v
dWdoPyAqLworCisjZGVmaW5lIERFU0NfTkFNRQkidW5rbm93biIKKworI2RlZmluZSBIRUFEX1RB
RwkiXG5IRUFEIgorI2RlZmluZSBNSURETEVfVEFHCSJcbk1JRERMRSIKKyNkZWZpbmUgRU5EX1RB
RwkJIlxuRU5EIgorI2RlZmluZSBTVFlMRV9UQUcJIlxuU1RZTEUiCisjZGVmaW5lIEJPRFlfVEFH
CSJcbkJPRFkiCisjZGVmaW5lIENPTU1FTlRfVEFHIAkiXG5DT01NRU5UIgorZXh0ZXJuIGNoYXIg
ICAgICAgICAgICAqZnJvbTsKKworI2lmbmRlZiBNSU4KKyNkZWZpbmUJTUlOKHgseSkJKCgoeCkg
PD0gKHkpKT8gKHgpOiAoeSkpCisjZW5kaWYKKyNpZm5kZWYgTUFYCisjZGVmaW5lCU1BWCh4LHkp
CSgoKHgpID49ICh5KSk/ICh4KTogKHkpKQorI2VuZGlmCisjZGVmaW5lCUFCUyh4KQkJKCgoeCkg
Pj0gMCk/ICh4KTogLSh4KSkKKyNkZWZpbmUgcm91bmQ0KHgpCSgocm91bmQoMTAwMDAuMCooeCkp
LzEwMDAwLjApKQorI2RlZmluZSByb3VuZDYoeCkJKChyb3VuZCgxMDAwMDAwLjAqKHgpKS8xMDAw
MDAwLjApKQorI2RlZmluZSBNQVhDSVJDTEVESUEJODAKKyNkZWZpbmUgTUFYQ0lSQ0xFUkFECSgo
TUFYQ0lSQ0xFRElBLTAuNSkvKDIqNzIuMjcpKQorCisjZGVmaW5lIERJU1RBTkNFKHgseSkJc3Fy
dCh4KngreSp5KQorCisjZGVmaW5lIFNDQUxFRkFLVE9SCTMwMAorCitzdGF0aWMgY2hhcgkJCWRl
c2NfbmFtZVtdICA9IERFU0NfTkFNRTsKK3N0YXRpYyBmbG9hdAkJCW9mZnNldHgsb2Zmc2V0eSxz
Y2FsZT0xOworc3RhdGljIGludAkJCWNvdW50ZXI9MCxjb3VudGVyX3RleHQ9MDsKKworCitzdGF0
aWMgdW5zaWduZWQgaW50IHJnYkNvbG9yVmFsKGludCBjb2xvckluZGV4KTsKKy8vIHN0YXRpYyB1
bnNpZ25lZCBpbnQgc2V0U3R5bGUoRl9jb21wb3VuZAkqb2JqZWN0czspOworCisKK3N0YXRpYwlp
bnQJdmVyYm9zZTsvLyAgPSAwOworZXh0ZXJuIGRvdWJsZQkJZGFzaF9tYWc7Ly8gID0gMS4wOwor
ZXh0ZXJuIGludAkJdGhpY2tfd2lkdGg7Ly8gID0gMjsKK2V4dGVybiBkb3VibGUJCXRvbGVyYW5j
ZTsvLyAgPSAyLjA7CitleHRlcm4gZG91YmxlCQlhcmNfdG9sZXJhbmNlOy8vICA9IDEuMDsKK2V4
dGVybiBpbnQJCSgqdHJhbnNsYXRlX2Nvb3JkaW5hdGVzKSgpOy8vICA9IE5VTEw7CitleHRlcm4g
aW50CQkoKnRyYW5zbGF0ZV9jb29yZGluYXRlc19kKSgpOy8vICA9IE5VTEw7CitleHRlcm4gZG91
YmxlCQl1bml0bGVuZ3RoOworc3RhdGljIGludAljdXJfdGhpY2tuZXNzOy8vIDE7CitleHRlcm4g
ZG91YmxlCQlsZG90X2RpYW1ldGVyOy8vIC4wLzcyLjA7CitleHRlcm4gY2hhcgkJKmRvdF9jbWQ7
Ly8gPXRpbmRvdDsKK2V4dGVybiBjaGFyCQkqbGRvdF9jbWQ7Ly8gPWhpbl9sZG90OworZXh0ZXJu
IGRvdWJsZQkJZG90X3hvZmZzZXQ7CitleHRlcm4gZG91YmxlCQlkb3RfeW9mZnNldDsKK2V4dGVy
biBkb3VibGUJCWxkb3RfeG9mZnNldDsKK2V4dGVybiBkb3VibGUJCWxkb3RfeW9mZnNldDsKKwor
Cit2b2lkIGdlbnN4ZF9vcHRpb24ob3B0LCBvcHRhcmcpCisgIGNoYXIgb3B0LCAqb3B0YXJnOwor
eworICAgIGludCBpOworCisgICAgc3dpdGNoIChvcHQpIHsKKwljYXNlICdhJzoKKwkgICAgZnBy
aW50ZihzdGRlcnIsICJ3YXJuaW5nOiBsYXRleCBvcHRpb24gLWEgb2Jzb2xldGUiKTsKKwkgICAg
YnJlYWs7CisKKwljYXNlICdkJzoKKwkgICAgZGFzaF9tYWcgPSBhdG9mKG9wdGFyZyk7CS8qIHNl
dCBkYXNoIG1hZ25pZmljYXRpb24gKi8KKwkgICAgYnJlYWs7CisKKwkgICAgZGFzaF9tYWcgPSBh
dG9mKG9wdGFyZyk7CS8qIHNldCBkYXNoIG1hZ25pZmljYXRpb24gKi8KKwkgICAgYnJlYWs7CisK
KworCWNhc2UgJ2YnOgkJLyogc2V0IGRlZmF1bHQgdGV4dCBmb250ICovCisJICAgIGZvciAoIGkg
PSAxOyBpIDw9IE1BWF9GT05UOyBpKysgKQorCQlpZiAoICFzdHJjbXAob3B0YXJnLCB0ZXhmb250
bmFtZXNbaV0pICkgYnJlYWs7CisKKwkgICAgaWYgKCBpID4gTUFYX0ZPTlQpCisJCQl7CisJCQkg
IGZwcmludGYoc3RkZXJyLAorCQkJCQkJICJ3YXJuaW5nOiBub24tc3RhbmRhcmQgZm9udCBuYW1l
ICVzIGlnbm9yZWRcbiIsIG9wdGFyZyk7CisJCQl9CisJCSBlbHNlCisJCQl7CisJCQkgIHRleGZv
bnRuYW1lc1swXSA9IHRleGZvbnRuYW1lc1tpXTsKKyNpZmRlZiBORlNTCisJCQkgIHRleGZvbnRm
YW1pbHlbMF0gPSB0ZXhmb250ZmFtaWx5W2ldOworCQkJICB0ZXhmb250c2VyaWVzWzBdID0gdGV4
Zm9udHNlcmllc1tpXTsKKwkJCSAgdGV4Zm9udHNoYXBlWzBdID0gdGV4Zm9udHNoYXBlW2ldOwor
I2VuZGlmCisJCQl9CisJICAgIGJyZWFrOworCisJY2FzZSAnbCc6CQkvKiBzZXQgdGhpbi90aGlj
ayBsaW5lIHRocmVzaG9sZCAqLworCSAgICB0aGlja193aWR0aCA9IGF0b2kob3B0YXJnKTsKKwkg
ICAgYnJlYWs7CisKKwljYXNlICd2JzoKKwkgICAgdmVyYm9zZSA9IDE7CQkvKiB2ZXJib3NlIG1v
ZGUgKi8KKwkgICAgYnJlYWs7CisKKwljYXNlICduJzoKKwkgICAgc3ByaW50ZihkZXNjX25hbWUs
IiVzIixvcHRhcmcpOwkJLyogZGVzY3JpcHRpb24gbmFtZSAobGlicmFyeSkgKi8KKwkgICAgYnJl
YWs7CisKKwljYXNlICdzJzoKKwljYXNlICdtJzoKKwljYXNlICdMJzoKKwkgICAgYnJlYWs7CisK
KwkgICAgYnJlYWs7CisKKwlkZWZhdWx0OgorCSAgICBwdXRfbXNnKEVycl9iYWRhcmcsIG9wdCwg
ImxhdGV4Iik7CisJICAgIGV4aXQoMSk7CisJfQorfQorCit2b2lkCitnZW5zeGRfc3RhcnQob2Jq
ZWN0cykKKyAgRl9jb21wb3VuZAkqb2JqZWN0czsKK3sKKwlpbnQgdG1wOworCWNoYXIgbmFtZTFb
NDBdPSIgICI7CisJZmxvYXQgeDEseTEseDIseTI7CisvLwlzdHJuY3B5KChjaGFyICopbmFtZTEs
ZnJvbSxzdHJsZW4oZnJvbSktNCk7CisgICAgZnByaW50Zih0ZnAsQ09NTUVOVF9UQUcgIjwhLS0g
cGxlYXNlIHVzZSB0aGUgc2NyaXB0IGZpZzJzeGQgdG8gY3JlYXRlIHRoZSBzeGQgZmlsZSAtLT4i
KTsKKyAgICBmcHJpbnRmKHRmcCxIRUFEX1RBRyAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29k
aW5nPVwiVVRGLThcIj8+Iik7CisgICAgZnByaW50Zih0ZnAsSEVBRF9UQUcgIjwhRE9DVFlQRSBv
ZmZpY2U6ZG9jdW1lbnQtY29udGVudCBQVUJMSUMgXCItLy9PcGVuT2ZmaWNlLm9yZy8vRFREIE9m
ZmljZURvY3VtZW50IDEuMC8vRU5cIiBcIm9mZmljZS5kdGRcIj4iKTsKKyAgICBmcHJpbnRmKHRm
cCxIRUFEX1RBRyAiPG9mZmljZTpkb2N1bWVudC1jb250ZW50IHhtbG5zOm9mZmljZT1cImh0dHA6
Ly9vcGVub2ZmaWNlLm9yZy8yMDAwL29mZmljZVwiIHhtbG5zOnN0eWxlPVwiaHR0cDovL29wZW5v
ZmZpY2Uub3JnLzIwMDAvc3R5bGVcIiB4bWxuczp0ZXh0PVwiaHR0cDovL29wZW5vZmZpY2Uub3Jn
LzIwMDAvdGV4dFwiIHhtbG5zOnRhYmxlPVwiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDAvdGFi
bGVcIiB4bWxuczpkcmF3PVwiaHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDAvZHJhd2luZ1wiIHht
bG5zOmZvPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvRm9ybWF0XCIgeG1sbnM6eGxpbms9
XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgeG1sbnM6bnVtYmVyPVwiaHR0cDovL29w
ZW5vZmZpY2Uub3JnLzIwMDAvZGF0YXN0eWxlXCIgeG1sbnM6cHJlc2VudGF0aW9uPVwiaHR0cDov
L29wZW5vZmZpY2Uub3JnLzIwMDAvcHJlc2VudGF0aW9uXCIgeG1sbnM6c3ZnPVwiaHR0cDovL3d3
dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczpjaGFydD1cImh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8y
MDAwL2NoYXJ0XCIgeG1sbnM6ZHIzZD1cImh0dHA6Ly9vcGVub2ZmaWNlLm9yZy8yMDAwL2RyM2Rc
IiB4bWxuczptYXRoPVwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiIHhtbG5z
OmZvcm09XCJodHRwOi8vb3Blbm9mZmljZS5vcmcvMjAwMC9mb3JtXCIgeG1sbnM6c2NyaXB0PVwi
aHR0cDovL29wZW5vZmZpY2Uub3JnLzIwMDAvc2NyaXB0XCIgb2ZmaWNlOmNsYXNzPVwiZHJhd2lu
Z1wiIG9mZmljZTp2ZXJzaW9uPVwiMS4wXCI+Iik7CisgICAgZnByaW50Zih0ZnAsSEVBRF9UQUcg
IjxvZmZpY2U6c2NyaXB0Lz4iKTsKKyAgICBmcHJpbnRmKHRmcCxIRUFEX1RBRyAiPG9mZmljZTph
dXRvbWF0aWMtc3R5bGVzPiIpOworICAgIGZwcmludGYodGZwLEhFQURfVEFHICI8c3R5bGU6c3R5
bGUgc3R5bGU6bmFtZT1cImRwMVwiIHN0eWxlOmZhbWlseT1cImRyYXdpbmctcGFnZVwiLz4iKTsK
KworZnByaW50Zih0ZnAsTUlERExFX1RBRyAiPC9vZmZpY2U6YXV0b21hdGljLXN0eWxlcz4iKTsK
K2ZwcmludGYodGZwLE1JRERMRV9UQUcgIjxvZmZpY2U6Ym9keT4iKTsKK2ZwcmludGYodGZwLE1J
RERMRV9UQUcgIjxkcmF3OnBhZ2UgZHJhdzpuYW1lPVwicGFnZTFcIiBkcmF3OnN0eWxlLW5hbWU9
XCJkcDFcIiBkcmF3Om1hc3Rlci1wYWdlLW5hbWU9XCJTdGFuZGFyZFwiPiIpOworCit9CisKK2lu
dCBnZW5zeGRfZW5kKCkKK3sKKwlmcHJpbnRmKHRmcCwgRU5EX1RBRyAiPC9kcmF3OnBhZ2U+PC9v
ZmZpY2U6Ym9keT48L29mZmljZTpkb2N1bWVudC1jb250ZW50PiIpOworCWZwcmludGYodGZwLENP
TU1FTlRfVEFHICI8IS0tIHBsZWFzZSB1c2UgdGhlIHNjcmlwdCBmaWcyc3hkIHRvIGNyZWF0ZSB0
aGUgc3hkIGZpbGUgLS0+Iik7CisJLyogYWxsIG9rICovCisJcmV0dXJuIDA7Cit9CisKKwordm9p
ZCBnZW5zeGRfbGluZShGX2xpbmUJKmwpCit7CisKKyAgICAgICAgRl9wb2ludAkJKnAsICpxLCAq
cjsKKwlmbG9hdAkJeCwgeSx4MSx5MSwgbGx4LCBsbHksIHVyeCwgdXJ5LCBhcnJvdzsKKyAgICAg
ICAgZmxvYXQgICAgICAgICAgIHIxLHIyOworCWludCB0eXBlPTA7CisKKwlwID0gbC0+cG9pbnRz
OworCQorZnByaW50Zih0ZnAsIENPTU1FTlRfVEFHICIgLSAgTGluaWUgJWRcbiIsbC0+dHlwZSk7
CisgICBwcmludF9zdHlsZShsLT5zdHlsZSwKKyAgICAgICAgICAgIGwtPnRoaWNrbmVzcywKKwkg
ICAgbC0+cGVuX2NvbG9yLAorCSAgICBsLT5maWxsX2NvbG9yLAorCSAgICBsLT5wZW4sCisJICAg
IGwtPmZpbGxfc3R5bGUsCisJICAgIGwtPmpvaW5fc3R5bGUsCisJICAgIGwtPmZvcl9hcnJvdywK
KwkgICAgbC0+YmFja19hcnJvdywKKwkgICAgCSAgICBsLT5jYXBfc3R5bGUpOworCisgICAgc3dp
dGNoIChsLT50eXBlKSB7CisJY2FzZSBUX1BPTFlMSU5FOgorCSAgICBpZiAocC0+bmV4dCA9PSBO
VUxMKSB7IAorCSAgICBmcHJpbnRmICh0ZnAsIENPTU1FTlRfVEFHICJQT0lOVCAlZCAlZCIsIHAt
PngsIHAtPnkpOworCSAgICB9CisJICAgICAJICAgICAgLyogQSBzaW5nbGUgcG9pbnQgbGluZSAq
LworCSAgICAgIC8qIERvdCA/ICovCisJICAgICAgaWYgKGwtPmZpbGxfc3R5bGUgPT0gLTEpIHsK
KyAgICAgICAgICAgICAgICAgIGRyYXdfcG9seShsLCJwb2x5bGluZSIpOworCSAgICAgIH0gZWxz
ZSB7CisJICAgICAgICAgIGRyYXdfcG9seShsLCJwb2x5Z29uIik7CisJICAgICAgfQorCSAgICBi
cmVhazsKKwljYXNlIFRfQVJDX0JPWDoKKwljYXNlIFRfQk9YOgorCSAgICBkcmF3X2JveChsKTsK
KwkgICAgYnJlYWs7CisJY2FzZSBUX1BPTFlHT046CisJICAgIGRyYXdfcG9seShsLCJwb2x5Z29u
Iik7CisgICAgICAgICAgICBicmVhazsKKwljYXNlIFRfUElDX0JPWDoKKy8vCSAgICBwdXRfcGlj
KGwpOworICAgICAgICAgICAgYnJlYWs7CisJZGVmYXVsdDoKKwkgICAgIGNvdW50ZXIrKzsKKyAg
ICAgIAkgICAgIGZwcmludGYodGZwLCBDT01NRU5UX1RBRyAidW5rb3duXG4iKTsKKyAgICB9CSAg
ICAgCisKK30KKwordm9pZCBnZW5zeGRfc3BsaW5lKEZfc3BsaW5lICpzKQoreworICAgZnByaW50
Zih0ZnAsIENPTU1FTlRfVEFHICJTcGxpbmVcbiIpOworCisvLwlmcHJpbnRmKHN0ZGVyciwgIkNh
bid0IGdlbmVyYXRlIHNwbGluZTsgb21pdHRpbmcgb2JqZWN0XG4iKTsKK30KKwordm9pZCBnZW5z
eGRfZWxsaXBzZShGX2VsbGlwc2UgKmUpCit7CitmcHJpbnRmKHRmcCwgQ09NTUVOVF9UQUcgImVs
bGlwc2VcbiIpOworCisgIHByaW50X3N0eWxlKGUtPnN0eWxlLAorICAgICAgICAgICAgZS0+dGhp
Y2tuZXNzLAorCSAgICBlLT5wZW5fY29sb3IsCisJICAgIGUtPmZpbGxfY29sb3IsCisJICAgIGUt
PnBlbiwKKwkgICAgZS0+ZmlsbF9zdHlsZSwKKwkgICAgLTEsCisJICAgIE5VTEwsCisJICAgIE5V
TEwsCisJICAgIC0xKTsKKworICAgIHN3aXRjaCAoZS0+dHlwZSkgeworCWNhc2UgVF9DSVJDTEVf
QllfUkFEOiAgICAKKwljYXNlIFRfQ0lSQ0xFX0JZX0RJQToKKyAgICAgICAgICAgICBkcmF3X3Jv
dW5kKGUsImNpcmNsZSIpOworCSAgICAgYnJlYWs7CisJY2FzZSBUX0VMTElQU0VfQllfUkFEOiAg
ICAKKwljYXNlIFRfRUxMSVBTRV9CWV9ESUE6CisgICAgICAgICAgICAgZHJhd19yb3VuZChlLCJl
bGxpcHNlIik7CisJICAgICBicmVhazsKKwlkZWZhdWx0OiAgICAgCisgICAgfTsKK30gICAgCisK
K3ZvaWQgZ2Vuc3hkX3RleHQoRl90ZXh0CSp0KQoreworCisJZmxvYXQgICAJeCwgeTsKKwljaGFy
CSp0cG9zOworCXVuc2lnbmVkIGNoYXIJKmNwOworZnByaW50Zih0ZnAsIENPTU1FTlRfVEFHICJU
ZXh0XG4iKTsKKwkKKwkgIHByaW50X3N0eWxlX3RleHQodC0+dHlwZSwKKwkgICAgdC0+Y29sb3Is
CisJICAgIHQtPmZvbnQsCisJICAgIHQtPnNpemUpOworCisJCisJc3RhcnRfdGFnKCJ0ZXh0LWJv
eCIsdC0+ZGVwdGgpOworCQorCWlmICh0LT5hbmdsZSAhPSAwKSB7CisgICAgICAgICAgIGZwcmlu
dGYodGZwLCAiIGRyYXc6dHJhbnNmb3JtPVwicm90YXRlICglRylcIiAiLHQtPmFuZ2xlKTsKKwl9
CisKKwkgZnByaW50Zih0ZnAsICJkcmF3OmF1dG8tZ3Jvdy13aWR0aD1cInRydWVcIiAiKTsKKwkg
ZnByaW50Zih0ZnAsICJkcmF3OmF1dG8tZ3Jvdy1oZWlnaHQ9XCJ0cnVlXCIgIik7CisJCisJIGZw
cmludGYodGZwLCAic3ZnOndpZHRoPVwiJUdcIiAiLHQtPmxlbmd0aCk7CisgICAgICAgIGZwcmlu
dGYodGZwLCAic3ZnOmhlaWdodD1cIiVHXCIgIix0LT5oZWlnaHQpOworIGZwcmludGYodGZwLCAi
c3ZnOng9XCIlZFwiICIsdC0+YmFzZV94KTsKKyBmcHJpbnRmKHRmcCwgInN2Zzp5PVwiJUdcIiAi
LHQtPmJhc2VfeS10LT5oZWlnaHQpOworCisgICAgICAgIGZwcmludGYodGZwLCAiPjx0ZXh0OnAg
dGV4dDpzdHlsZS1uYW1lPVwiUDFcIj48dGV4dDpzcGFuIHRleHQ6c3R5bGUtbmFtZT1cIlQlZFwi
PiVzPC90ZXh0OnNwYW4+PC90ZXh0OnA+PC9kcmF3OnRleHQtYm94PiIsY291bnRlcl90ZXh0Kyss
dC0+Y3N0cmluZyk7IAorCisJaWYgKHZlcmJvc2UpCisJICAgIGZwcmludGYodGZwLCAiPCEtLSBG
aWcgVEVYVCBvYmplY3QtLT5cbiIpOworCit9CisKK3ZvaWQgZ2Vuc3hkX2FyYyhGX2FyYyAqYSkK
K3sKK2ZwcmludGYodGZwLCBDT01NRU5UX1RBRyAiYXJjXG4iKTsKKworaWYgKGEtPmRpcmVjdGlv
biA9PSAxKSB7CisgIHByaW50X3N0eWxlKGEtPnN0eWxlLAorICAgICAgICAgICAgYS0+dGhpY2tu
ZXNzLAorCSAgICBhLT5wZW5fY29sb3IsCisJICAgIGEtPmZpbGxfY29sb3IsCisJICAgIGEtPnBl
biwKKwkgICAgYS0+ZmlsbF9zdHlsZSwKKwkgICAgLTEsCisJICAgIGEtPmZvcl9hcnJvdywKKwkg
ICAgYS0+YmFja19hcnJvdywKKwkgICAgYS0+Y2FwX3N0eWxlKTsKKworfSBlbHNlIHsKKworICBw
cmludF9zdHlsZShhLT5zdHlsZSwKKyAgICAgICAgICAgIGEtPnRoaWNrbmVzcywKKwkgICAgYS0+
cGVuX2NvbG9yLAorCSAgICBhLT5maWxsX2NvbG9yLAorCSAgICBhLT5wZW4sCisJICAgIGEtPmZp
bGxfc3R5bGUsCisJICAgIC0xLAorCSAgICBhLT5iYWNrX2Fycm93LAorCSAgICBhLT5mb3JfYXJy
b3csCisJICAgIGEtPmNhcF9zdHlsZSk7Cit9CSAgICAKKwlzd2l0Y2ggKGEtPnR5cGUpIHsKKwor
CSAgICBjYXNlIFRfT1BFTl9BUkM6CisJCSAgICBkcmF3X2FyYyhhLCJhcmMiKTsKKwkJICAgIGJy
ZWFrOworICAgICAgICAgICBjYXNlIFRfUElFX1dFREdFX0FSQzogICAKKwkJICAgIGRyYXdfYXJj
KGEsInNlY3Rpb24iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7IAkJICAgIAorCSAgICBk
ZWZhdWx0OiAgICAKKyAgICAgICAgfSAgICAJICAgIAorCit9CisKKworcHJpbnRfc3R5bGVfdGV4
dChpbnQgdHlwZSwKKyAgICAgICAgICAgICAgICAgaW50IGNvbG9yLAorCQkgaW50IGZvbnQsCisg
ICAgICAgICAgICAgICAgIGRvdWJsZSBzaXplKSB7IAorY2hhciAqYWxpZ25fbmFtZXNbXSA9IAor
eworICAibGVmdCIsCisgICJjZW50ZXIiLAorICAicmlnaHQiLAorfTsKKworZnByaW50Zih0ZnAs
U1RZTEVfVEFHICI8c3R5bGU6c3R5bGUgc3R5bGU6cGFyZW50LXN0eWxlLW5hbWU9XCJzdGFuZGFy
ZFwiIHN0eWxlOm5hbWU9XCJ4ZmlnJWRcIiBzdHlsZTpmYW1pbHk9XCJncmFwaGljc1wiPiIsY291
bnRlcik7CitmcHJpbnRmKHRmcCxTVFlMRV9UQUcgIjxzdHlsZTpwcm9wZXJ0aWVzIGRyYXc6dGV4
dGFyZWEtdmVydGljYWwtYWxpZ249XCJtaWRkbGVcIiAiKTsKKworZnByaW50Zih0ZnAsICJkcmF3
OnRleHRhcmVhLWhvcml6b250YWwtYWxpZ249XCIlc1wiICIsYWxpZ25fbmFtZXNbdHlwZV0pOyAK
Ky8vZnByaW50Zih0ZnAsICJkcmF3OnRleHRhcmVhLWhvcml6b250YWwtYWxpZ249XCIlc1wiICIs
YWxpZ25fbmFtZXNbdHlwZV0pOyAKKyAgIGZwcmludGYodGZwLCAiZHJhdzpzdHJva2U9XCJub25l
XCIgIik7CisKKyAgICBmcHJpbnRmKHRmcCwgInN2ZzpzdHJva2UtY29sb3I9XCIjJTYuNnhcIiAi
LHJnYkNvbG9yVmFsKGNvbG9yKSk7CisKKyAgICAgIGZwcmludGYodGZwLCAiZHJhdzpmaWxsPVwi
bm9uZVwiICIpOworICAgIGZwcmludGYodGZwLCAiZHJhdzpmaWxsLWNvbG9yPVwiIyU2LjZ4XCIg
IixyZ2JDb2xvclZhbChjb2xvcikpOworCisgICAgZnByaW50Zih0ZnAsICIvPjwvc3R5bGU6c3R5
bGU+Iik7CisKKyAgICBmcHJpbnRmKHRmcCxTVFlMRV9UQUcgIjxzdHlsZTpzdHlsZSBzdHlsZTpw
YXJlbnQtc3R5bGUtbmFtZT1cInN0YW5kYXJkXCIgc3R5bGU6bmFtZT1cIlAlZFwiIHN0eWxlOmZh
bWlseT1cInBhcmFncmFwaFwiPiIsY291bnRlcl90ZXh0KTsKKyAgICAgZnByaW50Zih0ZnAsU1RZ
TEVfVEFHICI8c3R5bGU6cHJvcGVydGllcyAiKTsKKy8vICAgICAgICAgICAgIGZwcmludGYodGZw
LCAiIGRyYXc6Zml0LXRvLXNpemU9XCJ0cnVlXCIgIik7CisKKworICAgICBzd2l0Y2ggKGZvbnQp
IHsKKwkgICAgY2FzZSBJVEFMSUNfRk9OVDoKKyAgICAgICAgICAgICAgICAgZnByaW50Zih0ZnAs
ICIgZm86Zm9udC1zdHlsZT1cIml0YWxpY1wiICIpOworCSAgICBjYXNlIEJPTERfRk9OVDoKKyAg
ICAgICAgICAgICAgICAgZnByaW50Zih0ZnAsICIgZm86Zm9udC13ZWlnaHQ9XCJib2xkXCIgIik7
CisgICAgICB9CSAgICAJIAorCisgICAgZnByaW50Zih0ZnAsICJmbzpjb2xvcj1cIiMlNi42eFwi
ICIscmdiQ29sb3JWYWwoY29sb3IpKTsKKyAgICBmcHJpbnRmKHRmcCwgImZvOmZvbnQtc2l6ZT1c
IiVHcHRcIiAiLHNpemUpOworCisgICAgZnByaW50Zih0ZnAsICIvPjwvc3R5bGU6c3R5bGU+Iik7
CisKKworfQorCisKK3ByaW50X3N0eWxlKGludCBzdHlsZSwKKyAgICAgICAgICAgIGludCB0aGlj
a25lc3MsCisJICAgIGludCBwZW5fY29sb3IsCisJICAgIGludCBmaWxsX2NvbG9yLAorCSAgICBp
bnQgcGVuLAorCSAgICBpbnQgZmlsbF9zdHlsZSwKKwkgICAgaW50IGpvaW5fc3R5bGUsCisJICAg
IEZfYXJyb3cgKmZvcl9hcnJvdywKKwkgICAgRl9hcnJvdyAqYmFja19hcnJvdywKKwkgICAgaW50
IGNhcF9zdHlsZSkKKworeworCWludCAJCWNvbG9yOworCisKK2NoYXIgKmpvaW5zdHlsZV9uYW1l
c1tdID0geworICAibWl0ZXIiLAorICAiYmV2ZWwiLAorICAicm91bmQiCit9OworCitjaGFyICpk
YXNoX25hbWVzW10gPSAKK3sKKyAgInVua293biIsCisgICJGaW5lIERhc2hlZCIsCisgICJGaW5l
IERvdHRlZCIsCisgICJMaW5lIHdpdGggRmluZSBEb3RzIgorICAiMiBEb3RzIDEgRGFzaCIsCisg
ICJVbHRyYWZpbmUgMiBEb3RzIDMgRGFzaGVzIiwKKyAgInVua293biIsCit9OworCitjaGFyICpo
YXRjaF9uYW1lc1tdID0gCit7CisgICJCTEFDSyA0NSBEZWdyZWVzIiwKK307CisKKworZnByaW50
Zih0ZnAsIENPTU1FTlRfVEFHICI8IS0tIGZpbGxfY29sb3IgJWQsIGZpbGxfc3R5bGUgJWQgLS0+
XG4iLGZpbGxfY29sb3IsZmlsbF9zdHlsZSk7CisKK2ZwcmludGYodGZwLFNUWUxFX1RBRyAiPHN0
eWxlOnN0eWxlIHN0eWxlOnBhcmVudC1zdHlsZS1uYW1lPVwic3RhbmRhcmRcIiBzdHlsZTpuYW1l
PVwieGZpZyVkXCIgc3R5bGU6ZmFtaWx5PVwiZ3JhcGhpY3NcIj4iLGNvdW50ZXIpOworZnByaW50
Zih0ZnAsU1RZTEVfVEFHICI8c3R5bGU6cHJvcGVydGllcyBkcmF3OnRleHRhcmVhLXZlcnRpY2Fs
LWFsaWduPVwibWlkZGxlXCIgIik7CisKK2lmICh0aGlja25lc3MgPiAwKSB7CisgICAgc3dpdGNo
IChzdHlsZSkgeworICAgICAgICBjYXNlIFNPTElEX0xJTkU6CisJICAgZnByaW50Zih0ZnAsICJk
cmF3OnN0cm9rZT1cInNvbGlkXCIgIik7CisJICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogICAg
ICAgCisgICAgICAgIGZwcmludGYodGZwLCAiZHJhdzpzdHJva2U9XCJkYXNoXCIgIik7CisgICAg
ICAgIGZwcmludGYodGZwLCAiZHJhdzpzdHJva2UtZGFzaD1cIiVzXCIgIixkYXNoX25hbWVzW3N0
eWxlXSk7CisgICAgICAgIGJyZWFrOworICAgIH07CisKKyAgICBmcHJpbnRmKHRmcCwgInN2Zzpz
dHJva2Utd2lkdGg9XCIlZFwiICIsdGhpY2tuZXNzKTsKKyAgICBmcHJpbnRmKHRmcCwgInN2Zzpz
dHJva2UtY29sb3I9XCIjJTYuNnhcIiAiLHJnYkNvbG9yVmFsKHBlbl9jb2xvcikpOworfSBlbHNl
IHsKKyAgIGZwcmludGYodGZwLCAiZHJhdzpzdHJva2U9XCJub25lXCIgIik7Cit9CisKK3ByaW50
X2Fycm93KGZvcl9hcnJvdywic3RhcnQiKTsKK3ByaW50X2Fycm93KGJhY2tfYXJyb3csImVuZCIp
OworCitpZiAoam9pbl9zdHlsZSAhPSAtMSkgeworICAgIGZwcmludGYodGZwLCAic3ZnOnN0cm9r
ZS1saW5lam9pbj1cIiVzXCIgIixqb2luc3R5bGVfbmFtZXNbam9pbl9zdHlsZV0pOworfQorCisK
K3N3aXRjaCAoZmlsbF9jb2xvcikgeworICAgIGNhc2UgLTE6CisgICAgY2FzZSAwOgorICAgIGNh
c2UgNzoKKyAgICAgIGlmIChmaWxsX3N0eWxlID09IC0xICkgeworCSAgICBmcHJpbnRmKHRmcCwg
ImRyYXc6ZmlsbD1cIm5vbmVcIiAiKTsKKyAgICAgIH0KKyAgICAgIGlmICgoMDw9ZmlsbF9zdHls
ZSkgJiYgKGZpbGxfc3R5bGU8PTIwKSkgeworCSAgICBmcHJpbnRmKHRmcCwgImRyYXc6ZmlsbD1c
InNvbGlkXCIgIik7ICAgICAgCisJICAgIGlmIChmaWxsX2NvbG9yPT03KSB7CisgICAgICAgICAg
ICAgICAgICBjb2xvcj0oMjU1LzIwKSooZmlsbF9zdHlsZSk7CisgICAgICAgICAgICB9IGVsc2Ug
eworCQkgIGNvbG9yPTI1NS0oMjU1LzIwKSooZmlsbF9zdHlsZSk7CisJICAgIH0JICAgIAorCSAg
ICBjb2xvcj0yNTYqMjU2KmNvbG9yKzI1Nipjb2xvcitjb2xvcjsKKwkgICAgZnByaW50Zih0ZnAs
ICJkcmF3OmZpbGwtY29sb3I9XCIjJTYuNnhcIiAiLGNvbG9yKTsgICAgICAKKyAgICAgICB9Cisg
ICAgICBpZiAoKGZpbGxfc3R5bGU+PTIxKSAmJiAoZmlsbF9zdHlsZTw9NDApKSB7CisgICAgICAg
ICAgICBmcHJpbnRmKHRmcCwgImRyYXc6ZmlsbD1cIm5vdCB1c2VkXCIgIik7ICAgCisgICAgICB9
CisgICAgICBpZiAoKGZpbGxfc3R5bGU+PTQxKSAmJiAoZmlsbF9zdHlsZTw9NTYpKSB7CisgICAg
ICAgICAgICBmcHJpbnRmKHRmcCwgImRyYXc6ZmlsbD1cImhhdGNoXCIgIik7ICAgCisgICAgICB9
CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgaWYgKGZpbGxfc3R5bGUgPT0gLTEp
IHsKKwkgICAgZnByaW50Zih0ZnAsICJkcmF3OmZpbGw9XCJub25lXCIgIik7CisKKyAgICAgIH0g
CisgICAgICBpZiAoZmlsbF9zdHlsZSA9PSAwKSB7CisJICAgIGZwcmludGYodGZwLCAiZHJhdzpm
aWxsPVwic29saWRcIiAiKTsKKwkgICAgZnByaW50Zih0ZnAsICJkcmF3OmZpbGwtY29sb3I9XCIj
MDAwMDAwXCIgIik7ICAgICAgCisKKwkgICAgCisgICAgICB9IAorICAgICAgaWYgKGZpbGxfc3R5
bGUgPT0gNDApIHsKKwkgICAgZnByaW50Zih0ZnAsICJkcmF3OmZpbGw9XCJzb2xpZFwiICIpOwor
CSAgICBmcHJpbnRmKHRmcCwgImRyYXc6ZmlsbC1jb2xvcj1cIiNmZmZmZmZcIiAiKTsgICAgICAK
KworICAgICAgfSAKKyAgICAgIGlmICgoZmlsbF9zdHlsZT4wKSAmJiAoZmlsbF9zdHlsZTw0MCkp
IHsKKwkgICAgZnByaW50Zih0ZnAsICJkcmF3OmZpbGw9XCJzb2xpZFwiICIpOworCSAgICBmcHJp
bnRmKHRmcCwgImRyYXc6ZmlsbC1jb2xvcj1cIiMlNi42eFwiICIscmdiQ29sb3JWYWwoZmlsbF9j
b2xvcikpOworICAgICAgfSAKKyAgICAgIGlmICgoZmlsbF9zdHlsZT49NDEpICYmIChmaWxsX3N0
eWxlPD01NikpIHsKKyAgICAgICAgICAgIGZwcmludGYodGZwLCAiZHJhdzpmaWxsPVwiaGF0Y2hc
IiAiKTsgICAKKwkgICAgZnByaW50Zih0ZnAsICJkcmF3OmZpbGwtaGF0Y2gtbmFtZT1cIiMlc1wi
ICIsaGF0Y2hfbmFtZXNbMF0pOworCisgICAgICB9Cit9CisvL2RyYXc6dHJhbnNwYXJlbmN5CisK
KyAgICBmcHJpbnRmKHRmcCwgIi8+PC9zdHlsZTpzdHlsZT4iKTsKKworfQorCisKKyNkZWZpbmUg
IE1BWENPTE9SUyAzMgorCisvKiBuZWVkIHRoaXMgZm9yIGNvbW11bmljYXRpb24gYmV0d2VlbiBj
b2xvciByb3V0aW5lcy4gU29ycnkgKi8KK3N0YXRpYyBpbnQgbGFzdGNvbG9yPS0xOworCisKK3N0
YXRpYyB1bnNpZ25lZCBpbnQKK3JnYkNvbG9yVmFsKGludCBjb2xvckluZGV4KQoreworCWV4dGVy
biBVc2VyX2NvbG9yCXVzZXJfY29sb3JzW107CisJdW5zaWduZWQgaW50CXJnYjsKKwlzdGF0aWMg
dW5zaWduZWQgaW50CXJnYkNvbG9yc1tOVU1fU1REX0NPTFNdID0geworCQkweDAwMDAwMCwgMHgw
MDAwZmYsIDB4MDBmZjAwLCAweDAwZmZmZiwgMHhmZjAwMDAsIDB4ZmYwMGZmLAorCQkweGZmZmYw
MCwgMHhmZmZmZmYsIDB4MDAwMDhmLCAweDAwMDBiMCwgMHgwMDAwZDEsIDB4ODdjZmZmLAorCQkw
eDAwOGYwMCwgMHgwMGIwMDAsIDB4MDBkMTAwLCAweDAwOGY4ZiwgMHgwMGIwYjAsIDB4MDBkMWQx
LAorCQkweDhmMDAwMCwgMHhiMDAwMDAsIDB4ZDEwMDAwLCAweDhmMDA4ZiwgMHhiMDAwYjAsIDB4
ZDEwMGQxLAorCQkweDgwMzAwMCwgMHhhMTQwMDAsIDB4YjQ2MTAwLCAweGZmODA4MCwgMHhmZmEx
YTEsIDB4ZmZiZmJmLAorCQkweGZmZTBlMCwgMHhmZmQ2MDAKKwl9OworCisJaWYgKGNvbG9ySW5k
ZXggPT0gREVGQVVMVCkKKwkJcmdiID0gcmdiQ29sb3JzWzBdOworCWVsc2UgaWYgKGNvbG9ySW5k
ZXggPCBOVU1fU1REX0NPTFMpCisJCXJnYiA9IHJnYkNvbG9yc1tjb2xvckluZGV4XTsKKwllbHNl
CisJCXJnYiA9ICgodXNlcl9jb2xvcnNbY29sb3JJbmRleC1OVU1fU1REX0NPTFNdLnIgJiAweGZm
KSA8PCAxNikKKwkJCXwgKCh1c2VyX2NvbG9yc1tjb2xvckluZGV4LU5VTV9TVERfQ09MU10uZyAm
IDB4ZmYpIDw8IDgpCisJCQl8ICh1c2VyX2NvbG9yc1tjb2xvckluZGV4LU5VTV9TVERfQ09MU10u
YiAmIDB4ZmYpOworCXJldHVybiByZ2I7Cit9CisKKworc3RhcnRfdGFnKGNoYXIgKm5hbWUsaW50
IGRlcHRoKSB7CisgZnByaW50Zih0ZnAsIEJPRFlfVEFHICI8ZHJhdzolcyBkcmF3OnN0eWxlLW5h
bWU9XCJ4ZmlnJWRcIiBkcmF3OnRleHQtc3R5bGUtbmFtZT1cIlAwXCIgZHJhdzpsYXllcj1cImxh
eW91dFwiICIsbmFtZSxjb3VudGVyKyspOworIGZwcmludGYodGZwLCAiZHJhdzp6aW5kZXg9XCIl
ZFwiICIsZGVwdGgpOworfTsKKworZHJhd19yb3VuZChGX2VsbGlwc2UgKmUsY2hhciAqbmFtZSkg
eworIEZfcG9pbnQJKnE7CisgaW50CQltYXhfeCxtYXhfeTsKKyBzdGFydF90YWcobmFtZSxlLT5k
ZXB0aCk7CisKKy8vIGRyYXc6a2luZCAoZnVsbHxzZWN0aW9ufGN1dHxhcmMpCisKKyBmcHJpbnRm
KHRmcCwgImRyYXc6a2luZD1cImZ1bGxcIiAiKTsKKyBmcHJpbnRmKHRmcCwgInN2Zzp3aWR0aD1c
IiVkXCIgIixlLT5yYWRpdXNlcy54KjIpOworIGZwcmludGYodGZwLCAic3ZnOmhlaWdodD1cIiVk
XCIgIixlLT5yYWRpdXNlcy55KjIpOworIGZwcmludGYodGZwLCAic3ZnOng9XCIlZFwiICIsZS0+
Y2VudGVyLnggLSBlLT5yYWRpdXNlcy54KTsKKyBmcHJpbnRmKHRmcCwgInN2Zzp5PVwiJWRcIiAi
LGUtPmNlbnRlci55IC0gZS0+cmFkaXVzZXMueSk7CisgaWYgKGUtPmFuZ2xlICE9IDApIHsKKyAg
ICAgZnByaW50Zih0ZnAsICJkcmF3OnRyYW5zZm9ybT1cInJvdGF0ZSAoJWYpXCIgIixlLT5hbmds
ZSk7CisgfQorIGZwcmludGYodGZwLCAiLz4iKTsKK30KKworZHJhd19hcmMoRl9hcmMgKmEsY2hh
ciAqbmFtZSkgeworIEZfcG9pbnQJKnE7CisgaW50CQlhcmMsbWF4X3gsbWF4X3k7CisgRl9wb3Mg
ICAgICAgICAgIHAxLCBwMiwgcDMsIHBxWzRdOworIGRvdWJsZQkJIHgxLHkxLHgyLHkyLHgzLHkz
LEEsQixDOworIGRvdWJsZQkJIGR4LGR5LHN4LHN5LGV4LGV5OworIGRvdWJsZSAgICAgICAgICBj
eCwgY3k7CisgZG91YmxlICAgICAgICAgIHYxeCwgdjF5LCB2MngsIHYyeTsKKyBkb3VibGUgICAg
ICAgICAgciwgYW5nbGUxLCBhbmdsZTI7CisJCQkgICAgICAgCisgc3RhcnRfdGFnKCJlbGxpcHNl
IixhLT5kZXB0aCk7CisKKy8vIGRyYXc6a2luZCAoZnVsbHxzZWN0aW9ufGN1dHxhcmMpCisvLyBG
SVhNRTogbWF0aCBwcm9ibGVtcworIAoraWYgKGEtPmRpcmVjdGlvbiA9PSAxKSB7CityZXR1cm47
CisgICAgICAgICAgcDEgPSBhLT5wb2ludFsyXTsKKyAgICAgICAgICBwMyA9IGEtPnBvaW50WzBd
OworLy8Jc3ggPSBhLT5wb2ludFswXS54OyBzeSA9IGEtPnBvaW50WzBdLnk7CisvLwlleCA9IGEt
PnBvaW50WzJdLng7IGV5ID0gYS0+cG9pbnRbMl0ueTsKKworLy8gICAgICAgICAgcDFfYXJyb3cg
PSAoYS0+YmFja19hcnJvdyAhPSBOVUxMKTsKKy8vICAgICAgICAgIHAyX2Fycm93ID0gKGEtPmZv
cl9hcnJvdyAhPSBOVUxMKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgICAgcDEgPSBhLT5wb2lu
dFswXTsKKyAgICAgICAgICBwMyA9IGEtPnBvaW50WzJdOworLy8Jc3ggPSBhLT5wb2ludFsyXS54
OyBzeSA9IGEtPnBvaW50WzJdLnk7CisvLwlleCA9IGEtPnBvaW50WzBdLng7IGV5ID0gYS0+cG9p
bnRbMF0ueTsKKworLy8gICAgICAgICAgcDFfYXJyb3cgPSAoYS0+Zm9yX2Fycm93ICE9IE5VTEwp
OworLy8gICAgICAgICAgcDJfYXJyb3cgPSAoYS0+YmFja19hcnJvdyAhPSBOVUxMKTsKKyAgICAg
IH0KKworCXN4ID0gYS0+cG9pbnRbMF0ueDsgc3kgPSBhLT5wb2ludFswXS55OworCWV4ID0gYS0+
cG9pbnRbMl0ueDsgZXkgPSBhLT5wb2ludFsyXS55OworCisJY3ggPSBhLT5jZW50ZXIueDsgY3kg
PSBhLT5jZW50ZXIueTsKKworLy8JZGlyZWN0aW9uID0gYS0+ZGlyZWN0aW9uOworCWR4ID0gY3gg
LSBzeDsKKwlkeSA9IGN5IC0gc3k7CisJciA9IHNxcnQoZHgqZHgrZHkqZHkpOworCWlmIChjeD09
c3gpCisJICAgIGFuZ2xlMSA9IChzeS1jeSA+IDA/IDkwLjA6IC05MC4wKTsKKwllbHNlCisJICAg
IGFuZ2xlMSA9IGF0YW4yKChzeS1jeSksKHN4LWN4KSkgKiAxODAgLyBNX1BJOworCWlmIChjeD09
ZXgpCisJICAgIGFuZ2xlMiA9IChleS1jeSA+IDAgPyA5MC4wOiAtOTAuMCk7CisJZWxzZQorCSAg
ICBhbmdsZTIgPSBhdGFuMigoZXktY3kpLChleC1jeCkpICogMTgwIC9NX1BJOworCisKKworCSAg
ICBhbmdsZTEgPSAoYW5nbGUxIDwgMCA/IGFuZ2xlMSszNjA6IGFuZ2xlMSk7CisJICAgIGFuZ2xl
MiA9IChhbmdsZTIgPCAwID8gYW5nbGUyKzM2MDogYW5nbGUyKTsKKworICAgICAgIGlmIChhYnMo
YW5nbGUxKT45MCkKKyAgICAgICAgICBhbmdsZTE9MTgwLTE4MC1hbmdsZTE7CisgICAgICAgICBl
bHNlCisgICAgICAgICAgYW5nbGUxPS1hbmdsZTE7CisKKyAgICAgICBpZiAoYWJzKGFuZ2xlMik+
OTApCisgICAgICAgICAgYW5nbGUyPTE4MC0xODAtYW5nbGUyOworICAgICAgICAgZWxzZQorICAg
ICAgICAgIGFuZ2xlMj0tYW5nbGUyOworCisgICAgICAgICAgCisKKy8vIGZwcmludGYodGZwLCBD
T01NRU5UX1RBRyAiICVHICVHIix2MXgsdjF5KTsKKy8vIGZwcmludGYodGZwLCBDT01NRU5UX1RB
RyAiICVHICVHIix2MngsdjJ5KTsKKy8vIGZwcmludGYodGZwLCBDT01NRU5UX1RBRyAiICVkICVk
IixwMS54LHAxLnkpOworLy8gZnByaW50Zih0ZnAsIENPTU1FTlRfVEFHICIgJWQgJWQiLHAyLngs
cDIueSk7CisvLyBmcHJpbnRmKHRmcCwgQ09NTUVOVF9UQUcgIiAlZCAlZCIscDMueCxwMy55KTsK
Ky8vIGZwcmludGYodGZwLCBDT01NRU5UX1RBRyAiICVHICVHXG4iLGEtPmNlbnRlci54LGEtPmNl
bnRlci55KTsKKyAKKyBmcHJpbnRmKHRmcCwgImRyYXc6a2luZD1cIiVzXCIgIixuYW1lKTsKKyBm
cHJpbnRmKHRmcCwgInN2Zzp4PVwiJUdcIiAiLGN4LXIpOworIGZwcmludGYodGZwLCAic3ZnOnk9
XCIlR1wiICIsY3ktcik7CisgZnByaW50Zih0ZnAsICJzdmc6d2lkdGg9XCIlR1wiICIsMipyKTsK
KyBmcHJpbnRmKHRmcCwgInN2ZzpoZWlnaHQ9XCIlR1wiICIsMipyKTsKKyBmcHJpbnRmKHRmcCwg
ImRyYXc6c3RhcnQtYW5nbGU9XCIlLjJmXCIgIixhbmdsZTIpOworIGZwcmludGYodGZwLCAiZHJh
dzplbmQtYW5nbGU9XCIlLjJmXCIgIiAgLGFuZ2xlMSk7CisKKyAKKy8vIGlmIChhLT5hbmdsZSAh
PSAwKSB7CisvLyAgICAgZnByaW50Zih0ZnAsICJkcmF3OnRyYW5zZm9ybT1cInJvdGF0ZSAoJWYp
XCIgIixhLT5hbmdsZSk7CisvLyB9CisgZnByaW50Zih0ZnAsICIvPiIpOworfQorCitkcmF3X3Bv
bHkoRl9saW5lICpsLGNoYXIgKm5hbWUpIHsKKyBGX3BvaW50CSpxOworIGludAkJbWF4X3gsbWF4
X3ksbWluX3gsbWluX3k7CisKKyBmcHJpbnRmKHRmcCwgQ09NTUVOVF9UQUcgIiBMaW5pZSAlZFxu
IixsLT50eXBlKTsKKworIHN0YXJ0X3RhZyhuYW1lLGwtPmRlcHRoKTsKKyAKKyBmcHJpbnRmKHRm
cCwgImRyYXc6cG9pbnRzPVwiIik7CisKKyBxPWwtPnBvaW50czsKKyBtYXhfeD1xLT54OworIG1h
eF95PXEtPnk7IAorIG1pbl94PXEtPng7CisgbWluX3k9cS0+eTsgCisgCisgd2hpbGUgKHEgIT0g
TlVMTCkgeworICAgIG1heF94PU1BWChtYXhfeCxxLT54KTsKKyAgICBtYXhfeT1NQVgobWF4X3ks
cS0+eSk7CisgICAgbWluX3g9TUlOKG1pbl94LHEtPngpOworICAgIG1pbl95PU1JTihtaW5feSxx
LT55KTsKKworICAgIGZwcmludGYodGZwLCAiJWQsJWQgIixxLT54LHEtPnkpOworICAgIHE9cS0+
bmV4dDsKKyB9CisKKyBmcHJpbnRmKHRmcCwgIlwiICIpOworIGZwcmludGYodGZwLCAic3ZnOnZp
ZXdCb3g9XCIlZCAlZCAlZCAlZFwiICIsbWluX3gtMSxtaW5feS0xLG1heF94KzEsbWF4X3krMSk7
CisgZnByaW50Zih0ZnAsICJzdmc6eD1cIiVkXCIgc3ZnOnk9XCIlZFwiIHN2Zzp3aWR0aD1cIiVk
XCIgc3ZnOmhlaWd0aD1cIiVkXCIgIixtaW5feC0xLG1pbl95LTEsbWF4X3grMSxtYXhfeSsxKTsK
KyAKKyBmcHJpbnRmKHRmcCwgIi8+Iik7Cit9CisKK2RyYXdfbGluZShGX2xpbmUgKmwpIHsKKyBz
dGFydF90YWcoImxpbmUiLGwtPmRlcHRoKTsKKyAKKyBmcHJpbnRmKHRmcCwgInN2Zzp4MT1cIiVk
XCIgIixsLT5wb2ludHMtPngpOworIGZwcmludGYodGZwLCAic3ZnOnkxPVwiJWRcIiAiLGwtPnBv
aW50cy0+eSk7CisgZnByaW50Zih0ZnAsICJzdmc6eDI9XCIlZFwiICIsbC0+cG9pbnRzLT5uZXh0
LT54KTsKKyBmcHJpbnRmKHRmcCwgInN2Zzp5Mj1cIiVkXCIgIixsLT5wb2ludHMtPm5leHQtPnkp
OworIAorIGZwcmludGYodGZwLCAiLz4iKTsKK30KKworZHJhd19ib3goRl9saW5lICpsKSB7Cisg
Rl9wb2ludCAgICAgICAgICpwLCAqcTsKKyBpbnQgeDEseDIseTEseTI7CisgcCA9IGwtPnBvaW50
czsKKyBxID0gcC0+bmV4dC0+bmV4dDsKKwkKKyB4MT1NSU4ocC0+eCxxLT54KTsKKyB4Mj1NQVgo
cC0+eCxxLT54KTsKKyB5MT1NSU4ocC0+eSxxLT55KTsKKyB5Mj1NQVgocC0+eSxxLT55KTsKKyAK
KyAgCisgCSAKKyBzdGFydF90YWcoInJlY3QiLGwtPmRlcHRoKTsKKyAgZnByaW50Zih0ZnAsICJz
dmc6eD1cIiVkXCIgIix4MSk7CisgIGZwcmludGYodGZwLCAic3ZnOnk9XCIlZFwiICIseTEpOwor
ICAKKyAgZnByaW50Zih0ZnAsICJzdmc6d2lkdGggPVwiJWRcIiAiLHgyLXgxKTsKKyAgZnByaW50
Zih0ZnAsICJzdmc6aGVpZ2h0PVwiJWRcIiAiLHkyLXkxKTsKKworICBpZiAobC0+dHlwZT09VF9B
UkNfQk9YKSB7CisgICAgZnByaW50Zih0ZnAsICJkcmF3OmNvcm5lci1yYWRpdXM9XCIlZFwiICIs
bC0+cmFkaXVzKTsKKyAgfQorICBmcHJpbnRmKHRmcCwgIi8+Iik7CisKK30KKworcHJpbnRfYXJy
b3coRl9hcnJvdyAqYXJyb3csY2hhciAqbmFtZSkgeworY2hhciAqYXJyb3dfbmFtZXNbXSA9IHsK
KyAgIkxpbmUgQXJyb3ciLAorICAiQXJyb3ciLAorICAiQXJyb3cgY29uY2F2ZSIsCisgICJBcnJv
dyBjb252ZXgiIAorfTsKKworaWYgKGFycm93ICE9IE5VTEwpIHsKKyAgZnByaW50Zih0ZnAsICIg
ZHJhdzptYXJrZXItJXM9XCIlc1wiICIsbmFtZSxhcnJvd19uYW1lc1thcnJvdy0+dHlwZV0pOwor
ICBmcHJpbnRmKHRmcCwgIiBkcmF3Om1hcmtlci0lcy13aWR0aD1cIiVHXCIgIixuYW1lLGFycm93
LT53aWQqMyk7CisgIGZwcmludGYodGZwLCAiIGRyYXc6bWFya2VyLSVzLWhlaWdodD1cIiVHXCIg
IixuYW1lLGFycm93LT5odCozKTsKKyAgZnByaW50Zih0ZnAsICIgZHJhdzptYXJrZXItJXMtY2Vu
dGVyPVwidHJ1ZVwiICIsbmFtZSk7Cit9Cit9CisKK3N0cnVjdCBkcml2ZXIgZGV2X3N4ZCA9IHsK
KyAgICAgCWdlbnN4ZF9vcHRpb24sCisJZ2Vuc3hkX3N0YXJ0LAorCWdlbnN4ZF9hcmMsCisJZ2Vu
c3hkX2VsbGlwc2UsCisJZ2Vuc3hkX2xpbmUsCisJZ2Vuc3hkX3NwbGluZSwKKwlnZW5zeGRfdGV4
dCwKKwlnZW5zeGRfZW5kLAorCUlOQ0xVREVfVEVYVAorfTsKZGlmZiAtdXIgLS1uZXctZmlsZSB0
cmFuc2ZpZy4zLjIuM2Qub3JpZy9maWcyZGV2L2RyaXZlcnMuaCB0cmFuc2ZpZy4zLjIuM2QvZmln
MmRldi9kcml2ZXJzLmgKLS0tIHRyYW5zZmlnLjMuMi4zZC5vcmlnL2ZpZzJkZXYvZHJpdmVycy5o
CVRodSBGZWIgMTUgMTg6NDQ6MzMgMjAwMQorKysgdHJhbnNmaWcuMy4yLjNkL2ZpZzJkZXYvZHJp
dmVycy5oCUZyaSBKdW4gMjEgMTI6Mjk6NTQgMjAwMgpAQCAtMzUsNiArMzUsOCBAQAogZXh0ZXJu
IHN0cnVjdCBkcml2ZXIgZGV2X2dlOwogZXh0ZXJuIHN0cnVjdCBkcml2ZXIgZGV2X2JpdG1hcHM7
CiBleHRlcm4gc3RydWN0IGRyaXZlciBkZXZfbWFwOworZXh0ZXJuIHN0cnVjdCBkcml2ZXIgZGV2
X3NtbDsKK2V4dGVybiBzdHJ1Y3QgZHJpdmVyIGRldl9zeGQ7CiAKIC8qIGFsbCB0aGUgYml0bWFw
IGZvcm1hdHMgdXNlIHRoZSBkZXZfYml0bWFwcyBkcml2ZXIgKi8KIApAQCAtNjUsNiArNjcsOCBA
QAogCQl7InBzdGV4IiwJJmRldl9wc3RleH0sCiAJCXsicHN0ZXhfdCIsCSZkZXZfcHN0ZXhfdH0s
CiAJCXsic2xkIiwJCSZkZXZfYml0bWFwc30sCisJCXsic21sIiwJCSZkZXZfc21sfSwJCisJCXsi
c3hkIiwJCSZkZXZfc3hkfSwJCiAJCXsidGV4dHlsIiwJJmRldl90ZXh0eWx9LAogCQl7InRpZmYi
LAkmZGV2X2JpdG1hcHN9LAogCQl7InRrIiwJCSZkZXZfdGt9LApkaWZmIC11ciAtLW5ldy1maWxl
IHRyYW5zZmlnLjMuMi4zZC5vcmlnL2ZpZzJkZXYvZmlnMnN4ZC5zY3JpcHQgdHJhbnNmaWcuMy4y
LjNkL2ZpZzJkZXYvZmlnMnN4ZC5zY3JpcHQKLS0tIHRyYW5zZmlnLjMuMi4zZC5vcmlnL2ZpZzJk
ZXYvZmlnMnN4ZC5zY3JpcHQJVGh1IEphbiAgMSAwMTowMDowMCAxOTcwCisrKyB0cmFuc2ZpZy4z
LjIuM2QvZmlnMmRldi9maWcyc3hkLnNjcmlwdAlXZWQgSnVsIDE3IDExOjAxOjQ3IDIwMDIKQEAg
LTAsMCArMSwzNiBAQAorIyEvYmluL3NoCisjIHNjcmlwdCB0byBjb252ZXJ0IGZpZyB0byBzeGQK
KyMgZW1haWw6IHBldGVyQG5pZW5kby5kZQorCit0ZW1wZGlyPS4vc3RhbmRhcmQ7CisKK2lmIHRl
c3QgIiQxIiAhPSAiIjsgdGhlbgorCitta2RpciAkdGVtcGRpcgorCituYW1lPWBlY2hvICQxIHwg
c2VkIHMvLmZpZy8vYAorCisjY3AgLVIgLi9zdGFuZGFyZCAkbmFtZQorCitlY2hvIGV4cG9ydGlu
ZyAkbmFtZS5maWcgdG8gJG5hbWUuc3hkCisKK2ZpZzJkZXYgLUxzeGQgJG5hbWUuZmlnID5kdW1t
eSB8fCBlY2hvIEZlaGxlciBiZWk6ICRuYW1lCisKK2NhdCBkdW1teSB8IGdyZXAgIl5IRUFEIiB8
IHNlZCAtZSAncy9IRUFELy8nID4kdGVtcGRpci9jb250ZW50LnhtbAorY2F0IGR1bW15IHwgZ3Jl
cCAiXlNUWUxFIiB8IHNlZCAtZSAncy9TVFlMRS8vJyA+PiR0ZW1wZGlyL2NvbnRlbnQueG1sCitj
YXQgZHVtbXkgfCBncmVwICJeTUlERExFIiB8IHNlZCAtZSAncy9NSURETEUvLycgPj4kdGVtcGRp
ci9jb250ZW50LnhtbAorY2F0IGR1bW15IHwgZ3JlcCAiXkJPRFkiIHwgc2VkIC1lICdzL0JPRFkv
LycgPj4kdGVtcGRpci9jb250ZW50LnhtbAorY2F0IGR1bW15IHwgZ3JlcCAiXkVORCIgfCBzZWQg
LWUgJ3MvRU5ELy8nID4+JHRlbXBkaXIvY29udGVudC54bWwKKworY2QgLi9zdGFuZGFyZAoremlw
IC1yIC4uLyRuYW1lLnN4ZCAqID4vZGV2L251bGwKK2NkIC4uCitlbHNlCisKK2VjaG8gInVzZSAu
L3BhY2sgPGZpbGVuYW1lLmZpZz4iCitlY2hvIGV4cG9ydCBmaWxlbmFtZS5maWcgdG8gZmlsZW5h
bWUuc3hkCitlY2hvCitlY2hvIHlvdSBuZWVkIGEgZGlyZWN0b3J5IGNhbGxlZCAkdGVtcGRpciwg
d2hpY2ggc2hvdWxkIGJlIAorZWNobyBlbXB0eSBvciBhbiB1bmNvbXByZXNzZWQgc3hkIGZpbGUu
CitlY2hvCitmaQpkaWZmIC11ciAtLW5ldy1maWxlIHRyYW5zZmlnLjMuMi4zZC5vcmlnL3BhdGNo
bGV2ZWwuaCB0cmFuc2ZpZy4zLjIuM2QvcGF0Y2hsZXZlbC5oCi0tLSB0cmFuc2ZpZy4zLjIuM2Qu
b3JpZy9wYXRjaGxldmVsLmgJVHVlIE1heSAyOSAyMToxMjozNyAyMDAxCisrKyB0cmFuc2ZpZy4z
LjIuM2QvcGF0Y2hsZXZlbC5oCVRodSBKdWwgIDQgMTA6NDc6MTkgMjAwMgpAQCAtMTYsNCArMTYs
NCBAQAogICovCiAKICNkZWZpbmUgVkVSU0lPTgkJIjMuMiIKLSNkZWZpbmUgUEFUQ0hMRVZFTAki
M2QiCisjZGVmaW5lIFBBVENITEVWRUwJIjNkLXNtbC1zeGRfMC4yIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>