<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>15735</bug_id>
          
          <creation_ts>2007-10-28 08:06:46 -0700</creation_ts>
          <short_desc>remove GroupNode to simplify AST and speed up a bit</short_desc>
          <delta_ts>2007-10-28 16:09:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>59697</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-28 08:06:46 -0700</bug_when>
    <thetext>Maciej suggested that I get rid of GroupNode. The hard part is keeping serialization working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59717</commentid>
    <comment_count>1</comment_count>
      <attachid>16919</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-28 14:17:45 -0700</bug_when>
    <thetext>Created attachment 16919
patch, change log, new tests (passes all existing tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59731</commentid>
    <comment_count>2</comment_count>
      <attachid>16919</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-10-28 15:59:50 -0700</bug_when>
    <thetext>Comment on attachment 16919
patch, change log, new tests (passes all existing tests)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>59733</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-10-28 16:09:13 -0700</bug_when>
    <thetext>Committed revision 27191.
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16919</attachid>
            <date>2007-10-28 14:17:45 -0700</date>
            <delta_ts>2007-10-28 15:59:50 -0700</delta_ts>
            <desc>patch, change log, new tests (passes all existing tests)</desc>
            <filename>GroupNodePatch.txt</filename>
            <type>text/plain</type>
            <size>132237</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTgwKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTEyIEBACisyMDA3LTEwLTI4ICBEYXJpbiBB
ZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAtIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1NzM1CisgICAgICAgICAgcmVtb3ZlIEdyb3VwTm9kZSB0byBzaW1wbGlmeSBBU1QgYW5kIHBv
c3NpYmx5IGdldCBhIG1vZGVzdCBzcGVlZHVwCisKKyAgICAgICAgVGhpcyBwYXRjaCByZW1vdmVz
IDQgbm9kZSB0eXBlczogR3JvdXBOb2RlLCBQcm9wZXJ0eU5hbWVOb2RlLAorICAgICAgICBGdW5j
dGlvbkNhbGxQYXJlbkJyYWNrZXROb2RlLCBhbmQgRnVuY3Rpb25DYWxsUGFyZW5Eb3ROb2RlLgor
CisgICAgICAgIFRvIHJlbW92ZSBHcm91cE5vZGUsIHdlIGFkZCBrbm93bGVkZ2Ugb2YgcHJlY2Vk
ZW5jZSB0byB0aGUgdHJlZSBub2RlcywKKyAgICAgICAgYW5kIHVzZSB0aGF0IHdoZW4gc2VyaWFs
aXppbmcgdG8gZGV0ZXJtaW5lIHdoZXJlIHBhcmVudGhlc2VzIGFyZSBuZWVkZWQuCisgICAgICAg
IFRoaXMgbWVhbnMgd2Ugbm8gbG9uZ2VyIGhhdmUgdG8gcmVwcmVzZW50IHBhcmVudGhlc2VzIGlu
IHRoZSB0cmVlLgorCisgICAgICAgIFRoZSBwcmVjZWRlbmNlIHZhbHVlcyBhcmUgbmFtZWQgYWZ0
ZXIgcHJvZHVjdGlvbnMgaW4gdGhlIGdyYW1tYXIgZnJvbSB0aGUKKyAgICAgICAgSmF2YVNjcmlw
dCBzdGFuZGFyZC4KKworICAgICAgICBTdW5TcGlkZXIgc2F5cyB0aGlzIGlzIGFuIDAuNCUgc3Bl
ZWR1cC4KKworICAgICAgICAqIGtqcy9mdW5jdGlvbi5oOgorICAgICAgICAqIGtqcy9mdW5jdGlv
bi5jcHA6IFJlbW92ZWQgZXNjYXBlU3RyaW5nRm9yUHJldHR5UHJpbnRpbmcgLS0gaXQncyBwYXJ0
IG9mCisgICAgICAgIHNlcmlhbGl6YXRpb24sIHNvIEkgbW92ZWQgaXQgdG8gdGhlIGZpbGUgdGhh
dCB0YWtlcyBjYXJlIG9mIHRoYXQuCisKKyAgICAgICAgKiBranMvZ3JhbW1hci55OiBDaGFuZ2Vk
IG1ha2VHZXR0ZXJPclNldHRlclByb3BlcnR5Tm9kZSB0byB1c2UgMCB0bworICAgICAgICBpbmRp
Y2F0ZSBmYWlsdXJlIGluc3RlYWQgb2YgYSBzZXBhcmF0ZSBib29sZWFuLiBHb3QgcmlkIG9mIFBy
b3BlcnR5TmFtZU5vZGUKKyAgICAgICAgYnkgbWVyZ2luZyB0aGUgUHJvcGVydHlOYW1lIHJ1bGUg
aW50byB0aGUgUHJvcGVydHkgcnVsZSAod2hpY2ggd2FzIGVhc2llcgorICAgICAgICB0aGFuIGZp
Z3VyaW5nIG91dCBob3cgdG8gcGFzcyB0aGUgSWRlbnRpZmllciBmcm9tIG9uZSBub2RlIHRvIGFu
b3RoZXIpLgorICAgICAgICBHb3QgcmlkIG9mIEdyb3VwTm9kZSwgbm9kZUluc2lkZUFsbFBhcmVu
cygpLCBGdW5jdGlvbkNhbGxQYXJlbkJyYWNrZXROb2RlLAorICAgICAgICBhbmQgRnVuY3Rpb25D
YWxsUGFyZW5Eb3ROb2RlLgorCisgICAgICAgICoga2pzL25vZGVzLmg6IFJlbW92ZWQgdW51c2Vk
IGZvcndhcmQgZGVjbGFyYXRpb25zIGFuZCBPcGVyYXRvciB2YWx1ZXMuCisgICAgICAgIEFkZGVk
IFByZWNlZGVuY2UgZW51bSwgYW5kIHByZWNlZGVuY2UgZnVuY3Rpb24gdG8gYWxsIG5vZGVzLiBS
ZW1vdmVkCisgICAgICAgIG5vZGVJbnNpZGVBbGxQYXJlbnMuIEFkZGVkIHN0cmVhbUJpbmFyeU9w
ZXJhdG9yIGZ1bmN0aW9uIGZvciBzZXJpYWxpemF0aW9uLgorICAgICAgICBSZW1vdmVkIEdyb3Vw
Tm9kZSBhbmQgUHJvcGVydHlOYW1lTm9kZS4gTWFkZSBQcm9wZXJ0eU5vZGUgc3RvcmUgYW4gSWRl
bnRpZmllci4KKyAgICAgICAgUmVtb3ZlZCBGdW5jdGlvbkNhbGxQYXJlbkJyYWNrZXROb2RlIGFu
ZCBGdW5jdGlvbkNhbGxQYXJlbkRvdE5vZGUuCisKKyAgICAgICAgKiBranMvbm9kZXMuY3BwOiBS
ZW1vdmVkIE5vZGU6Om5vZGluc2lkZUFsbFBhcmVucywgR3JvdXBOb2RlLCBhbmQgUHJvcGVydHlO
YW1lTm9kZS4KKyAgICAgICAgKEtKUzo6UHJvcGVydHlMaXN0Tm9kZTo6ZXZhbHVhdGUpOiBDaGFu
Z2VkIGNvZGUgdG8gZ2V0IG5hbWUgZGlyZWN0bHkgaW5zdGVhZAorICAgICAgICBvZiBjb252ZXJ0
aW5nIGl0IGZyb20gYW4gSWRlbnRpZmllciB0byBhIGpzU3RyaW5nIHRoZW4gYmFjayB0byBhIFVT
dHJpbmcKKyAgICAgICAgdGhlbiBpbnRvIGFuIElkZW50aWZpZXIgYWdhaW4hCisKKyAgICAgICAg
KiBranMvbm9kZXMyc3RyaW5nLmNwcDogQ2hhbmdlZCBzcGVjaWFsLXRva2VuIGltcGxlbWVudGF0
aW9uIHRvIHVzZSBhIHNlcGFyYXRlCisgICAgICAgIGZ1bmN0aW9uIGZvciBlYWNoIG9mIEVuZGws
IEluZGVudCwgVW5pbmRlbnQsIGFuZCBEb3RFeHByIGluc3RlYWQgb2YgdXNpbmcgYQorICAgICAg
ICBzaW5nbGUgZnVuY3Rpb24gd2l0aCBhIHN3aXRjaC4gQWRkZWQgYSBwcmVjZWRlbmNlIHRoYXQg
eW91IGNhbiBzdHJlYW0gaW4sIHRvCisgICAgICAgIGNhdXNlIHRoZSBuZXh0IG5vZGUgc2VyaWFs
aXplZCB0byBhZGQgcGFyZW50aGVzZXMgYmFzZWQgb24gdGhhdCBwcmVjZWRlbmNlIHZhbHVlLgor
ICAgICAgICAoS0pTOjpvcGVyYXRvclN0cmluZyk6IE1vdmVkIHRvIHRoZSB0b3Agb2YgdGhlIGZp
bGUuCisgICAgICAgIChLSlM6OmVzY2FwZVN0cmluZ0ZvclByZXR0eVByaW50aW5nKTogTW92ZWQg
aGVyZSBmcm9tIGZ1bmN0aW9uLmNwcC4gUmVtb3ZlZCBvbGQKKyAgICAgICAgd29ya2Fyb3VuZCBm
b3Igc25wcmludGYsIHNpbmNlIFN0cmluZ0V4dHJhcy5oIHRha2VzIGNhcmUgb2YgdGhhdC4KKyAg
ICAgICAgKEtKUzo6b3BlcmF0b3I8PCk6IE1hZGUgdGhlIGNoYXIgYW5kIGNoYXIqIHZlcnNpb25z
IGZhc3RlciBieSB1c2luZyBVU3RyaW5nJ3MKKyAgICAgICAgY2hhcmFjdGVyIGFwcGVuZCBmdW5j
dGlvbnMgaW5zdGVhZCBvZiBjb25zdHJ1Y3RpbmcgYSBVU3RyaW5nLiBBZGRlZCB0aGUgbG9naWMK
KyAgICAgICAgdG8gdGhlIE5vZGUqIHZlcnNpb24gdG8gYWRkIHBhcmVudGhlc2VzIGlmIG5lZWRl
ZC4KKyAgICAgICAgKEtKUzo6Tm9kZTo6c3RyZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0
b3IpOiBBZGRlZCBoZWxwZXIgZnVuY3Rpb24uCisgICAgICAgIChLSlM6OkVsZW1lbnROb2RlOjpz
dHJlYW1Ubyk6IFVzZSBQcmVjQXNzaWdubWVudCBmb3IgdGhlIGVsZW1lbnRzLgorICAgICAgICAo
S0pTOjpCcmFja2V0QWNjZXNzb3JOb2RlOjpzdHJlYW1Ubyk6IFVzZSBQcmVjQ2FsbCBmb3IgdGhl
IGV4cHJlc3Npb24gYmVmb3JlCisgICAgICAgIHRoZSBicmFja2V0LgorICAgICAgICAoS0pTOjpE
b3RBY2Nlc3Nvck5vZGU6OnN0cmVhbVRvKTogVXNlIFByZWNDYWxsIGZvciB0aGUgZXhwcmVzc2lv
biBiZWZvcmUgdGhlIGRvdC4KKyAgICAgICAgKEtKUzo6QXJndW1lbnRMaXN0Tm9kZTo6c3RyZWFt
VG8pOiBVc2UgUHJlY0Fzc2lnbm1lbnQgZm9yIHRoZSBhcmd1bWVudHMuCisgICAgICAgIChLSlM6
Ok5ld0V4cHJOb2RlOjpzdHJlYW1Ubyk6IFVzZSBQcmVjTWVtYmVyIGZvciB0aGUgZXhwcmVzc2lv
bi4KKyAgICAgICAgKEtKUzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpzdHJlYW1Ubyk6IFVzZSBQ
cmVjQ2FsbC4KKyAgICAgICAgKEtKUzo6RnVuY3Rpb25DYWxsQnJhY2tldE5vZGU6OnN0cmVhbVRv
KTogRGl0dG8uCisgICAgICAgIChLSlM6OkZ1bmN0aW9uQ2FsbERvdE5vZGU6OnN0cmVhbVRvKTog
RGl0dG8uCisgICAgICAgIChLSlM6OlBvc3RmaXhCcmFja2V0Tm9kZTo6c3RyZWFtVG8pOiBEaXR0
by4KKyAgICAgICAgKEtKUzo6UG9zdGZpeERvdE5vZGU6OnN0cmVhbVRvKTogRGl0dG8uCisgICAg
ICAgIChLSlM6OlBvc3RmaXhFcnJvck5vZGU6OnN0cmVhbVRvKTogVXNlIFByZWNMZWZ0SGFuZFNp
ZGUuCisgICAgICAgIChLSlM6OkRlbGV0ZUJyYWNrZXROb2RlOjpzdHJlYW1Ubyk6IFVzZSBQcmVj
Q2FsbC4KKyAgICAgICAgKEtKUzo6RGVsZXRlRG90Tm9kZTo6c3RyZWFtVG8pOiBEaXR0by4KKyAg
ICAgICAgKEtKUzo6RGVsZXRlVmFsdWVOb2RlOjpzdHJlYW1Ubyk6IFVzZSBQcmVjVW5hcnkuCisg
ICAgICAgIChLSlM6OlZvaWROb2RlOjpzdHJlYW1Ubyk6IERpdHRvLgorICAgICAgICAoS0pTOjpU
eXBlT2ZWYWx1ZU5vZGU6OnN0cmVhbVRvKTogRGl0dG8uCisgICAgICAgIChLSlM6OlByZWZpeEJy
YWNrZXROb2RlOjpzdHJlYW1Ubyk6IFVzZSBQcmVjQ2FsbC4KKyAgICAgICAgKEtKUzo6UHJlZml4
RG90Tm9kZTo6c3RyZWFtVG8pOiBEaXR0by4KKyAgICAgICAgKEtKUzo6UHJlZml4RXJyb3JOb2Rl
OjpzdHJlYW1Ubyk6IFVzZSBQcmVjVW5hcnkuCisgICAgICAgIChLSlM6OlVuYXJ5UGx1c05vZGU6
OnN0cmVhbVRvKTogRGl0dG8uCisgICAgICAgIChLSlM6Ok5lZ2F0ZU5vZGU6OnN0cmVhbVRvKTog
RGl0dG8uCisgICAgICAgIChLSlM6OkJpdHdpc2VOb3ROb2RlOjpzdHJlYW1Ubyk6IERpdHRvLgor
ICAgICAgICAoS0pTOjpMb2dpY2FsTm90Tm9kZTo6c3RyZWFtVG8pOiBEaXR0by4KKyAgICAgICAg
KEtKUzo6TXVsdE5vZGU6OnN0cmVhbVRvKTogVXNlIHN0cmVhbUxlZnRBc3NvY2lhdGl2ZUJpbmFy
eU9wZXJhdG9yLgorICAgICAgICAoS0pTOjpEaXZOb2RlOjpzdHJlYW1Ubyk6IERpdHRvLgorICAg
ICAgICAoS0pTOjpNb2ROb2RlOjpzdHJlYW1Ubyk6IERpdHRvLgorICAgICAgICAoS0pTOjpBZGRO
b2RlOjpzdHJlYW1Ubyk6IERpdHRvLgorICAgICAgICAoS0pTOjpTdWJOb2RlOjpzdHJlYW1Ubyk6
IERpdHRvLgorICAgICAgICAoS0pTOjpMZWZ0U2hpZnROb2RlOjpzdHJlYW1Ubyk6IERpdHRvLgor
ICAgICAgICAoS0pTOjpSaWdodFNoaWZ0Tm9kZTo6c3RyZWFtVG8pOiBEaXR0by4KKyAgICAgICAg
KEtKUzo6VW5zaWduZWRSaWdodFNoaWZ0Tm9kZTo6c3RyZWFtVG8pOiBEaXR0by4KKyAgICAgICAg
KEtKUzo6TGVzc05vZGU6OnN0cmVhbVRvKTogRGl0dG8uCisgICAgICAgIChLSlM6OkdyZWF0ZXJO
b2RlOjpzdHJlYW1Ubyk6IERpdHRvLgorICAgICAgICAoS0pTOjpMZXNzRXFOb2RlOjpzdHJlYW1U
byk6IERpdHRvLgorICAgICAgICAoS0pTOjpHcmVhdGVyRXFOb2RlOjpzdHJlYW1Ubyk6IERpdHRv
LgorICAgICAgICAoS0pTOjpJbnN0YW5jZU9mTm9kZTo6c3RyZWFtVG8pOiBEaXR0by4KKyAgICAg
ICAgKEtKUzo6SW5Ob2RlOjpzdHJlYW1Ubyk6IERpdHRvLgorICAgICAgICAoS0pTOjpFcXVhbE5v
ZGU6OnN0cmVhbVRvKTogRGl0dG8uCisgICAgICAgIChLSlM6Ok5vdEVxdWFsTm9kZTo6c3RyZWFt
VG8pOiBEaXR0by4KKyAgICAgICAgKEtKUzo6U3RyaWN0RXF1YWxOb2RlOjpzdHJlYW1Ubyk6IERp
dHRvLgorICAgICAgICAoS0pTOjpOb3RTdHJpY3RFcXVhbE5vZGU6OnN0cmVhbVRvKTogRGl0dG8u
CisgICAgICAgIChLSlM6OkJpdEFuZE5vZGU6OnN0cmVhbVRvKTogRGl0dG8uCisgICAgICAgIChL
SlM6OkJpdFhPck5vZGU6OnN0cmVhbVRvKTogRGl0dG8uCisgICAgICAgIChLSlM6OkJpdE9yTm9k
ZTo6c3RyZWFtVG8pOiBEaXR0by4KKyAgICAgICAgKEtKUzo6TG9naWNhbEFuZE5vZGU6OnN0cmVh
bVRvKTogRGl0dG8uCisgICAgICAgIChLSlM6OkxvZ2ljYWxPck5vZGU6OnN0cmVhbVRvKTogRGl0
dG8uCisgICAgICAgIChLSlM6OkNvbmRpdGlvbmFsTm9kZTo6c3RyZWFtVG8pOiBEaXR0by4KKyAg
ICAgICAgKEtKUzo6QXNzaWduUmVzb2x2ZU5vZGU6OnN0cmVhbVRvKTogVXNlIFByZWNBc3NpZ25t
ZW50IGZvciB0aGUgcmlnaHQgc2lkZS4KKyAgICAgICAgKEtKUzo6QXNzaWduQnJhY2tldE5vZGU6
OnN0cmVhbVRvKTogVXNlIFByZWNDYWxsIGZvciB0aGUgZXhwcmVzc2lvbiBiZWZvcmUKKyAgICAg
ICAgdGhlIGJyYWNrZXQgYW5kIFByZWNBc3NpZ25tZW50IGZvciB0aGUgcmlnaHQgc2lkZS4KKyAg
ICAgICAgKEtKUzo6QXNzaWduRG90Tm9kZTo6c3RyZWFtVG8pOiBEaXR0by4KKyAgICAgICAgKEtK
Uzo6QXNzaWduRXJyb3JOb2RlOjpzdHJlYW1Ubyk6IFVzZSBQcmVjTGVmdEhhbmRTaWRlIGZvciB0
aGUgbGVmdCBzaWRlCisgICAgICAgIGFuZCBQcmVjQXNzaWdubWVudCBmb3IgdGhlIHJpZ2h0IHNp
ZGUuCisgICAgICAgIChLSlM6OkNvbW1hTm9kZTo6c3RyZWFtVG8pOiBVc2UgUHJlY0Fzc2lnbm1l
bnQgZm9yIGJvdGggZXhwcmVzc2lvbnMuCisgICAgICAgIChLSlM6OkFzc2lnbkV4cHJOb2RlOjpz
dHJlYW1Ubyk6IFVzZSBQcmVjQXNzaWdubWVudC4KKwogMjAwNy0xMC0yOCAgTWFjaWVqIFN0YWNo
b3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1YmJlciBzdGFtcGVkIGJ5IE1hcmsu
CkBAIC01Myw3ICsxNjIsNyBAQAogICAgICAgICAtIE1hZGUgYSBzcGVjaWFsIGNvbnN0cnVjdG9y
IGZvciBpdGVyYXRvcnMgdGhhdCBrbm93cyBpdCBwb2ludHMgdG8KICAgICAgICAgYSB2YWxpZCBm
aWxsZWQgY2VsbCBhbmQgc28gc2tpcHMgdXBkYXRpbmcgaXRzZWxmLgogCi0gICAgICAgIC0gUmVv
cmRlcmVkIG1lbW9yeSBhY2Nlc3NlcyBpbiB0aGUgdmFyaW91cyBsb29rdXAgZnVuY3Rpb25zIGZv
ciBiZXR0ZXIgY29kZWdldGlvbgorICAgICAgICAtIFJlb3JkZXJlZCBtZW1vcnkgYWNjZXNzZXMg
aW4gdGhlIHZhcmlvdXMgbG9va3VwIGZ1bmN0aW9ucyBmb3IgYmV0dGVyIGNvZGUgZ2VuZXJhdGlv
bgogICAgICAgICAKICAgICAgICAgLSBNYWRlIHNpbXBsZSB0cmFuc2xhdG9ycyBhdm9pZCBwYXNz
aW5nIGEgaGFzaCBjb2RlIGFyb3VuZAogICAgICAgICAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9mdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2Z1bmN0aW9u
LmNwcAkocmV2aXNpb24gMjcxODApCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC04ODksNDYgKzg4OSw0IEBAIEpTVmFsdWUqIEdsb2JhbEZ1bmNJ
bXA6OmNhbGxBc0Z1bmN0aW9uKEUKICAgcmV0dXJuIHJlczsKIH0KIAotVVN0cmluZyBlc2NhcGVT
dHJpbmdGb3JQcmV0dHlQcmludGluZyhjb25zdCBVU3RyaW5nJiBzKQotewotICAgIFVTdHJpbmcg
ZXNjYXBlZFN0cmluZzsKLSAgICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHMuc2l6ZSgpOyBp
KyspIHsKLSAgICAgICAgdW5zaWduZWQgc2hvcnQgYyA9IHMuZGF0YSgpW2ldLnVuaWNvZGUoKTsK
LSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAoYykgewotICAgICAgICBjYXNlICdcIic6Ci0gICAg
ICAgICAgICBlc2NhcGVkU3RyaW5nICs9ICJcXFwiIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlICdcbic6Ci0gICAgICAgICAgICBlc2NhcGVkU3RyaW5nICs9ICJcXG4iOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1xyJzoKLSAgICAgICAgICAgIGVzY2FwZWRT
dHJpbmcgKz0gIlxcciI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAnXHQnOgot
ICAgICAgICAgICAgZXNjYXBlZFN0cmluZyArPSAiXFx0IjsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlICdcXCc6Ci0gICAgICAgICAgICBlc2NhcGVkU3RyaW5nICs9ICJcXFxcIjsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgaWYgKGMg
PCAxMjggJiYgaXNQcmludGFibGVDaGFyKGMpKQotICAgICAgICAgICAgICAgIGVzY2FwZWRTdHJp
bmcuYXBwZW5kKGMpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgY2hhciBo
ZXhWYWx1ZVs3XTsKLSAgICAgICAgICAgIAotI2lmIFBMQVRGT1JNKFdJTl9PUykKLSAgICAgICAg
ICAgICAgICBfc25wcmludGYoaGV4VmFsdWUsIDcsICJcXHUlMDR4IiwgYyk7Ci0jZWxzZQotICAg
ICAgICAgICAgICAgIHNucHJpbnRmKGhleFZhbHVlLCA3LCAiXFx1JTA0eCIsIGMpOwotI2VuZGlm
Ci0gICAgICAgICAgICAgICAgZXNjYXBlZFN0cmluZyArPSBoZXhWYWx1ZTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gZXNjYXBlZFN0cmluZzsgICAg
Ci19Ci0KIH0gLy8gbmFtZXNwYWNlCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uaAkocmV2aXNpb24g
MjcxODApCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpA
QCAtMSw4ICsxLDcgQEAKIC8vIC0qLSBjLWJhc2ljLW9mZnNldDogMiAtKi0KIC8qCi0gKiAgVGhp
cyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKICAqICBDb3B5cmlnaHQgKEMpIDE5
OTktMjAwMCBIYXJyaSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQotICogIENvcHlyaWdodCAoQykg
MjAwMywgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgorICogIENvcHlyaWdodCAoQykgMjAwMywg
MjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjE2LDggKzIxNSw2IEBAIG5hbWVzcGFjZSBLSlMgewogICBzdGF0aWMgY29u
c3QgZG91YmxlIG1hbnRpc3NhT3ZlcmZsb3dMb3dlckJvdW5kID0gOTAwNzE5OTI1NDc0MDk5Mi4w
OwogICBkb3VibGUgcGFyc2VJbnRPdmVyZmxvdyhjb25zdCBjaGFyKiBzLCBpbnQgbGVuZ3RoLCBp
bnQgcmFkaXgpOwogCi1VU3RyaW5nIGVzY2FwZVN0cmluZ0ZvclByZXR0eVByaW50aW5nKGNvbnN0
IFVTdHJpbmcmIHMpOwotCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2tqcy9ncmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL2dy
YW1tYXIueQkocmV2aXNpb24gMjcxODApCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvZ3JhbW1hci55
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNiBAQAogJXsKIAogLyoKLSAqICBUaGlzIGZpbGUg
aXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcwogICogIENvcHlyaWdodCAoQykgMTk5OS0yMDAw
IEhhcnJpIFBvcnRlbiAocG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC02MCw3ICs1OSw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBLSlM7CiBzdGF0aWMgTm9kZSogbWFrZUFzc2lnbk5vZGUoTm9kZSog
bG9jLCBPcGVyYXRvciwgTm9kZSogZXhwcik7CiBzdGF0aWMgTm9kZSogbWFrZVByZWZpeE5vZGUo
Tm9kZSogZXhwciwgT3BlcmF0b3IpOwogc3RhdGljIE5vZGUqIG1ha2VQb3N0Zml4Tm9kZShOb2Rl
KiBleHByLCBPcGVyYXRvcik7Ci1zdGF0aWMgYm9vbCBtYWtlR2V0dGVyT3JTZXR0ZXJQcm9wZXJ0
eU5vZGUoUHJvcGVydHlOb2RlKiYgcmVzdWx0LCBJZGVudGlmaWVyICZnZXRPclNldCwgSWRlbnRp
ZmllciYgbmFtZSwgUGFyYW1ldGVyTm9kZSAqcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlICpib2R5
KTsKK3N0YXRpYyBQcm9wZXJ0eU5vZGUqIG1ha2VHZXR0ZXJPclNldHRlclByb3BlcnR5Tm9kZShj
b25zdCBJZGVudGlmaWVyICZnZXRPclNldCwgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgUGFyYW1l
dGVyTm9kZSosIEZ1bmN0aW9uQm9keU5vZGUqKTsKIHN0YXRpYyBOb2RlICptYWtlRnVuY3Rpb25D
YWxsTm9kZShOb2RlICpmdW5jLCBBcmd1bWVudHNOb2RlICphcmdzKTsKIHN0YXRpYyBOb2RlICpt
YWtlVHlwZU9mTm9kZShOb2RlICpleHByKTsKIHN0YXRpYyBOb2RlICptYWtlRGVsZXRlTm9kZShO
b2RlICpleHByKTsKQEAgLTEwOCw3ICsxMDcsNiBAQCBzdGF0aWMgTm9kZSogbWFrZU51bWJlck5v
ZGUoZG91YmxlKTsKICAgT3BlcmF0b3IgICAgICAgICAgICBvcDsKICAgUHJvcGVydHlMaXN0Tm9k
ZSAgICpwbGlzdDsKICAgUHJvcGVydHlOb2RlICAgICAgICpwbm9kZTsKLSAgUHJvcGVydHlOYW1l
Tm9kZSAgICpwbmFtZTsKIH0KIAogJXN0YXJ0IFByb2dyYW0KQEAgLTIwMiw3ICsyMDAsNiBAQCBz
dGF0aWMgTm9kZSogbWFrZU51bWJlck5vZGUoZG91YmxlKTsKICV0eXBlIDxjbGlzdD4gQ2FzZUNs
YXVzZXMgIENhc2VDbGF1c2VzT3B0CiAldHlwZSA8aXZhbD4gIEVsaXNpb24gRWxpc2lvbk9wdAog
JXR5cGUgPGVsbT4gICBFbGVtZW50TGlzdAotJXR5cGUgPHBuYW1lPiBQcm9wZXJ0eU5hbWUKICV0
eXBlIDxwbm9kZT4gUHJvcGVydHkKICV0eXBlIDxwbGlzdD4gUHJvcGVydHlMaXN0CiAlJQpAQCAt
MjI1LDE3ICsyMjIsMTMgQEAgTGl0ZXJhbDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiA7CiAKLVByb3BlcnR5TmFtZToKLSAgICBJREVOVCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB7ICQkID0gbmV3IFByb3BlcnR5TmFtZU5vZGUoKiQxKTsgfQotICB8
IFNUUklORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBuZXcgUHJvcGVydHlO
YW1lTm9kZShJZGVudGlmaWVyKCokMSkpOyB9Ci0gIHwgTlVNQkVSICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeyAkJCA9IG5ldyBQcm9wZXJ0eU5hbWVOb2RlKCQxKTsgfQotOwotCiBQcm9w
ZXJ0eToKLSAgICBQcm9wZXJ0eU5hbWUgJzonIEFzc2lnbm1lbnRFeHByICAgICB7ICQkID0gbmV3
IFByb3BlcnR5Tm9kZSgkMSwgJDMsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOyB9Ci0gIHwgSURF
TlQgSURFTlQgJygnICcpJyBGdW5jdGlvbkJvZHkgICAgeyBpZiAoIW1ha2VHZXR0ZXJPclNldHRl
clByb3BlcnR5Tm9kZSgkJCwgKiQxLCAqJDIsIDAsICQ1KSkgWVlBQk9SVDsgfQorICAgIElERU5U
ICc6JyBBc3NpZ25tZW50RXhwciAgICAgICAgICAgIHsgJCQgPSBuZXcgUHJvcGVydHlOb2RlKCok
MSwgJDMsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOyB9CisgIHwgU1RSSU5HICc6JyBBc3NpZ25t
ZW50RXhwciAgICAgICAgICAgeyAkJCA9IG5ldyBQcm9wZXJ0eU5vZGUoSWRlbnRpZmllcigqJDEp
LCAkMywgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7IH0KKyAgfCBOVU1CRVIgJzonIEFzc2lnbm1l
bnRFeHByICAgICAgICAgICB7ICQkID0gbmV3IFByb3BlcnR5Tm9kZShJZGVudGlmaWVyKFVTdHJp
bmc6OmZyb20oJDEpKSwgJDMsIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOyB9CisgIHwgSURFTlQg
SURFTlQgJygnICcpJyBGdW5jdGlvbkJvZHkgICAgeyAkJCA9IG1ha2VHZXR0ZXJPclNldHRlclBy
b3BlcnR5Tm9kZSgqJDEsICokMiwgMCwgJDUpOyBpZiAoISQkKSBZWUFCT1JUOyB9CiAgIHwgSURF
TlQgSURFTlQgJygnIEZvcm1hbFBhcmFtZXRlckxpc3QgJyknIEZ1bmN0aW9uQm9keQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgaWYgKCFtYWtlR2V0dGVyT3JTZXR0
ZXJQcm9wZXJ0eU5vZGUoJCQsICokMSwgKiQyLCAkNCwgJDYpKSBZWUFCT1JUOyB9CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAkJCA9IG1ha2VHZXR0ZXJPclNldHRl
clByb3BlcnR5Tm9kZSgqJDEsICokMiwgJDQsICQ2KTsgaWYgKCEkJCkgWVlBQk9SVDsgfQogOwog
CiBQcm9wZXJ0eUxpc3Q6CkBAIC0yNTYsOCArMjQ5LDcgQEAgUHJpbWFyeUV4cHJOb0JyYWNlOgog
ICB8IExpdGVyYWwKICAgfCBBcnJheUxpdGVyYWwKICAgfCBJREVOVCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7ICQkID0gbmV3IFJlc29sdmVOb2RlKCokMSk7IH0KLSAgfCAnKCcgRXhw
ciAnKScgICAgICAgICAgICAgICAgICAgICAgICB7ICQkID0gKCQyLT5pc1Jlc29sdmVOb2RlKCkg
fHwgJDItPmlzR3JvdXBOb2RlKCkpID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJDIgOiBuZXcgR3JvdXBOb2RlKCQyKTsgfQorICB8ICcoJyBFeHByICcpJyAg
ICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSAkMjsgfQogOwogCiBBcnJheUxpdGVyYWw6CkBA
IC03MzQsNyArNzI2LDcgQEAgSXRlcmF0aW9uU3RhdGVtZW50OgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHsgJCQgPSBuZXcgRm9yTm9kZSgkNCwgJDYsICQ4LCAkMTAp
OyBEQkcoJCQsIEAxLCBAOSk7IH0KICAgfCBGT1IgJygnIExlZnRIYW5kU2lkZUV4cHIgSU5UT0tF
TiBFeHByICcpJyBTdGF0ZW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUg
Km4gPSAkMy0+bm9kZUluc2lkZUFsbFBhcmVucygpOworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBOb2RlICpuID0gJDM7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghbi0+aXNMb2NhdGlvbigpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWVlBQk9SVDsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCQgPSBuZXcgRm9ySW5Ob2RlKG4sICQ1
LCAkNyk7CkBAIC04NzUsMTM1ICs4NjcsMTEyIEBAIFNvdXJjZUVsZW1lbnQ6CiAlJQogCiBzdGF0
aWMgTm9kZSogbWFrZUFzc2lnbk5vZGUoTm9kZSogbG9jLCBPcGVyYXRvciBvcCwgTm9kZSogZXhw
cikKLXsgCi0gICAgTm9kZSAqbiA9IGxvYy0+bm9kZUluc2lkZUFsbFBhcmVucygpOwotCi0gICAg
aWYgKCFuLT5pc0xvY2F0aW9uKCkpCit7CisgICAgaWYgKCFsb2MtPmlzTG9jYXRpb24oKSkKICAg
ICAgICAgcmV0dXJuIG5ldyBBc3NpZ25FcnJvck5vZGUobG9jLCBvcCwgZXhwcik7CiAKLSAgICBp
ZiAobi0+aXNSZXNvbHZlTm9kZSgpKSB7Ci0gICAgICAgIFJlc29sdmVOb2RlICpyZXNvbHZlID0g
c3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUgKj4obik7CisgICAgaWYgKGxvYy0+aXNSZXNvbHZlTm9k
ZSgpKSB7CisgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2
ZU5vZGUqPihsb2MpOwogICAgICAgICByZXR1cm4gbmV3IEFzc2lnblJlc29sdmVOb2RlKHJlc29s
dmUtPmlkZW50aWZpZXIoKSwgb3AsIGV4cHIpOwogICAgIH0KLSAgICBpZiAobi0+aXNCcmFja2V0
QWNjZXNzb3JOb2RlKCkpIHsKLSAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSAqYnJhY2tldCA9
IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUgKj4obik7CisgICAgaWYgKGxvYy0+aXNC
cmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKKyAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSogYnJh
Y2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUqPihsb2MpOwogICAgICAgICBy
ZXR1cm4gbmV3IEFzc2lnbkJyYWNrZXROb2RlKGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vi
c2NyaXB0KCksIG9wLCBleHByKTsKICAgICB9Ci0gICAgQVNTRVJUKG4tPmlzRG90QWNjZXNzb3JO
b2RlKCkpOwotICAgIERvdEFjY2Vzc29yTm9kZSAqZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNz
b3JOb2RlICo+KG4pOworICAgIEFTU0VSVChsb2MtPmlzRG90QWNjZXNzb3JOb2RlKCkpOworICAg
IERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlKj4obG9j
KTsKICAgICByZXR1cm4gbmV3IEFzc2lnbkRvdE5vZGUoZG90LT5iYXNlKCksIGRvdC0+aWRlbnRp
ZmllcigpLCBvcCwgZXhwcik7CiB9CiAKLXN0YXRpYyBOb2RlKiBtYWtlUHJlZml4Tm9kZShOb2Rl
ICpleHByLCBPcGVyYXRvciBvcCkKK3N0YXRpYyBOb2RlKiBtYWtlUHJlZml4Tm9kZShOb2RlKiBl
eHByLCBPcGVyYXRvciBvcCkKIHsgCi0gICAgTm9kZSAqbiA9IGV4cHItPm5vZGVJbnNpZGVBbGxQ
YXJlbnMoKTsKLQotICAgIGlmICghbi0+aXNMb2NhdGlvbigpKQorICAgIGlmICghZXhwci0+aXNM
b2NhdGlvbigpKQogICAgICAgICByZXR1cm4gbmV3IFByZWZpeEVycm9yTm9kZShleHByLCBvcCk7
CiAgICAgCi0gICAgaWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNvbHZlTm9k
ZSAqcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOworICAgIGlmIChleHBy
LT5pc1Jlc29sdmVOb2RlKCkpIHsKKyAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0
aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwogICAgICAgICByZXR1cm4gbmV3IFByZWZpeFJl
c29sdmVOb2RlKHJlc29sdmUtPmlkZW50aWZpZXIoKSwgb3ApOwogICAgIH0KLSAgICBpZiAobi0+
aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkpIHsKLSAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSAq
YnJhY2tldCA9IHN0YXRpY19jYXN0PEJyYWNrZXRBY2Nlc3Nvck5vZGUgKj4obik7CisgICAgaWYg
KGV4cHItPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7CisgICAgICAgIEJyYWNrZXRBY2Nlc3Nv
ck5vZGUqIGJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlKj4oZXhwcik7
CiAgICAgICAgIHJldHVybiBuZXcgUHJlZml4QnJhY2tldE5vZGUoYnJhY2tldC0+YmFzZSgpLCBi
cmFja2V0LT5zdWJzY3JpcHQoKSwgb3ApOwogICAgIH0KLSAgICBBU1NFUlQobi0+aXNEb3RBY2Nl
c3Nvck5vZGUoKSk7Ci0gICAgRG90QWNjZXNzb3JOb2RlICpkb3QgPSBzdGF0aWNfY2FzdDxEb3RB
Y2Nlc3Nvck5vZGUgKj4obik7CisgICAgQVNTRVJUKGV4cHItPmlzRG90QWNjZXNzb3JOb2RlKCkp
OworICAgIERvdEFjY2Vzc29yTm9kZSogZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2Rl
Kj4oZXhwcik7CiAgICAgcmV0dXJuIG5ldyBQcmVmaXhEb3ROb2RlKGRvdC0+YmFzZSgpLCBkb3Qt
PmlkZW50aWZpZXIoKSwgb3ApOwogfQogCiBzdGF0aWMgTm9kZSogbWFrZVBvc3RmaXhOb2RlKE5v
ZGUqIGV4cHIsIE9wZXJhdG9yIG9wKQogeyAKLSAgICBOb2RlICpuID0gZXhwci0+bm9kZUluc2lk
ZUFsbFBhcmVucygpOwotCi0gICAgaWYgKCFuLT5pc0xvY2F0aW9uKCkpCisgICAgaWYgKCFleHBy
LT5pc0xvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBuZXcgUG9zdGZpeEVycm9yTm9kZShleHBy
LCBvcCk7CiAgICAgCi0gICAgaWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNv
bHZlTm9kZSAqcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOworICAgIGlm
IChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKKyAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUg
PSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwogICAgICAgICByZXR1cm4gbmV3IFBv
c3RmaXhSZXNvbHZlTm9kZShyZXNvbHZlLT5pZGVudGlmaWVyKCksIG9wKTsKICAgICB9Ci0gICAg
aWYgKG4tPmlzQnJhY2tldEFjY2Vzc29yTm9kZSgpKSB7Ci0gICAgICAgIEJyYWNrZXRBY2Nlc3Nv
ck5vZGUgKmJyYWNrZXQgPSBzdGF0aWNfY2FzdDxCcmFja2V0QWNjZXNzb3JOb2RlICo+KG4pOwor
ICAgIGlmIChleHByLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgeworICAgICAgICBCcmFja2V0
QWNjZXNzb3JOb2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+
KGV4cHIpOwogICAgICAgICByZXR1cm4gbmV3IFBvc3RmaXhCcmFja2V0Tm9kZShicmFja2V0LT5i
YXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBvcCk7CiAgICAgfQotICAgIEFTU0VSVChuLT5p
c0RvdEFjY2Vzc29yTm9kZSgpKTsKLSAgICBEb3RBY2Nlc3Nvck5vZGUgKmRvdCA9IHN0YXRpY19j
YXN0PERvdEFjY2Vzc29yTm9kZSAqPihuKTsKKyAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nlc3Nv
ck5vZGUoKSk7CisgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nl
c3Nvck5vZGUqPihleHByKTsKICAgICByZXR1cm4gbmV3IFBvc3RmaXhEb3ROb2RlKGRvdC0+YmFz
ZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgb3ApOwogfQogCi1zdGF0aWMgTm9kZSAqbWFrZUZ1bmN0
aW9uQ2FsbE5vZGUoTm9kZSAqZnVuYywgQXJndW1lbnRzTm9kZSAqYXJncykKK3N0YXRpYyBOb2Rl
KiBtYWtlRnVuY3Rpb25DYWxsTm9kZShOb2RlKiBmdW5jLCBBcmd1bWVudHNOb2RlKiBhcmdzKQog
ewotICAgIE5vZGUgKm4gPSBmdW5jLT5ub2RlSW5zaWRlQWxsUGFyZW5zKCk7Ci0gICAgCi0gICAg
aWYgKCFuLT5pc0xvY2F0aW9uKCkpCisgICAgaWYgKCFmdW5jLT5pc0xvY2F0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBuZXcgRnVuY3Rpb25DYWxsVmFsdWVOb2RlKGZ1bmMsIGFyZ3MpOwotICAgIGVs
c2UgaWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNvbHZlTm9kZSAqcmVzb2x2
ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOworICAgIGlmIChmdW5jLT5pc1Jlc29s
dmVOb2RlKCkpIHsKKyAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUgPSBzdGF0aWNfY2FzdDxS
ZXNvbHZlTm9kZSo+KGZ1bmMpOwogICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQ2FsbFJlc29s
dmVOb2RlKHJlc29sdmUtPmlkZW50aWZpZXIoKSwgYXJncyk7Ci0gICAgfSBlbHNlIGlmIChuLT5p
c0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgewotICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlICpi
cmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSAqPihuKTsKLSAgICAgICAg
aWYgKG4gIT0gZnVuYykKLSAgICAgICAgICAgIHJldHVybiBuZXcgRnVuY3Rpb25DYWxsUGFyZW5C
cmFja2V0Tm9kZShicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBhcmdzKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkNhbGxCcmFja2V0
Tm9kZShicmFja2V0LT5iYXNlKCksIGJyYWNrZXQtPnN1YnNjcmlwdCgpLCBhcmdzKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBBU1NFUlQobi0+aXNEb3RBY2Nlc3Nvck5vZGUoKSk7Ci0gICAgICAg
IERvdEFjY2Vzc29yTm9kZSAqZG90ID0gc3RhdGljX2Nhc3Q8RG90QWNjZXNzb3JOb2RlICo+KG4p
OwotICAgICAgICBpZiAobiAhPSBmdW5jKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlv
bkNhbGxQYXJlbkRvdE5vZGUoZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIG5ldyBGdW5jdGlvbkNhbGxEb3ROb2Rl
KGRvdC0+YmFzZSgpLCBkb3QtPmlkZW50aWZpZXIoKSwgYXJncyk7CiAgICAgfQorICAgIGlmIChm
dW5jLT5pc0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSkgeworICAgICAgICBCcmFja2V0QWNjZXNzb3JO
b2RlKiBicmFja2V0ID0gc3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGZ1bmMpOwor
ICAgICAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlKGJyYWNrZXQtPmJhc2Uo
KSwgYnJhY2tldC0+c3Vic2NyaXB0KCksIGFyZ3MpOworICAgIH0KKyAgICBBU1NFUlQoZnVuYy0+
aXNEb3RBY2Nlc3Nvck5vZGUoKSk7CisgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNf
Y2FzdDxEb3RBY2Nlc3Nvck5vZGUqPihmdW5jKTsKKyAgICByZXR1cm4gbmV3IEZ1bmN0aW9uQ2Fs
bERvdE5vZGUoZG90LT5iYXNlKCksIGRvdC0+aWRlbnRpZmllcigpLCBhcmdzKTsKIH0KIAotc3Rh
dGljIE5vZGUgKm1ha2VUeXBlT2ZOb2RlKE5vZGUgKmV4cHIpCitzdGF0aWMgTm9kZSogbWFrZVR5
cGVPZk5vZGUoTm9kZSogZXhwcikKIHsKLSAgICBOb2RlICpuID0gZXhwci0+bm9kZUluc2lkZUFs
bFBhcmVucygpOwotCi0gICAgaWYgKG4tPmlzUmVzb2x2ZU5vZGUoKSkgewotICAgICAgICBSZXNv
bHZlTm9kZSAqcmVzb2x2ZSA9IHN0YXRpY19jYXN0PFJlc29sdmVOb2RlICo+KG4pOworICAgIGlm
IChleHByLT5pc1Jlc29sdmVOb2RlKCkpIHsKKyAgICAgICAgUmVzb2x2ZU5vZGUqIHJlc29sdmUg
PSBzdGF0aWNfY2FzdDxSZXNvbHZlTm9kZSo+KGV4cHIpOwogICAgICAgICByZXR1cm4gbmV3IFR5
cGVPZlJlc29sdmVOb2RlKHJlc29sdmUtPmlkZW50aWZpZXIoKSk7Ci0gICAgfSBlbHNlCi0gICAg
ICAgIHJldHVybiBuZXcgVHlwZU9mVmFsdWVOb2RlKGV4cHIpOworICAgIH0KKyAgICByZXR1cm4g
bmV3IFR5cGVPZlZhbHVlTm9kZShleHByKTsKIH0KIAotc3RhdGljIE5vZGUgKm1ha2VEZWxldGVO
b2RlKE5vZGUgKmV4cHIpCitzdGF0aWMgTm9kZSogbWFrZURlbGV0ZU5vZGUoTm9kZSogZXhwcikK
IHsKLSAgICBOb2RlICpuID0gZXhwci0+bm9kZUluc2lkZUFsbFBhcmVucygpOwotICAgIAotICAg
IGlmICghbi0+aXNMb2NhdGlvbigpKQorICAgIGlmICghZXhwci0+aXNMb2NhdGlvbigpKQogICAg
ICAgICByZXR1cm4gbmV3IERlbGV0ZVZhbHVlTm9kZShleHByKTsKLSAgICBlbHNlIGlmIChuLT5p
c1Jlc29sdmVOb2RlKCkpIHsKLSAgICAgICAgUmVzb2x2ZU5vZGUgKnJlc29sdmUgPSBzdGF0aWNf
Y2FzdDxSZXNvbHZlTm9kZSAqPihuKTsKKyAgICBpZiAoZXhwci0+aXNSZXNvbHZlTm9kZSgpKSB7
CisgICAgICAgIFJlc29sdmVOb2RlKiByZXNvbHZlID0gc3RhdGljX2Nhc3Q8UmVzb2x2ZU5vZGUq
PihleHByKTsKICAgICAgICAgcmV0dXJuIG5ldyBEZWxldGVSZXNvbHZlTm9kZShyZXNvbHZlLT5p
ZGVudGlmaWVyKCkpOwotICAgIH0gZWxzZSBpZiAobi0+aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkp
IHsKLSAgICAgICAgQnJhY2tldEFjY2Vzc29yTm9kZSAqYnJhY2tldCA9IHN0YXRpY19jYXN0PEJy
YWNrZXRBY2Nlc3Nvck5vZGUgKj4obik7CisgICAgfQorICAgIGlmIChleHByLT5pc0JyYWNrZXRB
Y2Nlc3Nvck5vZGUoKSkgeworICAgICAgICBCcmFja2V0QWNjZXNzb3JOb2RlKiBicmFja2V0ID0g
c3RhdGljX2Nhc3Q8QnJhY2tldEFjY2Vzc29yTm9kZSo+KGV4cHIpOwogICAgICAgICByZXR1cm4g
bmV3IERlbGV0ZUJyYWNrZXROb2RlKGJyYWNrZXQtPmJhc2UoKSwgYnJhY2tldC0+c3Vic2NyaXB0
KCkpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIEFTU0VSVChuLT5pc0RvdEFjY2Vzc29yTm9kZSgp
KTsKLSAgICAgICAgRG90QWNjZXNzb3JOb2RlICpkb3QgPSBzdGF0aWNfY2FzdDxEb3RBY2Nlc3Nv
ck5vZGUgKj4obik7Ci0gICAgICAgIHJldHVybiBuZXcgRGVsZXRlRG90Tm9kZShkb3QtPmJhc2Uo
KSwgZG90LT5pZGVudGlmaWVyKCkpOwogICAgIH0KKyAgICBBU1NFUlQoZXhwci0+aXNEb3RBY2Nl
c3Nvck5vZGUoKSk7CisgICAgRG90QWNjZXNzb3JOb2RlKiBkb3QgPSBzdGF0aWNfY2FzdDxEb3RB
Y2Nlc3Nvck5vZGUqPihleHByKTsKKyAgICByZXR1cm4gbmV3IERlbGV0ZURvdE5vZGUoZG90LT5i
YXNlKCksIGRvdC0+aWRlbnRpZmllcigpKTsKIH0KIAotc3RhdGljIGJvb2wgbWFrZUdldHRlck9y
U2V0dGVyUHJvcGVydHlOb2RlKFByb3BlcnR5Tm9kZSomIHJlc3VsdCwgSWRlbnRpZmllciYgZ2V0
T3JTZXQsIElkZW50aWZpZXImIG5hbWUsIFBhcmFtZXRlck5vZGUgKnBhcmFtcywgRnVuY3Rpb25C
b2R5Tm9kZSAqYm9keSkKK3N0YXRpYyBQcm9wZXJ0eU5vZGUqIG1ha2VHZXR0ZXJPclNldHRlclBy
b3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiBnZXRPclNldCwgY29uc3QgSWRlbnRpZmllciYg
bmFtZSwgUGFyYW1ldGVyTm9kZSogcGFyYW1zLCBGdW5jdGlvbkJvZHlOb2RlKiBib2R5KQogewog
ICAgIFByb3BlcnR5Tm9kZTo6VHlwZSB0eXBlOwotICAgIAogICAgIGlmIChnZXRPclNldCA9PSAi
Z2V0IikKICAgICAgICAgdHlwZSA9IFByb3BlcnR5Tm9kZTo6R2V0dGVyOwogICAgIGVsc2UgaWYg
KGdldE9yU2V0ID09ICJzZXQiKQogICAgICAgICB0eXBlID0gUHJvcGVydHlOb2RlOjpTZXR0ZXI7
CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgcmVzdWx0ID0gbmV3
IFByb3BlcnR5Tm9kZShuZXcgUHJvcGVydHlOYW1lTm9kZShuYW1lKSwgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBuZXcgRnVuY0V4cHJOb2RlKENvbW1vbklkZW50aWZpZXJzOjpzaGFy
ZWQoKS0+bnVsbElkZW50aWZpZXIsIGJvZHksIHBhcmFtcyksIHR5cGUpOwotCi0gICAgcmV0dXJu
IHRydWU7CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBuZXcgUHJvcGVydHlOb2RlKG5h
bWUsIG5ldyBGdW5jRXhwck5vZGUoQ29tbW9uSWRlbnRpZmllcnM6OnNoYXJlZCgpLT5udWxsSWRl
bnRpZmllciwgYm9keSwgcGFyYW1zKSwgdHlwZSk7CiB9CiAKIHN0YXRpYyBOb2RlKiBtYWtlTmVn
YXRlTm9kZShOb2RlICpuKQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAJKHJl
dmlzaW9uIDI3MTgwKQorKysgSmF2YVNjcmlwdENvcmUva2pzL25vZGVzMnN0cmluZy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw0IEBACiAvKgotICogIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBLREUgbGlicmFyaWVzCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAyIEhhcnJpIFBvcnRlbiAo
cG9ydGVuQGtkZS5vcmcpCiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCkBAIC0yMiw3ODYgKzIx
LDg0OSBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAibm9kZXMuaCIKLSNpbmNs
dWRlICJmdW5jdGlvbi5oIgorCisjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorI2luY2x1
ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdURjsKK3VzaW5n
IG5hbWVzcGFjZSBVbmljb2RlOwogCiBuYW1lc3BhY2UgS0pTIHsKLSAgLyoqCi0gICAqIEEgc2lt
cGxlIHRleHQgc3RyZWFtaW5nIGNsYXNzIHRoYXQgaGVscHMgd2l0aCBjb2RlIGluZGVudGF0aW9u
LgotICAgKi8KLSAgY2xhc3MgU291cmNlU3RyZWFtIHsKLSAgcHVibGljOgotICAgIGVudW0gRm9y
bWF0IHsKLSAgICAgIEVuZGwsIEluZGVudCwgVW5pbmRlbnQsIERvdEV4cHIKLSAgICB9OwotICAg
IFNvdXJjZVN0cmVhbSgpIDogbV9ncm91cElmTnVtYmVyKGZhbHNlKSB7fQotICAgIFVTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdCB7IHJldHVybiBzdHI7IH0KLSAgICBTb3VyY2VTdHJlYW0mIG9wZXJh
dG9yPDwoY29uc3QgSWRlbnRpZmllciAmKTsKLSAgICBTb3VyY2VTdHJlYW0mIG9wZXJhdG9yPDwo
Y29uc3QgVVN0cmluZyAmKTsKLSAgICBTb3VyY2VTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgY2hh
ciAqKTsKKworLy8gQSBzaW1wbGUgdGV4dCBzdHJlYW1pbmcgY2xhc3MgdGhhdCBoZWxwcyB3aXRo
IGNvZGUgaW5kZW50YXRpb24uCisKK2VudW0gRW5kbFR5cGUgeyBFbmRsIH07CitlbnVtIEluZGVu
dFR5cGUgeyBJbmRlbnQgfTsKK2VudW0gVW5pbmRlbnRUeXBlIHsgVW5pbmRlbnQgfTsKK2VudW0g
RG90RXhwclR5cGUgeyBEb3RFeHByIH07CisKK2NsYXNzIFNvdXJjZVN0cmVhbSB7CitwdWJsaWM6
CisgICAgU291cmNlU3RyZWFtKCkgOiBtX251bWJlck5lZWRzUGFyZW5zKGZhbHNlKSwgbV9wcmVj
ZWRlbmNlKFByZWNFeHByZXNzaW9uKSB7IH0KKyAgICBVU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmc7IH0KKyAgICBTb3VyY2VTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3Qg
SWRlbnRpZmllciYpOworICAgIFNvdXJjZVN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBVU3RyaW5n
Jik7CisgICAgU291cmNlU3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IGNoYXIqKTsKICAgICBTb3Vy
Y2VTdHJlYW0mIG9wZXJhdG9yPDwoZG91YmxlKTsKICAgICBTb3VyY2VTdHJlYW0mIG9wZXJhdG9y
PDwoY2hhcik7Ci0gICAgU291cmNlU3RyZWFtJiBvcGVyYXRvcjw8KEZvcm1hdCBmKTsKLSAgICBT
b3VyY2VTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgTm9kZSAqKTsKLSAgICB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgVD4gU291cmNlU3RyZWFtJiBvcGVyYXRvcjw8KFJlZlB0cjxUPiBuKSB7IHJldHVybiB0
aGlzLT5vcGVyYXRvcjw8KG4uZ2V0KCkpOyB9Ci0KLSAgcHJpdmF0ZToKLSAgICBVU3RyaW5nIHN0
cjsgLyogVE9ETzogYnVmZmVyICovCi0gICAgVVN0cmluZyBpbmQ7Ci0gICAgYm9vbCBtX2dyb3Vw
SWZOdW1iZXI7Ci0gIH07CisgICAgU291cmNlU3RyZWFtJiBvcGVyYXRvcjw8KEVuZGxUeXBlKTsK
KyAgICBTb3VyY2VTdHJlYW0mIG9wZXJhdG9yPDwoSW5kZW50VHlwZSk7CisgICAgU291cmNlU3Ry
ZWFtJiBvcGVyYXRvcjw8KFVuaW5kZW50VHlwZSk7CisgICAgU291cmNlU3RyZWFtJiBvcGVyYXRv
cjw8KERvdEV4cHJUeXBlKTsKKyAgICBTb3VyY2VTdHJlYW0mIG9wZXJhdG9yPDwoUHJlY2VkZW5j
ZSk7CisgICAgU291cmNlU3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IE5vZGUqKTsKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgVD4gU291cmNlU3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFJlZlB0cjxU
PiYgbikgeyByZXR1cm4gKnRoaXMgPDwgbi5nZXQoKTsgfQorCitwcml2YXRlOgorICAgIFVTdHJp
bmcgbV9zdHJpbmc7CisgICAgVVN0cmluZyBtX3NwYWNlc0ZvckluZGVudGF0aW9uOworICAgIGJv
b2wgbV9udW1iZXJOZWVkc1BhcmVuczsKKyAgICBQcmVjZWRlbmNlIG1fcHJlY2VkZW5jZTsKK307
CisKKy8vIC0tLS0tLS0tCisKK3N0YXRpYyBVU3RyaW5nIGVzY2FwZVN0cmluZ0ZvclByZXR0eVBy
aW50aW5nKGNvbnN0IFVTdHJpbmcmIHMpCit7CisgICAgVVN0cmluZyBlc2NhcGVkU3RyaW5nOwor
CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIHVuc2ln
bmVkIHNob3J0IGMgPSBzLmRhdGEoKVtpXS51bmljb2RlKCk7CisgICAgICAgIHN3aXRjaCAoYykg
eworICAgICAgICAgICAgY2FzZSAnXCInOgorICAgICAgICAgICAgICAgIGVzY2FwZWRTdHJpbmcg
Kz0gIlxcXCIiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnXG4n
OgorICAgICAgICAgICAgICAgIGVzY2FwZWRTdHJpbmcgKz0gIlxcbiI7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdccic6CisgICAgICAgICAgICAgICAgZXNjYXBl
ZFN0cmluZyArPSAiXFxyIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgJ1x0JzoKKyAgICAgICAgICAgICAgICBlc2NhcGVkU3RyaW5nICs9ICJcXHQiOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnXFwnOgorICAgICAgICAgICAgICAg
IGVzY2FwZWRTdHJpbmcgKz0gIlxcXFwiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBpZiAoYyA8IDEyOCAmJiBpc1ByaW50YWJs
ZUNoYXIoYykpCisgICAgICAgICAgICAgICAgICAgIGVzY2FwZWRTdHJpbmcuYXBwZW5kKGMpOwor
ICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjaGFyIGhleFZhbHVl
WzddOworICAgICAgICAgICAgICAgICAgICBzbnByaW50ZihoZXhWYWx1ZSwgNywgIlxcdSUwNHgi
LCBjKTsKKyAgICAgICAgICAgICAgICAgICAgZXNjYXBlZFN0cmluZyArPSBoZXhWYWx1ZTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZXNjYXBlZFN0
cmluZzsgICAgCiB9CiAKLXVzaW5nIG5hbWVzcGFjZSBLSlM7CitzdGF0aWMgY29uc3QgY2hhciog
b3BlcmF0b3JTdHJpbmcoT3BlcmF0b3Igb3BlcikKK3sKKyAgICBzd2l0Y2ggKG9wZXIpIHsKKyAg
ICAgICAgY2FzZSBPcEVxdWFsOgorICAgICAgICAgICAgcmV0dXJuICI9IjsKKyAgICAgICAgY2Fz
ZSBPcE11bHRFcToKKyAgICAgICAgICAgIHJldHVybiAiKj0iOworICAgICAgICBjYXNlIE9wRGl2
RXE6CisgICAgICAgICAgICByZXR1cm4gIi89IjsKKyAgICAgICAgY2FzZSBPcFBsdXNFcToKKyAg
ICAgICAgICAgIHJldHVybiAiKz0iOworICAgICAgICBjYXNlIE9wTWludXNFcToKKyAgICAgICAg
ICAgIHJldHVybiAiLT0iOworICAgICAgICBjYXNlIE9wTFNoaWZ0OgorICAgICAgICAgICAgcmV0
dXJuICI8PD0iOworICAgICAgICBjYXNlIE9wUlNoaWZ0OgorICAgICAgICAgICAgcmV0dXJuICI+
Pj0iOworICAgICAgICBjYXNlIE9wVVJTaGlmdDoKKyAgICAgICAgICAgIHJldHVybiAiPj4+PSI7
CisgICAgICAgIGNhc2UgT3BBbmRFcToKKyAgICAgICAgICAgIHJldHVybiAiJj0iOworICAgICAg
ICBjYXNlIE9wWE9yRXE6CisgICAgICAgICAgICByZXR1cm4gIl49IjsKKyAgICAgICAgY2FzZSBP
cE9yRXE6CisgICAgICAgICAgICByZXR1cm4gInw9IjsKKyAgICAgICAgY2FzZSBPcE1vZEVxOgor
ICAgICAgICAgICAgcmV0dXJuICIlPSI7CisgICAgICAgIGNhc2UgT3BQbHVzUGx1czoKKyAgICAg
ICAgICAgIHJldHVybiAiKysiOworICAgICAgICBjYXNlIE9wTWludXNNaW51czoKKyAgICAgICAg
ICAgIHJldHVybiAiLS0iOworICAgIH0KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBy
ZXR1cm4gIj8/PyI7Cit9CisKK3N0YXRpYyBib29sIGlzUGFyc2VyUm91bmRUcmlwTnVtYmVyKGNv
bnN0IFVTdHJpbmcmIHN0cmluZykKK3sKKyAgICBkb3VibGUgbnVtYmVyID0gc3RyaW5nLnRvRG91
YmxlKGZhbHNlLCBmYWxzZSk7CisgICAgaWYgKGlzbmFuKG51bWJlcikgfHwgaXNpbmYobnVtYmVy
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBzdHJpbmcgPT0gVVN0cmluZzo6
ZnJvbShudW1iZXIpOworfQorCisvLyAtLS0tLS0tLQogCiBTb3VyY2VTdHJlYW0mIFNvdXJjZVN0
cmVhbTo6b3BlcmF0b3I8PChjaGFyIGMpCiB7Ci0gIG1fZ3JvdXBJZk51bWJlciA9IGZhbHNlOwot
ICBVQ2hhciBjaChjKTsKLSAgc3RyICs9IFVTdHJpbmcoJmNoLCAxKTsKLSAgcmV0dXJuICp0aGlz
OworICAgIG1fbnVtYmVyTmVlZHNQYXJlbnMgPSBmYWxzZTsKKyAgICBVQ2hhciBjaChjKTsKKyAg
ICBtX3N0cmluZy5hcHBlbmQoY2gpOworICAgIHJldHVybiAqdGhpczsKIH0KIAotU291cmNlU3Ry
ZWFtJiBTb3VyY2VTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgY2hhciAqcykKK1NvdXJjZVN0cmVh
bSYgU291cmNlU3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IGNoYXIqIHMpCiB7Ci0gIG1fZ3JvdXBJ
Zk51bWJlciA9IGZhbHNlOwotICBzdHIgKz0gVVN0cmluZyhzKTsKLSAgcmV0dXJuICp0aGlzOwor
ICAgIG1fbnVtYmVyTmVlZHNQYXJlbnMgPSBmYWxzZTsKKyAgICBtX3N0cmluZyArPSBzOworICAg
IHJldHVybiAqdGhpczsKIH0KIAogU291cmNlU3RyZWFtJiBTb3VyY2VTdHJlYW06Om9wZXJhdG9y
PDwoZG91YmxlIHZhbHVlKQogewotICBpZiAobV9ncm91cElmTnVtYmVyKQotICAgIHN0ci5hcHBl
bmQoIigiKTsKLQotICBzdHIgKz0gVVN0cmluZzo6ZnJvbSh2YWx1ZSk7CisgICAgYm9vbCBuZWVk
UGFyZW5zID0gbV9udW1iZXJOZWVkc1BhcmVuczsKKyAgICBtX251bWJlck5lZWRzUGFyZW5zID0g
ZmFsc2U7CiAKLSAgaWYgKG1fZ3JvdXBJZk51bWJlcikKLSAgICBzdHIuYXBwZW5kKCIpIik7Cisg
ICAgaWYgKG5lZWRQYXJlbnMpCisgICAgICAgIG1fc3RyaW5nLmFwcGVuZCgnKCcpOworICAgIG1f
c3RyaW5nICs9IFVTdHJpbmc6OmZyb20odmFsdWUpOworICAgIGlmIChuZWVkUGFyZW5zKQorICAg
ICAgICBtX3N0cmluZy5hcHBlbmQoJyknKTsKIAotICBtX2dyb3VwSWZOdW1iZXIgPSBmYWxzZTsK
LSAgcmV0dXJuICp0aGlzOworICAgIHJldHVybiAqdGhpczsKIH0KIAotU291cmNlU3RyZWFtJiBT
b3VyY2VTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgVVN0cmluZyAmcykKK1NvdXJjZVN0cmVhbSYg
U291cmNlU3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IFVTdHJpbmcmIHMpCiB7Ci0gIG1fZ3JvdXBJ
Zk51bWJlciA9IGZhbHNlOwotICBzdHIgKz0gczsKLSAgcmV0dXJuICp0aGlzOworICAgIG1fbnVt
YmVyTmVlZHNQYXJlbnMgPSBmYWxzZTsKKyAgICBtX3N0cmluZyArPSBzOworICAgIHJldHVybiAq
dGhpczsKIH0KIAotU291cmNlU3RyZWFtJiBTb3VyY2VTdHJlYW06Om9wZXJhdG9yPDwoY29uc3Qg
SWRlbnRpZmllciAmcykKK1NvdXJjZVN0cmVhbSYgU291cmNlU3RyZWFtOjpvcGVyYXRvcjw8KGNv
bnN0IElkZW50aWZpZXImIHMpCiB7Ci0gIG1fZ3JvdXBJZk51bWJlciA9IGZhbHNlOwotICBzdHIg
Kz0gcy51c3RyaW5nKCk7Ci0gIHJldHVybiAqdGhpczsKKyAgICBtX251bWJlck5lZWRzUGFyZW5z
ID0gZmFsc2U7CisgICAgbV9zdHJpbmcgKz0gcy51c3RyaW5nKCk7CisgICAgcmV0dXJuICp0aGlz
OwogfQogCi1Tb3VyY2VTdHJlYW0mIFNvdXJjZVN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBOb2Rl
ICpuKQorU291cmNlU3RyZWFtJiBTb3VyY2VTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgTm9kZSog
bikKIHsKLSAgaWYgKG4pCi0gICAgbi0+c3RyZWFtVG8oKnRoaXMpOwotICBtX2dyb3VwSWZOdW1i
ZXIgPSBmYWxzZTsKLSAgcmV0dXJuICp0aGlzOworICAgIGJvb2wgbmVlZFBhcmVucyA9IG1fcHJl
Y2VkZW5jZSAhPSBQcmVjRXhwcmVzc2lvbiAmJiBuLT5wcmVjZWRlbmNlKCkgPiBtX3ByZWNlZGVu
Y2U7CisgICAgbV9wcmVjZWRlbmNlID0gUHJlY0V4cHJlc3Npb247CisgICAgaWYgKG4pIHsKKyAg
ICAgICAgaWYgKG5lZWRQYXJlbnMpCisgICAgICAgICAgICBtX3N0cmluZy5hcHBlbmQoJygnKTsK
KyAgICAgICAgbi0+c3RyZWFtVG8oKnRoaXMpOworICAgICAgICBpZiAobmVlZFBhcmVucykKKyAg
ICAgICAgICAgIG1fc3RyaW5nLmFwcGVuZCgnKScpOworICAgIH0KKyAgICByZXR1cm4gKnRoaXM7
CiB9CiAKLVNvdXJjZVN0cmVhbSYgU291cmNlU3RyZWFtOjpvcGVyYXRvcjw8KEZvcm1hdCBmKQor
U291cmNlU3RyZWFtJiBTb3VyY2VTdHJlYW06Om9wZXJhdG9yPDwoRW5kbFR5cGUpCiB7Ci0gIG1f
Z3JvdXBJZk51bWJlciA9IGZhbHNlOwotICBzd2l0Y2ggKGYpIHsKLSAgICBjYXNlIEVuZGw6Ci0g
ICAgICBzdHIgKz0gIlxuIiArIGluZDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgSW5kZW50Ogot
ICAgICAgaW5kICs9ICIgICI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFVuaW5kZW50OgotICAg
ICAgaW5kID0gaW5kLnN1YnN0cigwLCBpbmQuc2l6ZSgpIC0gMik7Ci0gICAgICBicmVhazsKLSAg
Y2FzZSBEb3RFeHByOgotICAgICAgbV9ncm91cElmTnVtYmVyID0gdHJ1ZTsKLSAgICAgIGJyZWFr
OwotICB9Ci0KLSAgcmV0dXJuICp0aGlzOworICAgIG1fbnVtYmVyTmVlZHNQYXJlbnMgPSBmYWxz
ZTsKKyAgICBtX3N0cmluZy5hcHBlbmQoJ1xuJyk7CisgICAgbV9zdHJpbmcuYXBwZW5kKG1fc3Bh
Y2VzRm9ySW5kZW50YXRpb24pOworICAgIHJldHVybiAqdGhpczsKIH0KIAotVVN0cmluZyBOb2Rl
Ojp0b1N0cmluZygpIGNvbnN0CitTb3VyY2VTdHJlYW0mIFNvdXJjZVN0cmVhbTo6b3BlcmF0b3I8
PChJbmRlbnRUeXBlKQogewotICBTb3VyY2VTdHJlYW0gc3RyOwotICBzdHJlYW1UbyhzdHIpOwot
Ci0gIHJldHVybiBzdHIudG9TdHJpbmcoKTsKKyAgICBtX251bWJlck5lZWRzUGFyZW5zID0gZmFs
c2U7CisgICAgbV9zcGFjZXNGb3JJbmRlbnRhdGlvbiArPSAiICAiOworICAgIHJldHVybiAqdGhp
czsKIH0KIAotdm9pZCBOdWxsTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdCB7
IHMgPDwgIm51bGwiOyB9Ci0KLXZvaWQgQm9vbGVhbk5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVh
bSAmcykgY29uc3QKK1NvdXJjZVN0cmVhbSYgU291cmNlU3RyZWFtOjpvcGVyYXRvcjw8KFVuaW5k
ZW50VHlwZSkKIHsKLSAgcyA8PCAodmFsdWUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyAgICBtX251
bWJlck5lZWRzUGFyZW5zID0gZmFsc2U7CisgICAgbV9zcGFjZXNGb3JJbmRlbnRhdGlvbiA9IG1f
c3BhY2VzRm9ySW5kZW50YXRpb24uc3Vic3RyKDAsIG1fc3BhY2VzRm9ySW5kZW50YXRpb24uc2l6
ZSgpIC0gMik7CisgICAgcmV0dXJuICp0aGlzOwogfQogCi12b2lkIE51bWJlck5vZGU6OnN0cmVh
bVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QgeyBzIDw8IHZhbDsgfQotCi12b2lkIEltbWVkaWF0
ZU51bWJlck5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKK2lubGluZSBTb3Vy
Y2VTdHJlYW0mIFNvdXJjZVN0cmVhbTo6b3BlcmF0b3I8PChEb3RFeHByVHlwZSkKIHsKLSAgICBz
IDw8IHZhbHVlKCk7CisgICAgbV9udW1iZXJOZWVkc1BhcmVucyA9IHRydWU7CisgICAgcmV0dXJu
ICp0aGlzOwogfQogCi12b2lkIFN0cmluZ05vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykg
Y29uc3QKK2lubGluZSBTb3VyY2VTdHJlYW0mIFNvdXJjZVN0cmVhbTo6b3BlcmF0b3I8PChQcmVj
ZWRlbmNlIHByZWNlZGVuY2UpCiB7Ci0gIHMgPDwgJyInIDw8IGVzY2FwZVN0cmluZ0ZvclByZXR0
eVByaW50aW5nKHZhbHVlKSA8PCAnIic7CisgICAgbV9wcmVjZWRlbmNlID0gcHJlY2VkZW5jZTsK
KyAgICByZXR1cm4gKnRoaXM7CiB9CiAKLXZvaWQgUmVnRXhwTm9kZTo6c3RyZWFtVG8oU291cmNl
U3RyZWFtICZzKSBjb25zdAoteyAKLSAgICBzIDw8ICIvIiA8PCAgcGF0dGVybiA8PCAiLyIgPDwg
ZmxhZ3M7IAorc3RhdGljIHZvaWQgc3RyZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0b3Io
U291cmNlU3RyZWFtJiBzLCBQcmVjZWRlbmNlIHByZWNlZGVuY2UsCisgICAgY29uc3QgY2hhciog
b3BlcmF0b3JTdHJpbmcsIGNvbnN0IE5vZGUqIGxlZnQsIGNvbnN0IE5vZGUqIHJpZ2h0KQorewor
ICAgIHMgPDwgcHJlY2VkZW5jZSA8PCBsZWZ0CisgICAgICAgIDw8ICcgJyA8PCBvcGVyYXRvclN0
cmluZyA8PCAnICcKKyAgICAgICAgPDwgc3RhdGljX2Nhc3Q8UHJlY2VkZW5jZT4ocHJlY2VkZW5j
ZSAtIDEpIDw8IHJpZ2h0OwogfQogCi12b2lkIFRoaXNOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJl
YW0gJnMpIGNvbnN0IHsgcyA8PCAidGhpcyI7IH0KK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdGF0
aWMgaW5saW5lIHZvaWQgc3RyZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0b3IoU291cmNl
U3RyZWFtJiBzLAorICAgIFByZWNlZGVuY2UgcCwgY29uc3QgY2hhciogbywgY29uc3QgUmVmUHRy
PFQ+JiBsLCBjb25zdCBSZWZQdHI8VD4mIHIpCit7CisgICAgc3RyZWFtTGVmdEFzc29jaWF0aXZl
QmluYXJ5T3BlcmF0b3IocywgcCwgbywgbC5nZXQoKSwgci5nZXQoKSk7Cit9CiAKLXZvaWQgUmVz
b2x2ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QgeyBzIDw8IGlkZW50OyB9
CisvLyAtLS0tLS0tLQogCi12b2lkIEdyb3VwTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZz
KSBjb25zdAorVVN0cmluZyBOb2RlOjp0b1N0cmluZygpIGNvbnN0CiB7Ci0gIHMgPDwgIigiIDw8
IGdyb3VwIDw8ICIpIjsgCisgICAgU291cmNlU3RyZWFtIHN0cmVhbTsKKyAgICBzdHJlYW1Ubyhz
dHJlYW0pOworICAgIHJldHVybiBzdHJlYW0udG9TdHJpbmcoKTsKIH0KIAotdm9pZCBFbGVtZW50
Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAorLy8gLS0tLS0tLS0KKwordm9p
ZCBOdWxsTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBmb3IgKGNv
bnN0IEVsZW1lbnROb2RlICpuID0gdGhpczsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpIHsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IG4tPmVsaXNpb247IGkrKykKLSAgICAgIHMgPDwgIiwiOwotICAg
IHMgPDwgbi0+bm9kZTsKLSAgICBpZiAobi0+bmV4dCkKLSAgICAgICAgcyA8PCAiLCI7Ci0gIH0K
KyAgICBzIDw8ICJudWxsIjsKIH0KIAotdm9pZCBBcnJheU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0
cmVhbSAmcykgY29uc3QKK3ZvaWQgQm9vbGVhbk5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYg
cykgY29uc3QKIHsKLSAgcyA8PCAiWyIgPDwgZWxlbWVudDsKLSAgZm9yIChpbnQgaSA9IDA7IGkg
PCBlbGlzaW9uOyBpKyspCi0gICAgcyA8PCAiLCI7Ci0gIC8vIFBhcnNlciBjb25zdW1lcyBvbmUg
ZWxpc2lvbiBjb21tYSBpZiB0aGVyZSdzIGFycmF5IGVsZW1lbnRzIAotICAvLyBwcmVzZW50IGlu
IHRoZSBleHByZXNzaW9uLgotICBpZiAob3B0ICYmIGVsZW1lbnQpCi0gICAgcyA8PCAiLCI7Ci0g
IHMgPDwgIl0iOworICAgIHMgPDwgKHZhbHVlID8gInRydWUiIDogImZhbHNlIik7CiB9CiAKLXZv
aWQgT2JqZWN0TGl0ZXJhbE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3Zv
aWQgTnVtYmVyTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBpZiAo
bGlzdCkKLSAgICBzIDw8ICJ7ICIgPDwgbGlzdCA8PCAiIH0iOwotICBlbHNlCi0gICAgcyA8PCAi
eyB9IjsKKyAgICBzIDw8IHZhbDsKIH0KIAotdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjpzdHJlYW1U
byhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIEltbWVkaWF0ZU51bWJlck5vZGU6OnN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCBub2RlOwotICAKLSAgZm9yIChj
b25zdCBQcm9wZXJ0eUxpc3ROb2RlICpuID0gbmV4dC5nZXQoKTsgbjsgbiA9IG4tPm5leHQuZ2V0
KCkpCi0gICAgcyA8PCAiLCAiIDw8IG4tPm5vZGU7CisgICAgcyA8PCB2YWx1ZSgpOwogfQogCi12
b2lkIFByb3BlcnR5Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBT
dHJpbmdOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHN3aXRjaCAo
dHlwZSkgewotICAgIGNhc2UgQ29uc3RhbnQ6Ci0gICAgICBzIDw8IG5hbWUgPDwgIjogIiA8PCBh
c3NpZ247Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdldHRlcjoKLSAgICBjYXNlIFNldHRlcjog
ewotICAgICAgY29uc3QgRnVuY0V4cHJOb2RlICpmdW5jID0gc3RhdGljX2Nhc3Q8Y29uc3QgRnVu
Y0V4cHJOb2RlICo+KGFzc2lnbi5nZXQoKSk7Ci0gICAgICBpZiAodHlwZSA9PSBHZXR0ZXIpCi0g
ICAgICAgIHMgPDwgImdldCAiOyAKLSAgICAgIGVsc2UKLSAgICAgICAgcyA8PCAic2V0ICI7Ci0g
ICAgICAKLSAgICAgIHMgPDwgbmFtZSA8PCAiKCIgPDwgZnVuYy0+cGFyYW0gPDwgIikiIDw8IGZ1
bmMtPmJvZHk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gIH0KKyAgICBzIDw8ICciJyA8PCBlc2Nh
cGVTdHJpbmdGb3JQcmV0dHlQcmludGluZyh2YWx1ZSkgPDwgJyInOwogfQogCi12b2lkIFByb3Bl
cnR5TmFtZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgUmVnRXhw
Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAoreyAKKyAgICBzIDw8ICcvJyA8
PCAgcGF0dGVybiA8PCAnLycgPDwgZmxhZ3M7IAorfQorCit2b2lkIFRoaXNOb2RlOjpzdHJlYW1U
byhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIGlmIChzdHIuaXNOdWxsKCkpCi0gICAgcyA8
PCBVU3RyaW5nOjpmcm9tKG51bWVyaWMpOwotICBlbHNlCi0gICAgcyA8PCAnIicgPDwgZXNjYXBl
U3RyaW5nRm9yUHJldHR5UHJpbnRpbmcoc3RyLnVzdHJpbmcoKSkgPDwgJyInOworICAgIHMgPDwg
InRoaXMiOwogfQogCi12b2lkIEJyYWNrZXRBY2Nlc3Nvck5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0
cmVhbSAmcykgY29uc3QKK3ZvaWQgUmVzb2x2ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYg
cykgY29uc3QKIHsKLSAgcyA8PCBleHByMSA8PCAiWyIgPDwgZXhwcjIgPDwgIl0iOworICAgIHMg
PDwgaWRlbnQ7CiB9CiAKLXZvaWQgRG90QWNjZXNzb3JOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJl
YW0gJnMpIGNvbnN0Cit2b2lkIEVsZW1lbnROb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMp
IGNvbnN0CiB7Ci0gIHMgPDwgU291cmNlU3RyZWFtOjpEb3RFeHByIDw8IGV4cHIgPDwgIi4iIDw8
IGlkZW50OworICAgIGZvciAoY29uc3QgRWxlbWVudE5vZGUqIG4gPSB0aGlzOyBuOyBuID0gbi0+
bmV4dC5nZXQoKSkgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG4tPmVsaXNpb247IGkr
KykKKyAgICAgICAgICAgIHMgPDwgJywnOworICAgICAgICBzIDw8IFByZWNBc3NpZ25tZW50IDw8
IG4tPm5vZGU7CisgICAgICAgIGlmIChuLT5uZXh0KQorICAgICAgICAgICAgcyA8PCAnLCc7Cisg
ICAgfQogfQogCi12b2lkIEFyZ3VtZW50TGlzdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAm
cykgY29uc3QKK3ZvaWQgQXJyYXlOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0
CiB7Ci0gIHMgPDwgZXhwcjsKLSAgZm9yIChBcmd1bWVudExpc3ROb2RlICpuID0gbmV4dC5nZXQo
KTsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpCi0gICAgcyA8PCAiLCAiIDw8IG4tPmV4cHI7CisgICAg
cyA8PCAnWycgPDwgZWxlbWVudDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGVsaXNpb247IGkr
KykKKyAgICAgICAgcyA8PCAnLCc7CisgICAgLy8gUGFyc2VyIGNvbnN1bWVzIG9uZSBlbGlzaW9u
IGNvbW1hIGlmIHRoZXJlJ3MgYXJyYXkgZWxlbWVudHMgCisgICAgLy8gcHJlc2VudCBpbiB0aGUg
ZXhwcmVzc2lvbi4KKyAgICBpZiAob3B0ICYmIGVsZW1lbnQpCisgICAgICAgIHMgPDwgJywnOwor
ICAgIHMgPDwgJ10nOworfQorCit2b2lkIE9iamVjdExpdGVyYWxOb2RlOjpzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mIHMpIGNvbnN0Cit7CisgICAgaWYgKGxpc3QpCisgICAgICAgIHMgPDwgInsgIiA8
PCBsaXN0IDw8ICIgfSI7CisgICAgZWxzZQorICAgICAgICBzIDw8ICJ7IH0iOworfQorCit2b2lk
IFByb3BlcnR5TGlzdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKK3sKKyAg
ICBzIDw8IG5vZGU7CisgICAgZm9yIChjb25zdCBQcm9wZXJ0eUxpc3ROb2RlKiBuID0gbmV4dC5n
ZXQoKTsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpCisgICAgICAgIHMgPDwgIiwgIiA8PCBuLT5ub2Rl
OworfQorCit2b2lkIFByb3BlcnR5Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25z
dAoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIENvbnN0YW50OiB7CisgICAg
ICAgICAgICBVU3RyaW5nIHByb3BlcnR5TmFtZSA9IG5hbWUoKS51c3RyaW5nKCk7CisgICAgICAg
ICAgICBpZiAoaXNQYXJzZXJSb3VuZFRyaXBOdW1iZXIocHJvcGVydHlOYW1lKSkKKyAgICAgICAg
ICAgICAgICBzIDw8IHByb3BlcnR5TmFtZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBzIDw8ICciJyA8PCBlc2NhcGVTdHJpbmdGb3JQcmV0dHlQcmludGluZyhwcm9wZXJ0eU5h
bWUpIDw8ICciJzsKKyAgICAgICAgICAgIHMgPDwgIjogIiA8PCBQcmVjQXNzaWdubWVudCA8PCBh
c3NpZ247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIEdldHRl
cjoKKyAgICAgICAgY2FzZSBTZXR0ZXI6IHsKKyAgICAgICAgICAgIGNvbnN0IEZ1bmNFeHByTm9k
ZSogZnVuYyA9IHN0YXRpY19jYXN0PGNvbnN0IEZ1bmNFeHByTm9kZSo+KGFzc2lnbi5nZXQoKSk7
CisgICAgICAgICAgICBpZiAodHlwZSA9PSBHZXR0ZXIpCisgICAgICAgICAgICAgICAgcyA8PCAi
Z2V0IFwiIjsgCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcyA8PCAic2V0IFwi
IjsKKyAgICAgICAgICAgIHMgPDwgZXNjYXBlU3RyaW5nRm9yUHJldHR5UHJpbnRpbmcobmFtZSgp
LnVzdHJpbmcoKSkKKyAgICAgICAgICAgICAgICA8PCAiXCIoIiA8PCBmdW5jLT5wYXJhbSA8PCAn
KScgPDwgZnVuYy0+Ym9keTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQog
fQogCi12b2lkIEFyZ3VtZW50c05vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QK
K3ZvaWQgQnJhY2tldEFjY2Vzc29yTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25z
dAogewotICBzIDw8ICIoIiA8PCBsaXN0IDw8ICIpIjsKKyAgICBzIDw8IFByZWNDYWxsIDw8IGV4
cHIxIDw8ICJbIiA8PCBleHByMiA8PCAiXSI7CiB9CiAKLXZvaWQgTmV3RXhwck5vZGU6OnN0cmVh
bVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgRG90QWNjZXNzb3JOb2RlOjpzdHJlYW1U
byhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgIm5ldyAiIDw8IGV4cHIgPDwgYXJn
czsKKyAgICBzIDw8IERvdEV4cHIgPDwgUHJlY0NhbGwgPDwgZXhwciA8PCAiLiIgPDwgaWRlbnQ7
CiB9CiAKLXZvaWQgRnVuY3Rpb25DYWxsVmFsdWVOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0g
JnMpIGNvbnN0Cit2b2lkIEFyZ3VtZW50TGlzdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYg
cykgY29uc3QKIHsKLSAgcyA8PCBleHByIDw8IGFyZ3M7CisgICAgcyA8PCBQcmVjQXNzaWdubWVu
dCA8PCBleHByOworICAgIGZvciAoQXJndW1lbnRMaXN0Tm9kZSogbiA9IG5leHQuZ2V0KCk7IG47
IG4gPSBuLT5uZXh0LmdldCgpKQorICAgICAgICBzIDw8ICIsICIgPDwgUHJlY0Fzc2lnbm1lbnQg
PDwgbi0+ZXhwcjsKIH0KIAotdm9pZCBGdW5jdGlvbkNhbGxSZXNvbHZlTm9kZTo6c3RyZWFtVG8o
U291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBBcmd1bWVudHNOb2RlOjpzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgaWRlbnQgPDwgYXJnczsKKyAgICBzIDw8ICco
JyA8PCBsaXN0IDw8ICcpJzsKIH0KIAotdm9pZCBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZTo6c3Ry
ZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBOZXdFeHByTm9kZTo6c3RyZWFtVG8o
U291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IGJhc2UgPDwgIlsiIDw8IHN1YnNjcmlw
dCA8PCAiXSIgPDwgYXJnczsKKyAgICBzIDw8ICJuZXcgIiA8PCBQcmVjTWVtYmVyIDw8IGV4cHIg
PDwgYXJnczsKIH0KIAotdm9pZCBGdW5jdGlvbkNhbGxQYXJlbkJyYWNrZXROb2RlOjpzdHJlYW1U
byhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZTo6c3Ry
ZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8ICIoIiA8PCBiYXNlIDw8ICJb
IiA8PCBzdWJzY3JpcHQgPDwgIl0pIiA8PCBhcmdzOworICAgIHMgPDwgUHJlY0NhbGwgPDwgZXhw
ciA8PCBhcmdzOwogfQogCi12b2lkIEZ1bmN0aW9uQ2FsbERvdE5vZGU6OnN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgRnVuY3Rpb25DYWxsUmVzb2x2ZU5vZGU6OnN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCBTb3VyY2VTdHJlYW06OkRvdEV4cHIg
PDwgYmFzZSA8PCAiLiIgPDwgaWRlbnQgPDwgYXJnczsKKyAgICBzIDw8IGlkZW50IDw8IGFyZ3M7
CiB9CiAKLXZvaWQgRnVuY3Rpb25DYWxsUGFyZW5Eb3ROb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJl
YW0gJnMpIGNvbnN0Cit2b2lkIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlOjpzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgIigiIDw8IFNvdXJjZVN0cmVhbTo6RG90RXhw
ciA8PCBiYXNlIDw8ICIuIiA8PCBpZGVudCA8PCAiKSIgPDwgYXJnczsKKyAgICBzIDw8IFByZWND
YWxsIDw8IGJhc2UgPDwgIlsiIDw8IHN1YnNjcmlwdCA8PCAiXSIgPDwgYXJnczsKIH0KIAotdm9p
ZCBQb3N0Zml4UmVzb2x2ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3Zv
aWQgRnVuY3Rpb25DYWxsRG90Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAog
ewotICBzIDw8IG1faWRlbnQ7Ci0gIGlmIChtX29wZXIgPT0gT3BQbHVzUGx1cykKLSAgICBzIDw8
ICIrKyI7Ci0gIGVsc2UKLSAgICBzIDw8ICItLSI7CisgICAgcyA8PCBEb3RFeHByIDw8IFByZWND
YWxsIDw8IGJhc2UgPDwgIi4iIDw8IGlkZW50IDw8IGFyZ3M7CiB9CiAKLXZvaWQgUG9zdGZpeEJy
YWNrZXROb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIFBvc3RmaXhS
ZXNvbHZlTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IG1f
YmFzZSA8PCAiWyIgPDwgbV9zdWJzY3JpcHQgPDwgIl0iOwotICBpZiAobV9vcGVyID09IE9wUGx1
c1BsdXMpCi0gICAgcyA8PCAiKysiOwotICBlbHNlCi0gICAgcyA8PCAiLS0iOworICAgIHMgPDwg
bV9pZGVudDsKKyAgICBpZiAobV9vcGVyID09IE9wUGx1c1BsdXMpCisgICAgICAgIHMgPDwgIisr
IjsKKyAgICBlbHNlCisgICAgICAgIHMgPDwgIi0tIjsKIH0KIAotdm9pZCBQb3N0Zml4RG90Tm9k
ZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBQb3N0Zml4QnJhY2tldE5v
ZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCBTb3VyY2VTdHJl
YW06OkRvdEV4cHIgPDwgbV9iYXNlIDw8ICIuIiA8PCBtX2lkZW50OwotICBpZiAobV9vcGVyID09
IE9wUGx1c1BsdXMpCi0gICAgcyA8PCAiKysiOwotICBlbHNlCi0gICAgcyA8PCAiLS0iOworICAg
IHMgPDwgUHJlY0NhbGwgPDwgbV9iYXNlIDw8ICJbIiA8PCBtX3N1YnNjcmlwdCA8PCAiXSI7Cisg
ICAgaWYgKG1fb3BlciA9PSBPcFBsdXNQbHVzKQorICAgICAgICBzIDw8ICIrKyI7CisgICAgZWxz
ZQorICAgICAgICBzIDw8ICItLSI7CiB9CiAKLXZvaWQgUG9zdGZpeEVycm9yTm9kZTo6c3RyZWFt
VG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAordm9pZCBQb3N0Zml4RG90Tm9kZTo6c3RyZWFtVG8o
U291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IG1fZXhwcjsKLSAgaWYgKG1fb3BlciA9
PSBPcFBsdXNQbHVzKQotICAgIHMgPDwgIisrIjsKLSAgZWxzZQotICAgIHMgPDwgIi0tIjsKKyAg
ICBzIDw8IERvdEV4cHIgPDwgUHJlY0NhbGwgPDwgbV9iYXNlIDw8ICIuIiA8PCBtX2lkZW50Owor
ICAgIGlmIChtX29wZXIgPT0gT3BQbHVzUGx1cykKKyAgICAgICAgcyA8PCAiKysiOworICAgIGVs
c2UKKyAgICAgICAgcyA8PCAiLS0iOwogfQogCi12b2lkIERlbGV0ZVJlc29sdmVOb2RlOjpzdHJl
YW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIFBvc3RmaXhFcnJvck5vZGU6OnN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCAiZGVsZXRlICIgPDwgbV9pZGVu
dDsKKyAgICBzIDw8IFByZWNMZWZ0SGFuZFNpZGUgPDwgbV9leHByOworICAgIGlmIChtX29wZXIg
PT0gT3BQbHVzUGx1cykKKyAgICAgICAgcyA8PCAiKysiOworICAgIGVsc2UKKyAgICAgICAgcyA8
PCAiLS0iOwogfQogCi12b2lkIERlbGV0ZUJyYWNrZXROb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJl
YW0gJnMpIGNvbnN0Cit2b2lkIERlbGV0ZVJlc29sdmVOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgImRlbGV0ZSAiIDw8IG1fYmFzZSA8PCAiWyIgPDwgbV9z
dWJzY3JpcHQgPDwgIl0iOworICAgIHMgPDwgImRlbGV0ZSAiIDw8IG1faWRlbnQ7CiB9CiAKLXZv
aWQgRGVsZXRlRG90Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBE
ZWxldGVCcmFja2V0Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBz
IDw8ICJkZWxldGUgIiA8PCBTb3VyY2VTdHJlYW06OkRvdEV4cHIgPDwgbV9iYXNlIDw8ICIuIiA8
PCBtX2lkZW50OworICAgIHMgPDwgImRlbGV0ZSAiIDw8IFByZWNDYWxsIDw8IG1fYmFzZSA8PCAi
WyIgPDwgbV9zdWJzY3JpcHQgPDwgIl0iOwogfQogCi12b2lkIERlbGV0ZVZhbHVlTm9kZTo6c3Ry
ZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBEZWxldGVEb3ROb2RlOjpzdHJlYW1U
byhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgImRlbGV0ZSAiIDw8IG1fZXhwcjsK
KyAgICBzIDw8ICJkZWxldGUgIiA8PCBEb3RFeHByIDw8IFByZWNDYWxsIDw8IG1fYmFzZSA8PCAi
LiIgPDwgbV9pZGVudDsKIH0KIAotdm9pZCBWb2lkTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFt
ICZzKSBjb25zdAordm9pZCBEZWxldGVWYWx1ZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYg
cykgY29uc3QKIHsKLSAgcyA8PCAidm9pZCAiIDw8IGV4cHI7CisgICAgcyA8PCAiZGVsZXRlICIg
PDwgUHJlY1VuYXJ5IDw8IG1fZXhwcjsKIH0KIAotdm9pZCBUeXBlT2ZWYWx1ZU5vZGU6OnN0cmVh
bVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgVm9pZE5vZGU6OnN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCAidHlwZW9mICIgPDwgbV9leHByOworICAgIHMg
PDwgInZvaWQgIiA8PCBQcmVjVW5hcnkgPDwgZXhwcjsKIH0KIAotdm9pZCBUeXBlT2ZSZXNvbHZl
Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBUeXBlT2ZWYWx1ZU5v
ZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCAidHlwZW9mICIg
PDwgbV9pZGVudDsKKyAgICBzIDw8ICJ0eXBlb2YgIiA8PCBQcmVjVW5hcnkgPDwgbV9leHByOwog
fQogCi12b2lkIFByZWZpeFJlc29sdmVOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNv
bnN0Cit2b2lkIFR5cGVPZlJlc29sdmVOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNv
bnN0CiB7Ci0gIGlmIChtX29wZXIgPT0gT3BQbHVzUGx1cykKLSAgICBzIDw8ICIrKyI7Ci0gIGVs
c2UKLSAgICBzIDw8ICItLSI7Ci0gIHMgPDwgbV9pZGVudDsKKyAgICBzIDw8ICJ0eXBlb2YgIiA8
PCBtX2lkZW50OwogfQogCi12b2lkIFByZWZpeEJyYWNrZXROb2RlOjpzdHJlYW1UbyhTb3VyY2VT
dHJlYW0gJnMpIGNvbnN0Cit2b2lkIFByZWZpeFJlc29sdmVOb2RlOjpzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mIHMpIGNvbnN0CiB7Ci0gIGlmIChtX29wZXIgPT0gT3BQbHVzUGx1cykKLSAgICBzIDw8
ICIrKyI7Ci0gIGVsc2UKLSAgICBzIDw8ICItLSI7Ci0gIHMgPDwgbV9iYXNlIDw8ICJbIiA8PCBt
X3N1YnNjcmlwdCA8PCAiXSI7CisgICAgaWYgKG1fb3BlciA9PSBPcFBsdXNQbHVzKQorICAgICAg
ICBzIDw8ICIrKyI7CisgICAgZWxzZQorICAgICAgICBzIDw8ICItLSI7CisgICAgcyA8PCBtX2lk
ZW50OwogfQogCi12b2lkIFByZWZpeERvdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykg
Y29uc3QKK3ZvaWQgUHJlZml4QnJhY2tldE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykg
Y29uc3QKIHsKLSAgaWYgKG1fb3BlciA9PSBPcFBsdXNQbHVzKQotICAgIHMgPDwgIisrIjsKLSAg
ZWxzZQotICAgIHMgPDwgIi0tIjsKLSAgcyA8PCBTb3VyY2VTdHJlYW06OkRvdEV4cHIgPDwgbV9i
YXNlIDw8ICIuIiA8PCBtX2lkZW50OworICAgIGlmIChtX29wZXIgPT0gT3BQbHVzUGx1cykKKyAg
ICAgICAgcyA8PCAiKysiOworICAgIGVsc2UKKyAgICAgICAgcyA8PCAiLS0iOworICAgIHMgPDwg
UHJlY0NhbGwgPDwgbV9iYXNlIDw8ICJbIiA8PCBtX3N1YnNjcmlwdCA8PCAiXSI7CiB9CiAKLXZv
aWQgUHJlZml4RXJyb3JOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0Cit2b2lk
IFByZWZpeERvdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgaWYg
KG1fb3BlciA9PSBPcFBsdXNQbHVzKQotICAgIHMgPDwgIisrIjsKLSAgZWxzZQotICAgIHMgPDwg
Ii0tIjsKLSAgcyA8PCBtX2V4cHI7CisgICAgaWYgKG1fb3BlciA9PSBPcFBsdXNQbHVzKQorICAg
ICAgICBzIDw8ICIrKyI7CisgICAgZWxzZQorICAgICAgICBzIDw8ICItLSI7CisgICAgcyA8PCBE
b3RFeHByIDw8IFByZWNDYWxsIDw8IG1fYmFzZSA8PCAiLiIgPDwgbV9pZGVudDsKIH0KIAotdm9p
ZCBVbmFyeVBsdXNOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIFBy
ZWZpeEVycm9yTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8
ICIrICIgPDwgZXhwcjsKKyAgICBpZiAobV9vcGVyID09IE9wUGx1c1BsdXMpCisgICAgICAgIHMg
PDwgIisrIiA8PCBQcmVjVW5hcnkgPDwgbV9leHByOworICAgIGVsc2UKKyAgICAgICAgcyA8PCAi
LS0iIDw8IFByZWNVbmFyeSA8PCBtX2V4cHI7CiB9CiAKLXZvaWQgTmVnYXRlTm9kZTo6c3RyZWFt
VG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBVbmFyeVBsdXNOb2RlOjpzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgIi0gIiA8PCBleHByOworICAgIHMgPDwg
IisgIiA8PCBQcmVjVW5hcnkgPDwgZXhwcjsKIH0KIAotdm9pZCBCaXR3aXNlTm90Tm9kZTo6c3Ry
ZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBOZWdhdGVOb2RlOjpzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgIn4iIDw8IGV4cHI7CisgICAgcyA8PCAi
LSAiIDw8IFByZWNVbmFyeSA8PCBleHByOwogfQogCi12b2lkIExvZ2ljYWxOb3ROb2RlOjpzdHJl
YW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIEJpdHdpc2VOb3ROb2RlOjpzdHJlYW1U
byhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgIiEiIDw8IGV4cHI7CisgICAgcyA8
PCAifiIgPDwgUHJlY1VuYXJ5IDw8IGV4cHI7CiB9CiAKLXZvaWQgTXVsdE5vZGU6OnN0cmVhbVRv
KFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgTG9naWNhbE5vdE5vZGU6OnN0cmVhbVRvKFNv
dXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgICBzIDw8IHRlcm0xIDw8ICIgKiAiIDw8IHRlcm0y
OworICAgIHMgPDwgIiEiIDw8IFByZWNVbmFyeSA8PCBleHByOwogfQogCi12b2lkIERpdk5vZGU6
OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgTXVsdE5vZGU6OnN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgICBzIDw8IHRlcm0xIDw8ICIgLyAiIDw8IHRl
cm0yOworICAgIHN0cmVhbUxlZnRBc3NvY2lhdGl2ZUJpbmFyeU9wZXJhdG9yKHMsIHByZWNlZGVu
Y2UoKSwgIioiLCB0ZXJtMSwgdGVybTIpOwogfQogCi12b2lkIE1vZE5vZGU6OnN0cmVhbVRvKFNv
dXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgRGl2Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFt
JiBzKSBjb25zdAogewotICAgIHMgPDwgdGVybTEgPDwgIiAlICIgPDwgdGVybTI7CisgICAgc3Ry
ZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0b3IocywgcHJlY2VkZW5jZSgpLCAiLyIsIHRl
cm0xLCB0ZXJtMik7CiB9CiAKLXZvaWQgQWRkTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZz
KSBjb25zdAordm9pZCBNb2ROb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7
Ci0gICAgcyA8PCB0ZXJtMSA8PCAiICsgIiA8PCB0ZXJtMjsKKyAgICBzdHJlYW1MZWZ0QXNzb2Np
YXRpdmVCaW5hcnlPcGVyYXRvcihzLCBwcmVjZWRlbmNlKCksICIlIiwgdGVybTEsIHRlcm0yKTsK
IH0KIAotdm9pZCBTdWJOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lk
IEFkZE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgICBzIDw8IHRl
cm0xIDw8ICIgLSAiIDw8IHRlcm0yOworICAgIHN0cmVhbUxlZnRBc3NvY2lhdGl2ZUJpbmFyeU9w
ZXJhdG9yKHMsIHByZWNlZGVuY2UoKSwgIisiLCB0ZXJtMSwgdGVybTIpOwogfQogCi12b2lkIExl
ZnRTaGlmdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgU3ViTm9k
ZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IHRlcm0xIDw8ICI8
PCIgPDwgdGVybTI7CisgICAgc3RyZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0b3Iocywg
cHJlY2VkZW5jZSgpLCAiLSIsIHRlcm0xLCB0ZXJtMik7CiB9CiAKLXZvaWQgUmlnaHRTaGlmdE5v
ZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgTGVmdFNoaWZ0Tm9kZTo6
c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IHRlcm0xIDw8ICI+PiIg
PDwgdGVybTI7CisgICAgc3RyZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0b3IocywgcHJl
Y2VkZW5jZSgpLCAiPDwiLCB0ZXJtMSwgdGVybTIpOwogfQogCi12b2lkIFVuc2lnbmVkUmlnaHRT
aGlmdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgUmlnaHRTaGlm
dE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCB0ZXJtMSA8
PCAiPj4+IiA8PCB0ZXJtMjsKKyAgICBzdHJlYW1MZWZ0QXNzb2NpYXRpdmVCaW5hcnlPcGVyYXRv
cihzLCBwcmVjZWRlbmNlKCksICI+PiIsIHRlcm0xLCB0ZXJtMik7CiB9CiAKLXZvaWQgTGVzc05v
ZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgVW5zaWduZWRSaWdodFNo
aWZ0Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IGV4cHIx
IDw8ICIgPCAiIDw8IGV4cHIyOworICAgIHN0cmVhbUxlZnRBc3NvY2lhdGl2ZUJpbmFyeU9wZXJh
dG9yKHMsIHByZWNlZGVuY2UoKSwgIj4+PiIsIHRlcm0xLCB0ZXJtMik7CiB9CiAKLXZvaWQgR3Jl
YXRlck5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgTGVzc05vZGU6
OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCBleHByMSA8PCAiID4g
IiA8PCBleHByMjsKKyAgICBzdHJlYW1MZWZ0QXNzb2NpYXRpdmVCaW5hcnlPcGVyYXRvcihzLCBw
cmVjZWRlbmNlKCksICI8IiwgZXhwcjEsIGV4cHIyKTsKIH0KIAotdm9pZCBMZXNzRXFOb2RlOjpz
dHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIEdyZWF0ZXJOb2RlOjpzdHJlYW1U
byhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgZXhwcjEgPDwgIiA8PSAiIDw8IGV4
cHIyOworICAgIHN0cmVhbUxlZnRBc3NvY2lhdGl2ZUJpbmFyeU9wZXJhdG9yKHMsIHByZWNlZGVu
Y2UoKSwgIj4iLCBleHByMSwgZXhwcjIpOwogfQogCi12b2lkIEdyZWF0ZXJFcU5vZGU6OnN0cmVh
bVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgTGVzc0VxTm9kZTo6c3RyZWFtVG8oU291
cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IGV4cHIxIDw8ICIgPj0gIiA8PCBleHByMjsK
KyAgICBzdHJlYW1MZWZ0QXNzb2NpYXRpdmVCaW5hcnlPcGVyYXRvcihzLCBwcmVjZWRlbmNlKCks
ICI8PSIsIGV4cHIxLCBleHByMik7CiB9CiAKLXZvaWQgSW5zdGFuY2VPZk5vZGU6OnN0cmVhbVRv
KFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgR3JlYXRlckVxTm9kZTo6c3RyZWFtVG8oU291
cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IGV4cHIxIDw8ICIgaW5zdGFuY2VvZiAiIDw8
IGV4cHIyOworICAgIHN0cmVhbUxlZnRBc3NvY2lhdGl2ZUJpbmFyeU9wZXJhdG9yKHMsIHByZWNl
ZGVuY2UoKSwgIj49IiwgZXhwcjEsIGV4cHIyKTsKIH0KIAotdm9pZCBJbk5vZGU6OnN0cmVhbVRv
KFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgSW5zdGFuY2VPZk5vZGU6OnN0cmVhbVRvKFNv
dXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCBleHByMSA8PCAiIGluICIgPDwgZXhwcjI7
CisgICAgc3RyZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0b3IocywgcHJlY2VkZW5jZSgp
LCAiaW5zdGFuY2VvZiIsIGV4cHIxLCBleHByMik7CiB9CiAKLXZvaWQgRXF1YWxOb2RlOjpzdHJl
YW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIEluTm9kZTo6c3RyZWFtVG8oU291cmNl
U3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IGV4cHIxIDw8ICIgPT0gIiA8PCBleHByMjsKKyAg
ICBzdHJlYW1MZWZ0QXNzb2NpYXRpdmVCaW5hcnlPcGVyYXRvcihzLCBwcmVjZWRlbmNlKCksICJp
biIsIGV4cHIxLCBleHByMik7CiB9CiAKLXZvaWQgTm90RXF1YWxOb2RlOjpzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIEVxdWFsTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFt
JiBzKSBjb25zdAogewotICBzIDw8IGV4cHIxIDw8ICIgPT0gIiA8PCBleHByMjsKKyAgICBzdHJl
YW1MZWZ0QXNzb2NpYXRpdmVCaW5hcnlPcGVyYXRvcihzLCBwcmVjZWRlbmNlKCksICI9PSIsIGV4
cHIxLCBleHByMik7CiB9CiAKLXZvaWQgU3RyaWN0RXF1YWxOb2RlOjpzdHJlYW1UbyhTb3VyY2VT
dHJlYW0gJnMpIGNvbnN0Cit2b2lkIE5vdEVxdWFsTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFt
JiBzKSBjb25zdAogewotICBzIDw8IGV4cHIxIDw8ICIgPT09ICIgPDwgZXhwcjI7CisgICAgc3Ry
ZWFtTGVmdEFzc29jaWF0aXZlQmluYXJ5T3BlcmF0b3IocywgcHJlY2VkZW5jZSgpLCAiIT0iLCBl
eHByMSwgZXhwcjIpOwogfQogCi12b2lkIE5vdFN0cmljdEVxdWFsTm9kZTo6c3RyZWFtVG8oU291
cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBTdHJpY3RFcXVhbE5vZGU6OnN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCBleHByMSA8PCAiICE9PSAiIDw8IGV4cHIyOwor
ICAgIHN0cmVhbUxlZnRBc3NvY2lhdGl2ZUJpbmFyeU9wZXJhdG9yKHMsIHByZWNlZGVuY2UoKSwg
Ij09PSIsIGV4cHIxLCBleHByMik7CiB9CiAKLXZvaWQgQml0QW5kTm9kZTo6c3RyZWFtVG8oU291
cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBOb3RTdHJpY3RFcXVhbE5vZGU6OnN0cmVhbVRvKFNv
dXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCBleHByMSA8PCAiICYgIiA8PCBleHByMjsK
KyAgICBzdHJlYW1MZWZ0QXNzb2NpYXRpdmVCaW5hcnlPcGVyYXRvcihzLCBwcmVjZWRlbmNlKCks
ICIhPT0iLCBleHByMSwgZXhwcjIpOwogfQogCi12b2lkIEJpdFhPck5vZGU6OnN0cmVhbVRvKFNv
dXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgQml0QW5kTm9kZTo6c3RyZWFtVG8oU291cmNlU3Ry
ZWFtJiBzKSBjb25zdAogewotICBzIDw8IGV4cHIxIDw8ICIgXiAiIDw8IGV4cHIyOworICAgIHN0
cmVhbUxlZnRBc3NvY2lhdGl2ZUJpbmFyeU9wZXJhdG9yKHMsIHByZWNlZGVuY2UoKSwgIiYiLCBl
eHByMSwgZXhwcjIpOwogfQogCi12b2lkIEJpdE9yTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFt
ICZzKSBjb25zdAordm9pZCBCaXRYT3JOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNv
bnN0CiB7Ci0gIHMgPDwgZXhwcjEgPDwgIiB8ICIgPDwgZXhwcjI7CisgICAgc3RyZWFtTGVmdEFz
c29jaWF0aXZlQmluYXJ5T3BlcmF0b3IocywgcHJlY2VkZW5jZSgpLCAiXiIsIGV4cHIxLCBleHBy
Mik7CiB9CiAKLXZvaWQgTG9naWNhbEFuZE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykg
Y29uc3QKK3ZvaWQgQml0T3JOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7
Ci0gIHMgPDwgZXhwcjEgPDwgIiAmJiAiIDw8IGV4cHIyOworICAgIHN0cmVhbUxlZnRBc3NvY2lh
dGl2ZUJpbmFyeU9wZXJhdG9yKHMsIHByZWNlZGVuY2UoKSwgInwiLCBleHByMSwgZXhwcjIpOwog
fQogCi12b2lkIExvZ2ljYWxPck5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QK
K3ZvaWQgTG9naWNhbEFuZE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsK
LSAgcyA8PCBleHByMSA8PCAiIHx8ICIgPDwgZXhwcjI7CisgICAgc3RyZWFtTGVmdEFzc29jaWF0
aXZlQmluYXJ5T3BlcmF0b3IocywgcHJlY2VkZW5jZSgpLCAiJiYiLCBleHByMSwgZXhwcjIpOwog
fQogCi12b2lkIENvbmRpdGlvbmFsTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25z
dAordm9pZCBMb2dpY2FsT3JOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7
Ci0gIHMgPDwgbG9naWNhbCA8PCAiID8gIiA8PCBleHByMSA8PCAiIDogIiA8PCBleHByMjsKKyAg
ICBzdHJlYW1MZWZ0QXNzb2NpYXRpdmVCaW5hcnlPcGVyYXRvcihzLCBwcmVjZWRlbmNlKCksICJ8
fCIsIGV4cHIxLCBleHByMik7CiB9CiAKLXN0YXRpYyB2b2lkIHN0cmVhbUFzc2lnbm1lbnRPcGVy
YXRvclRvKFNvdXJjZVN0cmVhbSAmcywgT3BlcmF0b3Igb3BlcikKK3ZvaWQgQ29uZGl0aW9uYWxO
b2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIGNvbnN0IGNoYXIgKm9w
U3RyOwotICBzd2l0Y2ggKG9wZXIpIHsKLSAgY2FzZSBPcEVxdWFsOgotICAgIG9wU3RyID0gIiA9
ICI7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgT3BNdWx0RXE6Ci0gICAgb3BTdHIgPSAiICo9ICI7Ci0g
ICAgYnJlYWs7Ci0gIGNhc2UgT3BEaXZFcToKLSAgICBvcFN0ciA9ICIgLz0gIjsKLSAgICBicmVh
azsKLSAgY2FzZSBPcFBsdXNFcToKLSAgICBvcFN0ciA9ICIgKz0gIjsKLSAgICBicmVhazsKLSAg
Y2FzZSBPcE1pbnVzRXE6Ci0gICAgb3BTdHIgPSAiIC09ICI7Ci0gICAgYnJlYWs7Ci0gIGNhc2Ug
T3BMU2hpZnQ6Ci0gICAgb3BTdHIgPSAiIDw8PSAiOwotICAgIGJyZWFrOwotICBjYXNlIE9wUlNo
aWZ0OgotICAgIG9wU3RyID0gIiA+Pj0gIjsKLSAgICBicmVhazsKLSAgY2FzZSBPcFVSU2hpZnQ6
Ci0gICAgb3BTdHIgPSAiID4+Pj0gIjsKLSAgICBicmVhazsKLSAgY2FzZSBPcEFuZEVxOgotICAg
IG9wU3RyID0gIiAmPSAiOwotICAgIGJyZWFrOwotICBjYXNlIE9wWE9yRXE6Ci0gICAgb3BTdHIg
PSAiIF49ICI7Ci0gICAgYnJlYWs7Ci0gIGNhc2UgT3BPckVxOgotICAgIG9wU3RyID0gIiB8PSAi
OwotICAgIGJyZWFrOwotICBjYXNlIE9wTW9kRXE6Ci0gICAgb3BTdHIgPSAiICU9ICI7Ci0gICAg
YnJlYWs7Ci0gIGRlZmF1bHQ6Ci0gICAgb3BTdHIgPSAiID89ICI7Ci0gIH0KLSAgcyA8PCBvcFN0
cjsKKyAgICBzIDw8IFByZWNMb2dpY2FsT3IgPDwgbG9naWNhbAorICAgICAgICA8PCAiID8gIiA8
PCBQcmVjQXNzaWdubWVudCA8PCBleHByMQorICAgICAgICA8PCAiIDogIiA8PCBQcmVjQXNzaWdu
bWVudCA8PCBleHByMjsKIH0KIAotdm9pZCBBc3NpZ25SZXNvbHZlTm9kZTo6c3RyZWFtVG8oU291
cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBBc3NpZ25SZXNvbHZlTm9kZTo6c3RyZWFtVG8oU291
cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IG1faWRlbnQ7Ci0gIHN0cmVhbUFzc2lnbm1l
bnRPcGVyYXRvclRvKHMsIG1fb3Blcik7Ci0gIHMgPDwgbV9yaWdodDsKKyAgICBzIDw8IG1faWRl
bnQgPDwgJyAnIDw8IG9wZXJhdG9yU3RyaW5nKG1fb3BlcikgPDwgJyAnIDw8IFByZWNBc3NpZ25t
ZW50IDw8IG1fcmlnaHQ7CiB9CiAKLXZvaWQgQXNzaWduQnJhY2tldE5vZGU6OnN0cmVhbVRvKFNv
dXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgQXNzaWduQnJhY2tldE5vZGU6OnN0cmVhbVRvKFNv
dXJjZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCBtX2Jhc2UgPDwgIlsiIDw8IG1fc3Vic2Ny
aXB0IDw8ICJdIjsKLSAgc3RyZWFtQXNzaWdubWVudE9wZXJhdG9yVG8ocywgbV9vcGVyKTsKLSAg
cyA8PCBtX3JpZ2h0OworICAgIHMgPDwgUHJlY0NhbGwgPDwgbV9iYXNlIDw8ICdbJyA8PCBtX3N1
YnNjcmlwdCA8PCAiXSAiCisgICAgICAgIDw8IG9wZXJhdG9yU3RyaW5nKG1fb3BlcikgPDwgJyAn
IDw8IFByZWNBc3NpZ25tZW50IDw8IG1fcmlnaHQ7CiB9CiAKLXZvaWQgQXNzaWduRG90Tm9kZTo6
c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBBc3NpZ25Eb3ROb2RlOjpzdHJl
YW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgU291cmNlU3RyZWFtOjpEb3RF
eHByIDw8IG1fYmFzZSA8PCAiLiIgPDwgbV9pZGVudDsKLSAgc3RyZWFtQXNzaWdubWVudE9wZXJh
dG9yVG8ocywgbV9vcGVyKTsKLSAgcyA8PCBtX3JpZ2h0OworICAgIHMgPDwgRG90RXhwciA8PCBQ
cmVjQ2FsbCA8PCBtX2Jhc2UgPDwgIi4iIDw8IG1faWRlbnQgPDwgJyAnCisgICAgICAgIDw8IG9w
ZXJhdG9yU3RyaW5nKG1fb3BlcikgPDwgJyAnIDw8IFByZWNBc3NpZ25tZW50IDw8IG1fcmlnaHQ7
CiB9CiAKIHZvaWQgQXNzaWduRXJyb3JOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNv
bnN0CiB7Ci0gIHMgPDwgbV9sZWZ0OwotICBzdHJlYW1Bc3NpZ25tZW50T3BlcmF0b3JUbyhzLCBt
X29wZXIpOwotICBzIDw8IG1fcmlnaHQ7CisgICAgcyA8PCBQcmVjTGVmdEhhbmRTaWRlIDw8IG1f
bGVmdCA8PCAnICcKKyAgICAgICAgPDwgb3BlcmF0b3JTdHJpbmcobV9vcGVyKSA8PCAnICcgPDwg
UHJlY0Fzc2lnbm1lbnQgPDwgbV9yaWdodDsKIH0KIAotdm9pZCBDb21tYU5vZGU6OnN0cmVhbVRv
KFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgQ29tbWFOb2RlOjpzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgZXhwcjEgPDwgIiwgIiA8PCBleHByMjsKKyAgICBz
IDw8IFByZWNBc3NpZ25tZW50IDw8IGV4cHIxIDw8ICIsICIgPDwgUHJlY0Fzc2lnbm1lbnQgPDwg
ZXhwcjI7CiB9CiAKLXZvaWQgQXNzaWduRXhwck5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAm
cykgY29uc3QKK3ZvaWQgQXNzaWduRXhwck5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykg
Y29uc3QKIHsKLSAgcyA8PCAiID0gIiA8PCBleHByOworICAgIHMgPDwgIiA9ICIgPDwgUHJlY0Fz
c2lnbm1lbnQgPDwgZXhwcjsKIH0KIAotdm9pZCBWYXJEZWNsTm9kZTo6c3RyZWFtVG8oU291cmNl
U3RyZWFtICZzKSBjb25zdAordm9pZCBWYXJEZWNsTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFt
JiBzKSBjb25zdAogewotICBzIDw8IGlkZW50IDw8IGluaXQ7CisgICAgcyA8PCBpZGVudCA8PCBp
bml0OwogfQogCi12b2lkIFZhckRlY2xMaXN0Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZz
KSBjb25zdAordm9pZCBWYXJEZWNsTGlzdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykg
Y29uc3QKIHsKLSAgcyA8PCAidmFyICIgPDwgdmFyOwotICBmb3IgKFZhckRlY2xMaXN0Tm9kZSAq
biA9IG5leHQuZ2V0KCk7IG47IG4gPSBuLT5uZXh0LmdldCgpKQotICAgIHMgPDwgIiwgIiA8PCBu
LT52YXI7CisgICAgcyA8PCAidmFyICIgPDwgdmFyOworICAgIGZvciAoVmFyRGVjbExpc3ROb2Rl
KiBuID0gbmV4dC5nZXQoKTsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpCisgICAgICAgIHMgPDwgIiwg
IiA8PCBuLT52YXI7CiB9CiAKLXZvaWQgVmFyU3RhdGVtZW50Tm9kZTo6c3RyZWFtVG8oU291cmNl
U3RyZWFtICZzKSBjb25zdAordm9pZCBWYXJTdGF0ZW1lbnROb2RlOjpzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgU291cmNlU3RyZWFtOjpFbmRsIDw8IG5leHQgPDwg
IjsiOworICAgIHMgPDwgRW5kbCA8PCBuZXh0IDw8ICc7JzsKIH0KIAotdm9pZCBCbG9ja05vZGU6
OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgQmxvY2tOb2RlOjpzdHJlYW1U
byhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgU291cmNlU3RyZWFtOjpFbmRsIDw8
ICJ7IiA8PCBTb3VyY2VTdHJlYW06OkluZGVudAotICAgIDw8IHNvdXJjZSA8PCBTb3VyY2VTdHJl
YW06OlVuaW5kZW50IDw8IFNvdXJjZVN0cmVhbTo6RW5kbCA8PCAifSI7CisgICAgcyA8PCBFbmRs
IDw8ICJ7IiA8PCBJbmRlbnQgPDwgc291cmNlIDw8IFVuaW5kZW50IDw8IEVuZGwgPDwgIn0iOwog
fQogCi12b2lkIEVtcHR5U3RhdGVtZW50Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBj
b25zdAordm9pZCBFbXB0eVN0YXRlbWVudE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykg
Y29uc3QKIHsKLSAgcyA8PCBTb3VyY2VTdHJlYW06OkVuZGwgPDwgIjsiOworICAgIHMgPDwgRW5k
bCA8PCAnOyc7CiB9CiAKLXZvaWQgRXhwclN0YXRlbWVudE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0
cmVhbSAmcykgY29uc3QKK3ZvaWQgRXhwclN0YXRlbWVudE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0
cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCBTb3VyY2VTdHJlYW06OkVuZGwgPDwgZXhwciA8PCAi
OyI7CisgICAgcyA8PCBFbmRsIDw8IGV4cHIgPDwgJzsnOwogfQogCi12b2lkIElmTm9kZTo6c3Ry
ZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBJZk5vZGU6OnN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCBTb3VyY2VTdHJlYW06OkVuZGwgPDwgImlmICgi
IDw8IGV4cHIgPDwgIikiIDw8IFNvdXJjZVN0cmVhbTo6SW5kZW50Ci0gICAgPDwgc3RhdGVtZW50
MSA8PCBTb3VyY2VTdHJlYW06OlVuaW5kZW50OwotICBpZiAoc3RhdGVtZW50MikKLSAgICBzIDw8
IFNvdXJjZVN0cmVhbTo6RW5kbCA8PCAiZWxzZSIgPDwgU291cmNlU3RyZWFtOjpJbmRlbnQKLSAg
ICAgIDw8IHN0YXRlbWVudDIgPDwgU291cmNlU3RyZWFtOjpVbmluZGVudDsKKyAgICBzIDw8IEVu
ZGwgPDwgImlmICgiIDw8IGV4cHIgPDwgJyknIDw8IEluZGVudCA8PCBzdGF0ZW1lbnQxIDw8IFVu
aW5kZW50OworICAgIGlmIChzdGF0ZW1lbnQyKQorICAgICAgICBzIDw8IEVuZGwgPDwgImVsc2Ui
IDw8IEluZGVudCA8PCBzdGF0ZW1lbnQyIDw8IFVuaW5kZW50OwogfQogCi12b2lkIERvV2hpbGVO
b2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIERvV2hpbGVOb2RlOjpz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgU291cmNlU3RyZWFtOjpF
bmRsIDw8ICJkbyAiIDw8IFNvdXJjZVN0cmVhbTo6SW5kZW50Ci0gICAgPDwgc3RhdGVtZW50IDw8
IFNvdXJjZVN0cmVhbTo6VW5pbmRlbnQgPDwgU291cmNlU3RyZWFtOjpFbmRsCi0gICAgPDwgIndo
aWxlICgiIDw8IGV4cHIgPDwgIik7IjsKKyAgICBzIDw8IEVuZGwgPDwgImRvICIgPDwgSW5kZW50
IDw8IHN0YXRlbWVudCA8PCBVbmluZGVudCA8PCBFbmRsCisgICAgICAgIDw8ICJ3aGlsZSAoIiA8
PCBleHByIDw8ICIpOyI7CiB9CiAKLXZvaWQgV2hpbGVOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJl
YW0gJnMpIGNvbnN0Cit2b2lkIFdoaWxlTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBj
b25zdAogewotICBzIDw8IFNvdXJjZVN0cmVhbTo6RW5kbCA8PCAid2hpbGUgKCIgPDwgZXhwciA8
PCAiKSIgPDwgU291cmNlU3RyZWFtOjpJbmRlbnQKLSAgICA8PCBzdGF0ZW1lbnQgPDwgU291cmNl
U3RyZWFtOjpVbmluZGVudDsKKyAgcyA8PCBFbmRsIDw8ICJ3aGlsZSAoIiA8PCBleHByIDw8ICcp
JyA8PCBJbmRlbnQgPDwgc3RhdGVtZW50IDw8IFVuaW5kZW50OwogfQogCi12b2lkIEZvck5vZGU6
OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgRm9yTm9kZTo6c3RyZWFtVG8o
U291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IFNvdXJjZVN0cmVhbTo6RW5kbCA8PCAi
Zm9yICgiCi0gICAgPDwgZXhwcjEKLSAgICA8PCAiOyAiIDw8IGV4cHIyCi0gICAgPDwgIjsgIiA8
PCBleHByMwotICAgIDw8ICIpIiA8PCBTb3VyY2VTdHJlYW06OkluZGVudCA8PCBzdGF0ZW1lbnQg
PDwgU291cmNlU3RyZWFtOjpVbmluZGVudDsKKyAgICBzIDw8IEVuZGwgPDwgImZvciAoIgorICAg
ICAgICA8PCBleHByMQorICAgICAgICA8PCAiOyAiIDw8IGV4cHIyCisgICAgICAgIDw8ICI7ICIg
PDwgZXhwcjMKKyAgICAgICAgPDwgJyknIDw8IEluZGVudCA8PCBzdGF0ZW1lbnQgPDwgVW5pbmRl
bnQ7CiB9CiAKLXZvaWQgRm9ySW5Ob2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0
Cit2b2lkIEZvckluTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBz
IDw8IFNvdXJjZVN0cmVhbTo6RW5kbCA8PCAiZm9yICgiOwotICBpZiAodmFyRGVjbCkKLSAgICBz
IDw8ICJ2YXIgIiA8PCB2YXJEZWNsOwotICBlbHNlCi0gICAgcyA8PCBsZXhwcjsKKyAgICBzIDw8
IEVuZGwgPDwgImZvciAoIjsKKyAgICBpZiAodmFyRGVjbCkKKyAgICAgICAgcyA8PCAidmFyICIg
PDwgdmFyRGVjbDsKKyAgICBlbHNlCisgICAgICAgIHMgPDwgUHJlY0xlZnRIYW5kU2lkZSA8PCBs
ZXhwcjsKIAotICBzIDw8ICIgaW4gIiA8PCBleHByIDw8ICIpIiA8PCBTb3VyY2VTdHJlYW06Oklu
ZGVudAotICAgIDw8IHN0YXRlbWVudCA8PCBTb3VyY2VTdHJlYW06OlVuaW5kZW50OworICAgIHMg
PDwgIiBpbiAiIDw8IGV4cHIgPDwgJyknIDw8IEluZGVudCA8PCBzdGF0ZW1lbnQgPDwgVW5pbmRl
bnQ7CiB9CiAKLXZvaWQgQ29udGludWVOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNv
bnN0Cit2b2lkIENvbnRpbnVlTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAog
ewotICBzIDw8IFNvdXJjZVN0cmVhbTo6RW5kbCA8PCAiY29udGludWUiOwotICBpZiAoIWlkZW50
LmlzTnVsbCgpKQotICAgIHMgPDwgIiAiIDw8IGlkZW50OwotICBzIDw8ICI7IjsKKyAgICBzIDw8
IEVuZGwgPDwgImNvbnRpbnVlIjsKKyAgICBpZiAoIWlkZW50LmlzTnVsbCgpKQorICAgICAgICBz
IDw8ICcgJyA8PCBpZGVudDsKKyAgICBzIDw8ICc7JzsKIH0KIAotdm9pZCBCcmVha05vZGU6OnN0
cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgQnJlYWtOb2RlOjpzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgU291cmNlU3RyZWFtOjpFbmRsIDw8ICJi
cmVhayI7Ci0gIGlmICghaWRlbnQuaXNOdWxsKCkpCi0gICAgcyA8PCAiICIgPDwgaWRlbnQ7Ci0g
IHMgPDwgIjsiOworICAgIHMgPDwgRW5kbCA8PCAiYnJlYWsiOworICAgIGlmICghaWRlbnQuaXNO
dWxsKCkpCisgICAgICAgIHMgPDwgJyAnIDw8IGlkZW50OworICAgIHMgPDwgJzsnOwogfQogCi12
b2lkIFJldHVybk5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgUmV0
dXJuTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IFNvdXJj
ZVN0cmVhbTo6RW5kbCA8PCAicmV0dXJuIjsKLSAgaWYgKHZhbHVlKQotICAgIHMgPDwgIiAiIDw8
IHZhbHVlOwotICBzIDw8ICI7IjsKKyAgICBzIDw8IEVuZGwgPDwgInJldHVybiI7CisgICAgaWYg
KHZhbHVlKQorICAgICAgICBzIDw8ICcgJyA8PCB2YWx1ZTsKKyAgICBzIDw8ICc7JzsKIH0KIAot
dm9pZCBXaXRoTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBXaXRo
Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IFNvdXJjZVN0
cmVhbTo6RW5kbCA8PCAid2l0aCAoIiA8PCBleHByIDw8ICIpICIKLSAgICA8PCBzdGF0ZW1lbnQ7
CisgICAgcyA8PCBFbmRsIDw8ICJ3aXRoICgiIDw8IGV4cHIgPDwgIikgIiA8PCBzdGF0ZW1lbnQ7
CiB9CiAKLXZvaWQgQ2FzZUNsYXVzZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29u
c3QKK3ZvaWQgQ2FzZUNsYXVzZU5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QK
IHsKLSAgcyA8PCBTb3VyY2VTdHJlYW06OkVuZGw7Ci0gIGlmIChleHByKQotICAgIHMgPDwgImNh
c2UgIiA8PCBleHByOwotICBlbHNlCi0gICAgcyA8PCAiZGVmYXVsdCI7Ci0gIHMgPDwgIjoiIDw8
IFNvdXJjZVN0cmVhbTo6SW5kZW50OwotICBpZiAoc291cmNlKQotICAgIHMgPDwgc291cmNlOwot
ICBzIDw8IFNvdXJjZVN0cmVhbTo6VW5pbmRlbnQ7CisgICAgcyA8PCBFbmRsOworICAgIGlmIChl
eHByKQorICAgICAgICBzIDw8ICJjYXNlICIgPDwgZXhwcjsKKyAgICBlbHNlCisgICAgICAgIHMg
PDwgImRlZmF1bHQiOworICAgIHMgPDwgIjoiIDw8IEluZGVudCA8PCBzb3VyY2UgPDwgVW5pbmRl
bnQ7CiB9CiAKLXZvaWQgQ2xhdXNlTGlzdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykg
Y29uc3QKK3ZvaWQgQ2xhdXNlTGlzdE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29u
c3QKIHsKLSAgZm9yIChjb25zdCBDbGF1c2VMaXN0Tm9kZSAqbiA9IHRoaXM7IG47IG4gPSBuLT5n
ZXROZXh0KCkpCi0gICAgcyA8PCBuLT5nZXRDbGF1c2UoKTsKKyAgICBmb3IgKGNvbnN0IENsYXVz
ZUxpc3ROb2RlKiBuID0gdGhpczsgbjsgbiA9IG4tPmdldE5leHQoKSkKKyAgICAgICAgcyA8PCBu
LT5nZXRDbGF1c2UoKTsKIH0KIAotdm9pZCBDYXNlQmxvY2tOb2RlOjpzdHJlYW1UbyhTb3VyY2VT
dHJlYW0gJnMpIGNvbnN0Cit2b2lkIENhc2VCbG9ja05vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYgcykgY29uc3QKIHsKLSAgZm9yIChjb25zdCBDbGF1c2VMaXN0Tm9kZSAqbiA9IGxpc3QxLmdl
dCgpOyBuOyBuID0gbi0+Z2V0TmV4dCgpKQotICAgIHMgPDwgbi0+Z2V0Q2xhdXNlKCk7Ci0gIGlm
IChkZWYpCisgICAgZm9yIChjb25zdCBDbGF1c2VMaXN0Tm9kZSogbiA9IGxpc3QxLmdldCgpOyBu
OyBuID0gbi0+Z2V0TmV4dCgpKQorICAgICAgICBzIDw8IG4tPmdldENsYXVzZSgpOwogICAgIHMg
PDwgZGVmOwotICBmb3IgKGNvbnN0IENsYXVzZUxpc3ROb2RlICpuID0gbGlzdDIuZ2V0KCk7IG47
IG4gPSBuLT5nZXROZXh0KCkpCi0gICAgcyA8PCBuLT5nZXRDbGF1c2UoKTsKKyAgICBmb3IgKGNv
bnN0IENsYXVzZUxpc3ROb2RlKiBuID0gbGlzdDIuZ2V0KCk7IG47IG4gPSBuLT5nZXROZXh0KCkp
CisgICAgICAgIHMgPDwgbi0+Z2V0Q2xhdXNlKCk7CiB9CiAKLXZvaWQgU3dpdGNoTm9kZTo6c3Ry
ZWFtVG8oU291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBTd2l0Y2hOb2RlOjpzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgU291cmNlU3RyZWFtOjpFbmRsIDw8ICJz
d2l0Y2ggKCIgPDwgZXhwciA8PCAiKSB7IgotICAgIDw8IFNvdXJjZVN0cmVhbTo6SW5kZW50IDw8
IGJsb2NrIDw8IFNvdXJjZVN0cmVhbTo6VW5pbmRlbnQKLSAgICA8PCBTb3VyY2VTdHJlYW06OkVu
ZGwgPDwgIn0iOworICAgIHMgPDwgRW5kbCA8PCAic3dpdGNoICgiIDw8IGV4cHIgPDwgIikgeyIK
KyAgICAgICAgPDwgSW5kZW50IDw8IGJsb2NrIDw8IFVuaW5kZW50CisgICAgICAgIDw8IEVuZGwg
PDwgIn0iOwogfQogCi12b2lkIExhYmVsTm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBj
b25zdAordm9pZCBMYWJlbE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsK
LSAgcyA8PCBTb3VyY2VTdHJlYW06OkVuZGwgPDwgbGFiZWwgPDwgIjoiIDw8IFNvdXJjZVN0cmVh
bTo6SW5kZW50Ci0gICAgPDwgc3RhdGVtZW50IDw8IFNvdXJjZVN0cmVhbTo6VW5pbmRlbnQ7Cisg
ICAgcyA8PCBFbmRsIDw8IGxhYmVsIDw8ICI6IiA8PCBJbmRlbnQgPDwgc3RhdGVtZW50IDw8IFVu
aW5kZW50OwogfQogCi12b2lkIFRocm93Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtICZzKSBj
b25zdAordm9pZCBUaHJvd05vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykgY29uc3QKIHsK
LSAgcyA8PCBTb3VyY2VTdHJlYW06OkVuZGwgPDwgInRocm93ICIgPDwgZXhwciA8PCAiOyI7Cisg
ICAgcyA8PCBFbmRsIDw8ICJ0aHJvdyAiIDw8IGV4cHIgPDwgJzsnOwogfQogCi12b2lkIFRyeU5v
ZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgVHJ5Tm9kZTo6c3RyZWFt
VG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBzIDw8IFNvdXJjZVN0cmVhbTo6RW5kbCA8
PCAidHJ5ICIgPDwgdHJ5QmxvY2s7Ci0gIGlmIChjYXRjaEJsb2NrKQotICAgIHMgPDwgU291cmNl
U3RyZWFtOjpFbmRsIDw8ICJjYXRjaCAoIiA8PCBleGNlcHRpb25JZGVudCA8PCAiKSIgPDwgY2F0
Y2hCbG9jazsKLSAgaWYgKGZpbmFsbHlCbG9jaykKLSAgICBzIDw8IFNvdXJjZVN0cmVhbTo6RW5k
bCA8PCAiZmluYWxseSAiIDw8IGZpbmFsbHlCbG9jazsKKyAgICBzIDw8IEVuZGwgPDwgInRyeSAi
IDw8IHRyeUJsb2NrOworICAgIGlmIChjYXRjaEJsb2NrKQorICAgICAgICBzIDw8IEVuZGwgPDwg
ImNhdGNoICgiIDw8IGV4Y2VwdGlvbklkZW50IDw8ICcpJyA8PCBjYXRjaEJsb2NrOworICAgIGlm
IChmaW5hbGx5QmxvY2spCisgICAgICAgIHMgPDwgRW5kbCA8PCAiZmluYWxseSAiIDw8IGZpbmFs
bHlCbG9jazsKIH0KIAotdm9pZCBQYXJhbWV0ZXJOb2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0g
JnMpIGNvbnN0Cit2b2lkIFBhcmFtZXRlck5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSYgcykg
Y29uc3QKIHsKLSAgcyA8PCBpZDsKLSAgZm9yIChQYXJhbWV0ZXJOb2RlICpuID0gbmV4dC5nZXQo
KTsgbjsgbiA9IG4tPm5leHQuZ2V0KCkpCi0gICAgcyA8PCAiLCAiIDw8IG4tPmlkOworICAgIHMg
PDwgaWQ7CisgICAgZm9yIChQYXJhbWV0ZXJOb2RlKiBuID0gbmV4dC5nZXQoKTsgbjsgbiA9IG4t
Pm5leHQuZ2V0KCkpCisgICAgICAgIHMgPDwgIiwgIiA8PCBuLT5pZDsKIH0KIAotdm9pZCBGdW5j
RGVjbE5vZGU6OnN0cmVhbVRvKFNvdXJjZVN0cmVhbSAmcykgY29uc3QKK3ZvaWQgRnVuY0RlY2xO
b2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0mIHMpIGNvbnN0CiB7Ci0gIHMgPDwgU291cmNlU3Ry
ZWFtOjpFbmRsIDw8ICJmdW5jdGlvbiAiIDw8IGlkZW50IDw8ICIoIiA8PCBwYXJhbSA8PCAiKSIg
PDwgYm9keTsKKyAgICBzIDw8IEVuZGwgPDwgImZ1bmN0aW9uICIgPDwgaWRlbnQgPDwgJygnIDw8
IHBhcmFtIDw8ICcpJyA8PCBib2R5OwogfQogCi12b2lkIEZ1bmNFeHByTm9kZTo6c3RyZWFtVG8o
U291cmNlU3RyZWFtICZzKSBjb25zdAordm9pZCBGdW5jRXhwck5vZGU6OnN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYgcykgY29uc3QKIHsKLSAgcyA8PCAiZnVuY3Rpb24gIiA8PCBpZGVudCA8PCAiKCIg
PDwgcGFyYW0gPDwgIikiIDw8IGJvZHk7CisgICAgcyA8PCAiZnVuY3Rpb24gIiA8PCBpZGVudCA8
PCAnKCcgPDwgcGFyYW0gPDwgJyknIDw8IGJvZHk7CiB9CiAKLXZvaWQgU291cmNlRWxlbWVudHNO
b2RlOjpzdHJlYW1UbyhTb3VyY2VTdHJlYW0gJnMpIGNvbnN0Cit2b2lkIFNvdXJjZUVsZW1lbnRz
Tm9kZTo6c3RyZWFtVG8oU291cmNlU3RyZWFtJiBzKSBjb25zdAogewotICBmb3IgKGNvbnN0IFNv
dXJjZUVsZW1lbnRzTm9kZSAqbiA9IHRoaXM7IG47IG4gPSBuLT5uZXh0LmdldCgpKQotICAgIHMg
PDwgbi0+bm9kZTsKKyAgICBmb3IgKGNvbnN0IFNvdXJjZUVsZW1lbnRzTm9kZSogbiA9IHRoaXM7
IG47IG4gPSBuLT5uZXh0LmdldCgpKQorICAgICAgICBzIDw8IG4tPm5vZGU7Cit9CisKIH0KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9ub2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlw
dENvcmUva2pzL25vZGVzLmNwcAkocmV2aXNpb24gMjcxODApCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvbm9kZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTAsMTEgKzI5MCw2IEBAIENvbXBsZXRp
b24gTm9kZTo6cmV0aHJvd0V4Y2VwdGlvbihFeGVjU3QKICAgICByZXR1cm4gQ29tcGxldGlvbihU
aHJvdywgZXhjZXB0aW9uKTsKIH0KIAotTm9kZSAqTm9kZTo6bm9kZUluc2lkZUFsbFBhcmVucygp
Ci17Ci0gICAgcmV0dXJuIHRoaXM7Ci19Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSBTdGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFN0
YXRlbWVudE5vZGU6OlN0YXRlbWVudE5vZGUoKSAKQEAgLTM5OCwyMyArMzkzLDYgQEAgSlNWYWx1
ZSAqUmVzb2x2ZU5vZGU6OmV2YWx1YXRlKEV4ZWNTdGF0ZQogICByZXR1cm4gdGhyb3dVbmRlZmlu
ZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tIEdyb3VwTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotLy8gRUNNQSAxMS4xLjYKLUpTVmFsdWUgKkdyb3VwTm9kZTo6ZXZhbHVhdGUoRXhlY1N0
YXRlICpleGVjKQotewotICByZXR1cm4gZ3JvdXAtPmV2YWx1YXRlKGV4ZWMpOwotfQotCi1Ob2Rl
ICpHcm91cE5vZGU6Om5vZGVJbnNpZGVBbGxQYXJlbnMoKQotewotICAgIE5vZGUgKm4gPSB0aGlz
OwotICAgIGRvCi0gICAgICAgIG4gPSBzdGF0aWNfY2FzdDxHcm91cE5vZGUgKj4obiktPmdyb3Vw
LmdldCgpOwotICAgIHdoaWxlIChuLT5pc0dyb3VwTm9kZSgpKTsKLSAgICByZXR1cm4gbjsKLX0K
LQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVsZW1lbnROb2RlIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS4xLjQKQEAgLTQ3OSwyMyAr
NDU3LDIwIEBAIEpTVmFsdWUgKlByb3BlcnR5TGlzdE5vZGU6OmV2YWx1YXRlKEV4ZWMKICAgSlNP
YmplY3QgKm9iaiA9IGV4ZWMtPmxleGljYWxJbnRlcnByZXRlcigpLT5idWlsdGluT2JqZWN0KCkt
PmNvbnN0cnVjdChleGVjLCBMaXN0OjplbXB0eSgpKTsKICAgCiAgIGZvciAoUHJvcGVydHlMaXN0
Tm9kZSAqcCA9IHRoaXM7IHA7IHAgPSBwLT5uZXh0LmdldCgpKSB7Ci0gICAgSlNWYWx1ZSAqbiA9
IHAtPm5vZGUtPm5hbWUtPmV2YWx1YXRlKGV4ZWMpOwotICAgIEtKU19DSEVDS0VYQ0VQVElPTlZB
TFVFCiAgICAgSlNWYWx1ZSAqdiA9IHAtPm5vZGUtPmFzc2lnbi0+ZXZhbHVhdGUoZXhlYyk7CiAg
ICAgS0pTX0NIRUNLRVhDRVBUSU9OVkFMVUUKICAgICAKLSAgICBJZGVudGlmaWVyIHByb3BlcnR5
TmFtZSA9IElkZW50aWZpZXIobi0+dG9TdHJpbmcoZXhlYykpOwogICAgIHN3aXRjaCAocC0+bm9k
ZS0+dHlwZSkgewogICAgICAgY2FzZSBQcm9wZXJ0eU5vZGU6OkdldHRlcjoKICAgICAgICAgQVNT
RVJUKHYtPmlzT2JqZWN0KCkpOwotICAgICAgICBvYmotPmRlZmluZUdldHRlcihleGVjLCBwcm9w
ZXJ0eU5hbWUsIHN0YXRpY19jYXN0PEpTT2JqZWN0ICo+KHYpKTsKKyAgICAgICAgb2JqLT5kZWZp
bmVHZXR0ZXIoZXhlYywgcC0+bm9kZS0+bmFtZSgpLCBzdGF0aWNfY2FzdDxKU09iamVjdCAqPih2
KSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBQcm9wZXJ0eU5vZGU6OlNldHRlcjoKICAg
ICAgICAgQVNTRVJUKHYtPmlzT2JqZWN0KCkpOwotICAgICAgICBvYmotPmRlZmluZVNldHRlcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIHN0YXRpY19jYXN0PEpTT2JqZWN0ICo+KHYpKTsKKyAgICAgICAg
b2JqLT5kZWZpbmVTZXR0ZXIoZXhlYywgcC0+bm9kZS0+bmFtZSgpLCBzdGF0aWNfY2FzdDxKU09i
amVjdCAqPih2KSk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBQcm9wZXJ0eU5vZGU6OkNv
bnN0YW50OgotICAgICAgICBvYmotPnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHYpOworICAgICAg
ICBvYmotPnB1dChleGVjLCBwLT5ub2RlLT5uYW1lKCksIHYpOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgIH0KQEAgLTUxNiwyMiArNDkxLDYgQEAgSlNWYWx1ZSAqUHJvcGVydHlOb2RlOjpldmFs
dWF0ZShFeGVjU3RhdAogICByZXR1cm4ganNOdWxsKCk7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gUHJvcGVydHlOYW1lTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLS8vIEVDTUEgMTEuMS41Ci1KU1ZhbHVlICpQcm9wZXJ0eU5hbWVOb2RlOjpldmFs
dWF0ZShFeGVjU3RhdGUqKQotewotICBKU1ZhbHVlICpzOwotCi0gIGlmIChzdHIuaXNOdWxsKCkp
IHsKLSAgICBzID0ganNTdHJpbmcoVVN0cmluZzo6ZnJvbShudW1lcmljKSk7Ci0gIH0gZWxzZSB7
Ci0gICAgcyA9IGpzT3duZWRTdHJpbmcoc3RyLnVzdHJpbmcoKSk7Ci0gIH0KLQotICByZXR1cm4g
czsKLX0KLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEJyYWNrZXRBY2Nlc3Nv
ck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gRUNNQSAxMS4yLjFh
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvbm9kZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvbm9kZXMuaAkocmV2aXNpb24gMjcxODApCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvbm9kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNDUgKzQ0LDUwIEBACiAKIG5hbWVzcGFj
ZSBLSlMgewogCi0gIGNsYXNzIEZ1bmNEZWNsTm9kZTsKLSAgY2xhc3MgUHJvZ3JhbU5vZGU7Ci0g
IGNsYXNzIFByb3BlcnR5TmFtZU5vZGU7Ci0gIGNsYXNzIFByb3BlcnR5TGlzdE5vZGU7Ci0gIGNs
YXNzIFJlZ0V4cDsKLSAgY2xhc3MgU291cmNlRWxlbWVudHNOb2RlOwotICBjbGFzcyBTb3VyY2VT
dHJlYW07Ci0gIGNsYXNzIFZhckRlY2xOb2RlOwotCi0gIGVudW0gT3BlcmF0b3IgeyBPcEVxdWFs
LAotICAgICAgICAgICAgICAgICAgT3BFcUVxLAotICAgICAgICAgICAgICAgICAgT3BOb3RFcSwK
LSAgICAgICAgICAgICAgICAgIE9wU3RyRXEsCi0gICAgICAgICAgICAgICAgICBPcFN0ck5FcSwK
LSAgICAgICAgICAgICAgICAgIE9wUGx1c0VxLAotICAgICAgICAgICAgICAgICAgT3BNaW51c0Vx
LAotICAgICAgICAgICAgICAgICAgT3BNdWx0RXEsCi0gICAgICAgICAgICAgICAgICBPcERpdkVx
LAotICAgICAgICAgICAgICAgICAgT3BQbHVzUGx1cywKLSAgICAgICAgICAgICAgICAgIE9wTWlu
dXNNaW51cywKLSAgICAgICAgICAgICAgICAgIE9wTGVzcywKLSAgICAgICAgICAgICAgICAgIE9w
TGVzc0VxLAotICAgICAgICAgICAgICAgICAgT3BHcmVhdGVyLAotICAgICAgICAgICAgICAgICAg
T3BHcmVhdGVyRXEsCi0gICAgICAgICAgICAgICAgICBPcEFuZEVxLAotICAgICAgICAgICAgICAg
ICAgT3BYT3JFcSwKLSAgICAgICAgICAgICAgICAgIE9wT3JFcSwKLSAgICAgICAgICAgICAgICAg
IE9wTW9kRXEsCi0gICAgICAgICAgICAgICAgICBPcEFuZCwKLSAgICAgICAgICAgICAgICAgIE9w
T3IsCi0gICAgICAgICAgICAgICAgICBPcEJpdEFuZCwKLSAgICAgICAgICAgICAgICAgIE9wQml0
WE9yLAotICAgICAgICAgICAgICAgICAgT3BCaXRPciwKLSAgICAgICAgICAgICAgICAgIE9wTFNo
aWZ0LAotICAgICAgICAgICAgICAgICAgT3BSU2hpZnQsCi0gICAgICAgICAgICAgICAgICBPcFVS
U2hpZnQsCi0gICAgICAgICAgICAgICAgICBPcEluLAotICAgICAgICAgICAgICAgICAgT3BJbnN0
YW5jZU9mCi0gIH07CisgICAgY2xhc3MgRnVuY0RlY2xOb2RlOworICAgIGNsYXNzIFByb3BlcnR5
TGlzdE5vZGU7CisgICAgY2xhc3MgU291cmNlRWxlbWVudHNOb2RlOworICAgIGNsYXNzIFNvdXJj
ZVN0cmVhbTsKKyAgICBjbGFzcyBWYXJEZWNsTm9kZTsKKworICAgIGVudW0gT3BlcmF0b3Igewor
ICAgICAgICBPcEVxdWFsLAorICAgICAgICBPcFBsdXNFcSwKKyAgICAgICAgT3BNaW51c0VxLAor
ICAgICAgICBPcE11bHRFcSwKKyAgICAgICAgT3BEaXZFcSwKKyAgICAgICAgT3BQbHVzUGx1cywK
KyAgICAgICAgT3BNaW51c01pbnVzLAorICAgICAgICBPcEFuZEVxLAorICAgICAgICBPcFhPckVx
LAorICAgICAgICBPcE9yRXEsCisgICAgICAgIE9wTW9kRXEsCisgICAgICAgIE9wTFNoaWZ0LAor
ICAgICAgICBPcFJTaGlmdCwKKyAgICAgICAgT3BVUlNoaWZ0LAorICAgIH07CisKKyAgICBlbnVt
IFByZWNlZGVuY2UgeworICAgICAgICBQcmVjUHJpbWFyeSwKKyAgICAgICAgUHJlY01lbWJlciwK
KyAgICAgICAgUHJlY0NhbGwsCisgICAgICAgIFByZWNMZWZ0SGFuZFNpZGUsCisgICAgICAgIFBy
ZWNQb3N0Zml4LAorICAgICAgICBQcmVjVW5hcnksCisgICAgICAgIFByZWNNdWx0aXBsaWNpdGF2
ZSwKKyAgICAgICAgUHJlY0FkZGl0aXZlLAorICAgICAgICBQcmVjU2hpZnQsCisgICAgICAgIFBy
ZWNSZWxhdGlvbmFsLAorICAgICAgICBQcmVjRXF1YWxpdHksCisgICAgICAgIFByZWNCaXR3aXNl
QW5kLAorICAgICAgICBQcmVjQml0d2lzZVhvciwKKyAgICAgICAgUHJlY0JpdHdpc2VPciwKKyAg
ICAgICAgUHJlY0xvZ2ljYWxBbmQsCisgICAgICAgIFByZWNMb2dpY2FsT3IsCisgICAgICAgIFBy
ZWNDb25kaXRpb25hbCwKKyAgICAgICAgUHJlY0Fzc2lnbm1lbnQsCisgICAgICAgIFByZWNFeHBy
ZXNzaW9uCisgICAgfTsKICAgCiAgIHN0cnVjdCBEZWNsYXJhdGlvblN0YWNrcyB7CiAgICAgICB0
eXBlZGVmIFZlY3RvcjxOb2RlKiwgMTY+IE5vZGVTdGFjazsKQEAgLTExMCwyNSArMTE1LDI1IEBA
IG5hbWVzcGFjZSBLSlMgewogCiAgICAgdmlydHVhbCBKU1ZhbHVlICpldmFsdWF0ZShFeGVjU3Rh
dGUgKmV4ZWMpIEtKU19GQVNUX0NBTEwgPSAwOwogICAgIFVTdHJpbmcgdG9TdHJpbmcoKSBjb25z
dCBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0m
KSBjb25zdCBLSlNfRkFTVF9DQUxMID0gMDsKICAgICBpbnQgbGluZU5vKCkgY29uc3QgS0pTX0ZB
U1RfQ0FMTCB7IHJldHVybiBtX2xpbmU7IH0KICAgICB2b2lkIHJlZigpIEtKU19GQVNUX0NBTEw7
CiAgICAgdm9pZCBkZXJlZigpIEtKU19GQVNUX0NBTEw7CiAgICAgdW5zaWduZWQgcmVmY291bnQo
KSBLSlNfRkFTVF9DQUxMOwogICAgIHN0YXRpYyB2b2lkIGNsZWFyTmV3Tm9kZXMoKSBLSlNfRkFT
VF9DQUxMOwogCi0gICAgdmlydHVhbCBOb2RlICpub2RlSW5zaWRlQWxsUGFyZW5zKCkgS0pTX0ZB
U1RfQ0FMTDsKLQogICAgIHZpcnR1YWwgYm9vbCBpc051bWJlcigpIGNvbnN0IEtKU19GQVNUX0NB
TEwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbW1lZGlhdGVWYWx1ZSgp
IGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNMb2NhdGlvbigpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNCcmFja2V0QWNjZXNzb3JOb2RlKCkgY29uc3Qg
S0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0RvdEFj
Y2Vzc29yTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgaXNHcm91cE5vZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGZh
bHNlOyB9CisKKyAgICAvLyBTZXJpYWxpemF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMID0gMDsKKyAgICB2aXJ0dWFsIFBy
ZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0ID0gMDsKIAogICAgIC8vIFVzZWQgZm9yIGl0ZXJh
dGl2ZSwgZGVwdGgtZmlyc3QgdHJhdmVyc2FsIG9mIHRoZSBub2RlIHRyZWUuIERvZXMgbm90IGNy
b3NzIGZ1bmN0aW9uIGNhbGwgYm91bmRhcmllcy4KLSAgICBib29sIG1heUhhdmVEZWNsYXJhdGlv
bnMoKSB7IHJldHVybiBtX21heUhhdmVEZWNsYXJhdGlvbnM7IH0KKyAgICBib29sIG1heUhhdmVE
ZWNsYXJhdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX21heUhhdmVEZWNsYXJhdGlvbnM7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0RGVjbGFyYXRpb25zKERlY2xhcmF0aW9uU3RhY2tzJikgS0pTX0ZB
U1RfQ0FMTCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYnJl
YWtDeWNsZSgpIEtKU19GQVNUX0NBTEwgeyB9CkBAIC0xNjksNiArMTc0LDcgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgYm9vbCBoaXRTdGF0ZW1lbnQoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsK
ICAgICB2aXJ0dWFsIENvbXBsZXRpb24gZXhlY3V0ZShFeGVjU3RhdGUgKmV4ZWMpIEtKU19GQVNU
X0NBTEwgPSAwOwogICAgIHZvaWQgcHVzaExhYmVsKGNvbnN0IElkZW50aWZpZXIgJmlkKSBLSlNf
RkFTVF9DQUxMIHsgbHMucHVzaChpZCk7IH0KKyAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2Vk
ZW5jZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBQcmVjRXhwcmVzc2lv
bjsgfQogICBwcm90ZWN0ZWQ6CiAgICAgTGFiZWxTdGFjayBsczsKICAgcHJpdmF0ZToKQEAgLTE4
MSw2ICsxODcsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBOdWxsTm9kZSgpIEtKU19GQVNUX0NB
TEwge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwog
ICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9D
QUxMOworICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4g
UHJlY1ByaW1hcnk7IH0KICAgfTsKIAogICBjbGFzcyBCb29sZWFuTm9kZSA6IHB1YmxpYyBOb2Rl
IHsKQEAgLTE4OCw2ICsxOTUsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBCb29sZWFuTm9kZShi
b29sIHYpIEtKU19GQVNUX0NBTEwgOiB2YWx1ZSh2KSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRl
KEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNv
dXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNl
IHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjUHJpbWFyeTsgfQogICBwcml2YXRlOgog
ICAgIGJvb2wgdmFsdWU7CiAgIH07CkBAIC0xOTcsNiArMjA1LDcgQEAgbmFtZXNwYWNlIEtKUyB7
CiAgICAgTnVtYmVyTm9kZShkb3VibGUgdikgS0pTX0ZBU1RfQ0FMTCA6IHZhbCh2KSB7fQogICAg
IEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVh
bCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAg
dmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjUHJpbWFy
eTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiB0cnVlOyB9CiAgICAgZG91YmxlIHZhbHVlKCkgY29uc3QgS0pTX0ZBU1RfQ0FMTCB7
IHJldHVybiB2YWw7IH0KQEAgLTIxMCw2ICsyMTksNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAg
IEltbWVkaWF0ZU51bWJlck5vZGUoSlNWYWx1ZSogdikgS0pTX0ZBU1RfQ0FMTCA6IG1fdmFsdWUo
dikge30KICAgICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
CiAgICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZB
U1RfQ0FMTDsKKyAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyBy
ZXR1cm4gUHJlY1ByaW1hcnk7IH0KICAgICAgIAogICAgICAgdmlydHVhbCBib29sIGlzSW1tZWRp
YXRlVmFsdWUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7IH0KICAgICAgIGRv
dWJsZSB2YWx1ZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gSlNJbW1lZGlhdGU6OnRv
RG91YmxlKG1fdmFsdWUpOyB9CkBAIC0yMjMsNiArMjMzLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAg
ICAgU3RyaW5nTm9kZShjb25zdCBVU3RyaW5nICp2KSBLSlNfRkFTVF9DQUxMIHsgdmFsdWUgPSAq
djsgfQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NB
TEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQ
cmVjUHJpbWFyeTsgfQogICBwcml2YXRlOgogICAgIFVTdHJpbmcgdmFsdWU7CiAgIH07CkBAIC0y
MzMsNiArMjQ0LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICA6IHBhdHRlcm4ocCksIGZsYWdz
KGYpIHsgfQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNU
X0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVy
biBQcmVjUHJpbWFyeTsgfQogICBwcml2YXRlOgogICAgIFVTdHJpbmcgcGF0dGVybiwgZmxhZ3M7
CiAgIH07CkBAIC0yNDIsMTMgKzI1NCwxNSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBUaGlzTm9k
ZSgpIEtKU19GQVNUX0NBTEwge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBL
SlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBj
b25zdCBLSlNfRkFTVF9DQUxMOwotICB9OworICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRl
bmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1ByaW1hcnk7IH0KKyB9OwogCiAgIGNsYXNzIFJlc29s
dmVOb2RlIDogcHVibGljIE5vZGUgewogICBwdWJsaWM6CiAgICAgUmVzb2x2ZU5vZGUoY29uc3Qg
SWRlbnRpZmllciAmcykgS0pTX0ZBU1RfQ0FMTCA6IGlkZW50KHMpIHsgfQogICAgIEpTVmFsdWUq
IGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0
cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQ
cmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjUHJpbWFyeTsgfQogCiAg
ICAgdmlydHVhbCBib29sIGlzTG9jYXRpb24oKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJu
IHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSZXNvbHZlTm9kZSgpIGNvbnN0IEtKU19GQVNU
X0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMjU4LDE3ICsyNzIsNiBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICBJZGVudGlmaWVyIGlkZW50OwogICB9OwogCi0gIGNsYXNzIEdyb3VwTm9kZSA6IHB1
YmxpYyBOb2RlIHsKLSAgcHVibGljOgotICAgIEdyb3VwTm9kZShOb2RlICpnKSBLSlNfRkFTVF9D
QUxMIDogZ3JvdXAoZykgeyB9Ci0gICAgdmlydHVhbCBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3Rh
dGUqKSBLSlNfRkFTVF9DQUxMOwotICAgIHZpcnR1YWwgTm9kZSAqbm9kZUluc2lkZUFsbFBhcmVu
cygpIEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gICAgdmlydHVhbCBib29sIGlzR3JvdXBOb2RlKCkg
Y29uc3QgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiB0cnVlOyB9Ci0gIHByaXZhdGU6Ci0gICAgUmVm
UHRyPE5vZGU+IGdyb3VwOwotICB9OwotCiAgIGNsYXNzIEVsZW1lbnROb2RlIDogcHVibGljIE5v
ZGUgewogICBwdWJsaWM6CiAgICAgLy8gbGlzdCBwb2ludGVyIGlzIHRhaWwgb2YgYSBjaXJjdWxh
ciBsaXN0LCBjcmFja2VkIGluIHRoZSBBcnJheU5vZGUgY3RvcgpAQCAtMjc5LDYgKzI4Miw3IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0m
KSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIFBhc3NSZWZQdHI8RWxlbWVudE5vZGU+IHJlbGVh
c2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJldHVybiBuZXh0LnJlbGVhc2UoKTsgfQogICAgIHZp
cnR1YWwgdm9pZCBicmVha0N5Y2xlKCkgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIFByZWNl
ZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBQ
cmVjRXhwcmVzc2lvbjsgfQogICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBBcnJheU5vZGU7
CiAgICAgTGlzdFJlZlB0cjxFbGVtZW50Tm9kZT4gbmV4dDsKQEAgLTI5NSwzMyArMjk5LDI1IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgICAgOiBlbGVtZW50KGVsZS0+bmV4dC5yZWxlYXNlKCkpLCBl
bGlzaW9uKGVsaSksIG9wdCh0cnVlKSB7IFBhcnNlcjo6cmVtb3ZlTm9kZUN5Y2xlKGVsZW1lbnQu
Z2V0KCkpOyB9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FM
TDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZB
U1RfQ0FMTDsKKyAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0
dXJuIFByZWNQcmltYXJ5OyB9CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPEVsZW1lbnROb2RlPiBl
bGVtZW50OwogICAgIGludCBlbGlzaW9uOwogICAgIGJvb2wgb3B0OwogICB9OwogCi0gIGNsYXNz
IFByb3BlcnR5TmFtZU5vZGUgOiBwdWJsaWMgTm9kZSB7Ci0gIHB1YmxpYzoKLSAgICBQcm9wZXJ0
eU5hbWVOb2RlKGRvdWJsZSBkKSBLSlNfRkFTVF9DQUxMIDogbnVtZXJpYyhkKSB7IH0KLSAgICBQ
cm9wZXJ0eU5hbWVOb2RlKGNvbnN0IElkZW50aWZpZXIgJnMpIEtKU19GQVNUX0NBTEwgOiBzdHIo
cykgeyB9Ci0gICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsK
LSAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKLSAgcHJpdmF0ZToKLSAgICBkb3VibGUgbnVtZXJpYzsKLSAgICBJZGVudGlmaWVyIHN0
cjsKLSAgfTsKLSAgCiAgIGNsYXNzIFByb3BlcnR5Tm9kZSA6IHB1YmxpYyBOb2RlIHsKICAgcHVi
bGljOgogICAgIGVudW0gVHlwZSB7IENvbnN0YW50LCBHZXR0ZXIsIFNldHRlciB9OwotICAgIFBy
b3BlcnR5Tm9kZShQcm9wZXJ0eU5hbWVOb2RlICpuLCBOb2RlICphLCBUeXBlIHQpIEtKU19GQVNU
X0NBTEwKLSAgICAgIDogbmFtZShuKSwgYXNzaWduKGEpLCB0eXBlKHQpIHsgfQorICAgIFByb3Bl
cnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiBuLCBOb2RlICphLCBUeXBlIHQpIEtKU19GQVNUX0NB
TEwKKyAgICAgIDogbV9uYW1lKG4pLCBhc3NpZ24oYSksIHR5cGUodCkgeyB9CiAgICAgSlNWYWx1
ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQg
c3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICBmcmllbmQg
Y2xhc3MgUHJvcGVydHlMaXN0Tm9kZTsKKyAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5j
ZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBQcmVjRXhwcmVzc2lvbjsg
fQorICAgIGNvbnN0IElkZW50aWZpZXImIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0K
ICAgcHJpdmF0ZToKLSAgICBSZWZQdHI8UHJvcGVydHlOYW1lTm9kZT4gbmFtZTsKKyAgICBJZGVu
dGlmaWVyIG1fbmFtZTsKICAgICBSZWZQdHI8Tm9kZT4gYXNzaWduOwogICAgIFR5cGUgdHlwZTsK
ICAgfTsKQEAgLTMzNyw2ICszMzMsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICBQYXNz
UmVmUHRyPFByb3BlcnR5TGlzdE5vZGU+IHJlbGVhc2VOZXh0KCkgS0pTX0ZBU1RfQ0FMTCB7IHJl
dHVybiBuZXh0LnJlbGVhc2UoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBicmVha0N5Y2xlKCkgS0pT
X0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsg
QVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBQcmVjRXhwcmVzc2lvbjsgfQogICBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBPYmplY3RMaXRlcmFsTm9kZTsKICAgICBSZWZQdHI8UHJvcGVy
dHlOb2RlPiBub2RlOwpAQCAtMzQ5LDYgKzM0Niw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIE9i
amVjdExpdGVyYWxOb2RlKFByb3BlcnR5TGlzdE5vZGUgKmwpIEtKU19GQVNUX0NBTEwgOiBsaXN0
KGwtPm5leHQucmVsZWFzZSgpKSB7IFBhcnNlcjo6cmVtb3ZlTm9kZUN5Y2xlKGxpc3QuZ2V0KCkp
OyB9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FM
TDsKKyAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFBy
ZWNQcmltYXJ5OyB9CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPFByb3BlcnR5TGlzdE5vZGU+IGxp
c3Q7CiAgIH07CkBAIC0zNTgsNiArMzU2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgQnJhY2tl
dEFjY2Vzc29yTm9kZShOb2RlICplMSwgTm9kZSAqZTIpIEtKU19GQVNUX0NBTEwgOiBleHByMShl
MSksIGV4cHIyKGUyKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19G
QVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0
IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25z
dCB7IHJldHVybiBQcmVjTWVtYmVyOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigp
IGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBp
c0JyYWNrZXRBY2Nlc3Nvck5vZGUoKSBjb25zdCBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIHRydWU7
IH0KQEAgLTM3NCw2ICszNzMsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBEb3RBY2Nlc3Nvck5v
ZGUoTm9kZSAqZSwgY29uc3QgSWRlbnRpZmllciAmcykgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSks
IGlkZW50KHMpIHsgfQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNU
X0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtK
U19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7
IHJldHVybiBQcmVjTWVtYmVyOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNv
bnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0Rv
dEFjY2Vzc29yTm9kZSgpIGNvbnN0IEtKU19GQVNUX0NBTEwgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
Mzk2LDYgKzM5Niw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwogICAgIFBhc3NSZWZQdHI8QXJn
dW1lbnRMaXN0Tm9kZT4gcmVsZWFzZU5leHQoKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIG5leHQu
cmVsZWFzZSgpOyB9CiAgICAgdmlydHVhbCB2b2lkIGJyZWFrQ3ljbGUoKSBLSlNfRkFTVF9DQUxM
OworICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgcmV0dXJuIFByZWNFeHByZXNzaW9uOyB9CiAgIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIEFyZ3VtZW50c05vZGU7CiAgICAgTGlzdFJlZlB0cjxBcmd1bWVudExpc3ROb2Rl
PiBuZXh0OwpAQCAtNDEwLDYgKzQxMSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIEpTVmFsdWUq
IGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgTGlzdCBldmFsdWF0ZUxp
c3QoRXhlY1N0YXRlICpleGVjKSBLSlNfRkFTVF9DQUxMIHsgcmV0dXJuIGxpc3QgPyBsaXN0LT5l
dmFsdWF0ZUxpc3QoZXhlYykgOiBMaXN0KCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIFByZWNlZGVu
Y2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBQcmVj
RXhwcmVzc2lvbjsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxBcmd1bWVudExpc3ROb2RlPiBs
aXN0OwogICB9OwpAQCAtNDIwLDYgKzQyMiw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIE5ld0V4
cHJOb2RlKE5vZGUgKmUsIEFyZ3VtZW50c05vZGUgKmEpIEtKU19GQVNUX0NBTEwgOiBleHByKGUp
LCBhcmdzKGEpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1Rf
Q0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pT
X0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsg
cmV0dXJuIFByZWNMZWZ0SGFuZFNpZGU7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4g
ZXhwcjsKICAgICBSZWZQdHI8QXJndW1lbnRzTm9kZT4gYXJnczsKQEAgLTQzMCw2ICs0MzMsNyBA
QCBuYW1lc3BhY2UgS0pTIHsKICAgICBGdW5jdGlvbkNhbGxWYWx1ZU5vZGUoTm9kZSAqZSwgQXJn
dW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSksIGFyZ3MoYSkge30KICAgICBK
U1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZp
cnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY0NhbGw7IH0K
ICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsKICAgICBSZWZQdHI8QXJndW1lbnRz
Tm9kZT4gYXJnczsKQEAgLTQ0MCw2ICs0NDQsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBGdW5j
dGlvbkNhbGxSZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyJiBpLCBBcmd1bWVudHNOb2RlICph
KSBLSlNfRkFTVF9DQUxMIDogaWRlbnQoaSksIGFyZ3MoYSkge30KICAgICBKU1ZhbHVlKiBldmFs
dWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgUHJlY2Vk
ZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY0NhbGw7IH0KICAgcHJpdmF0ZToK
ICAgICBJZGVudGlmaWVyIGlkZW50OwogICAgIFJlZlB0cjxBcmd1bWVudHNOb2RlPiBhcmdzOwpA
QCAtNDUwLDQwICs0NTUsMzEgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgRnVuY3Rpb25DYWxsQnJh
Y2tldE5vZGUoTm9kZSAqYiwgTm9kZSAqcywgQXJndW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FM
TCA6IGJhc2UoYiksIHN1YnNjcmlwdChzKSwgYXJncyhhKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1
YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRv
KFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRl
bmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjQ2FsbDsgfQogICBwcm90ZWN0ZWQ6
CiAgICAgUmVmUHRyPE5vZGU+IGJhc2U7CiAgICAgUmVmUHRyPE5vZGU+IHN1YnNjcmlwdDsKICAg
ICBSZWZQdHI8QXJndW1lbnRzTm9kZT4gYXJnczsKICAgfTsKIAotICBjbGFzcyBGdW5jdGlvbkNh
bGxQYXJlbkJyYWNrZXROb2RlIDogcHVibGljIEZ1bmN0aW9uQ2FsbEJyYWNrZXROb2RlIHsKLSAg
cHVibGljOgotICAgIEZ1bmN0aW9uQ2FsbFBhcmVuQnJhY2tldE5vZGUoTm9kZSAqYiwgTm9kZSAq
cywgQXJndW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FMTCA6IEZ1bmN0aW9uQ2FsbEJyYWNrZXRO
b2RlKGIsIHMsIGEpIHt9Ci0gICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYp
IGNvbnN0IEtKU19GQVNUX0NBTEw7Ci0gIH07Ci0KICAgY2xhc3MgRnVuY3Rpb25DYWxsRG90Tm9k
ZSA6IHB1YmxpYyBOb2RlIHsKICAgcHVibGljOgogICAgIEZ1bmN0aW9uQ2FsbERvdE5vZGUoTm9k
ZSAqYiwgY29uc3QgSWRlbnRpZmllciAmaSwgQXJndW1lbnRzTm9kZSAqYSkgS0pTX0ZBU1RfQ0FM
TCA6IGJhc2UoYiksIGlkZW50KGkpLCBhcmdzKGEpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUo
RXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291
cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIFByZWNlZGVuY2Ug
cHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNDYWxsOyB9CiAgIHByb3RlY3RlZDoKICAg
ICBSZWZQdHI8Tm9kZT4gYmFzZTsKICAgICBJZGVudGlmaWVyIGlkZW50OwogICAgIFJlZlB0cjxB
cmd1bWVudHNOb2RlPiBhcmdzOwogICB9OwogCi0gIGNsYXNzIEZ1bmN0aW9uQ2FsbFBhcmVuRG90
Tm9kZSA6IHB1YmxpYyBGdW5jdGlvbkNhbGxEb3ROb2RlIHsKLSAgcHVibGljOgotICAgIEZ1bmN0
aW9uQ2FsbFBhcmVuRG90Tm9kZShOb2RlICpiLCBjb25zdCBJZGVudGlmaWVyICZpLCBBcmd1bWVu
dHNOb2RlICphKSBLSlNfRkFTVF9DQUxMIDogRnVuY3Rpb25DYWxsRG90Tm9kZShiLCBpLCBhKSB7
fQotICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFT
VF9DQUxMOwotICB9OwotCiAgIGNsYXNzIFBvc3RmaXhSZXNvbHZlTm9kZSA6IHB1YmxpYyBOb2Rl
IHsKICAgcHVibGljOgogICAgIFBvc3RmaXhSZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyJiBp
LCBPcGVyYXRvciBvKSBLSlNfRkFTVF9DQUxMIDogbV9pZGVudChpKSwgbV9vcGVyKG8pIHt9CiAg
ICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAg
ICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNQb3N0
Zml4OyB9CiAgIHByaXZhdGU6CiAgICAgSWRlbnRpZmllciBtX2lkZW50OwogICAgIE9wZXJhdG9y
IG1fb3BlcjsKQEAgLTQ5NCw2ICs0OTAsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBQb3N0Zml4
QnJhY2tldE5vZGUoTm9kZSAqYiwgTm9kZSAqcywgT3BlcmF0b3IgbykgS0pTX0ZBU1RfQ0FMTCA6
IG1fYmFzZShiKSwgbV9zdWJzY3JpcHQocyksIG1fb3BlcihvKSB7fQogICAgIEpTVmFsdWUqIGV2
YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVj
ZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjUG9zdGZpeDsgfQogICBwcml2
YXRlOgogICAgIFJlZlB0cjxOb2RlPiBtX2Jhc2U7CiAgICAgUmVmUHRyPE5vZGU+IG1fc3Vic2Ny
aXB0OwpAQCAtNTA1LDYgKzUwMiw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFBvc3RmaXhEb3RO
b2RlKE5vZGUgKmIsIGNvbnN0IElkZW50aWZpZXImIGksIE9wZXJhdG9yIG8pIEtKU19GQVNUX0NB
TEwgOiBtX2Jhc2UoYiksIG1faWRlbnQoaSksIG1fb3BlcihvKSB7fQogICAgIEpTVmFsdWUqIGV2
YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVj
ZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjUG9zdGZpeDsgfQogICBwcml2
YXRlOgogICAgIFJlZlB0cjxOb2RlPiBtX2Jhc2U7CiAgICAgSWRlbnRpZmllciBtX2lkZW50OwpA
QCAtNTE2LDYgKzUxNCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFBvc3RmaXhFcnJvck5vZGUo
Tm9kZSogZSwgT3BlcmF0b3IgbykgS0pTX0ZBU1RfQ0FMTCA6IG1fZXhwcihlKSwgbV9vcGVyKG8p
IHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FM
TDsKKyAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFBy
ZWNQb3N0Zml4OyB9CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1fZXhwcjsKICAgICBP
cGVyYXRvciBtX29wZXI7CkBAIC01MjYsNiArNTI1LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAg
RGVsZXRlUmVzb2x2ZU5vZGUoY29uc3QgSWRlbnRpZmllciYgaSkgS0pTX0ZBU1RfQ0FMTCA6IG1f
aWRlbnQoaSkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9D
QUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNf
RkFTVF9DQUxMOworICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyBy
ZXR1cm4gUHJlY1VuYXJ5OyB9CiAgIHByaXZhdGU6CiAgICAgSWRlbnRpZmllciBtX2lkZW50Owog
ICB9OwpAQCAtNTM1LDYgKzUzNSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIERlbGV0ZUJyYWNr
ZXROb2RlKE5vZGUgKmJhc2UsIE5vZGUgKnN1YnNjcmlwdCkgS0pTX0ZBU1RfQ0FMTCA6IG1fYmFz
ZShiYXNlKSwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRl
KEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNv
dXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNl
IHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjVW5hcnk7IH0KICAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwogICAgIFJlZlB0cjxOb2RlPiBtX3N1YnNjcmlwdDsKQEAg
LTU0NSw2ICs1NDYsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBEZWxldGVEb3ROb2RlKE5vZGUg
KmJhc2UsIGNvbnN0IElkZW50aWZpZXImIGkpIEtKU19GQVNUX0NBTEwgOiBtX2Jhc2UoYmFzZSks
IG1faWRlbnQoaSkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFT
VF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBL
SlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3Qg
eyByZXR1cm4gUHJlY1VuYXJ5OyB9CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1fYmFz
ZTsKICAgICBJZGVudGlmaWVyIG1faWRlbnQ7CkBAIC01NTUsNiArNTU3LDcgQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgRGVsZXRlVmFsdWVOb2RlKE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBtX2V4
cHIoZSkge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxM
OwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFT
VF9DQUxMOworICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1
cm4gUHJlY1VuYXJ5OyB9CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1fZXhwcjsKICAg
fTsKQEAgLTU2NCw2ICs1NjcsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBWb2lkTm9kZShOb2Rl
ICplKSBLSlNfRkFTVF9DQUxMIDogZXhwcihlKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4
ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJj
ZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHBy
ZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjVW5hcnk7IH0KICAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8Tm9kZT4gZXhwcjsKICAgfTsKQEAgLTU3Myw2ICs1NzcsNyBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICBUeXBlT2ZSZXNvbHZlTm9kZShjb25zdCBJZGVudGlmaWVyJiBpKSBLSlNfRkFTVF9D
QUxMIDogbV9pZGVudChpKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBj
b25zdCB7IHJldHVybiBQcmVjVW5hcnk7IH0KICAgcHJpdmF0ZToKICAgICBJZGVudGlmaWVyIG1f
aWRlbnQ7CiAgIH07CkBAIC01ODIsNiArNTg3LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgVHlw
ZU9mVmFsdWVOb2RlKE5vZGUgKmUpIEtKU19GQVNUX0NBTEwgOiBtX2V4cHIoZSkge30KICAgICBK
U1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwg
dm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZp
cnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1VuYXJ5OyB9
CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1fZXhwcjsKICAgfTsKQEAgLTU5MSw2ICs1
OTcsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBQcmVmaXhSZXNvbHZlTm9kZShjb25zdCBJZGVu
dGlmaWVyJiBpLCBPcGVyYXRvciBvKSBLSlNfRkFTVF9DQUxMIDogbV9pZGVudChpKSwgbV9vcGVy
KG8pIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsK
ICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1Rf
Q0FMTDsKKyAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJu
IFByZWNVbmFyeTsgfQogICBwcml2YXRlOgogICAgIElkZW50aWZpZXIgbV9pZGVudDsKICAgICBP
cGVyYXRvciBtX29wZXI7CkBAIC02MDEsNiArNjA4LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAg
UHJlZml4QnJhY2tldE5vZGUoTm9kZSAqYiwgTm9kZSAqcywgT3BlcmF0b3IgbykgS0pTX0ZBU1Rf
Q0FMTCA6IG1fYmFzZShiKSwgbV9zdWJzY3JpcHQocyksIG1fb3BlcihvKSB7fQogICAgIEpTVmFs
dWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lk
IHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVh
bCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjVW5hcnk7IH0KICAg
cHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwogICAgIFJlZlB0cjxOb2RlPiBtX3N1
YnNjcmlwdDsKQEAgLTYxMiw2ICs2MjAsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBQcmVmaXhE
b3ROb2RlKE5vZGUgKmIsIGNvbnN0IElkZW50aWZpZXImIGksIE9wZXJhdG9yIG8pIEtKU19GQVNU
X0NBTEwgOiBtX2Jhc2UoYiksIG1faWRlbnQoaSksIG1fb3BlcihvKSB7fQogICAgIEpTVmFsdWUq
IGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0
cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQ
cmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjVW5hcnk7IH0KICAgcHJp
dmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwogICAgIElkZW50aWZpZXIgbV9pZGVudDsK
QEAgLTYyMyw2ICs2MzIsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBQcmVmaXhFcnJvck5vZGUo
Tm9kZSogZSwgT3BlcmF0b3IgbykgS0pTX0ZBU1RfQ0FMTCA6IG1fZXhwcihlKSwgbV9vcGVyKG8p
IHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FM
TDsKKyAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFBy
ZWNVbmFyeTsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBtX2V4cHI7CiAgICAgT3Bl
cmF0b3IgbV9vcGVyOwpAQCAtNjMzLDYgKzY0Myw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFVu
YXJ5UGx1c05vZGUoTm9kZSAqZSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSkge30KICAgICBKU1Zh
bHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1
YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1VuYXJ5OyB9CiAg
IHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgIH07CkBAIC02NDIsNiArNjUzLDcg
QEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgTmVnYXRlTm9kZShOb2RlICplKSBLSlNfRkFTVF9DQUxM
IDogZXhwcihlKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNU
X0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtK
U19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7
IHJldHVybiBQcmVjVW5hcnk7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsK
ICAgfTsKQEAgLTY1MSw2ICs2NjMsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBCaXR3aXNlTm90
Tm9kZShOb2RlICplKSBLSlNfRkFTVF9DQUxMIDogZXhwcihlKSB7fQogICAgIEpTVmFsdWUqIGV2
YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVj
ZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjVW5hcnk7IH0KICAgcHJpdmF0
ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsKICAgfTsKQEAgLTY2MCw2ICs2NzMsNyBAQCBuYW1l
c3BhY2UgS0pTIHsKICAgICBMb2dpY2FsTm90Tm9kZShOb2RlICplKSBLSlNfRkFTVF9DQUxMIDog
ZXhwcihlKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NB
TEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19G
QVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJl
dHVybiBQcmVjVW5hcnk7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjsKICAg
fTsKQEAgLTY2OSw2ICs2ODMsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIE11bHROb2RlKE5v
ZGUgKnQxLCBOb2RlICp0MikgS0pTX0ZBU1RfQ0FMTCA6IHRlcm0xKHQxKSwgdGVybTIodDIpIHt9
CiAgICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAg
ICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NB
TEw7CisgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJu
IFByZWNNdWx0aXBsaWNpdGF2ZTsgfQogICBwcml2YXRlOgogICAgICAgUmVmUHRyPE5vZGU+IHRl
cm0xOwogICAgICAgUmVmUHRyPE5vZGU+IHRlcm0yOwpAQCAtNjc5LDYgKzY5NCw3IEBAIG5hbWVz
cGFjZSBLSlMgewogICAgICAgRGl2Tm9kZShOb2RlICp0MSwgTm9kZSAqdDIpIEtKU19GQVNUX0NB
TEwgOiB0ZXJtMSh0MSksIHRlcm0yKHQyKSB7fQogICAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhl
Y1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgICAgdmlydHVhbCBQcmVjZWRlbmNl
IHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjTXVsdGlwbGljaXRhdmU7IH0KICAgcHJp
dmF0ZToKICAgICAgIFJlZlB0cjxOb2RlPiB0ZXJtMTsKICAgICAgIFJlZlB0cjxOb2RlPiB0ZXJt
MjsKQEAgLTY4OSw2ICs3MDUsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIE1vZE5vZGUoTm9k
ZSAqdDEsIE5vZGUgKnQyKSBLSlNfRkFTVF9DQUxMIDogdGVybTEodDEpLCB0ZXJtMih0Mikge30K
ICAgICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAg
ICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FM
TDsKKyAgICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4g
UHJlY011bHRpcGxpY2l0YXZlOyB9CiAgIHByaXZhdGU6CiAgICAgICBSZWZQdHI8Tm9kZT4gdGVy
bTE7CiAgICAgICBSZWZQdHI8Tm9kZT4gdGVybTI7CkBAIC02OTksNiArNzE2LDcgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgQWRkTm9kZShOb2RlICp0MSwgTm9kZSAqdDIpIEtKU19GQVNUX0NBTEwg
OiB0ZXJtMSh0MSksIHRlcm0yKHQyKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2Vk
ZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNBZGRpdGl2ZTsgfQogICBwcml2YXRlOgogICAgIFJl
ZlB0cjxOb2RlPiB0ZXJtMTsKICAgICBSZWZQdHI8Tm9kZT4gdGVybTI7CkBAIC03MDksNiArNzI3
LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICBTdWJOb2RlKE5vZGUgKnQxLCBOb2RlICp0Mikg
S0pTX0ZBU1RfQ0FMTCA6IHRlcm0xKHQxKSwgdGVybTIodDIpIHt9CiAgICAgICBKU1ZhbHVlKiBl
dmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgICAgdmlydHVhbCB2b2lkIHN0
cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgICB2aXJ0dWFs
IFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNBZGRpdGl2ZTsgfQog
ICBwcml2YXRlOgogICAgICAgUmVmUHRyPE5vZGU+IHRlcm0xOwogICAgICAgUmVmUHRyPE5vZGU+
IHRlcm0yOwpAQCAtNzIwLDYgKzczOSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgOiB0ZXJt
MSh0MSksIHRlcm0yKHQyKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtK
U19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBj
b25zdCB7IHJldHVybiBQcmVjU2hpZnQ7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4g
dGVybTE7CiAgICAgUmVmUHRyPE5vZGU+IHRlcm0yOwpAQCAtNzMxLDYgKzc1MSw3IEBAIG5hbWVz
cGFjZSBLSlMgewogICAgICAgOiB0ZXJtMSh0MSksIHRlcm0yKHQyKSB7fQogICAgIEpTVmFsdWUq
IGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0
cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQ
cmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjU2hpZnQ7IH0KICAgcHJp
dmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gdGVybTE7CiAgICAgUmVmUHRyPE5vZGU+IHRlcm0yOwpA
QCAtNzQyLDYgKzc2Myw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgOiB0ZXJtMSh0MSksIHRl
cm0yKHQyKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NB
TEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19G
QVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJl
dHVybiBQcmVjU2hpZnQ7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gdGVybTE7CiAg
ICAgUmVmUHRyPE5vZGU+IHRlcm0yOwpAQCAtNzUzLDYgKzc3NSw3IEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgICAgZXhwcjEoZTEpLCBleHByMihlMikge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShF
eGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3Vy
Y2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBw
cmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1JlbGF0aW9uYWw7IH0KICAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8Tm9kZT4gZXhwcjE7CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIyOwpAQCAtNzY0
LDYgKzc4Nyw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgZXhwcjEoZTEpLCBleHByMihlMikg
e30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAg
IHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxM
OworICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJl
Y1JlbGF0aW9uYWw7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjE7CiAgICAg
UmVmUHRyPE5vZGU+IGV4cHIyOwpAQCAtNzc1LDYgKzc5OSw3IEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgICAgZXhwcjEoZTEpLCBleHByMihlMikge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVj
U3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VT
dHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVj
ZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1JlbGF0aW9uYWw7IH0KICAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8Tm9kZT4gZXhwcjE7CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIyOwpAQCAtNzg2LDYg
KzgxMSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgZXhwcjEoZTEpLCBleHByMihlMikge30K
ICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZp
cnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOwor
ICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1Jl
bGF0aW9uYWw7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjE7CiAgICAgUmVm
UHRyPE5vZGU+IGV4cHIyOwpAQCAtNzk3LDYgKzgyMyw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAg
ICAgZXhwcjEoZTEpLCBleHByMihlMikge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3Rh
dGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJl
YW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRl
bmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1JlbGF0aW9uYWw7IH0KICAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8Tm9kZT4gZXhwcjE7CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIyOwpAQCAtODA4LDYgKzgz
NSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgZXhwcjEoZTEpLCBleHByMihlMikge30KICAg
ICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1
YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAg
IHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY1JlbGF0
aW9uYWw7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjE7CiAgICAgUmVmUHRy
PE5vZGU+IGV4cHIyOwpAQCAtODE5LDYgKzg0Nyw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAg
OiBleHByMShlMSksIGV4cHIyKGUyKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVu
Y2UoKSBjb25zdCB7IHJldHVybiBQcmVjRXF1YWxpdHk7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8Tm9kZT4gZXhwcjE7CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIyOwpAQCAtODMwLDYgKzg1OSw3
IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgOiBleHByMShlMSksIGV4cHIyKGUyKSB7fQogICAg
IEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVh
bCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAg
dmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjRXF1YWxp
dHk7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjE7CiAgICAgUmVmUHRyPE5v
ZGU+IGV4cHIyOwpAQCAtODQxLDYgKzg3MSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgOiBl
eHByMShlMSksIGV4cHIyKGUyKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSop
IEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYp
IGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2Uo
KSBjb25zdCB7IHJldHVybiBQcmVjRXF1YWxpdHk7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8
Tm9kZT4gZXhwcjE7CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIyOwpAQCAtODUyLDYgKzg4Myw3IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgICAgOiBleHByMShlMSksIGV4cHIyKGUyKSB7fQogICAgIEpT
VmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2
b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmly
dHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjRXF1YWxpdHk7
IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjE7CiAgICAgUmVmUHRyPE5vZGU+
IGV4cHIyOwpAQCAtODYzLDYgKzg5NSw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgZXhwcjEo
ZTEpLCBleHByMihlMikge30KICAgICBKU1ZhbHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNf
RkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25z
dCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29u
c3QgeyByZXR1cm4gUHJlY0JpdHdpc2VBbmQ7IH0KICAgcHJpdmF0ZToKICAgICBSZWZQdHI8Tm9k
ZT4gZXhwcjE7CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIyOwpAQCAtODc0LDYgKzkwNyw3IEBAIG5h
bWVzcGFjZSBLSlMgewogICAgICAgZXhwcjEoZTEpLCBleHByMihlMikge30KICAgICBKU1ZhbHVl
KiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBz
dHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwg
UHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY0JpdHdpc2VPcjsgfQog
ICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhw
cjI7CkBAIC04ODUsNiArOTE5LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICBleHByMShlMSks
IGV4cHIyKGUyKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNU
X0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtK
U19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7
IHJldHVybiBQcmVjQml0d2lzZVhvcjsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBl
eHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjI7CkBAIC04OTksNiArOTM0LDcgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgICBleHByMShlMSksIGV4cHIyKGUyKSB7fQogICAgIEpTVmFsdWUqIGV2
YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVj
ZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjTG9naWNhbEFuZDsgfQogICBw
cml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjI7
CkBAIC05MTAsNiArOTQ2LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICBleHByMShlMSksIGV4
cHIyKGUyKSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NB
TEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19G
QVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJl
dHVybiBQcmVjTG9naWNhbE9yOyB9CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHIx
OwogICAgIFJlZlB0cjxOb2RlPiBleHByMjsKQEAgLTkyNCw2ICs5NjEsNyBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICAgIGxvZ2ljYWwobCksIGV4cHIxKGUxKSwgZXhwcjIoZTIpIHt9CiAgICAgSlNW
YWx1ZSogZXZhbHVhdGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0
dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNDb25kaXRpb25h
bDsgfQogICBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBsb2dpY2FsOwogICAgIFJlZlB0cjxO
b2RlPiBleHByMTsKQEAgLTkzNiw2ICs5NzQsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIDog
bV9pZGVudChpZGVudCksIG1fb3BlcihvcGVyKSwgbV9yaWdodChyaWdodCkge30KICAgICBKU1Zh
bHVlKiBldmFsdWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9p
ZCBzdHJlYW1UbyhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1
YWwgUHJlY2VkZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY0Fzc2lnbm1lbnQ7
IH0KICAgcHJvdGVjdGVkOgogICAgIElkZW50aWZpZXIgbV9pZGVudDsKICAgICBPcGVyYXRvciBt
X29wZXI7CkBAIC05NDgsNiArOTg3LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICA6IG1fYmFz
ZShiYXNlKSwgbV9zdWJzY3JpcHQoc3Vic2NyaXB0KSwgbV9vcGVyKG9wZXIpLCBtX3JpZ2h0KHJp
Z2h0KSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7
CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNU
X0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVy
biBQcmVjQXNzaWdubWVudDsgfQogICBwcm90ZWN0ZWQ6CiAgICAgUmVmUHRyPE5vZGU+IG1fYmFz
ZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9zdWJzY3JpcHQ7CkBAIC05NjEsNiArMTAwMSw3IEBAIG5h
bWVzcGFjZSBLSlMgewogICAgICAgOiBtX2Jhc2UoYmFzZSksIG1faWRlbnQoaWRlbnQpLCBtX29w
ZXIob3BlciksIG1fcmlnaHQocmlnaHQpIHt9CiAgICAgSlNWYWx1ZSogZXZhbHVhdGUoRXhlY1N0
YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3Ry
ZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIFByZWNlZGVuY2UgcHJlY2Vk
ZW5jZSgpIGNvbnN0IHsgcmV0dXJuIFByZWNBc3NpZ25tZW50OyB9CiAgIHByb3RlY3RlZDoKICAg
ICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwogICAgIElkZW50aWZpZXIgbV9pZGVudDsKQEAgLTk3NCw2
ICsxMDE1LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICA6IG1fbGVmdChsZWZ0KSwgbV9vcGVy
KG9wZXIpLCBtX3JpZ2h0KHJpZ2h0KSB7fQogICAgIEpTVmFsdWUqIGV2YWx1YXRlKEV4ZWNTdGF0
ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVh
bSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVu
Y2UoKSBjb25zdCB7IHJldHVybiBQcmVjQXNzaWdubWVudDsgfQogICBwcm90ZWN0ZWQ6CiAgICAg
UmVmUHRyPE5vZGU+IG1fbGVmdDsKICAgICBPcGVyYXRvciBtX29wZXI7CkBAIC05ODUsNiArMTAy
Nyw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIENvbW1hTm9kZShOb2RlICplMSwgTm9kZSAqZTIp
IEtKU19GQVNUX0NBTEwgOiBleHByMShlMSksIGV4cHIyKGUyKSB7fQogICAgIEpTVmFsdWUqIGV2
YWx1YXRlKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVh
bVRvKFNvdXJjZVN0cmVhbSYpIGNvbnN0IEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVj
ZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IHJldHVybiBQcmVjRXhwcmVzc2lvbjsgfQogICBw
cml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBleHByMTsKICAgICBSZWZQdHI8Tm9kZT4gZXhwcjI7
CkBAIC05OTUsMTcgKzEwMzgsMTkgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgQXNzaWduRXhwck5v
ZGUoTm9kZSAqZSkgS0pTX0ZBU1RfQ0FMTCA6IGV4cHIoZSkge30KICAgICBKU1ZhbHVlKiBldmFs
dWF0ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1U
byhTb3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgUHJlY2Vk
ZW5jZSBwcmVjZWRlbmNlKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0dXJuIFBy
ZWNFeHByZXNzaW9uOyB9CiAgIHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IGV4cHI7CiAgIH07
CiAKLSAgY2xhc3MgVmFyRGVjbE5vZGU6IHB1YmxpYyBOb2RlIHsKKyAgY2xhc3MgVmFyRGVjbE5v
ZGUgOiBwdWJsaWMgTm9kZSB7CiAgIHB1YmxpYzoKICAgICBlbnVtIFR5cGUgeyBWYXJpYWJsZSwg
Q29uc3RhbnQgfTsKICAgICBWYXJEZWNsTm9kZShjb25zdCBJZGVudGlmaWVyICZpZCwgQXNzaWdu
RXhwck5vZGUgKmluLCBUeXBlIHQpIEtKU19GQVNUX0NBTEw7CiAgICAgSlNWYWx1ZSogZXZhbHVh
dGUoRXhlY1N0YXRlKikgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgc3RyZWFtVG8o
U291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
RGVjbGFyYXRpb25zKERlY2xhcmF0aW9uU3RhY2tzJikgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0
dWFsIFByZWNlZGVuY2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IHJldHVybiBQcmVjRXhwcmVzc2lvbjsgfQogICAgIFR5cGUgdmFyVHlwZTsKICAgICBJZGVudGlm
aWVyIGlkZW50OwogICBwcml2YXRlOgpAQCAtMTAyNCw2ICsxMDY5LDcgQEAgbmFtZXNwYWNlIEtK
UyB7CiAgICAgUGFzc1JlZlB0cjxWYXJEZWNsTGlzdE5vZGU+IHJlbGVhc2VOZXh0KCkgS0pTX0ZB
U1RfQ0FMTCB7IHJldHVybiBuZXh0LnJlbGVhc2UoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBicmVh
a0N5Y2xlKCkgS0pTX0ZBU1RfQ0FMTDsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGVjbGFyYXRpb25z
KERlY2xhcmF0aW9uU3RhY2tzJikgS0pTX0ZBU1RfQ0FMTDsKKyAgICB2aXJ0dWFsIFByZWNlZGVu
Y2UgcHJlY2VkZW5jZSgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiBQcmVj
RXhwcmVzc2lvbjsgfQogICBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBGb3JOb2RlOwogICAg
IGZyaWVuZCBjbGFzcyBWYXJTdGF0ZW1lbnROb2RlOwpAQCAtMTIyMCw2ICsxMjY2LDcgQEAgbmFt
ZXNwYWNlIEtKUyB7CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbVRvKFNvdXJjZVN0cmVhbSYpIGNv
bnN0IEtKU19GQVNUX0NBTEw7CiAgICAgUGFzc1JlZlB0cjxQYXJhbWV0ZXJOb2RlPiByZWxlYXNl
TmV4dCgpIEtKU19GQVNUX0NBTEwgeyByZXR1cm4gbmV4dC5yZWxlYXNlKCk7IH0KICAgICB2aXJ0
dWFsIHZvaWQgYnJlYWtDeWNsZSgpIEtKU19GQVNUX0NBTEw7CisgICAgdmlydHVhbCBQcmVjZWRl
bmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gUHJl
Y0V4cHJlc3Npb247IH0KICAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgRnVuY0RlY2xOb2Rl
OwogICAgIGZyaWVuZCBjbGFzcyBGdW5jRXhwck5vZGU7CkBAIC0xMjcxLDYgKzEzMTgsNyBAQCBu
YW1lc3BhY2UgS0pTIHsKICAgICAgIDogaWRlbnQoaSksIHBhcmFtKHAgPyBwLT5uZXh0LnJlbGVh
c2UoKSA6IDApLCBib2R5KGIpIHsgaWYgKHApIHsgUGFyc2VyOjpyZW1vdmVOb2RlQ3ljbGUocGFy
YW0uZ2V0KCkpOyB9IGFkZFBhcmFtcygpOyB9CiAgICAgdmlydHVhbCBKU1ZhbHVlICpldmFsdWF0
ZShFeGVjU3RhdGUqKSBLSlNfRkFTVF9DQUxMOwogICAgIHZpcnR1YWwgdm9pZCBzdHJlYW1UbyhT
b3VyY2VTdHJlYW0mKSBjb25zdCBLSlNfRkFTVF9DQUxMOworICAgIHZpcnR1YWwgUHJlY2VkZW5j
ZSBwcmVjZWRlbmNlKCkgY29uc3QgeyByZXR1cm4gUHJlY01lbWJlcjsgfQogICBwcml2YXRlOgog
ICAgIHZvaWQgYWRkUGFyYW1zKCkgS0pTX0ZBU1RfQ0FMTDsKICAgICAvLyBVc2VkIGZvciBzdHJl
YW1UbwpAQCAtMTMyNiw2ICsxMzc0LDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgICBDb21wbGV0
aW9uIGV2YWxTdGF0ZW1lbnRzKEV4ZWNTdGF0ZSopIEtKU19GQVNUX0NBTEw7CiAgICAgICB2aXJ0
dWFsIHZvaWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAg
ICAgIHZpcnR1YWwgdm9pZCBnZXREZWNsYXJhdGlvbnMoRGVjbGFyYXRpb25TdGFja3MmKSBLSlNf
RkFTVF9DQUxMOworICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gUHJlY0V4cHJlc3Npb247IH0KICAgcHJpdmF0
ZToKICAgICAgIFJlZlB0cjxOb2RlPiBleHByOwogICAgICAgUmVmUHRyPFNvdXJjZUVsZW1lbnRz
Tm9kZT4gc291cmNlOwpAQCAtMTM0NCw2ICsxMzkzLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAg
ICBQYXNzUmVmUHRyPENsYXVzZUxpc3ROb2RlPiByZWxlYXNlTmV4dCgpIEtKU19GQVNUX0NBTEwg
eyByZXR1cm4gbmV4dC5yZWxlYXNlKCk7IH0KICAgICAgIHZpcnR1YWwgdm9pZCBicmVha0N5Y2xl
KCkgS0pTX0ZBU1RfQ0FMTDsKICAgICAgIHZpcnR1YWwgdm9pZCBnZXREZWNsYXJhdGlvbnMoRGVj
bGFyYXRpb25TdGFja3MmKSBLSlNfRkFTVF9DQUxMOworICAgICAgdmlydHVhbCBQcmVjZWRlbmNl
IHByZWNlZGVuY2UoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gUHJlY0V4
cHJlc3Npb247IH0KICAgcHJpdmF0ZToKICAgICAgIGZyaWVuZCBjbGFzcyBDYXNlQmxvY2tOb2Rl
OwogICAgICAgUmVmUHRyPENhc2VDbGF1c2VOb2RlPiBjbGF1c2U7CkBAIC0xMzU3LDYgKzE0MDcs
NyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgIENvbXBsZXRpb24gZXZhbEJsb2NrKEV4ZWNTdGF0
ZSAqZXhlYywgSlNWYWx1ZSAqaW5wdXQpIEtKU19GQVNUX0NBTEw7CiAgICAgICB2aXJ0dWFsIHZv
aWQgc3RyZWFtVG8oU291cmNlU3RyZWFtJikgY29uc3QgS0pTX0ZBU1RfQ0FMTDsKICAgICAgIHZp
cnR1YWwgdm9pZCBnZXREZWNsYXJhdGlvbnMoRGVjbGFyYXRpb25TdGFja3MmKSBLSlNfRkFTVF9D
QUxMOworICAgICAgdmlydHVhbCBQcmVjZWRlbmNlIHByZWNlZGVuY2UoKSBjb25zdCB7IEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gUHJlY0V4cHJlc3Npb247IH0KICAgcHJpdmF0ZToKICAg
ICAgIFJlZlB0cjxDbGF1c2VMaXN0Tm9kZT4gbGlzdDE7CiAgICAgICBSZWZQdHI8Q2FzZUNsYXVz
ZU5vZGU+IGRlZjsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI3MTg4KQorKysgTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICsxLDMxIEBACisyMDA3LTEwLTI4ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAtIHRlc3QgZm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NzM1CisgICAgICAgICAgcmVtb3ZlIEdyb3VwTm9kZSB0byBzaW1wbGlm
eSBBU1QgYW5kIHBvc3NpYmx5IGdldCBhIG1vZGVzdCBzcGVlZHVwCisKKyAgICAgICAgT25lIHRl
c3QgaXMgYSBzdGFydCBhdCB0ZXN0aW5nIHRoYXQgcGFyZW50aGVzZXMgYXJlIGFkZGVkIHdoZW4g
bmVlZGVkLgorICAgICAgICBUaGUgb3RoZXIgdGVzdCBjaGVja3Mgc29tZSBhc3BlY3RzIG9mIG9i
amVjdCBsaXRlcmFscywgc2luY2UgSSBjaGFuZ2VkCisgICAgICAgIHRoZSB3YXkgdGhlIHByb3Bl
cnR5IG5hbWVzIGlzIGhhbmRsZWQgaW4gdGhvc2UuIE1vcmUgdGVzdHMgYXJlIG5lZWRlZC4KKwor
ICAgICAgICAqIGZhc3QvanMvZnVuY3Rpb24tdG9TdHJpbmctb2JqZWN0LWxpdGVyYWxzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9mdW5jdGlvbi10b1N0cmluZy1vYmpl
Y3QtbGl0ZXJhbHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9mdW5jdGlvbi10b1N0
cmluZy1wYXJlbnRoZXNlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMv
ZnVuY3Rpb24tdG9TdHJpbmctcGFyZW50aGVzZXMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9qcy9yZXNvdXJjZXMvZnVuY3Rpb24tdG9TdHJpbmctb2JqZWN0LWxpdGVyYWxzLmpzOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2pzL3Jlc291cmNlcy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRo
ZXNlcy5qczogQWRkZWQuCisKIDIwMDctMTAtMjggIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJlLWVuYWJsZSBhIGJ1bmNoIG9mIHBhc3NpbmcgdGVzdHMgb24gV2lu
ZG93cwogCi0gICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWS4KLQogICAgICAgICAqIHBsYXRmb3Jt
L3dpbi9Ta2lwcGVkOgogCiAyMDA3LTEwLTI3ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNv
bT4KIAogICAgICAgICBVcGRhdGVkIFdpbmRvd3MgU2tpcHBlZCBmaWxlIGZvciBjdXJyZW50bHkg
ZmFpbGluZyB0ZXN0cwogCi0gICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWS4KLQogICAgICAgICAq
IHBsYXRmb3JtL3dpbi9Ta2lwcGVkOgogCiAyMDA3LTEwLTI3ICBBZGFtIFJvYmVuICA8YXJvYmVu
QGFwcGxlLmNvbT4KQEAgLTgwLDggKzk0LDYgQEAKIAogICAgICAgICBBZGQgc29tZSBtb3JlIGZh
aWxpbmcgdGVzdHMgdG8gdGhlIFdpbmRvd3MgU2tpcHBlZCBmaWxlCiAKLSAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZLgotCiAgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CiAKIDIwMDct
MTAtMjcgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvanMvZnVuY3Rpb24tdG9TdHJpbmctb2JqZWN0LWxpdGVyYWxzLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9uLXRvU3RyaW5nLW9iamVj
dC1saXRlcmFscy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2pzL2Z1bmN0aW9uLXRvU3RyaW5nLW9iamVjdC1saXRlcmFscy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjggQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBvYmplY3QgbGl0
ZXJhbHMgYXJlIHNlcmlhbGl6ZWQgcHJvcGVybHkuIEl0J3MgbmVlZGVkIGluIHBhcnQgYmVjYXVz
ZSBKYXZhU2NyaXB0Q29yZSBjb252ZXJ0cyBudW1lcmljIHByb3BlcnR5IG5hbWVzIHRvIHN0cmlu
ZyBhbmQgYmFjay4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgnYSA9IHsgMTogbnVsbCB9JykgaXMgJ2EgPSB7IDE6IG51bGwgfScKK1BB
U1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IHsgMDogbnVsbCB9JykgaXMgJ2EgPSB7IDA6IG51
bGwgfScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IHsgMS4wOiBudWxsIH0nKSBpcyAn
YSA9IHsgMTogbnVsbCB9JworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0geyAiMS4wIjog
bnVsbCB9JykgaXMgJ2EgPSB7ICIxLjAiOiBudWxsIH0nCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxp
emUoJ2EgPSB7IDFlLTUwMDogbnVsbCB9JykgaXMgJ2EgPSB7IDA6IG51bGwgfScKK1BBU1MgY29t
cGlsZUFuZFNlcmlhbGl6ZSgnYSA9IHsgMWUtMzAwOiBudWxsIH0nKSBpcyAnYSA9IHsgMWUtMzAw
OiBudWxsIH0nCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSB7IDFlMzAwOiBudWxsIH0n
KSBpcyAnYSA9IHsgMWUrMzAwOiBudWxsIH0nCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2Eg
PSB7IDFlNTAwOiBudWxsIH0nKSBpcyAnYSA9IHsgIkluZmluaXR5IjogbnVsbCB9JworUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCdhID0geyBOYU46IG51bGwgfScpIGlzICdhID0geyAiTmFOIjog
bnVsbCB9JworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0geyBJbmZpbml0eTogbnVsbCB9
JykgaXMgJ2EgPSB7ICJJbmZpbml0eSI6IG51bGwgfScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnYSA9IHsgIjEiOiBudWxsIH0nKSBpcyAnYSA9IHsgMTogbnVsbCB9JworUEFTUyBjb21waWxl
QW5kU2VyaWFsaXplKCdhID0geyAiMWhpIjogbnVsbCB9JykgaXMgJ2EgPSB7ICIxaGkiOiBudWxs
IH0nCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSB7ICJcJyI6IG51bGwgfScpIGlzICdh
ID0geyAiXCciOiBudWxsIH0nCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSB7ICJcXCIi
OiBudWxsIH0nKSBpcyAnYSA9IHsgIlxcIiI6IG51bGwgfScKK1BBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnYSA9IHsgLS0xOiBudWxsIH0nKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBh
cnNlIGVycm9yLgorUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0geyAtTmFOOiBudWxsIH0n
KSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyBjb21waWxl
QW5kU2VyaWFsaXplKCdhID0geyAtMDogbnVsbCB9JykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IHsgLTAuMDog
bnVsbCB9JykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1Mg
Y29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IHsgLUluZmluaXR5OiBudWxsIH0nKSB0aHJldyBleGNl
cHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRl
c3RzL2Zhc3QvanMvZnVuY3Rpb24tdG9TdHJpbmctb2JqZWN0LWxpdGVyYWxzLWV4cGVjdGVkLnR4
dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9uLXRvU3RyaW5nLW9iamVjdC1saXRlcmFscy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvZnVuY3Rpb24tdG9TdHJpbmctb2JqZWN0
LWxpdGVyYWxzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0
aW9uLXRvU3RyaW5nLW9iamVjdC1saXRlcmFscy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvanMt
dGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Z1bmN0aW9uLXRv
U3RyaW5nLW9iamVjdC1saXRlcmFscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9uLXRvU3RyaW5nLW9iamVj
dC1saXRlcmFscy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQv
aHRtbApOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNl
cy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0
aW9uLXRvU3RyaW5nLXBhcmVudGhlc2VzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MDggQEAKK1RoaXMgdGVzdCBjaGVja3MgdGhhdCBwYXJlbnRoZXNlcyBhcmUgcHJlc2Vy
dmVkIHdoZW4gc2lnbmlmaWNhbnQsIGFuZCBub3QgYWRkZWQgd2hlcmUgaW5hcHByb3ByaWF0ZS4g
V2UgbmVlZCB0aGlzIHRlc3QgYmVjYXVzZSB0aGUgSmF2YVNjcmlwdENvcmUgcGFyc2VyIHJlbW92
ZXMgYWxsIHBhcmVudGhlc2VzIGFuZCB0aGUgc2VyaWFsaXplciB0aGVuIGFkZHMgdGhlbSBiYWNr
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCdhICogYiAqIGMnKSBpcyAnYSAqIGIgKiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCcoYSAqIGIpICogYycpIGlzICdhICogYiAqIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
J2EgKiAoYiAqIGMpJykgaXMgJ2EgKiAoYiAqIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCdhICogYiArIGMnKSBpcyAnYSAqIGIgKyBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCco
YSAqIGIpICsgYycpIGlzICdhICogYiArIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2Eg
KiAoYiArIGMpJykgaXMgJ2EgKiAoYiArIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdh
ICogYiAtIGMnKSBpcyAnYSAqIGIgLSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAq
IGIpIC0gYycpIGlzICdhICogYiAtIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKiAo
YiAtIGMpJykgaXMgJ2EgKiAoYiAtIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC8g
YiAvIGMnKSBpcyAnYSAvIGIgLyBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAvIGIp
IC8gYycpIGlzICdhIC8gYiAvIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgLyAoYiAv
IGMpJykgaXMgJ2EgLyAoYiAvIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICogYiAv
IGMnKSBpcyAnYSAqIGIgLyBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAqIGIpIC8g
YycpIGlzICdhICogYiAvIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKiAoYiAvIGMp
JykgaXMgJ2EgKiAoYiAvIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC8gYiArIGMn
KSBpcyAnYSAvIGIgKyBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAvIGIpICsgYycp
IGlzICdhIC8gYiArIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgLyAoYiArIGMpJykg
aXMgJ2EgLyAoYiArIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICUgYiAlIGMnKSBp
cyAnYSAlIGIgJSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAlIGIpICUgYycpIGlz
ICdhICUgYiAlIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgJSAoYiAlIGMpJykgaXMg
J2EgJSAoYiAlIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICogYiAlIGMnKSBpcyAn
YSAqIGIgJSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAqIGIpICUgYycpIGlzICdh
ICogYiAlIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKiAoYiAlIGMpJykgaXMgJ2Eg
KiAoYiAlIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICUgYiArIGMnKSBpcyAnYSAl
IGIgKyBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAlIGIpICsgYycpIGlzICdhICUg
YiArIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgJSAoYiArIGMpJykgaXMgJ2EgJSAo
YiArIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgYiArIGMnKSBpcyAnYSArIGIg
KyBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIpICsgYycpIGlzICdhICsgYiAr
IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyAoYiArIGMpJykgaXMgJ2EgKyAoYiAr
IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgYiA8PCBjJykgaXMgJ2EgKyBiIDw8
IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICsgYikgPDwgYycpIGlzICdhICsgYiA8
PCBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgPDwgYyknKSBpcyAnYSArIChi
IDw8IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgYiA+PiBjJykgaXMgJ2EgKyBi
ID4+IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICsgYikgPj4gYycpIGlzICdhICsg
YiA+PiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgPj4gYyknKSBpcyAnYSAr
IChiID4+IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgYiA+Pj4gYycpIGlzICdh
ICsgYiA+Pj4gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKyBiKSA+Pj4gYycpIGlz
ICdhICsgYiA+Pj4gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIChiID4+PiBjKScp
IGlzICdhICsgKGIgPj4+IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC0gYiAtIGMn
KSBpcyAnYSAtIGIgLSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAtIGIpIC0gYycp
IGlzICdhIC0gYiAtIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgLSAoYiAtIGMpJykg
aXMgJ2EgLSAoYiAtIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgYiAtIGMnKSBp
cyAnYSArIGIgLSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIpIC0gYycpIGlz
ICdhICsgYiAtIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyAoYiAtIGMpJykgaXMg
J2EgKyAoYiAtIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC0gYiA8PCBjJykgaXMg
J2EgLSBiIDw8IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIC0gYikgPDwgYycpIGlz
ICdhIC0gYiA8PCBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC0gKGIgPDwgYyknKSBp
cyAnYSAtIChiIDw8IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDw8IGIgPDwgYycp
IGlzICdhIDw8IGIgPDwgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPDwgYikgPDwg
YycpIGlzICdhIDw8IGIgPDwgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA8PCAoYiA8
PCBjKScpIGlzICdhIDw8IChiIDw8IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDw8
IGIgPCBjJykgaXMgJ2EgPDwgYiA8IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIDw8
IGIpIDwgYycpIGlzICdhIDw8IGIgPCBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDw8
IChiIDwgYyknKSBpcyAnYSA8PCAoYiA8IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdh
IDw8IGIgPiBjJykgaXMgJ2EgPDwgYiA+IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhh
IDw8IGIpID4gYycpIGlzICdhIDw8IGIgPiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdh
IDw8IChiID4gYyknKSBpcyAnYSA8PCAoYiA+IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCdhIDw8IGIgPD0gYycpIGlzICdhIDw8IGIgPD0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnKGEgPDwgYikgPD0gYycpIGlzICdhIDw8IGIgPD0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnYSA8PCAoYiA8PSBjKScpIGlzICdhIDw8IChiIDw9IGMpJworUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCdhIDw8IGIgPj0gYycpIGlzICdhIDw8IGIgPj0gYycKK1BBU1MgY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnKGEgPDwgYikgPj0gYycpIGlzICdhIDw8IGIgPj0gYycKK1BBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgnYSA8PCAoYiA+PSBjKScpIGlzICdhIDw8IChiID49IGMpJworUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCdhIDw8IGIgaW5zdGFuY2VvZiBjJykgaXMgJ2EgPDwgYiBpbnN0
YW5jZW9mIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIDw8IGIpIGluc3RhbmNlb2Yg
YycpIGlzICdhIDw8IGIgaW5zdGFuY2VvZiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdh
IDw8IChiIGluc3RhbmNlb2YgYyknKSBpcyAnYSA8PCAoYiBpbnN0YW5jZW9mIGMpJworUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCdhIDw8IGIgaW4gYycpIGlzICdhIDw8IGIgaW4gYycKK1BBU1Mg
Y29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPDwgYikgaW4gYycpIGlzICdhIDw8IGIgaW4gYycKK1BB
U1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA8PCAoYiBpbiBjKScpIGlzICdhIDw8IChiIGluIGMp
JworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID4+IGIgPj4gYycpIGlzICdhID4+IGIgPj4g
YycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPj4gYikgPj4gYycpIGlzICdhID4+IGIg
Pj4gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA+PiAoYiA+PiBjKScpIGlzICdhID4+
IChiID4+IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDw8IGIgPj4gYycpIGlzICdh
IDw8IGIgPj4gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPDwgYikgPj4gYycpIGlz
ICdhIDw8IGIgPj4gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA8PCAoYiA+PiBjKScp
IGlzICdhIDw8IChiID4+IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID4+IGIgPCBj
JykgaXMgJ2EgPj4gYiA8IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID4+IGIpIDwg
YycpIGlzICdhID4+IGIgPCBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID4+IChiIDwg
YyknKSBpcyAnYSA+PiAoYiA8IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID4+PiBi
ID4+PiBjJykgaXMgJ2EgPj4+IGIgPj4+IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhh
ID4+PiBiKSA+Pj4gYycpIGlzICdhID4+PiBiID4+PiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCdhID4+PiAoYiA+Pj4gYyknKSBpcyAnYSA+Pj4gKGIgPj4+IGMpJworUEFTUyBjb21waWxl
QW5kU2VyaWFsaXplKCdhIDw8IGIgPj4+IGMnKSBpcyAnYSA8PCBiID4+PiBjJworUEFTUyBjb21w
aWxlQW5kU2VyaWFsaXplKCcoYSA8PCBiKSA+Pj4gYycpIGlzICdhIDw8IGIgPj4+IGMnCitQQVNT
IGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPDwgKGIgPj4+IGMpJykgaXMgJ2EgPDwgKGIgPj4+IGMp
JworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID4+PiBiIDwgYycpIGlzICdhID4+PiBiIDwg
YycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPj4+IGIpIDwgYycpIGlzICdhID4+PiBi
IDwgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA+Pj4gKGIgPCBjKScpIGlzICdhID4+
PiAoYiA8IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDwgYiA8IGMnKSBpcyAnYSA8
IGIgPCBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA8IGIpIDwgYycpIGlzICdhIDwg
YiA8IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPCAoYiA8IGMpJykgaXMgJ2EgPCAo
YiA8IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDwgYiA9PSBjJykgaXMgJ2EgPCBi
ID09IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIDwgYikgPT0gYycpIGlzICdhIDwg
YiA9PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDwgKGIgPT0gYyknKSBpcyAnYSA8
IChiID09IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDwgYiAhPSBjJykgaXMgJ2Eg
PCBiICE9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIDwgYikgIT0gYycpIGlzICdh
IDwgYiAhPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDwgKGIgIT0gYyknKSBpcyAn
YSA8IChiICE9IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDwgYiA9PT0gYycpIGlz
ICdhIDwgYiA9PT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPCBiKSA9PT0gYycp
IGlzICdhIDwgYiA9PT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA8IChiID09PSBj
KScpIGlzICdhIDwgKGIgPT09IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDwgYiAh
PT0gYycpIGlzICdhIDwgYiAhPT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPCBi
KSAhPT0gYycpIGlzICdhIDwgYiAhPT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA8
IChiICE9PSBjKScpIGlzICdhIDwgKGIgIT09IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCdhID4gYiA+IGMnKSBpcyAnYSA+IGIgPiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCco
YSA+IGIpID4gYycpIGlzICdhID4gYiA+IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2Eg
PiAoYiA+IGMpJykgaXMgJ2EgPiAoYiA+IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdh
IDwgYiA+IGMnKSBpcyAnYSA8IGIgPiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA8
IGIpID4gYycpIGlzICdhIDwgYiA+IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPCAo
YiA+IGMpJykgaXMgJ2EgPCAoYiA+IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID4g
YiA9PSBjJykgaXMgJ2EgPiBiID09IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID4g
YikgPT0gYycpIGlzICdhID4gYiA9PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID4g
KGIgPT0gYyknKSBpcyAnYSA+IChiID09IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdh
IDw9IGIgPD0gYycpIGlzICdhIDw9IGIgPD0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgn
KGEgPD0gYikgPD0gYycpIGlzICdhIDw9IGIgPD0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnYSA8PSAoYiA8PSBjKScpIGlzICdhIDw9IChiIDw9IGMpJworUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCdhIDwgYiA8PSBjJykgaXMgJ2EgPCBiIDw9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJp
YWxpemUoJyhhIDwgYikgPD0gYycpIGlzICdhIDwgYiA8PSBjJworUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCdhIDwgKGIgPD0gYyknKSBpcyAnYSA8IChiIDw9IGMpJworUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCdhIDw9IGIgPT0gYycpIGlzICdhIDw9IGIgPT0gYycKK1BBU1MgY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnKGEgPD0gYikgPT0gYycpIGlzICdhIDw9IGIgPT0gYycKK1BBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgnYSA8PSAoYiA9PSBjKScpIGlzICdhIDw9IChiID09IGMpJworUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCdhID49IGIgPj0gYycpIGlzICdhID49IGIgPj0gYycKK1BBU1Mg
Y29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPj0gYikgPj0gYycpIGlzICdhID49IGIgPj0gYycKK1BB
U1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA+PSAoYiA+PSBjKScpIGlzICdhID49IChiID49IGMp
JworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDwgYiA+PSBjJykgaXMgJ2EgPCBiID49IGMn
CitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIDwgYikgPj0gYycpIGlzICdhIDwgYiA+PSBj
JworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDwgKGIgPj0gYyknKSBpcyAnYSA8IChiID49
IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID49IGIgPT0gYycpIGlzICdhID49IGIg
PT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPj0gYikgPT0gYycpIGlzICdhID49
IGIgPT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA+PSAoYiA9PSBjKScpIGlzICdh
ID49IChiID09IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIGluc3RhbmNlb2YgYiBp
bnN0YW5jZW9mIGMnKSBpcyAnYSBpbnN0YW5jZW9mIGIgaW5zdGFuY2VvZiBjJworUEFTUyBjb21w
aWxlQW5kU2VyaWFsaXplKCcoYSBpbnN0YW5jZW9mIGIpIGluc3RhbmNlb2YgYycpIGlzICdhIGlu
c3RhbmNlb2YgYiBpbnN0YW5jZW9mIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgaW5z
dGFuY2VvZiAoYiBpbnN0YW5jZW9mIGMpJykgaXMgJ2EgaW5zdGFuY2VvZiAoYiBpbnN0YW5jZW9m
IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDwgYiBpbnN0YW5jZW9mIGMnKSBpcyAn
YSA8IGIgaW5zdGFuY2VvZiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA8IGIpIGlu
c3RhbmNlb2YgYycpIGlzICdhIDwgYiBpbnN0YW5jZW9mIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJp
YWxpemUoJ2EgPCAoYiBpbnN0YW5jZW9mIGMpJykgaXMgJ2EgPCAoYiBpbnN0YW5jZW9mIGMpJwor
UEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIGluc3RhbmNlb2YgYiA9PSBjJykgaXMgJ2EgaW5z
dGFuY2VvZiBiID09IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIGluc3RhbmNlb2Yg
YikgPT0gYycpIGlzICdhIGluc3RhbmNlb2YgYiA9PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCdhIGluc3RhbmNlb2YgKGIgPT0gYyknKSBpcyAnYSBpbnN0YW5jZW9mIChiID09IGMpJwor
UEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIGluIGIgaW4gYycpIGlzICdhIGluIGIgaW4gYycK
K1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgaW4gYikgaW4gYycpIGlzICdhIGluIGIgaW4g
YycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSBpbiAoYiBpbiBjKScpIGlzICdhIGluIChi
IGluIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDwgYiBpbiBjJykgaXMgJ2EgPCBi
IGluIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIDwgYikgaW4gYycpIGlzICdhIDwg
YiBpbiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDwgKGIgaW4gYyknKSBpcyAnYSA8
IChiIGluIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIGluIGIgPT0gYycpIGlzICdh
IGluIGIgPT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgaW4gYikgPT0gYycpIGlz
ICdhIGluIGIgPT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSBpbiAoYiA9PSBjKScp
IGlzICdhIGluIChiID09IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID09IGIgPT0g
YycpIGlzICdhID09IGIgPT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPT0gYikg
PT0gYycpIGlzICdhID09IGIgPT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9PSAo
YiA9PSBjKScpIGlzICdhID09IChiID09IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdh
ID09IGIgJiBjJykgaXMgJ2EgPT0gYiAmIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhh
ID09IGIpICYgYycpIGlzICdhID09IGIgJiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdh
ID09IChiICYgYyknKSBpcyAnYSA9PSAoYiAmIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCdhICE9IGIgIT0gYycpIGlzICdhICE9IGIgIT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnKGEgIT0gYikgIT0gYycpIGlzICdhICE9IGIgIT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnYSAhPSAoYiAhPSBjKScpIGlzICdhICE9IChiICE9IGMpJworUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCdhID09IGIgIT0gYycpIGlzICdhID09IGIgIT0gYycKK1BBU1MgY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnKGEgPT0gYikgIT0gYycpIGlzICdhID09IGIgIT0gYycKK1BBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgnYSA9PSAoYiAhPSBjKScpIGlzICdhID09IChiICE9IGMpJworUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCdhICE9IGIgJiBjJykgaXMgJ2EgIT0gYiAmIGMnCitQQVNTIGNv
bXBpbGVBbmRTZXJpYWxpemUoJyhhICE9IGIpICYgYycpIGlzICdhICE9IGIgJiBjJworUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCdhICE9IChiICYgYyknKSBpcyAnYSAhPSAoYiAmIGMpJworUEFT
UyBjb21waWxlQW5kU2VyaWFsaXplKCdhID09PSBiID09PSBjJykgaXMgJ2EgPT09IGIgPT09IGMn
CitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID09PSBiKSA9PT0gYycpIGlzICdhID09PSBi
ID09PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID09PSAoYiA9PT0gYyknKSBpcyAn
YSA9PT0gKGIgPT09IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID09IGIgPT09IGMn
KSBpcyAnYSA9PSBiID09PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA9PSBiKSA9
PT0gYycpIGlzICdhID09IGIgPT09IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPT0g
KGIgPT09IGMpJykgaXMgJ2EgPT0gKGIgPT09IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCdhID09PSBiICYgYycpIGlzICdhID09PSBiICYgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnKGEgPT09IGIpICYgYycpIGlzICdhID09PSBiICYgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnYSA9PT0gKGIgJiBjKScpIGlzICdhID09PSAoYiAmIGMpJworUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCdhICE9PSBiICE9PSBjJykgaXMgJ2EgIT09IGIgIT09IGMnCitQQVNTIGNvbXBp
bGVBbmRTZXJpYWxpemUoJyhhICE9PSBiKSAhPT0gYycpIGlzICdhICE9PSBiICE9PSBjJworUEFT
UyBjb21waWxlQW5kU2VyaWFsaXplKCdhICE9PSAoYiAhPT0gYyknKSBpcyAnYSAhPT0gKGIgIT09
IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID09IGIgIT09IGMnKSBpcyAnYSA9PSBi
ICE9PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA9PSBiKSAhPT0gYycpIGlzICdh
ID09IGIgIT09IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPT0gKGIgIT09IGMpJykg
aXMgJ2EgPT0gKGIgIT09IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICE9PSBiICYg
YycpIGlzICdhICE9PSBiICYgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgIT09IGIp
ICYgYycpIGlzICdhICE9PSBiICYgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSAhPT0g
KGIgJiBjKScpIGlzICdhICE9PSAoYiAmIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdh
ICYgYiAmIGMnKSBpcyAnYSAmIGIgJiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAm
IGIpICYgYycpIGlzICdhICYgYiAmIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgJiAo
YiAmIGMpJykgaXMgJ2EgJiAoYiAmIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICYg
YiBeIGMnKSBpcyAnYSAmIGIgXiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAmIGIp
IF4gYycpIGlzICdhICYgYiBeIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgJiAoYiBe
IGMpJykgaXMgJ2EgJiAoYiBeIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIF4gYiBe
IGMnKSBpcyAnYSBeIGIgXiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSBeIGIpIF4g
YycpIGlzICdhIF4gYiBeIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgXiAoYiBeIGMp
JykgaXMgJ2EgXiAoYiBeIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIF4gYiB8IGMn
KSBpcyAnYSBeIGIgfCBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSBeIGIpIHwgYycp
IGlzICdhIF4gYiB8IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgXiAoYiB8IGMpJykg
aXMgJ2EgXiAoYiB8IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIHwgYiB8IGMnKSBp
cyAnYSB8IGIgfCBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSB8IGIpIHwgYycpIGlz
ICdhIHwgYiB8IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgfCAoYiB8IGMpJykgaXMg
J2EgfCAoYiB8IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIHwgYiAmJiBjJykgaXMg
J2EgfCBiICYmIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIHwgYikgJiYgYycpIGlz
ICdhIHwgYiAmJiBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIHwgKGIgJiYgYyknKSBp
cyAnYSB8IChiICYmIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICYmIGIgJiYgYycp
IGlzICdhICYmIGIgJiYgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgJiYgYikgJiYg
YycpIGlzICdhICYmIGIgJiYgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSAmJiAoYiAm
JiBjKScpIGlzICdhICYmIChiICYmIGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICYm
IGIgfHwgYycpIGlzICdhICYmIGIgfHwgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEg
JiYgYikgfHwgYycpIGlzICdhICYmIGIgfHwgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgn
YSAmJiAoYiB8fCBjKScpIGlzICdhICYmIChiIHx8IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCdhIHx8IGIgfHwgYycpIGlzICdhIHx8IGIgfHwgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnKGEgfHwgYikgfHwgYycpIGlzICdhIHx8IGIgfHwgYycKK1BBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgnYSB8fCAoYiB8fCBjKScpIGlzICdhIHx8IChiIHx8IGMpJworUEFTUyBjb21waWxl
QW5kU2VyaWFsaXplKCdhID0gYiA9IGMnKSBpcyAnYSA9IGIgPSBjJworUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCcoYSA9IGIpID0gYycpIGlzICcoYSA9IGIpID0gYycKK1BBU1MgY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnYSA9IChiID0gYyknKSBpcyAnYSA9IGIgPSBjJworUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCdhID0gYiArIGMnKSBpcyAnYSA9IGIgKyBjJworUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCcoYSA9IGIpICsgYycpIGlzICcoYSA9IGIpICsgYycKK1BBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgnYSA9IChiICsgYyknKSBpcyAnYSA9IGIgKyBjJworUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCdhICsgYiA9IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVy
cm9yLgorUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIpID0gYycpIGlzICcoYSArIGIp
ID0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIChiID0gYyknKSBpcyAnYSArIChi
ID0gYyknCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKj0gYiAqPSBjJykgaXMgJ2EgKj0g
YiAqPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAqPSBiKSAqPSBjJykgaXMgJyhh
ICo9IGIpICo9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKj0gKGIgKj0gYyknKSBp
cyAnYSAqPSBiICo9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSBiICo9IGMnKSBp
cyAnYSA9IGIgKj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPSBiKSAqPSBjJykg
aXMgJyhhID0gYikgKj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IChiICo9IGMp
JykgaXMgJ2EgPSBiICo9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKj0gYiArIGMn
KSBpcyAnYSAqPSBiICsgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKj0gYikgKyBj
JykgaXMgJyhhICo9IGIpICsgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSAqPSAoYiAr
IGMpJykgaXMgJ2EgKj0gYiArIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyBiICo9
IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyBjb21w
aWxlQW5kU2VyaWFsaXplKCcoYSArIGIpICo9IGMnKSBpcyAnKGEgKyBiKSAqPSBjJworUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgKj0gYyknKSBpcyAnYSArIChiICo9IGMpJworUEFT
UyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC89IGIgLz0gYycpIGlzICdhIC89IGIgLz0gYycKK1BB
U1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgLz0gYikgLz0gYycpIGlzICcoYSAvPSBiKSAvPSBj
JworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC89IChiIC89IGMpJykgaXMgJ2EgLz0gYiAv
PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gYiAvPSBjJykgaXMgJ2EgPSBiIC89
IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID0gYikgLz0gYycpIGlzICcoYSA9IGIp
IC89IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSAoYiAvPSBjKScpIGlzICdhID0g
YiAvPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC89IGIgKyBjJykgaXMgJ2EgLz0g
YiArIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIC89IGIpICsgYycpIGlzICcoYSAv
PSBiKSArIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgLz0gKGIgKyBjKScpIGlzICdh
IC89IGIgKyBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgYiAvPSBjJykgdGhyZXcg
ZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnKGEgKyBiKSAvPSBjJykgaXMgJyhhICsgYikgLz0gYycKK1BBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgnYSArIChiIC89IGMpJykgaXMgJ2EgKyAoYiAvPSBjKScKK1BBU1MgY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnYSAlPSBiICU9IGMnKSBpcyAnYSAlPSBiICU9IGMnCitQQVNTIGNvbXBpbGVB
bmRTZXJpYWxpemUoJyhhICU9IGIpICU9IGMnKSBpcyAnKGEgJT0gYikgJT0gYycKK1BBU1MgY29t
cGlsZUFuZFNlcmlhbGl6ZSgnYSAlPSAoYiAlPSBjKScpIGlzICdhICU9IGIgJT0gYycKK1BBU1Mg
Y29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IGIgJT0gYycpIGlzICdhID0gYiAlPSBjJworUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCcoYSA9IGIpICU9IGMnKSBpcyAnKGEgPSBiKSAlPSBjJworUEFT
UyBjb21waWxlQW5kU2VyaWFsaXplKCdhID0gKGIgJT0gYyknKSBpcyAnYSA9IGIgJT0gYycKK1BB
U1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSAlPSBiICsgYycpIGlzICdhICU9IGIgKyBjJworUEFT
UyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSAlPSBiKSArIGMnKSBpcyAnKGEgJT0gYikgKyBjJwor
UEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICU9IChiICsgYyknKSBpcyAnYSAlPSBiICsgYycK
K1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIGIgJT0gYycpIHRocmV3IGV4Y2VwdGlvbiBT
eW50YXhFcnJvcjogUGFyc2UgZXJyb3IuCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICsg
YikgJT0gYycpIGlzICcoYSArIGIpICU9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2Eg
KyAoYiAlPSBjKScpIGlzICdhICsgKGIgJT0gYyknCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
J2EgKz0gYiArPSBjJykgaXMgJ2EgKz0gYiArPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCcoYSArPSBiKSArPSBjJykgaXMgJyhhICs9IGIpICs9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJp
YWxpemUoJ2EgKz0gKGIgKz0gYyknKSBpcyAnYSArPSBiICs9IGMnCitQQVNTIGNvbXBpbGVBbmRT
ZXJpYWxpemUoJ2EgPSBiICs9IGMnKSBpcyAnYSA9IGIgKz0gYycKK1BBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgnKGEgPSBiKSArPSBjJykgaXMgJyhhID0gYikgKz0gYycKK1BBU1MgY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnYSA9IChiICs9IGMpJykgaXMgJ2EgPSBiICs9IGMnCitQQVNTIGNvbXBpbGVB
bmRTZXJpYWxpemUoJ2EgKz0gYiArIGMnKSBpcyAnYSArPSBiICsgYycKK1BBU1MgY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnKGEgKz0gYikgKyBjJykgaXMgJyhhICs9IGIpICsgYycKK1BBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgnYSArPSAoYiArIGMpJykgaXMgJ2EgKz0gYiArIGMnCitQQVNTIGNvbXBp
bGVBbmRTZXJpYWxpemUoJ2EgKyBiICs9IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6
IFBhcnNlIGVycm9yLgorUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIpICs9IGMnKSBp
cyAnKGEgKyBiKSArPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgKz0gYykn
KSBpcyAnYSArIChiICs9IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC09IGIgLT0g
YycpIGlzICdhIC09IGIgLT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgLT0gYikg
LT0gYycpIGlzICcoYSAtPSBiKSAtPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIC09
IChiIC09IGMpJykgaXMgJ2EgLT0gYiAtPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdh
ID0gYiAtPSBjJykgaXMgJ2EgPSBiIC09IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhh
ID0gYikgLT0gYycpIGlzICcoYSA9IGIpIC09IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
J2EgPSAoYiAtPSBjKScpIGlzICdhID0gYiAtPSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCdhIC09IGIgKyBjJykgaXMgJ2EgLT0gYiArIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
JyhhIC09IGIpICsgYycpIGlzICcoYSAtPSBiKSArIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxp
emUoJ2EgLT0gKGIgKyBjKScpIGlzICdhIC09IGIgKyBjJworUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCdhICsgYiAtPSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVycm9yOiBQYXJzZSBlcnJv
ci4KK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKyBiKSAtPSBjJykgaXMgJyhhICsgYikg
LT0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIChiIC09IGMpJykgaXMgJ2EgKyAo
YiAtPSBjKScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA8PD0gYiA8PD0gYycpIGlzICdh
IDw8PSBiIDw8PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSA8PD0gYikgPDw9IGMn
KSBpcyAnKGEgPDw9IGIpIDw8PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhIDw8PSAo
YiA8PD0gYyknKSBpcyAnYSA8PD0gYiA8PD0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgn
YSA9IGIgPDw9IGMnKSBpcyAnYSA9IGIgPDw9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
JyhhID0gYikgPDw9IGMnKSBpcyAnKGEgPSBiKSA8PD0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnYSA9IChiIDw8PSBjKScpIGlzICdhID0gYiA8PD0gYycKK1BBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgnYSA8PD0gYiArIGMnKSBpcyAnYSA8PD0gYiArIGMnCitQQVNTIGNvbXBpbGVBbmRT
ZXJpYWxpemUoJyhhIDw8PSBiKSArIGMnKSBpcyAnKGEgPDw9IGIpICsgYycKK1BBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgnYSA8PD0gKGIgKyBjKScpIGlzICdhIDw8PSBiICsgYycKK1BBU1MgY29t
cGlsZUFuZFNlcmlhbGl6ZSgnYSArIGIgPDw9IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJy
b3I6IFBhcnNlIGVycm9yLgorUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIpIDw8PSBj
JykgaXMgJyhhICsgYikgPDw9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyAoYiA8
PD0gYyknKSBpcyAnYSArIChiIDw8PSBjKScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA+
Pj0gYiA+Pj0gYycpIGlzICdhID4+PSBiID4+PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCcoYSA+Pj0gYikgPj49IGMnKSBpcyAnKGEgPj49IGIpID4+PSBjJworUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCdhID4+PSAoYiA+Pj0gYyknKSBpcyAnYSA+Pj0gYiA+Pj0gYycKK1BBU1MgY29t
cGlsZUFuZFNlcmlhbGl6ZSgnYSA9IGIgPj49IGMnKSBpcyAnYSA9IGIgPj49IGMnCitQQVNTIGNv
bXBpbGVBbmRTZXJpYWxpemUoJyhhID0gYikgPj49IGMnKSBpcyAnKGEgPSBiKSA+Pj0gYycKK1BB
U1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IChiID4+PSBjKScpIGlzICdhID0gYiA+Pj0gYycK
K1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA+Pj0gYiArIGMnKSBpcyAnYSA+Pj0gYiArIGMn
CitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhID4+PSBiKSArIGMnKSBpcyAnKGEgPj49IGIp
ICsgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA+Pj0gKGIgKyBjKScpIGlzICdhID4+
PSBiICsgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIGIgPj49IGMnKSB0aHJldyBl
eGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCcoYSArIGIpID4+PSBjJykgaXMgJyhhICsgYikgPj49IGMnCitQQVNTIGNvbXBpbGVBbmRT
ZXJpYWxpemUoJ2EgKyAoYiA+Pj0gYyknKSBpcyAnYSArIChiID4+PSBjKScKK1BBU1MgY29tcGls
ZUFuZFNlcmlhbGl6ZSgnYSA+Pj49IGIgPj4+PSBjJykgaXMgJ2EgPj4+PSBiID4+Pj0gYycKK1BB
U1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPj4+PSBiKSA+Pj49IGMnKSBpcyAnKGEgPj4+PSBi
KSA+Pj49IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPj4+PSAoYiA+Pj49IGMpJykg
aXMgJ2EgPj4+PSBiID4+Pj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IGIgPj4+
PSBjJykgaXMgJ2EgPSBiID4+Pj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPSBi
KSA+Pj49IGMnKSBpcyAnKGEgPSBiKSA+Pj49IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUo
J2EgPSAoYiA+Pj49IGMpJykgaXMgJ2EgPSBiID4+Pj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnYSA+Pj49IGIgKyBjJykgaXMgJ2EgPj4+PSBiICsgYycKK1BBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgnKGEgPj4+PSBiKSArIGMnKSBpcyAnKGEgPj4+PSBiKSArIGMnCitQQVNTIGNvbXBp
bGVBbmRTZXJpYWxpemUoJ2EgPj4+PSAoYiArIGMpJykgaXMgJ2EgPj4+PSBiICsgYycKK1BBU1Mg
Y29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIGIgPj4+PSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRh
eEVycm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKyBiKSA+
Pj49IGMnKSBpcyAnKGEgKyBiKSA+Pj49IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2Eg
KyAoYiA+Pj49IGMpJykgaXMgJ2EgKyAoYiA+Pj49IGMpJworUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCdhICY9IGIgJj0gYycpIGlzICdhICY9IGIgJj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnKGEgJj0gYikgJj0gYycpIGlzICcoYSAmPSBiKSAmPSBjJworUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCdhICY9IChiICY9IGMpJykgaXMgJ2EgJj0gYiAmPSBjJworUEFTUyBjb21waWxl
QW5kU2VyaWFsaXplKCdhID0gYiAmPSBjJykgaXMgJ2EgPSBiICY9IGMnCitQQVNTIGNvbXBpbGVB
bmRTZXJpYWxpemUoJyhhID0gYikgJj0gYycpIGlzICcoYSA9IGIpICY9IGMnCitQQVNTIGNvbXBp
bGVBbmRTZXJpYWxpemUoJ2EgPSAoYiAmPSBjKScpIGlzICdhID0gYiAmPSBjJworUEFTUyBjb21w
aWxlQW5kU2VyaWFsaXplKCdhICY9IGIgKyBjJykgaXMgJ2EgJj0gYiArIGMnCitQQVNTIGNvbXBp
bGVBbmRTZXJpYWxpemUoJyhhICY9IGIpICsgYycpIGlzICcoYSAmPSBiKSArIGMnCitQQVNTIGNv
bXBpbGVBbmRTZXJpYWxpemUoJ2EgJj0gKGIgKyBjKScpIGlzICdhICY9IGIgKyBjJworUEFTUyBj
b21waWxlQW5kU2VyaWFsaXplKCdhICsgYiAmPSBjJykgdGhyZXcgZXhjZXB0aW9uIFN5bnRheEVy
cm9yOiBQYXJzZSBlcnJvci4KK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgKyBiKSAmPSBj
JykgaXMgJyhhICsgYikgJj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSArIChiICY9
IGMpJykgaXMgJ2EgKyAoYiAmPSBjKScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSBePSBi
IF49IGMnKSBpcyAnYSBePSBiIF49IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhIF49
IGIpIF49IGMnKSBpcyAnKGEgXj0gYikgXj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgn
YSBePSAoYiBePSBjKScpIGlzICdhIF49IGIgXj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnYSA9IGIgXj0gYycpIGlzICdhID0gYiBePSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXpl
KCcoYSA9IGIpIF49IGMnKSBpcyAnKGEgPSBiKSBePSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCdhID0gKGIgXj0gYyknKSBpcyAnYSA9IGIgXj0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnYSBePSBiICsgYycpIGlzICdhIF49IGIgKyBjJworUEFTUyBjb21waWxlQW5kU2VyaWFs
aXplKCcoYSBePSBiKSArIGMnKSBpcyAnKGEgXj0gYikgKyBjJworUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCdhIF49IChiICsgYyknKSBpcyAnYSBePSBiICsgYycKK1BBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgnYSArIGIgXj0gYycpIHRocmV3IGV4Y2VwdGlvbiBTeW50YXhFcnJvcjogUGFyc2Ug
ZXJyb3IuCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyhhICsgYikgXj0gYycpIGlzICcoYSAr
IGIpIF49IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyAoYiBePSBjKScpIGlzICdh
ICsgKGIgXj0gYyknCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgfD0gYiB8PSBjJykgaXMg
J2EgfD0gYiB8PSBjJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSB8PSBiKSB8PSBjJykg
aXMgJyhhIHw9IGIpIHw9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgfD0gKGIgfD0g
YyknKSBpcyAnYSB8PSBiIHw9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSBiIHw9
IGMnKSBpcyAnYSA9IGIgfD0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgPSBiKSB8
PSBjJykgaXMgJyhhID0gYikgfD0gYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IChi
IHw9IGMpJykgaXMgJ2EgPSBiIHw9IGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgfD0g
YiArIGMnKSBpcyAnYSB8PSBiICsgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgfD0g
YikgKyBjJykgaXMgJyhhIHw9IGIpICsgYycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSB8
PSAoYiArIGMpJykgaXMgJ2EgfD0gYiArIGMnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2Eg
KyBiIHw9IGMnKSB0aHJldyBleGNlcHRpb24gU3ludGF4RXJyb3I6IFBhcnNlIGVycm9yLgorUEFT
UyBjb21waWxlQW5kU2VyaWFsaXplKCcoYSArIGIpIHw9IGMnKSBpcyAnKGEgKyBiKSB8PSBjJwor
UEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdhICsgKGIgfD0gYyknKSBpcyAnYSArIChiIHw9IGMp
JworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCdkZWxldGUgYSArIGInKSBpcyAnZGVsZXRlIGEg
KyBiJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoZGVsZXRlIGEpICsgYicpIGlzICdkZWxl
dGUgYSArIGInCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ2RlbGV0ZSAoYSArIGIpJykgaXMg
J2RlbGV0ZSAoYSArIGIpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCchZGVsZXRlIGEnKSBp
cyAnIWRlbGV0ZSBhJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCchKGRlbGV0ZSBhKScpIGlz
ICchZGVsZXRlIGEnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ3ZvaWQgYSArIGInKSBpcyAn
dm9pZCBhICsgYicKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKHZvaWQgYSkgKyBiJykgaXMg
J3ZvaWQgYSArIGInCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ3ZvaWQgKGEgKyBiKScpIGlz
ICd2b2lkIChhICsgYiknCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyF2b2lkIGEnKSBpcyAn
IXZvaWQgYScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnISh2b2lkIGEpJykgaXMgJyF2b2lk
IGEnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJ3R5cGVvZiBhICsgYicpIGlzICd0eXBlb2Yg
YSArIGInCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyh0eXBlb2YgYSkgKyBiJykgaXMgJ3R5
cGVvZiBhICsgYicKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgndHlwZW9mIChhICsgYiknKSBp
cyAndHlwZW9mIChhICsgYiknCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyF0eXBlb2YgYScp
IGlzICchdHlwZW9mIGEnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyEodHlwZW9mIGEpJykg
aXMgJyF0eXBlb2YgYScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKythICsgYicpIGlzICcr
K2EgKyBiJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoKythKSArIGInKSBpcyAnKythICsg
YicKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKysoYSArIGIpJykgaXMgJysrKGEgKyBiKScK
K1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnISsrYScpIGlzICchKythJworUEFTUyBjb21waWxl
QW5kU2VyaWFsaXplKCchKCsrYSknKSBpcyAnISsrYScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnLS1hICsgYicpIGlzICctLWEgKyBiJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoLS1h
KSArIGInKSBpcyAnLS1hICsgYicKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnLS0oYSArIGIp
JykgaXMgJy0tKGEgKyBiKScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnIS0tYScpIGlzICch
LS1hJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCchKC0tYSknKSBpcyAnIS0tYScKK1BBU1Mg
Y29tcGlsZUFuZFNlcmlhbGl6ZSgnKyBhICsgYicpIGlzICcrIGEgKyBiJworUEFTUyBjb21waWxl
QW5kU2VyaWFsaXplKCcoKyBhKSArIGInKSBpcyAnKyBhICsgYicKK1BBU1MgY29tcGlsZUFuZFNl
cmlhbGl6ZSgnKyAoYSArIGIpJykgaXMgJysgKGEgKyBiKScKK1BBU1MgY29tcGlsZUFuZFNlcmlh
bGl6ZSgnISsgYScpIGlzICchKyBhJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCchKCsgYSkn
KSBpcyAnISsgYScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnLSBhICsgYicpIGlzICctIGEg
KyBiJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCcoLSBhKSArIGInKSBpcyAnLSBhICsgYicK
K1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnLSAoYSArIGIpJykgaXMgJy0gKGEgKyBiKScKK1BB
U1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnIS0gYScpIGlzICchLSBhJworUEFTUyBjb21waWxlQW5k
U2VyaWFsaXplKCchKC0gYSknKSBpcyAnIS0gYScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgn
fmEgKyBiJykgaXMgJ35hICsgYicKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnKH5hKSArIGIn
KSBpcyAnfmEgKyBiJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCd+KGEgKyBiKScpIGlzICd+
KGEgKyBiKScKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnIX5hJykgaXMgJyF+YScKK1BBU1Mg
Y29tcGlsZUFuZFNlcmlhbGl6ZSgnISh+YSknKSBpcyAnIX5hJworUEFTUyBjb21waWxlQW5kU2Vy
aWFsaXplKCchYSArIGInKSBpcyAnIWEgKyBiJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCco
IWEpICsgYicpIGlzICchYSArIGInCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyEoYSArIGIp
JykgaXMgJyEoYSArIGIpJworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCchIWEnKSBpcyAnISFh
JworUEFTUyBjb21waWxlQW5kU2VyaWFsaXplKCchKCFhKScpIGlzICchIWEnCitQQVNTIGNvbXBp
bGVBbmRTZXJpYWxpemUoJyFhKysnKSBpcyAnIWErKycKK1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6
ZSgnIShhKyspJykgaXMgJyFhKysnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyghYSkrKycp
IGlzICcoIWEpKysnCitQQVNTIGNvbXBpbGVBbmRTZXJpYWxpemUoJyFhLS0nKSBpcyAnIWEtLScK
K1BBU1MgY29tcGlsZUFuZFNlcmlhbGl6ZSgnIShhLS0pJykgaXMgJyFhLS0nCitQQVNTIGNvbXBp
bGVBbmRTZXJpYWxpemUoJyghYSktLScpIGlzICcoIWEpLS0nCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwoKUHJvcGVydHkgY2hhbmdlcyBvbjogTGF5
b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy1leHBlY3RlZC50
eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9qcy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvZnVuY3Rpb24tdG9TdHJpbmctcGFyZW50aGVz
ZXMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvZnVuY3Rpb24tdG9T
dHJpbmctcGFyZW50aGVzZXMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9mdW5jdGlvbi10b1N0cmluZy1wYXJl
bnRoZXNlcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBM
YXlvdXRUZXN0cy9mYXN0L2pzL2Z1bmN0aW9uLXRvU3RyaW5nLXBhcmVudGhlc2VzLmh0bWwKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCk5hbWU6IHN2bjplb2wt
c3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9m
dW5jdGlvbi10b1N0cmluZy1vYmplY3QtbGl0ZXJhbHMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvZnVuY3Rpb24tdG9TdHJpbmctb2JqZWN0LWxpdGVyYWxz
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvZnVuY3Rp
b24tdG9TdHJpbmctb2JqZWN0LWxpdGVyYWxzLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM5
IEBACitkZXNjcmlwdGlvbigKKyJUaGlzIHRlc3QgY2hlY2tzIHRoYXQgb2JqZWN0IGxpdGVyYWxz
IGFyZSBzZXJpYWxpemVkIHByb3Blcmx5LiAiICsKKyJJdCdzIG5lZWRlZCBpbiBwYXJ0IGJlY2F1
c2UgSmF2YVNjcmlwdENvcmUgY29udmVydHMgbnVtZXJpYyBwcm9wZXJ0eSBuYW1lcyB0byBzdHJp
bmcgYW5kIGJhY2suIgorKTsKKworZnVuY3Rpb24gY29tcGlsZUFuZFNlcmlhbGl6ZShleHByZXNz
aW9uKQoreworICAgIHZhciBmID0gZXZhbCgiKGZ1bmN0aW9uICgpIHsgcmV0dXJuICIgKyBleHBy
ZXNzaW9uICsgIjsgfSkiKTsKKyAgICB2YXIgc2VyaWFsaXplZFN0cmluZyA9IGYudG9TdHJpbmco
KTsKKyAgICBzZXJpYWxpemVkU3RyaW5nID0gc2VyaWFsaXplZFN0cmluZy5yZXBsYWNlKC9bIFx0
XHJcbl0rL2csICIgIik7CisgICAgc2VyaWFsaXplZFN0cmluZyA9IHNlcmlhbGl6ZWRTdHJpbmcu
cmVwbGFjZSgiZnVuY3Rpb24gKCkgeyByZXR1cm4gIiwgIiIpOworICAgIHNlcmlhbGl6ZWRTdHJp
bmcgPSBzZXJpYWxpemVkU3RyaW5nLnJlcGxhY2UoIjsgfSIsICIiKTsKKyAgICByZXR1cm4gc2Vy
aWFsaXplZFN0cmluZzsKK30KKworc2hvdWxkQmUoImNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSB7
IDE6IG51bGwgfScpIiwgIidhID0geyAxOiBudWxsIH0nIik7CitzaG91bGRCZSgiY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnYSA9IHsgMDogbnVsbCB9JykiLCAiJ2EgPSB7IDA6IG51bGwgfSciKTsKK3No
b3VsZEJlKCJjb21waWxlQW5kU2VyaWFsaXplKCdhID0geyAxLjA6IG51bGwgfScpIiwgIidhID0g
eyAxOiBudWxsIH0nIik7CitzaG91bGRCZSgiY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IHsgXCIx
LjBcIjogbnVsbCB9JykiLCAiJ2EgPSB7IFwiMS4wXCI6IG51bGwgfSciKTsKK3Nob3VsZEJlKCJj
b21waWxlQW5kU2VyaWFsaXplKCdhID0geyAxZS01MDA6IG51bGwgfScpIiwgIidhID0geyAwOiBu
dWxsIH0nIik7CitzaG91bGRCZSgiY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IHsgMWUtMzAwOiBu
dWxsIH0nKSIsICInYSA9IHsgMWUtMzAwOiBudWxsIH0nIik7CitzaG91bGRCZSgiY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnYSA9IHsgMWUzMDA6IG51bGwgfScpIiwgIidhID0geyAxZSszMDA6IG51bGwg
fSciKTsKK3Nob3VsZEJlKCJjb21waWxlQW5kU2VyaWFsaXplKCdhID0geyAxZTUwMDogbnVsbCB9
JykiLCAiJ2EgPSB7IFwiSW5maW5pdHlcIjogbnVsbCB9JyIpOworCitzaG91bGRCZSgiY29tcGls
ZUFuZFNlcmlhbGl6ZSgnYSA9IHsgTmFOOiBudWxsIH0nKSIsICInYSA9IHsgXCJOYU5cIjogbnVs
bCB9JyIpOworc2hvdWxkQmUoImNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSB7IEluZmluaXR5OiBu
dWxsIH0nKSIsICInYSA9IHsgXCJJbmZpbml0eVwiOiBudWxsIH0nIik7CisKK3Nob3VsZEJlKCJj
b21waWxlQW5kU2VyaWFsaXplKCdhID0geyBcIjFcIjogbnVsbCB9JykiLCAiJ2EgPSB7IDE6IG51
bGwgfSciKTsKK3Nob3VsZEJlKCJjb21waWxlQW5kU2VyaWFsaXplKCdhID0geyBcIjFoaVwiOiBu
dWxsIH0nKSIsICInYSA9IHsgXCIxaGlcIjogbnVsbCB9JyIpOworc2hvdWxkQmUoImNvbXBpbGVB
bmRTZXJpYWxpemUoJ2EgPSB7IFwiXFxcJ1wiOiBudWxsIH0nKSIsICInYSA9IHsgXCJcXFwnXCI6
IG51bGwgfSciKTsKK3Nob3VsZEJlKCJjb21waWxlQW5kU2VyaWFsaXplKCdhID0geyBcIlxcXFxc
IlwiOiBudWxsIH0nKSIsICInYSA9IHsgXCJcXFxcXCJcIjogbnVsbCB9JyIpOworCitzaG91bGRU
aHJvdygiY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IHsgLS0xOiBudWxsIH0nKSIpOworc2hvdWxk
VGhyb3coImNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgPSB7IC1OYU46IG51bGwgfScpIik7CitzaG91
bGRUaHJvdygiY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IHsgLTA6IG51bGwgfScpIik7CitzaG91
bGRUaHJvdygiY29tcGlsZUFuZFNlcmlhbGl6ZSgnYSA9IHsgLTAuMDogbnVsbCB9JykiKTsKK3No
b3VsZFRocm93KCJjb21waWxlQW5kU2VyaWFsaXplKCdhID0geyAtSW5maW5pdHk6IG51bGwgfScp
Iik7CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9qcy9yZXNvdXJjZXMvZnVuY3Rpb24tdG9TdHJpbmctcGFyZW50aGVzZXMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvZnVuY3Rpb24tdG9TdHJpbmct
cGFyZW50aGVzZXMuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291
cmNlcy9mdW5jdGlvbi10b1N0cmluZy1wYXJlbnRoZXNlcy5qcwkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMzIgQEAKK2Rlc2NyaXB0aW9uKAorIlRoaXMgdGVzdCBjaGVja3MgdGhhdCBwYXJlbnRo
ZXNlcyBhcmUgcHJlc2VydmVkIHdoZW4gc2lnbmlmaWNhbnQsIGFuZCBub3QgYWRkZWQgd2hlcmUg
aW5hcHByb3ByaWF0ZS4gIiArCisiV2UgbmVlZCB0aGlzIHRlc3QgYmVjYXVzZSB0aGUgSmF2YVNj
cmlwdENvcmUgcGFyc2VyIHJlbW92ZXMgYWxsIHBhcmVudGhlc2VzIGFuZCB0aGUgc2VyaWFsaXpl
ciB0aGVuIGFkZHMgdGhlbSBiYWNrLiIKKyk7CisKK2Z1bmN0aW9uIGNvbXBpbGVBbmRTZXJpYWxp
emUoZXhwcmVzc2lvbikKK3sKKyAgICB2YXIgZiA9IGV2YWwoIihmdW5jdGlvbiAoKSB7IHJldHVy
biAiICsgZXhwcmVzc2lvbiArICI7IH0pIik7CisgICAgdmFyIHNlcmlhbGl6ZWRTdHJpbmcgPSBm
LnRvU3RyaW5nKCk7CisgICAgc2VyaWFsaXplZFN0cmluZyA9IHNlcmlhbGl6ZWRTdHJpbmcucmVw
bGFjZSgvWyBcdFxyXG5dKy9nLCAiICIpOworICAgIHNlcmlhbGl6ZWRTdHJpbmcgPSBzZXJpYWxp
emVkU3RyaW5nLnJlcGxhY2UoImZ1bmN0aW9uICgpIHsgcmV0dXJuICIsICIiKTsKKyAgICBzZXJp
YWxpemVkU3RyaW5nID0gc2VyaWFsaXplZFN0cmluZy5yZXBsYWNlKCI7IH0iLCAiIik7CisgICAg
cmV0dXJuIHNlcmlhbGl6ZWRTdHJpbmc7Cit9CisKK3ZhciByZW1vdmVzRXh0cmFQYXJlbnRoZXNl
cyA9IGNvbXBpbGVBbmRTZXJpYWxpemUoIihhICsgYikgKyBjIikgPT0gImEgKyBiICsgYyI7CisK
K2Z1bmN0aW9uIHRlc3RMZWZ0QXNzb2NpYXRpdmVTYW1lKG9wQSwgb3BCKQoreworICAgIHNob3Vs
ZEJlKCJjb21waWxlQW5kU2VyaWFsaXplKCdhICIgKyBvcEEgKyAiIGIgIiArIG9wQiArICIgYycp
IiwKKyAgICAgICAgIidhICIgKyBvcEEgKyAiIGIgIiArIG9wQiArICIgYyciKTsKKyAgICBzaG91
bGRCZSgiY29tcGlsZUFuZFNlcmlhbGl6ZSgnKGEgIiArIG9wQSArICIgYikgIiArIG9wQiArICIg
YycpIiwKKyAgICAgICAgcmVtb3Zlc0V4dHJhUGFyZW50aGVzZXMKKyAgICAgICAgICAgID8gIidh
ICIgKyBvcEEgKyAiIGIgIiArIG9wQiArICIgYyciCisgICAgICAgICAgICA6ICInKGEgIiArIG9w
QSArICIgYikgIiArIG9wQiArICIgYyciCisgICAgKTsKKyAgICBzaG91bGRCZSgiY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnYSAiICsgb3BBICsgIiAoYiAiICsgb3BCICsgIiBjKScpIiwKKyAgICAgICAg
IidhICIgKyBvcEEgKyAiIChiICIgKyBvcEIgKyAiIGMpJyIpOworfQorCitmdW5jdGlvbiB0ZXN0
UmlnaHRBc3NvY2lhdGl2ZVNhbWUob3BBLCBvcEIpCit7CisgICAgc2hvdWxkQmUoImNvbXBpbGVB
bmRTZXJpYWxpemUoJ2EgIiArIG9wQSArICIgYiAiICsgb3BCICsgIiBjJykiLAorICAgICAgICAi
J2EgIiArIG9wQSArICIgYiAiICsgb3BCICsgIiBjJyIpOworICAgIHNob3VsZEJlKCJjb21waWxl
QW5kU2VyaWFsaXplKCcoYSAiICsgb3BBICsgIiBiKSAiICsgb3BCICsgIiBjJykiLAorICAgICAg
ICAiJyhhICIgKyBvcEEgKyAiIGIpICIgKyBvcEIgKyAiIGMnIik7CisgICAgc2hvdWxkQmUoImNv
bXBpbGVBbmRTZXJpYWxpemUoJ2EgIiArIG9wQSArICIgKGIgIiArIG9wQiArICIgYyknKSIsCisg
ICAgICAgIHJlbW92ZXNFeHRyYVBhcmVudGhlc2VzCisgICAgICAgICAgICA/ICInYSAiICsgb3BB
ICsgIiBiICIgKyBvcEIgKyAiIGMnIgorICAgICAgICAgICAgOiAiJ2EgIiArIG9wQSArICIgKGIg
IiArIG9wQiArICIgYyknIgorICAgICk7Cit9CisKK2Z1bmN0aW9uIHRlc3RIaWdoZXJGaXJzdChv
cEhpZ2hlciwgb3BMb3dlcikKK3sKKyAgICBzaG91bGRCZSgiY29tcGlsZUFuZFNlcmlhbGl6ZSgn
YSAiICsgb3BIaWdoZXIgKyAiIGIgIiArIG9wTG93ZXIgKyAiIGMnKSIsCisgICAgICAgICInYSAi
ICsgb3BIaWdoZXIgKyAiIGIgIiArIG9wTG93ZXIgKyAiIGMnIik7CisgICAgc2hvdWxkQmUoImNv
bXBpbGVBbmRTZXJpYWxpemUoJyhhICIgKyBvcEhpZ2hlciArICIgYikgIiArIG9wTG93ZXIgKyAi
IGMnKSIsCisgICAgICAgIHJlbW92ZXNFeHRyYVBhcmVudGhlc2VzCisgICAgICAgICAgICA/ICIn
YSAiICsgb3BIaWdoZXIgKyAiIGIgIiArIG9wTG93ZXIgKyAiIGMnIgorICAgICAgICAgICAgOiAi
J2EgIiArIG9wSGlnaGVyICsgIiAoYiAiICsgb3BMb3dlciArICIgYyknIgorICAgICk7CisgICAg
c2hvdWxkQmUoImNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgIiArIG9wSGlnaGVyICsgIiAoYiAiICsg
b3BMb3dlciArICIgYyknKSIsCisgICAgICAgICInYSAiICsgb3BIaWdoZXIgKyAiIChiICIgKyBv
cExvd2VyICsgIiBjKSciKTsKK30KKworZnVuY3Rpb24gdGVzdExvd2VyRmlyc3Qob3BMb3dlciwg
b3BIaWdoZXIpCit7CisgICAgc2hvdWxkQmUoImNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgIiArIG9w
TG93ZXIgKyAiIGIgIiArIG9wSGlnaGVyICsgIiBjJykiLAorICAgICAgICAiJ2EgIiArIG9wTG93
ZXIgKyAiIGIgIiArIG9wSGlnaGVyICsgIiBjJyIpOworICAgIHNob3VsZEJlKCJjb21waWxlQW5k
U2VyaWFsaXplKCcoYSAiICsgb3BMb3dlciArICIgYikgIiArIG9wSGlnaGVyICsgIiBjJykiLAor
ICAgICAgICAiJyhhICIgKyBvcExvd2VyICsgIiBiKSAiICsgb3BIaWdoZXIgKyAiIGMnIik7Cisg
ICAgc2hvdWxkQmUoImNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgIiArIG9wTG93ZXIgKyAiIChiICIg
KyBvcEhpZ2hlciArICIgYyknKSIsCisgICAgICAgIHJlbW92ZXNFeHRyYVBhcmVudGhlc2VzCisg
ICAgICAgICAgICA/ICInYSAiICsgb3BMb3dlciArICIgYiAiICsgb3BIaWdoZXIgKyAiIGMnIgor
ICAgICAgICAgICAgOiAiJ2EgIiArIG9wTG93ZXIgKyAiIChiICIgKyBvcEhpZ2hlciArICIgYykn
IgorICAgICk7Cit9CisKK3ZhciBiaW5hcnlPcGVyYXRvcnMgPSBbCisgICAgWyAiKiIsICIvIiwg
IiUiIF0sIFsgIisiLCAiLSIgXSwKKyAgICBbICI8PCIsICI+PiIsICI+Pj4iIF0sCisgICAgWyAi
PCIsICI+IiwgIjw9IiwgIj49IiwgImluc3RhbmNlb2YiLCAiaW4iIF0sCisgICAgWyAiPT0iLCAi
IT0iLCAiPT09IiwgIiE9PSIgXSwKKyAgICBbICImIiBdLCBbICJeIiBdLCBbICJ8IiBdLAorICAg
IFsgIiYmIiBdLCBbICJ8fCIgXQorXTsKKworZm9yIChpID0gMDsgaSA8IGJpbmFyeU9wZXJhdG9y
cy5sZW5ndGg7ICsraSkgeworICAgIHZhciBvcHMgPSBiaW5hcnlPcGVyYXRvcnNbaV07CisgICAg
Zm9yIChqID0gMDsgaiA8IG9wcy5sZW5ndGg7ICsraikgeworICAgICAgICB2YXIgb3AgPSBvcHNb
al07CisgICAgICAgIHRlc3RMZWZ0QXNzb2NpYXRpdmVTYW1lKG9wLCBvcCk7CisgICAgICAgIGlm
IChqICE9IDApCisgICAgICAgICAgICB0ZXN0TGVmdEFzc29jaWF0aXZlU2FtZShvcHNbMF0sIG9w
KTsKKyAgICAgICAgaWYgKGkgPCBiaW5hcnlPcGVyYXRvcnMubGVuZ3RoIC0gMSkgeworICAgICAg
ICAgICAgdmFyIG5leHRPcHMgPSBiaW5hcnlPcGVyYXRvcnNbaSArIDFdOworICAgICAgICAgICAg
aWYgKGogPT0gMCkKKyAgICAgICAgICAgICAgICBmb3IgKGsgPSAwOyBrIDwgbmV4dE9wcy5sZW5n
dGg7ICsraykKKyAgICAgICAgICAgICAgICAgICAgdGVzdEhpZ2hlckZpcnN0KG9wLCBuZXh0T3Bz
W2tdKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0ZXN0SGlnaGVyRmlyc3Qo
b3AsIG5leHRPcHNbMF0pOworICAgICAgICB9CisgICAgfQorfQorCit2YXIgYXNzaWdubWVudE9w
ZXJhdG9ycyA9IFsgIj0iLCAiKj0iLCAiLz0iICwgIiU9IiwgIis9IiwgIi09IiwgIjw8PSIsICI+
Pj0iLCAiPj4+PSIsICImPSIsICJePSIsICJ8PSIgXTsKKworZm9yIChpID0gMDsgaSA8IGFzc2ln
bm1lbnRPcGVyYXRvcnMubGVuZ3RoOyArK2kpIHsKKyAgICB2YXIgb3AgPSBhc3NpZ25tZW50T3Bl
cmF0b3JzW2ldOworICAgIHRlc3RSaWdodEFzc29jaWF0aXZlU2FtZShvcCwgb3ApOworICAgIGlm
IChpICE9IDApCisgICAgICAgIHRlc3RSaWdodEFzc29jaWF0aXZlU2FtZSgiPSIsIG9wKTsKKyAg
ICB0ZXN0TG93ZXJGaXJzdChvcCwgIisiKTsKKyAgICBzaG91bGRUaHJvdygiY29tcGlsZUFuZFNl
cmlhbGl6ZSgnYSArIGIgIiArIG9wICsgIiBjJykiKTsKKyAgICBzaG91bGRCZSgiY29tcGlsZUFu
ZFNlcmlhbGl6ZSgnKGEgKyBiKSAiICsgb3AgKyAiIGMnKSIsCisgICAgICAgICInKGEgKyBiKSAi
ICsgb3AgKyAiIGMnIik7CisgICAgc2hvdWxkQmUoImNvbXBpbGVBbmRTZXJpYWxpemUoJ2EgKyAo
YiAiICsgb3AgKyAiIGMpJykiLAorICAgICAgICAiJ2EgKyAoYiAiICsgb3AgKyAiIGMpJyIpOwor
fQorCit2YXIgcHJlZml4T3BlcmF0b3JzID0gWyAiZGVsZXRlIiwgInZvaWQiLCAidHlwZW9mIiwg
IisrIiwgIi0tIiwgIisiLCAiLSIsICJ+IiwgIiEiIF07Cit2YXIgcHJlZml4T3BlcmF0b3JTcGFj
ZSA9IFsgIiAiLCAiICIsICIgIiwgIiIsICIiLCAiICIsICIgIiwgIiIsICIiIF07CisKK2ZvciAo
aSA9IDA7IGkgPCBwcmVmaXhPcGVyYXRvcnMubGVuZ3RoOyArK2kpIHsKKyAgICB2YXIgb3AgPSBw
cmVmaXhPcGVyYXRvcnNbaV0gKyBwcmVmaXhPcGVyYXRvclNwYWNlW2ldOworICAgIHNob3VsZEJl
KCJjb21waWxlQW5kU2VyaWFsaXplKCciICsgb3AgKyAiYSArIGInKSIsICInIiArIG9wICsgImEg
KyBiJyIpOworICAgIHNob3VsZEJlKCJjb21waWxlQW5kU2VyaWFsaXplKCcoIiArIG9wICsgImEp
ICsgYicpIiwgIiciICsgb3AgKyAiYSArIGInIik7CisgICAgc2hvdWxkQmUoImNvbXBpbGVBbmRT
ZXJpYWxpemUoJyIgKyBvcCArICIoYSArIGIpJykiLCAiJyIgKyBvcCArICIoYSArIGIpJyIpOwor
ICAgIHNob3VsZEJlKCJjb21waWxlQW5kU2VyaWFsaXplKCchIiArIG9wICsgImEnKSIsICInISIg
KyBvcCArICJhJyIpOworICAgIHNob3VsZEJlKCJjb21waWxlQW5kU2VyaWFsaXplKCchKCIgKyBv
cCArICJhKScpIiwgIichIiArIG9wICsgImEnIik7Cit9CisKK3Nob3VsZEJlKCJjb21waWxlQW5k
U2VyaWFsaXplKCchYSsrJykiLCAiJyFhKysnIik7CitzaG91bGRCZSgiY29tcGlsZUFuZFNlcmlh
bGl6ZSgnIShhKyspJykiLCAiJyFhKysnIik7CitzaG91bGRCZSgiY29tcGlsZUFuZFNlcmlhbGl6
ZSgnKCFhKSsrJykiLCAiJyghYSkrKyciKTsKK3Nob3VsZEJlKCJjb21waWxlQW5kU2VyaWFsaXpl
KCchYS0tJykiLCAiJyFhLS0nIik7CitzaG91bGRCZSgiY29tcGlsZUFuZFNlcmlhbGl6ZSgnIShh
LS0pJykiLCAiJyFhLS0nIik7CitzaG91bGRCZSgiY29tcGlsZUFuZFNlcmlhbGl6ZSgnKCFhKS0t
JykiLCAiJyghYSktLSciKTsKKworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>
<flag name="review"
          id="7175"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>