<?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>19091</bug_id>
          
          <creation_ts>2008-05-15 15:19:11 -0700</creation_ts>
          <short_desc>Update CSS Transforms to latest spec</short_desc>
          <delta_ts>2008-07-22 17:57:14 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bdakin</cc>
    
    <cc>dino</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>80564</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-05-15 15:19:11 -0700</bug_when>
    <thetext>This is the transforms part of http://bugs.webkit.org/show_bug.cgi?id=19028</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80570</commentid>
    <comment_count>1</comment_count>
      <attachid>21185</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-05-15 15:29:20 -0700</bug_when>
    <thetext>Created attachment 21185
Updated transforms patch

&gt; In Transform3D.cpp:
&gt; 
&gt; +Transform3D &amp;Transform3D::function() {}
&gt; 
&gt; Move the &amp; to be with the return value, so:
&gt; 
&gt; Transform3D&amp; Transform3D::function() {}

done

&gt; In CodeGeneratorObjC.pm:
&gt; 
&gt; I don&apos;t understand this:
&gt; 
&gt; -    return &quot;CSSValue&quot; if $parent eq &quot;SVGColor&quot;;
&gt; +    return &quot;CSSValue&quot; if $parent eq &quot;SVGColor&quot; or $parent eq &quot;CSSValueList&quot;;

This is needed because the WebKitCSSTransformValue inherits from CSSValueList, which isn&apos;t recognised as a base class, and therefore gets Node as a parent. Code comes from Weinig.

&gt; In DerivedSources.make:
&gt; 
&gt;   VoidCallback \
&gt; +       WebKitCSSTransformValue \
&gt;    WheelEvent \
&gt; 
&gt; Double-check if tabs are actually used in that file.

Removed, although there are some others in there that are not my fault :)


&gt; I see &quot;KeyframeList&quot; in this patch.  I think that was unintentional.  Can you
&gt; remove it?

Removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80576</commentid>
    <comment_count>2</comment_count>
      <attachid>21185</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-05-15 15:35:40 -0700</bug_when>
    <thetext>Comment on attachment 21185
Updated transforms patch

Only thing left that I see is the need to add new files to other projects to avoid breaking the build when landing.  You can edit them all by hand (the others are all text files and easy to patch blind).

Windows:
WebCore.vcproj/WebCore.vcproj

wx:
WebCore-sources.bkl

GTK:
GNUmakefile.am

Qt:
WebCore.pro</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80582</commentid>
    <comment_count>3</comment_count>
      <attachid>21189</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-05-15 17:35:34 -0700</bug_when>
    <thetext>Created attachment 21189
adds the new files to non-OSX platforms

Here are the updated project files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80919</commentid>
    <comment_count>4</comment_count>
      <attachid>21234</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-05-19 14:01:03 -0700</bug_when>
    <thetext>Created attachment 21234
Transforms patch with all platforms

This includes the IDL files, the JS constructors for use on Window and updates to all the platform build files. Hopefully, this is the real deal, yo!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80920</commentid>
    <comment_count>5</comment_count>
      <attachid>21235</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-05-19 14:07:25 -0700</bug_when>
    <thetext>Created attachment 21235
tests computed style of transform</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80921</commentid>
    <comment_count>6</comment_count>
      <attachid>21236</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-05-19 14:09:13 -0700</bug_when>
    <thetext>Created attachment 21236
tests various transforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80922</commentid>
    <comment_count>7</comment_count>
      <attachid>21237</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-05-19 14:09:52 -0700</bug_when>
    <thetext>Created attachment 21237
sets a transform property to a new cssmatrix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80923</commentid>
    <comment_count>8</comment_count>
      <attachid>21238</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-05-19 14:10:30 -0700</bug_when>
    <thetext>Created attachment 21238
tests transitions on transforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80928</commentid>
    <comment_count>9</comment_count>
      <attachid>21240</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-05-19 16:21:58 -0700</bug_when>
    <thetext>Created attachment 21240
Transforms patch

Windows build fixes from aroben.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81250</commentid>
    <comment_count>10</comment_count>
      <attachid>21240</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-05-22 14:01:47 -0700</bug_when>
    <thetext>Comment on attachment 21240
Transforms patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82657</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-06-08 13:38:29 -0700</bug_when>
    <thetext>We should assign this to the person who&apos;s going to land it. Is that you, Hyatt?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>85033</commentid>
    <comment_count>12</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2008-07-02 19:22:21 -0700</bug_when>
    <thetext>got stale
now split across
https://bugs.webkit.org/show_bug.cgi?id=19861
https://bugs.webkit.org/show_bug.cgi?id=19863
https://bugs.webkit.org/show_bug.cgi?id=19864
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21185</attachid>
            <date>2008-05-15 15:29:20 -0700</date>
            <delta_ts>2008-05-19 14:01:03 -0700</delta_ts>
            <desc>Updated transforms patch</desc>
            <filename>transforms.patch</filename>
            <type>text/plain</type>
            <size>127032</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhbnNmb3JtM0QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhbnNmb3JtM0QuY3BwCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFuc2Zvcm0zRC5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiVHJhbnNm
b3JtM0QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKgorQWRhcHRlZCBmcm9tIE1hdHJp
eCBJbnZlcnNpb24gYnkgUmljaGFyZCBDYXJsaW5nLCBHcmFwaGljcyBHZW1zIDxodHRwOi8vdG9n
LmFjbS5vcmcvR3JhcGhpY3NHZW1zL2luZGV4Lmh0bWw+LgorCitFVUxBOiBUaGUgR3JhcGhpY3Mg
R2VtcyBjb2RlIGlzIGNvcHlyaWdodC1wcm90ZWN0ZWQuIEluIG90aGVyIHdvcmRzLCB5b3UgY2Fu
bm90IGNsYWltIHRoZSB0ZXh0IG9mIHRoZSBjb2RlIAorYXMgeW91ciBvd24gYW5kIHJlc2VsbCBp
dC4gVXNpbmcgdGhlIGNvZGUgaXMgcGVybWl0dGVkIGluIGFueSBwcm9ncmFtLCBwcm9kdWN0LCBv
ciBsaWJyYXJ5LCBub24tY29tbWVyY2lhbCAKK29yIGNvbW1lcmNpYWwuIEdpdmluZyBjcmVkaXQg
aXMgbm90IHJlcXVpcmVkLCB0aG91Z2ggaXMgYSBuaWNlIGdlc3R1cmUuIFRoZSBjb2RlIGNvbWVz
IGFzLWlzLCBhbmQgaWYgdGhlcmUgCithcmUgYW55IGZsYXdzIG9yIHByb2JsZW1zIHdpdGggYW55
IEdlbXMgY29kZSwgbm9ib2R5IGludm9sdmVkIHdpdGggR2VtcyAtIGF1dGhvcnMsIGVkaXRvcnMs
IHB1Ymxpc2hlcnMsIG9yIAord2VibWFzdGVycyAtIGFyZSB0byBiZSBoZWxkIHJlc3BvbnNpYmxl
LiBCYXNpY2FsbHksIGRvbid0IGJlIGEgamVyaywgYW5kIHJlbWVtYmVyIHRoYXQgYW55dGhpbmcg
ZnJlZSBjb21lcyAKK3dpdGggbm8gZ3VhcmFudGVlLgorKi8KKwordHlwZWRlZiBmbG9hdCBNYXRy
aXg0WzRdWzRdOworCisjZGVmaW5lIFNNQUxMX05VTUJFUiAgICAxLmUtOAorCisvKiAKKyAqICAg
aW52ZXJzZSggb3JpZ2luYWxfbWF0cml4LCBpbnZlcnNlX21hdHJpeCApCisgKiAKKyAqICAgIGNh
bGN1bGF0ZSB0aGUgaW52ZXJzZSBvZiBhIDR4NCBtYXRyaXgKKyAqCisgKiAgICAgLTEgICAgIAor
ICogICAgIEEgID0gX19fMV9fIGFkam9pbnQgQQorICogICAgICAgICBkZXQgQQorICovCisKKy8q
CisgKiBkb3VibGUgPSBkZXQyeDIoIGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJs
ZSBkICkKKyAqIAorICogY2FsY3VsYXRlIHRoZSBkZXRlcm1pbmFudCBvZiBhIDJ4MiBtYXRyaXgu
CisgKi8KKworc3RhdGljIGZsb2F0IGRldDJ4MihmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBm
bG9hdCBkKQoreworICAgIGZsb2F0IGFuczsKKyAgICBhbnMgPSBhICogZCAtIGIgKiBjOworICAg
IHJldHVybiBhbnM7Cit9CisKKy8qCisgKiBkb3VibGUgPSBkZXQzeDMoICBhMSwgYTIsIGEzLCBi
MSwgYjIsIGIzLCBjMSwgYzIsIGMzICkKKyAqIAorICogY2FsY3VsYXRlIHRoZSBkZXRlcm1pbmFu
dCBvZiBhIDN4MyBtYXRyaXgKKyAqIGluIHRoZSBmb3JtCisgKgorICogICAgIHwgYTEsICBiMSwg
IGMxIHwKKyAqICAgICB8IGEyLCAgYjIsICBjMiB8CisgKiAgICAgfCBhMywgIGIzLCAgYzMgfAor
ICovCisKK3N0YXRpYyBmbG9hdCBkZXQzeDMoZmxvYXQgYTEsIGZsb2F0IGEyLCBmbG9hdCBhMywg
ZmxvYXQgYjEsIGZsb2F0IGIyLCBmbG9hdCBiMywgZmxvYXQgYzEsIGZsb2F0IGMyLCBmbG9hdCBj
MykKK3sKKyAgICBmbG9hdCBhbnM7CisKKyAgICBhbnMgPSBhMSAqIGRldDJ4MiggYjIsIGIzLCBj
MiwgYzMgKQorICAgICAgICAtIGIxICogZGV0MngyKCBhMiwgYTMsIGMyLCBjMyApCisgICAgICAg
ICsgYzEgKiBkZXQyeDIoIGEyLCBhMywgYjIsIGIzICk7CisgICAgcmV0dXJuIGFuczsKK30KKwor
LyoKKyAqIGRvdWJsZSA9IGRldDR4NCggbWF0cml4ICkKKyAqIAorICogY2FsY3VsYXRlIHRoZSBk
ZXRlcm1pbmFudCBvZiBhIDR4NCBtYXRyaXguCisgKi8KK3N0YXRpYyBmbG9hdCBkZXQ0eDQoY29u
c3QgTWF0cml4NCBtKQoreworICAgIGZsb2F0IGFuczsKKyAgICBmbG9hdCBhMSwgYTIsIGEzLCBh
NCwgYjEsIGIyLCBiMywgYjQsIGMxLCBjMiwgYzMsIGM0LCBkMSwgZDIsIGQzLCBkNDsKKworICAg
IC8qIGFzc2lnbiB0byBpbmRpdmlkdWFsIHZhcmlhYmxlIG5hbWVzIHRvIGFpZCBzZWxlY3Rpbmcg
Ki8KKyAgICAvKiAgY29ycmVjdCBlbGVtZW50cyAqLworCisgICAgYTEgPSBtWzBdWzBdOyBiMSA9
IG1bMF1bMV07IAorICAgIGMxID0gbVswXVsyXTsgZDEgPSBtWzBdWzNdOworCisgICAgYTIgPSBt
WzFdWzBdOyBiMiA9IG1bMV1bMV07IAorICAgIGMyID0gbVsxXVsyXTsgZDIgPSBtWzFdWzNdOwor
CisgICAgYTMgPSBtWzJdWzBdOyBiMyA9IG1bMl1bMV07IAorICAgIGMzID0gbVsyXVsyXTsgZDMg
PSBtWzJdWzNdOworCisgICAgYTQgPSBtWzNdWzBdOyBiNCA9IG1bM11bMV07IAorICAgIGM0ID0g
bVszXVsyXTsgZDQgPSBtWzNdWzNdOworCisgICAgYW5zID0gYTEgKiBkZXQzeDMoIGIyLCBiMywg
YjQsIGMyLCBjMywgYzQsIGQyLCBkMywgZDQpCisgICAgICAgIC0gYjEgKiBkZXQzeDMoIGEyLCBh
MywgYTQsIGMyLCBjMywgYzQsIGQyLCBkMywgZDQpCisgICAgICAgICsgYzEgKiBkZXQzeDMoIGEy
LCBhMywgYTQsIGIyLCBiMywgYjQsIGQyLCBkMywgZDQpCisgICAgICAgIC0gZDEgKiBkZXQzeDMo
IGEyLCBhMywgYTQsIGIyLCBiMywgYjQsIGMyLCBjMywgYzQpOworICAgIHJldHVybiBhbnM7Cit9
CisKKy8qIAorICogICBhZGpvaW50KCBvcmlnaW5hbF9tYXRyaXgsIGludmVyc2VfbWF0cml4ICkK
KyAqIAorICogICAgIGNhbGN1bGF0ZSB0aGUgYWRqb2ludCBvZiBhIDR4NCBtYXRyaXgKKyAqCisg
KiAgICAgIExldCAgYSAgIGRlbm90ZSB0aGUgbWlub3IgZGV0ZXJtaW5hbnQgb2YgbWF0cml4IEEg
b2J0YWluZWQgYnkKKyAqICAgICAgICAgICBpagorICoKKyAqICAgICAgZGVsZXRpbmcgdGhlIGl0
aCByb3cgYW5kIGp0aCBjb2x1bW4gZnJvbSBBLgorICoKKyAqICAgICAgICAgICAgICAgICAgICBp
K2oKKyAqICAgICBMZXQgIGIgICA9ICgtMSkgICAgYQorICogICAgICAgICAgaWogICAgICAgICAg
ICBqaQorICoKKyAqICAgIFRoZSBtYXRyaXggQiA9IChiICApIGlzIHRoZSBhZGpvaW50IG9mIEEK
KyAqICAgICAgICAgICAgICAgICAgICAgaWoKKyAqLworCitzdGF0aWMgdm9pZCBhZGpvaW50KGNv
bnN0IE1hdHJpeDQgc3JjTWF0cml4LCBNYXRyaXg0IG91dE1hdHJpeCkKK3sKKyAgICBmbG9hdCBh
MSwgYTIsIGEzLCBhNCwgYjEsIGIyLCBiMywgYjQ7CisgICAgZmxvYXQgYzEsIGMyLCBjMywgYzQs
IGQxLCBkMiwgZDMsIGQ0OworCisgICAgLyogYXNzaWduIHRvIGluZGl2aWR1YWwgdmFyaWFibGUg
bmFtZXMgdG8gYWlkICAqLworICAgIC8qIHNlbGVjdGluZyBjb3JyZWN0IHZhbHVlcyAgKi8KKwor
ICAgIGExID0gc3JjTWF0cml4WzBdWzBdOyBiMSA9IHNyY01hdHJpeFswXVsxXTsgCisgICAgYzEg
PSBzcmNNYXRyaXhbMF1bMl07IGQxID0gc3JjTWF0cml4WzBdWzNdOworCisgICAgYTIgPSBzcmNN
YXRyaXhbMV1bMF07IGIyID0gc3JjTWF0cml4WzFdWzFdOyAKKyAgICBjMiA9IHNyY01hdHJpeFsx
XVsyXTsgZDIgPSBzcmNNYXRyaXhbMV1bM107CisKKyAgICBhMyA9IHNyY01hdHJpeFsyXVswXTsg
YjMgPSBzcmNNYXRyaXhbMl1bMV07CisgICAgYzMgPSBzcmNNYXRyaXhbMl1bMl07IGQzID0gc3Jj
TWF0cml4WzJdWzNdOworCisgICAgYTQgPSBzcmNNYXRyaXhbM11bMF07IGI0ID0gc3JjTWF0cml4
WzNdWzFdOyAKKyAgICBjNCA9IHNyY01hdHJpeFszXVsyXTsgZDQgPSBzcmNNYXRyaXhbM11bM107
CisKKworICAgIC8qIHJvdyBjb2x1bW4gbGFiZWxpbmcgcmV2ZXJzZWQgc2luY2Ugd2UgdHJhbnNw
b3NlIHJvd3MgJiBjb2x1bW5zICovCisKKyAgICBvdXRNYXRyaXhbMF1bMF0gID0gICBkZXQzeDMo
IGIyLCBiMywgYjQsIGMyLCBjMywgYzQsIGQyLCBkMywgZDQpOworICAgIG91dE1hdHJpeFsxXVsw
XSAgPSAtIGRldDN4MyggYTIsIGEzLCBhNCwgYzIsIGMzLCBjNCwgZDIsIGQzLCBkNCk7CisgICAg
b3V0TWF0cml4WzJdWzBdICA9ICAgZGV0M3gzKCBhMiwgYTMsIGE0LCBiMiwgYjMsIGI0LCBkMiwg
ZDMsIGQ0KTsKKyAgICBvdXRNYXRyaXhbM11bMF0gID0gLSBkZXQzeDMoIGEyLCBhMywgYTQsIGIy
LCBiMywgYjQsIGMyLCBjMywgYzQpOworICAgICAgICAKKyAgICBvdXRNYXRyaXhbMF1bMV0gID0g
LSBkZXQzeDMoIGIxLCBiMywgYjQsIGMxLCBjMywgYzQsIGQxLCBkMywgZDQpOworICAgIG91dE1h
dHJpeFsxXVsxXSAgPSAgIGRldDN4MyggYTEsIGEzLCBhNCwgYzEsIGMzLCBjNCwgZDEsIGQzLCBk
NCk7CisgICAgb3V0TWF0cml4WzJdWzFdICA9IC0gZGV0M3gzKCBhMSwgYTMsIGE0LCBiMSwgYjMs
IGI0LCBkMSwgZDMsIGQ0KTsKKyAgICBvdXRNYXRyaXhbM11bMV0gID0gICBkZXQzeDMoIGExLCBh
MywgYTQsIGIxLCBiMywgYjQsIGMxLCBjMywgYzQpOworICAgICAgICAKKyAgICBvdXRNYXRyaXhb
MF1bMl0gID0gICBkZXQzeDMoIGIxLCBiMiwgYjQsIGMxLCBjMiwgYzQsIGQxLCBkMiwgZDQpOwor
ICAgIG91dE1hdHJpeFsxXVsyXSAgPSAtIGRldDN4MyggYTEsIGEyLCBhNCwgYzEsIGMyLCBjNCwg
ZDEsIGQyLCBkNCk7CisgICAgb3V0TWF0cml4WzJdWzJdICA9ICAgZGV0M3gzKCBhMSwgYTIsIGE0
LCBiMSwgYjIsIGI0LCBkMSwgZDIsIGQ0KTsKKyAgICBvdXRNYXRyaXhbM11bMl0gID0gLSBkZXQz
eDMoIGExLCBhMiwgYTQsIGIxLCBiMiwgYjQsIGMxLCBjMiwgYzQpOworICAgICAgICAKKyAgICBv
dXRNYXRyaXhbMF1bM10gID0gLSBkZXQzeDMoIGIxLCBiMiwgYjMsIGMxLCBjMiwgYzMsIGQxLCBk
MiwgZDMpOworICAgIG91dE1hdHJpeFsxXVszXSAgPSAgIGRldDN4MyggYTEsIGEyLCBhMywgYzEs
IGMyLCBjMywgZDEsIGQyLCBkMyk7CisgICAgb3V0TWF0cml4WzJdWzNdICA9IC0gZGV0M3gzKCBh
MSwgYTIsIGEzLCBiMSwgYjIsIGIzLCBkMSwgZDIsIGQzKTsKKyAgICBvdXRNYXRyaXhbM11bM10g
ID0gICBkZXQzeDMoIGExLCBhMiwgYTMsIGIxLCBiMiwgYjMsIGMxLCBjMiwgYzMpOworfQorCisv
LyByZXR1cm5zIGZhbHNlIGlmIHRoZSBtYXRyaXggaXMgbm90IGludGVydGlibGUKK3N0YXRpYyBi
b29sIGludmVyc2UoY29uc3QgTWF0cml4NCBzcmNNYXRyaXgsIE1hdHJpeDQgb3V0TWF0cml4KQor
eworICAgIC8qIGNhbGN1bGF0ZSB0aGUgYWRqb2ludCBtYXRyaXggKi8KKworICAgIGFkam9pbnQo
c3JjTWF0cml4LCBvdXRNYXRyaXgpOworCisgICAgLyogIGNhbGN1bGF0ZSB0aGUgNHg0IGRldGVy
bWluYW50CisgICAgICogIGlmIHRoZSBkZXRlcm1pbmFudCBpcyB6ZXJvLCAKKyAgICAgKiAgdGhl
biB0aGUgaW52ZXJzZSBtYXRyaXggaXMgbm90IHVuaXF1ZS4KKyAgICAgKi8KKworICAgIGZsb2F0
IGRldCA9IGRldDR4NChzcmNNYXRyaXgpOworCisgICAgaWYgKGZhYnMoZGV0KSA8IFNNQUxMX05V
TUJFUikgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyogc2NhbGUgdGhl
IGFkam9pbnQgbWF0cml4IHRvIGdldCB0aGUgaW52ZXJzZSAqLworCisgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCA0OyBpKyspCisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgNDsgaisrKQorICAg
ICAgICAgICAgb3V0TWF0cml4W2ldW2pdID0gb3V0TWF0cml4W2ldW2pdIC8gZGV0OworCisgICAg
cmV0dXJuIHRydWU7Cit9CisKKy8qIEVuZCBvZiBjb2RlIGFkYXB0ZWQgZnJvbSBNYXRyaXggSW52
ZXJzaW9uIGJ5IFJpY2hhcmQgQ2FybGluZyAqLworCitUcmFuc2Zvcm0zRDo6VHJhbnNmb3JtM0Qo
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0KQoreworICAgIG1ha2VJZGVudGl0eSgpOworICAgIG1f
bWF0cml4WzBdWzBdID0gKGZsb2F0KSB0LmEoKTsKKyAgICBtX21hdHJpeFswXVsxXSA9IChmbG9h
dCkgdC5iKCk7CisgICAgbV9tYXRyaXhbMV1bMF0gPSAoZmxvYXQpIHQuYygpOworICAgIG1fbWF0
cml4WzFdWzFdID0gKGZsb2F0KSB0LmQoKTsKKworICAgIG1fbWF0cml4WzNdWzBdID0gKGZsb2F0
KSB0LmUoKTsKKyAgICBtX21hdHJpeFszXVsxXSA9IChmbG9hdCkgdC5mKCk7Cit9CisKK1RyYW5z
Zm9ybTNEJiBUcmFuc2Zvcm0zRDo6c2NhbGUoZmxvYXQgc3gsIGZsb2F0IHN5KQoreworICAgIFRy
YW5zZm9ybTNEIG1hdDsKKyAgICBtYXQubV9tYXRyaXhbMF1bMF0gPSBzeDsKKyAgICBtYXQubV9t
YXRyaXhbMV1bMV0gPSBzeTsKKworICAgIG11bHRMZWZ0KG1hdCk7CisgICAgcmV0dXJuICp0aGlz
OworfQorCitUcmFuc2Zvcm0zRCYgVHJhbnNmb3JtM0Q6OnNjYWxlM2QoZmxvYXQgc3gsIGZsb2F0
IHN5LCBmbG9hdCBzeikKK3sKKyAgICBUcmFuc2Zvcm0zRCBtYXQ7CisgICAgbWF0Lm1fbWF0cml4
WzBdWzBdID0gc3g7CisgICAgbWF0Lm1fbWF0cml4WzFdWzFdID0gc3k7CisgICAgbWF0Lm1fbWF0
cml4WzJdWzJdID0gc3o7CisKKyAgICBtdWx0TGVmdChtYXQpOworICAgIHJldHVybiAqdGhpczsK
K30KKworVHJhbnNmb3JtM0QmIFRyYW5zZm9ybTNEOjpyb3RhdGUzZChmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB6LCBmbG9hdCBhbmdsZSkKK3sKKyAgICAvLyBhbmdsZXMgYXJlIGluIGRlZ3JlZXMu
IFN3aXRjaCB0byByYWRpYW5zCisgICAgYW5nbGUgPSAoZmxvYXQpIChhbmdsZSAvIDM2MC4wICog
TV9QSSAqIDIuMCk7CisgICAgCisgICAgYW5nbGUgLz0gMi4wZjsKKyAgICBmbG9hdCBzaW5BID0g
c2luZihhbmdsZSk7CisgICAgZmxvYXQgY29zQSA9IGNvc2YoYW5nbGUpOworICAgIGZsb2F0IHNp
bkEyID0gc2luQSAqIHNpbkE7CisgICAgCisgICAgLy8gbm9ybWFsaXplCisgICAgZmxvYXQgbGVu
Z3RoID0gc3FydGYoeCp4K3kqeSt6KnopOworICAgIGlmIChsZW5ndGggPT0gMCkgeworICAgICAg
ICAvLyBiYWQgdmVjdG9yLCBqdXN0IHVzZSBzb21ldGhpbmcgcmVhc29uYWJsZQorICAgICAgICB4
ID0gMDsKKyAgICAgICAgeSA9IDA7CisgICAgICAgIHogPSAxOworICAgIH0KKyAgICBlbHNlIGlm
IChsZW5ndGggIT0gMSkgeworICAgICAgICB4IC89IGxlbmd0aDsKKyAgICAgICAgeSAvPSBsZW5n
dGg7CisgICAgICAgIHogLz0gbGVuZ3RoOworICAgIH0KKyAgICAKKyAgICBUcmFuc2Zvcm0zRCBt
YXQ7CisKKyAgICAvLyBvcHRpbWl6ZSBjYXNlIHdoZXJlIGF4aXMgaXMgYWxvbmcgbWFqb3IgYXhp
cworICAgIGlmICh4ID09IDEuMGYgJiYgeSA9PSAwLjBmICYmIHogPT0gMC4wZikgeworICAgICAg
ICBtYXQubV9tYXRyaXhbMF1bMF0gPSAxLjBmOworICAgICAgICBtYXQubV9tYXRyaXhbMF1bMV0g
PSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhbMF1bMl0gPSAwLjBmOworICAgICAgICBtYXQu
bV9tYXRyaXhbMV1bMF0gPSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhbMV1bMV0gPSAxLjBm
IC0gMi4wZiAqIHNpbkEyOworICAgICAgICBtYXQubV9tYXRyaXhbMV1bMl0gPSAyLjBmICogc2lu
QSAqIGNvc0E7CisgICAgICAgIG1hdC5tX21hdHJpeFsyXVswXSA9IDAuMGY7CisgICAgICAgIG1h
dC5tX21hdHJpeFsyXVsxXSA9IC0yLjBmICogc2luQSAqIGNvc0E7CisgICAgICAgIG1hdC5tX21h
dHJpeFsyXVsyXSA9IDEuMGYgLSAyLjBmICogc2luQTI7CisgICAgICAgIG1hdC5tX21hdHJpeFsw
XVszXSA9IG1hdC5tX21hdHJpeFsxXVszXSA9IG1hdC5tX21hdHJpeFsyXVszXSA9IDAuMGY7Cisg
ICAgICAgIG1hdC5tX21hdHJpeFszXVswXSA9IG1hdC5tX21hdHJpeFszXVsxXSA9IG1hdC5tX21h
dHJpeFszXVsyXSA9IDAuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFszXVszXSA9IDEuMGY7Cisg
ICAgfQorICAgIGVsc2UgaWYgKHggPT0gMC4wZiAmJiB5ID09IDEuMGYgJiYgeiA9PSAwLjBmKSB7
CisgICAgICAgIG1hdC5tX21hdHJpeFswXVswXSA9IDEuMGYgLSAyLjBmICogc2luQTI7CisgICAg
ICAgIG1hdC5tX21hdHJpeFswXVsxXSA9IDAuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFswXVsy
XSA9IC0yLjBmICogc2luQSAqIGNvc0E7CisgICAgICAgIG1hdC5tX21hdHJpeFsxXVswXSA9IDAu
MGY7CisgICAgICAgIG1hdC5tX21hdHJpeFsxXVsxXSA9IDEuMGY7CisgICAgICAgIG1hdC5tX21h
dHJpeFsxXVsyXSA9IDAuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFsyXVswXSA9IDIuMGYgKiBz
aW5BICogY29zQTsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzJdWzFdID0gMC4wZjsKKyAgICAgICAg
bWF0Lm1fbWF0cml4WzJdWzJdID0gMS4wZiAtIDIuMGYgKiBzaW5BMjsKKyAgICAgICAgbWF0Lm1f
bWF0cml4WzBdWzNdID0gbWF0Lm1fbWF0cml4WzFdWzNdID0gbWF0Lm1fbWF0cml4WzJdWzNdID0g
MC4wZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzNdWzBdID0gbWF0Lm1fbWF0cml4WzNdWzFdID0g
bWF0Lm1fbWF0cml4WzNdWzJdID0gMC4wZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzNdWzNdID0g
MS4wZjsKKyAgICB9CisgICAgZWxzZSBpZiAoeCA9PSAwLjBmICYmIHkgPT0gMC4wZiAmJiB6ID09
IDEuMGYpIHsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzBdID0gMS4wZiAtIDIuMGYgKiBzaW5B
MjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzFdID0gMi4wZiAqIHNpbkEgKiBjb3NBOworICAg
ICAgICBtYXQubV9tYXRyaXhbMF1bMl0gPSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhbMV1b
MF0gPSAtMi4wZiAqIHNpbkEgKiBjb3NBOworICAgICAgICBtYXQubV9tYXRyaXhbMV1bMV0gPSAx
LjBmIC0gMi4wZiAqIHNpbkEyOworICAgICAgICBtYXQubV9tYXRyaXhbMV1bMl0gPSAwLjBmOwor
ICAgICAgICBtYXQubV9tYXRyaXhbMl1bMF0gPSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhb
Ml1bMV0gPSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhbMl1bMl0gPSAxLjBmOworICAgICAg
ICBtYXQubV9tYXRyaXhbMF1bM10gPSBtYXQubV9tYXRyaXhbMV1bM10gPSBtYXQubV9tYXRyaXhb
Ml1bM10gPSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhbM11bMF0gPSBtYXQubV9tYXRyaXhb
M11bMV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhb
M11bM10gPSAxLjBmOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZmxvYXQgeDIgPSB4Kng7
IGZsb2F0IHkyID0geSp5OyBmbG9hdCB6MiA9IHoqejsKKyAgICAKKyAgICAgICAgbWF0Lm1fbWF0
cml4WzBdWzBdID0gMS4wZiAtIDIuMGYgKiAoeTIgKyB6MikgKiBzaW5BMjsKKyAgICAgICAgbWF0
Lm1fbWF0cml4WzBdWzFdID0gMi4wZiAqICh4ICogeSAqIHNpbkEyICsgeiAqIHNpbkEgKiBjb3NB
KTsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzJdID0gMi4wZiAqICh4ICogeiAqIHNpbkEyIC0g
eSAqIHNpbkEgKiBjb3NBKTsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzFdWzBdID0gMi4wZiAqICh5
ICogeCAqIHNpbkEyIC0geiAqIHNpbkEgKiBjb3NBKTsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzFd
WzFdID0gMS4wZiAtIDIuMGYgKiAoejIgKyB4MikgKiBzaW5BMjsKKyAgICAgICAgbWF0Lm1fbWF0
cml4WzFdWzJdID0gMi4wZiAqICh5ICogeiAqIHNpbkEyICsgeCAqIHNpbkEgKiBjb3NBKTsKKyAg
ICAgICAgbWF0Lm1fbWF0cml4WzJdWzBdID0gMi4wZiAqICh6ICogeCAqIHNpbkEyICsgeSAqIHNp
bkEgKiBjb3NBKTsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzJdWzFdID0gMi4wZiAqICh6ICogeSAq
IHNpbkEyIC0geCAqIHNpbkEgKiBjb3NBKTsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzJdWzJdID0g
MS4wZiAtIDIuMGYgKiAoeDIgKyB5MikgKiBzaW5BMjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzBd
WzNdID0gbWF0Lm1fbWF0cml4WzFdWzNdID0gbWF0Lm1fbWF0cml4WzJdWzNdID0gMC4wZjsKKyAg
ICAgICAgbWF0Lm1fbWF0cml4WzNdWzBdID0gbWF0Lm1fbWF0cml4WzNdWzFdID0gbWF0Lm1fbWF0
cml4WzNdWzJdID0gMC4wZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzNdWzNdID0gMS4wZjsKKyAg
ICB9CisgICAgbXVsdExlZnQobWF0KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1RyYW5zZm9y
bTNEJiBUcmFuc2Zvcm0zRDo6cm90YXRlM2QoZmxvYXQgcngsIGZsb2F0IHJ5LCBmbG9hdCByeikK
K3sKKyAgICAvLyBhbmdsZXMgYXJlIGluIGRlZ3JlZXMuIFN3aXRjaCB0byByYWRpYW5zCisgICAg
cnggPSAoZmxvYXQpIChyeCAvIDM2MC4wICogTV9QSSAqIDIuMCk7CisgICAgcnkgPSAoZmxvYXQp
IChyeSAvIDM2MC4wICogTV9QSSAqIDIuMCk7CisgICAgcnogPSAoZmxvYXQpIChyeiAvIDM2MC4w
ICogTV9QSSAqIDIuMCk7CisgICAgCisgICAgVHJhbnNmb3JtM0QgbWF0OworICAgIAorICAgIHJ4
IC89IDIuMGY7CisgICAgZmxvYXQgc2luQSA9IHNpbmYocngpOworICAgIGZsb2F0IGNvc0EgPSBj
b3NmKHJ4KTsKKyAgICBmbG9hdCBzaW5BMiA9IHNpbkEgKiBzaW5BOworICAgIAorICAgIG1hdC5t
X21hdHJpeFswXVswXSA9IDEuMGY7CisgICAgbWF0Lm1fbWF0cml4WzBdWzFdID0gMC4wZjsKKyAg
ICBtYXQubV9tYXRyaXhbMF1bMl0gPSAwLjBmOworICAgIG1hdC5tX21hdHJpeFsxXVswXSA9IDAu
MGY7CisgICAgbWF0Lm1fbWF0cml4WzFdWzFdID0gMS4wZiAtIDIuMGYgKiBzaW5BMjsKKyAgICBt
YXQubV9tYXRyaXhbMV1bMl0gPSAyLjBmICogc2luQSAqIGNvc0E7CisgICAgbWF0Lm1fbWF0cml4
WzJdWzBdID0gMC4wZjsKKyAgICBtYXQubV9tYXRyaXhbMl1bMV0gPSAtMi4wZiAqIHNpbkEgKiBj
b3NBOworICAgIG1hdC5tX21hdHJpeFsyXVsyXSA9IDEuMGYgLSAyLjBmICogc2luQTI7CisgICAg
bWF0Lm1fbWF0cml4WzBdWzNdID0gbWF0Lm1fbWF0cml4WzFdWzNdID0gbWF0Lm1fbWF0cml4WzJd
WzNdID0gMC4wZjsKKyAgICBtYXQubV9tYXRyaXhbM11bMF0gPSBtYXQubV9tYXRyaXhbM11bMV0g
PSBtYXQubV9tYXRyaXhbM11bMl0gPSAwLjBmOworICAgIG1hdC5tX21hdHJpeFszXVszXSA9IDEu
MGY7CisgICAgCisgICAgVHJhbnNmb3JtM0Qgcm1hdChtYXQpOworICAgIAorICAgIHJ5IC89IDIu
MGY7CisgICAgc2luQSA9IHNpbmYocnkpOworICAgIGNvc0EgPSBjb3NmKHJ5KTsKKyAgICBzaW5B
MiA9IHNpbkEgKiBzaW5BOworICAgIAorICAgIG1hdC5tX21hdHJpeFswXVswXSA9IDEuMGYgLSAy
LjBmICogc2luQTI7CisgICAgbWF0Lm1fbWF0cml4WzBdWzFdID0gMC4wZjsKKyAgICBtYXQubV9t
YXRyaXhbMF1bMl0gPSAtMi4wZiAqIHNpbkEgKiBjb3NBOworICAgIG1hdC5tX21hdHJpeFsxXVsw
XSA9IDAuMGY7CisgICAgbWF0Lm1fbWF0cml4WzFdWzFdID0gMS4wZjsKKyAgICBtYXQubV9tYXRy
aXhbMV1bMl0gPSAwLjBmOworICAgIG1hdC5tX21hdHJpeFsyXVswXSA9IDIuMGYgKiBzaW5BICog
Y29zQTsKKyAgICBtYXQubV9tYXRyaXhbMl1bMV0gPSAwLjBmOworICAgIG1hdC5tX21hdHJpeFsy
XVsyXSA9IDEuMGYgLSAyLjBmICogc2luQTI7CisgICAgbWF0Lm1fbWF0cml4WzBdWzNdID0gbWF0
Lm1fbWF0cml4WzFdWzNdID0gbWF0Lm1fbWF0cml4WzJdWzNdID0gMC4wZjsKKyAgICBtYXQubV9t
YXRyaXhbM11bMF0gPSBtYXQubV9tYXRyaXhbM11bMV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAw
LjBmOworICAgIG1hdC5tX21hdHJpeFszXVszXSA9IDEuMGY7CisgICAgCisgICAgcm1hdC5tdWx0
TGVmdChtYXQpOworCisgICAgcnogLz0gMi4wZjsKKyAgICBzaW5BID0gc2luZihyeik7CisgICAg
Y29zQSA9IGNvc2YocnopOworICAgIHNpbkEyID0gc2luQSAqIHNpbkE7CisgICAgCisgICAgbWF0
Lm1fbWF0cml4WzBdWzBdID0gMS4wZiAtIDIuMGYgKiBzaW5BMjsKKyAgICBtYXQubV9tYXRyaXhb
MF1bMV0gPSAyLjBmICogc2luQSAqIGNvc0E7CisgICAgbWF0Lm1fbWF0cml4WzBdWzJdID0gMC4w
ZjsKKyAgICBtYXQubV9tYXRyaXhbMV1bMF0gPSAtMi4wZiAqIHNpbkEgKiBjb3NBOworICAgIG1h
dC5tX21hdHJpeFsxXVsxXSA9IDEuMGYgLSAyLjBmICogc2luQTI7CisgICAgbWF0Lm1fbWF0cml4
WzFdWzJdID0gMC4wZjsKKyAgICBtYXQubV9tYXRyaXhbMl1bMF0gPSAwLjBmOworICAgIG1hdC5t
X21hdHJpeFsyXVsxXSA9IDAuMGY7CisgICAgbWF0Lm1fbWF0cml4WzJdWzJdID0gMS4wZjsKKyAg
ICBtYXQubV9tYXRyaXhbMF1bM10gPSBtYXQubV9tYXRyaXhbMV1bM10gPSBtYXQubV9tYXRyaXhb
Ml1bM10gPSAwLjBmOworICAgIG1hdC5tX21hdHJpeFszXVswXSA9IG1hdC5tX21hdHJpeFszXVsx
XSA9IG1hdC5tX21hdHJpeFszXVsyXSA9IDAuMGY7CisgICAgbWF0Lm1fbWF0cml4WzNdWzNdID0g
MS4wZjsKKworICAgIHJtYXQubXVsdExlZnQobWF0KTsKKworICAgIG11bHRMZWZ0KHJtYXQpOwor
ICAgIHJldHVybiAqdGhpczsKK30KKworVHJhbnNmb3JtM0QmIFRyYW5zZm9ybTNEOjp0cmFuc2xh
dGUoZmxvYXQgdHgsIGZsb2F0IHR5KQoreworICAgIFRyYW5zZm9ybTNEIG1hdDsKKyAgICBtYXQu
bV9tYXRyaXhbM11bMF0gPSB0eDsKKyAgICBtYXQubV9tYXRyaXhbM11bMV0gPSB0eTsKKworICAg
IG11bHRMZWZ0KG1hdCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitUcmFuc2Zvcm0zRCYgVHJh
bnNmb3JtM0Q6OnRyYW5zbGF0ZTNkKGZsb2F0IHR4LCBmbG9hdCB0eSwgZmxvYXQgdHopCit7Cisg
ICAgVHJhbnNmb3JtM0QgbWF0OworICAgIG1hdC5tX21hdHJpeFszXVswXSA9IHR4OworICAgIG1h
dC5tX21hdHJpeFszXVsxXSA9IHR5OworICAgIG1hdC5tX21hdHJpeFszXVsyXSA9IHR6OworCisg
ICAgbXVsdExlZnQobWF0KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1RyYW5zZm9ybTNEJiBU
cmFuc2Zvcm0zRDo6c2tldyhmbG9hdCBzeCwgZmxvYXQgc3kpCit7CisgICAgLy8gYW5nbGVzIGFy
ZSBpbiBkZWdyZWVzLiBTd2l0Y2ggdG8gcmFkaWFucworICAgIHN4ID0gKGZsb2F0KSAoc3ggLyAz
NjAuMCAqIE1fUEkgKiAyLjApOworICAgIHN5ID0gKGZsb2F0KSAoc3kgLyAzNjAuMCAqIE1fUEkg
KiAyLjApOworICAgIAorICAgIFRyYW5zZm9ybTNEIG1hdDsKKyAgICBtYXQubV9tYXRyaXhbMF1b
MV0gPSB0YW5mKHN5KTsgLy8gbm90ZSB0aGF0IHRoZSB5IHNoZWFyIGdvZXMgaW4gdGhlIGZpcnN0
IHJvdworICAgIG1hdC5tX21hdHJpeFsxXVswXSA9IHRhbmYoc3gpOyAvLyBhbmQgdGhlIHggc2hl
YXIgaW4gdGhlIHNlY29uZCByb3cKKworICAgIG11bHRMZWZ0KG1hdCk7CisgICAgcmV0dXJuICp0
aGlzOworfQorCitUcmFuc2Zvcm0zRCYgVHJhbnNmb3JtM0Q6OmFwcGx5UGVyc3BlY3RpdmUoZmxv
YXQgcCkKK3sKKyAgICBUcmFuc2Zvcm0zRCBtYXQ7CisgICAgaWYgKHAgIT0gMCkKKyAgICAgICAg
bWF0Lm1fbWF0cml4WzJdWzNdID0gLTEvcDsKKworICAgIG11bHRMZWZ0KG1hdCk7CisgICAgcmV0
dXJuICp0aGlzOworfQorCisvLworLy8gbXVsdGlwbGllcyBtYXRyaXggYnkgZ2l2ZW4gbWF0cml4
IG9uIHRoZSByaWdodAorLy8KK1RyYW5zZm9ybTNEICYgCitUcmFuc2Zvcm0zRDo6bXVsdExlZnQo
Y29uc3QgVHJhbnNmb3JtM0QmIG1hdCkKK3sKKyAgICBmbG9hdCB0bXBbNF1bNF07CisgICAgCisg
ICAgdG1wWzBdWzBdID0gKG1hdC5tX21hdHJpeFswXVswXSAqIG1fbWF0cml4WzBdWzBdICsgbWF0
Lm1fbWF0cml4WzBdWzFdICogbV9tYXRyaXhbMV1bMF0KKyAgICAgICAgICAgICAgICsgbWF0Lm1f
bWF0cml4WzBdWzJdICogbV9tYXRyaXhbMl1bMF0gKyBtYXQubV9tYXRyaXhbMF1bM10gKiBtX21h
dHJpeFszXVswXSk7CisgICAgdG1wWzBdWzFdID0gKG1hdC5tX21hdHJpeFswXVswXSAqIG1fbWF0
cml4WzBdWzFdICsgbWF0Lm1fbWF0cml4WzBdWzFdICogbV9tYXRyaXhbMV1bMV0KKyAgICAgICAg
ICAgICAgICsgbWF0Lm1fbWF0cml4WzBdWzJdICogbV9tYXRyaXhbMl1bMV0gKyBtYXQubV9tYXRy
aXhbMF1bM10gKiBtX21hdHJpeFszXVsxXSk7CisgICAgdG1wWzBdWzJdID0gKG1hdC5tX21hdHJp
eFswXVswXSAqIG1fbWF0cml4WzBdWzJdICsgbWF0Lm1fbWF0cml4WzBdWzFdICogbV9tYXRyaXhb
MV1bMl0KKyAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0cml4WzBdWzJdICogbV9tYXRyaXhbMl1b
Ml0gKyBtYXQubV9tYXRyaXhbMF1bM10gKiBtX21hdHJpeFszXVsyXSk7CisgICAgdG1wWzBdWzNd
ID0gKG1hdC5tX21hdHJpeFswXVswXSAqIG1fbWF0cml4WzBdWzNdICsgbWF0Lm1fbWF0cml4WzBd
WzFdICogbV9tYXRyaXhbMV1bM10KKyAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0cml4WzBdWzJd
ICogbV9tYXRyaXhbMl1bM10gKyBtYXQubV9tYXRyaXhbMF1bM10gKiBtX21hdHJpeFszXVszXSk7
CisKKyAgICB0bXBbMV1bMF0gPSAobWF0Lm1fbWF0cml4WzFdWzBdICogbV9tYXRyaXhbMF1bMF0g
KyBtYXQubV9tYXRyaXhbMV1bMV0gKiBtX21hdHJpeFsxXVswXQorICAgICAgICAgICAgICAgKyBt
YXQubV9tYXRyaXhbMV1bMl0gKiBtX21hdHJpeFsyXVswXSArIG1hdC5tX21hdHJpeFsxXVszXSAq
IG1fbWF0cml4WzNdWzBdKTsKKyAgICB0bXBbMV1bMV0gPSAobWF0Lm1fbWF0cml4WzFdWzBdICog
bV9tYXRyaXhbMF1bMV0gKyBtYXQubV9tYXRyaXhbMV1bMV0gKiBtX21hdHJpeFsxXVsxXQorICAg
ICAgICAgICAgICAgKyBtYXQubV9tYXRyaXhbMV1bMl0gKiBtX21hdHJpeFsyXVsxXSArIG1hdC5t
X21hdHJpeFsxXVszXSAqIG1fbWF0cml4WzNdWzFdKTsKKyAgICB0bXBbMV1bMl0gPSAobWF0Lm1f
bWF0cml4WzFdWzBdICogbV9tYXRyaXhbMF1bMl0gKyBtYXQubV9tYXRyaXhbMV1bMV0gKiBtX21h
dHJpeFsxXVsyXQorICAgICAgICAgICAgICAgKyBtYXQubV9tYXRyaXhbMV1bMl0gKiBtX21hdHJp
eFsyXVsyXSArIG1hdC5tX21hdHJpeFsxXVszXSAqIG1fbWF0cml4WzNdWzJdKTsKKyAgICB0bXBb
MV1bM10gPSAobWF0Lm1fbWF0cml4WzFdWzBdICogbV9tYXRyaXhbMF1bM10gKyBtYXQubV9tYXRy
aXhbMV1bMV0gKiBtX21hdHJpeFsxXVszXQorICAgICAgICAgICAgICAgKyBtYXQubV9tYXRyaXhb
MV1bMl0gKiBtX21hdHJpeFsyXVszXSArIG1hdC5tX21hdHJpeFsxXVszXSAqIG1fbWF0cml4WzNd
WzNdKTsKKworICAgIHRtcFsyXVswXSA9IChtYXQubV9tYXRyaXhbMl1bMF0gKiBtX21hdHJpeFsw
XVswXSArIG1hdC5tX21hdHJpeFsyXVsxXSAqIG1fbWF0cml4WzFdWzBdCisgICAgICAgICAgICAg
ICArIG1hdC5tX21hdHJpeFsyXVsyXSAqIG1fbWF0cml4WzJdWzBdICsgbWF0Lm1fbWF0cml4WzJd
WzNdICogbV9tYXRyaXhbM11bMF0pOworICAgIHRtcFsyXVsxXSA9IChtYXQubV9tYXRyaXhbMl1b
MF0gKiBtX21hdHJpeFswXVsxXSArIG1hdC5tX21hdHJpeFsyXVsxXSAqIG1fbWF0cml4WzFdWzFd
CisgICAgICAgICAgICAgICArIG1hdC5tX21hdHJpeFsyXVsyXSAqIG1fbWF0cml4WzJdWzFdICsg
bWF0Lm1fbWF0cml4WzJdWzNdICogbV9tYXRyaXhbM11bMV0pOworICAgIHRtcFsyXVsyXSA9ICht
YXQubV9tYXRyaXhbMl1bMF0gKiBtX21hdHJpeFswXVsyXSArIG1hdC5tX21hdHJpeFsyXVsxXSAq
IG1fbWF0cml4WzFdWzJdCisgICAgICAgICAgICAgICArIG1hdC5tX21hdHJpeFsyXVsyXSAqIG1f
bWF0cml4WzJdWzJdICsgbWF0Lm1fbWF0cml4WzJdWzNdICogbV9tYXRyaXhbM11bMl0pOworICAg
IHRtcFsyXVszXSA9IChtYXQubV9tYXRyaXhbMl1bMF0gKiBtX21hdHJpeFswXVszXSArIG1hdC5t
X21hdHJpeFsyXVsxXSAqIG1fbWF0cml4WzFdWzNdCisgICAgICAgICAgICAgICArIG1hdC5tX21h
dHJpeFsyXVsyXSAqIG1fbWF0cml4WzJdWzNdICsgbWF0Lm1fbWF0cml4WzJdWzNdICogbV9tYXRy
aXhbM11bM10pOworCisgICAgdG1wWzNdWzBdID0gKG1hdC5tX21hdHJpeFszXVswXSAqIG1fbWF0
cml4WzBdWzBdICsgbWF0Lm1fbWF0cml4WzNdWzFdICogbV9tYXRyaXhbMV1bMF0KKyAgICAgICAg
ICAgICAgICsgbWF0Lm1fbWF0cml4WzNdWzJdICogbV9tYXRyaXhbMl1bMF0gKyBtYXQubV9tYXRy
aXhbM11bM10gKiBtX21hdHJpeFszXVswXSk7CisgICAgdG1wWzNdWzFdID0gKG1hdC5tX21hdHJp
eFszXVswXSAqIG1fbWF0cml4WzBdWzFdICsgbWF0Lm1fbWF0cml4WzNdWzFdICogbV9tYXRyaXhb
MV1bMV0KKyAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0cml4WzNdWzJdICogbV9tYXRyaXhbMl1b
MV0gKyBtYXQubV9tYXRyaXhbM11bM10gKiBtX21hdHJpeFszXVsxXSk7CisgICAgdG1wWzNdWzJd
ID0gKG1hdC5tX21hdHJpeFszXVswXSAqIG1fbWF0cml4WzBdWzJdICsgbWF0Lm1fbWF0cml4WzNd
WzFdICogbV9tYXRyaXhbMV1bMl0KKyAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0cml4WzNdWzJd
ICogbV9tYXRyaXhbMl1bMl0gKyBtYXQubV9tYXRyaXhbM11bM10gKiBtX21hdHJpeFszXVsyXSk7
CisgICAgdG1wWzNdWzNdID0gKG1hdC5tX21hdHJpeFszXVswXSAqIG1fbWF0cml4WzBdWzNdICsg
bWF0Lm1fbWF0cml4WzNdWzFdICogbV9tYXRyaXhbMV1bM10KKyAgICAgICAgICAgICAgICsgbWF0
Lm1fbWF0cml4WzNdWzJdICogbV9tYXRyaXhbMl1bM10gKyBtYXQubV9tYXRyaXhbM11bM10gKiBt
X21hdHJpeFszXVszXSk7CisgICAgCisgICAgc2V0TWF0cml4KChmbG9hdCopIHRtcCk7CisgICAg
cmV0dXJuICp0aGlzOworfQorCit2b2lkCitUcmFuc2Zvcm0zRDo6bXVsdFZlY01hdHJpeChmbG9h
dCBpbngsIGZsb2F0IGlueSwgZmxvYXQmIG91dHgsIGZsb2F0JiBvdXR5KSBjb25zdAoreworICAg
IG91dHggPSBtX21hdHJpeFszXVswXSArIGlueCAqIG1fbWF0cml4WzBdWzBdICsgaW55ICogbV9t
YXRyaXhbMV1bMF07CisgICAgb3V0eSA9IG1fbWF0cml4WzNdWzFdICsgaW54ICogbV9tYXRyaXhb
MF1bMV0gKyBpbnkgKiBtX21hdHJpeFsxXVsxXTsKKyAgICBmbG9hdCB3ID0gbV9tYXRyaXhbM11b
M10gKyBpbnggKiBtX21hdHJpeFswXVszXSArIGlueSAqIG1fbWF0cml4WzFdWzNdOworICAgIGlm
ICh3ICE9IDEgJiYgdyAhPSAwKSB7CisgICAgICAgIG91dHggLz0gdzsKKyAgICAgICAgb3V0eSAv
PSB3OworICAgIH0KK30KKworLy8KKy8vIHJldHVybnMgaW52ZXJzZSBvZiBtYXRyaXgKKy8vCitU
cmFuc2Zvcm0zRAorVHJhbnNmb3JtM0Q6OmludmVyc2UoKSBjb25zdCAKK3sKKyAgICBUcmFuc2Zv
cm0zRCBpbnZNYXQ7CisgICAgCisgICAgYm9vbCBpbnZlcnRlZCA9IFdlYkNvcmU6OmludmVyc2Uo
KGZsb2F0KCopWzRdKSBtX21hdHJpeCwgKGZsb2F0KCopWzRdKSBpbnZNYXQubV9tYXRyaXgpOwor
ICAgIGlmICghaW52ZXJ0ZWQpIHsKKyAgICAgICAgLy8gRklYTUU6IGluZGljYXRlIGZhaWx1cmUg
c29tZWhvdworICAgICAgICByZXR1cm4gVHJhbnNmb3JtM0QoKTsKKyAgICB9CisgICAgCisgICAg
cmV0dXJuIGludk1hdDsKK30KKworQWZmaW5lVHJhbnNmb3JtCitUcmFuc2Zvcm0zRDo6YWZmaW5l
VHJhbnNmb3JtKCkgY29uc3QKK3sKKyAgICAvLyBOb3RlIHRoYXQgdGhpcyB0aHJvd3MgYXdheSB0
aGUgei1heGlzCisgICAgLy8gRklYTUU6IGluZGljYXRlIHdoZW4gdGhpcyBsb3NlcyBkYXRhIHNv
bWVob3cKKyAgICBBZmZpbmVUcmFuc2Zvcm0gdHJhbnNmb3JtKG1fbWF0cml4WzBdWzBdLCBtX21h
dHJpeFswXVsxXSwgbV9tYXRyaXhbMV1bMF0sIG1fbWF0cml4WzFdWzFdLCBtX21hdHJpeFszXVsw
XSwgbV9tYXRyaXhbM11bMV0pOworICAgIHJldHVybiB0cmFuc2Zvcm07Cit9CisKK30KSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhbnNmb3JtM0QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYW5zZm9ybTNELmgJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYW5zZm9ybTNELmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIENvbXB1dGVyLCBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFRyYW5zZm9ybTNEX2gK
KyNkZWZpbmUgVHJhbnNmb3JtM0RfaAorCisjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFmZmluZVRyYW5zZm9ybTsKKworY2xhc3MgVHJhbnNm
b3JtM0QgeworcHVibGljOgorICAgIFRyYW5zZm9ybTNEKCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1ha2VJZGVudGl0eSgpOyB9CisgICAgVHJh
bnNmb3JtM0QoZmxvYXQgbTExLCBmbG9hdCBtMTIsIGZsb2F0IG0xMywgZmxvYXQgbTE0LAorICAg
ICAgICAgICAgICAgIGZsb2F0IG0yMSwgZmxvYXQgbTIyLCBmbG9hdCBtMjMsIGZsb2F0IG0yNCwK
KyAgICAgICAgICAgICAgICBmbG9hdCBtMzEsIGZsb2F0IG0zMiwgZmxvYXQgbTMzLCBmbG9hdCBt
MzQsCisgICAgICAgICAgICAgICAgZmxvYXQgbTQxLCBmbG9hdCBtNDIsIGZsb2F0IG00MywgZmxv
YXQgbTQ0KSAgICAgICAgIHsgc2V0TWF0cml4KG0xMSwgbTEyLCBtMTMsIG0xNCwgbTIxLCBtMjIs
IG0yMywgbTI0LCBtMzEsIG0zMiwgbTMzLCBtMzQsIG00MSwgbTQyLCBtNDMsIG00NCk7IH0KKyAg
ICBUcmFuc2Zvcm0zRChjb25zdCBUcmFuc2Zvcm0zRCYgdCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeyAqdGhpcyA9IHQ7IH0KKworICAgIFRyYW5zZm9ybTNEKGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYgdCk7CisgICAgCisgICAgVHJhbnNmb3JtM0QgJm9wZXJhdG9yID0oY29uc3QgVHJh
bnNmb3JtM0QgJnQpCisgICAgeworICAgICAgICBzZXRNYXRyaXgoKGZsb2F0KikgdC5tX21hdHJp
eCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB2b2lkIHNldE1hdHJpeChm
bG9hdCBtMTEsIGZsb2F0IG0xMiwgZmxvYXQgbTEzLCBmbG9hdCBtMTQsCisgICAgICAgICAgICAg
ICAgICAgIGZsb2F0IG0yMSwgZmxvYXQgbTIyLCBmbG9hdCBtMjMsIGZsb2F0IG0yNCwKKyAgICAg
ICAgICAgICAgICAgICAgZmxvYXQgbTMxLCBmbG9hdCBtMzIsIGZsb2F0IG0zMywgZmxvYXQgbTM0
LAorICAgICAgICAgICAgICAgICAgICBmbG9hdCBtNDEsIGZsb2F0IG00MiwgZmxvYXQgbTQzLCBm
bG9hdCBtNDQpCisgICAgeworICAgICAgICBtX21hdHJpeFswXVswXSA9IG0xMTsgbV9tYXRyaXhb
MF1bMV0gPSBtMTI7IG1fbWF0cml4WzBdWzJdID0gbTEzOyBtX21hdHJpeFswXVszXSA9IG0xNDsg
CisgICAgICAgIG1fbWF0cml4WzFdWzBdID0gbTIxOyBtX21hdHJpeFsxXVsxXSA9IG0yMjsgbV9t
YXRyaXhbMV1bMl0gPSBtMjM7IG1fbWF0cml4WzFdWzNdID0gbTI0OyAKKyAgICAgICAgbV9tYXRy
aXhbMl1bMF0gPSBtMzE7IG1fbWF0cml4WzJdWzFdID0gbTMyOyBtX21hdHJpeFsyXVsyXSA9IG0z
MzsgbV9tYXRyaXhbMl1bM10gPSBtMzQ7IAorICAgICAgICBtX21hdHJpeFszXVswXSA9IG00MTsg
bV9tYXRyaXhbM11bMV0gPSBtNDI7IG1fbWF0cml4WzNdWzJdID0gbTQzOyBtX21hdHJpeFszXVsz
XSA9IG00NDsKKyAgICB9CisgICAgCisgICAgVHJhbnNmb3JtM0QmICAgIG1ha2VJZGVudGl0eSgp
ICB7IHNldE1hdHJpeCgxLDAsMCwwLCAwLDEsMCwwLCAwLDAsMSwwLCAwLDAsMCwxKTsgcmV0dXJu
ICp0aGlzOyB9CisgICAgYm9vbCBpc0lkZW50aXR5KCkgY29uc3QgICAgIHsgcmV0dXJuICp0aGlz
ID09IFRyYW5zZm9ybTNEKCk7IH0KKyAgICAKKyAgICBmbG9hdCBtMTEoKSBjb25zdCAgICAgICAg
ICAgeyByZXR1cm4gbV9tYXRyaXhbMF1bMF07IH0KKyAgICBmbG9hdCBtMTIoKSBjb25zdCAgICAg
ICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMF1bMV07IH0KKyAgICBmbG9hdCBtMTMoKSBjb25zdCAg
ICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMF1bMl07IH0KKyAgICBmbG9hdCBtMTQoKSBjb25z
dCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMF1bM107IH0KKyAgICBmbG9hdCBtMjEoKSBj
b25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMV1bMF07IH0KKyAgICBmbG9hdCBtMjIo
KSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMV1bMV07IH0KKyAgICBmbG9hdCBt
MjMoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMV1bMl07IH0KKyAgICBmbG9h
dCBtMjQoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMV1bM107IH0KKyAgICBm
bG9hdCBtMzEoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMl1bMF07IH0KKyAg
ICBmbG9hdCBtMzIoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMl1bMV07IH0K
KyAgICBmbG9hdCBtMzMoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMl1bMl07
IH0KKyAgICBmbG9hdCBtMzQoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMl1b
M107IH0KKyAgICBmbG9hdCBtNDEoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhb
M11bMF07IH0KKyAgICBmbG9hdCBtNDIoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRy
aXhbM11bMV07IH0KKyAgICBmbG9hdCBtNDMoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9t
YXRyaXhbM11bMl07IH0KKyAgICBmbG9hdCBtNDQoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4g
bV9tYXRyaXhbM11bM107IH0KKworICAgIHZvaWQgc2V0TTExKGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzBdWzBdID0gZjsgfQorICAgIHZvaWQgc2V0TTEyKGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzBdWzFdID0gZjsgfQorICAgIHZvaWQgc2V0TTEzKGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzBdWzJdID0gZjsgfQorICAgIHZvaWQgc2V0TTE0KGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzBdWzNdID0gZjsgfQorICAgIHZvaWQgc2V0TTIxKGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzFdWzBdID0gZjsgfQorICAgIHZvaWQgc2V0TTIyKGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzFdWzFdID0gZjsgfQorICAgIHZvaWQgc2V0TTIzKGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzFdWzJdID0gZjsgfQorICAgIHZvaWQgc2V0TTI0KGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzFdWzNdID0gZjsgfQorICAgIHZvaWQgc2V0TTMxKGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzJdWzBdID0gZjsgfQorICAgIHZvaWQgc2V0TTMyKGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzJdWzFdID0gZjsgfQorICAgIHZvaWQgc2V0TTMzKGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzJdWzJdID0gZjsgfQorICAgIHZvaWQgc2V0TTM0KGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzJdWzNdID0gZjsgfQorICAgIHZvaWQgc2V0TTQxKGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzNdWzBdID0gZjsgfQorICAgIHZvaWQgc2V0TTQyKGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzNdWzFdID0gZjsgfQorICAgIHZvaWQgc2V0TTQzKGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzNdWzJdID0gZjsgfQorICAgIHZvaWQgc2V0TTQ0KGZsb2F0IGYpICAgICAgICB7IG1f
bWF0cml4WzNdWzNdID0gZjsgfQorICAgIAorICAgIFRyYW5zZm9ybTNEJiBzY2FsZShmbG9hdCBz
eCwgZmxvYXQgc3kpOworICAgIFRyYW5zZm9ybTNEJiBzY2FsZTNkKGZsb2F0IHN4LCBmbG9hdCBz
eSwgZmxvYXQgc3opOworICAgIAorICAgIC8vIGFuZ2xlcyBhcmUgaW4gZGVncmVlcy4geCx5LHog
bXVzdCBmb3JtIGEgdW5pdCB2ZWN0b3IgKGxlbmd0aCAxKSBvciByZXN1bHRzIGFyZSB1bmRlZmlu
ZWQKKyAgICBUcmFuc2Zvcm0zRCYgcm90YXRlM2QoZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwg
ZmxvYXQgYW5nbGUpOworICAgIAorICAgIC8vIGFuZ2xlcyBhcmUgaW4gZGVncmVlcy4gCisgICAg
VHJhbnNmb3JtM0QmIHJvdGF0ZTNkKGZsb2F0IHJ4LCBmbG9hdCByeSwgZmxvYXQgcnopOworICAg
IFRyYW5zZm9ybTNEJiB0cmFuc2xhdGUoZmxvYXQgdHgsIGZsb2F0IHR5KTsKKyAgICBUcmFuc2Zv
cm0zRCYgdHJhbnNsYXRlM2QoZmxvYXQgdHgsIGZsb2F0IHR5LCBmbG9hdCB0eik7CisgICAgVHJh
bnNmb3JtM0QmIHNrZXcoZmxvYXQgc3gsIGZsb2F0IHN5KTsKKyAgICBUcmFuc2Zvcm0zRCYgYXBw
bHlQZXJzcGVjdGl2ZShmbG9hdCBwKTsKKyAgICAKKyAgICBib29sIGhhc1BlcnNwZWN0aXZlKCkg
Y29uc3QgeyByZXR1cm4gbV9tYXRyaXhbMl1bM10gIT0gMC4wZjsgfQorICAgIAorICAgIC8vIHRo
aXMgPSBtYXQgKiB0aGlzCisgICAgVHJhbnNmb3JtM0QmIG11bHRMZWZ0KGNvbnN0IFRyYW5zZm9y
bTNEJiBtYXQpOworICAgIAorICAgIC8vIG11bHRpcGx5IHBhc3NlZCAyRCBwb2ludCBieSBtYXRy
aXggKGFzc3VtZSB6PTApCisgICAgdm9pZCBtdWx0VmVjTWF0cml4KGZsb2F0IHgsIGZsb2F0IHks
IGZsb2F0JiBkc3RYLCBmbG9hdCYgZHN0WSkgY29uc3Q7CisgICAgCisgICAgLy8gcmV0dXJuIHRo
ZSBpbnZlcnNlIG9mIG1hdHJpeAorICAgIFRyYW5zZm9ybTNEIGludmVyc2UoKSBjb25zdDsKKwor
ICAgIC8vIHJldHVybiBhbiBhZmZpbmUgdHJhbnNmb3JtIChsb3NzeSEpCisgICAgQWZmaW5lVHJh
bnNmb3JtIGFmZmluZVRyYW5zZm9ybSgpIGNvbnN0OworICAgIAorICAgIC8vRXF1YWxpdHkgY29t
cGFyaXNvbiBvcGVyYXRvcgorICAgIGZyaWVuZCBib29sIG9wZXJhdG9yID09KGNvbnN0IFRyYW5z
Zm9ybTNEICZtMSwgY29uc3QgVHJhbnNmb3JtM0QgJm0yKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IChtMS5tX21hdHJpeFswXVswXSA9PSBtMi5tX21hdHJpeFswXVswXSAmJgorICAgICAgICAgICAg
ICAgIG0xLm1fbWF0cml4WzBdWzFdID09IG0yLm1fbWF0cml4WzBdWzFdICYmCisgICAgICAgICAg
ICAgICAgbTEubV9tYXRyaXhbMF1bMl0gPT0gbTIubV9tYXRyaXhbMF1bMl0gJiYKKyAgICAgICAg
ICAgICAgICBtMS5tX21hdHJpeFswXVszXSA9PSBtMi5tX21hdHJpeFswXVszXSAmJgorICAgICAg
ICAgICAgICAgIG0xLm1fbWF0cml4WzFdWzBdID09IG0yLm1fbWF0cml4WzFdWzBdICYmCisgICAg
ICAgICAgICAgICAgbTEubV9tYXRyaXhbMV1bMV0gPT0gbTIubV9tYXRyaXhbMV1bMV0gJiYKKyAg
ICAgICAgICAgICAgICBtMS5tX21hdHJpeFsxXVsyXSA9PSBtMi5tX21hdHJpeFsxXVsyXSAmJgor
ICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4WzFdWzNdID09IG0yLm1fbWF0cml4WzFdWzNdICYm
CisgICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbMl1bMF0gPT0gbTIubV9tYXRyaXhbMl1bMF0g
JiYKKyAgICAgICAgICAgICAgICBtMS5tX21hdHJpeFsyXVsxXSA9PSBtMi5tX21hdHJpeFsyXVsx
XSAmJgorICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4WzJdWzJdID09IG0yLm1fbWF0cml4WzJd
WzJdICYmCisgICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbMl1bM10gPT0gbTIubV9tYXRyaXhb
Ml1bM10gJiYKKyAgICAgICAgICAgICAgICBtMS5tX21hdHJpeFszXVswXSA9PSBtMi5tX21hdHJp
eFszXVswXSAmJgorICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4WzNdWzFdID09IG0yLm1fbWF0
cml4WzNdWzFdICYmCisgICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbM11bMl0gPT0gbTIubV9t
YXRyaXhbM11bMl0gJiYKKyAgICAgICAgICAgICAgICBtMS5tX21hdHJpeFszXVszXSA9PSBtMi5t
X21hdHJpeFszXVszXSk7CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3IgIT0oY29u
c3QgVHJhbnNmb3JtM0QgJm0xLCBjb25zdCBUcmFuc2Zvcm0zRCAmbTIpCisgICAgeyByZXR1cm4g
IShtMSA9PSBtMik7IH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIDwoY29uc3QgVHJhbnNm
b3JtM0QgJm0xLCBjb25zdCBUcmFuc2Zvcm0zRCAmbTIpCisgICAgeworICAgICAgICByZXR1cm4g
KG0xLm1fbWF0cml4WzBdWzBdIDwgbTIubV9tYXRyaXhbMF1bMF0gJiYKKyAgICAgICAgICAgICAg
ICBtMS5tX21hdHJpeFswXVsxXSA8IG0yLm1fbWF0cml4WzBdWzFdICYmCisgICAgICAgICAgICAg
ICAgbTEubV9tYXRyaXhbMF1bMl0gPCBtMi5tX21hdHJpeFswXVsyXSAmJgorICAgICAgICAgICAg
ICAgIG0xLm1fbWF0cml4WzBdWzNdIDwgbTIubV9tYXRyaXhbMF1bM10gJiYKKyAgICAgICAgICAg
ICAgICBtMS5tX21hdHJpeFsxXVswXSA8IG0yLm1fbWF0cml4WzFdWzBdICYmCisgICAgICAgICAg
ICAgICAgbTEubV9tYXRyaXhbMV1bMV0gPCBtMi5tX21hdHJpeFsxXVsxXSAmJgorICAgICAgICAg
ICAgICAgIG0xLm1fbWF0cml4WzFdWzJdIDwgbTIubV9tYXRyaXhbMV1bMl0gJiYKKyAgICAgICAg
ICAgICAgICBtMS5tX21hdHJpeFsxXVszXSA8IG0yLm1fbWF0cml4WzFdWzNdICYmCisgICAgICAg
ICAgICAgICAgbTEubV9tYXRyaXhbMl1bMF0gPCBtMi5tX21hdHJpeFsyXVswXSAmJgorICAgICAg
ICAgICAgICAgIG0xLm1fbWF0cml4WzJdWzFdIDwgbTIubV9tYXRyaXhbMl1bMV0gJiYKKyAgICAg
ICAgICAgICAgICBtMS5tX21hdHJpeFsyXVsyXSA8IG0yLm1fbWF0cml4WzJdWzJdICYmCisgICAg
ICAgICAgICAgICAgbTEubV9tYXRyaXhbMl1bM10gPCBtMi5tX21hdHJpeFsyXVszXSAmJgorICAg
ICAgICAgICAgICAgIG0xLm1fbWF0cml4WzNdWzBdIDwgbTIubV9tYXRyaXhbM11bMF0gJiYKKyAg
ICAgICAgICAgICAgICBtMS5tX21hdHJpeFszXVsxXSA8IG0yLm1fbWF0cml4WzNdWzFdICYmCisg
ICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbM11bMl0gPCBtMi5tX21hdHJpeFszXVsyXSAmJgor
ICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4WzNdWzNdIDwgbTIubV9tYXRyaXhbM11bM10pOwor
ICAgIH0KKyAgICAgCitwcml2YXRlOgorICAgIHZvaWQgc2V0TWF0cml4KGNvbnN0IGZsb2F0KiBt
KSAgICAgICAgeyBpZiAobSAmJiBtICE9IChmbG9hdCopIG1fbWF0cml4KSBtZW1jcHkobV9tYXRy
aXgsIG0sIDE2KnNpemVvZihmbG9hdCkpOyB9CisgICAgCisgICAgZmxvYXQgICBtX21hdHJpeFs0
XVs0XTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFRyYW5zZm9y
bTNEX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5w
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9i
akMucG0JKHJldmlzaW9uIDMyOTEyKQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JPYmpDLnBtCSh3b3JraW5nIGNvcHkpCkBAIC00MDEsNyArNDAxLDcgQEAKIAogICAg
IHJldHVybiAkcGFyZW50IGlmICRwYXJlbnQgZXEgIk9iamVjdCIgb3IgSXNCYXNlVHlwZSgkcGFy
ZW50KTsKICAgICByZXR1cm4gIkV2ZW50IiBpZiAkcGFyZW50IGVxICJVSUV2ZW50IjsKLSAgICBy
ZXR1cm4gIkNTU1ZhbHVlIiBpZiAkcGFyZW50IGVxICJTVkdDb2xvciI7CisgICAgcmV0dXJuICJD
U1NWYWx1ZSIgaWYgJHBhcmVudCBlcSAiU1ZHQ29sb3IiIG9yICRwYXJlbnQgZXEgIkNTU1ZhbHVl
TGlzdCI7CiAgICAgcmV0dXJuICJOb2RlIjsKIH0KIApJbmRleDogV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2
aXNpb24gMzI5MTIpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTMzNyw2ICszMzcsNyBAQAogICAgIFRyZWVXYWxrZXIgXAogICAgIFVJRXZlbnQgXAog
ICAgIFZvaWRDYWxsYmFjayBcCisgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUgXAogICAgIFdo
ZWVsRXZlbnQgXAogICAgIFhNTEh0dHBSZXF1ZXN0IFwKICAgICBYTUxIdHRwUmVxdWVzdEV4Y2Vw
dGlvbiBcCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCShyZXZpc2lvbiAzMjkxMikK
KysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjU3LDggKzI1Nyw5IEBACiAgICAgfQogICAgIAogICAgIGlmIChoYXNUcmFuc2Zvcm0pIHsKLSAg
ICAgICAgbV90cmFuc2Zvcm0tPnJlc2V0KCk7Ci0gICAgICAgIHJlbmRlcmVyKCktPnN0eWxlKCkt
PmFwcGx5VHJhbnNmb3JtKCptX3RyYW5zZm9ybSwgcmVuZGVyZXIoKS0+Ym9yZGVyQm94KCkuc2l6
ZSgpKTsKKyAgICAgICAgVHJhbnNmb3JtM0QgdHJhbnNmb3JtM0Q7CisgICAgICAgIHJlbmRlcmVy
KCktPnN0eWxlKCktPmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybTNELCByZW5kZXJlcigpLT5ib3Jk
ZXJCb3goKS5zaXplKCksIHRydWUpOworICAgICAgICBtX3RyYW5zZm9ybS5zZXQobmV3IEFmZmlu
ZVRyYW5zZm9ybSh0cmFuc2Zvcm0zRC5hZmZpbmVUcmFuc2Zvcm0oKSkpOwogICAgIH0KIH0KIApA
QCAtMjM2OCw3ICsyMzY5LDcgQEAKICAgICAKICAgICBtX3JlZmxlY3Rpb24tPnNldFN0eWxlKG5l
d1N0eWxlKTsKIH0KLQorICAgIAogdm9pZCBSZW5kZXJMYXllcjo6c3VzcGVuZE1hcnF1ZWVzKCkK
IHsKICAgICBpZiAobV9tYXJxdWVlKQpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU3R5
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5oCShyZXZp
c2lvbiAzMjkxMikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNs
dWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNTU0N1cnNvckltYWdlVmFsdWUuaCIKLSNpbmNsdWRl
ICJDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogI2luY2x1ZGUgIkRhdGFSZWYuaCIKICNpbmNsdWRlICJG
b250LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgpAQCAtNTAsNiArNDksOCBAQAogI2luY2x1
ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMZW5ndGguaCIKICNpbmNsdWRlICJQYWlyLmgiCisj
aW5jbHVkZSAiVHJhbnNmb3JtM0QuaCIKKwogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSAiVGV4dERpcmVjdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC03
ODIsODEgKzc4NCwxMjIgQEAKIAogLy8gQ1NTIFRyYW5zZm9ybXMgKG1heSBiZWNvbWUgcGFydCBv
ZiBDU1MzKQogCi1jbGFzcyBUcmFuc2Zvcm1PcGVyYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxU
cmFuc2Zvcm1PcGVyYXRpb24+IHsKK2NsYXNzIFRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBS
ZWZDb3VudGVkPFRyYW5zZm9ybU9wZXJhdGlvbj4KK3sKIHB1YmxpYzoKLSAgICBUcmFuc2Zvcm1P
cGVyYXRpb24oKSA6IFJlZkNvdW50ZWQ8VHJhbnNmb3JtT3BlcmF0aW9uPigwKSB7IH0KICAgICB2
aXJ0dWFsIH5UcmFuc2Zvcm1PcGVyYXRpb24oKSB7fQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYpIGNvbnN0ID0gMDsKICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBvKSBjb25zdCB7IHJldHVybiAh
KCp0aGlzID09IG8pOyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoQWZmaW5lVHJhbnNmb3Jt
JiwgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSkgPSAwOwogICAgIAorICAgIHZpcnR1YWwg
Ym9vbCBhcHBseShUcmFuc2Zvcm0zRCYsIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNpemUpIGNv
bnN0ID0gMDsKKyAgICAKICAgICB2aXJ0dWFsIFRyYW5zZm9ybU9wZXJhdGlvbiogYmxlbmQoY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b0lkZW50aXR5ID0gZmFsc2UpID0gMDsKICAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNJZGVudGl0
eU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlz
U2NhbGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc1JvdGF0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzU2tld09wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmly
dHVhbCBib29sIGlzVHJhbnNsYXRlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNNYXRyaXhPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc01hdHJpeDNET3BlcmF0aW9uKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNQZXJzcGVjdGl2ZU9wZXJhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCitjbGFzcyBJZGVudGl0eVRyYW5zZm9ybU9wZXJh
dGlvbiA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24KK3sKK3B1YmxpYzoKKyAgICBJZGVudGl0
eVRyYW5zZm9ybU9wZXJhdGlvbigpCisgICAge30KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNJ
ZGVudGl0eU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8pIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gby5pc0lkZW50aXR5T3BlcmF0aW9uKCk7CisgICAgfQorICAg
IAorICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm0zRCYgdHJhbnNmb3JtLCBjb25zdCBJ
bnRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIFRyYW5zZm9ybU9wZXJhdGlvbiogYmxlbmQoY29u
c3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRU
b0lkZW50aXR5ID0gZmFsc2UpCisgICAgeworICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9Cit9
OworCiBjbGFzcyBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVy
YXRpb24KIHsKIHB1YmxpYzoKICAgICBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbihkb3VibGUgc3gs
IGRvdWJsZSBzeSkKLSAgICA6IG1feChzeCksIG1feShzeSkKKyAgICA6IG1feChzeCksIG1feShz
eSksIG1feigxLmYpCiAgICAge30KLSAgICAgICAgCisKKyAgICBTY2FsZVRyYW5zZm9ybU9wZXJh
dGlvbihkb3VibGUgc3gsIGRvdWJsZSBzeSwgZG91YmxlIHN6KQorICAgIDogbV94KHN4KSwgbV95
KHN5KSwgbV96KHN6KQorICAgIHt9CisgICAgCiAgICAgdmlydHVhbCBib29sIGlzU2NhbGVPcGVy
YXRpb24oKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0KKyAgICAKICAgICB2aXJ0dWFsIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8pIGNvbnN0CiAgICAgewogICAg
ICAgICBpZiAoby5pc1NjYWxlT3BlcmF0aW9uKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFNjYWxl
VHJhbnNmb3JtT3BlcmF0aW9uKiBzID0gc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1P
cGVyYXRpb24qPigmbyk7Ci0gICAgICAgICAgICByZXR1cm4gbV94ID09IHMtPm1feCAmJiBtX3kg
PT0gcy0+bV95OworICAgICAgICAgICAgcmV0dXJuIG1feCA9PSBzLT5tX3ggJiYgbV95ID09IHMt
Pm1feSAmJiBtX3ogPT0gcy0+bV96OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zv
cm0sIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNpemUpCisgICAgCisgICAgdmlydHVhbCBib29s
IGFwcGx5KFRyYW5zZm9ybTNEJiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNp
emUpIGNvbnN0CiAgICAgewotICAgICAgICB0cmFuc2Zvcm0uc2NhbGUobV94LCBtX3kpOworICAg
ICAgICB0cmFuc2Zvcm0uc2NhbGUzZCgoZmxvYXQpIG1feCwgKGZsb2F0KSBtX3ksIChmbG9hdCkg
bV96KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLQorICAgIAogICAgIHZpcnR1YWwg
VHJhbnNmb3JtT3BlcmF0aW9uKiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20s
IGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSk7Ci0KKyAgICAK
IHByaXZhdGU6CiAgICAgZG91YmxlIG1feDsKICAgICBkb3VibGUgbV95OworICAgIGRvdWJsZSBt
X3o7CiB9OwogCiBjbGFzcyBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24gOiBwdWJsaWMgVHJhbnNm
b3JtT3BlcmF0aW9uCiB7CiBwdWJsaWM6CiAgICAgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKGRv
dWJsZSBhbmdsZSkKLSAgICA6IG1fYW5nbGUoYW5nbGUpCisgICAgOiBtX3goMC5mKSwgbV95KDAu
ZiksIG1feigxLmYpLCBtX2FuZ2xlKGFuZ2xlKQogICAgIHt9CiAKKyAgICBSb3RhdGVUcmFuc2Zv
cm1PcGVyYXRpb24oZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgeiwgZG91YmxlIGFuZ2xlKQor
ICAgIDogbV94KHgpLCBtX3koeSksIG1feih6KSwgbV9hbmdsZShhbmdsZSkKKyAgICB7fQorICAg
IAogICAgIHZpcnR1YWwgYm9vbCBpc1JvdGF0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KLQorICAgIAogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbiYgbykgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChvLmlzUm90YXRlT3BlcmF0
aW9uKCkpIHsKICAgICAgICAgICAgIGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiogciA9
IHN0YXRpY19jYXN0PGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbio+KCZvKTsKLSAgICAg
ICAgICAgIHJldHVybiBtX2FuZ2xlID09IHItPm1fYW5nbGU7CisgICAgICAgICAgICByZXR1cm4g
bV94ID09IHItPm1feCAmJiBtX3kgPT0gci0+bV95ICYmIG1feiA9PSByLT5tX3ogJiYgbV9hbmds
ZSA9PSByLT5tX2FuZ2xlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9
CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5KEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
LCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplKQorICAgIHZpcnR1YWwgYm9vbCBhcHBseShU
cmFuc2Zvcm0zRCYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplKSBjb25z
dAogICAgIHsKLSAgICAgICAgdHJhbnNmb3JtLnJvdGF0ZShtX2FuZ2xlKTsKKyAgICAgICAgdHJh
bnNmb3JtLnJvdGF0ZTNkKChmbG9hdCkgbV94LCAoZmxvYXQpIG1feSwgKGZsb2F0KSBtX3osIChm
bG9hdCkgbV9hbmdsZSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KKyAgICAKICAg
ICB2aXJ0dWFsIFRyYW5zZm9ybU9wZXJhdGlvbiogYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2Up
OwogICAgIAogcHJpdmF0ZToKKyAgICBkb3VibGUgbV94OworICAgIGRvdWJsZSBtX3k7CisgICAg
ZG91YmxlIG1fejsKICAgICBkb3VibGUgbV9hbmdsZTsKIH07CiAKQEAgLTg2OCw3ICs5MTEsNyBA
QAogICAgIHt9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzU2tld09wZXJhdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHRydWU7IH0KLQorICAgIAogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChvLmlz
U2tld09wZXJhdGlvbigpKSB7CkBAIC04NzcsMTIgKzkyMCwxMyBAQAogICAgICAgICB9CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoQWZmaW5l
VHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNpemUpCisgICAg
CisgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybTNEJiB0cmFuc2Zvcm0sIGNvbnN0IElu
dFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0CiAgICAgewotICAgICAgICB0cmFuc2Zvcm0uc2tl
dyhtX2FuZ2xlWCwgbV9hbmdsZVkpOworICAgICAgICB0cmFuc2Zvcm0uc2tldygoZmxvYXQpIG1f
YW5nbGVYLCAoZmxvYXQpIG1fYW5nbGVZKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
LQorICAgIAogICAgIHZpcnR1YWwgVHJhbnNmb3JtT3BlcmF0aW9uKiBibGVuZChjb25zdCBUcmFu
c2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRp
dHkgPSBmYWxzZSk7CiAgICAgCiBwcml2YXRlOgpAQCAtODk0LDg1ICs5MzgsMTI2IEBACiB7CiBw
dWJsaWM6CiAgICAgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKGNvbnN0IExlbmd0aCYgdHgs
IGNvbnN0IExlbmd0aCYgdHkpCi0gICAgOiBtX3godHgpLCBtX3kodHkpCisgICAgOiBtX3godHgp
LCBtX3kodHkpLCBtX3ooTGVuZ3RoKCkpCiAgICAge30KKworICAgIFRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbihjb25zdCBMZW5ndGgmIHR4LCBjb25zdCBMZW5ndGgmIHR5LCBjb25zdCBMZW5n
dGgmIHR6KQorICAgIDogbV94KHR4KSwgbV95KHR5KSwgbV96KHR6KQorICAgIHt9CiAgICAgCiAg
ICAgdmlydHVhbCBib29sIGlzVHJhbnNsYXRlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQotCisgICAgCiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3Jt
T3BlcmF0aW9uJiBvKSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG8uaXNUcmFuc2xhdGVPcGVy
YXRpb24oKSkgewogICAgICAgICAgICAgY29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
KiB0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4oJm8p
OwotICAgICAgICAgICAgcmV0dXJuIG1feCA9PSB0LT5tX3ggJiYgbV95ID09IHQtPm1feTsKKyAg
ICAgICAgICAgIHJldHVybiBtX3ggPT0gdC0+bV94ICYmIG1feSA9PSB0LT5tX3kgJiYgbV96ID09
IHQtPm1fejsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCi0gICAg
dmlydHVhbCB2b2lkIGFwcGx5KEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBJbnRT
aXplJiBib3JkZXJCb3hTaXplKQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zv
cm0zRCYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdAogICAg
IHsKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShtX3guY2FsY0Zsb2F0VmFsdWUoYm9yZGVy
Qm94U2l6ZS53aWR0aCgpKSwgbV95LmNhbGNGbG9hdFZhbHVlKGJvcmRlckJveFNpemUuaGVpZ2h0
KCkpKTsKKyAgICAgICAgLy8gVE9ETzogQ0ZNIC0gSG93IGRvIHdlIGRlYWwgd2l0aCBhIHogdmFs
dWUgYXMgYSBwZXJjZW50YWdlPworICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QobV94LmNh
bGNWYWx1ZShib3JkZXJCb3hTaXplLndpZHRoKCkpLCBtX3kuY2FsY1ZhbHVlKGJvcmRlckJveFNp
emUuaGVpZ2h0KCkpLCBtX3ouY2FsY1ZhbHVlKDEpKTsKKyAgICAgICAgcmV0dXJuIG1feC50eXBl
KCkgPT0gUGVyY2VudCB8fCBtX3kudHlwZSgpID09IFBlcmNlbnQ7CiAgICAgfQotCisgICAgCiAg
ICAgdmlydHVhbCBUcmFuc2Zvcm1PcGVyYXRpb24qIGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNl
KTsKLQorICAgIAogcHJpdmF0ZToKICAgICBMZW5ndGggbV94OwogICAgIExlbmd0aCBtX3k7Cisg
ICAgTGVuZ3RoIG1fejsKIH07CiAKIGNsYXNzIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1
YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24KIHsKIHB1YmxpYzoKLSAgICBNYXRyaXhUcmFuc2Zvcm1P
cGVyYXRpb24oZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBl
LCBkb3VibGUgZikKLSAgICA6IG1fYShhKSwgbV9iKGIpLCBtX2MoYyksIG1fZChkKSwgbV9lKGUp
LCBtX2YoZikKLSAgICB7fQorICAgIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbihjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIG0pCisgICAgeyBtX21hdHJpeCA9IG07IH0KICAgICAKKyAgICBNYXRyaXhU
cmFuc2Zvcm1PcGVyYXRpb24oZmxvYXQgYSwgZmxvYXQgYiwgZmxvYXQgYywgZmxvYXQgZCwgZmxv
YXQgZSwgZmxvYXQgZikKKyAgICB7CisgICAgICAgIG1fbWF0cml4LnNldE1hdHJpeChhLGIsYyxk
LGUsZik7CisgICAgfQorICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc01hdHJpeE9wZXJhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQorICAgIAogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3QKICAgICB7CiAgICAgICAgIGlm
IChvLmlzTWF0cml4T3BlcmF0aW9uKCkpIHsKICAgICAgICAgICAgIGNvbnN0IE1hdHJpeFRyYW5z
Zm9ybU9wZXJhdGlvbiogbSA9IHN0YXRpY19jYXN0PGNvbnN0IE1hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbio+KCZvKTsKLSAgICAgICAgICAgIHJldHVybiBtX2EgPT0gbS0+bV9hICYmIG1fYiA9PSBt
LT5tX2IgJiYgbV9jID09IG0tPm1fYyAmJiBtX2QgPT0gbS0+bV9kICYmIG1fZSA9PSBtLT5tX2Ug
JiYgbV9mID09IG0tPm1fZjsKKyAgICAgICAgICAgIHJldHVybiBtX21hdHJpeCA9PSBtLT5tX21h
dHJpeDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIAorICAg
IHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm0zRCYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXpl
JiBib3JkZXJCb3hTaXplKSBjb25zdAorICAgIHsKKyAgICAgICAgdHJhbnNmb3JtLm11bHRMZWZ0
KFRyYW5zZm9ybTNEKG1fbWF0cml4KSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBUcmFuc2Zvcm1PcGVyYXRpb24qIGJsZW5kKGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9
IGZhbHNlKTsKKyAgICAKK3ByaXZhdGU6CisgICAgQWZmaW5lVHJhbnNmb3JtIG1fbWF0cml4Owor
fTsKIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwg
Y29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSkKK2NsYXNzIE1hdHJpeDNEVHJhbnNmb3JtT3Bl
cmF0aW9uIDogcHVibGljIFRyYW5zZm9ybU9wZXJhdGlvbgoreworcHVibGljOgorICAgIE1hdHJp
eDNEVHJhbnNmb3JtT3BlcmF0aW9uKGNvbnN0IFRyYW5zZm9ybTNEJiBtYXQpCisgICAgeyBtX21h
dHJpeCA9IG1hdDsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc01hdHJpeDNET3BlcmF0aW9u
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3QKICAgICB7Ci0gICAgICAgIEFm
ZmluZVRyYW5zZm9ybSBtYXRyaXgobV9hLCBtX2IsIG1fYywgbV9kLCBtX2UsIG1fZik7Ci0gICAg
ICAgIHRyYW5zZm9ybSA9IG1hdHJpeCAqIHRyYW5zZm9ybTsKKyAgICAgICAgaWYgKG8uaXNNYXRy
aXgzRE9wZXJhdGlvbigpKSB7CisgICAgICAgICAgICBjb25zdCBNYXRyaXgzRFRyYW5zZm9ybU9w
ZXJhdGlvbiogbSA9IHN0YXRpY19jYXN0PGNvbnN0IE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9u
Kj4oJm8pOworICAgICAgICAgICAgcmV0dXJuIG1fbWF0cml4ID09IG0tPm1fbWF0cml4OworICAg
ICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KKyAgICAKKyAgICB2aXJ0dWFs
IGJvb2wgYXBwbHkoVHJhbnNmb3JtM0QmIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYgYm9yZGVy
Qm94U2l6ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHRyYW5zZm9ybS5tdWx0TGVmdChtX21hdHJp
eCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCiAgICAgdmlydHVhbCBUcmFu
c2Zvcm1PcGVyYXRpb24qIGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKTsKICAgICAKIHByaXZh
dGU6Ci0gICAgZG91YmxlIG1fYTsKLSAgICBkb3VibGUgbV9iOwotICAgIGRvdWJsZSBtX2M7Ci0g
ICAgZG91YmxlIG1fZDsKLSAgICBkb3VibGUgbV9lOwotICAgIGRvdWJsZSBtX2Y7CisgICAgVHJh
bnNmb3JtM0QgbV9tYXRyaXg7CiB9OwotCisgICAgCiBjbGFzcyBUcmFuc2Zvcm1PcGVyYXRpb25z
CiB7CiBwdWJsaWM6CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyhib29sIG1ha2VJZGVudGl0eSA9
IGZhbHNlKQorICAgIHsKKyAgICAgICAgaWYgKG1ha2VJZGVudGl0eSkKKyAgICAgICAgICAgIGFw
cGVuZChuZXcgSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24oKSk7CisgICAgfQorICAgIAogICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJikgY29uc3Q7CiAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIG8pIGNvbnN0IHsKICAg
ICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNFbXB0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9ucy5pc0VtcHR5KCk7IH0KLSAgICBzaXplX3Qg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3BlcmF0aW9ucy5zaXplKCk7IH0KKyAgICB1bnNpZ25l
ZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9vcGVyYXRpb25zLnNpemUoKTsgfQogICAgIGNvbnN0
IFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+JiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7
IHJldHVybiBtX29wZXJhdGlvbnMuYXQoaSk7IH0KLQorICAgIAogICAgIHZvaWQgYXBwZW5kKGNv
bnN0IFJlZlB0cjxUcmFuc2Zvcm1PcGVyYXRpb24+JiBvcCkgeyByZXR1cm4gbV9vcGVyYXRpb25z
LmFwcGVuZChvcCk7IH0KLQorICAgIAogcHJpdmF0ZToKICAgICBWZWN0b3I8UmVmUHRyPFRyYW5z
Zm9ybU9wZXJhdGlvbj4gPiBtX29wZXJhdGlvbnM7CiB9OwotCisgICAgCiBjbGFzcyBTdHlsZVRy
YW5zZm9ybURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxTdHlsZVRyYW5zZm9ybURhdGE+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZVRyYW5zZm9ybURhdGE+IGNyZWF0ZSgp
IHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZVRyYW5zZm9ybURhdGEpOyB9CkBAIC0yMDQ4LDEy
ICsyMjEzLDEyIEBACiAgICAgTGVuZ3RoIHRyYW5zZm9ybU9yaWdpblgoKSBjb25zdCB7IHJldHVy
biByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1feDsgfQogICAgIExlbmd0aCB0
cmFuc2Zvcm1PcmlnaW5ZKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
dHJhbnNmb3JtLT5tX3k7IH0KICAgICBib29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
ICFyYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1fb3BlcmF0aW9ucy5pc0VtcHR5
KCk7IH0KLSAgICB2b2lkIGFwcGx5VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IElu
dFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0OworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJh
bnNmb3JtM0QmLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplLCBib29sIGNoZWNrQXBwbHlU
cmFuc2Zvcm1PcmlnaW4pIGNvbnN0OwogICAgIGJvb2wgaGFzTWFzaygpIGNvbnN0IHsgcmV0dXJu
IHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2suaGFzSW1hZ2UoKSB8fCByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9tYXNrQm94SW1hZ2UuaGFzSW1hZ2UoKTsgfQogICAgIC8vIEVuZCBDU1MzIEdl
dHRlcnMKIAogICAgIC8vIEFwcGxlLXNwZWNpZmljIHByb3BlcnR5IGdldHRlciBtZXRob2RzCiAg
ICAgVHJhbnNpdGlvbiogYWNjZXNzVHJhbnNpdGlvbnMoKTsKICAgICBjb25zdCBUcmFuc2l0aW9u
KiB0cmFuc2l0aW9ucygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3Ry
YW5zaXRpb247IH0KICAgICBpbnQgbGluZUNsYW1wKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbklu
aGVyaXRlZERhdGEtPmxpbmVDbGFtcDsgfQogICAgIGJvb2wgdGV4dFNpemVBZGp1c3QoKSBjb25z
dCB7IHJldHVybiByYXJlSW5oZXJpdGVkRGF0YS0+dGV4dFNpemVBZGp1c3Q7IH0KICAgICBFVGV4
dFNlY3VyaXR5IHRleHRTZWN1cml0eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVUZXh0
U2VjdXJpdHk+KHJhcmVJbmhlcml0ZWREYXRhLT50ZXh0U2VjdXJpdHkpOyB9CkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU3R5bGUuY3BwCShyZXZpc2lvbiAzMjkxMikKKysrIFdlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclN0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsMTMgQEAKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorLy8gY29tcGFyZSBmbG9hdGluZyBwb2ludHMsIHRha2luZyBu
YW4gaW50byBhY2NvdW50CitzdGF0aWMgaW5saW5lIGJvb2wgZmxvYXRpbmdQb2ludFZhbHVlc0Vx
dWFsKGZsb2F0IGEsIGZsb2F0IGIpCit7CisgICAgcmV0dXJuIChpc25hbihhKSAmJiBpc25hbihi
KSkgfHwgKGEgPT0gYik7Cit9CisgICAgCisgICAgCiBib29sIE5pbmVQaWVjZUltYWdlOjpvcGVy
YXRvcj09KGNvbnN0IE5pbmVQaWVjZUltYWdlJiBvKSBjb25zdAogewogICAgIHJldHVybiBpbWFn
ZXNFcXVpdmFsZW50KG1faW1hZ2UuZ2V0KCksIG8ubV9pbWFnZS5nZXQoKSkgJiYgbV9zbGljZXMg
PT0gby5tX3NsaWNlcyAmJiBtX2hvcml6b250YWxSdWxlID09IG8ubV9ob3Jpem9udGFsUnVsZSAm
JgpAQCAtNjEzLDEyICs2MjAsMTQgQEAKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgCiAgICAg
aWYgKGJsZW5kVG9JZGVudGl0eSkKLSAgICAgICAgcmV0dXJuIG5ldyBTa2V3VHJhbnNmb3JtT3Bl
cmF0aW9uKG1fYW5nbGVYIC0gbV9hbmdsZVggKiBwcm9ncmVzcywgbV9hbmdsZVkgLSBtX2FuZ2xl
WSAqIHByb2dyZXNzKTsKKyAgICAgICAgcmV0dXJuIG5ldyBTa2V3VHJhbnNmb3JtT3BlcmF0aW9u
KG1fYW5nbGVYIC0gbV9hbmdsZVggKiBwcm9ncmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fYW5nbGVZIC0gbV9hbmdsZVkgKiBwcm9ncmVzcyk7CiAgICAg
CiAgICAgY29uc3QgU2tld1RyYW5zZm9ybU9wZXJhdGlvbiogZnJvbU9wID0gc3RhdGljX2Nhc3Q8
Y29uc3QgU2tld1RyYW5zZm9ybU9wZXJhdGlvbio+KGZyb20pOwogICAgIGRvdWJsZSBmcm9tQW5n
bGVYID0gZnJvbU9wID8gZnJvbU9wLT5tX2FuZ2xlWCA6IDA7CiAgICAgZG91YmxlIGZyb21Bbmds
ZVkgPSBmcm9tT3AgPyBmcm9tT3AtPm1fYW5nbGVZIDogMDsKLSAgICByZXR1cm4gbmV3IFNrZXdU
cmFuc2Zvcm1PcGVyYXRpb24oZnJvbUFuZ2xlWCArIChtX2FuZ2xlWCAtIGZyb21BbmdsZVgpICog
cHJvZ3Jlc3MsIGZyb21BbmdsZVkgKyAobV9hbmdsZVkgLSBmcm9tQW5nbGVZKSAqIHByb2dyZXNz
KTsKKyAgICByZXR1cm4gbmV3IFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24oZnJvbUFuZ2xlWCArICht
X2FuZ2xlWCAtIGZyb21BbmdsZVgpICogcHJvZ3Jlc3MsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGZyb21BbmdsZVkgKyAobV9hbmdsZVkgLSBmcm9tQW5nbGVZKSAqIHBy
b2dyZXNzKTsKIH0KIAogVHJhbnNmb3JtT3BlcmF0aW9uKiBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVy
YXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSkKQEAgLTY0MCwxMzcgKzY0OSwyMjIgQEAKICAgICBp
ZiAoZnJvbSAmJiAhZnJvbS0+aXNNYXRyaXhPcGVyYXRpb24oKSkKICAgICAgICAgcmV0dXJuIHRo
aXM7CiAgICAgCisgICAgLy8gCiAgICAgaWYgKGJsZW5kVG9JZGVudGl0eSkKLSAgICAgICAgcmV0
dXJuIG5ldyBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24obV9hICogKDEuIC0gcHJvZ3Jlc3MpICsg
cHJvZ3Jlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
YiAqICgxLiAtIHByb2dyZXNzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9jICogKDEuIC0gcHJvZ3Jlc3MpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2QgKiAoMS4gLSBwcm9ncmVzcykgKyBwcm9ncmVzcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9lICogKDEuIC0gcHJv
Z3Jlc3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Yg
KiAoMS4gLSBwcm9ncmVzcykpOwotCisgICAgICAgIHJldHVybiBuZXcgTWF0cml4VHJhbnNmb3Jt
T3BlcmF0aW9uKChmbG9hdCkgKG1fbWF0cml4LmEoKSAqICgxLiAtIHByb2dyZXNzKSArIHByb2dy
ZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZsb2F0
KSAobV9tYXRyaXguYigpICogKDEuIC0gcHJvZ3Jlc3MpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGZsb2F0KSAobV9tYXRyaXguYygpICogKDEuIC0gcHJv
Z3Jlc3MpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZs
b2F0KSAobV9tYXRyaXguZCgpICogKDEuIC0gcHJvZ3Jlc3MpICsgcHJvZ3Jlc3MpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQpIChtX21hdHJpeC5l
KCkgKiAoMS4gLSBwcm9ncmVzcykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoZmxvYXQpIChtX21hdHJpeC5mKCkgKiAoMS4gLSBwcm9ncmVzcykpKTsKKyAg
ICAKICAgICBjb25zdCBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb21PcCA9IHN0YXRpY19j
YXN0PGNvbnN0IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbio+KGZyb20pOwotICAgIGRvdWJsZSBm
cm9tQSA9IGZyb21PcCA/IGZyb21PcC0+bV9hIDogMS47Ci0gICAgZG91YmxlIGZyb21CID0gZnJv
bU9wID8gZnJvbU9wLT5tX2IgOiAwOwotICAgIGRvdWJsZSBmcm9tQyA9IGZyb21PcCA/IGZyb21P
cC0+bV9jIDogMDsKLSAgICBkb3VibGUgZnJvbUQgPSBmcm9tT3AgPyBmcm9tT3AtPm1fZCA6IDEu
OwotICAgIGRvdWJsZSBmcm9tRSA9IGZyb21PcCA/IGZyb21PcC0+bV9lIDogMDsKLSAgICBkb3Vi
bGUgZnJvbUYgPSBmcm9tT3AgPyBmcm9tT3AtPm1fZiA6IDA7CisgICAgZG91YmxlIGZyb21BID0g
ZnJvbU9wID8gZnJvbU9wLT5tX21hdHJpeC5hKCkgOiAxLjsKKyAgICBkb3VibGUgZnJvbUIgPSBm
cm9tT3AgPyBmcm9tT3AtPm1fbWF0cml4LmIoKSA6IDA7CisgICAgZG91YmxlIGZyb21DID0gZnJv
bU9wID8gZnJvbU9wLT5tX21hdHJpeC5jKCkgOiAwOworICAgIGRvdWJsZSBmcm9tRCA9IGZyb21P
cCA/IGZyb21PcC0+bV9tYXRyaXguZCgpIDogMS47CisgICAgZG91YmxlIGZyb21FID0gZnJvbU9w
ID8gZnJvbU9wLT5tX21hdHJpeC5lKCkgOiAwOworICAgIGRvdWJsZSBmcm9tRiA9IGZyb21PcCA/
IGZyb21PcC0+bV9tYXRyaXguZigpIDogMDsKICAgICAKLSAgICByZXR1cm4gbmV3IE1hdHJpeFRy
YW5zZm9ybU9wZXJhdGlvbihmcm9tQSArIChtX2EgLSBmcm9tQSkgKiBwcm9ncmVzcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tQiArIChtX2IgLSBmcm9tQikg
KiBwcm9ncmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9t
QyArIChtX2MgLSBmcm9tQykgKiBwcm9ncmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBmcm9tRCArIChtX2QgLSBmcm9tRCkgKiBwcm9ncmVzcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tRSArIChtX2UgLSBmcm9tRSkgKiBw
cm9ncmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tRiAr
IChtX2YgLSBmcm9tRikgKiBwcm9ncmVzcyk7CisgICAgcmV0dXJuIG5ldyBNYXRyaXhUcmFuc2Zv
cm1PcGVyYXRpb24oKGZsb2F0KSAoZnJvbUEgKyAobV9tYXRyaXguYSgpIC0gZnJvbUEpICogcHJv
Z3Jlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCkg
KGZyb21CICsgKG1fbWF0cml4LmIoKSAtIGZyb21CKSAqIHByb2dyZXNzKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQpIChmcm9tQyArIChtX21hdHJpeC5j
KCkgLSBmcm9tQykgKiBwcm9ncmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGZsb2F0KSAoZnJvbUQgKyAobV9tYXRyaXguZCgpIC0gZnJvbUQpICogcHJvZ3Jl
c3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCkgKGZy
b21FICsgKG1fbWF0cml4LmUoKSAtIGZyb21FKSAqIHByb2dyZXNzKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQpIChmcm9tRiArIChtX21hdHJpeC5mKCkg
LSBmcm9tRikgKiBwcm9ncmVzcykpOwogfQogCitUcmFuc2Zvcm1PcGVyYXRpb24qIE1hdHJpeDNE
VHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20s
IGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkpCiB7CisgICAgLy8gVE9ETzog
Q0ZNIC0gTGV0J3Mgbm90IHdvcnJ5IGFib3V0IGRpcmVjdCBibGVuZCBvZiAzRCBtYXRyaWNlcyBq
dXN0IHlldAorICAgIHJldHVybiAwOwogfQogfQpAQCAtMTY5Niw3ICsxODE0LDcgQEAKICAgICB9
CiB9CiAKLXZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSYg
dHJhbnNmb3JtLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdAordm9pZCBSZW5k
ZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtM0QmIHRyYW5zZm9ybSwgY29uc3QgSW50
U2l6ZSYgYm9yZGVyQm94U2l6ZSwgYm9vbCBjaGVja0FwcGx5VHJhbnNmb3JtT3JpZ2luKSBjb25z
dAogewogICAgIC8vIHRyYW5zZm9ybS1vcmlnaW4gYnJhY2tldHMgdGhlIHRyYW5zZm9ybSB3aXRo
IHRyYW5zbGF0ZSBvcGVyYXRpb25zLgogICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVy
ZSB0aGUgb25seSB0cmFuc2Zvcm0gaXMgYSB0cmFuc2xhdGlvbiwgc2luY2UgdGhlIHRyYW5zZm9y
bS1vcmlnaW4gaXMgaXJyZWxldmFudApAQCAtMTcwNCwxMCArMTgyMiwxMiBAQAogICAgIGJvb2wg
YXBwbHlUcmFuc2Zvcm1PcmlnaW4gPSBmYWxzZTsKICAgICB1bnNpZ25lZCBzID0gcmFyZU5vbklu
aGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX29wZXJhdGlvbnMuc2l6ZSgpOwogICAgIHVuc2ln
bmVkIGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykgewotICAgICAgICBpZiAoIXJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV9vcGVyYXRpb25zW2ldLT5pc1RyYW5zbGF0
ZU9wZXJhdGlvbigpKSB7Ci0gICAgICAgICAgICBhcHBseVRyYW5zZm9ybU9yaWdpbiA9IHRydWU7
Ci0gICAgICAgICAgICBicmVhazsKKyAgICBpZiAoY2hlY2tBcHBseVRyYW5zZm9ybU9yaWdpbikg
eworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgczsgaSsrKSB7CisgICAgICAgICAgICBpZiAoIXJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV9vcGVyYXRpb25zW2ldLT5pc1RyYW5z
bGF0ZU9wZXJhdGlvbigpKSB7CisgICAgICAgICAgICAgICAgYXBwbHlUcmFuc2Zvcm1PcmlnaW4g
PSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQogICAgIApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDMyOTEyKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTM2OSw2ICszNjksNTYgQEAKIAkJMjk5OTg0
QkUwREM4NTk4NTAwRjhEMjYxIC8qIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5OTk4NEJDMERDODU5ODUw
MEY4RDI2MSAvKiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmggKi87IH07CiAJCTJEOTA2NjA2
MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDkwNjYwNDBCRTE0MUQ0MDA5NTY5OTggLyogTGF5
b3V0U3RhdGUuY3BwICovOyB9OwogCQkyRDkwNjYwNzBCRTE0MUQ0MDA5NTY5OTggLyogTGF5b3V0
U3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
OTA2NjA1MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTMxNkNDMTRDMEREOEZFN0IwMDg4OTlF
MiAvKiBXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzE2Q0MxNDAwREQ4RkU3QjAwODg5OUUyIC8qIFdlYktpdENTU01hdHJp
eC5jcHAgKi87IH07CisJCTMxNkNDMTREMEREOEZFN0IwMDg4OTlFMiAvKiBXZWJLaXRDU1NNYXRy
aXguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkND
MTQxMEREOEZFN0IwMDg4OTlFMiAvKiBXZWJLaXRDU1NNYXRyaXguaCAqLzsgfTsKKwkJMzE2Q0Mx
NEUwREQ4RkU3QjAwODg5OUUyIC8qIFdlYktpdENTU01hdHJpeC5pZGwgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkNDMTQyMEREOEZFN0IwMDg4OTlF
MiAvKiBXZWJLaXRDU1NNYXRyaXguaWRsICovOyB9OworCQkzMTZDQzE0RjBERDhGRTdCMDA4ODk5
RTIgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2Q0MxNDMwREQ4RkU3QjAwODg5OUUyIC8qIFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlLmNwcCAqLzsgfTsKKwkJMzE2Q0MxNTAwREQ4RkU3QjAwODg5OUUy
IC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZDQzE0NDBERDhGRTdCMDA4ODk5RTIgLyogV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuaCAqLzsgfTsKKwkJMzE2Q0MxNTEwREQ4RkU3QjAwODg5OUUyIC8qIFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzE2Q0MxNDUwREQ4RkU3QjAwODg5OUUyIC8qIFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlLmlkbCAqLzsgfTsKKwkJMzE2Q0MxNjkwREQ5MTRBNTAwODg5OUUyIC8qIFRy
YW5zZm9ybTNELmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxNkNDMTY3MEREOTE0QTUwMDg4OTlFMiAvKiBUcmFuc2Zvcm0zRC5jcHAgKi87IH07CisJ
CTMxNkNDMTZBMEREOTE0QTUwMDg4OTlFMiAvKiBUcmFuc2Zvcm0zRC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2Q0MxNjgwREQ5MTRBNTAwODg5OUUy
IC8qIFRyYW5zZm9ybTNELmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMzE2Q0M0NzYwRERBRkNEQjAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTZDQzQ2QTBEREFGQ0RCMDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
aCAqLzsgfTsKKwkJMzE2Q0M0NzcwRERBRkNEQjAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE2Q0M0NkIwRERBRkNEQjAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVl
Lm1tICovOyB9OworCQkzMTZDQzQ3ODBEREFGQ0RCMDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzE2Q0M0NkMwRERBRkNEQjAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlSW50ZXJuYWwuaCAqLzsgfTsKKwkJMzE2Q0M1ODgwRERCODkzRjAwODg5OUUyIC8q
IEpTV2ViS2l0Q1NTTWF0cml4LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDMxNkNDNTg2MEREQjg5M0YwMDg4OTlFMiAvKiBKU1dlYktpdENTU01hdHJp
eC5jcHAgKi87IH07CisJCTMxNkNDNTg5MEREQjg5M0YwMDg4OTlFMiAvKiBKU1dlYktpdENTU01h
dHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2
Q0M1ODcwRERCODkzRjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmggKi87IH07CisJCTMx
NkNDNThFMEREQjg5NUYwMDg4OTlFMiAvKiBET01XZWJLaXRDU1NNYXRyaXguaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkNDNThCMEREQjg5NUYwMDg4
OTlFMiAvKiBET01XZWJLaXRDU1NNYXRyaXguaCAqLzsgfTsKKwkJMzE2Q0M1OEYwRERCODk1RjAw
ODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkNDNThDMEREQjg5NUYwMDg4OTlFMiAvKiBET01XZWJL
aXRDU1NNYXRyaXgubW0gKi87IH07CisJCTMxNkNDNTkwMEREQjg5NUYwMDg4OTlFMiAvKiBET01X
ZWJLaXRDU1NNYXRyaXhJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzE2Q0M1OEQwRERCODk1RjAwODg5OUUyIC8qIERPTVdlYktpdENTU01h
dHJpeEludGVybmFsLmggKi87IH07CiAJCTM3MUY0RjQwMEQyNUI5QUYwMEVDRTBENSAvKiBGb250
RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcx
RjRGM0UwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMzcxRjRGNDEwRDI1QjlBRjAwRUNFMEQ1IC8q
IEZvbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDM3MUY0RjNGMEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5jcHAgKi87IH07CiAJCTM3
MUY0RkZDMEQyNUU3RjMwMEVDRTBENSAvKiBTZWdtZW50ZWRGb250RGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGRkEwRDI1RTdGMzAwRUNF
MEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggKi87IH07CkBAIC0zNjkzLDggKzM3NDMsNiBAQAog
CQlCQzk4NTQzRTBDRDNEOThDMDAwNjlCQzEgLyogSlNDb25zb2xlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk4NTQzQzBDRDNEOThCMDAwNjlCQzEg
LyogSlNDb25zb2xlLmggKi87IH07CiAJCUJDOThBMjdEMEMwQzk5NTAwMDRCRUJGNyAvKiBKU1N0
eWxlU2hlZXRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM5OEEyN0MwQzBDOTk1MDAwNEJFQkY3IC8qIEpTU3R5bGVTaGVldEN1c3RvbS5j
cHAgKi87IH07CiAJCUJDOTk4MTJFMERCRTgwN0EwMDhDRTlFRiAvKiBET01BYnN0cmFjdFZpZXdG
cmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5
OTgxMkQwREJFODA3QTAwOENFOUVGIC8qIERPTUFic3RyYWN0Vmlld0ZyYW1lLmggKi87IH07Ci0J
CUJDOUFERDIzMENDNDAzMjYwMDA5OEM0QyAvKiBDU1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5QUREMjIwQ0M0MDMyNjAw
MDk4QzRDIC8qIENTU1RyYW5zZm9ybVZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkM5QUREODAwQ0M0MDkyMjAwMDk4QzRDIC8qIENTU1Ry
YW5zZm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDOUFERDdGMENDNDA5MjIwMDA5OEM0QyAvKiBDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAg
Ki87IH07CiAJCUJDQTE2OUEyMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25F
bGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQTE2OUEwMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmNw
cCAqLzsgfTsKIAkJQkNBMTY5QTMwQkZENTVCNDAwMTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDQTE2OUExMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25FbGVtZW50Lmgg
Ki87IH07CiAJCUJDQTM3ODE2MEQxNUM2NDYwMEI3OTNENiAvKiBQYXVzZWRUaW1lb3V0cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0EzNzgxNDBE
MTVDNjQ2MDBCNzkzRDYgLyogUGF1c2VkVGltZW91dHMuY3BwICovOyB9OwpAQCAtNDgxOSw2ICs0
ODY3LDU2IEBACiAJCTJEOTA2NjA1MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF5b3V0U3RhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ5MDY2MEIwNjY1RDkzNzAwNkI2RjFBIC8qIENsaXBib2Fy
ZE1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDbGlwYm9hcmRNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAJCTJEOTA2NjBDMDY2NUQ5MzcwMDZCNkYxQSAvKiBDbGlwYm9hcmRN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBDbGlwYm9hcmRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQkzMTZDQzE0MDBERDhGRTdCMDA4ODk5RTIgLyogV2Vi
S2l0Q1NTTWF0cml4LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YktpdENTU01hdHJpeC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkNDMTQx
MEREOEZFN0IwMDg4OTlFMiAvKiBXZWJLaXRDU1NNYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NTTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTMxNkNDMTQyMEREOEZFN0IwMDg4OTlFMiAvKiBXZWJLaXRDU1NNYXRyaXguaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdENTU01hdHJpeC5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxNkNDMTQzMEREOEZFN0IwMDg4OTlFMiAvKiBXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMx
NkNDMTQ0MEREOEZFN0IwMDg4OTlFMiAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZDQzE0NTBERDhGRTdCMDA4ODk5RTIgLyog
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2
Q0MxNjcwREQ5MTRBNTAwODg5OUUyIC8qIFRyYW5zZm9ybTNELmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybTNELmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMzE2Q0MxNjgwREQ5MTRBNTAwODg5OUUyIC8qIFRyYW5zZm9ybTNELmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zZm9ybTNELmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTMxNkNDNDU2MEREQUZDQUEwMDg4OTlFMiAvKiBKU1dlYktpdENT
U1RyYW5zZm9ybVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMTZDQzQ1NzBEREFGQ0FBMDA4ODk5RTIgLyogSlNXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktpdENTU1RyYW5zZm9y
bVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxNkNDNDZBMEREQUZDREIw
MDg4OTlFMiAvKiBET01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkzMTZDQzQ2QjBEREFGQ0RCMDA4ODk5RTIgLyogRE9NV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBET01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzE2Q0M0NkMwRERBRkNEQjAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5zZm9y
bVZhbHVlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWVJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkzMTZDQzU4NjBEREI4OTNGMDA4ODk5RTIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRDU1NNYXRyaXguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZDQzU4NzBEREI4OTNGMDA4ODk5RTIg
LyogSlNXZWJLaXRDU1NNYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNXZWJLaXRDU1NNYXRyaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2Q0M1
OEIwRERCODk1RjAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBET01XZWJLaXRDU1NNYXRyaXguaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMzE2Q0M1OEMwRERCODk1RjAwODg5OUUyIC8qIERPTVdlYktpdENTU01h
dHJpeC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVdlYktp
dENTU01hdHJpeC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2Q0M1OEQwRERC
ODk1RjAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeEludGVybmFsLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdENTU01hdHJpeEludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY0RjNFMEQyNUI5QUYwMEVDRTBENSAvKiBGb250
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGb250RGF0YS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNEYzRjBEMjVCOUFGMDBFQ0UwRDUgLyogRm9u
dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRm9udERhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNEZGQTBEMjVFN0YzMDBFQ0Uw
RDUgLyogU2VnbWVudGVkRm9udERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2VnbWVudGVkRm9udERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5
OTYsOCArODA5NCw2IEBACiAJCUJDOTg1NDNDMENEM0Q5OEIwMDA2OUJDMSAvKiBKU0NvbnNvbGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ29uc29sZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzk4QTI3QzBDMEM5OTUwMDA0QkVCRjcgLyogSlNTdHls
ZVNoZWV0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
U3R5bGVTaGVldEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOTk4
MTJEMERCRTgwN0EwMDhDRTlFRiAvKiBET01BYnN0cmFjdFZpZXdGcmFtZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBET01BYnN0cmFjdFZpZXdGcmFtZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCQzlBREQyMjBDQzQwMzI2MDAwOThDNEMgLyogQ1NTVHJhbnNm
b3JtVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU1RyYW5zZm9y
bVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJDOUFERDdGMENDNDA5MjIw
MDA5OEM0QyAvKiBDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQ1NTVHJhbnNmb3JtVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0ExNjlBMDBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVDYXB0aW9u
RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1M
VGFibGVDYXB0aW9uRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
QTE2OUExMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxUYWJsZUNhcHRpb25FbGVtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxUYWJsZUNhcHRpb25FbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQTM3ODE0MEQxNUM2NDYwMEI3OTNE
NiAvKiBQYXVzZWRUaW1lb3V0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBQYXVzZWRUaW1lb3V0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05
MTQ1LDYgKzkyNDEsMTggQEAKIAkJODU5NjdEQ0EwQUE4QkYwRjAwNUZFREVFIC8qIENTUyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMzE2Q0M1OEIwRERC
ODk1RjAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeC5oICovLAorCQkJCTMxNkNDNThDMERE
Qjg5NUYwMDg4OTlFMiAvKiBET01XZWJLaXRDU1NNYXRyaXgubW0gKi8sCisJCQkJMzE2Q0M1OEQw
RERCODk1RjAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeEludGVybmFsLmggKi8sCisJCQkJ
MzE2Q0M0NkEwRERBRkNEQjAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgg
Ki8sCisJCQkJMzE2Q0M0NkIwRERBRkNEQjAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5zZm9y
bVZhbHVlLm1tICovLAorCQkJCTMxNkNDNDZDMEREQUZDREIwMDg4OTlFMiAvKiBET01XZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZUludGVybmFsLmggKi8sCiAJCQkJODUwMzJEQzMwQUE4QzlCRTAwN0Qz
QjdEIC8qIERPTUNTU0NoYXJzZXRSdWxlLmggKi8sCiAJCQkJODUwMzJEQzQwQUE4QzlCRTAwN0Qz
QjdEIC8qIERPTUNTU0NoYXJzZXRSdWxlLm1tICovLAogCQkJCTg1MDMyREM1MEFBOEM5QkUwMDdE
M0I3RCAvKiBET01DU1NGb250RmFjZVJ1bGUuaCAqLywKQEAgLTk3MzMsNiArOTg0MSwxMiBAQAog
CQk4NUFGQTdBQjBBQUYzQkIwMDBFODQzMDUgLyogRXZlbnRzICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQk4NUFGQTgyMDBBQUY1MjhBMDBFODQzMDUgLyog
RE9NRXZlbnQuaCAqLywKIAkJCQk4NUFGQTgyMTBBQUY1MjhBMDBFODQzMDUgLyogRE9NRXZlbnQu
bW0gKi8sCiAJCQkJODVEMkFENjcwQUIxQTQwQTAwQzMxM0VBIC8qIERPTUV2ZW50TGlzdGVuZXIu
aCAqLywKQEAgLTExMDIzLDYgKzExMTM3LDE0IEBACiAJCUE4M0I3OTBFMENDQUZGOTcwMDBCMDgy
NSAvKiBDU1MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTMxNkNDNTg2MEREQjg5M0YwMDg4OTlFMiAvKiBKU1dlYktpdENTU01hdHJpeC5jcHAgKi8sCisJ
CQkJMzE2Q0M1ODcwRERCODkzRjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmggKi8sCisJ
CQkJMzE2Q0M0NTYwRERBRkNBQTAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
Y3BwICovLAorCQkJCTMxNkNDNDU3MEREQUZDQUEwMDg4OTlFMiAvKiBKU1dlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLmggKi8sCiAJCQkJOTMwNzA1RDcwOUUwQzlCNzAwQjE3RkU0IC8qIEpTQ291bnRl
ci5jcHAgKi8sCiAJCQkJOTMwNzA1RDkwOUUwQzlCRjAwQjE3RkU0IC8qIEpTQ291bnRlci5oICov
LAogCQkJCUJDNDZDMUYwMEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0NoYXJzZXRSdWxlLmNwcCAq
LywKQEAgLTExMTE0LDYgKzExMjM2LDEwIEBACiAJCUE4M0I3OTEyMENDQjAwM0YwMDBCMDgyNSAv
KiBFdmVudHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJ
CTE0RTgzNzgzMDlGODVEMUMwMEI4NUFFNCAvKiBKU0V2ZW50LmNwcCAqLywKIAkJCQkxNEU4Mzc4
RDA5Rjg1RDRGMDBCODVBRTQgLyogSlNFdmVudC5oICovLAogCQkJCUJDNjBEOUJEMEQyQTI2OUEw
MEI5OTE4RiAvKiBKU0V2ZW50RXhjZXB0aW9uLmNwcCAqLywKQEAgLTExODUzLDYgKzExOTc5LDgg
QEAKIAkJQjJBMDE1OTEwQUY2Q0Q1MzAwNkJDRTBFIC8qIGdyYXBoaWNzICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkzMTZDQzE2NzBERDkxNEE1MDA4ODk5
RTIgLyogVHJhbnNmb3JtM0QuY3BwICovLAorCQkJCTMxNkNDMTY4MEREOTE0QTUwMDg4OTlFMiAv
KiBUcmFuc2Zvcm0zRC5oICovLAogCQkJCUIyMzU0MEYwMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJp
bmdUcnVuY2F0b3IuY3BwICovLAogCQkJCUIyMzU0MEYxMEQwMDc4MkUwMDIzODJGQSAvKiBTdHJp
bmdUcnVuY2F0b3IuaCAqLywKIAkJCQlCMkMzREE0RjBEMDA2Q0Q2MDBFRjZGMjYgLyogRm9udC5j
cHAgKi8sCkBAIC0xMjUwOSw2ICsxMjYzNywxOCBAQAogCQlGNTIzRDE4NDAyREU0MkU4MDE4NjM1
Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQkzMTZDQzE0MDBERDhGRTdCMDA4ODk5RTIgLyogV2ViS2l0Q1NTTWF0cml4LmNwcCAqLywKKwkJ
CQkzMTZDQzE0MTBERDhGRTdCMDA4ODk5RTIgLyogV2ViS2l0Q1NTTWF0cml4LmggKi8sCisJCQkJ
MzE2Q0MxNDIwREQ4RkU3QjAwODg5OUUyIC8qIFdlYktpdENTU01hdHJpeC5pZGwgKi8sCisJCQkJ
MzE2Q0MxNDMwREQ4RkU3QjAwODg5OUUyIC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCAq
LywKKwkJCQkzMTZDQzE0NDBERDhGRTdCMDA4ODk5RTIgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuaCAqLywKKwkJCQkzMTZDQzE0NTBERDhGRTdCMDA4ODk5RTIgLyogV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuaWRsICovLAogCQkJCUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhDNSAvKiBDb3VudGVy
LmggKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50ZXIuaWRsICovLAog
CQkJCUE4MEU2Q0JCMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NCb3JkZXJJbWFnZVZhbHVlLmNwcCAq
LywKQEAgLTEyNTkzLDggKzEyNzMzLDYgQEAKIAkJCQk4NThDMzkxMDBBQThGRjAwMDBCMTg3QTQg
LyogQ1NTU3R5bGVTaGVldC5pZGwgKi8sCiAJCQkJQkM4MEM5ODUwQ0QyOTRFRTAwQTBCN0IzIC8q
IENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwICovLAogCQkJCUJDODBDOTg2MENEMjk0RUUwMEEw
QjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggKi8sCi0JCQkJQkM5QUREN0YwQ0M0MDky
MjAwMDk4QzRDIC8qIENTU1RyYW5zZm9ybVZhbHVlLmNwcCAqLywKLQkJCQlCQzlBREQyMjBDQzQw
MzI2MDAwOThDNEMgLyogQ1NTVHJhbnNmb3JtVmFsdWUuaCAqLywKIAkJCQkzNzFGNTNFODBEMjcw
NEY5MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwICovLAogCQkJCTM3MUY1M0U3
MEQyNzA0RjkwMEVDRTBENSAvKiBDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oICovLAogCQkJCUE4MEU2
Q0NFMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NVbmtub3duUnVsZS5oICovLApAQCAtMTI4NDYsNiAr
MTI5ODQsMTIgQEAKIAkJRjUyM0QzMjQwMkRFNDQ3ODAxODYzNUNBIC8qIGRvbSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQThDNEE3RkMwOUQ1NjMyNzAw
MDNBQzhEIC8qIEF0dHIuY3BwICovLAogCQkJCUE4QzRBN0ZCMDlENTYzMjcwMDAzQUM4RCAvKiBB
dHRyLmggKi8sCiAJCQkJOTNFRUMxRTUwOUMyODc3NzAwQzUxNUQxIC8qIEF0dHIuaWRsICovLApA
QCAtMTMwOTUsNyArMTMyMzksNiBAQAogCQkJCUJDNzcyQjQwMEM0RUE5MUUwMDgzMjg1RiAvKiBD
U1NTdHlsZVNlbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwNzBBMTk1MTZFMDBB
OEVGNUYgLyogQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MEM5ODgwQ0Qy
OTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLAot
CQkJCUJDOUFERDIzMENDNDAzMjYwMDA5OEM0QyAvKiBDU1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJREQ3Q0RGMjUwQTIzQ0Y5ODAwMDY5OTI4IC8qIENTU1Vua25vd25SdWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkNFRTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFs
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NjU4MTUxMDlEMTMwNDMwMDBFNjFENyAvKiBDU1NW
YWx1ZUtleXdvcmRzLmggaW4gSGVhZGVycyAqLywKQEAgLTE0OTkyLDYgKzE1MTM1LDMxIEBACiAJ
CQkJQkNFRkUxRUIwRENBNUY2NDAwNzM5MjE5IC8qIEpTWFNMVFByb2Nlc3Nvci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkNFOTlFQzQwRENBNjI0MTAwMTgyNjgzIC8qIEpTWFNMVFByb2Nlc3NvckNv
bnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0JGQjUzRDBEQ0QyOUNGMDAxOUIzRTUg
LyogSlNET01XaW5kb3dTaGVsbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2Q0MxNDcwREQ4RkU3
QjAwODg5OUUyIC8qIFdlYktpdENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MzE2Q0MxNEEwREQ4RkU3QjAwODg5OUUyIC8qIFdlYktpdENTU0tleWZyYW1lc1J1bGUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTMxNkNDMTREMEREOEZFN0IwMDg4OTlFMiAvKiBXZWJLaXRDU1NNYXRy
aXguaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNkNDMTUwMEREOEZFN0IwMDg4OTlFMiAvKiBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2Q0MxNkEwREQ5MTRB
NTAwODg5OUUyIC8qIFRyYW5zZm9ybTNELmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZDQzNFODBE
REE2N0Q5MDA4ODk5RTIgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAor
CQkJCTMxNkNDM0VCMEREQTY3REEwMDg4OTlFMiAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCTMxNkNDM0ZFMEREQTZDMjAwMDg4OTlFMiAvKiBKU1dlYktpdEFu
aW1hdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZDQzQwMDBEREE2QzIwMDA4ODk5
RTIgLyogSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNkND
NDBBMEREQTZDNTQwMDg4OTlFMiAvKiBET01XZWJLaXRBbmltYXRpb25FdmVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMzE2Q0M0MEMwRERBNkM1NDAwODg5OUUyIC8qIERPTVdlYktpdEFuaW1hdGlv
bkV2ZW50SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNkNDNDBEMEREQTZDNTQwMDg4
OTlFMiAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTMx
NkNDNDBGMEREQTZDNTQwMDg4OTlFMiAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2Q0M0NTkwRERBRkNBQTAwODg5OUUyIC8qIEpTV2Vi
S2l0Q1NTS2V5ZnJhbWVSdWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZDQzQ1QjBEREFGQ0FB
MDA4ODk5RTIgLyogSlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkzMTZDQzQ1RjBEREFGQ0FBMDA4ODk5RTIgLyogSlNXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMzE2Q0M0NkQwRERBRkNEQjAwODg5OUUyIC8qIERPTVdlYktp
dENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2Q0M0NkYwRERBRkNEQjAw
ODg5OUUyIC8qIERPTVdlYktpdENTU0tleWZyYW1lUnVsZUludGVybmFsLmggaW4gSGVhZGVycyAq
LywKKwkJCQkzMTZDQzQ3MDBEREFGQ0RCMDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTS2V5ZnJhbWVz
UnVsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2Q0M0NzIwRERBRkNEQjAwODg5OUUyIC8qIERP
TVdlYktpdENTU0tleWZyYW1lc1J1bGVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2
Q0M0NzYwRERBRkNEQjAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMTZDQzQ3ODBEREFGQ0RCMDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWVJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2Q0M1ODkwRERC
ODkzRjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLywKKwkJCQkz
MTZDQzU4RTBEREI4OTVGMDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkzMTZDQzU5MDBEREI4OTVGMDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTTWF0cml4
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTUxMDUsNiArMTUyNzMsMTIgQEAKIAkJCQkx
QUIxQUU3QTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJMUFCMUFFN0IwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGlu
IFJlc291cmNlcyAqLywKIAkJCQlCQ0VGRTFERDBEQ0E1Q0ZEMDA3MzkyMTkgLyogWFNMVFByb2Nl
c3Nvci5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCTMxNkNDMTQ4MEREOEZFN0IwMDg4OTlFMiAv
KiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQkzMTZDQzE0
QjBERDhGRTdCMDA4ODk5RTIgLyogV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5pZGwgaW4gUmVzb3Vy
Y2VzICovLAorCQkJCTMxNkNDMTRFMEREOEZFN0IwMDg4OTlFMiAvKiBXZWJLaXRDU1NNYXRyaXgu
aWRsIGluIFJlc291cmNlcyAqLywKKwkJCQkzMTZDQzE1MTBERDhGRTdCMDA4ODk5RTIgLyogV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQkzMTZDQzNFOTBE
REE2N0RBMDA4ODk5RTIgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsIGluIFJlc291cmNlcyAq
LywKKwkJCQkzMTZDQzNFQzBEREE2N0RBMDA4ODk5RTIgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50
LmlkbCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNTI0NSw3ICsxNTQxOSw2IEBACiAJCQkJQkM3NzJC
M0YwQzRFQTkxRTAwODMyODVGIC8qIENTU1N0eWxlU2VsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThFQTgwMDgwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQkM4MEM5ODcwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0
aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkM5QUREODAwQ0M0MDkyMjAwMDk4QzRD
IC8qIENTU1RyYW5zZm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0U0MEEx
OTg5Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJD
M0RBMjcwRDAwNkMxRDAwRUY2RjI2IC8qIENTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QkNCMTZDMTcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MTY2OTUsNiArMTY4NjgsMjUgQEAKIAkJCQlCQ0VGRTFFQTBEQ0E1RjY0MDA3MzkyMTkgLyogSlNY
U0xUUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTk5RUMzMERDQTYyNDEwMDE4
MjY4MyAvKiBKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0JGQjUzQzBEQ0QyOUNGMDAxOUIzRTUgLyogSlNET01XaW5kb3dTaGVsbC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkzMTZDQzE0NjBERDhGRTdCMDA4ODk5RTIgLyogV2ViS2l0Q1NTS2V5ZnJh
bWVSdWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxNkNDMTQ5MEREOEZFN0IwMDg4OTlFMiAv
KiBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxNkNDMTRD
MEREOEZFN0IwMDg4OTlFMiAvKiBXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMzE2Q0MxNEYwREQ4RkU3QjAwODg5OUUyIC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTMxNkNDMTY5MEREOTE0QTUwMDg4OTlFMiAvKiBUcmFuc2Zv
cm0zRC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMTZDQzNFNzBEREE2N0Q5MDA4ODk5RTIgLyog
V2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzE2Q0MzRUEwRERB
NjdEQTAwODg5OUUyIC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkzMTZDQzNGRDBEREE2QzIwMDA4ODk5RTIgLyogSlNXZWJLaXRBbmltYXRpb25FdmVudC5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkzMTZDQzNGRjBEREE2QzIwMDA4ODk5RTIgLyogSlNXZWJL
aXRUcmFuc2l0aW9uRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMzE2Q0M0MEIwRERBNkM1
NDAwODg5OUUyIC8qIERPTVdlYktpdEFuaW1hdGlvbkV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJMzE2Q0M0MEUwRERBNkM1NDAwODg5OUUyIC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTMxNkNDNDU4MEREQUZDQUEwMDg4OTlFMiAvKiBKU1dlYktp
dENTU0tleWZyYW1lUnVsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMTZDQzQ1QTBEREFGQ0FB
MDA4ODk5RTIgLyogSlNXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTMxNkNDNDVFMEREQUZDQUEwMDg4OTlFMiAvKiBKU1dlYktpdENTU1RyYW5zZm9ybVZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxNkNDNDZFMEREQUZDREIwMDg4OTlFMiAvKiBET01X
ZWJLaXRDU1NLZXlmcmFtZVJ1bGUubW0gaW4gU291cmNlcyAqLywKKwkJCQkzMTZDQzQ3MTBEREFG
Q0RCMDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTMxNkNDNDc3MEREQUZDREIwMDg4OTlFMiAvKiBET01XZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTMxNkNDNTg4MEREQjg5M0YwMDg4OTlFMiAvKiBK
U1dlYktpdENTU01hdHJpeC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMTZDQzU4RjBEREI4OTVG
MDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTTWF0cml4Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBX
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gMzI5MTIpCisrKyBXZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQAogI2lu
Y2x1ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlVz
ZXJBZ2VudFN0eWxlU2hlZXRzLmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
aCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgImxvYWRlci5oIgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KQEAgLTQ0ODEsMTIyICs0NTUwLDcgQEAKICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0VHJhbnNmb3JtOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFM
KHRyYW5zZm9ybSwgVHJhbnNmb3JtKTsKICAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVy
YXRpb25zOwotICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAgICAg
ICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZh
bHVlKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBsaXN0LT5sZW5ndGgoKTsKLSAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAg
ICAgICBDU1NUcmFuc2Zvcm1WYWx1ZSogdmFsID0gc3RhdGljX2Nhc3Q8Q1NTVHJhbnNmb3JtVmFs
dWUqPihsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKLSAgICAgICAgICAgICAgICBD
U1NWYWx1ZUxpc3QqIHZhbHVlcyA9IHZhbC0+dmFsdWVzKCk7Ci0gICAgICAgICAgICAgICAgCi0g
ICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0VmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7
Ci0gICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN3aXRjaCAodmFsLT50eXBlKCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVUcmFu
c2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVHJhbnNmb3JtVmFs
dWU6OlNjYWxlWFRyYW5zZm9ybU9wZXJhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBD
U1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9uOiB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgc3ggPSAxLjA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgc3kgPSAxLjA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT50eXBlKCkg
PT0gQ1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWVRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzeSA9IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3ggPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmICh2YWwtPnR5cGUoKSA9PSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVUcmFu
c2Zvcm1PcGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZh
bHVlcy0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHNlY29uZFZhbHVlLT5nZXREb3VibGVWYWx1
ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHN4OwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24qIHNj
YWxlID0gbmV3IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKHN4LCBzeSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZChzY2FsZSk7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBj
YXNlIENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246Ci0gICAg
ICAgICAgICAgICAgICAgIGNhc2UgQ1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVhUcmFuc2Zv
cm1PcGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVHJhbnNmb3JtVmFsdWU6
OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246IHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGJvb2wgb2s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGggdHggPSBMZW5ndGgoMCwg
Rml4ZWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAsIEZp
eGVkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwtPnR5cGUoKSA9PSBDU1NUcmFu
c2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWVRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBtX3N0eWxlLCAm
b2spOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7IAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR4ID0gY29udmVydFRvTGVuZ3RoKGZpcnN0VmFsdWUsIG1fc3R5bGUsICZvayk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+dHlwZSgpID09IENTU1RyYW5z
Zm9ybVZhbHVlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24pIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3Vu
ZHNDaGVjaygxKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNv
bnZlcnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwgbV9zdHlsZSwgJm9rKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgICAgICAgICAgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2xhdGUgPSBu
ZXcgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKHR4LCB0eSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRpb25zLmFwcGVuZCh0cmFuc2xhdGUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOiB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBkb3VibGUgYW5nbGUgPSBmaXJzdFZhbHVlLT5nZXREb3VibGVW
YWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0VmFsdWUtPnByaW1pdGl2
ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JBRCkKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZSA9IHJhZDJkZWcoYW5nbGUpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZSBpZiAoZmlyc3RWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfR1JBRCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSA9IGdyYWQy
ZGVnKGFuZ2xlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJvdGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbiogcm90YXRlID0gbmV3IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbihhbmdsZSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZChyb3RhdGUpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgY2FzZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1RyYW5zZm9ybU9wZXJhdGlvbjoK
LSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1hUcmFuc2Zv
cm1PcGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVHJhbnNmb3JtVmFsdWU6
OlNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb3Vi
bGUgYW5nbGVYID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBhbmdsZVkgPSAw
OwotICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFuZ2xlID0gZmlyc3RWYWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdFZhbHVlLT5w
cmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SQUQpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYW5nbGUgPSByYWQyZGVnKGFuZ2xlKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGZpcnN0VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0dSQUQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGUg
PSBncmFkMmRlZyhhbmdsZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT50eXBl
KCkgPT0gQ1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlWSA9IGFuZ2xlOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVYID0gYW5nbGU7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+dHlwZSgpID09IENTU1RyYW5z
Zm9ybVZhbHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2YWx1ZXMtPmxlbmd0aCgpID4gMSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVZID0gc2Vj
b25kVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoc2Vjb25kVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1JBRCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZVkgPSByYWQyZGVnKGFuZ2xlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHNlY29uZFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19HUkFEKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFuZ2xlWSA9IGdyYWQyZGVnKGFuZ2xlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZVkgPSBh
bmdsZVg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAg
ICBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKiBza2V3ID0gbmV3IFNrZXdUcmFuc2Zvcm1PcGVyYXRp
b24oYW5nbGVYLCBhbmdsZVkpOwotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5h
cHBlbmQoc2tldyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1RyYW5zZm9ybVZhbHVlOjpN
YXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENTU1By
aW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVl
Kj4odmFsdWVzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvdXJ0aFZhbHVlID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2so
MykpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpZnRoVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjayg0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1
ZSogc2l4dGhWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWVzLT5p
dGVtV2l0aG91dEJvdW5kc0NoZWNrKDUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIE1hdHJp
eFRyYW5zZm9ybU9wZXJhdGlvbiogbWF0cml4ID0gbmV3IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlv
bihmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlY29uZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoaXJkVmFsdWUtPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZm91cnRoVmFsdWUtPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmlmdGhWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXh0aFZhbHVlLT5nZXREb3VibGVWYWx1ZSgp
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKG1hdHJpeCk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfSAgIAot
ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQorICAgICAgICBjcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbHVlLCBt
X3N0eWxlLCBvcGVyYXRpb25zKTsKICAgICAgICAgbV9zdHlsZS0+c2V0VHJhbnNmb3JtKG9wZXJh
dGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMyMiw0ICs1MzYzLDE5MSBAQAog
ICAgIH0KIH0KIAorYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcGVyYXRp
b25zKENTU1ZhbHVlKiBpblZhbHVlLCBSZW5kZXJTdHlsZSogaW5TdHlsZSwgVHJhbnNmb3JtT3Bl
cmF0aW9ucyYgb3V0T3BlcmF0aW9ucykKK3sKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJh
dGlvbnM7CisgICAgaWYgKGluVmFsdWUgJiYgIWluVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkg
eworICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3Qq
PihpblZhbHVlKTsKKyAgICAgICAgdW5zaWduZWQgc2l6ZSA9IGxpc3QtPmxlbmd0aCgpOworICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSogdmFsID0gc3RhdGljX2Nhc3Q8V2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUqPihsaXN0LT5pdGVtKGkpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQ1NT
UHJpbWl0aXZlVmFsdWUqIGZpcnN0VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbC0+aXRlbSgwKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAodmFs
LT5vcGVyYXRpb25UeXBlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlOjpTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBjYXNl
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVhUcmFuc2Zvcm1PcGVyYXRpb246CisgICAg
ICAgICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVZVHJhbnNmb3Jt
T3BlcmF0aW9uOgorICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6
OlNjYWxlWlRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlOjpTY2FsZTNEVHJhbnNmb3JtT3BlcmF0aW9uOiB7CisgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSBzeCA9IDEuMDsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHN5
ID0gMS4wOworICAgICAgICAgICAgICAgICAgICBkb3VibGUgc3ogPSAxLjA7CisgICAgICAgICAg
ICAgICAgICAgIGlmICh2YWwtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZTo6U2NhbGVaVHJhbnNmb3JtT3BlcmF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAg
c3ogPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmICh2YWwtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6
U2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSBm
aXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsg
CisgICAgICAgICAgICAgICAgICAgICAgICBzeCA9IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVl
KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT5vcGVyYXRpb25UeXBlKCkgIT0g
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWFRyYW5zZm9ybU9wZXJhdGlvbikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwtPmxlbmd0aCgpID4gMikgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDIpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3ogPSB0aGlyZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodmFsLT5sZW5ndGgoKSA+IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzeSA9IHNlY29uZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3kg
PSBzeDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU2NhbGVUcmFuc2Zvcm1P
cGVyYXRpb24qIHNjYWxlID0gbmV3IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKHN4LCBzeSwgc3op
OworICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZChzY2FsZSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
YXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246
CisgICAgICAgICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRl
WFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlOjpUcmFuc2xhdGVZVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgICAg
IGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVpUcmFuc2Zvcm1PcGVyYXRp
b246CisgICAgICAgICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNs
YXRlM0RUcmFuc2Zvcm1PcGVyYXRpb246IHsKKyAgICAgICAgICAgICAgICAgICAgYm9vbCBvayA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIExlbmd0aCB0eCA9IExlbmd0aCgwLCBGaXhlZCk7
CisgICAgICAgICAgICAgICAgICAgIExlbmd0aCB0eSA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAg
ICAgICAgICAgICAgICAgIExlbmd0aCB0eiA9IExlbmd0aCgwLCBGaXhlZCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmICh2YWwtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZTo6VHJhbnNsYXRlWlRyYW5zZm9ybU9wZXJhdGlvbikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHR6ID0gY29udmVydFRvTGVuZ3RoKGZpcnN0VmFsdWUsIGluU3R5bGUsICZvayk7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVZVHJhbnNmb3JtT3BlcmF0aW9uKQorICAgICAgICAg
ICAgICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgaW5TdHlsZSwg
Jm9rKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7IAorICAgICAgICAgICAgICAgICAgICAg
ICAgdHggPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgaW5TdHlsZSwgJm9rKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh2YWwtPm9wZXJhdGlvblR5cGUoKSAhPSBXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlvbikgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh2YWwtPmxlbmd0aCgpID4gMikgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogdGhpcmRWYWx1ZSA9IHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDIpKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdHogPSBjb252ZXJ0VG9MZW5ndGgodGhpcmRWYWx1ZSwgaW5TdHls
ZSwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHZhbC0+bGVuZ3RoKCkgPiAxKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDEpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdHkgPSBjb252ZXJ0VG9MZW5ndGgoc2Vjb25kVmFsdWUsIGluU3R5bGUsICZv
ayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICBpZiAoIW9rKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRl
VHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2xhdGUgPSBuZXcgVHJhbnNsYXRlVHJhbnNmb3JtT3Bl
cmF0aW9uKHR4LCB0eSwgdHopOworICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVu
ZCh0cmFuc2xhdGUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRl
VHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWU6OlJvdGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICAgICAgY2Fz
ZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlWVRyYW5zZm9ybU9wZXJhdGlvbjoKKyAg
ICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVaVHJhbnNm
b3JtT3BlcmF0aW9uOiB7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB4ID0gMDsKKyAgICAg
ICAgICAgICAgICAgICAgZG91YmxlIHkgPSAwOworICAgICAgICAgICAgICAgICAgICBkb3VibGUg
eiA9IDA7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBhbmdsZSA9IGZpcnN0VmFsdWUtPmdl
dERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdFZhbHVlLT5wcmlt
aXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SQUQpCisgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZSA9IHJhZDJkZWcoYW5nbGUpOworICAgICAgICAgICAgICAgICAgICBl
bHNlIGlmIChmaXJzdFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19HUkFEKQorICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGUgPSBncmFkMmRlZyhhbmds
ZSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT5v
cGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJvdGF0ZVhUcmFuc2Zv
cm1PcGVyYXRpb24pCisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gMTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAodmFsLT5vcGVyYXRpb25UeXBlKCkgPT0gV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWU6OlJvdGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb24pCisgICAgICAgICAgICAgICAgICAg
ICAgICB5ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgeiA9IDE7CisgICAgICAgICAgICAgICAgICAgIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlv
biogcm90YXRlID0gbmV3IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbih4LCB5LCB6LCBhbmdsZSk7
CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKHJvdGF0ZSk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
YXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGUzRFRyYW5zZm9ybU9wZXJhdGlvbjog
eworICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSgxKSk7CisgICAgICAgICAg
ICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMikpOworICAgICAgICAgICAgICAgICAgICBDU1NQ
cmltaXRpdmVWYWx1ZSogZm91cnRoVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZSo+KHZhbC0+aXRlbSgzKSk7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB4ID0gZmlyc3RW
YWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHkgPSBz
ZWNvbmRWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgZG91Ymxl
IHogPSB0aGlyZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBk
b3VibGUgYW5nbGUgPSBmb3VydGhWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGZvdXJ0aFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19SQUQpCisgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSA9IHJhZDJkZWco
YW5nbGUpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChmb3VydGhWYWx1ZS0+cHJpbWl0
aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGFuZ2xlID0gZ3JhZDJkZWcoYW5nbGUpOworICAgICAgICAgICAgICAgICAgICBS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qIHJvdGF0ZSA9IG5ldyBSb3RhdGVUcmFuc2Zvcm1PcGVy
YXRpb24oeCwgeSwgeiwgYW5nbGUpOworICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLmFw
cGVuZChyb3RhdGUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1Ry
YW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlOjpTa2V3WFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3WVRyYW5zZm9ybU9wZXJhdGlvbjogeworICAgICAg
ICAgICAgICAgICAgICBkb3VibGUgYW5nbGVYID0gMDsKKyAgICAgICAgICAgICAgICAgICAgZG91
YmxlIGFuZ2xlWSA9IDA7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBhbmdsZSA9IGZpcnN0
VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdFZh
bHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SQUQpCisgICAg
ICAgICAgICAgICAgICAgICAgICBhbmdsZSA9IHJhZDJkZWcoYW5nbGUpOworICAgICAgICAgICAg
ICAgICAgICBlbHNlIGlmIChmaXJzdFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19HUkFEKQorICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGUgPSBncmFk
MmRlZyhhbmdsZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWwtPm9wZXJhdGlvblR5cGUo
KSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1lUcmFuc2Zvcm1PcGVyYXRpb24pCisg
ICAgICAgICAgICAgICAgICAgICAgICBhbmdsZVkgPSBhbmdsZTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZVggPSBhbmdsZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICh2YWwtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6U2tld1RyYW5zZm9ybU9wZXJhdGlvbikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2YWwtPmxlbmd0aCgpID4gMSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSgxKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlWSA9IHNlY29uZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2Vjb25kVmFsdWUtPnByaW1pdGl2ZVR5
cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JBRCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFuZ2xlWSA9IHJhZDJkZWcoYW5nbGVZKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoc2Vjb25kVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0dSQUQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbmdsZVkgPSBncmFkMmRlZyhhbmdsZVkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgU2tld1RyYW5z
Zm9ybU9wZXJhdGlvbiogc2tldyA9IG5ldyBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKGFuZ2xlWCwg
YW5nbGVZKTsKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5hcHBlbmQoc2tldyk7Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpNYXRyaXhUcmFuc2Zvcm1PcGVyYXRp
b246IHsKKyAgICAgICAgICAgICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIG1hdHJpeDsKKyAgICAg
ICAgICAgICAgICAgICAgbWF0cml4LnNldEEoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWwtPml0ZW0oMCkpLT5nZXRGbG9hdFZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICBt
YXRyaXguc2V0QihzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSgxKSkt
PmdldEZsb2F0VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXRDKHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDIpKS0+Z2V0RmxvYXRWYWx1ZSgp
KTsKKyAgICAgICAgICAgICAgICAgICAgbWF0cml4LnNldEQoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0
aXZlVmFsdWUqPih2YWwtPml0ZW0oMykpLT5nZXRGbG9hdFZhbHVlKCkpOworICAgICAgICAgICAg
ICAgICAgICBtYXRyaXguc2V0RShzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+
aXRlbSg0KSktPmdldEZsb2F0VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1hdHJpeC5z
ZXRGKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDUpKS0+Z2V0Rmxv
YXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5hcHBlbmQobmV3IE1h
dHJpeFRyYW5zZm9ybU9wZXJhdGlvbihtYXRyaXgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWU6Ok1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOiB7CisgICAgICAgICAgICAg
ICAgICAgIFRyYW5zZm9ybTNEIG1hdHJpeChzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbC0+aXRlbSgwKSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVt
KDEpKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMikpLT5nZXRG
bG9hdFZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSgzKSktPmdldEZsb2F0VmFsdWUo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDQpKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWwtPml0ZW0oNSkpLT5nZXRGbG9hdFZhbHVlKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bC0+aXRlbSg2KSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDcp
KS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oOCkpLT5nZXRGbG9h
dFZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSg5KSktPmdldEZsb2F0VmFsdWUoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDEwKSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsLT5pdGVtKDExKSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
LT5pdGVtKDEyKSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDEz
KSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDE0KSktPmdldEZs
b2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRp
Y19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDE1KSktPmdldEZsb2F0VmFsdWUo
KSk7CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKG5ldyBNYXRyaXgzRFRy
YW5zZm9ybU9wZXJhdGlvbihtYXRyaXgpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfSAgIAorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICBvdXRPcGVyYXRpb25zID0gb3BlcmF0aW9uczsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCShy
ZXZpc2lvbiAzMjkxMikKKysrIFdlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUg
IkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJD
U1NUcmFuc2Zvcm1WYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCiAj
aW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgpA
QCAtNjIsNiArNjEsNyBAQAogI2luY2x1ZGUgIlBhaXIuaCIKICNpbmNsdWRlICJSZWN0LmgiCiAj
aW5jbHVkZSAiU2hhZG93VmFsdWUuaCIKKyNpbmNsdWRlICJXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZS5oIgogI2luY2x1ZGUgPGtqcy9kdG9hLmg+CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCkBAIC0zNzI4LDcgKzM5NDksNyBAQAogY2xhc3MgVHJhbnNmb3JtT3BlcmF0aW9uSW5mbyB7
CiBwdWJsaWM6CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9uSW5mbyhjb25zdCBQYXJzZVN0cmluZyYg
bmFtZSkKLSAgICA6IG1fdHlwZShDU1NUcmFuc2Zvcm1WYWx1ZTo6VW5rbm93blRyYW5zZm9ybU9w
ZXJhdGlvbikKKyAgICA6IG1fdHlwZShXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VW5rbm93blRy
YW5zZm9ybU9wZXJhdGlvbikKICAgICAsIG1fYXJnQ291bnQoMSkKICAgICAsIG1fYWxsb3dTaW5n
bGVBcmd1bWVudChmYWxzZSkKICAgICAsIG1fdW5pdChDU1NQYXJzZXI6OkZVbmtub3duKQpAQCAt
MzczNiwzMiArMzk1NywzNSBAQAogICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwg
InNjYWxlKCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJzY2FsZXgoIikgfHwgZXF1YWxJ
Z25vcmluZ0Nhc2UobmFtZSwgInNjYWxleSgiKSkgewogICAgICAgICAgICAgbV91bml0ID0gQ1NT
UGFyc2VyOjpGTnVtYmVyOwogICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUs
ICJzY2FsZSgiKSkKLSAgICAgICAgICAgICAgICBtX3R5cGUgPSBDU1NUcmFuc2Zvcm1WYWx1ZTo6
U2NhbGVUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICAgICAgbV90eXBlID0gV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOwogICAgICAgICAgICAg
ZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNjYWxleCgiKSkKLSAgICAgICAgICAg
ICAgICBtX3R5cGUgPSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9u
OworICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2Fs
ZVhUcmFuc2Zvcm1PcGVyYXRpb247CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
bV90eXBlID0gQ1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWVRyYW5zZm9ybU9wZXJhdGlvbjsKLSAg
ICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAicm90YXRlKCIpKSB7Ci0g
ICAgICAgICAgICBtX3R5cGUgPSBDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlVHJhbnNmb3JtT3Bl
cmF0aW9uOworICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpTY2FsZVlUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25v
cmluZ0Nhc2UobmFtZSwgInJvdGF0ZSgiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAicm90
YXRleigiKSkgewogICAgICAgICAgICAgbV91bml0ID0gQ1NTUGFyc2VyOjpGQW5nbGU7CisgICAg
ICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInJvdGF0ZSgiKSkKKyAgICAgICAg
ICAgICAgICBtX3R5cGUgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlVHJhbnNmb3Jt
T3BlcmF0aW9uOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVaVHJhbnNmb3JtT3BlcmF0aW9uOwogICAgICAg
ICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJza2V3KCIpIHx8IGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsICJza2V3eCgiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2tl
d3koIikpIHsKICAgICAgICAgICAgIG1fdW5pdCA9IENTU1BhcnNlcjo6RkFuZ2xlOwogICAgICAg
ICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJza2V3KCIpKQotICAgICAgICAgICAg
ICAgIG1fdHlwZSA9IENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOwor
ICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3VHJh
bnNmb3JtT3BlcmF0aW9uOwogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
bmFtZSwgInNrZXd4KCIpKQotICAgICAgICAgICAgICAgIG1fdHlwZSA9IENTU1RyYW5zZm9ybVZh
bHVlOjpTa2V3WFRyYW5zZm9ybU9wZXJhdGlvbjsKKyAgICAgICAgICAgICAgICBtX3R5cGUgPSBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1hUcmFuc2Zvcm1PcGVyYXRpb247CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV90eXBlID0gQ1NTVHJhbnNmb3JtVmFsdWU6OlNr
ZXdZVHJhbnNmb3JtT3BlcmF0aW9uOworICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlOjpTa2V3WVRyYW5zZm9ybU9wZXJhdGlvbjsKICAgICAgICAgfSBlbHNl
IGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAidHJhbnNsYXRlKCIpIHx8IGVxdWFsSWdub3Jp
bmdDYXNlKG5hbWUsICJ0cmFuc2xhdGV4KCIpIHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJ0
cmFuc2xhdGV5KCIpKSB7CiAgICAgICAgICAgICBtX3VuaXQgPSBDU1NQYXJzZXI6OkZMZW5ndGgg
fCBDU1NQYXJzZXI6OkZQZXJjZW50OwogICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KG5hbWUsICJ0cmFuc2xhdGUoIikpCi0gICAgICAgICAgICAgICAgbV90eXBlID0gQ1NTVHJhbnNm
b3JtVmFsdWU6OlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjsKKyAgICAgICAgICAgICAgICBt
X3R5cGUgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uOwogICAgICAgICAgICAgZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInRyYW5z
bGF0ZXgoIikpCi0gICAgICAgICAgICAgICAgbV90eXBlID0gQ1NTVHJhbnNmb3JtVmFsdWU6OlRy
YW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICAgICAgbV90eXBlID0gV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb247CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbV90eXBlID0gQ1NTVHJhbnNmb3JtVmFsdWU6
OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICAgICAgbV90eXBlID0g
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb247CiAg
ICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgIm1hdHJpeCgiKSkgewot
ICAgICAgICAgICAgbV90eXBlID0gQ1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeFRyYW5zZm9ybU9w
ZXJhdGlvbjsKKyAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpN
YXRyaXhUcmFuc2Zvcm1PcGVyYXRpb247CiAgICAgICAgICAgICBtX2FyZ0NvdW50ID0gMTE7CiAg
ICAgICAgICAgICBtX3VuaXQgPSBDU1NQYXJzZXI6OkZOdW1iZXI7CiAgICAgICAgIH0KQEAgLTM3
NzIsMTUgKzM5OTYsMTUgQEAKICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBDU1NUcmFuc2Zv
cm1WYWx1ZTo6VHJhbnNmb3JtT3BlcmF0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90
eXBlOyB9CisgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zZm9ybU9wZXJhdGlvblR5
cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQogICAgIHVuc2lnbmVkIGFyZ0NvdW50
KCkgY29uc3QgeyByZXR1cm4gbV9hcmdDb3VudDsgfQogICAgIENTU1BhcnNlcjo6VW5pdHMgdW5p
dCgpIGNvbnN0IHsgcmV0dXJuIG1fdW5pdDsgfQogCi0gICAgYm9vbCB1bmtub3duKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlID09IENTU1RyYW5zZm9ybVZhbHVlOjpVbmtub3duVHJhbnNmb3JtT3Bl
cmF0aW9uOyB9CisgICAgYm9vbCB1bmtub3duKCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlOjpVbmtub3duVHJhbnNmb3JtT3BlcmF0aW9uOyB9CiAgICAg
Ym9vbCBoYXNDb3JyZWN0QXJnQ291bnQodW5zaWduZWQgYXJnQ291bnQpIHsgcmV0dXJuIG1fYXJn
Q291bnQgPT0gYXJnQ291bnQgfHwgKG1fYWxsb3dTaW5nbGVBcmd1bWVudCAmJiBhcmdDb3VudCA9
PSAxKTsgfQogCiBwcml2YXRlOgotICAgIENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2Zvcm1PcGVy
YXRpb25UeXBlIG1fdHlwZTsKKyAgICBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNmb3Jt
T3BlcmF0aW9uVHlwZSBtX3R5cGU7CiAgICAgdW5zaWduZWQgbV9hcmdDb3VudDsKICAgICBib29s
IG1fYWxsb3dTaW5nbGVBcmd1bWVudDsKICAgICBDU1NQYXJzZXI6OlVuaXRzIG1fdW5pdDsKQEAg
LTM3OTMsNyArNDAxNyw3IEBACiAKICAgICAvLyBUaGUgdHJhbnNmb3JtIGlzIGEgbGlzdCBvZiBm
dW5jdGlvbmFsIHByaW1pdGl2ZXMgdGhhdCBzcGVjaWZ5IHRyYW5zZm9ybSBvcGVyYXRpb25zLiAg
V2UgY29sbGVjdCBhIGxpc3QKICAgICAvLyBvZiBDU1NUcmFuc2Zvcm1WYWx1ZXMsIHdoZXJlIGVh
Y2ggdmFsdWUgc3BlY2lmaWVzIGEgc2luZ2xlIG9wZXJhdGlvbi4KLSAgICBSZWZQdHI8Q1NTVmFs
dWVMaXN0PiBsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdDsKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0
PiBsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdCh0cnVlKTsKICAgICBmb3IgKFZhbHVlKiB2YWx1ZSA9
IHZhbHVlTGlzdC0+Y3VycmVudCgpOyB2YWx1ZTsgdmFsdWUgPSB2YWx1ZUxpc3QtPm5leHQoKSkg
ewogICAgICAgICBpZiAodmFsdWUtPnVuaXQgIT0gVmFsdWU6OkZ1bmN0aW9uIHx8ICF2YWx1ZS0+
ZnVuY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTM4MTIsNyArNDAzNiw3IEBACiAg
ICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICAvLyBDcmVhdGUgdGhlIG5ldyBDU1NUcmFu
c2Zvcm1WYWx1ZSBmb3IgdGhpcyBvcGVyYXRpb24gYW5kIGFkZCBpdCB0byBvdXIgbGlzdC4KLSAg
ICAgICAgQ1NTVHJhbnNmb3JtVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gbmV3IENTU1RyYW5zZm9y
bVZhbHVlKGluZm8udHlwZSgpKTsKKyAgICAgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUqIHRy
YW5zZm9ybVZhbHVlID0gbmV3IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKGluZm8udHlwZSgpKTsK
ICAgICAgICAgbGlzdC0+YXBwZW5kKHRyYW5zZm9ybVZhbHVlKTsKIAogICAgICAgICAvLyBTbmFn
IG91ciB2YWx1ZXMuCkBAIC0zODI1LDcgKzQwNDksNyBAQAogICAgICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBBZGQgdGhlIHZhbHVlIHRvIHRoZSBj
dXJyZW50IHRyYW5zZm9ybSBvcGVyYXRpb24uCi0gICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+
YWRkVmFsdWUobmV3IENTU1ByaW1pdGl2ZVZhbHVlKGEtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZh
bHVlOjpVbml0VHlwZXMpIGEtPnVuaXQpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5h
cHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKGEtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXMpIGEtPnVuaXQpKTsKIAogICAgICAgICAgICAgYSA9IGFyZ3MtPm5leHQoKTsK
ICAgICAgICAgICAgIGlmICghYSkKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1RyYW5zZm9ybVZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NUcmFuc2Zvcm1WYWx1ZS5jcHAJKHJl
dmlzaW9uIDMyOTEyKQorKysgV2ViQ29yZS9jc3MvQ1NTVHJhbnNmb3JtVmFsdWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDk0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiQ1NTVHJhbnNmb3JtVmFsdWUuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLUNTU1RyYW5zZm9ybVZhbHVlOjpDU1NUcmFu
c2Zvcm1WYWx1ZShUcmFuc2Zvcm1PcGVyYXRpb25UeXBlIG9wKQotOiBtX3R5cGUob3ApCi17fQot
Ci1DU1NUcmFuc2Zvcm1WYWx1ZTo6fkNTU1RyYW5zZm9ybVZhbHVlKCkKLXt9Ci0KLXZvaWQgQ1NT
VHJhbnNmb3JtVmFsdWU6OmFkZFZhbHVlKENTU1ZhbHVlKiB2YWwpCi17Ci0gICAgaWYgKCFtX3Zh
bHVlcykKLSAgICAgICAgbV92YWx1ZXMgPSBuZXcgQ1NTVmFsdWVMaXN0OwotICAgIG1fdmFsdWVz
LT5hcHBlbmQodmFsKTsKLX0KLQotU3RyaW5nIENTU1RyYW5zZm9ybVZhbHVlOjpjc3NUZXh0KCkg
Y29uc3QKLXsKLSAgICBTdHJpbmcgcmVzdWx0OwotICAgIHN3aXRjaChtX3R5cGUpIHsKLSAgICAg
ICAgY2FzZSBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjoKLSAgICAgICAgICAgIHJlc3VsdCArPSAi
c2NhbGUoIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNjYWxlWFRyYW5zZm9y
bU9wZXJhdGlvbjoKLSAgICAgICAgICAgIHJlc3VsdCArPSAic2NhbGVYKCI7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBTY2FsZVlUcmFuc2Zvcm1PcGVyYXRpb246Ci0gICAgICAg
ICAgICByZXN1bHQgKz0gInNjYWxlWSgiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOgotICAgICAgICAgICAgcmVzdWx0ICs9ICJyb3Rh
dGUoIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFNrZXdUcmFuc2Zvcm1PcGVy
YXRpb246Ci0gICAgICAgICAgICByZXN1bHQgKz0gInNrZXcoIjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFNrZXdYVHJhbnNmb3JtT3BlcmF0aW9uOgotICAgICAgICAgICAgcmVz
dWx0ICs9ICJza2V3WCgiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2tld1lU
cmFuc2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAgICByZXN1bHQgKz0gInNrZXdZKCI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246
Ci0gICAgICAgICAgICByZXN1bHQgKz0gInRyYW5zbGF0ZSgiOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgVHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlvbjoKLSAgICAgICAgICAg
IHJlc3VsdCArPSAidHJhbnNsYXRlWCgiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgVHJhbnNsYXRlWVRyYW5zZm9ybU9wZXJhdGlvbjoKLSAgICAgICAgICAgIHJlc3VsdCArPSAi
dHJhbnNsYXRlWSgiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTWF0cml4VHJh
bnNmb3JtT3BlcmF0aW9uOgotICAgICAgICAgICAgcmVzdWx0ICs9ICJtYXRyaXgoIjsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
fQotICAgIAotICAgIGlmIChtX3ZhbHVlcykKLSAgICAgICAgcmVzdWx0ICs9IG1fdmFsdWVzLT5j
c3NUZXh0KCk7Ci0gICAgCi0gICAgcmVzdWx0ICs9ICIpIjsKLSAgICByZXR1cm4gcmVzdWx0Owot
fQotCi19CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5j
cHAJKHJldmlzaW9uIDMyOTEyKQorKysgV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzgsNyBAQAogI2luY2x1ZGUgIlJl
Y3QuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTaGFkb3dWYWx1ZS5o
IgorI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgiCiAKICNpZiBFTkFCTEUoREFT
SEJPQVJEX1NVUFBPUlQpCiAjaW5jbHVkZSAiRGFzaGJvYXJkUmVnaW9uLmgiCkBAIC0xODMsNiAr
MTkyLDkgQEAKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTZWN1cml0eSwKICAgICBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHRTdHJva2VDb2xvciwKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJv
a2VXaWR0aCwKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSwKKyAgICBDU1NQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybU9yaWdpblgsCisgICAgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1P
cmlnaW5ZLAogICAgIENTU1Byb3BlcnR5V2Via2l0VXNlckRyYWcsCiAgICAgQ1NTUHJvcGVydHlX
ZWJraXRVc2VyTW9kaWZ5LAogICAgIENTU1Byb3BlcnR5V2Via2l0VXNlclNlbGVjdCwKQEAgLTM4
OCw2ICs0MDQsNDYgQEAKICAgICByZXR1cm4gcmVuZGVyZXItPnN0eWxlKCktPmJveFNpemluZygp
ID09IENPTlRFTlRfQk9YID8gcmVuZGVyZXItPmNvbnRlbnRCb3goKSA6IHJlbmRlcmVyLT5ib3Jk
ZXJCb3goKTsKIH0KIAorc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb21wdXRlZFRy
YW5zZm9ybShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIGlmICghcmVuZGVyZXIpCisg
ICAgICAgIHJldHVybiAwOworICAgIAorICAgIEludFJlY3QgYm94ID0gc2l6aW5nQm94KHJlbmRl
cmVyKTsKKyAgICAKKyAgICBUcmFuc2Zvcm0zRCB0cmFuc2Zvcm07CisgICAgCisgICAgcmVuZGVy
ZXItPnN0eWxlKCktPmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybSwgYm94LnNpemUoKSwgZmFsc2Up
OworCisgICAgUmVmUHRyPFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiAgdHJhbnNmb3JtVmFsID0g
bmV3IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpNYXRy
aXgzRFRyYW5zZm9ybU9wZXJhdGlvbik7CisgICAgCisgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQo
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybS5tMTEoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpKTsKKyAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUodHJhbnNmb3JtLm0xMigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwor
ICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm0u
bTEzKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgdHJhbnNmb3JtVmFs
LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybS5tMTQoKSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAKKyAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChu
ZXcgQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtLm0yMSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUikpOworICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVW
YWx1ZSh0cmFuc2Zvcm0ubTIyKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7Cisg
ICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybS5t
MjMoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICB0cmFuc2Zvcm1WYWwt
PmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtLm0yNCgpLCBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgIAorICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKG5l
dyBDU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm0ubTMxKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKSk7CisgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZh
bHVlKHRyYW5zZm9ybS5tMzIoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAg
ICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodHJhbnNmb3JtLm0z
MygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgIHRyYW5zZm9ybVZhbC0+
YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm0ubTM0KCksIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgCisgICAgdHJhbnNmb3JtVmFsLT5hcHBlbmQobmV3
IENTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybS5tNDEoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpKTsKKyAgICB0cmFuc2Zvcm1WYWwtPmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUodHJhbnNmb3JtLm00MigpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAg
IHRyYW5zZm9ybVZhbC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm0ubTQz
KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgdHJhbnNmb3JtVmFsLT5h
cHBlbmQobmV3IENTU1ByaW1pdGl2ZVZhbHVlKHRyYW5zZm9ybS5tNDQoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAKKyAgICBSZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0
ID0gbmV3IENTU1ZhbHVlTGlzdCh0cnVlKTsKKyAgICBsaXN0LT5hcHBlbmQodHJhbnNmb3JtVmFs
KTsKKyAgICAKKyAgICByZXR1cm4gbGlzdC5yZWxlYXNlKCk7Cit9CisgICAgCisgICAgCiBDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbihQYXNz
UmVmUHRyPE5vZGU+IG4pCiAgICAgOiBtX25vZGUobikKIHsKQEAgLTEwMDMsNiArMTA1OSwxMzMg
QEAKICAgICAgICAgICAgIHJldHVybiBnZXRCb3JkZXJSYWRpdXNDb3JuZXJWYWx1ZShzdHlsZS0+
Ym9yZGVyVG9wTGVmdFJhZGl1cygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
cmRlclRvcFJpZ2h0UmFkaXVzOgogICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nv
cm5lclZhbHVlKHN0eWxlLT5ib3JkZXJUb3BSaWdodFJhZGl1cygpKTsKKyAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybToKKyAgICAgICAgICAgIHJldHVybiBjb21wdXRlZFRy
YW5zZm9ybShyZW5kZXJlcik7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zv
cm1PcmlnaW5YOgorICAgICAgICAgICAgaWYgKHJlbmRlcmVyKSB7CisgICAgICAgICAgICAgICAg
SW50UmVjdCBib3ggPSBzaXppbmdCb3gocmVuZGVyZXIpOworICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKS5jYWxjTWlu
VmFsdWUoYm94LndpZHRoKCkpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1By
aW1pdGl2ZVZhbHVlKHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5YKCkpOyAgICAgICAgICAgIAorICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWToKKyAgICAgICAgICAg
IGlmIChyZW5kZXJlcikgeworICAgICAgICAgICAgICAgIEludFJlY3QgYm94ID0gc2l6aW5nQm94
KHJlbmRlcmVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENTU1ByaW1pdGl2ZVZhbHVl
KHN0eWxlLT50cmFuc2Zvcm1PcmlnaW5ZKCkuY2FsY01pblZhbHVlKGJveC5oZWlnaHQoKSksIENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPnRy
YW5zZm9ybU9yaWdpblkoKSk7ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlC
YWNrZ3JvdW5kOgogICAgICAgICBjYXNlIENTU1Byb3BlcnR5Qm9yZGVyOgogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5Qm9yZGVyQm90dG9tOgpAQCAtMTA2MCwxMCArMTI0Myw2IEBACiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRNYXJxdWVlU3BlZWQ6CiAgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlXZWJraXRQYWRkaW5nU3RhcnQ6CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0U3Ryb2tlOgotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtOgotICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luOgotICAgICAgICBjYXNl
IENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtT3JpZ2luWDoKLSAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblk6CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhlIGFi
b3ZlIGFyZSB1bmltcGxlbWVudGVkLgogICAgICAgICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFNW
RykKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1RyYW5zZm9ybVZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvQ1NTVHJhbnNmb3JtVmFsdWUuaAkocmV2aXNpb24gMzI5MTIpCisrKyBXZWJD
b3JlL2Nzcy9DU1NUcmFuc2Zvcm1WYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY1ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
Q09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NWYWx1ZUxp
c3QuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgQ1NTVHJhbnNmb3JtVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUKLXsKLXB1YmxpYzoKLSAg
ICBlbnVtIFRyYW5zZm9ybU9wZXJhdGlvblR5cGUgewotICAgICAgICBVbmtub3duVHJhbnNmb3Jt
T3BlcmF0aW9uLAotICAgICAgICBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbiwKLSAgICAgICAgU2Nh
bGVYVHJhbnNmb3JtT3BlcmF0aW9uLAotICAgICAgICBTY2FsZVlUcmFuc2Zvcm1PcGVyYXRpb24s
Ci0gICAgICAgIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiwKLSAgICAgICAgU2tld1RyYW5zZm9y
bU9wZXJhdGlvbiwKLSAgICAgICAgU2tld1hUcmFuc2Zvcm1PcGVyYXRpb24sCi0gICAgICAgIFNr
ZXdZVHJhbnNmb3JtT3BlcmF0aW9uLAotICAgICAgICBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRp
b24sCi0gICAgICAgIFRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb24sCi0gICAgICAgIFRyYW5z
bGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb24sCi0gICAgICAgIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlv
bgotICAgIH07Ci0KLSAgICBDU1NUcmFuc2Zvcm1WYWx1ZShUcmFuc2Zvcm1PcGVyYXRpb25UeXBl
KTsKLSAgICB2aXJ0dWFsIH5DU1NUcmFuc2Zvcm1WYWx1ZSgpOwotCi0gICAgdm9pZCBhZGRWYWx1
ZShDU1NWYWx1ZSopOwotICAgIAotICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsK
LSAKLSAgICBUcmFuc2Zvcm1PcGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5
cGU7IH0KLSAgICBDU1NWYWx1ZUxpc3QqIHZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVz
LmdldCgpOyB9Ci0gICAgCi1wcm90ZWN0ZWQ6Ci0gICAgVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSBt
X3R5cGU7Ci0gICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbV92YWx1ZXM7Ci19OwotCi19CkluZGV4
OiBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9XZWJLaXRDU1NNYXRyaXguaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL1dlYktpdENT
U01hdHJpeC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIFRoaXMgZmls
ZSBpcyBwYXJ0IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KKyAqCisgKiAoQykg
MTk5OS0yMDAzIExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAoQykgMjAwMi0yMDAzIERp
cmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDAyLCAyMDA2
IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViS2l0Q1NTTWF0cml4X2gKKyNkZWZpbmUg
V2ViS2l0Q1NTTWF0cml4X2gKKworI2luY2x1ZGUgIlN0eWxlQmFzZS5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtM0QuaCIKKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCitjbGFzcyBXZWJLaXRDU1NNYXRy
aXggOiBwdWJsaWMgU3R5bGVCYXNlIHsKK3B1YmxpYzoKKyAgICBXZWJLaXRDU1NNYXRyaXgoKTsK
KyAgICBXZWJLaXRDU1NNYXRyaXgoY29uc3QgV2ViS2l0Q1NTTWF0cml4JiBtKTsKKyAgICBXZWJL
aXRDU1NNYXRyaXgoY29uc3QgVHJhbnNmb3JtM0QmIG0pOworICAgIFdlYktpdENTU01hdHJpeChj
b25zdCBTdHJpbmcmIHMpOworICAgIHZpcnR1YWwgfldlYktpdENTU01hdHJpeCgpOworCisgICAg
ZmxvYXQgbTExKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXgubTExKCk7IH0KKyAgICBmbG9hdCBt
MTIoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMTIoKTsgfQorICAgIGZsb2F0IG0xMygpIGNv
bnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0xMygpOyB9CisgICAgZmxvYXQgbTE0KCkgY29uc3QgeyBy
ZXR1cm4gbV9tYXRyaXgubTE0KCk7IH0KKyAgICBmbG9hdCBtMjEoKSBjb25zdCB7IHJldHVybiBt
X21hdHJpeC5tMjEoKTsgfQorICAgIGZsb2F0IG0yMigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4
Lm0yMigpOyB9CisgICAgZmxvYXQgbTIzKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXgubTIzKCk7
IH0KKyAgICBmbG9hdCBtMjQoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMjQoKTsgfQorICAg
IGZsb2F0IG0zMSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0zMSgpOyB9CisgICAgZmxvYXQg
bTMyKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXgubTMyKCk7IH0KKyAgICBmbG9hdCBtMzMoKSBj
b25zdCB7IHJldHVybiBtX21hdHJpeC5tMzMoKTsgfQorICAgIGZsb2F0IG0zNCgpIGNvbnN0IHsg
cmV0dXJuIG1fbWF0cml4Lm0zNCgpOyB9CisgICAgZmxvYXQgbTQxKCkgY29uc3QgeyByZXR1cm4g
bV9tYXRyaXgubTQxKCk7IH0KKyAgICBmbG9hdCBtNDIoKSBjb25zdCB7IHJldHVybiBtX21hdHJp
eC5tNDIoKTsgfQorICAgIGZsb2F0IG00MygpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm00Mygp
OyB9CisgICAgZmxvYXQgbTQ0KCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXgubTQ0KCk7IH0KKyAg
ICAKKyAgICB2b2lkIHNldE0xMShmbG9hdCBmKSAgIHsgbV9tYXRyaXguc2V0TTExKGYpOyB9Cisg
ICAgdm9pZCBzZXRNMTIoZmxvYXQgZikgICB7IG1fbWF0cml4LnNldE0xMihmKTsgfQorICAgIHZv
aWQgc2V0TTEzKGZsb2F0IGYpICAgeyBtX21hdHJpeC5zZXRNMTMoZik7IH0KKyAgICB2b2lkIHNl
dE0xNChmbG9hdCBmKSAgIHsgbV9tYXRyaXguc2V0TTE0KGYpOyB9CisgICAgdm9pZCBzZXRNMjEo
ZmxvYXQgZikgICB7IG1fbWF0cml4LnNldE0yMShmKTsgfQorICAgIHZvaWQgc2V0TTIyKGZsb2F0
IGYpICAgeyBtX21hdHJpeC5zZXRNMjIoZik7IH0KKyAgICB2b2lkIHNldE0yMyhmbG9hdCBmKSAg
IHsgbV9tYXRyaXguc2V0TTIzKGYpOyB9CisgICAgdm9pZCBzZXRNMjQoZmxvYXQgZikgICB7IG1f
bWF0cml4LnNldE0yNChmKTsgfQorICAgIHZvaWQgc2V0TTMxKGZsb2F0IGYpICAgeyBtX21hdHJp
eC5zZXRNMzEoZik7IH0KKyAgICB2b2lkIHNldE0zMihmbG9hdCBmKSAgIHsgbV9tYXRyaXguc2V0
TTMyKGYpOyB9CisgICAgdm9pZCBzZXRNMzMoZmxvYXQgZikgICB7IG1fbWF0cml4LnNldE0zMyhm
KTsgfQorICAgIHZvaWQgc2V0TTM0KGZsb2F0IGYpICAgeyBtX21hdHJpeC5zZXRNMzQoZik7IH0K
KyAgICB2b2lkIHNldE00MShmbG9hdCBmKSAgIHsgbV9tYXRyaXguc2V0TTQxKGYpOyB9CisgICAg
dm9pZCBzZXRNNDIoZmxvYXQgZikgICB7IG1fbWF0cml4LnNldE00MihmKTsgfQorICAgIHZvaWQg
c2V0TTQzKGZsb2F0IGYpICAgeyBtX21hdHJpeC5zZXRNNDMoZik7IH0KKyAgICB2b2lkIHNldE00
NChmbG9hdCBmKSAgIHsgbV9tYXRyaXguc2V0TTQ0KGYpOyB9CisgCisgICAgdm9pZCAgICAgICAg
ICAgICAgICBzZXRNYXRyaXhWYWx1ZShjb25zdCBTdHJpbmcmIHN0cmluZyk7CisgICAgCisgICAg
Ly8gdGhpcyA9IHRoaXMgKiBzZWNvbmRNYXRyaXggKGkuZS4gbXVsdFJpZ2h0KQorICAgIFdlYktp
dENTU01hdHJpeCogICAgbXVsdGlwbHkoV2ViS2l0Q1NTTWF0cml4KiBzZWNvbmRNYXRyaXgpOwor
ICAgIAorICAgIC8vIEZJWE1FOiB3ZSByZWFsbHkgc2hvdWxkIGhhdmUgYW4gZXhjZXB0aW9uIGhl
cmUsIGZvciB3aGVuIG1hdHJpeCBpcyBub3QgaW52ZXJ0aWJsZQorICAgIFdlYktpdENTU01hdHJp
eCogICAgaW52ZXJzZSgpOworICAgIFdlYktpdENTU01hdHJpeCogICAgdHJhbnNsYXRlKGZsb2F0
IHgsIGZsb2F0IHksIGZsb2F0IHopOworICAgIFdlYktpdENTU01hdHJpeCogICAgc2NhbGUoZmxv
YXQgc2NhbGVYLCBmbG9hdCBzY2FsZVksIGZsb2F0IHNjYWxlWik7CisgICAgV2ViS2l0Q1NTTWF0
cml4KiAgICByb3RhdGUoZmxvYXQgcm90WiwgZmxvYXQgcm90WSwgZmxvYXQgcm90Wik7CisgICAg
V2ViS2l0Q1NTTWF0cml4KiAgICByb3RhdGVBeGlzQW5nbGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeiwgZmxvYXQgYW5nbGUpOworICAgIAorICAgIGNvbnN0IFRyYW5zZm9ybTNEJiAgICB0cmFu
c2Zvcm0oKSB7IHJldHVybiBtX21hdHJpeDsgfQorICAgIAorICAgIFN0cmluZyB0b1N0cmluZygp
OworICAgIAorcHJvdGVjdGVkOgorICAgIFRyYW5zZm9ybTNEIG1fbWF0cml4OworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gV2ViS2l0Q1NTTWF0cml4X2gKSW5kZXg6
IFdlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlX2gKKyNkZWZp
bmUgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWVfaAorCisjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0Lmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUg
OiBwdWJsaWMgQ1NTVmFsdWVMaXN0Cit7CitwdWJsaWM6CisgICAgZW51bSBUcmFuc2Zvcm1PcGVy
YXRpb25UeXBlIHsKKyAgICAgICAgVW5rbm93blRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAg
U2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAgICAgIFNjYWxlWFRyYW5zZm9ybU9wZXJhdGlv
biwKKyAgICAgICAgU2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBTY2FsZVpUcmFu
c2Zvcm1PcGVyYXRpb24sCisgICAgICAgIFNjYWxlM0RUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAg
ICAgIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAgUm90YXRlWFRyYW5zZm9ybU9w
ZXJhdGlvbiwKKyAgICAgICAgUm90YXRlWVRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAgUm90
YXRlWlRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAgUm90YXRlM0RUcmFuc2Zvcm1PcGVyYXRp
b24sCisgICAgICAgIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAgICAgIFNrZXdYVHJhbnNm
b3JtT3BlcmF0aW9uLAorICAgICAgICBTa2V3WVRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAg
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBUcmFuc2xhdGVYVHJhbnNmb3Jt
T3BlcmF0aW9uLAorICAgICAgICBUcmFuc2xhdGVZVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAg
ICBUcmFuc2xhdGVaVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBUcmFuc2xhdGUzRFRyYW5z
Zm9ybU9wZXJhdGlvbiwKKyAgICAgICAgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAg
ICBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbgorICAgIH07CisKKyAgICBXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZShUcmFuc2Zvcm1PcGVyYXRpb25UeXBlKTsKKyAgICB2aXJ0dWFsIH5XZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZSgpOworCisgICAgdmlydHVhbCBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0
OworIAorICAgIFRyYW5zZm9ybU9wZXJhdGlvblR5cGUgb3BlcmF0aW9uVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdHlwZTsgfQorICAgIAorcHJvdGVjdGVkOgorICAgIFRyYW5zZm9ybU9wZXJhdGlv
blR5cGUgbV90eXBlOworfTsKKworfQorCisjZW5kaWYgLy8gV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWVfaAorCkluZGV4OiBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
Cittb2R1bGUgY3NzIHsKKworICAgIC8vIEludHJvZHVjZWQgaW4gRE9NIExldmVsID86CisgICAg
aW50ZXJmYWNlIFsKKyAgICAgICAgSW50ZXJmYWNlVVVJRD0zNDljOTg5ZS04NzdmLTQxNmUtOWNj
ZS1jYTgxMWU1MmQ5ZTgsCisgICAgICAgIEltcGxlbWVudGF0aW9uVVVJRD01ZmViMTZlNi1mNDQx
LTRiNDYtOWIxMC05ZTgzM2E0ZGNkMWIKKyAgICBdIFdlYktpdENTU01hdHJpeCB7CisKKyAgICAg
ICAgYXR0cmlidXRlIGZsb2F0IG0xMTsKKyAgICAgICAgYXR0cmlidXRlIGZsb2F0IG0xMjsKKyAg
ICAgICAgYXR0cmlidXRlIGZsb2F0IG0xMzsKKyAgICAgICAgYXR0cmlidXRlIGZsb2F0IG0xNDsK
KyAgICAgICAgYXR0cmlidXRlIGZsb2F0IG0yMTsKKyAgICAgICAgYXR0cmlidXRlIGZsb2F0IG0y
MjsKKyAgICAgICAgYXR0cmlidXRlIGZsb2F0IG0yMzsKKyAgICAgICAgYXR0cmlidXRlIGZsb2F0
IG0yNDsKKyAgICAgICAgYXR0cmlidXRlIGZsb2F0IG0zMTsKKyAgICAgICAgYXR0cmlidXRlIGZs
b2F0IG0zMjsKKyAgICAgICAgYXR0cmlidXRlIGZsb2F0IG0zMzsKKyAgICAgICAgYXR0cmlidXRl
IGZsb2F0IG0zNDsKKyAgICAgICAgYXR0cmlidXRlIGZsb2F0IG00MTsKKyAgICAgICAgYXR0cmli
dXRlIGZsb2F0IG00MjsKKyAgICAgICAgYXR0cmlidXRlIGZsb2F0IG00MzsKKyAgICAgICAgYXR0
cmlidXRlIGZsb2F0IG00NDsKKworICAgICAgICB2b2lkICAgICAgICAgICAgc2V0TWF0cml4VmFs
dWUoaW4gRE9NU3RyaW5nIHN0cmluZyk7CisgICAgICAgIFdlYktpdENTU01hdHJpeCBtdWx0aXBs
eShpbiBXZWJLaXRDU1NNYXRyaXggc2Vjb25kTWF0cml4KSByYWlzZXMgQ1NTRXhjZXB0aW9uOwor
ICAgICAgICBXZWJLaXRDU1NNYXRyaXggaW52ZXJzZSgpIHJhaXNlcyBDU1NFeGNlcHRpb247Cisg
ICAgICAgIFdlYktpdENTU01hdHJpeCB0cmFuc2xhdGUoaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwg
aW4gZmxvYXQgeik7CisgICAgICAgIFdlYktpdENTU01hdHJpeCBzY2FsZShpbiBmbG9hdCBzY2Fs
ZVgsIGluIGZsb2F0IHNjYWxlWSwgaW4gZmxvYXQgc2NhbGVaKTsKKyAgICAgICAgV2ViS2l0Q1NT
TWF0cml4IHJvdGF0ZShpbiBmbG9hdCByb3RYLCBpbiBmbG9hdCByb3RZLCBpbiBmbG9hdCByb3Ra
KTsKKyAgICAgICAgV2ViS2l0Q1NTTWF0cml4IHJvdGF0ZUF4aXNBbmdsZShpbiBmbG9hdCB4LCBp
biBmbG9hdCB5LCBpbiBmbG9hdCB6LCBpbiBmbG9hdCBhbmdsZSk7CisgICAgICAgIAorICAgICAg
ICBET01TdHJpbmcgdG9TdHJpbmcoKTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2Nzcy9X
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMw
LAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworbW9kdWxlIGNzcyB7CisK
KyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yLAorICAgICAgICBI
YXNJbmRleEdldHRlcgorICAgICAgICBJbnRlcmZhY2VVVUlEPTMwM2ZlNjMyLTVkY2YtNDQ3Mi1i
OTc3LTMzYTU0ODFlMWQxMiwKKyAgICAgICAgSW1wbGVtZW50YXRpb25VVUlEPWViNDllNWM2LTYw
NzUtNDViOC1iNWM0LTdlNzc1YzAxZTdjNAorICAgIF0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUg
OiBDU1NWYWx1ZUxpc3QgeworCisgICAgICAgIC8vIE9wZXJhdGlvblR5cGVzCisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IENTU19VTktOT1dOX1RSQU5TRk9STSA9IDA7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IENTU19NQVRSSVggICAgICAgICAgICA9IDE7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IENTU19NQVRSSVgzRCAgICAgICAgICA9IDI7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IENTU19ST1RBVEUgICAgICAgICAgICA9IDM7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IENTU19ST1RBVEUzRCAgICAgICAgICA9IDQ7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IENTU19UUkFOU0xBVEUgICAgICAgICA9IDU7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IENTU19UUkFOU0xBVEUzRCAgICAgICA9IDY7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IENTU19TQ0FMRSAgICAgICAgICAgICA9IDc7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IENTU19TQ0FMRTNEICAgICAgICAgICA9IDg7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IENTU19TS0VXWCAgICAgICAgICAgICA9IDk7CisgICAgICAgIGNv
bnN0IHVuc2lnbmVkIHNob3J0IENTU19TS0VXWSAgICAgICAgICAgICA9IDEwOworICAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBDU1NfU0tFV1ogICAgICAgICAgICAgPSAxMTsKKyAgICAgICAg
Y29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1BFUlNQRUNUSVZFICAgICAgID0gMTI7CisgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19ST1RBVEVYICAgICAgICAgICA9IDEzOworICAgICAg
ICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDU1NfUk9UQVRFWSAgICAgICAgICAgPSAxNDsKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1JPVEFURVogICAgICAgICAgID0gMTU7CisgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19UUkFOU0xBVEVYICAgICAgICA9IDE2OworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDU1NfVFJBTlNMQVRFWSAgICAgICAgPSAxNzsKKyAg
ICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1RSQU5TTEFURVogICAgICAgID0gMTg7Cisg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19TQ0FMRVggICAgICAgICAgICA9IDE5Owor
ICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDU1NfU0NBTEVZICAgICAgICAgICAgPSAyMDsK
KyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1NDQUxFWiAgICAgICAgICAgID0gMjE7
CisKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IG9wZXJhdGlvblR5
cGU7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNTggQEAKKy8qKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1l
bnRhdGlvbiBmb3IgS0RFLgorICoKKyAqIChDKSAxOTk5LTIwMDMgTGFycyBLbm9sbCAoa25vbGxA
a2RlLm9yZykKKyAqIChDKSAyMDAyLTIwMDMgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcp
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisg
KiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm
b3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGgg
dGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRv
CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAi
Q1NTU3R5bGVTZWxlY3Rvci5oIgorI2luY2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxl
LmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NTTWF0cml4LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworV2ViS2l0Q1NTTWF0cml4OjpXZWJLaXRDU1NNYXRyaXgoKSA6IFN0eWxlQmFzZSgwKQorewor
fQorCitXZWJLaXRDU1NNYXRyaXg6OldlYktpdENTU01hdHJpeChjb25zdCBXZWJLaXRDU1NNYXRy
aXgmIG0pIDogU3R5bGVCYXNlKDApCit7CisgICAgbV9tYXRyaXggPSBtLm1fbWF0cml4OworfQor
CitXZWJLaXRDU1NNYXRyaXg6OldlYktpdENTU01hdHJpeChjb25zdCBUcmFuc2Zvcm0zRCYgbSkg
OiBTdHlsZUJhc2UoMCkKK3sKKyAgICBtX21hdHJpeCA9IG07Cit9CisKK1dlYktpdENTU01hdHJp
eDo6V2ViS2l0Q1NTTWF0cml4KGNvbnN0IFN0cmluZyYgcykgOiBTdHlsZUJhc2UoMCkKK3sKKyAg
ICBzZXRNYXRyaXhWYWx1ZShzKTsKK30KKworV2ViS2l0Q1NTTWF0cml4Ojp+V2ViS2l0Q1NTTWF0
cml4KCkKK3sKK30KKwordm9pZCBXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQoreworICAgIENTU1BhcnNlciBwKHVzZVN0cmljdFBhcnNpbmcoKSk7
CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZURlY2xhcmF0aW9u
ID0gbmV3IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOworICAgIGlmIChwLnBhcnNlVmFsdWUo
c3R5bGVEZWNsYXJhdGlvbi5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIHN0cmlu
ZywgdHJ1ZSkpIHsKKyAgICAgICAgLy8gY29udmVydCB0byBUcmFuc2Zvcm1PcGVyYXRpb25zLiBU
aGlzIGNhbiBmYWlsIGlmIGEgcHJvcGVydHkgCisgICAgICAgIC8vIHJlcXVpcmVzIHN0eWxlIChp
LmUuLCBwYXJhbSB1c2VzICdlbXMnIG9yICdleHMnKQorICAgICAgICBQYXNzUmVmUHRyPENTU1Zh
bHVlPiB2YWwgPSAgc3R5bGVEZWNsYXJhdGlvbi0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0
aW9uczsKKyAgICAgICAgaWYgKCFDU1NTdHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcGVy
YXRpb25zKHZhbC5nZXQoKSwgMCwgb3BlcmF0aW9ucykpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIAorICAgICAgICAvLyBjb252ZXJ0IHRyYW5zZm9ybSBvcGVyYXRpb25zIHRvIGEgVHJh
bnNmb3JtM0QuIFRoaXMgY2FuIGZhaWwKKyAgICAgICAgLy8gaWYgYSBwYXJhbSBoYXMgYSBwZXJj
ZW50YWdlICgnJScpCisgICAgICAgIFRyYW5zZm9ybTNEIHQ7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBvcGVyYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAo
b3BlcmF0aW9uc1tpXS5nZXQoKS0+YXBwbHkodCwgSW50U2l6ZSgwLCAwKSkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBzZXQgdGhlIG1h
dHJpeAorICAgICAgICBtX21hdHJpeCA9IHQ7CisgICAgfQorfQorCisvLyB0aGlzIGlzIGEgbXVs
dFJpZ2h0ICh0aGlzID0gdGhpcyAqIHNlY29uZE1hdHJpeCkKK1dlYktpdENTU01hdHJpeCogV2Vi
S2l0Q1NTTWF0cml4OjptdWx0aXBseShXZWJLaXRDU1NNYXRyaXgqIHNlY29uZE1hdHJpeCkKK3sK
KyAgICBUcmFuc2Zvcm0zRCB0bXAoc2Vjb25kTWF0cml4LT5tX21hdHJpeCk7CisgICAgdG1wLm11
bHRMZWZ0KG1fbWF0cml4KTsKKyAgICByZXR1cm4gbmV3IFdlYktpdENTU01hdHJpeCh0bXApOwor
fQorCitXZWJLaXRDU1NNYXRyaXgqIFdlYktpdENTU01hdHJpeDo6aW52ZXJzZSgpCit7CisgICAg
cmV0dXJuIG5ldyBXZWJLaXRDU1NNYXRyaXgobV9tYXRyaXguaW52ZXJzZSgpKTsKK30KKworV2Vi
S2l0Q1NTTWF0cml4KiBXZWJLaXRDU1NNYXRyaXg6OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5
LCBmbG9hdCB6KQoreworICAgIGlmIChpc25hbih4KSkgeCA9IDA7IAorICAgIGlmIChpc25hbih5
KSkgeSA9IDA7IAorICAgIGlmIChpc25hbih6KSkgeiA9IDA7IAorICAgIHJldHVybiBuZXcgV2Vi
S2l0Q1NTTWF0cml4KFRyYW5zZm9ybTNEKG1fbWF0cml4KS50cmFuc2xhdGUzZCh4LCB5LCB6KSk7
Cit9CisKK1dlYktpdENTU01hdHJpeCogV2ViS2l0Q1NTTWF0cml4OjpzY2FsZShmbG9hdCBzY2Fs
ZVgsIGZsb2F0IHNjYWxlWSwgZmxvYXQgc2NhbGVaKQoreworICAgIGlmIChpc25hbihzY2FsZVgp
KSBzY2FsZVggPSAxOyAKKyAgICBpZiAoaXNuYW4oc2NhbGVZKSkgc2NhbGVZID0gc2NhbGVYOyAK
KyAgICBpZiAoaXNuYW4oc2NhbGVaKSkgc2NhbGVaID0gMTsgCisgICAgcmV0dXJuIG5ldyBXZWJL
aXRDU1NNYXRyaXgoVHJhbnNmb3JtM0QobV9tYXRyaXgpLnNjYWxlM2Qoc2NhbGVYLCBzY2FsZVks
IHNjYWxlWikpOworfQorCitXZWJLaXRDU1NNYXRyaXgqIFdlYktpdENTU01hdHJpeDo6cm90YXRl
KGZsb2F0IHJvdFgsIGZsb2F0IHJvdFksIGZsb2F0IHJvdFopCit7CisgICAgLy8gaWYgb25seSB0
aGUgZmlyc3QgdmFsdWUgaXMgZ2l2ZW4sIGNvbnNpZGVyIGl0IGFzIHJvdFoKKyAgICBpZiAoaXNu
YW4ocm90WSkgJiYgaXNuYW4ocm90WikpIHsKKyAgICAgICAgcm90WCA9IDA7CisgICAgICAgIHJv
dFkgPSAwOworICAgICAgICByb3RaID0gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNuYW4ocm90
WCkpIHJvdFggPSAwOyAKKyAgICBpZiAoaXNuYW4ocm90WSkpIHJvdFkgPSAwOyAKKyAgICBpZiAo
aXNuYW4ocm90WikpIHJvdFogPSAwOyAKKyAgICByZXR1cm4gbmV3IFdlYktpdENTU01hdHJpeChU
cmFuc2Zvcm0zRChtX21hdHJpeCkucm90YXRlM2Qocm90WCwgcm90WSwgcm90WikpOworfQorCitX
ZWJLaXRDU1NNYXRyaXgqIFdlYktpdENTU01hdHJpeDo6cm90YXRlQXhpc0FuZ2xlKGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IGFuZ2xlKQoreworICAgIGlmIChpc25hbih4KSkgeCA9
IDA7IAorICAgIGlmIChpc25hbih5KSkgeSA9IDA7IAorICAgIGlmIChpc25hbih6KSkgeiA9IDA7
CisgICAgaWYgKGlzbmFuKGFuZ2xlKSkgYW5nbGUgPSAwOworICAgIGlmICh4ID09IDAgJiYgeSA9
PSAwICYmIHogPT0gMCkKKyAgICAgICAgeiA9IDE7CisgICAgcmV0dXJuIG5ldyBXZWJLaXRDU1NN
YXRyaXgoVHJhbnNmb3JtM0QobV9tYXRyaXgpLnJvdGF0ZTNkKHgsIHksIHosIGFuZ2xlKSk7Cit9
CisKK1N0cmluZyBXZWJLaXRDU1NNYXRyaXg6OnRvU3RyaW5nKCkKK3sKKyAgICAvLyBUZW1wb3Jh
cmlseSByZXR1cm4gYW4gYWZmaW5lIHZlcnNpb24gd2hpbGUgcGFyc2luZyBmb3IgM0QgaXMKKyAg
ICAvLyBkaXNhYmxlZC4gVGhpcyBpcyBvYnZpb3VzbHkgbG9zc3kuIFdoaWxlIHRoZSBjb250ZW50
IGNhbm5vdAorICAgIC8vIHNwZWNpZnkgM0QgdmlhIENTUywgdGhlIDNkIGZ1bmN0aW9ucyBhcmUg
c3RpbGwgYXZhaWxhYmxlIG9uCisgICAgLy8gdGhpcyBpbnRlcmZhY2UuCisgICAgCisgICAgQWZm
aW5lVHJhbnNmb3JtIGFmZmluZSA9IG1fbWF0cml4LmFmZmluZVRyYW5zZm9ybSgpOworICAgIHJl
dHVybiBTdHJpbmc6OmZvcm1hdCgibWF0cml4KCVmLCAlZiwgJWYsICVmLCAlZiwgJWYpIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgYWZmaW5lLmEoKSwgYWZmaW5lLmIoKSwgYWZmaW5lLmMo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWZmaW5lLmQoKSwgYWZmaW5lLmUoKSwgYWZm
aW5lLmYoKSk7CisKKyAgICAvKgorICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgibWF0cml4M2Qo
JWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAl
ZiwgJWYpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tMTEoKSwgbV9t
YXRyaXgubTEyKCksIG1fbWF0cml4Lm0xMygpLCBtX21hdHJpeC5tMTQoKSwgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9tYXRyaXgubTIxKCksIG1fbWF0cml4Lm0yMigpLCBtX21hdHJp
eC5tMjMoKSwgbV9tYXRyaXgubTI0KCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
bWF0cml4Lm0zMSgpLCBtX21hdHJpeC5tMzIoKSwgbV9tYXRyaXgubTMzKCksIG1fbWF0cml4Lm0z
NCgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tNDEoKSwgbV9tYXRy
aXgubTQyKCksIG1fbWF0cml4Lm00MygpLCBtX21hdHJpeC5tNDQoKSk7CisgICAgICovCit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgiCisj
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZTo6V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUoVHJhbnNmb3JtT3Bl
cmF0aW9uVHlwZSBvcCkKKzogbV90eXBlKG9wKQore30KKworV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWU6On5XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSgpCit7fQorCitTdHJpbmcgV2ViS2l0Q1NTVHJh
bnNmb3JtVmFsdWU6OmNzc1RleHQoKSBjb25zdAoreworICAgIFN0cmluZyByZXN1bHQ7CisgICAg
c3dpdGNoKG1fdHlwZSkgeworICAgICAgICBjYXNlIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOgor
ICAgICAgICAgICAgcmVzdWx0ICs9ICJzY2FsZSgiOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgU2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9
ICJzY2FsZVgoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNjYWxlWVRyYW5z
Zm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAic2NhbGVZKCI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTY2FsZVpUcmFuc2Zvcm1PcGVyYXRpb246CisgICAg
ICAgICAgICByZXN1bHQgKz0gInNjYWxlWigiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGNhc2UgU2NhbGUzRFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAi
c2NhbGUzZCgiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUm90YXRlVHJhbnNm
b3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJyb3RhdGUoIjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFJvdGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb246CisgICAg
ICAgICAgICByZXN1bHQgKz0gInJvdGF0ZVgoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIFJvdGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0g
InJvdGF0ZVkoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJvdGF0ZVpUcmFu
c2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0gInJvdGF0ZVooIjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJvdGF0ZTNEVHJhbnNmb3JtT3BlcmF0aW9uOgor
ICAgICAgICAgICAgcmVzdWx0ICs9ICJyb3RhdGUzZCgiOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGNhc2UgU2tld1RyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCAr
PSAic2tldygiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU2tld1hUcmFuc2Zv
cm1PcGVyYXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0gInNrZXdYKCI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBTa2V3WVRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAg
ICAgIHJlc3VsdCArPSAic2tld1koIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAidHJh
bnNsYXRlKCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2xhdGVYVHJh
bnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJ0cmFuc2xhdGVYKCI7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2xhdGVZVHJhbnNmb3JtT3BlcmF0
aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJ0cmFuc2xhdGVZKCI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBUcmFuc2xhdGVaVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAg
ICAgICAgcmVzdWx0ICs9ICJ0cmFuc2xhdGVaKCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBUcmFuc2xhdGUzRFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3Vs
dCArPSAidHJhbnNsYXRlM2QoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1h
dHJpeFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAibWF0cml4KCI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNYXRyaXgzRFRyYW5zZm9ybU9wZXJh
dGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAibWF0cml4M2QoIjsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIAor
ICAgIHJlc3VsdCArPSBDU1NWYWx1ZUxpc3Q6OmNzc1RleHQoKTsKKyAgICAKKyAgICByZXN1bHQg
Kz0gIikiOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30K
</data>
<flag name="review"
          id="9256"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21189</attachid>
            <date>2008-05-15 17:35:34 -0700</date>
            <delta_ts>2008-05-19 14:11:12 -0700</delta_ts>
            <desc>adds the new files to non-OSX platforms</desc>
            <filename>transforms-platforms.patch</filename>
            <type>text/plain</type>
            <size>7568</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQkocmV2aXNpb24gMzI5MTIpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC0zMzIsNiArMzMyLDEyIEBACiAJRGVyaXZlZFNvdXJjZXMvSlNUZXh0
RXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KU1RyZWVXYWxrZXIuY3BwIFwKIAlEZXJpdmVk
U291cmNlcy9KU1VJRXZlbnQuY3BwIFwKKwlEZXJpdmVkU291cmNlcy9KU1dlYktpdENTU01hdHJp
eC5jcHAgXAorCURlcml2ZWRTb3VyY2VzL0pTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIFwK
IAlEZXJpdmVkU291cmNlcy9KU1doZWVsRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KU1hN
TEh0dHBSZXF1ZXN0LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvSlNYTUxIdHRwUmVxdWVzdEV4Y2Vw
dGlvbi5jcHAgXApAQCAtNTg3LDcgKzU5Myw2IEBACiAJV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAgXAogCVdlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwIFwKIAlXZWJDb3JlL2Nz
cy9DU1NUaW1pbmdGdW5jdGlvblZhbHVlLmNwcCBcCi0JV2ViQ29yZS9jc3MvQ1NTVHJhbnNmb3Jt
VmFsdWUuY3BwIFwKIAlXZWJDb3JlL2Nzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAgXAogCVdl
YkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAgXAogCVdlYkNvcmUvY3NzL0ZvbnRGYW1pbHlWYWx1
ZS5jcHAgXApAQCAtNjAyLDYgKzYwNywxMCBAQAogCVdlYkNvcmUvY3NzL1N0eWxlTGlzdC5jcHAg
XAogCVdlYkNvcmUvY3NzL1N0eWxlU2hlZXQuY3BwIFwKIAlXZWJDb3JlL2Nzcy9TdHlsZVNoZWV0
TGlzdC5jcHAgXAorCVdlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5jcHAgXAorCVdlYkNvcmUv
Y3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCBcCiAJV2ViQ29yZS9kb20vQXR0ci5jcHAg
XAogCVdlYkNvcmUvZG9tL0F0dHJpYnV0ZS5jcHAgXAogCVdlYkNvcmUvZG9tL0JlZm9yZVRleHRJ
bnNlcnRlZEV2ZW50LmNwcCBcCkBAIC04NzcsNyArODg4LDcgQEAKIAlXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0Zsb2F0UG9pbnQuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zs
b2F0UmVjdC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNwcCBc
Ci0gICAgICAgIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuY3BwIFwK
KwlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmNwcCBcCiAJV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzLmNwcCBcCkBAIC04ODYsNiArODk3LDcgQEAKIAlXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1BhdGguY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGhUcmF2
ZXJzYWxTdGF0ZS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvUGVuLmNwcCBcCisJ
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFuc2Zvcm0zRC5jcHAgXAogCVdlYkNvcmUvcGxh
dGZvcm0vS1VSTC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vTG9nZ2luZy5jcHAgXAogCVdlYkNv
cmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgXApJbmRleDogV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQko
cmV2aXNpb24gMzI5MTIpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcg
Y29weSkKQEAgLTMzNyw2ICszMzcsMTIgQEAKICAgICBUcmVlV2Fsa2VyIFwKICAgICBVSUV2ZW50
IFwKICAgICBWb2lkQ2FsbGJhY2sgXAorICAgIFdlYktpdENTU01hdHJpeCBcCisgICAgV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUgXAogICAgIFdoZWVsRXZlbnQgXAogICAgIFhNTEh0dHBSZXF1ZXN0
IFwKICAgICBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbiBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
cHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDMyOTEyKQor
KysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjk4LDYgKzI5OCwxMCBA
QAogICAgIGNzcy9SZWN0LmlkbCBcCiAgICAgY3NzL1N0eWxlU2hlZXQuaWRsIFwKICAgICBjc3Mv
U3R5bGVTaGVldExpc3QuaWRsIFwKKyAgICBjc3MvV2ViS2l0Q1NTTWF0cml4LmlkbCBcCisgICAg
Y3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCBcCiAgICAgZG9tL0F0dHIuaWRsIFwKICAg
ICBkb20vQ2hhcmFjdGVyRGF0YS5pZGwgXAogICAgIGRvbS9DbGlwYm9hcmQuaWRsIFwKQEAgLTUy
OSw3ICs1MzUsNiBAQAogICAgIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBcCiAgICAgY3NzL0NT
U1N0eWxlU2hlZXQuY3BwIFwKICAgICBjc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgXAot
ICAgIGNzcy9DU1NUcmFuc2Zvcm1WYWx1ZS5jcHAgXAogICAgIGNzcy9DU1NVbmljb2RlUmFuZ2VW
YWx1ZS5jcHAgXAogICAgIGNzcy9DU1NWYWx1ZUxpc3QuY3BwIFwKICAgICBjc3MvRm9udEZhbWls
eVZhbHVlLmNwcCBcCkBAIC01NDQsNiArNTQ5LDEwIEBACiAgICAgY3NzL1N0eWxlTGlzdC5jcHAg
XAogICAgIGNzcy9TdHlsZVNoZWV0LmNwcCBcCiAgICAgY3NzL1N0eWxlU2hlZXRMaXN0LmNwcCBc
CisgICAgY3NzL1dlYktpdENTU01hdHJpeC5jcHAgXAorICAgIGNzcy9XZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZS5jcHAgXAogICAgIGRvbS9BdHRyLmNwcCBcCiAgICAgZG9tL0F0dHJpYnV0ZS5jcHAg
XAogICAgIGRvbS9CZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAgXApAQCAtODM1LDYgKzg0Niw3
IEBACiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvUGF0aFRyYXZlcnNhbFN0YXRlLmNwcCBcCiAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvUGVuLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVu
dGVkRm9udERhdGEuY3BwIFwKKyAgICBwbGF0Zm9ybS9ncmFwaGljcy9UcmFuc2Zvcm0zRC5jcHAg
XAogICAgIHBsYXRmb3JtL0tVUkwuY3BwIFwKICAgICBwbGF0Zm9ybS9Mb2dnaW5nLmNwcCBcCiAg
ICAgcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAzMjkxMikKKysrIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2OTQsNiArMTY5NCw1NCBA
QAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktp
dE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTV2ViS2l0Q1NT
TWF0cml4LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U1dlYktpdENTU01hdHJpeC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVs
YXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRw
dXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1NWR0FFbGVtZW50LmNw
cCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC00OTY3LDYgKzUwMTUsMTQgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXFRyYW5zZm9ybTNELmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBoaWNzXFRyYW5zZm9ybTNELmgiCisJCQkJ
CT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxncmFwaGljc1xVbml0QmV6aWVyLmgiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC04MjIxLDcg
KzgyNzcsNyBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRo
PSIuLlxjc3NcQ1NTVHJhbnNmb3JtVmFsdWUuY3BwIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3Nz
XFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCIKIAkJCQk+CiAJCQkJPEZpbGVDb25maWd1cmF0
aW9uCiAJCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdpbjMyIgpAQCAtODIzMyw3ICs4Mjg5LDcgQEAK
IAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGNzc1xDU1NUcmFuc2Zvcm1WYWx1ZS5oIgorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cY3NzXFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKQEAgLTg0OTMsNiArODU0OSw1NCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxl
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcV2ViS2l0Q1NTTWF0cml4LmNwcCIKKwkJCQk+CisJ
CQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdpbjMyIgorCQkJ
CQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJV2hv
bGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3Vy
YXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFdl
YktpdENTU01hdHJpeC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxjc3NcV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcCIKKwkJCQk+CisJCQkJPEZp
bGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdpbjMyIgorCQkJCQk+CisJ
CQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJV2hvbGVQcm9n
cmFtT3B0aW1pemF0aW9uPSJ0cnVlIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+
CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFNWR0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAiCiAJCQkJPgogCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgpAQCAtMTM1NTgsNiArMTM2OTQsMzAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTV2ViS2l0Q1NTTWF0cml4Q3Vz
dG9tLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGJpbmRpbmdzXGpzXEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWVDdXN0b20uY3BwIgor
CQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNTVkdFbGVtZW50V3JhcHBlckZhY3RvcnkuY3BwIgogCQkJCQk+CiAJCQkJPC9G
aWxlPgpJbmRleDogV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDMyOTEyKQorKysgV2ViQ29yZS9XZWJD
b3JlU291cmNlcy5ia2wJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNiBAQAogICAgICAg
ICBjc3MvQ1NTU3R5bGVSdWxlLmNwcAogICAgICAgICBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
ICAgICAgICAgY3NzL0NTU1N0eWxlU2hlZXQuY3BwCi0gICAgICAgIGNzcy9DU1NUcmFuc2Zvcm1W
YWx1ZS5jcHAKICAgICAgICAgY3NzL0NTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwCiAgICAgICAg
IGNzcy9DU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAKICAgICAgICAgY3NzL0NTU1ZhbHVlTGlzdC5j
cHAKQEAgLTE3Myw2ICsxNzIsMTAgQEAKICAgICAgICAgY3NzL1N0eWxlTGlzdC5jcHAKICAgICAg
ICAgY3NzL1N0eWxlU2hlZXQuY3BwCiAgICAgICAgIGNzcy9TdHlsZVNoZWV0TGlzdC5jcHAKKyAg
ICAgICAgY3NzL1dlYktpdENTU01hdHJpeC5jcHAKKyAgICAgICAgY3NzL1dlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLmNwcAogICAgIDwvc2V0PgogCiAgICAgPHNldCBhcHBlbmQ9IjEiIHZhcj0iV0VC
Q09SRV9TT1VSQ0VTX0RFUklWRURTT1VSQ0VTIj4KQEAgLTMxNyw2ICszMjAsMTIgQEAKICAgICAg
ICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1RleHRFdmVudC5jcHAKICAgICAgICAgRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1RyZWVXYWxrZXIuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNVSUV2ZW50LmNwcAorICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
V2ViS2l0Q1NTTWF0cml4Q3VzdG9tLmNwcAorICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWVDdXN0b20uY3BwCiAgICAgICAgIERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNXaGVlbEV2ZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTWE1MSHR0cFJlcXVlc3QuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5jcHAKQEAgLTYzOSw2ICs2NTAsNyBAQAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9HbHlwaFdpZHRoTWFwLmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
U2ltcGxlRm9udERhdGEuY3BwCisgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RyYW5zZm9ybTNE
LmNwcAogICAgICAgICBwbGF0Zm9ybS9LVVJMLmNwcAogICAgICAgICBwbGF0Zm9ybS9Mb2dnaW5n
LmNwcAogICAgICAgICBwbGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21234</attachid>
            <date>2008-05-19 14:01:03 -0700</date>
            <delta_ts>2008-05-19 16:21:58 -0700</delta_ts>
            <desc>Transforms patch with all platforms</desc>
            <filename>transforms.patch</filename>
            <type>text/plain</type>
            <size>140843</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCA0YTM4ZDkyLi5iMTJmZDIxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0zMzcsNiArMzM3LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgVHJlZVdhbGtlciBcCiAgICAg
VUlFdmVudCBcCiAgICAgVm9pZENhbGxiYWNrIFwKKyAgICBXZWJLaXRDU1NNYXRyaXggXAorICAg
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlIFwKICAgICBXaGVlbEV2ZW50IFwKICAgICBYTUxIdHRw
UmVxdWVzdCBcCiAgICAgWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24gXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNjFhNzZh
ZS4uNDA1MjY0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zMzYsNiArMzM2LDggQEAgd2ViY29yZV9idWlsdF9zb3Vy
Y2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KU1RleHRFdmVudC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL0pTVHJlZVdhbGtlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0pTVUlFdmVudC5jcHAgXAor
CURlcml2ZWRTb3VyY2VzL0pTV2ViS2l0Q1NTTWF0cml4LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMv
SlNXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0pTV2hlZWxF
dmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0pTWE1MSHR0cFJlcXVlc3QuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9KU1hNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmNwcCBcCkBAIC0zNjIsNiArMzY0
LDggQEAgSURMX0JJTkRJTkdTICs9ICBcCiAJV2ViQ29yZS9jc3MvUmVjdC5pZGwgXAogCVdlYkNv
cmUvY3NzL1N0eWxlU2hlZXQuaWRsIFwKIAlXZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5pZGwg
XAorCVdlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwgXAorCVdlYkNvcmUvY3NzL1dlYktp
dENTU1RyYW5zZm9ybVZhbHVlLmlkbCBcCiAJV2ViQ29yZS9kb20vQXR0ci5pZGwgXAogCVdlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuaWRsIFwKIAlXZWJDb3JlL2RvbS9DbGlwYm9hcmQuaWRsIFwK
QEAgLTUzOSw2ICs1NDMsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxr
ZXJDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTTWF0cml4Q29u
dHJ1Y3Rvci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9y
LmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwIFwK
QEAgLTU5Myw3ICs1OTgsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwIFwKIAlXZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBcCiAJ
V2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgXAotCVdlYkNvcmUvY3NzL0NT
U1RyYW5zZm9ybVZhbHVlLmNwcCBcCiAJV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUu
Y3BwIFwKIAlXZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwIFwKIAlXZWJDb3JlL2Nzcy9Gb250
RmFtaWx5VmFsdWUuY3BwIFwKQEAgLTYwOCw2ICs2MTIsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVdlYkNvcmUvY3NzL1N0eWxlTGlzdC5jcHAgXAogCVdlYkNvcmUvY3NzL1N0eWxlU2hlZXQu
Y3BwIFwKIAlXZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAgXAorCVdlYkNvcmUvY3NzL1dl
YktpdENTU01hdHJpeC5jcHAgXAorCVdlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVl
LmNwcCBcCiAJV2ViQ29yZS9kb20vQXR0ci5jcHAgXAogCVdlYkNvcmUvZG9tL0F0dHJpYnV0ZS5j
cHAgXAogCVdlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcCBcCkBAIC04ODks
NyArODk1LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UG9pbnQuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVj
dC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNwcCBcCi0gICAg
ICAgIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuY3BwIFwKKwlXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmNwcCBcCiAJV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzLmNwcCBcCkBAIC04OTgsNiArOTA0LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGVuLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFuc2Zvcm0zRC5jcHAg
XAogCVdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vTG9nZ2lu
Zy5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNzQ3
MDI0OC4uNGFiYWY3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC0yMzgsNiArMjM4LDggQEAgSURMX0JJTkRJTkdTICs9IFwKICAg
ICBjc3MvUmVjdC5pZGwgXAogICAgIGNzcy9TdHlsZVNoZWV0LmlkbCBcCiAgICAgY3NzL1N0eWxl
U2hlZXRMaXN0LmlkbCBcCisgICAgY3NzL1dlYktpdENTU01hdHJpeC5pZGwgXAorICAgIGNzcy9X
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGwgXAogICAgIGRvbS9BdHRyLmlkbCBcCiAgICAgZG9t
L0NoYXJhY3RlckRhdGEuaWRsIFwKICAgICBkb20vQ2xpcGJvYXJkLmlkbCBcCkBAIC00MTQsNiAr
NDE2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9t
LmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgXAogICAg
IGJpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAgXAorICAgIGJpbmRpbmdzL2pzL0pT
V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0
dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1
ZXN0Q3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0
b3IuY3BwIFwKQEAgLTQ3MSw3ICs0NzQsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAgXAogICAgIGNzcy9DU1NTdHlsZVNoZWV0LmNwcCBcCiAgICAgY3NzL0NT
U1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwIFwKLSAgICBjc3MvQ1NTVHJhbnNmb3JtVmFsdWUuY3Bw
IFwKICAgICBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwIFwKICAgICBjc3MvQ1NTVmFsdWVM
aXN0LmNwcCBcCiAgICAgY3NzL0ZvbnRGYW1pbHlWYWx1ZS5jcHAgXApAQCAtNDg2LDYgKzQ4OCw4
IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9TdHlsZUxpc3QuY3BwIFwKICAgICBjc3MvU3R5bGVT
aGVldC5jcHAgXAogICAgIGNzcy9TdHlsZVNoZWV0TGlzdC5jcHAgXAorICAgIGNzcy9XZWJLaXRD
U1NNYXRyaXguY3BwIFwKKyAgICBjc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIFwKICAg
ICBkb20vQXR0ci5jcHAgXAogICAgIGRvbS9BdHRyaWJ1dGUuY3BwIFwKICAgICBkb20vQmVmb3Jl
VGV4dEluc2VydGVkRXZlbnQuY3BwIFwKQEAgLTc4Myw2ICs3ODcsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QZW4uY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRG
b250RGF0YS5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RyYW5zZm9ybTNELmNwcCBcCiAg
ICAgcGxhdGZvcm0vS1VSTC5jcHAgXAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwIFwKICAgICBw
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCA0OWUzZGRmLi5mMzNkMmI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTI4MDgsNiArMjgwOCwyMiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTV2ViS2l0Q1NTTWF0cml4LmNwcCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNXZWJLaXRDU1NNYXRyaXgu
aCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGly
KVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNXaGVlbEV2ZW50LmNwcCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCkBAIC01MDczLDYgKzUwODksMTQgQEAKIAkJCQkJPg0KIAkJCQk8
L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXFRyYW5zZm9ybTNELmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0K
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xUcmFuc2Zvcm0zRC5oIg0K
KwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXFVuaXRCZXppZXIuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
QEAgLTg0NTQsMjIgKzg0NzgsNiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0J
CQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTVHJhbnNmb3JtVmFsdWUuY3BwIg0KLQkJCQk+DQot
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZV9QR098V2luMzIiDQot
CQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJ
CQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRo
PSIuLlxjc3NcQ1NTVHJhbnNmb3JtVmFsdWUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8
RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAi
DQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtODc2Miw2ICs4NzcwLDQyIEBA
CiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxjc3NcV2ViS2l0Q1NTTWF0cml4LmNwcCINCisJCQkJPg0KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdpbjMyIg0KKwkJCQkJ
Pg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCVdo
b2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1ZSINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Y3NzXFdlYktpdENTU01hdHJpeC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXHRva2VuaXplci5mbGV4Ig0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5h
bWU9IlJlbGVhc2VfUEdPfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1
ZSINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIu
Llxjc3NcdG9rZW5pemVyLmZsZXgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTM4NjMsNiAr
MTM5MDcsMTQgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3Bw
Ig0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGJpbmRpbmdzXGpzXEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuaCINCisJCQkJCT4N
CisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5n
c1xqc1xKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0Zp
bGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMWQ2
NjU5Li5lZjI2MDI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMzg1LDYgKzM4NSwyNiBAQAogCQkyOTk5ODZBMTBERDBERUVBMDBGOEQyNjEgLyogQWNj
ZXNzaWJpbGl0eUxpc3RCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjk5OTg2OUQwREQwREVFQTAwRjhEMjYxIC8qIEFjY2Vzc2liaWxpdHlMaXN0
Qm94LmNwcCAqLzsgfTsKIAkJMkQ5MDY2MDYwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOTA2
NjA0MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5jcHAgKi87IH07CiAJCTJEOTA2NjA3
MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5MDY2MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91
dFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMzE2Q0M3N0MwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENTU01hdHJpeC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZDQzc3NjBEREU0N0Ew
MDA4ODk5RTIgLyogV2ViS2l0Q1NTTWF0cml4LmNwcCAqLzsgfTsKKwkJMzE2Q0M3N0QwRERFNDdB
MDAwODg5OUUyIC8qIFdlYktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2Q0M3NzcwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENT
U01hdHJpeC5oICovOyB9OworCQkzMTZDQzc3RTBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NT
TWF0cml4LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE2Q0M3NzgwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENTU01hdHJpeC5pZGwgKi87IH07
CisJCTMxNkNDNzdGMERERTQ3QTAwMDg4OTlFMiAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZDQzc3
OTBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwICovOyB9Owor
CQkzMTZDQzc4MDBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkNDNzdBMERE
RTQ3QTAwMDg4OTlFMiAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oICovOyB9OworCQkzMTZD
Qzc4MTBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZDQzc3QjBEREU0
N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsICovOyB9OworCQkzMTZD
Qzc4NzBEREU0QUMyMDA4ODk5RTIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2Q0M3ODMwRERFNEFDMjAwODg5
OUUyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmNwcCAqLzsgfTsKKwkJMzE2Q0M3ODgwRERFNEFDMjAw
ODg5OUUyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZDQzc4NDBEREU0QUMyMDA4ODk5RTIgLyogSlNXZWJLaXRD
U1NNYXRyaXguaCAqLzsgfTsKKwkJMzE2Q0M3ODkwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzE2Q0M3ODUwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuY3BwICovOyB9OworCQkzMTZDQzc4QTBEREU0QUMyMDA4ODk5RTIgLyogSlNXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzE2Q0M3ODYwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuaCAqLzsgfTsKKwkJMzE2Q0M3OTIwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktp
dENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE2Q0M3OEMwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeC5oICovOyB9
OworCQkzMTZDQzc5MzBEREU0Qjc5MDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTTWF0cml4Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2Q0M3OEQwRERF
NEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeC5tbSAqLzsgfTsKKwkJMzE2Q0M3OTQw
RERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeEludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZDQzc4RTBEREU0Qjc5MDA4
ODk5RTIgLyogRE9NV2ViS2l0Q1NTTWF0cml4SW50ZXJuYWwuaCAqLzsgfTsKKwkJMzE2Q0M3OTUw
RERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZDQzc4RjBEREU0Qjc5MDA4
ODk5RTIgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCAqLzsgfTsKKwkJMzE2Q0M3OTYw
RERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2Q0M3OTAwRERFNEI3OTAw
ODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLm1tICovOyB9OworCQkzMTZDQzc5
NzBEREU0Qjc5MDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWVJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2Q0M3OTEw
RERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlSW50ZXJuYWwuaCAq
LzsgfTsKKwkJMzE2Q0M3QkYwRERFNTdDRjAwODg5OUUyIC8qIFRyYW5zZm9ybTNELmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkNDN0JEMERERTU3
Q0YwMDg4OTlFMiAvKiBUcmFuc2Zvcm0zRC5jcHAgKi87IH07CisJCTMxNkNDN0MwMERERTU3Q0Yw
MDg4OTlFMiAvKiBUcmFuc2Zvcm0zRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzE2Q0M3QkUwRERFNTdDRjAwODg5OUUyIC8qIFRyYW5zZm9ybTNELmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzE5NUU3
NjkwRERFNkNGMTAwQTNBRjdBIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5NUU3NjcwRERF
NkNGMTAwQTNBRjdBIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwICovOyB9Owor
CQkzMTk1RTc2QTBEREU2Q0YxMDBBM0FGN0EgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5NUU3
NjgwRERFNkNGMTAwQTNBRjdBIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuaCAqLzsg
fTsKIAkJMzcxRjRGNDAwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEYzRTBEMjVCOUFGMDBFQ0Uw
RDUgLyogRm9udERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkzNzFGNEY0MTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGM0YwRDI1QjlB
RjAwRUNFMEQ1IC8qIEZvbnREYXRhLmNwcCAqLzsgfTsKIAkJMzcxRjRGRkMwRDI1RTdGMzAwRUNF
MEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9u
dERhdGEuaCAqLzsgfTsKQEAgLTM3MjcsOCArMzc0Nyw2IEBACiAJCUJDOTg1NDNFMENEM0Q5OEMw
MDA2OUJDMSAvKiBKU0NvbnNvbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDOTg1NDNDMENEM0Q5OEIwMDA2OUJDMSAvKiBKU0NvbnNvbGUuaCAqLzsg
fTsKIAkJQkM5OEEyN0QwQzBDOTk1MDAwNEJFQkY3IC8qIEpTU3R5bGVTaGVldEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk4QTI3QzBD
MEM5OTUwMDA0QkVCRjcgLyogSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCAqLzsgfTsKIAkJQkM5OTgx
MkUwREJFODA3QTAwOENFOUVGIC8qIERPTUFic3RyYWN0Vmlld0ZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk5ODEyRDBEQkU4MDdBMDA4Q0U5
RUYgLyogRE9NQWJzdHJhY3RWaWV3RnJhbWUuaCAqLzsgfTsKLQkJQkM5QUREMjMwQ0M0MDMyNjAw
MDk4QzRDIC8qIENTU1RyYW5zZm9ybVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzlBREQyMjBDQzQwMzI2MDAwOThDNEMgLyogQ1NTVHJhbnNm
b3JtVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQlCQzlBREQ4MDBDQzQwOTIyMDAwOThDNEMgLyogQ1NTVHJhbnNmb3JtVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5QUREN0YwQ0M0
MDkyMjAwMDk4QzRDIC8qIENTU1RyYW5zZm9ybVZhbHVlLmNwcCAqLzsgfTsKIAkJQkNBMTY5QTIw
QkZENTVCNDAwMTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMTY5QTAwQkZENTVCNDAw
MTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwICovOyB9OwogCQlCQ0ExNjlB
MzBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMTY5QTEwQkZENTVCNDAw
MTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCAqLzsgfTsKIAkJQkNBMzc4MTYw
RDE1QzY0NjAwQjc5M0Q2IC8qIFBhdXNlZFRpbWVvdXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTM3ODE0MEQxNUM2NDYwMEI3OTNENiAvKiBQ
YXVzZWRUaW1lb3V0cy5jcHAgKi87IH07CkBAIC00ODY2LDYgKzQ4ODQsMjYgQEAKIAkJMkQ5MDY2
MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMYXlvdXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDkwNjYwQjA2NjVEOTM3MDA2QjZGMUEgLyogQ2xpcGJvYXJkTWFjLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2FyZE1hYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
MkQ5MDY2MEMwNjY1RDkzNzAwNkI2RjFBIC8qIENsaXBib2FyZE1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENsaXBib2FyZE1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CisJCTMxNkNDNzc2MERERTQ3QTAwMDg4OTlFMiAvKiBXZWJLaXRDU1NNYXRyaXguY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTTWF0cml4LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2Q0M3NzcwRERFNDdBMDAwODg5OUUyIC8q
IFdlYktpdENTU01hdHJpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJL
aXRDU1NNYXRyaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2Q0M3NzgwRERF
NDdBMDAwODg5OUUyIC8qIFdlYktpdENTU01hdHJpeC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViS2l0Q1NTTWF0cml4LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2
Q0M3NzkwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2Q0M3N0EwRERFNDdBMDAwODg5
OUUyIC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxNkNDNzdCMERERTQ3QTAwMDg4OTlFMiAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZDQzc4MzBEREU0QUMyMDA4ODk5
RTIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gSlNXZWJLaXRDU1NNYXRyaXguY3BwOyBwYXRoID0gLi4vV2ViS2l0QnVpbGQvRGVi
dWcvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdENTU01hdHJpeC5jcHA7IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJMzE2Q0M3ODQwRERFNEFDMjAwODg5OUUyIC8qIEpTV2Vi
S2l0Q1NTTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViS2l0
Q1NTTWF0cml4Lmg7IHBhdGggPSAuLi9XZWJLaXRCdWlsZC9EZWJ1Zy9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViS2l0Q1NTTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
KwkJMzE2Q0M3ODUwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZS5jcHA7IHBhdGggPSAuLi9XZWJLaXRCdWlsZC9EZWJ1Zy9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CisJCTMxNkNDNzg2MERERTRBQzIwMDg4OTlFMiAvKiBKU1dlYktpdENTU1Ry
YW5zZm9ybVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUuaDsgcGF0aCA9IC4uL1dlYktpdEJ1aWxkL0RlYnVnL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CisJCTMxNkNDNzhDMERERTRCNzkwMDg4OTlFMiAvKiBET01XZWJLaXRD
U1NNYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NV2ViS2l0Q1NT
TWF0cml4Lmg7IHBhdGggPSAuLi9XZWJLaXRCdWlsZC9EZWJ1Zy9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0RPTVdlYktpdENTU01hdHJpeC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CTMxNkNDNzhEMERERTRCNzkwMDg4OTlFMiAvKiBET01XZWJLaXRDU1NNYXRyaXgubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBET01XZWJLaXRDU1NNYXRyaXgubW07
IHBhdGggPSAuLi9XZWJLaXRCdWlsZC9EZWJ1Zy9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0RPTVdl
YktpdENTU01hdHJpeC5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkzMTZDQzc4
RTBEREU0Qjc5MDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTTWF0cml4SW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NV2ViS2l0Q1NTTWF0cml4SW50ZXJuYWwuaDsg
cGF0aCA9IC4uL1dlYktpdEJ1aWxkL0RlYnVnL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRE9NV2Vi
S2l0Q1NTTWF0cml4SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkz
MTZDQzc4RjBEREU0Qjc5MDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuaDsgcGF0aCA9IC4uL1dlYktpdEJ1aWxkL0RlYnVnL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
RE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OworCQkzMTZDQzc5MDBEREU0Qjc5MDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBET01XZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZS5tbTsgcGF0aCA9IC4uL1dlYktpdEJ1aWxkL0RlYnVnL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUubW07IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKKwkJMzE2Q0M3OTEwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktp
dENTU1RyYW5zZm9ybVZhbHVlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWVJbnRlcm5hbC5oOyBwYXRoID0gLi4vV2Vi
S2l0QnVpbGQvRGVidWcvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01XZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJMzE2Q0M3
QkQwRERFNTdDRjAwODg5OUUyIC8qIFRyYW5zZm9ybTNELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybTNELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzE2Q0M3QkUwRERFNTdDRjAwODg5OUUyIC8qIFRyYW5zZm9ybTNELmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zZm9ybTNELmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxOTVFNzY3MERERTZDRjEwMEEzQUY3QSAvKiBKU1dlYktpdENTU01h
dHJpeENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMTk1RTc2ODBEREU2Q0YxMDBBM0FGN0EgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25z
dHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktpdENTU01h
dHJpeENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY0RjNF
MEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb250RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNEYz
RjBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9udERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VnbWVudGVkRm9udERhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgwNjEsOCArODA5OSw2IEBACiAJCUJDOTg1NDNDMENEM0Q5
OEIwMDA2OUJDMSAvKiBKU0NvbnNvbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQ29uc29sZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzk4QTI3QzBD
MEM5OTUwMDA0QkVCRjcgLyogSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3R5bGVTaGVldEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDOTk4MTJEMERCRTgwN0EwMDhDRTlFRiAvKiBET01BYnN0cmFj
dFZpZXdGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01BYnN0cmFj
dFZpZXdGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzlBREQyMjBDQzQw
MzI2MDAwOThDNEMgLyogQ1NTVHJhbnNmb3JtVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENTU1RyYW5zZm9ybVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUJDOUFERDdGMENDNDA5MjIwMDA5OEM0QyAvKiBDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVHJhbnNmb3JtVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0ExNjlBMDBCRkQ1NUI0MDAxOUNB
NzYgLyogSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQTE2OUExMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxU
YWJsZUNhcHRpb25FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0hUTUxUYWJsZUNhcHRpb25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDQTM3ODE0MEQxNUM2NDYwMEI3OTNENiAvKiBQYXVzZWRUaW1lb3V0cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXVzZWRUaW1lb3V0cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjM5LDYgKzkyNzUsMTIgQEAKIAkJODU5NjdEQ0EwQUE4
QkYwRjAwNUZFREVFIC8qIENTUyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMzE2Q0M3OEMwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJp
eC5oICovLAorCQkJCTMxNkNDNzhEMERERTRCNzkwMDg4OTlFMiAvKiBET01XZWJLaXRDU1NNYXRy
aXgubW0gKi8sCisJCQkJMzE2Q0M3OEUwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01h
dHJpeEludGVybmFsLmggKi8sCisJCQkJMzE2Q0M3OEYwRERFNEI3OTAwODg5OUUyIC8qIERPTVdl
YktpdENTU1RyYW5zZm9ybVZhbHVlLmggKi8sCisJCQkJMzE2Q0M3OTAwRERFNEI3OTAwODg5OUUy
IC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLm1tICovLAorCQkJCTMxNkNDNzkxMERERTRC
NzkwMDg4OTlFMiAvKiBET01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZUludGVybmFsLmggKi8sCiAJ
CQkJODUwMzJEQzMwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU0NoYXJzZXRSdWxlLmggKi8sCiAJ
CQkJODUwMzJEQzQwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU0NoYXJzZXRSdWxlLm1tICovLAog
CQkJCTg1MDMyREM1MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NGb250RmFjZVJ1bGUuaCAqLywK
QEAgLTExMTE3LDYgKzExMTU5LDEwIEBACiAJCUE4M0I3OTBFMENDQUZGOTcwMDBCMDgyNSAvKiBD
U1MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTMxNkND
NzgzMERERTRBQzIwMDg4OTlFMiAvKiBKU1dlYktpdENTU01hdHJpeC5jcHAgKi8sCisJCQkJMzE2
Q0M3ODQwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmggKi8sCisJCQkJMzE2
Q0M3ODUwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwICov
LAorCQkJCTMxNkNDNzg2MERERTRBQzIwMDg4OTlFMiAvKiBKU1dlYktpdENTU1RyYW5zZm9ybVZh
bHVlLmggKi8sCiAJCQkJOTMwNzA1RDcwOUUwQzlCNzAwQjE3RkU0IC8qIEpTQ291bnRlci5jcHAg
Ki8sCiAJCQkJOTMwNzA1RDkwOUUwQzlCRjAwQjE3RkU0IC8qIEpTQ291bnRlci5oICovLAogCQkJ
CUJDNDZDMUYwMEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0NoYXJzZXRSdWxlLmNwcCAqLywKQEAg
LTExOTQ3LDYgKzExOTkzLDggQEAKIAkJQjJBMDE1OTEwQUY2Q0Q1MzAwNkJDRTBFIC8qIGdyYXBo
aWNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkzMTZD
QzdCRDBEREU1N0NGMDA4ODk5RTIgLyogVHJhbnNmb3JtM0QuY3BwICovLAorCQkJCTMxNkNDN0JF
MERERTU3Q0YwMDg4OTlFMiAvKiBUcmFuc2Zvcm0zRC5oICovLAogCQkJCUIyMzU0MEYwMEQwMDc4
MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuY3BwICovLAogCQkJCUIyMzU0MEYxMEQwMDc4
MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCAqLywKIAkJCQlCMkMzREE0RjBEMDA2Q0Q2
MDBFRjZGMjYgLyogRm9udC5jcHAgKi8sCkBAIC0xMjEyMyw2ICsxMjE3MSw4IEBACiAJCUJDMUEz
NzkzMDk3QzZGQjEwMDE5RjNEOCAvKiBqcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMzE5NUU3NjcwRERFNkNGMTAwQTNBRjdBIC8qIEpTV2ViS2l0Q1NT
TWF0cml4Q29uc3RydWN0b3IuY3BwICovLAorCQkJCTMxOTVFNzY4MERERTZDRjEwMEEzQUY3QSAv
KiBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmggKi8sCiAJCQkJMTRERkIzM0YwQTdERjc2
MzAwMThGNzY5IC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQlCQzRFREVGNzBDMDhGNDE0MDA3
RURENDkgLyogQ3VzdG9tICovLAogCQkJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2Rl
R2VuZXJhdG9ySlMucG0gKi8sCkBAIC0xMjYyMSw2ICsxMjY3MSwxMiBAQAogCQlGNTIzRDE4NDAy
REU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkzMTZDQzc3NjBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTTWF0cml4
LmNwcCAqLywKKwkJCQkzMTZDQzc3NzBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTTWF0cml4
LmggKi8sCisJCQkJMzE2Q0M3NzgwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENTU01hdHJpeC5p
ZGwgKi8sCisJCQkJMzE2Q0M3NzkwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlLmNwcCAqLywKKwkJCQkzMTZDQzc3QTBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuaCAqLywKKwkJCQkzMTZDQzc3QjBEREU0N0EwMDA4ODk5RTIgLyogV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsICovLAogCQkJCUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhD
NSAvKiBDb3VudGVyLmggKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50
ZXIuaWRsICovLAogCQkJCUE4MEU2Q0JCMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NCb3JkZXJJbWFn
ZVZhbHVlLmNwcCAqLywKQEAgLTEyNzA2LDggKzEyNzYyLDYgQEAKIAkJCQk4NThDMzkxMDBBQThG
RjAwMDBCMTg3QTQgLyogQ1NTU3R5bGVTaGVldC5pZGwgKi8sCiAJCQkJQkM4MEM5ODUwQ0QyOTRF
RTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwICovLAogCQkJCUJDODBDOTg2
MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggKi8sCi0JCQkJQkM5
QUREN0YwQ0M0MDkyMjAwMDk4QzRDIC8qIENTU1RyYW5zZm9ybVZhbHVlLmNwcCAqLywKLQkJCQlC
QzlBREQyMjBDQzQwMzI2MDAwOThDNEMgLyogQ1NTVHJhbnNmb3JtVmFsdWUuaCAqLywKIAkJCQkz
NzFGNTNFODBEMjcwNEY5MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwICovLAog
CQkJCTM3MUY1M0U3MEQyNzA0RjkwMEVDRTBENSAvKiBDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oICov
LAogCQkJCUE4MEU2Q0NFMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NVbmtub3duUnVsZS5oICovLApA
QCAtMTMyMDcsNyArMTMyNjEsNiBAQAogCQkJCUJDNzcyQjQwMEM0RUE5MUUwMDgzMjg1RiAvKiBD
U1NTdHlsZVNlbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwNzBBMTk1MTZFMDBB
OEVGNUYgLyogQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MEM5ODgwQ0Qy
OTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLAot
CQkJCUJDOUFERDIzMENDNDAzMjYwMDA5OEM0QyAvKiBDU1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJREQ3Q0RGMjUwQTIzQ0Y5ODAwMDY5OTI4IC8qIENTU1Vua25vd25SdWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkNFRTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFs
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NjU4MTUxMDlEMTMwNDMwMDBFNjFENyAvKiBDU1NW
YWx1ZUtleXdvcmRzLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MTE4LDYgKzE1MTcxLDE2IEBACiAJ
CQkJOTU5NjlCNDgwREQ4RDIxQjAwRjY1M0VFIC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTU5NjlCNEEwREQ4RDIxQjAwRjY1M0VFIC8qIEphdmFTY3JpcHRQ
cm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTdGQTYxOTBEREEzQjNBMDAyOEY4QTUgLyog
TmV0d29ya1N0YXRlTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNkNDNzdEMERERTQ3
QTAwMDg4OTlFMiAvKiBXZWJLaXRDU1NNYXRyaXguaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNkND
NzgwMERERTQ3QTAwMDg4OTlFMiAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMzE2Q0M3ODgwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTTWF0cml4
LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZDQzc4QTBEREU0QUMyMDA4ODk5RTIgLyogSlNXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2Q0M3OTIwRERFNEI3
OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2
Q0M3OTQwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeEludGVybmFsLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMTZDQzc5NTBEREU0Qjc5MDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNkNDNzk3MERERTRCNzkwMDg4
OTlFMiAvKiBET01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAq
LywKKwkJCQkzMTZDQzdDMDBEREU1N0NGMDA4ODk5RTIgLyogVHJhbnNmb3JtM0QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTMxOTVFNzZBMERERTZDRjEwMEEzQUY3QSAvKiBKU1dlYktpdENTU01hdHJp
eENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzYyNjQwQjBERTExMzdEMDA5RDVB
MDAgLyogQ1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xNTIzMiw2ICsxNTI5
NSw4IEBACiAJCQkJODUxMzZDQTgwQUVENjY1OTAwRjkwQTNEIC8qIHdlc3RSZXNpemVDdXJzb3Iu
cG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlGNEYgLyogem9v
bUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0IwQzA1MUZERTAwMTM5
RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQkzMTZDQzc3RTBE
REU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTTWF0cml4LmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJ
CQkJMzE2Q0M3ODEwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlk
bCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNTM3Miw3ICsxNTQzNyw2IEBACiAJCQkJQkM3NzJCM0Yw
QzRFQTkxRTAwODMyODVGIC8qIENTU1N0eWxlU2VsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThFQTgwMDgwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM4MEM5ODcwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9u
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkM5QUREODAwQ0M0MDkyMjAwMDk4QzRDIC8q
IENTU1RyYW5zZm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0U0MEExOTg5
Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RB
MjcwRDAwNkMxRDAwRUY2RjI2IC8qIENTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNC
MTZDMTcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTY4
MzcsNiArMTY5MDEsMTQgQEAKIAkJCQk5NTk2OUI0OTBERDhEMjFCMDBGNjUzRUUgLyogSmF2YVNj
cmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3RkE2MUIwRERBM0JCRTAwMjhG
OEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBN0ZB
NjQ5MEREQTNDQkEwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllck1hYy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkzMTZDQzc3QzBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTTWF0cml4
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxNkNDNzdGMERERTQ3QTAwMDg4OTlFMiAvKiBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMTZDQzc4NzBEREU0
QUMyMDA4ODk5RTIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MzE2Q0M3ODkwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMzE2Q0M3OTMwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktp
dENTU01hdHJpeC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTMxNkNDNzk2MERERTRCNzkwMDg4OTlF
MiAvKiBET01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTMx
NkNDN0JGMERERTU3Q0YwMDg4OTlFMiAvKiBUcmFuc2Zvcm0zRC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkzMTk1RTc2OTBEREU2Q0YxMDBBM0FGN0EgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZVNvdXJj
ZXMuYmtsIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKaW5kZXggYWRjOTBhYy4uNzMyMTJj
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlU291cmNlcy5ia2wKQEAgLTk5LDYgKzk5LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRo
ZSBsaXN0IG9mIGZpbGVzIG5lZWRlZCB0byBidWlsZCBXZWJDb3JlLgogICAgICAgICBiaW5kaW5n
cy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTU3R5bGVT
aGVldExpc3RDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3Rv
bS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5j
cHAKICAgICAgICAgYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAog
ICAgICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAogICAgICAgICBi
aW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTE1OCw3ICsxNTks
NiBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxk
IFdlYkNvcmUuCiAgICAgICAgIGNzcy9DU1NTdHlsZVJ1bGUuY3BwCiAgICAgICAgIGNzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAogICAgICAgICBjc3MvQ1NTU3R5bGVTaGVldC5jcHAKLSAgICAgICAg
Y3NzL0NTU1RyYW5zZm9ybVZhbHVlLmNwcAogICAgICAgICBjc3MvQ1NTVGltaW5nRnVuY3Rpb25W
YWx1ZS5jcHAKICAgICAgICAgY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcAogICAgICAgICBj
c3MvQ1NTVmFsdWVMaXN0LmNwcApAQCAtMTc0LDYgKzE3NCw4IEBAIFRoaXMgZmlsZSBjb250YWlu
cyB0aGUgbGlzdCBvZiBmaWxlcyBuZWVkZWQgdG8gYnVpbGQgV2ViQ29yZS4KICAgICAgICAgY3Nz
L1N0eWxlTGlzdC5jcHAKICAgICAgICAgY3NzL1N0eWxlU2hlZXQuY3BwCiAgICAgICAgIGNzcy9T
dHlsZVNoZWV0TGlzdC5jcHAKKyAgICAgICAgY3NzL1dlYktpdENTU01hdHJpeC5jcHAKKyAgICAg
ICAgY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcAogICAgIDwvc2V0PgogCiAgICAgPHNl
dCBhcHBlbmQ9IjEiIHZhcj0iV0VCQ09SRV9TT1VSQ0VTX0RFUklWRURTT1VSQ0VTIj4KQEAgLTMx
OSw2ICszMjEsOCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVk
IHRvIGJ1aWxkIFdlYkNvcmUuCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUZXh0
RXZlbnQuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUcmVlV2Fsa2VyLmNw
cAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVUlFdmVudC5jcHAKKyAgICAgICAg
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdENTU01hdHJpeC5jcHAKKyAgICAgICAgRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcAogICAgICAg
ICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2hlZWxFdmVudC5jcHAKICAgICAgICAgRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1hNTEh0dHBSZXF1ZXN0LmNwcAogICAgICAgICBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uY3BwCkBAIC0zOTksNiArNDAz
LDggQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZWRlZCB0byBidWls
ZCBXZWJDb3JlLgogICAgICAgICBkb20vVHJlZVdhbGtlci5jcHAKICAgICAgICAgZG9tL1VJRXZl
bnQuY3BwCiAgICAgICAgIGRvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcAorICAgICAgICBkb20v
V2ViS2l0Q1NTTWF0cml4LmNwcAorICAgICAgICBkb20vV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
Y3BwCiAgICAgICAgIGRvbS9XaGVlbEV2ZW50LmNwcAogICAgICAgICBkb20vWE1MVG9rZW5pemVy
LmNwcAogICAgIDwvc2V0PgpAQCAtNjQ3LDYgKzY1Myw3IEBAIFRoaXMgZmlsZSBjb250YWlucyB0
aGUgbGlzdCBvZiBmaWxlcyBuZWVkZWQgdG8gYnVpbGQgV2ViQ29yZS4KICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhXaWR0aE1hcC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
U2VnbWVudGVkRm9udERhdGEuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZv
bnREYXRhLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UcmFuc2Zvcm0zRC5jcHAKICAg
ICAgICAgcGxhdGZvcm0vS1VSTC5jcHAKICAgICAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAKICAg
ICAgICAgcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAppbmRleCAyZjRmNjEyLi4yM2UxMTI2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNI
VE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNJbWFnZUNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRyaXhD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgpAQCAtMTg5LDYg
KzE5MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0Jhc2U6OnNfaW5mbyA9IHsgIldp
bmRvdyIsIDAsICZKU0RPTVdpbmRvd0Jhc2VUYWJsZSwKICAgQXVkaW8gICAgICAgICAgICAgICAg
IFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6QXVkaW8gICAgICAgICAgICAgIERvbnREZWxldGUK
ICAgSW1hZ2UgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6SW1hZ2Ug
ICAgICAgICAgICAgIERvbnREZWxldGUKICAgT3B0aW9uICAgICAgICAgICAgICAgIFdlYkNvcmU6
OkpTRE9NV2luZG93QmFzZTo6T3B0aW9uICAgICAgICAgICAgIERvbnREZWxldGUKKyAgV2ViS2l0
Q1NTTWF0cml4ICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6V2ViS2l0Q1NTTWF0cml4
ICAgIERvbnREZWxldGUKICAgWE1MSHR0cFJlcXVlc3QgICAgICAgIFdlYkNvcmU6OkpTRE9NV2lu
ZG93QmFzZTo6WE1MSHR0cFJlcXVlc3QgICAgIERvbnREZWxldGUKICAgWFNMVFByb2Nlc3NvciAg
ICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6WFNMVFByb2Nlc3NvciAgICAgIERvbnRE
ZWxldGUKIEBlbmQKQEAgLTQzNSw3ICs0MzcsMTEgQEAgSlNWYWx1ZSAqSlNET01XaW5kb3dCYXNl
OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuKSBjb25zdAogICAg
ICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICAgIHJldHVybiBuZXcgSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yKGV4
ZWMsIGltcGwoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSk7Ci0gICAgY2FzZSBYTUxIdHRwUmVxdWVz
dDoKKyAgIGNhc2UgV2ViS2l0Q1NTTWF0cml4OgorICAgICAgIGlmICghYWxsb3dzQWNjZXNzRnJv
bShleGVjKSkKKyAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgcmV0dXJu
IG5ldyBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yKGV4ZWMsIGltcGwoKS0+ZnJhbWUoKS0+
ZG9jdW1lbnQoKSk7CisgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OgogICAgICAgaWYgKCFhbGxvd3NB
Y2Nlc3NGcm9tKGV4ZWMpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgIHJl
dHVybiBuZXcgSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yKGV4ZWMsIGltcGwoKS0+ZnJhbWUo
KS0+ZG9jdW1lbnQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCA5
NzY1NmUyLi44N2MyYWEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAg
LTEzMSw4ICsxMzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBPbmJlZm9y
ZXVubG9hZCwKIAogICAgICAgICAgICAgLy8gQ29uc3RydWN0b3JzCi0gICAgICAgICAgICBBdWRp
bywgSW1hZ2UsIE9wdGlvbiwgWE1MSHR0cFJlcXVlc3QsCi0gICAgICAgICAgICBYU0xUUHJvY2Vz
c29yCisgICAgICAgICAgICBBdWRpbywgSW1hZ2UsIE9wdGlvbiwgV2ViS2l0Q1NTTWF0cml4LAor
ICAgICAgICAgICAgWE1MSHR0cFJlcXVlc3QsIFhTTFRQcm9jZXNzb3IKICAgICAgICAgfTsKIAog
ICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NT
TWF0cml4Q29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU01h
dHJpeENvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
ZDg4YmUzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENT
U01hdHJpeENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuaCIKKworI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRyaXguaCIKKyNpbmNsdWRl
ICJUZXh0LmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NTTWF0cml4LmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBLSlM7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTV2ViS2l0
Q1NTTWF0cml4Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIldlYktpdENTU01hdHJpeENvbnN0cnVj
dG9yIiwgMCwgMCwgMCB9OworCitKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yOjpKU1dlYktp
dENTU01hdHJpeENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgRG9jdW1lbnQqIGRvY3VtZW50
KQorICAgIDogRE9NT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJv
dG90eXBlKCkpCisgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQoreworICAgIHB1dERpcmVjdChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcig0KSwgUmVhZE9ubHl8RG9udERl
bGV0ZXxEb250RW51bSk7Cit9CisKK2Jvb2wgSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvcjo6
aW1wbGVtZW50c0NvbnN0cnVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0pT
T2JqZWN0KiBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQoreworICAgIFN0cmluZyBzOworICAgIGlmIChhcmdz
LnNpemUoKSA+PSAxKSB7CisgICAgICAgIHMgPSBhcmdzWzBdLT5nZXRTdHJpbmcoKTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odG9KUyhleGVjLCBuZXcg
V2ViS2l0Q1NTTWF0cml4KHMpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5o
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRiYzYzNgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5oCkBA
IC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIs
IEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmbmRlZiBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yX2gKKyNkZWZpbmUgSlNX
ZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRlICJranNfYmluZGluZy5oIgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBE
b2N1bWVudDsKKyAgICAKK2NsYXNzIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IgOiBwdWJs
aWMgRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9y
KEtKUzo6RXhlY1N0YXRlKiwgRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgYm9vbCBpbXBsZW1l
bnRzQ29uc3RydWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBLSlM6OkpTT2JqZWN0KiBjb25zdHJ1
Y3QoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6Okxpc3QmKTsKKyAgICAKKyAgICB2aXJ0dWFs
IGNvbnN0IEtKUzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZv
OyB9CisgICAgc3RhdGljIGNvbnN0IEtKUzo6Q2xhc3NJbmZvIHNfaW5mbzsKKworcHJpdmF0ZToK
KyAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBK
U1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01JbnRlcm5hbC5oIGIvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFs
LmgKaW5kZXggMWE5MzU0Ni4uZDcwNmFmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUludGVybmFsLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFs
LmgKQEAgLTE0Myw2ICsxNDMsOCBAQAogI2ltcG9ydCAiRE9NVGV4dEludGVybmFsLmgiCiAjaW1w
b3J0ICJET01UcmVlV2Fsa2VySW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVVJRXZlbnRJbnRlcm5h
bC5oIgorI2ltcG9ydCAiRE9NV2ViS2l0Q1NTTWF0cml4SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRP
TVdlYktpdENTU1RyYW5zZm9ybVZhbHVlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVdoZWVsRXZl
bnRJbnRlcm5hbC5oIgogCiAjaWYgRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGE1NjZmODkuLjEyNDRkZTcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTQxNiw2ICsxNDE2LDcg
QEAgbXkgJXR5cGVDYW5GYWlsQ29udmVyc2lvbiA9ICgKICAgICAiU1ZHUmVjdCIgPT4gMCwKICAg
ICAiU1ZHVHJhbnNmb3JtIiA9PiAwLAogICAgICJWb2lkQ2FsbGJhY2siID0+IDEsCisgICAgIldl
YktpdENTU01hdHJpeCIgPT4gMCwKICAgICAiWFBhdGhFdmFsdWF0b3IiID0+IDAsCiAgICAgIlhQ
YXRoTlNSZXNvbHZlciIgPT4gMCwKICAgICAiWFBhdGhSZXN1bHQiID0+IDAsCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KaW5kZXggZTY4ZjI0ZC4uODRm
YjY5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JP
YmpDLnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5w
bQpAQCAtNDAxLDcgKzQwMSw3IEBAIHN1YiBHZXRCYXNlQ2xhc3MKIAogICAgIHJldHVybiAkcGFy
ZW50IGlmICRwYXJlbnQgZXEgIk9iamVjdCIgb3IgSXNCYXNlVHlwZSgkcGFyZW50KTsKICAgICBy
ZXR1cm4gIkV2ZW50IiBpZiAkcGFyZW50IGVxICJVSUV2ZW50IjsKLSAgICByZXR1cm4gIkNTU1Zh
bHVlIiBpZiAkcGFyZW50IGVxICJTVkdDb2xvciI7CisgICAgcmV0dXJuICJDU1NWYWx1ZSIgaWYg
JHBhcmVudCBlcSAiU1ZHQ29sb3IiIG9yICRwYXJlbnQgZXEgIkNTU1ZhbHVlTGlzdCI7CiAgICAg
cmV0dXJuICJOb2RlIjsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcCBiL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKaW5kZXggMmY1YmEyNi4uNTAzNmY4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUmVj
dC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNoYWRvd1ZhbHVlLmgi
CisjaW5jbHVkZSAiV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCIKIAogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKICNpbmNsdWRlICJEYXNoYm9hcmRSZWdpb24uaCIKQEAgLTE4Myw2ICsx
ODQsOSBAQCBzdGF0aWMgY29uc3QgaW50IGNvbXB1dGVkUHJvcGVydGllc1tdID0gewogICAgIENT
U1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5LAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZUNvbG9yLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLAorICAgIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLAorICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luWCwKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblksCiAgICAgQ1NT
UHJvcGVydHlXZWJraXRVc2VyRHJhZywKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnks
CiAgICAgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LApAQCAtMzgzLDYgKzM4NywzNCBAQCBz
dGF0aWMgSW50UmVjdCBzaXppbmdCb3goUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICByZXR1
cm4gcmVuZGVyZXItPnN0eWxlKCktPmJveFNpemluZygpID09IENPTlRFTlRfQk9YID8gcmVuZGVy
ZXItPmNvbnRlbnRCb3goKSA6IHJlbmRlcmVyLT5ib3JkZXJCb3goKTsKIH0KIAorc3RhdGljIFBh
c3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb21wdXRlZFRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQoreworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOworICAgIAor
ICAgIEludFJlY3QgYm94ID0gc2l6aW5nQm94KHJlbmRlcmVyKTsKKyAgICAKKyAgICBUcmFuc2Zv
cm0zRCB0cmFuc2Zvcm0zZDsKKworICAgIHJlbmRlcmVyLT5zdHlsZSgpLT5hcHBseVRyYW5zZm9y
bSh0cmFuc2Zvcm0zZCwgYm94LnNpemUoKSwgZmFsc2UpOworCisgICAgQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zZm9ybSA9IHRyYW5zZm9ybTNkLmFmZmluZVRyYW5zZm9ybSgpOworCisgICAgUmVmUHRy
PFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiAgdHJhbnNmb3JtVmFsID0gbmV3IFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlKFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpNYXRyaXhUcmFuc2Zvcm1PcGVy
YXRpb24pOworICAgIAorICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVW
YWx1ZSh0cmFuc2Zvcm0uYSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAg
IHRyYW5zZm9ybVZhbC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm0uYigp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgIHRyYW5zZm9ybVZhbC0+YXBw
ZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm0uYygpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUikpOworICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKG5ldyBDU1NQcmltaXRp
dmVWYWx1ZSh0cmFuc2Zvcm0uZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwor
ICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm0u
ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgIHRyYW5zZm9ybVZhbC0+
YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm0uZigpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUikpOworICAgIAorICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Qg
PSBuZXcgQ1NTVmFsdWVMaXN0KHRydWUpOworICAgIGxpc3QtPmFwcGVuZCh0cmFuc2Zvcm1WYWwp
OworICAgIAorICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKK30KKwogQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24oUGFzc1JlZlB0cjxOb2Rl
PiBuKQogICAgIDogbV9ub2RlKG4pCiB7CkBAIC05OTgsNiArMTAzMCwyMiBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFs
dWUoaW50IHByb3BlcgogICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZh
bHVlKHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyVG9wUmlnaHRSYWRpdXM6CiAgICAgICAgICAgICByZXR1cm4gZ2V0Qm9y
ZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkpOworICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtOgorICAgICAgICAgICAgcmV0dXJu
IGNvbXB1dGVkVHJhbnNmb3JtKHJlbmRlcmVyKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybU9yaWdpblg6CisgICAgICAgICAgICBpZiAocmVuZGVyZXIpIHsKKyAgICAg
ICAgICAgICAgICBJbnRSZWN0IGJveCA9IHNpemluZ0JveChyZW5kZXJlcik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2lu
WCgpLmNhbGNNaW5WYWx1ZShib3gud2lkdGgoKSksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKSk7CisgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZOgorICAgICAgICAgICAg
aWYgKHJlbmRlcmVyKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCBib3ggPSBzaXppbmdCb3go
cmVuZGVyZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
c3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKS5jYWxjTWluVmFsdWUoYm94LmhlaWdodCgpKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+dHJh
bnNmb3JtT3JpZ2luWSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXA6CiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmIChzdHlsZS0+aGFzQ2xpcCgpKSB7CkBAIC0xMDY2LDEwICsxMTE0
LDYgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVTcGVlZDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdT
dGFydDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2U6Ci0gICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1PcmlnaW46Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1PcmlnaW5YOgotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luWToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb246CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHk6CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAw
MGRlNDExLi44NWZjYWJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisr
KyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRl
ICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNT
U1N0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgog
I2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgpAQCAtNjIsNiArNjEsNyBAQAogI2luY2x1ZGUgIlBh
aXIuaCIKICNpbmNsdWRlICJSZWN0LmgiCiAjaW5jbHVkZSAiU2hhZG93VmFsdWUuaCIKKyNpbmNs
dWRlICJXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogI2luY2x1ZGUgPGtqcy9kdG9hLmg+CiAK
ICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBAIC0zNzI5LDcgKzM3MjksNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VDYW52YXMoUmVmUHRyPENTU1ZhbHVlPiYgY2FudmFzKQogY2xhc3Mg
VHJhbnNmb3JtT3BlcmF0aW9uSW5mbyB7CiBwdWJsaWM6CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9u
SW5mbyhjb25zdCBQYXJzZVN0cmluZyYgbmFtZSkKLSAgICA6IG1fdHlwZShDU1NUcmFuc2Zvcm1W
YWx1ZTo6VW5rbm93blRyYW5zZm9ybU9wZXJhdGlvbikKKyAgICA6IG1fdHlwZShXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6VW5rbm93blRyYW5zZm9ybU9wZXJhdGlvbikKICAgICAsIG1fYXJnQ291
bnQoMSkKICAgICAsIG1fYWxsb3dTaW5nbGVBcmd1bWVudChmYWxzZSkKICAgICAsIG1fdW5pdChD
U1NQYXJzZXI6OkZVbmtub3duKQpAQCAtMzczNywzMiArMzczNywzNSBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2NhbGUoIikgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UobmFtZSwgInNjYWxleCgiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2NhbGV5
KCIpKSB7CiAgICAgICAgICAgICBtX3VuaXQgPSBDU1NQYXJzZXI6OkZOdW1iZXI7CiAgICAgICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNjYWxlKCIpKQotICAgICAgICAgICAg
ICAgIG1fdHlwZSA9IENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjsK
KyAgICAgICAgICAgICAgICBtX3R5cGUgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb247CiAgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShuYW1lLCAic2NhbGV4KCIpKQotICAgICAgICAgICAgICAgIG1fdHlwZSA9IENTU1RyYW5zZm9y
bVZhbHVlOjpTY2FsZVhUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICAgICAgbV90eXBl
ID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWFRyYW5zZm9ybU9wZXJhdGlvbjsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3R5cGUgPSBDU1NUcmFuc2Zvcm1WYWx1
ZTo6U2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9uOwotICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsICJyb3RhdGUoIikpIHsKLSAgICAgICAgICAgIG1fdHlwZSA9IENTU1Ry
YW5zZm9ybVZhbHVlOjpSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICAgICAg
bV90eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWVRyYW5zZm9ybU9wZXJhdGlv
bjsKKyAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAicm90YXRlKCIp
IHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJyb3RhdGV6KCIpKSB7CiAgICAgICAgICAgICBt
X3VuaXQgPSBDU1NQYXJzZXI6OkZBbmdsZTsKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCAicm90YXRlKCIpKQorICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV90eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJv
dGF0ZVpUcmFuc2Zvcm1PcGVyYXRpb247CiAgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UobmFtZSwgInNrZXcoIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNrZXd4KCIp
IHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJza2V3eSgiKSkgewogICAgICAgICAgICAgbV91
bml0ID0gQ1NTUGFyc2VyOjpGQW5nbGU7CiAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UobmFtZSwgInNrZXcoIikpCi0gICAgICAgICAgICAgICAgbV90eXBlID0gQ1NTVHJhbnNmb3Jt
VmFsdWU6OlNrZXdUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICAgICAgbV90eXBlID0g
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdUcmFuc2Zvcm1PcGVyYXRpb247CiAgICAgICAg
ICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2tld3goIikpCi0gICAgICAg
ICAgICAgICAgbV90eXBlID0gQ1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdYVHJhbnNmb3JtT3BlcmF0
aW9uOworICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpT
a2V3WFRyYW5zZm9ybU9wZXJhdGlvbjsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBtX3R5cGUgPSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1lUcmFuc2Zvcm1PcGVyYXRpb247Cisg
ICAgICAgICAgICAgICAgbV90eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdZVHJh
bnNmb3JtT3BlcmF0aW9uOwogICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5h
bWUsICJ0cmFuc2xhdGUoIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInRyYW5zbGF0ZXgo
IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInRyYW5zbGF0ZXkoIikpIHsKICAgICAgICAg
ICAgIG1fdW5pdCA9IENTU1BhcnNlcjo6Rkxlbmd0aCB8IENTU1BhcnNlcjo6RlBlcmNlbnQ7CiAg
ICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInRyYW5zbGF0ZSgiKSkKLSAg
ICAgICAgICAgICAgICBtX3R5cGUgPSBDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uOworICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb247CiAgICAgICAgICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAidHJhbnNsYXRleCgiKSkKLSAgICAgICAgICAgICAg
ICBtX3R5cGUgPSBDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlv
bjsKKyAgICAgICAgICAgICAgICBtX3R5cGUgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJh
bnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlvbjsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBtX3R5cGUgPSBDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWVRyYW5zZm9ybU9wZXJh
dGlvbjsKKyAgICAgICAgICAgICAgICBtX3R5cGUgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6
VHJhbnNsYXRlWVRyYW5zZm9ybU9wZXJhdGlvbjsKICAgICAgICAgfSBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShuYW1lLCAibWF0cml4KCIpKSB7Ci0gICAgICAgICAgICBtX3R5cGUgPSBDU1NU
cmFuc2Zvcm1WYWx1ZTo6TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOworICAgICAgICAgICAgbV90
eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjsK
ICAgICAgICAgICAgIG1fYXJnQ291bnQgPSAxMTsKICAgICAgICAgICAgIG1fdW5pdCA9IENTU1Bh
cnNlcjo6Rk51bWJlcjsKICAgICAgICAgfQpAQCAtMzc3MywxNSArMzc3NiwxNSBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgQ1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zZm9y
bU9wZXJhdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2Zvcm1PcGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KICAgICB1bnNpZ25lZCBhcmdDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fYXJnQ291bnQ7IH0KICAgICBDU1NQYXJzZXI6OlVuaXRzIHVuaXQoKSBjb25zdCB7IHJldHVy
biBtX3VuaXQ7IH0KIAotICAgIGJvb2wgdW5rbm93bigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBDU1NUcmFuc2Zvcm1WYWx1ZTo6VW5rbm93blRyYW5zZm9ybU9wZXJhdGlvbjsgfQorICAgIGJv
b2wgdW5rbm93bigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZTo6VW5rbm93blRyYW5zZm9ybU9wZXJhdGlvbjsgfQogICAgIGJvb2wgaGFzQ29ycmVjdEFy
Z0NvdW50KHVuc2lnbmVkIGFyZ0NvdW50KSB7IHJldHVybiBtX2FyZ0NvdW50ID09IGFyZ0NvdW50
IHx8IChtX2FsbG93U2luZ2xlQXJndW1lbnQgJiYgYXJnQ291bnQgPT0gMSk7IH0KIAogcHJpdmF0
ZToKLSAgICBDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNmb3JtT3BlcmF0aW9uVHlwZSBtX3R5cGU7
CisgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zZm9ybU9wZXJhdGlvblR5cGUgbV90
eXBlOwogICAgIHVuc2lnbmVkIG1fYXJnQ291bnQ7CiAgICAgYm9vbCBtX2FsbG93U2luZ2xlQXJn
dW1lbnQ7CiAgICAgQ1NTUGFyc2VyOjpVbml0cyBtX3VuaXQ7CkBAIC0zNzkzLDcgKzM3OTYsNyBA
QCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybSgpCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gVGhlIHRyYW5zZm9ybSBpcyBhIGxpc3Qgb2YgZnVu
Y3Rpb25hbCBwcmltaXRpdmVzIHRoYXQgc3BlY2lmeSB0cmFuc2Zvcm0gb3BlcmF0aW9ucy4gIFdl
IGNvbGxlY3QgYSBsaXN0Ci0gICAgLy8gb2YgQ1NTVHJhbnNmb3JtVmFsdWVzLCB3aGVyZSBlYWNo
IHZhbHVlIHNwZWNpZmllcyBhIHNpbmdsZSBvcGVyYXRpb24uCisgICAgLy8gb2YgV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWVzLCB3aGVyZSBlYWNoIHZhbHVlIHNwZWNpZmllcyBhIHNpbmdsZSBvcGVy
YXRpb24uCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IG5ldyBDU1NWYWx1ZUxpc3Q7
CiAgICAgZm9yIChWYWx1ZSogdmFsdWUgPSB2YWx1ZUxpc3QtPmN1cnJlbnQoKTsgdmFsdWU7IHZh
bHVlID0gdmFsdWVMaXN0LT5uZXh0KCkpIHsKICAgICAgICAgaWYgKHZhbHVlLT51bml0ICE9IFZh
bHVlOjpGdW5jdGlvbiB8fCAhdmFsdWUtPmZ1bmN0aW9uKQpAQCAtMzgxMyw3ICszODE2LDcgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm0oKQogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBuZXcgQ1NTVHJhbnNm
b3JtVmFsdWUgZm9yIHRoaXMgb3BlcmF0aW9uIGFuZCBhZGQgaXQgdG8gb3VyIGxpc3QuCi0gICAg
ICAgIENTU1RyYW5zZm9ybVZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSA9IG5ldyBDU1NUcmFuc2Zvcm1W
YWx1ZShpbmZvLnR5cGUoKSk7CisgICAgICAgIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKiB0cmFu
c2Zvcm1WYWx1ZSA9IG5ldyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZShpbmZvLnR5cGUoKSk7CiAg
ICAgICAgIGxpc3QtPmFwcGVuZCh0cmFuc2Zvcm1WYWx1ZSk7CiAKICAgICAgICAgLy8gU25hZyBv
dXIgdmFsdWVzLgpAQCAtMzgyNiw3ICszODI5LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm0oKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBBZGQgdGhlIHZhbHVlIHRvIHRoZSBjdXJyZW50
IHRyYW5zZm9ybSBvcGVyYXRpb24uCi0gICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YWRkVmFs
dWUobmV3IENTU1ByaW1pdGl2ZVZhbHVlKGEtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXMpIGEtPnVuaXQpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQo
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKGEtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXMpIGEtPnVuaXQpKTsKIAogICAgICAgICAgICAgYSA9IGFyZ3MtPm5leHQoKTsKICAgICAg
ICAgICAgIGlmICghYSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggNTc1ZjRmNy4uZGZm
YjQ3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNs
dWRlICJTdHlsZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJVc2Vy
QWdlbnRTdHlsZVNoZWV0cy5oIgorI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgi
CiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlICJsb2FkZXIuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC00NDgxLDEyMiArNDQ4Miw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6YXBwbHlQcm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMKHRyYW5zZm9ybSwgVHJhbnNmb3JtKTsKICAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBv
cGVyYXRpb25zOwotICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAg
ICAgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+
KHZhbHVlKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBsaXN0LT5sZW5ndGgoKTsKLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAg
ICAgICAgICBDU1NUcmFuc2Zvcm1WYWx1ZSogdmFsID0gc3RhdGljX2Nhc3Q8Q1NTVHJhbnNmb3Jt
VmFsdWUqPihsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKLSAgICAgICAgICAgICAg
ICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IHZhbC0+dmFsdWVzKCk7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0VmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygw
KSk7Ci0gICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN3aXRjaCAodmFsLT50eXBl
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVHJhbnNmb3Jt
VmFsdWU6OlNjYWxlWFRyYW5zZm9ybU9wZXJhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9uOiB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGUgc3ggPSAxLjA7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgc3kgPSAxLjA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT50eXBl
KCkgPT0gQ1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWVRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzeSA9IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3ggPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2YWwtPnR5cGUoKSA9PSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHZhbHVlcy0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHNlY29uZFZhbHVlLT5nZXREb3VibGVW
YWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHN4OwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24q
IHNjYWxlID0gbmV3IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKHN4LCBzeSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZChzY2FsZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBjYXNlIENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVhUcmFu
c2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVHJhbnNmb3JtVmFs
dWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246IHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGggdHggPSBMZW5ndGgo
MCwgRml4ZWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAs
IEZpeGVkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwtPnR5cGUoKSA9PSBDU1NU
cmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWVRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBtX3N0eWxl
LCAmb2spOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7IAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR4ID0gY29udmVydFRvTGVuZ3RoKGZpcnN0VmFsdWUsIG1fc3R5bGUsICZv
ayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+dHlwZSgpID09IENTU1Ry
YW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24pIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygxKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9
IGNvbnZlcnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwgbV9zdHlsZSwgJm9rKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2xhdGUg
PSBuZXcgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKHR4LCB0eSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZCh0cmFuc2xhdGUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgYW5nbGUgPSBmaXJzdFZhbHVlLT5nZXREb3Vi
bGVWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0VmFsdWUtPnByaW1p
dGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JBRCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZSA9IHJhZDJkZWcoYW5nbGUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoZmlyc3RWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfR1JBRCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSA9IGdy
YWQyZGVnKGFuZ2xlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbiogcm90YXRlID0gbmV3IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbihhbmdsZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZChyb3RhdGUpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1RyYW5zZm9ybU9wZXJhdGlv
bjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1hUcmFu
c2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVHJhbnNmb3JtVmFs
dWU6OlNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgYW5nbGVYID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBhbmdsZVkg
PSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFuZ2xlID0gZmlyc3RWYWx1ZS0+
Z2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdFZhbHVl
LT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SQUQpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGUgPSByYWQyZGVnKGFuZ2xlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGZpcnN0VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0dSQUQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGUgPSBncmFkMmRlZyhhbmdsZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT50
eXBlKCkgPT0gQ1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlWSA9IGFuZ2xlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVYID0gYW5n
bGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+dHlwZSgpID09IENTU1Ry
YW5zZm9ybVZhbHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMtPmxlbmd0aCgpID4gMSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soMSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVZID0g
c2Vjb25kVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoc2Vjb25kVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1JBRCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZVkgPSByYWQyZGVnKGFuZ2xlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKHNlY29uZFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19HUkFEKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFuZ2xlWSA9IGdyYWQyZGVnKGFuZ2xlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZVkg
PSBhbmdsZVg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
ICAgICBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKiBza2V3ID0gbmV3IFNrZXdUcmFuc2Zvcm1PcGVy
YXRpb24oYW5nbGVYLCBhbmdsZVkpOwotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9u
cy5hcHBlbmQoc2tldyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1RyYW5zZm9ybVZhbHVl
OjpNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWVzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvdXJ0aFZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMykpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpZnRo
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhv
dXRCb3VuZHNDaGVjayg0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogc2l4dGhWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWVz
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIE1h
dHJpeFRyYW5zZm9ybU9wZXJhdGlvbiogbWF0cml4ID0gbmV3IE1hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbihmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlY29uZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXJkVmFsdWUtPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm91cnRoVmFsdWUtPmdldERvdWJsZVZhbHVlKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlmdGhWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXh0aFZhbHVlLT5nZXREb3VibGVWYWx1
ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKG1hdHJpeCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfSAg
IAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQorICAgICAgICBjcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbHVl
LCBtX3N0eWxlLCBvcGVyYXRpb25zKTsKICAgICAgICAgbV9zdHlsZS0+c2V0VHJhbnNmb3JtKG9w
ZXJhdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMyMiw0ICs1MjA4LDE5MSBA
QCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnZpc2l0ZWRTdGF0ZUNoYW5nZWQodW5zaWduZWQgdmlz
aXRlZEhhc2gpCiAgICAgfQogfQogCitib29sIENTU1N0eWxlU2VsZWN0b3I6OmNyZWF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRlclN0eWxlKiBpblN0eWxlLCBU
cmFuc2Zvcm1PcGVyYXRpb25zJiBvdXRPcGVyYXRpb25zKQoreworICAgIFRyYW5zZm9ybU9wZXJh
dGlvbnMgb3BlcmF0aW9uczsKKyAgICBpZiAoaW5WYWx1ZSAmJiAhaW5WYWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENT
U1ZhbHVlTGlzdCo+KGluVmFsdWUpOworICAgICAgICB1bnNpZ25lZCBzaXplID0gbGlzdC0+bGVu
Z3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAg
ICAgICAgICAgIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKiB2YWwgPSBzdGF0aWNfY2FzdDxXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZSo+KGxpc3QtPml0ZW0oaSkpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3RWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDApKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
c3dpdGNoICh2YWwtPm9wZXJhdGlvblR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAg
ICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWFRyYW5zZm9ybU9wZXJh
dGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2Fs
ZVlUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZTo6U2NhbGVaVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgICAgIGNh
c2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlM0RUcmFuc2Zvcm1PcGVyYXRpb246IHsK
KyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHN4ID0gMS4wOworICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgc3kgPSAxLjA7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBzeiA9IDEuMDsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlOjpTY2FsZVpUcmFuc2Zvcm1PcGVyYXRpb24pCisgICAgICAgICAgICAg
ICAgICAgICAgICBzeiA9IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlOjpTY2FsZVlUcmFuc2Zvcm1PcGVyYXRpb24pCisgICAgICAgICAgICAgICAgICAg
ICAgICBzeSA9IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgIHN4ID0gZmlyc3RWYWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwtPm9wZXJhdGlv
blR5cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0
aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+bGVuZ3RoKCkgPiAy
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0
aGlyZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMikp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeiA9IHRoaXJkVmFsdWUtPmdldERv
dWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh2YWwtPmxlbmd0aCgpID4gMSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSgxKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN5ID0gc2Vjb25kVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzeSA9IHN4OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTY2Fs
ZVRyYW5zZm9ybU9wZXJhdGlvbiogc2NhbGUgPSBuZXcgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24o
c3gsIHN5LCBzeik7CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKHNjYWxl
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpUcmFuc2xhdGVYVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgICAgIGNhc2UgV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246CisgICAg
ICAgICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWlRyYW5z
Zm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpUcmFuc2xhdGUzRFRyYW5zZm9ybU9wZXJhdGlvbjogeworICAgICAgICAgICAgICAgICAg
ICBib29sIG9rID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIHR4ID0gTGVuZ3Ro
KDAsIEZpeGVkKTsKKyAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAsIEZp
eGVkKTsKKyAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIHR6ID0gTGVuZ3RoKDAsIEZpeGVkKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVaVHJhbnNmb3JtT3BlcmF0aW9uKQorICAgICAgICAg
ICAgICAgICAgICAgICAgdHogPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgaW5TdHlsZSwg
Jm9rKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsLT5vcGVyYXRpb25UeXBlKCkg
PT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb24p
CisgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVl
LCBpblN0eWxlLCAmb2spOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsgCisgICAgICAgICAg
ICAgICAgICAgICAgICB0eCA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBpblN0eWxlLCAm
b2spOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpICE9
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+bGVuZ3RoKCkgPiAyKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eiA9IGNvbnZlcnRUb0xlbmd0aCh0aGlyZFZh
bHVlLCBpblN0eWxlLCAmb2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT5sZW5ndGgoKSA+IDEpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwg
aW5TdHlsZSwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIGlmICghb2spCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zbGF0ZSA9IG5ldyBUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24odHgsIHR5LCB0eik7CisgICAgICAgICAgICAgICAgICAgIG9wZXJh
dGlvbnMuYXBwZW5kKHRyYW5zbGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICAgICAgY2FzZSBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlWFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAg
ICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVZVHJhbnNmb3JtT3Bl
cmF0aW9uOgorICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJv
dGF0ZVpUcmFuc2Zvcm1PcGVyYXRpb246IHsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHgg
PSAwOworICAgICAgICAgICAgICAgICAgICBkb3VibGUgeSA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIGRvdWJsZSB6ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFuZ2xlID0gZmly
c3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JBRCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0gcmFkMmRlZyhhbmdsZSk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGZpcnN0VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0dSQUQpCisgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSA9IGdy
YWQyZGVnKGFuZ2xlKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IGlmICh2YWwtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90
YXRlWFRyYW5zZm9ybU9wZXJhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSAxOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWwtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlWVRyYW5zZm9ybU9wZXJhdGlvbikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHkgPSAxOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICB6ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgUm90YXRlVHJhbnNm
b3JtT3BlcmF0aW9uKiByb3RhdGUgPSBuZXcgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKHgsIHks
IHosIGFuZ2xlKTsKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5hcHBlbmQocm90YXRl
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJvdGF0ZTNEVHJhbnNmb3Jt
T3BlcmF0aW9uOiB7CisgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNv
bmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDEpKTsK
KyAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHRoaXJkVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSgyKSk7CisgICAgICAgICAgICAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmb3VydGhWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDMpKTsKKyAgICAgICAgICAgICAgICAgICAgZG91Ymxl
IHggPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBk
b3VibGUgeSA9IHNlY29uZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgeiA9IHRoaXJkVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSBhbmdsZSA9IGZvdXJ0aFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoZm91cnRoVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JBRCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
ID0gcmFkMmRlZyhhbmdsZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvdXJ0aFZh
bHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19HUkFEKQorICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGUgPSBncmFkMmRlZyhhbmdsZSk7CisgICAgICAgICAg
ICAgICAgICAgIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiogcm90YXRlID0gbmV3IFJvdGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbih4LCB5LCB6LCBhbmdsZSk7CisgICAgICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbnMuYXBwZW5kKHJvdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdYVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAg
ICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdZVHJhbnNmb3JtT3BlcmF0aW9u
OiB7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBhbmdsZVggPSAwOworICAgICAgICAgICAg
ICAgICAgICBkb3VibGUgYW5nbGVZID0gMDsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFu
Z2xlID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGZpcnN0VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1JBRCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0gcmFkMmRlZyhhbmdsZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZpcnN0VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0dSQUQpCisgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZSA9IGdyYWQyZGVnKGFuZ2xlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+b3Bl
cmF0aW9uVHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3WVRyYW5zZm9ybU9w
ZXJhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlWSA9IGFuZ2xlOworICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlWCA9IGFu
Z2xlOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpID09
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+bGVuZ3RoKCkgPiAxKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDEpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVZID0gc2Vjb25kVmFsdWUtPmdldERvdWJsZVZh
bHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWNvbmRWYWx1ZS0+
cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkFEKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVZID0gcmFkMmRlZyhhbmdsZVkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZWNvbmRWYWx1ZS0+cHJpbWl0
aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlWSA9IGdyYWQyZGVnKGFuZ2xlWSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKiBza2V3ID0gbmV3IFNrZXdUcmFuc2Zvcm1PcGVyYXRp
b24oYW5nbGVYLCBhbmdsZVkpOworICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVu
ZChza2V3KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeFRyYW5z
Zm9ybU9wZXJhdGlvbjogeworICAgICAgICAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0
cml4OworICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0QShzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSgwKSktPmdldEZsb2F0VmFsdWUoKSk7CisgICAgICAgICAg
ICAgICAgICAgIG1hdHJpeC5zZXRCKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
LT5pdGVtKDEpKS0+Z2V0RmxvYXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbWF0cml4
LnNldEMoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMikpLT5nZXRG
bG9hdFZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0RChzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSgzKSktPmdldEZsb2F0VmFsdWUoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXRFKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsLT5pdGVtKDQpKS0+Z2V0RmxvYXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgbWF0cml4LnNldEYoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0o
NSkpLT5nZXRGbG9hdFZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLmFw
cGVuZChuZXcgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKG1hdHJpeCkpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6TWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246IHsKKyAg
ICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtM0QgbWF0cml4KHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsLT5pdGVtKDApKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWwtPml0ZW0oMSkpLT5nZXRGbG9hdFZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRl
bSgyKSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDMpKS0+Z2V0
RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oNCkpLT5nZXRGbG9hdFZhbHVl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSg1KSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsLT5pdGVtKDYpKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWwtPml0ZW0oNykpLT5nZXRGbG9hdFZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSg4
KSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDkpKS0+Z2V0Rmxv
YXRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMTApKS0+Z2V0RmxvYXRWYWx1ZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMTEpKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWwtPml0ZW0oMTIpKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWwtPml0ZW0oMTMpKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0o
MTQpKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMTUpKS0+Z2V0
RmxvYXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5hcHBlbmQobmV3
IE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uKG1hdHJpeCkpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9ICAgCisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIG91dE9wZXJhdGlvbnMgPSBvcGVyYXRpb25z
OworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggYi9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmgKaW5kZXggMDIxZDA2Zi4uNmI0Yzg2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
aApAQCAtMTI5LDYgKzEyOSw4IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBhbGxWaXNpdGVkU3Rh
dGVDaGFuZ2VkKCk7CiAgICAgICAgIHZvaWQgdmlzaXRlZFN0YXRlQ2hhbmdlZCh1bnNpZ25lZCB2
aXNpdGVkSGFzaCk7CiAKKyAgICAgICAgc3RhdGljIGJvb2wgY3JlYXRlVHJhbnNmb3JtT3BlcmF0
aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5bGUqIGluU3R5bGUsIFRyYW5zZm9ybU9w
ZXJhdGlvbnMmIG91dE9wZXJhdGlvbnMpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZW51bSBT
ZWxlY3Rvck1hdGNoIHsgU2VsZWN0b3JNYXRjaGVzLCBTZWxlY3RvckZhaWxzTG9jYWxseSwgU2Vs
ZWN0b3JGYWlsc0NvbXBsZXRlbHkgfTsKICAgICAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVj
dG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNBbmNlc3RvciwgYm9vbCBpc1N1YlNl
bGVjdG9yKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1RyYW5zZm9ybVZhbHVlLmNwcCBi
L1dlYkNvcmUvY3NzL0NTU1RyYW5zZm9ybVZhbHVlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzRmNGRhZS4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NUcmFuc2Zvcm1W
YWx1ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNTU1RyYW5zZm9ybVZhbHVlLmgiCi0jaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DU1NUcmFuc2Zvcm1W
YWx1ZTo6Q1NTVHJhbnNmb3JtVmFsdWUoVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSBvcCkKLTogbV90
eXBlKG9wKQote30KLQotQ1NTVHJhbnNmb3JtVmFsdWU6On5DU1NUcmFuc2Zvcm1WYWx1ZSgpCi17
fQotCi12b2lkIENTU1RyYW5zZm9ybVZhbHVlOjphZGRWYWx1ZShDU1NWYWx1ZSogdmFsKQotewot
ICAgIGlmICghbV92YWx1ZXMpCi0gICAgICAgIG1fdmFsdWVzID0gbmV3IENTU1ZhbHVlTGlzdDsK
LSAgICBtX3ZhbHVlcy0+YXBwZW5kKHZhbCk7Ci19Ci0KLVN0cmluZyBDU1NUcmFuc2Zvcm1WYWx1
ZTo6Y3NzVGV4dCgpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIHJlc3VsdDsKLSAgICBzd2l0Y2gobV90
eXBlKSB7Ci0gICAgICAgIGNhc2UgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAg
ICByZXN1bHQgKz0gInNjYWxlKCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
Y2FsZVhUcmFuc2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAgICByZXN1bHQgKz0gInNjYWxlWCgi
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2NhbGVZVHJhbnNmb3JtT3BlcmF0
aW9uOgotICAgICAgICAgICAgcmVzdWx0ICs9ICJzY2FsZVkoIjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjoKLSAgICAgICAgICAgIHJl
c3VsdCArPSAicm90YXRlKCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTa2V3
VHJhbnNmb3JtT3BlcmF0aW9uOgotICAgICAgICAgICAgcmVzdWx0ICs9ICJza2V3KCI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTa2V3WFRyYW5zZm9ybU9wZXJhdGlvbjoKLSAg
ICAgICAgICAgIHJlc3VsdCArPSAic2tld1goIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uOgotICAgICAgICAgICAgcmVzdWx0ICs9ICJz
a2V3WSgiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uOgotICAgICAgICAgICAgcmVzdWx0ICs9ICJ0cmFuc2xhdGUoIjsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb246
Ci0gICAgICAgICAgICByZXN1bHQgKz0gInRyYW5zbGF0ZVgoIjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAg
ICByZXN1bHQgKz0gInRyYW5zbGF0ZVkoIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjoKLSAgICAgICAgICAgIHJlc3VsdCArPSAibWF0
cml4KCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICAKLSAgICBpZiAobV92YWx1ZXMpCi0gICAgICAgIHJlc3VsdCAr
PSBtX3ZhbHVlcy0+Y3NzVGV4dCgpOwotICAgIAotICAgIHJlc3VsdCArPSAiKSI7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTVHJhbnNmb3Jt
VmFsdWUuaCBiL1dlYkNvcmUvY3NzL0NTU1RyYW5zZm9ybVZhbHVlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZhMzVkMzkuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTVHJh
bnNmb3JtVmFsdWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ1NTVHJhbnNm
b3JtVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUKLXsKLXB1YmxpYzoKLSAgICBlbnVtIFRyYW5zZm9y
bU9wZXJhdGlvblR5cGUgewotICAgICAgICBVbmtub3duVHJhbnNmb3JtT3BlcmF0aW9uLAotICAg
ICAgICBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbiwKLSAgICAgICAgU2NhbGVYVHJhbnNmb3JtT3Bl
cmF0aW9uLAotICAgICAgICBTY2FsZVlUcmFuc2Zvcm1PcGVyYXRpb24sCi0gICAgICAgIFJvdGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbiwKLSAgICAgICAgU2tld1RyYW5zZm9ybU9wZXJhdGlvbiwKLSAg
ICAgICAgU2tld1hUcmFuc2Zvcm1PcGVyYXRpb24sCi0gICAgICAgIFNrZXdZVHJhbnNmb3JtT3Bl
cmF0aW9uLAotICAgICAgICBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24sCi0gICAgICAgIFRy
YW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb24sCi0gICAgICAgIFRyYW5zbGF0ZVlUcmFuc2Zvcm1P
cGVyYXRpb24sCi0gICAgICAgIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbgotICAgIH07Ci0KLSAg
ICBDU1NUcmFuc2Zvcm1WYWx1ZShUcmFuc2Zvcm1PcGVyYXRpb25UeXBlKTsKLSAgICB2aXJ0dWFs
IH5DU1NUcmFuc2Zvcm1WYWx1ZSgpOwotCi0gICAgdm9pZCBhZGRWYWx1ZShDU1NWYWx1ZSopOwot
ICAgIAotICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKLSAKLSAgICBUcmFuc2Zv
cm1PcGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBDU1NW
YWx1ZUxpc3QqIHZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmdldCgpOyB9Ci0gICAg
Ci1wcm90ZWN0ZWQ6Ci0gICAgVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSBtX3R5cGU7Ci0gICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gbV92YWx1ZXM7Ci19OwotCi19CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwIGIvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDQ3YjZmCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApAQCAtMCwwICsxLDE1NCBA
QAorLyoqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUsIEluYy4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rv
ci5oIgorI2luY2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAi
V2ViS2l0Q1NTTWF0cml4LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViS2l0Q1NTTWF0
cml4OjpXZWJLaXRDU1NNYXRyaXgoKSA6IFN0eWxlQmFzZSgwKQoreworfQorCitXZWJLaXRDU1NN
YXRyaXg6OldlYktpdENTU01hdHJpeChjb25zdCBXZWJLaXRDU1NNYXRyaXgmIG0pIDogU3R5bGVC
YXNlKDApCit7CisgICAgbV9tYXRyaXggPSBtLm1fbWF0cml4OworfQorCitXZWJLaXRDU1NNYXRy
aXg6OldlYktpdENTU01hdHJpeChjb25zdCBUcmFuc2Zvcm0zRCYgbSkgOiBTdHlsZUJhc2UoMCkK
K3sKKyAgICBtX21hdHJpeCA9IG07Cit9CisKK1dlYktpdENTU01hdHJpeDo6V2ViS2l0Q1NTTWF0
cml4KGNvbnN0IFN0cmluZyYgcykgOiBTdHlsZUJhc2UoMCkKK3sKKyAgICBzZXRNYXRyaXhWYWx1
ZShzKTsKK30KKworV2ViS2l0Q1NTTWF0cml4Ojp+V2ViS2l0Q1NTTWF0cml4KCkKK3sKK30KKwor
dm9pZCBXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQoreworICAgIENTU1BhcnNlciBwKHVzZVN0cmljdFBhcnNpbmcoKSk7CisgICAgUmVmUHRyPENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZURlY2xhcmF0aW9uID0gbmV3IENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOworICAgIGlmIChwLnBhcnNlVmFsdWUoc3R5bGVEZWNsYXJhdGlv
bi5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIHN0cmluZywgdHJ1ZSkpIHsKKyAg
ICAgICAgLy8gY29udmVydCB0byBUcmFuc2Zvcm1PcGVyYXRpb25zLiBUaGlzIGNhbiBmYWlsIGlm
IGEgcHJvcGVydHkgCisgICAgICAgIC8vIHJlcXVpcmVzIHN0eWxlIChpLmUuLCBwYXJhbSB1c2Vz
ICdlbXMnIG9yICdleHMnKQorICAgICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWwgPSAgc3R5
bGVEZWNsYXJhdGlvbi0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybSk7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKKyAgICAgICAg
aWYgKCFDU1NTdHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbC5nZXQo
KSwgMCwgb3BlcmF0aW9ucykpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAg
ICAvLyBjb252ZXJ0IHRyYW5zZm9ybSBvcGVyYXRpb25zIHRvIGEgVHJhbnNmb3JtM0QuIFRoaXMg
Y2FuIGZhaWwKKyAgICAgICAgLy8gaWYgYSBwYXJhbSBoYXMgYSBwZXJjZW50YWdlICgnJScpCisg
ICAgICAgIFRyYW5zZm9ybTNEIHQ7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBv
cGVyYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAob3BlcmF0aW9uc1tpXS5n
ZXQoKS0+YXBwbHkodCwgSW50U2l6ZSgwLCAwKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBzZXQgdGhlIG1hdHJpeAorICAgICAgICBt
X21hdHJpeCA9IHQ7CisgICAgfQorfQorCisvLyB0aGlzIGlzIGEgbXVsdFJpZ2h0ICh0aGlzID0g
dGhpcyAqIHNlY29uZE1hdHJpeCkKK1dlYktpdENTU01hdHJpeCogV2ViS2l0Q1NTTWF0cml4Ojpt
dWx0aXBseShXZWJLaXRDU1NNYXRyaXgqIHNlY29uZE1hdHJpeCkKK3sKKyAgICBUcmFuc2Zvcm0z
RCB0bXAoc2Vjb25kTWF0cml4LT5tX21hdHJpeCk7CisgICAgdG1wLm11bHRMZWZ0KG1fbWF0cml4
KTsKKyAgICByZXR1cm4gbmV3IFdlYktpdENTU01hdHJpeCh0bXApOworfQorCitXZWJLaXRDU1NN
YXRyaXgqIFdlYktpdENTU01hdHJpeDo6aW52ZXJzZSgpCit7CisgICAgcmV0dXJuIG5ldyBXZWJL
aXRDU1NNYXRyaXgobV9tYXRyaXguaW52ZXJzZSgpKTsKK30KKworV2ViS2l0Q1NTTWF0cml4KiBX
ZWJLaXRDU1NNYXRyaXg6OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorewor
ICAgIGlmIChpc25hbih4KSkgeCA9IDA7IAorICAgIGlmIChpc25hbih5KSkgeSA9IDA7IAorICAg
IGlmIChpc25hbih6KSkgeiA9IDA7IAorICAgIHJldHVybiBuZXcgV2ViS2l0Q1NTTWF0cml4KFRy
YW5zZm9ybTNEKG1fbWF0cml4KS50cmFuc2xhdGUzZCh4LCB5LCB6KSk7Cit9CisKK1dlYktpdENT
U01hdHJpeCogV2ViS2l0Q1NTTWF0cml4OjpzY2FsZShmbG9hdCBzY2FsZVgsIGZsb2F0IHNjYWxl
WSwgZmxvYXQgc2NhbGVaKQoreworICAgIGlmIChpc25hbihzY2FsZVgpKSBzY2FsZVggPSAxOyAK
KyAgICBpZiAoaXNuYW4oc2NhbGVZKSkgc2NhbGVZID0gc2NhbGVYOyAKKyAgICBpZiAoaXNuYW4o
c2NhbGVaKSkgc2NhbGVaID0gMTsgCisgICAgcmV0dXJuIG5ldyBXZWJLaXRDU1NNYXRyaXgoVHJh
bnNmb3JtM0QobV9tYXRyaXgpLnNjYWxlM2Qoc2NhbGVYLCBzY2FsZVksIHNjYWxlWikpOworfQor
CitXZWJLaXRDU1NNYXRyaXgqIFdlYktpdENTU01hdHJpeDo6cm90YXRlKGZsb2F0IHJvdFgsIGZs
b2F0IHJvdFksIGZsb2F0IHJvdFopCit7CisgICAgLy8gaWYgb25seSB0aGUgZmlyc3QgdmFsdWUg
aXMgZ2l2ZW4sIGNvbnNpZGVyIGl0IGFzIHJvdFoKKyAgICBpZiAoaXNuYW4ocm90WSkgJiYgaXNu
YW4ocm90WikpIHsKKyAgICAgICAgcm90WCA9IDA7CisgICAgICAgIHJvdFkgPSAwOworICAgICAg
ICByb3RaID0gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNuYW4ocm90WCkpIHJvdFggPSAwOyAK
KyAgICBpZiAoaXNuYW4ocm90WSkpIHJvdFkgPSAwOyAKKyAgICBpZiAoaXNuYW4ocm90WikpIHJv
dFogPSAwOyAKKyAgICByZXR1cm4gbmV3IFdlYktpdENTU01hdHJpeChUcmFuc2Zvcm0zRChtX21h
dHJpeCkucm90YXRlM2Qocm90WCwgcm90WSwgcm90WikpOworfQorCitXZWJLaXRDU1NNYXRyaXgq
IFdlYktpdENTU01hdHJpeDo6cm90YXRlQXhpc0FuZ2xlKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHosIGZsb2F0IGFuZ2xlKQoreworICAgIGlmIChpc25hbih4KSkgeCA9IDA7IAorICAgIGlmIChp
c25hbih5KSkgeSA9IDA7IAorICAgIGlmIChpc25hbih6KSkgeiA9IDA7CisgICAgaWYgKGlzbmFu
KGFuZ2xlKSkgYW5nbGUgPSAwOworICAgIGlmICh4ID09IDAgJiYgeSA9PSAwICYmIHogPT0gMCkK
KyAgICAgICAgeiA9IDE7CisgICAgcmV0dXJuIG5ldyBXZWJLaXRDU1NNYXRyaXgoVHJhbnNmb3Jt
M0QobV9tYXRyaXgpLnJvdGF0ZTNkKHgsIHksIHosIGFuZ2xlKSk7Cit9CisKK1N0cmluZyBXZWJL
aXRDU1NNYXRyaXg6OnRvU3RyaW5nKCkKK3sKKyAgICAvLyBUZW1wb3JhcmlseSByZXR1cm4gYW4g
YWZmaW5lIHZlcnNpb24gd2hpbGUgcGFyc2luZyBmb3IgM0QgaXMKKyAgICAvLyBkaXNhYmxlZC4g
VGhpcyBpcyBvYnZpb3VzbHkgbG9zc3kuIFdoaWxlIHRoZSBjb250ZW50IGNhbm5vdAorICAgIC8v
IHNwZWNpZnkgM0QgdmlhIENTUywgdGhlIDNkIGZ1bmN0aW9ucyBhcmUgc3RpbGwgYXZhaWxhYmxl
IG9uCisgICAgLy8gdGhpcyBpbnRlcmZhY2UuCisgICAgCisgICAgQWZmaW5lVHJhbnNmb3JtIGFm
ZmluZSA9IG1fbWF0cml4LmFmZmluZVRyYW5zZm9ybSgpOworICAgIHJldHVybiBTdHJpbmc6OmZv
cm1hdCgibWF0cml4KCVmLCAlZiwgJWYsICVmLCAlZiwgJWYpIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWZmaW5lLmEoKSwgYWZmaW5lLmIoKSwgYWZmaW5lLmMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWZmaW5lLmQoKSwgYWZmaW5lLmUoKSwgYWZmaW5lLmYoKSk7CisKKyAg
ICAvKgorICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgibWF0cml4M2QoJWYsICVmLCAlZiwgJWYs
ICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYpIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tMTEoKSwgbV9tYXRyaXgubTEyKCksIG1f
bWF0cml4Lm0xMygpLCBtX21hdHJpeC5tMTQoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9tYXRyaXgubTIxKCksIG1fbWF0cml4Lm0yMigpLCBtX21hdHJpeC5tMjMoKSwgbV9tYXRy
aXgubTI0KCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWF0cml4Lm0zMSgpLCBt
X21hdHJpeC5tMzIoKSwgbV9tYXRyaXgubTMzKCksIG1fbWF0cml4Lm0zNCgpLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tNDEoKSwgbV9tYXRyaXgubTQyKCksIG1fbWF0
cml4Lm00MygpLCBtX21hdHJpeC5tNDQoKSk7CisgICAgICovCit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5oIGIvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMWE1OTNkYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvY3NzL1dlYktpdENTU01h
dHJpeC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUs
IEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmbmRlZiBXZWJLaXRDU1NNYXRyaXhfaAorI2RlZmluZSBXZWJLaXRDU1NNYXRyaXhf
aAorCisjaW5jbHVkZSAiU3R5bGVCYXNlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
KyNpbmNsdWRlICJUcmFuc2Zvcm0zRC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CisKK2NsYXNzIFdlYktpdENTU01hdHJpeCA6IHB1YmxpYyBTdHls
ZUJhc2UgeworcHVibGljOgorICAgIFdlYktpdENTU01hdHJpeCgpOworICAgIFdlYktpdENTU01h
dHJpeChjb25zdCBXZWJLaXRDU1NNYXRyaXgmIG0pOworICAgIFdlYktpdENTU01hdHJpeChjb25z
dCBUcmFuc2Zvcm0zRCYgbSk7CisgICAgV2ViS2l0Q1NTTWF0cml4KGNvbnN0IFN0cmluZyYgcyk7
CisgICAgdmlydHVhbCB+V2ViS2l0Q1NTTWF0cml4KCk7CisKKyAgICBmbG9hdCBtMTEoKSBjb25z
dCB7IHJldHVybiBtX21hdHJpeC5tMTEoKTsgfQorICAgIGZsb2F0IG0xMigpIGNvbnN0IHsgcmV0
dXJuIG1fbWF0cml4Lm0xMigpOyB9CisgICAgZmxvYXQgbTEzKCkgY29uc3QgeyByZXR1cm4gbV9t
YXRyaXgubTEzKCk7IH0KKyAgICBmbG9hdCBtMTQoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5t
MTQoKTsgfQorICAgIGZsb2F0IG0yMSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0yMSgpOyB9
CisgICAgZmxvYXQgbTIyKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXgubTIyKCk7IH0KKyAgICBm
bG9hdCBtMjMoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMjMoKTsgfQorICAgIGZsb2F0IG0y
NCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0yNCgpOyB9CisgICAgZmxvYXQgbTMxKCkgY29u
c3QgeyByZXR1cm4gbV9tYXRyaXgubTMxKCk7IH0KKyAgICBmbG9hdCBtMzIoKSBjb25zdCB7IHJl
dHVybiBtX21hdHJpeC5tMzIoKTsgfQorICAgIGZsb2F0IG0zMygpIGNvbnN0IHsgcmV0dXJuIG1f
bWF0cml4Lm0zMygpOyB9CisgICAgZmxvYXQgbTM0KCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXgu
bTM0KCk7IH0KKyAgICBmbG9hdCBtNDEoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tNDEoKTsg
fQorICAgIGZsb2F0IG00MigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm00MigpOyB9CisgICAg
ZmxvYXQgbTQzKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXgubTQzKCk7IH0KKyAgICBmbG9hdCBt
NDQoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tNDQoKTsgfQorICAgIAorICAgIHZvaWQgc2V0
TTExKGZsb2F0IGYpICAgeyBtX21hdHJpeC5zZXRNMTEoZik7IH0KKyAgICB2b2lkIHNldE0xMihm
bG9hdCBmKSAgIHsgbV9tYXRyaXguc2V0TTEyKGYpOyB9CisgICAgdm9pZCBzZXRNMTMoZmxvYXQg
ZikgICB7IG1fbWF0cml4LnNldE0xMyhmKTsgfQorICAgIHZvaWQgc2V0TTE0KGZsb2F0IGYpICAg
eyBtX21hdHJpeC5zZXRNMTQoZik7IH0KKyAgICB2b2lkIHNldE0yMShmbG9hdCBmKSAgIHsgbV9t
YXRyaXguc2V0TTIxKGYpOyB9CisgICAgdm9pZCBzZXRNMjIoZmxvYXQgZikgICB7IG1fbWF0cml4
LnNldE0yMihmKTsgfQorICAgIHZvaWQgc2V0TTIzKGZsb2F0IGYpICAgeyBtX21hdHJpeC5zZXRN
MjMoZik7IH0KKyAgICB2b2lkIHNldE0yNChmbG9hdCBmKSAgIHsgbV9tYXRyaXguc2V0TTI0KGYp
OyB9CisgICAgdm9pZCBzZXRNMzEoZmxvYXQgZikgICB7IG1fbWF0cml4LnNldE0zMShmKTsgfQor
ICAgIHZvaWQgc2V0TTMyKGZsb2F0IGYpICAgeyBtX21hdHJpeC5zZXRNMzIoZik7IH0KKyAgICB2
b2lkIHNldE0zMyhmbG9hdCBmKSAgIHsgbV9tYXRyaXguc2V0TTMzKGYpOyB9CisgICAgdm9pZCBz
ZXRNMzQoZmxvYXQgZikgICB7IG1fbWF0cml4LnNldE0zNChmKTsgfQorICAgIHZvaWQgc2V0TTQx
KGZsb2F0IGYpICAgeyBtX21hdHJpeC5zZXRNNDEoZik7IH0KKyAgICB2b2lkIHNldE00MihmbG9h
dCBmKSAgIHsgbV9tYXRyaXguc2V0TTQyKGYpOyB9CisgICAgdm9pZCBzZXRNNDMoZmxvYXQgZikg
ICB7IG1fbWF0cml4LnNldE00MyhmKTsgfQorICAgIHZvaWQgc2V0TTQ0KGZsb2F0IGYpICAgeyBt
X21hdHJpeC5zZXRNNDQoZik7IH0KKyAKKyAgICB2b2lkICAgICAgICAgICAgICAgIHNldE1hdHJp
eFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nKTsKKyAgICAKKyAgICAvLyB0aGlzID0gdGhpcyAq
IHNlY29uZE1hdHJpeCAoaS5lLiBtdWx0UmlnaHQpCisgICAgV2ViS2l0Q1NTTWF0cml4KiAgICBt
dWx0aXBseShXZWJLaXRDU1NNYXRyaXgqIHNlY29uZE1hdHJpeCk7CisgICAgCisgICAgLy8gRklY
TUU6IHdlIHJlYWxseSBzaG91bGQgaGF2ZSBhbiBleGNlcHRpb24gaGVyZSwgZm9yIHdoZW4gbWF0
cml4IGlzIG5vdCBpbnZlcnRpYmxlCisgICAgV2ViS2l0Q1NTTWF0cml4KiAgICBpbnZlcnNlKCk7
CisgICAgV2ViS2l0Q1NTTWF0cml4KiAgICB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeik7CisgICAgV2ViS2l0Q1NTTWF0cml4KiAgICBzY2FsZShmbG9hdCBzY2FsZVgsIGZsb2F0
IHNjYWxlWSwgZmxvYXQgc2NhbGVaKTsKKyAgICBXZWJLaXRDU1NNYXRyaXgqICAgIHJvdGF0ZShm
bG9hdCByb3RaLCBmbG9hdCByb3RZLCBmbG9hdCByb3RaKTsKKyAgICBXZWJLaXRDU1NNYXRyaXgq
ICAgIHJvdGF0ZUF4aXNBbmdsZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCBhbmds
ZSk7CisgICAgCisgICAgY29uc3QgVHJhbnNmb3JtM0QmICAgIHRyYW5zZm9ybSgpIHsgcmV0dXJu
IG1fbWF0cml4OyB9CisgICAgCisgICAgU3RyaW5nIHRvU3RyaW5nKCk7CisgICAgCitwcm90ZWN0
ZWQ6CisgICAgVHJhbnNmb3JtM0QgbV9tYXRyaXg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBXZWJLaXRDU1NNYXRyaXhfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTTWF0cml4LmlkbCBiL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU2NGMyMgotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNz
cyB7CisKKyAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCA/OgorICAgIGludGVyZmFjZSBb
CisgICAgICAgIEludGVyZmFjZVVVSUQ9MzQ5Yzk4OWUtODc3Zi00MTZlLTljY2UtY2E4MTFlNTJk
OWU4LAorICAgICAgICBJbXBsZW1lbnRhdGlvblVVSUQ9NWZlYjE2ZTYtZjQ0MS00YjQ2LTliMTAt
OWU4MzNhNGRjZDFiCisgICAgXSBXZWJLaXRDU1NNYXRyaXggeworCisgICAgICAgIGF0dHJpYnV0
ZSBmbG9hdCBtMTE7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMTI7CisgICAgICAgIGF0dHJp
YnV0ZSBmbG9hdCBtMTM7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMTQ7CisgICAgICAgIGF0
dHJpYnV0ZSBmbG9hdCBtMjE7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMjI7CisgICAgICAg
IGF0dHJpYnV0ZSBmbG9hdCBtMjM7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMjQ7CisgICAg
ICAgIGF0dHJpYnV0ZSBmbG9hdCBtMzE7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMzI7Cisg
ICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMzM7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMzQ7
CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtNDE7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBt
NDI7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtNDM7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9h
dCBtNDQ7CisKKyAgICAgICAgdm9pZCAgICAgICAgICAgIHNldE1hdHJpeFZhbHVlKGluIERPTVN0
cmluZyBzdHJpbmcpOworICAgICAgICBXZWJLaXRDU1NNYXRyaXggbXVsdGlwbHkoaW4gV2ViS2l0
Q1NTTWF0cml4IHNlY29uZE1hdHJpeCkgcmFpc2VzIENTU0V4Y2VwdGlvbjsKKyAgICAgICAgV2Vi
S2l0Q1NTTWF0cml4IGludmVyc2UoKSByYWlzZXMgQ1NTRXhjZXB0aW9uOworICAgICAgICBXZWJL
aXRDU1NNYXRyaXggdHJhbnNsYXRlKGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIGZsb2F0IHop
OworICAgICAgICBXZWJLaXRDU1NNYXRyaXggc2NhbGUoaW4gZmxvYXQgc2NhbGVYLCBpbiBmbG9h
dCBzY2FsZVksIGluIGZsb2F0IHNjYWxlWik7CisgICAgICAgIFdlYktpdENTU01hdHJpeCByb3Rh
dGUoaW4gZmxvYXQgcm90WCwgaW4gZmxvYXQgcm90WSwgaW4gZmxvYXQgcm90Wik7CisgICAgICAg
IFdlYktpdENTU01hdHJpeCByb3RhdGVBeGlzQW5nbGUoaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwg
aW4gZmxvYXQgeiwgaW4gZmxvYXQgYW5nbGUpOworICAgICAgICAKKyAgICAgICAgRE9NU3RyaW5n
IHRvU3RyaW5nKCk7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGIvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YmYzOTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAKQEAg
LTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZShUcmFuc2Zvcm1PcGVyYXRpb25UeXBlIG9wKQorOiBtX3R5cGUob3Ap
Cit7fQorCitXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6fldlYktpdENTU1RyYW5zZm9ybVZhbHVl
KCkKK3t9CisKK1N0cmluZyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0
Cit7CisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBzd2l0Y2gobV90eXBlKSB7CisgICAgICAgIGNh
c2UgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0gInNjYWxl
KCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTY2FsZVhUcmFuc2Zvcm1PcGVy
YXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0gInNjYWxlWCgiOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAg
cmVzdWx0ICs9ICJzY2FsZVkoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNj
YWxlWlRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAic2NhbGVaKCI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTY2FsZTNEVHJhbnNmb3JtT3BlcmF0
aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJzY2FsZTNkKCI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICBy
ZXN1bHQgKz0gInJvdGF0ZSgiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUm90
YXRlWFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAicm90YXRlWCgi
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUm90YXRlWVRyYW5zZm9ybU9wZXJh
dGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAicm90YXRlWSgiOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgUm90YXRlWlRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAg
IHJlc3VsdCArPSAicm90YXRlWigiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Um90YXRlM0RUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0gInJvdGF0
ZTNkKCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTa2V3VHJhbnNmb3JtT3Bl
cmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJza2V3KCI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTa2V3WFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJl
c3VsdCArPSAic2tld1goIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNrZXdZ
VHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJza2V3WSgiOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
OgorICAgICAgICAgICAgcmVzdWx0ICs9ICJ0cmFuc2xhdGUoIjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAg
ICByZXN1bHQgKz0gInRyYW5zbGF0ZVgoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0g
InRyYW5zbGF0ZVkoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zbGF0
ZVpUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0gInRyYW5zbGF0ZVoo
IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zbGF0ZTNEVHJhbnNmb3Jt
T3BlcmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJ0cmFuc2xhdGUzZCgiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOgorICAg
ICAgICAgICAgcmVzdWx0ICs9ICJtYXRyaXgoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9
ICJtYXRyaXgzZCgiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgcmVzdWx0ICs9IENTU1ZhbHVlTGlzdDo6
Y3NzVGV4dCgpOworICAgIAorICAgIHJlc3VsdCArPSAiKSI7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
aCBiL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOTc5NWQ5YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
Y3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWVfaAorI2RlZmluZSBXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZV9oCisKKyNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSA6IHB1YmxpYyBDU1NWYWx1
ZUxpc3QKK3sKK3B1YmxpYzoKKyAgICBlbnVtIFRyYW5zZm9ybU9wZXJhdGlvblR5cGUgeworICAg
ICAgICBVbmtub3duVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBTY2FsZVRyYW5zZm9ybU9w
ZXJhdGlvbiwKKyAgICAgICAgU2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBTY2Fs
ZVlUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAgICAgIFNjYWxlWlRyYW5zZm9ybU9wZXJhdGlvbiwK
KyAgICAgICAgU2NhbGUzRFRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAgUm90YXRlVHJhbnNm
b3JtT3BlcmF0aW9uLAorICAgICAgICBSb3RhdGVYVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAg
ICBSb3RhdGVZVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBSb3RhdGVaVHJhbnNmb3JtT3Bl
cmF0aW9uLAorICAgICAgICBSb3RhdGUzRFRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAgU2tl
d1RyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAgU2tld1hUcmFuc2Zvcm1PcGVyYXRpb24sCisg
ICAgICAgIFNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24sCisgICAgICAgIFRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAg
ICAgIFRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAgICAgIFRyYW5zbGF0ZVpUcmFu
c2Zvcm1PcGVyYXRpb24sCisgICAgICAgIFRyYW5zbGF0ZTNEVHJhbnNmb3JtT3BlcmF0aW9uLAor
ICAgICAgICBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAgICAgIE1hdHJpeDNEVHJhbnNm
b3JtT3BlcmF0aW9uCisgICAgfTsKKworICAgIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKFRyYW5z
Zm9ybU9wZXJhdGlvblR5cGUpOworICAgIHZpcnR1YWwgfldlYktpdENTU1RyYW5zZm9ybVZhbHVl
KCk7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CisgCisgICAgVHJhbnNm
b3JtT3BlcmF0aW9uVHlwZSBvcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CisgICAgCitwcm90ZWN0ZWQ6CisgICAgVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSBtX3R5cGU7Cit9
OworCit9CisKKyNlbmRpZiAvLyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZV9oCisKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCBiL1dlYkNvcmUvY3Nz
L1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40ZDAxYmVmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuaWRsCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUsIEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KKyAqLworCittb2R1bGUgY3NzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdl
bmVyYXRlQ29uc3RydWN0b3IsCisgICAgICAgIEhhc0luZGV4R2V0dGVyCisgICAgICAgIEludGVy
ZmFjZVVVSUQ9MzAzZmU2MzItNWRjZi00NDcyLWI5NzctMzNhNTQ4MWUxZDEyLAorICAgICAgICBJ
bXBsZW1lbnRhdGlvblVVSUQ9ZWI0OWU1YzYtNjA3NS00NWI4LWI1YzQtN2U3NzVjMDFlN2M0Cisg
ICAgXSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSA6IENTU1ZhbHVlTGlzdCB7CisKKyAgICAgICAg
Ly8gT3BlcmF0aW9uVHlwZXMKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1VOS05P
V05fVFJBTlNGT1JNID0gMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX01BVFJJ
WCAgICAgICAgICAgID0gMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX01BVFJJ
WDNEICAgICAgICAgID0gMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1JPVEFU
RSAgICAgICAgICAgID0gMzsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1JPVEFU
RTNEICAgICAgICAgID0gNDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1RSQU5T
TEFURSAgICAgICAgID0gNTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1RSQU5T
TEFURTNEICAgICAgID0gNjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1NDQUxF
ICAgICAgICAgICAgID0gNzsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1NDQUxF
M0QgICAgICAgICAgID0gODsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1NLRVdY
ICAgICAgICAgICAgID0gOTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1NLRVdZ
ICAgICAgICAgICAgID0gMTA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19TS0VX
WiAgICAgICAgICAgICA9IDExOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDU1NfUEVS
U1BFQ1RJVkUgICAgICAgPSAxMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1JP
VEFURVggICAgICAgICAgID0gMTM7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19S
T1RBVEVZICAgICAgICAgICA9IDE0OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDU1Nf
Uk9UQVRFWiAgICAgICAgICAgPSAxNTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NT
X1RSQU5TTEFURVggICAgICAgID0gMTY7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENT
U19UUkFOU0xBVEVZICAgICAgICA9IDE3OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBD
U1NfVFJBTlNMQVRFWiAgICAgICAgPSAxODsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
Q1NTX1NDQUxFWCAgICAgICAgICAgID0gMTk7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IENTU19TQ0FMRVkgICAgICAgICAgICA9IDIwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBDU1NfU0NBTEVaICAgICAgICAgICAgPSAyMTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgc2hvcnQgb3BlcmF0aW9uVHlwZTsKKyAgICB9OworCit9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYW5zZm9ybTNELmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVHJhbnNmb3JtM0QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjFiOGQ0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RyYW5zZm9ybTNELmNwcApAQCAtMCwwICsxLDU0MCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgor
I2luY2x1ZGUgIlRyYW5zZm9ybTNELmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyoKK0Fk
YXB0ZWQgZnJvbSBNYXRyaXggSW52ZXJzaW9uIGJ5IFJpY2hhcmQgQ2FybGluZywgR3JhcGhpY3Mg
R2VtcyA8aHR0cDovL3RvZy5hY20ub3JnL0dyYXBoaWNzR2Vtcy9pbmRleC5odG1sPi4KKworRVVM
QTogVGhlIEdyYXBoaWNzIEdlbXMgY29kZSBpcyBjb3B5cmlnaHQtcHJvdGVjdGVkLiBJbiBvdGhl
ciB3b3JkcywgeW91IGNhbm5vdCBjbGFpbSB0aGUgdGV4dCBvZiB0aGUgY29kZSAKK2FzIHlvdXIg
b3duIGFuZCByZXNlbGwgaXQuIFVzaW5nIHRoZSBjb2RlIGlzIHBlcm1pdHRlZCBpbiBhbnkgcHJv
Z3JhbSwgcHJvZHVjdCwgb3IgbGlicmFyeSwgbm9uLWNvbW1lcmNpYWwgCitvciBjb21tZXJjaWFs
LiBHaXZpbmcgY3JlZGl0IGlzIG5vdCByZXF1aXJlZCwgdGhvdWdoIGlzIGEgbmljZSBnZXN0dXJl
LiBUaGUgY29kZSBjb21lcyBhcy1pcywgYW5kIGlmIHRoZXJlIAorYXJlIGFueSBmbGF3cyBvciBw
cm9ibGVtcyB3aXRoIGFueSBHZW1zIGNvZGUsIG5vYm9keSBpbnZvbHZlZCB3aXRoIEdlbXMgLSBh
dXRob3JzLCBlZGl0b3JzLCBwdWJsaXNoZXJzLCBvciAKK3dlYm1hc3RlcnMgLSBhcmUgdG8gYmUg
aGVsZCByZXNwb25zaWJsZS4gQmFzaWNhbGx5LCBkb24ndCBiZSBhIGplcmssIGFuZCByZW1lbWJl
ciB0aGF0IGFueXRoaW5nIGZyZWUgY29tZXMgCit3aXRoIG5vIGd1YXJhbnRlZS4KKyovCisKK3R5
cGVkZWYgZmxvYXQgTWF0cml4NFs0XVs0XTsKKworI2RlZmluZSBTTUFMTF9OVU1CRVIgICAgMS5l
LTgKKworLyogCisgKiAgIGludmVyc2UoIG9yaWdpbmFsX21hdHJpeCwgaW52ZXJzZV9tYXRyaXgg
KQorICogCisgKiAgICBjYWxjdWxhdGUgdGhlIGludmVyc2Ugb2YgYSA0eDQgbWF0cml4CisgKgor
ICogICAgIC0xICAgICAKKyAqICAgICBBICA9IF9fXzFfXyBhZGpvaW50IEEKKyAqICAgICAgICAg
ZGV0IEEKKyAqLworCisvKgorICogZG91YmxlID0gZGV0MngyKCBkb3VibGUgYSwgZG91YmxlIGIs
IGRvdWJsZSBjLCBkb3VibGUgZCApCisgKiAKKyAqIGNhbGN1bGF0ZSB0aGUgZGV0ZXJtaW5hbnQg
b2YgYSAyeDIgbWF0cml4LgorICovCisKK3N0YXRpYyBmbG9hdCBkZXQyeDIoZmxvYXQgYSwgZmxv
YXQgYiwgZmxvYXQgYywgZmxvYXQgZCkKK3sKKyAgICBmbG9hdCBhbnM7CisgICAgYW5zID0gYSAq
IGQgLSBiICogYzsKKyAgICByZXR1cm4gYW5zOworfQorCisvKgorICogZG91YmxlID0gZGV0M3gz
KCAgYTEsIGEyLCBhMywgYjEsIGIyLCBiMywgYzEsIGMyLCBjMyApCisgKiAKKyAqIGNhbGN1bGF0
ZSB0aGUgZGV0ZXJtaW5hbnQgb2YgYSAzeDMgbWF0cml4CisgKiBpbiB0aGUgZm9ybQorICoKKyAq
ICAgICB8IGExLCAgYjEsICBjMSB8CisgKiAgICAgfCBhMiwgIGIyLCAgYzIgfAorICogICAgIHwg
YTMsICBiMywgIGMzIHwKKyAqLworCitzdGF0aWMgZmxvYXQgZGV0M3gzKGZsb2F0IGExLCBmbG9h
dCBhMiwgZmxvYXQgYTMsIGZsb2F0IGIxLCBmbG9hdCBiMiwgZmxvYXQgYjMsIGZsb2F0IGMxLCBm
bG9hdCBjMiwgZmxvYXQgYzMpCit7CisgICAgZmxvYXQgYW5zOworCisgICAgYW5zID0gYTEgKiBk
ZXQyeDIoIGIyLCBiMywgYzIsIGMzICkKKyAgICAgICAgLSBiMSAqIGRldDJ4MiggYTIsIGEzLCBj
MiwgYzMgKQorICAgICAgICArIGMxICogZGV0MngyKCBhMiwgYTMsIGIyLCBiMyApOworICAgIHJl
dHVybiBhbnM7Cit9CisKKy8qCisgKiBkb3VibGUgPSBkZXQ0eDQoIG1hdHJpeCApCisgKiAKKyAq
IGNhbGN1bGF0ZSB0aGUgZGV0ZXJtaW5hbnQgb2YgYSA0eDQgbWF0cml4LgorICovCitzdGF0aWMg
ZmxvYXQgZGV0NHg0KGNvbnN0IE1hdHJpeDQgbSkKK3sKKyAgICBmbG9hdCBhbnM7CisgICAgZmxv
YXQgYTEsIGEyLCBhMywgYTQsIGIxLCBiMiwgYjMsIGI0LCBjMSwgYzIsIGMzLCBjNCwgZDEsIGQy
LCBkMywgZDQ7CisKKyAgICAvKiBhc3NpZ24gdG8gaW5kaXZpZHVhbCB2YXJpYWJsZSBuYW1lcyB0
byBhaWQgc2VsZWN0aW5nICovCisgICAgLyogIGNvcnJlY3QgZWxlbWVudHMgKi8KKworICAgIGEx
ID0gbVswXVswXTsgYjEgPSBtWzBdWzFdOyAKKyAgICBjMSA9IG1bMF1bMl07IGQxID0gbVswXVsz
XTsKKworICAgIGEyID0gbVsxXVswXTsgYjIgPSBtWzFdWzFdOyAKKyAgICBjMiA9IG1bMV1bMl07
IGQyID0gbVsxXVszXTsKKworICAgIGEzID0gbVsyXVswXTsgYjMgPSBtWzJdWzFdOyAKKyAgICBj
MyA9IG1bMl1bMl07IGQzID0gbVsyXVszXTsKKworICAgIGE0ID0gbVszXVswXTsgYjQgPSBtWzNd
WzFdOyAKKyAgICBjNCA9IG1bM11bMl07IGQ0ID0gbVszXVszXTsKKworICAgIGFucyA9IGExICog
ZGV0M3gzKCBiMiwgYjMsIGI0LCBjMiwgYzMsIGM0LCBkMiwgZDMsIGQ0KQorICAgICAgICAtIGIx
ICogZGV0M3gzKCBhMiwgYTMsIGE0LCBjMiwgYzMsIGM0LCBkMiwgZDMsIGQ0KQorICAgICAgICAr
IGMxICogZGV0M3gzKCBhMiwgYTMsIGE0LCBiMiwgYjMsIGI0LCBkMiwgZDMsIGQ0KQorICAgICAg
ICAtIGQxICogZGV0M3gzKCBhMiwgYTMsIGE0LCBiMiwgYjMsIGI0LCBjMiwgYzMsIGM0KTsKKyAg
ICByZXR1cm4gYW5zOworfQorCisvKiAKKyAqICAgYWRqb2ludCggb3JpZ2luYWxfbWF0cml4LCBp
bnZlcnNlX21hdHJpeCApCisgKiAKKyAqICAgICBjYWxjdWxhdGUgdGhlIGFkam9pbnQgb2YgYSA0
eDQgbWF0cml4CisgKgorICogICAgICBMZXQgIGEgICBkZW5vdGUgdGhlIG1pbm9yIGRldGVybWlu
YW50IG9mIG1hdHJpeCBBIG9idGFpbmVkIGJ5CisgKiAgICAgICAgICAgaWoKKyAqCisgKiAgICAg
IGRlbGV0aW5nIHRoZSBpdGggcm93IGFuZCBqdGggY29sdW1uIGZyb20gQS4KKyAqCisgKiAgICAg
ICAgICAgICAgICAgICAgaStqCisgKiAgICAgTGV0ICBiICAgPSAoLTEpICAgIGEKKyAqICAgICAg
ICAgIGlqICAgICAgICAgICAgamkKKyAqCisgKiAgICBUaGUgbWF0cml4IEIgPSAoYiAgKSBpcyB0
aGUgYWRqb2ludCBvZiBBCisgKiAgICAgICAgICAgICAgICAgICAgIGlqCisgKi8KKworc3RhdGlj
IHZvaWQgYWRqb2ludChjb25zdCBNYXRyaXg0IHNyY01hdHJpeCwgTWF0cml4NCBvdXRNYXRyaXgp
Cit7CisgICAgZmxvYXQgYTEsIGEyLCBhMywgYTQsIGIxLCBiMiwgYjMsIGI0OworICAgIGZsb2F0
IGMxLCBjMiwgYzMsIGM0LCBkMSwgZDIsIGQzLCBkNDsKKworICAgIC8qIGFzc2lnbiB0byBpbmRp
dmlkdWFsIHZhcmlhYmxlIG5hbWVzIHRvIGFpZCAgKi8KKyAgICAvKiBzZWxlY3RpbmcgY29ycmVj
dCB2YWx1ZXMgICovCisKKyAgICBhMSA9IHNyY01hdHJpeFswXVswXTsgYjEgPSBzcmNNYXRyaXhb
MF1bMV07IAorICAgIGMxID0gc3JjTWF0cml4WzBdWzJdOyBkMSA9IHNyY01hdHJpeFswXVszXTsK
KworICAgIGEyID0gc3JjTWF0cml4WzFdWzBdOyBiMiA9IHNyY01hdHJpeFsxXVsxXTsgCisgICAg
YzIgPSBzcmNNYXRyaXhbMV1bMl07IGQyID0gc3JjTWF0cml4WzFdWzNdOworCisgICAgYTMgPSBz
cmNNYXRyaXhbMl1bMF07IGIzID0gc3JjTWF0cml4WzJdWzFdOworICAgIGMzID0gc3JjTWF0cml4
WzJdWzJdOyBkMyA9IHNyY01hdHJpeFsyXVszXTsKKworICAgIGE0ID0gc3JjTWF0cml4WzNdWzBd
OyBiNCA9IHNyY01hdHJpeFszXVsxXTsgCisgICAgYzQgPSBzcmNNYXRyaXhbM11bMl07IGQ0ID0g
c3JjTWF0cml4WzNdWzNdOworCisKKyAgICAvKiByb3cgY29sdW1uIGxhYmVsaW5nIHJldmVyc2Vk
IHNpbmNlIHdlIHRyYW5zcG9zZSByb3dzICYgY29sdW1ucyAqLworCisgICAgb3V0TWF0cml4WzBd
WzBdICA9ICAgZGV0M3gzKCBiMiwgYjMsIGI0LCBjMiwgYzMsIGM0LCBkMiwgZDMsIGQ0KTsKKyAg
ICBvdXRNYXRyaXhbMV1bMF0gID0gLSBkZXQzeDMoIGEyLCBhMywgYTQsIGMyLCBjMywgYzQsIGQy
LCBkMywgZDQpOworICAgIG91dE1hdHJpeFsyXVswXSAgPSAgIGRldDN4MyggYTIsIGEzLCBhNCwg
YjIsIGIzLCBiNCwgZDIsIGQzLCBkNCk7CisgICAgb3V0TWF0cml4WzNdWzBdICA9IC0gZGV0M3gz
KCBhMiwgYTMsIGE0LCBiMiwgYjMsIGI0LCBjMiwgYzMsIGM0KTsKKyAgICAgICAgCisgICAgb3V0
TWF0cml4WzBdWzFdICA9IC0gZGV0M3gzKCBiMSwgYjMsIGI0LCBjMSwgYzMsIGM0LCBkMSwgZDMs
IGQ0KTsKKyAgICBvdXRNYXRyaXhbMV1bMV0gID0gICBkZXQzeDMoIGExLCBhMywgYTQsIGMxLCBj
MywgYzQsIGQxLCBkMywgZDQpOworICAgIG91dE1hdHJpeFsyXVsxXSAgPSAtIGRldDN4MyggYTEs
IGEzLCBhNCwgYjEsIGIzLCBiNCwgZDEsIGQzLCBkNCk7CisgICAgb3V0TWF0cml4WzNdWzFdICA9
ICAgZGV0M3gzKCBhMSwgYTMsIGE0LCBiMSwgYjMsIGI0LCBjMSwgYzMsIGM0KTsKKyAgICAgICAg
CisgICAgb3V0TWF0cml4WzBdWzJdICA9ICAgZGV0M3gzKCBiMSwgYjIsIGI0LCBjMSwgYzIsIGM0
LCBkMSwgZDIsIGQ0KTsKKyAgICBvdXRNYXRyaXhbMV1bMl0gID0gLSBkZXQzeDMoIGExLCBhMiwg
YTQsIGMxLCBjMiwgYzQsIGQxLCBkMiwgZDQpOworICAgIG91dE1hdHJpeFsyXVsyXSAgPSAgIGRl
dDN4MyggYTEsIGEyLCBhNCwgYjEsIGIyLCBiNCwgZDEsIGQyLCBkNCk7CisgICAgb3V0TWF0cml4
WzNdWzJdICA9IC0gZGV0M3gzKCBhMSwgYTIsIGE0LCBiMSwgYjIsIGI0LCBjMSwgYzIsIGM0KTsK
KyAgICAgICAgCisgICAgb3V0TWF0cml4WzBdWzNdICA9IC0gZGV0M3gzKCBiMSwgYjIsIGIzLCBj
MSwgYzIsIGMzLCBkMSwgZDIsIGQzKTsKKyAgICBvdXRNYXRyaXhbMV1bM10gID0gICBkZXQzeDMo
IGExLCBhMiwgYTMsIGMxLCBjMiwgYzMsIGQxLCBkMiwgZDMpOworICAgIG91dE1hdHJpeFsyXVsz
XSAgPSAtIGRldDN4MyggYTEsIGEyLCBhMywgYjEsIGIyLCBiMywgZDEsIGQyLCBkMyk7CisgICAg
b3V0TWF0cml4WzNdWzNdICA9ICAgZGV0M3gzKCBhMSwgYTIsIGEzLCBiMSwgYjIsIGIzLCBjMSwg
YzIsIGMzKTsKK30KKworLy8gcmV0dXJucyBmYWxzZSBpZiB0aGUgbWF0cml4IGlzIG5vdCBpbnRl
cnRpYmxlCitzdGF0aWMgYm9vbCBpbnZlcnNlKGNvbnN0IE1hdHJpeDQgc3JjTWF0cml4LCBNYXRy
aXg0IG91dE1hdHJpeCkKK3sKKyAgICAvKiBjYWxjdWxhdGUgdGhlIGFkam9pbnQgbWF0cml4ICov
CisKKyAgICBhZGpvaW50KHNyY01hdHJpeCwgb3V0TWF0cml4KTsKKworICAgIC8qICBjYWxjdWxh
dGUgdGhlIDR4NCBkZXRlcm1pbmFudAorICAgICAqICBpZiB0aGUgZGV0ZXJtaW5hbnQgaXMgemVy
bywgCisgICAgICogIHRoZW4gdGhlIGludmVyc2UgbWF0cml4IGlzIG5vdCB1bmlxdWUuCisgICAg
ICovCisKKyAgICBmbG9hdCBkZXQgPSBkZXQ0eDQoc3JjTWF0cml4KTsKKworICAgIGlmIChmYWJz
KGRldCkgPCBTTUFMTF9OVU1CRVIpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKwor
ICAgIC8qIHNjYWxlIHRoZSBhZGpvaW50IG1hdHJpeCB0byBnZXQgdGhlIGludmVyc2UgKi8KKwor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNDsgaSsrKQorICAgICAgICBmb3IgKGludCBqID0gMDsg
aiA8IDQ7IGorKykKKyAgICAgICAgICAgIG91dE1hdHJpeFtpXVtqXSA9IG91dE1hdHJpeFtpXVtq
XSAvIGRldDsKKworICAgIHJldHVybiB0cnVlOworfQorCisvKiBFbmQgb2YgY29kZSBhZGFwdGVk
IGZyb20gTWF0cml4IEludmVyc2lvbiBieSBSaWNoYXJkIENhcmxpbmcgKi8KKworVHJhbnNmb3Jt
M0Q6OlRyYW5zZm9ybTNEKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdCkKK3sKKyAgICBtYWtlSWRl
bnRpdHkoKTsKKyAgICBtX21hdHJpeFswXVswXSA9IChmbG9hdCkgdC5hKCk7CisgICAgbV9tYXRy
aXhbMF1bMV0gPSAoZmxvYXQpIHQuYigpOworICAgIG1fbWF0cml4WzFdWzBdID0gKGZsb2F0KSB0
LmMoKTsKKyAgICBtX21hdHJpeFsxXVsxXSA9IChmbG9hdCkgdC5kKCk7CisKKyAgICBtX21hdHJp
eFszXVswXSA9IChmbG9hdCkgdC5lKCk7CisgICAgbV9tYXRyaXhbM11bMV0gPSAoZmxvYXQpIHQu
ZigpOworfQorCitUcmFuc2Zvcm0zRCYgVHJhbnNmb3JtM0Q6OnNjYWxlKGZsb2F0IHN4LCBmbG9h
dCBzeSkKK3sKKyAgICBUcmFuc2Zvcm0zRCBtYXQ7CisgICAgbWF0Lm1fbWF0cml4WzBdWzBdID0g
c3g7CisgICAgbWF0Lm1fbWF0cml4WzFdWzFdID0gc3k7CisKKyAgICBtdWx0TGVmdChtYXQpOwor
ICAgIHJldHVybiAqdGhpczsKK30KKworVHJhbnNmb3JtM0QmIFRyYW5zZm9ybTNEOjpzY2FsZTNk
KGZsb2F0IHN4LCBmbG9hdCBzeSwgZmxvYXQgc3opCit7CisgICAgVHJhbnNmb3JtM0QgbWF0Owor
ICAgIG1hdC5tX21hdHJpeFswXVswXSA9IHN4OworICAgIG1hdC5tX21hdHJpeFsxXVsxXSA9IHN5
OworICAgIG1hdC5tX21hdHJpeFsyXVsyXSA9IHN6OworCisgICAgbXVsdExlZnQobWF0KTsKKyAg
ICByZXR1cm4gKnRoaXM7Cit9CisKK1RyYW5zZm9ybTNEJiBUcmFuc2Zvcm0zRDo6cm90YXRlM2Qo
ZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeiwgZmxvYXQgYW5nbGUpCit7CisgICAgLy8gYW5nbGVz
IGFyZSBpbiBkZWdyZWVzLiBTd2l0Y2ggdG8gcmFkaWFucworICAgIGFuZ2xlID0gKGZsb2F0KSAo
YW5nbGUgLyAzNjAuMCAqIE1fUEkgKiAyLjApOworICAgIAorICAgIGFuZ2xlIC89IDIuMGY7Cisg
ICAgZmxvYXQgc2luQSA9IHNpbmYoYW5nbGUpOworICAgIGZsb2F0IGNvc0EgPSBjb3NmKGFuZ2xl
KTsKKyAgICBmbG9hdCBzaW5BMiA9IHNpbkEgKiBzaW5BOworICAgIAorICAgIC8vIG5vcm1hbGl6
ZQorICAgIGZsb2F0IGxlbmd0aCA9IHNxcnRmKHgqeCt5Knkreip6KTsKKyAgICBpZiAobGVuZ3Ro
ID09IDApIHsKKyAgICAgICAgLy8gYmFkIHZlY3RvciwganVzdCB1c2Ugc29tZXRoaW5nIHJlYXNv
bmFibGUKKyAgICAgICAgeCA9IDA7CisgICAgICAgIHkgPSAwOworICAgICAgICB6ID0gMTsKKyAg
ICB9CisgICAgZWxzZSBpZiAobGVuZ3RoICE9IDEpIHsKKyAgICAgICAgeCAvPSBsZW5ndGg7Cisg
ICAgICAgIHkgLz0gbGVuZ3RoOworICAgICAgICB6IC89IGxlbmd0aDsKKyAgICB9CisgICAgCisg
ICAgVHJhbnNmb3JtM0QgbWF0OworCisgICAgLy8gb3B0aW1pemUgY2FzZSB3aGVyZSBheGlzIGlz
IGFsb25nIG1ham9yIGF4aXMKKyAgICBpZiAoeCA9PSAxLjBmICYmIHkgPT0gMC4wZiAmJiB6ID09
IDAuMGYpIHsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzBdID0gMS4wZjsKKyAgICAgICAgbWF0
Lm1fbWF0cml4WzBdWzFdID0gMC4wZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzJdID0gMC4w
ZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzFdWzBdID0gMC4wZjsKKyAgICAgICAgbWF0Lm1fbWF0
cml4WzFdWzFdID0gMS4wZiAtIDIuMGYgKiBzaW5BMjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzFd
WzJdID0gMi4wZiAqIHNpbkEgKiBjb3NBOworICAgICAgICBtYXQubV9tYXRyaXhbMl1bMF0gPSAw
LjBmOworICAgICAgICBtYXQubV9tYXRyaXhbMl1bMV0gPSAtMi4wZiAqIHNpbkEgKiBjb3NBOwor
ICAgICAgICBtYXQubV9tYXRyaXhbMl1bMl0gPSAxLjBmIC0gMi4wZiAqIHNpbkEyOworICAgICAg
ICBtYXQubV9tYXRyaXhbMF1bM10gPSBtYXQubV9tYXRyaXhbMV1bM10gPSBtYXQubV9tYXRyaXhb
Ml1bM10gPSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhbM11bMF0gPSBtYXQubV9tYXRyaXhb
M11bMV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhb
M11bM10gPSAxLjBmOworICAgIH0KKyAgICBlbHNlIGlmICh4ID09IDAuMGYgJiYgeSA9PSAxLjBm
ICYmIHogPT0gMC4wZikgeworICAgICAgICBtYXQubV9tYXRyaXhbMF1bMF0gPSAxLjBmIC0gMi4w
ZiAqIHNpbkEyOworICAgICAgICBtYXQubV9tYXRyaXhbMF1bMV0gPSAwLjBmOworICAgICAgICBt
YXQubV9tYXRyaXhbMF1bMl0gPSAtMi4wZiAqIHNpbkEgKiBjb3NBOworICAgICAgICBtYXQubV9t
YXRyaXhbMV1bMF0gPSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhbMV1bMV0gPSAxLjBmOwor
ICAgICAgICBtYXQubV9tYXRyaXhbMV1bMl0gPSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhb
Ml1bMF0gPSAyLjBmICogc2luQSAqIGNvc0E7CisgICAgICAgIG1hdC5tX21hdHJpeFsyXVsxXSA9
IDAuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFsyXVsyXSA9IDEuMGYgLSAyLjBmICogc2luQTI7
CisgICAgICAgIG1hdC5tX21hdHJpeFswXVszXSA9IG1hdC5tX21hdHJpeFsxXVszXSA9IG1hdC5t
X21hdHJpeFsyXVszXSA9IDAuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFszXVswXSA9IG1hdC5t
X21hdHJpeFszXVsxXSA9IG1hdC5tX21hdHJpeFszXVsyXSA9IDAuMGY7CisgICAgICAgIG1hdC5t
X21hdHJpeFszXVszXSA9IDEuMGY7CisgICAgfQorICAgIGVsc2UgaWYgKHggPT0gMC4wZiAmJiB5
ID09IDAuMGYgJiYgeiA9PSAxLjBmKSB7CisgICAgICAgIG1hdC5tX21hdHJpeFswXVswXSA9IDEu
MGYgLSAyLjBmICogc2luQTI7CisgICAgICAgIG1hdC5tX21hdHJpeFswXVsxXSA9IDIuMGYgKiBz
aW5BICogY29zQTsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzJdID0gMC4wZjsKKyAgICAgICAg
bWF0Lm1fbWF0cml4WzFdWzBdID0gLTIuMGYgKiBzaW5BICogY29zQTsKKyAgICAgICAgbWF0Lm1f
bWF0cml4WzFdWzFdID0gMS4wZiAtIDIuMGYgKiBzaW5BMjsKKyAgICAgICAgbWF0Lm1fbWF0cml4
WzFdWzJdID0gMC4wZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzJdWzBdID0gMC4wZjsKKyAgICAg
ICAgbWF0Lm1fbWF0cml4WzJdWzFdID0gMC4wZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzJdWzJd
ID0gMS4wZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzNdID0gbWF0Lm1fbWF0cml4WzFdWzNd
ID0gbWF0Lm1fbWF0cml4WzJdWzNdID0gMC4wZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzNdWzBd
ID0gbWF0Lm1fbWF0cml4WzNdWzFdID0gbWF0Lm1fbWF0cml4WzNdWzJdID0gMC4wZjsKKyAgICAg
ICAgbWF0Lm1fbWF0cml4WzNdWzNdID0gMS4wZjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAg
IGZsb2F0IHgyID0geCp4OyBmbG9hdCB5MiA9IHkqeTsgZmxvYXQgejIgPSB6Kno7CisgICAgCisg
ICAgICAgIG1hdC5tX21hdHJpeFswXVswXSA9IDEuMGYgLSAyLjBmICogKHkyICsgejIpICogc2lu
QTI7CisgICAgICAgIG1hdC5tX21hdHJpeFswXVsxXSA9IDIuMGYgKiAoeCAqIHkgKiBzaW5BMiAr
IHogKiBzaW5BICogY29zQSk7CisgICAgICAgIG1hdC5tX21hdHJpeFswXVsyXSA9IDIuMGYgKiAo
eCAqIHogKiBzaW5BMiAtIHkgKiBzaW5BICogY29zQSk7CisgICAgICAgIG1hdC5tX21hdHJpeFsx
XVswXSA9IDIuMGYgKiAoeSAqIHggKiBzaW5BMiAtIHogKiBzaW5BICogY29zQSk7CisgICAgICAg
IG1hdC5tX21hdHJpeFsxXVsxXSA9IDEuMGYgLSAyLjBmICogKHoyICsgeDIpICogc2luQTI7Cisg
ICAgICAgIG1hdC5tX21hdHJpeFsxXVsyXSA9IDIuMGYgKiAoeSAqIHogKiBzaW5BMiArIHggKiBz
aW5BICogY29zQSk7CisgICAgICAgIG1hdC5tX21hdHJpeFsyXVswXSA9IDIuMGYgKiAoeiAqIHgg
KiBzaW5BMiArIHkgKiBzaW5BICogY29zQSk7CisgICAgICAgIG1hdC5tX21hdHJpeFsyXVsxXSA9
IDIuMGYgKiAoeiAqIHkgKiBzaW5BMiAtIHggKiBzaW5BICogY29zQSk7CisgICAgICAgIG1hdC5t
X21hdHJpeFsyXVsyXSA9IDEuMGYgLSAyLjBmICogKHgyICsgeTIpICogc2luQTI7CisgICAgICAg
IG1hdC5tX21hdHJpeFswXVszXSA9IG1hdC5tX21hdHJpeFsxXVszXSA9IG1hdC5tX21hdHJpeFsy
XVszXSA9IDAuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFszXVswXSA9IG1hdC5tX21hdHJpeFsz
XVsxXSA9IG1hdC5tX21hdHJpeFszXVsyXSA9IDAuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFsz
XVszXSA9IDEuMGY7CisgICAgfQorICAgIG11bHRMZWZ0KG1hdCk7CisgICAgcmV0dXJuICp0aGlz
OworfQorCitUcmFuc2Zvcm0zRCYgVHJhbnNmb3JtM0Q6OnJvdGF0ZTNkKGZsb2F0IHJ4LCBmbG9h
dCByeSwgZmxvYXQgcnopCit7CisgICAgLy8gYW5nbGVzIGFyZSBpbiBkZWdyZWVzLiBTd2l0Y2gg
dG8gcmFkaWFucworICAgIHJ4ID0gKGZsb2F0KSAocnggLyAzNjAuMCAqIE1fUEkgKiAyLjApOwor
ICAgIHJ5ID0gKGZsb2F0KSAocnkgLyAzNjAuMCAqIE1fUEkgKiAyLjApOworICAgIHJ6ID0gKGZs
b2F0KSAocnogLyAzNjAuMCAqIE1fUEkgKiAyLjApOworICAgIAorICAgIFRyYW5zZm9ybTNEIG1h
dDsKKyAgICAKKyAgICByeCAvPSAyLjBmOworICAgIGZsb2F0IHNpbkEgPSBzaW5mKHJ4KTsKKyAg
ICBmbG9hdCBjb3NBID0gY29zZihyeCk7CisgICAgZmxvYXQgc2luQTIgPSBzaW5BICogc2luQTsK
KyAgICAKKyAgICBtYXQubV9tYXRyaXhbMF1bMF0gPSAxLjBmOworICAgIG1hdC5tX21hdHJpeFsw
XVsxXSA9IDAuMGY7CisgICAgbWF0Lm1fbWF0cml4WzBdWzJdID0gMC4wZjsKKyAgICBtYXQubV9t
YXRyaXhbMV1bMF0gPSAwLjBmOworICAgIG1hdC5tX21hdHJpeFsxXVsxXSA9IDEuMGYgLSAyLjBm
ICogc2luQTI7CisgICAgbWF0Lm1fbWF0cml4WzFdWzJdID0gMi4wZiAqIHNpbkEgKiBjb3NBOwor
ICAgIG1hdC5tX21hdHJpeFsyXVswXSA9IDAuMGY7CisgICAgbWF0Lm1fbWF0cml4WzJdWzFdID0g
LTIuMGYgKiBzaW5BICogY29zQTsKKyAgICBtYXQubV9tYXRyaXhbMl1bMl0gPSAxLjBmIC0gMi4w
ZiAqIHNpbkEyOworICAgIG1hdC5tX21hdHJpeFswXVszXSA9IG1hdC5tX21hdHJpeFsxXVszXSA9
IG1hdC5tX21hdHJpeFsyXVszXSA9IDAuMGY7CisgICAgbWF0Lm1fbWF0cml4WzNdWzBdID0gbWF0
Lm1fbWF0cml4WzNdWzFdID0gbWF0Lm1fbWF0cml4WzNdWzJdID0gMC4wZjsKKyAgICBtYXQubV9t
YXRyaXhbM11bM10gPSAxLjBmOworICAgIAorICAgIFRyYW5zZm9ybTNEIHJtYXQobWF0KTsKKyAg
ICAKKyAgICByeSAvPSAyLjBmOworICAgIHNpbkEgPSBzaW5mKHJ5KTsKKyAgICBjb3NBID0gY29z
ZihyeSk7CisgICAgc2luQTIgPSBzaW5BICogc2luQTsKKyAgICAKKyAgICBtYXQubV9tYXRyaXhb
MF1bMF0gPSAxLjBmIC0gMi4wZiAqIHNpbkEyOworICAgIG1hdC5tX21hdHJpeFswXVsxXSA9IDAu
MGY7CisgICAgbWF0Lm1fbWF0cml4WzBdWzJdID0gLTIuMGYgKiBzaW5BICogY29zQTsKKyAgICBt
YXQubV9tYXRyaXhbMV1bMF0gPSAwLjBmOworICAgIG1hdC5tX21hdHJpeFsxXVsxXSA9IDEuMGY7
CisgICAgbWF0Lm1fbWF0cml4WzFdWzJdID0gMC4wZjsKKyAgICBtYXQubV9tYXRyaXhbMl1bMF0g
PSAyLjBmICogc2luQSAqIGNvc0E7CisgICAgbWF0Lm1fbWF0cml4WzJdWzFdID0gMC4wZjsKKyAg
ICBtYXQubV9tYXRyaXhbMl1bMl0gPSAxLjBmIC0gMi4wZiAqIHNpbkEyOworICAgIG1hdC5tX21h
dHJpeFswXVszXSA9IG1hdC5tX21hdHJpeFsxXVszXSA9IG1hdC5tX21hdHJpeFsyXVszXSA9IDAu
MGY7CisgICAgbWF0Lm1fbWF0cml4WzNdWzBdID0gbWF0Lm1fbWF0cml4WzNdWzFdID0gbWF0Lm1f
bWF0cml4WzNdWzJdID0gMC4wZjsKKyAgICBtYXQubV9tYXRyaXhbM11bM10gPSAxLjBmOworICAg
IAorICAgIHJtYXQubXVsdExlZnQobWF0KTsKKworICAgIHJ6IC89IDIuMGY7CisgICAgc2luQSA9
IHNpbmYocnopOworICAgIGNvc0EgPSBjb3NmKHJ6KTsKKyAgICBzaW5BMiA9IHNpbkEgKiBzaW5B
OworICAgIAorICAgIG1hdC5tX21hdHJpeFswXVswXSA9IDEuMGYgLSAyLjBmICogc2luQTI7Cisg
ICAgbWF0Lm1fbWF0cml4WzBdWzFdID0gMi4wZiAqIHNpbkEgKiBjb3NBOworICAgIG1hdC5tX21h
dHJpeFswXVsyXSA9IDAuMGY7CisgICAgbWF0Lm1fbWF0cml4WzFdWzBdID0gLTIuMGYgKiBzaW5B
ICogY29zQTsKKyAgICBtYXQubV9tYXRyaXhbMV1bMV0gPSAxLjBmIC0gMi4wZiAqIHNpbkEyOwor
ICAgIG1hdC5tX21hdHJpeFsxXVsyXSA9IDAuMGY7CisgICAgbWF0Lm1fbWF0cml4WzJdWzBdID0g
MC4wZjsKKyAgICBtYXQubV9tYXRyaXhbMl1bMV0gPSAwLjBmOworICAgIG1hdC5tX21hdHJpeFsy
XVsyXSA9IDEuMGY7CisgICAgbWF0Lm1fbWF0cml4WzBdWzNdID0gbWF0Lm1fbWF0cml4WzFdWzNd
ID0gbWF0Lm1fbWF0cml4WzJdWzNdID0gMC4wZjsKKyAgICBtYXQubV9tYXRyaXhbM11bMF0gPSBt
YXQubV9tYXRyaXhbM11bMV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAwLjBmOworICAgIG1hdC5t
X21hdHJpeFszXVszXSA9IDEuMGY7CisKKyAgICBybWF0Lm11bHRMZWZ0KG1hdCk7CisKKyAgICBt
dWx0TGVmdChybWF0KTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1RyYW5zZm9ybTNEJiBUcmFu
c2Zvcm0zRDo6dHJhbnNsYXRlKGZsb2F0IHR4LCBmbG9hdCB0eSkKK3sKKyAgICBUcmFuc2Zvcm0z
RCBtYXQ7CisgICAgbWF0Lm1fbWF0cml4WzNdWzBdID0gdHg7CisgICAgbWF0Lm1fbWF0cml4WzNd
WzFdID0gdHk7CisKKyAgICBtdWx0TGVmdChtYXQpOworICAgIHJldHVybiAqdGhpczsKK30KKwor
VHJhbnNmb3JtM0QmIFRyYW5zZm9ybTNEOjp0cmFuc2xhdGUzZChmbG9hdCB0eCwgZmxvYXQgdHks
IGZsb2F0IHR6KQoreworICAgIFRyYW5zZm9ybTNEIG1hdDsKKyAgICBtYXQubV9tYXRyaXhbM11b
MF0gPSB0eDsKKyAgICBtYXQubV9tYXRyaXhbM11bMV0gPSB0eTsKKyAgICBtYXQubV9tYXRyaXhb
M11bMl0gPSB0ejsKKworICAgIG11bHRMZWZ0KG1hdCk7CisgICAgcmV0dXJuICp0aGlzOworfQor
CitUcmFuc2Zvcm0zRCYgVHJhbnNmb3JtM0Q6OnNrZXcoZmxvYXQgc3gsIGZsb2F0IHN5KQorewor
ICAgIC8vIGFuZ2xlcyBhcmUgaW4gZGVncmVlcy4gU3dpdGNoIHRvIHJhZGlhbnMKKyAgICBzeCA9
IChmbG9hdCkgKHN4IC8gMzYwLjAgKiBNX1BJICogMi4wKTsKKyAgICBzeSA9IChmbG9hdCkgKHN5
IC8gMzYwLjAgKiBNX1BJICogMi4wKTsKKyAgICAKKyAgICBUcmFuc2Zvcm0zRCBtYXQ7CisgICAg
bWF0Lm1fbWF0cml4WzBdWzFdID0gdGFuZihzeSk7IC8vIG5vdGUgdGhhdCB0aGUgeSBzaGVhciBn
b2VzIGluIHRoZSBmaXJzdCByb3cKKyAgICBtYXQubV9tYXRyaXhbMV1bMF0gPSB0YW5mKHN4KTsg
Ly8gYW5kIHRoZSB4IHNoZWFyIGluIHRoZSBzZWNvbmQgcm93CisKKyAgICBtdWx0TGVmdChtYXQp
OworICAgIHJldHVybiAqdGhpczsKK30KKworVHJhbnNmb3JtM0QmIFRyYW5zZm9ybTNEOjphcHBs
eVBlcnNwZWN0aXZlKGZsb2F0IHApCit7CisgICAgVHJhbnNmb3JtM0QgbWF0OworICAgIGlmIChw
ICE9IDApCisgICAgICAgIG1hdC5tX21hdHJpeFsyXVszXSA9IC0xL3A7CisKKyAgICBtdWx0TGVm
dChtYXQpOworICAgIHJldHVybiAqdGhpczsKK30KKworLy8KKy8vIG11bHRpcGxpZXMgbWF0cml4
IGJ5IGdpdmVuIG1hdHJpeCBvbiB0aGUgcmlnaHQKKy8vCitUcmFuc2Zvcm0zRCAmIAorVHJhbnNm
b3JtM0Q6Om11bHRMZWZ0KGNvbnN0IFRyYW5zZm9ybTNEJiBtYXQpCit7CisgICAgZmxvYXQgdG1w
WzRdWzRdOworICAgIAorICAgIHRtcFswXVswXSA9IChtYXQubV9tYXRyaXhbMF1bMF0gKiBtX21h
dHJpeFswXVswXSArIG1hdC5tX21hdHJpeFswXVsxXSAqIG1fbWF0cml4WzFdWzBdCisgICAgICAg
ICAgICAgICArIG1hdC5tX21hdHJpeFswXVsyXSAqIG1fbWF0cml4WzJdWzBdICsgbWF0Lm1fbWF0
cml4WzBdWzNdICogbV9tYXRyaXhbM11bMF0pOworICAgIHRtcFswXVsxXSA9IChtYXQubV9tYXRy
aXhbMF1bMF0gKiBtX21hdHJpeFswXVsxXSArIG1hdC5tX21hdHJpeFswXVsxXSAqIG1fbWF0cml4
WzFdWzFdCisgICAgICAgICAgICAgICArIG1hdC5tX21hdHJpeFswXVsyXSAqIG1fbWF0cml4WzJd
WzFdICsgbWF0Lm1fbWF0cml4WzBdWzNdICogbV9tYXRyaXhbM11bMV0pOworICAgIHRtcFswXVsy
XSA9IChtYXQubV9tYXRyaXhbMF1bMF0gKiBtX21hdHJpeFswXVsyXSArIG1hdC5tX21hdHJpeFsw
XVsxXSAqIG1fbWF0cml4WzFdWzJdCisgICAgICAgICAgICAgICArIG1hdC5tX21hdHJpeFswXVsy
XSAqIG1fbWF0cml4WzJdWzJdICsgbWF0Lm1fbWF0cml4WzBdWzNdICogbV9tYXRyaXhbM11bMl0p
OworICAgIHRtcFswXVszXSA9IChtYXQubV9tYXRyaXhbMF1bMF0gKiBtX21hdHJpeFswXVszXSAr
IG1hdC5tX21hdHJpeFswXVsxXSAqIG1fbWF0cml4WzFdWzNdCisgICAgICAgICAgICAgICArIG1h
dC5tX21hdHJpeFswXVsyXSAqIG1fbWF0cml4WzJdWzNdICsgbWF0Lm1fbWF0cml4WzBdWzNdICog
bV9tYXRyaXhbM11bM10pOworCisgICAgdG1wWzFdWzBdID0gKG1hdC5tX21hdHJpeFsxXVswXSAq
IG1fbWF0cml4WzBdWzBdICsgbWF0Lm1fbWF0cml4WzFdWzFdICogbV9tYXRyaXhbMV1bMF0KKyAg
ICAgICAgICAgICAgICsgbWF0Lm1fbWF0cml4WzFdWzJdICogbV9tYXRyaXhbMl1bMF0gKyBtYXQu
bV9tYXRyaXhbMV1bM10gKiBtX21hdHJpeFszXVswXSk7CisgICAgdG1wWzFdWzFdID0gKG1hdC5t
X21hdHJpeFsxXVswXSAqIG1fbWF0cml4WzBdWzFdICsgbWF0Lm1fbWF0cml4WzFdWzFdICogbV9t
YXRyaXhbMV1bMV0KKyAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0cml4WzFdWzJdICogbV9tYXRy
aXhbMl1bMV0gKyBtYXQubV9tYXRyaXhbMV1bM10gKiBtX21hdHJpeFszXVsxXSk7CisgICAgdG1w
WzFdWzJdID0gKG1hdC5tX21hdHJpeFsxXVswXSAqIG1fbWF0cml4WzBdWzJdICsgbWF0Lm1fbWF0
cml4WzFdWzFdICogbV9tYXRyaXhbMV1bMl0KKyAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0cml4
WzFdWzJdICogbV9tYXRyaXhbMl1bMl0gKyBtYXQubV9tYXRyaXhbMV1bM10gKiBtX21hdHJpeFsz
XVsyXSk7CisgICAgdG1wWzFdWzNdID0gKG1hdC5tX21hdHJpeFsxXVswXSAqIG1fbWF0cml4WzBd
WzNdICsgbWF0Lm1fbWF0cml4WzFdWzFdICogbV9tYXRyaXhbMV1bM10KKyAgICAgICAgICAgICAg
ICsgbWF0Lm1fbWF0cml4WzFdWzJdICogbV9tYXRyaXhbMl1bM10gKyBtYXQubV9tYXRyaXhbMV1b
M10gKiBtX21hdHJpeFszXVszXSk7CisKKyAgICB0bXBbMl1bMF0gPSAobWF0Lm1fbWF0cml4WzJd
WzBdICogbV9tYXRyaXhbMF1bMF0gKyBtYXQubV9tYXRyaXhbMl1bMV0gKiBtX21hdHJpeFsxXVsw
XQorICAgICAgICAgICAgICAgKyBtYXQubV9tYXRyaXhbMl1bMl0gKiBtX21hdHJpeFsyXVswXSAr
IG1hdC5tX21hdHJpeFsyXVszXSAqIG1fbWF0cml4WzNdWzBdKTsKKyAgICB0bXBbMl1bMV0gPSAo
bWF0Lm1fbWF0cml4WzJdWzBdICogbV9tYXRyaXhbMF1bMV0gKyBtYXQubV9tYXRyaXhbMl1bMV0g
KiBtX21hdHJpeFsxXVsxXQorICAgICAgICAgICAgICAgKyBtYXQubV9tYXRyaXhbMl1bMl0gKiBt
X21hdHJpeFsyXVsxXSArIG1hdC5tX21hdHJpeFsyXVszXSAqIG1fbWF0cml4WzNdWzFdKTsKKyAg
ICB0bXBbMl1bMl0gPSAobWF0Lm1fbWF0cml4WzJdWzBdICogbV9tYXRyaXhbMF1bMl0gKyBtYXQu
bV9tYXRyaXhbMl1bMV0gKiBtX21hdHJpeFsxXVsyXQorICAgICAgICAgICAgICAgKyBtYXQubV9t
YXRyaXhbMl1bMl0gKiBtX21hdHJpeFsyXVsyXSArIG1hdC5tX21hdHJpeFsyXVszXSAqIG1fbWF0
cml4WzNdWzJdKTsKKyAgICB0bXBbMl1bM10gPSAobWF0Lm1fbWF0cml4WzJdWzBdICogbV9tYXRy
aXhbMF1bM10gKyBtYXQubV9tYXRyaXhbMl1bMV0gKiBtX21hdHJpeFsxXVszXQorICAgICAgICAg
ICAgICAgKyBtYXQubV9tYXRyaXhbMl1bMl0gKiBtX21hdHJpeFsyXVszXSArIG1hdC5tX21hdHJp
eFsyXVszXSAqIG1fbWF0cml4WzNdWzNdKTsKKworICAgIHRtcFszXVswXSA9IChtYXQubV9tYXRy
aXhbM11bMF0gKiBtX21hdHJpeFswXVswXSArIG1hdC5tX21hdHJpeFszXVsxXSAqIG1fbWF0cml4
WzFdWzBdCisgICAgICAgICAgICAgICArIG1hdC5tX21hdHJpeFszXVsyXSAqIG1fbWF0cml4WzJd
WzBdICsgbWF0Lm1fbWF0cml4WzNdWzNdICogbV9tYXRyaXhbM11bMF0pOworICAgIHRtcFszXVsx
XSA9IChtYXQubV9tYXRyaXhbM11bMF0gKiBtX21hdHJpeFswXVsxXSArIG1hdC5tX21hdHJpeFsz
XVsxXSAqIG1fbWF0cml4WzFdWzFdCisgICAgICAgICAgICAgICArIG1hdC5tX21hdHJpeFszXVsy
XSAqIG1fbWF0cml4WzJdWzFdICsgbWF0Lm1fbWF0cml4WzNdWzNdICogbV9tYXRyaXhbM11bMV0p
OworICAgIHRtcFszXVsyXSA9IChtYXQubV9tYXRyaXhbM11bMF0gKiBtX21hdHJpeFswXVsyXSAr
IG1hdC5tX21hdHJpeFszXVsxXSAqIG1fbWF0cml4WzFdWzJdCisgICAgICAgICAgICAgICArIG1h
dC5tX21hdHJpeFszXVsyXSAqIG1fbWF0cml4WzJdWzJdICsgbWF0Lm1fbWF0cml4WzNdWzNdICog
bV9tYXRyaXhbM11bMl0pOworICAgIHRtcFszXVszXSA9IChtYXQubV9tYXRyaXhbM11bMF0gKiBt
X21hdHJpeFswXVszXSArIG1hdC5tX21hdHJpeFszXVsxXSAqIG1fbWF0cml4WzFdWzNdCisgICAg
ICAgICAgICAgICArIG1hdC5tX21hdHJpeFszXVsyXSAqIG1fbWF0cml4WzJdWzNdICsgbWF0Lm1f
bWF0cml4WzNdWzNdICogbV9tYXRyaXhbM11bM10pOworICAgIAorICAgIHNldE1hdHJpeCgoZmxv
YXQqKSB0bXApOworICAgIHJldHVybiAqdGhpczsKK30KKwordm9pZAorVHJhbnNmb3JtM0Q6Om11
bHRWZWNNYXRyaXgoZmxvYXQgaW54LCBmbG9hdCBpbnksIGZsb2F0JiBvdXR4LCBmbG9hdCYgb3V0
eSkgY29uc3QKK3sKKyAgICBvdXR4ID0gbV9tYXRyaXhbM11bMF0gKyBpbnggKiBtX21hdHJpeFsw
XVswXSArIGlueSAqIG1fbWF0cml4WzFdWzBdOworICAgIG91dHkgPSBtX21hdHJpeFszXVsxXSAr
IGlueCAqIG1fbWF0cml4WzBdWzFdICsgaW55ICogbV9tYXRyaXhbMV1bMV07CisgICAgZmxvYXQg
dyA9IG1fbWF0cml4WzNdWzNdICsgaW54ICogbV9tYXRyaXhbMF1bM10gKyBpbnkgKiBtX21hdHJp
eFsxXVszXTsKKyAgICBpZiAodyAhPSAxICYmIHcgIT0gMCkgeworICAgICAgICBvdXR4IC89IHc7
CisgICAgICAgIG91dHkgLz0gdzsKKyAgICB9Cit9CisKKy8vCisvLyByZXR1cm5zIGludmVyc2Ug
b2YgbWF0cml4CisvLworVHJhbnNmb3JtM0QKK1RyYW5zZm9ybTNEOjppbnZlcnNlKCkgY29uc3Qg
Cit7CisgICAgVHJhbnNmb3JtM0QgaW52TWF0OworICAgIAorICAgIGJvb2wgaW52ZXJ0ZWQgPSBX
ZWJDb3JlOjppbnZlcnNlKChmbG9hdCgqKVs0XSkgbV9tYXRyaXgsIChmbG9hdCgqKVs0XSkgaW52
TWF0Lm1fbWF0cml4KTsKKyAgICBpZiAoIWludmVydGVkKSB7CisgICAgICAgIC8vIEZJWE1FOiBp
bmRpY2F0ZSBmYWlsdXJlIHNvbWVob3cKKyAgICAgICAgcmV0dXJuIFRyYW5zZm9ybTNEKCk7Cisg
ICAgfQorICAgIAorICAgIHJldHVybiBpbnZNYXQ7Cit9CisKK0FmZmluZVRyYW5zZm9ybQorVHJh
bnNmb3JtM0Q6OmFmZmluZVRyYW5zZm9ybSgpIGNvbnN0Cit7CisgICAgLy8gTm90ZSB0aGF0IHRo
aXMgdGhyb3dzIGF3YXkgdGhlIHotYXhpcworICAgIC8vIEZJWE1FOiBpbmRpY2F0ZSB3aGVuIHRo
aXMgbG9zZXMgZGF0YSBzb21laG93CisgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybShtX21h
dHJpeFswXVswXSwgbV9tYXRyaXhbMF1bMV0sIG1fbWF0cml4WzFdWzBdLCBtX21hdHJpeFsxXVsx
XSwgbV9tYXRyaXhbM11bMF0sIG1fbWF0cml4WzNdWzFdKTsKKyAgICByZXR1cm4gdHJhbnNmb3Jt
OworfQorCit9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYW5zZm9y
bTNELmggYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYW5zZm9ybTNELmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ0ZDQ1MAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVHJhbnNmb3JtM0QuaApAQCAtMCwwICsxLDE3OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBUcmFuc2Zvcm0zRF9oCisjZGVmaW5lIFRyYW5z
Zm9ybTNEX2gKKworI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CisKK2NsYXNzIFRyYW5zZm9ybTNEIHsKK3B1Ymxp
YzoKKyAgICBUcmFuc2Zvcm0zRCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeyBtYWtlSWRlbnRpdHkoKTsgfQorICAgIFRyYW5zZm9ybTNEKGZsb2F0
IG0xMSwgZmxvYXQgbTEyLCBmbG9hdCBtMTMsIGZsb2F0IG0xNCwKKyAgICAgICAgICAgICAgICBm
bG9hdCBtMjEsIGZsb2F0IG0yMiwgZmxvYXQgbTIzLCBmbG9hdCBtMjQsCisgICAgICAgICAgICAg
ICAgZmxvYXQgbTMxLCBmbG9hdCBtMzIsIGZsb2F0IG0zMywgZmxvYXQgbTM0LAorICAgICAgICAg
ICAgICAgIGZsb2F0IG00MSwgZmxvYXQgbTQyLCBmbG9hdCBtNDMsIGZsb2F0IG00NCkgICAgICAg
ICB7IHNldE1hdHJpeChtMTEsIG0xMiwgbTEzLCBtMTQsIG0yMSwgbTIyLCBtMjMsIG0yNCwgbTMx
LCBtMzIsIG0zMywgbTM0LCBtNDEsIG00MiwgbTQzLCBtNDQpOyB9CisgICAgVHJhbnNmb3JtM0Qo
Y29uc3QgVHJhbnNmb3JtM0QmIHQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgKnRo
aXMgPSB0OyB9CisKKyAgICBUcmFuc2Zvcm0zRChjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHQpOwor
ICAgIAorICAgIFRyYW5zZm9ybTNEICZvcGVyYXRvciA9KGNvbnN0IFRyYW5zZm9ybTNEICZ0KQor
ICAgIHsKKyAgICAgICAgc2V0TWF0cml4KChmbG9hdCopIHQubV9tYXRyaXgpOworICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgfQorCisgICAgdm9pZCBzZXRNYXRyaXgoZmxvYXQgbTExLCBmbG9h
dCBtMTIsIGZsb2F0IG0xMywgZmxvYXQgbTE0LAorICAgICAgICAgICAgICAgICAgICBmbG9hdCBt
MjEsIGZsb2F0IG0yMiwgZmxvYXQgbTIzLCBmbG9hdCBtMjQsCisgICAgICAgICAgICAgICAgICAg
IGZsb2F0IG0zMSwgZmxvYXQgbTMyLCBmbG9hdCBtMzMsIGZsb2F0IG0zNCwKKyAgICAgICAgICAg
ICAgICAgICAgZmxvYXQgbTQxLCBmbG9hdCBtNDIsIGZsb2F0IG00MywgZmxvYXQgbTQ0KQorICAg
IHsKKyAgICAgICAgbV9tYXRyaXhbMF1bMF0gPSBtMTE7IG1fbWF0cml4WzBdWzFdID0gbTEyOyBt
X21hdHJpeFswXVsyXSA9IG0xMzsgbV9tYXRyaXhbMF1bM10gPSBtMTQ7IAorICAgICAgICBtX21h
dHJpeFsxXVswXSA9IG0yMTsgbV9tYXRyaXhbMV1bMV0gPSBtMjI7IG1fbWF0cml4WzFdWzJdID0g
bTIzOyBtX21hdHJpeFsxXVszXSA9IG0yNDsgCisgICAgICAgIG1fbWF0cml4WzJdWzBdID0gbTMx
OyBtX21hdHJpeFsyXVsxXSA9IG0zMjsgbV9tYXRyaXhbMl1bMl0gPSBtMzM7IG1fbWF0cml4WzJd
WzNdID0gbTM0OyAKKyAgICAgICAgbV9tYXRyaXhbM11bMF0gPSBtNDE7IG1fbWF0cml4WzNdWzFd
ID0gbTQyOyBtX21hdHJpeFszXVsyXSA9IG00MzsgbV9tYXRyaXhbM11bM10gPSBtNDQ7CisgICAg
fQorICAgIAorICAgIFRyYW5zZm9ybTNEJiAgICBtYWtlSWRlbnRpdHkoKSAgeyBzZXRNYXRyaXgo
MSwwLDAsMCwgMCwxLDAsMCwgMCwwLDEsMCwgMCwwLDAsMSk7IHJldHVybiAqdGhpczsgfQorICAg
IGJvb2wgaXNJZGVudGl0eSgpIGNvbnN0ICAgICB7IHJldHVybiAqdGhpcyA9PSBUcmFuc2Zvcm0z
RCgpOyB9CisgICAgCisgICAgZmxvYXQgbTExKCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuIG1f
bWF0cml4WzBdWzBdOyB9CisgICAgZmxvYXQgbTEyKCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJu
IG1fbWF0cml4WzBdWzFdOyB9CisgICAgZmxvYXQgbTEzKCkgY29uc3QgICAgICAgICAgIHsgcmV0
dXJuIG1fbWF0cml4WzBdWzJdOyB9CisgICAgZmxvYXQgbTE0KCkgY29uc3QgICAgICAgICAgIHsg
cmV0dXJuIG1fbWF0cml4WzBdWzNdOyB9CisgICAgZmxvYXQgbTIxKCkgY29uc3QgICAgICAgICAg
IHsgcmV0dXJuIG1fbWF0cml4WzFdWzBdOyB9CisgICAgZmxvYXQgbTIyKCkgY29uc3QgICAgICAg
ICAgIHsgcmV0dXJuIG1fbWF0cml4WzFdWzFdOyB9CisgICAgZmxvYXQgbTIzKCkgY29uc3QgICAg
ICAgICAgIHsgcmV0dXJuIG1fbWF0cml4WzFdWzJdOyB9CisgICAgZmxvYXQgbTI0KCkgY29uc3Qg
ICAgICAgICAgIHsgcmV0dXJuIG1fbWF0cml4WzFdWzNdOyB9CisgICAgZmxvYXQgbTMxKCkgY29u
c3QgICAgICAgICAgIHsgcmV0dXJuIG1fbWF0cml4WzJdWzBdOyB9CisgICAgZmxvYXQgbTMyKCkg
Y29uc3QgICAgICAgICAgIHsgcmV0dXJuIG1fbWF0cml4WzJdWzFdOyB9CisgICAgZmxvYXQgbTMz
KCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuIG1fbWF0cml4WzJdWzJdOyB9CisgICAgZmxvYXQg
bTM0KCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuIG1fbWF0cml4WzJdWzNdOyB9CisgICAgZmxv
YXQgbTQxKCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuIG1fbWF0cml4WzNdWzBdOyB9CisgICAg
ZmxvYXQgbTQyKCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuIG1fbWF0cml4WzNdWzFdOyB9Cisg
ICAgZmxvYXQgbTQzKCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuIG1fbWF0cml4WzNdWzJdOyB9
CisgICAgZmxvYXQgbTQ0KCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuIG1fbWF0cml4WzNdWzNd
OyB9CisKKyAgICB2b2lkIHNldE0xMShmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFswXVswXSA9
IGY7IH0KKyAgICB2b2lkIHNldE0xMihmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFswXVsxXSA9
IGY7IH0KKyAgICB2b2lkIHNldE0xMyhmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFswXVsyXSA9
IGY7IH0KKyAgICB2b2lkIHNldE0xNChmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFswXVszXSA9
IGY7IH0KKyAgICB2b2lkIHNldE0yMShmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFsxXVswXSA9
IGY7IH0KKyAgICB2b2lkIHNldE0yMihmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFsxXVsxXSA9
IGY7IH0KKyAgICB2b2lkIHNldE0yMyhmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFsxXVsyXSA9
IGY7IH0KKyAgICB2b2lkIHNldE0yNChmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFsxXVszXSA9
IGY7IH0KKyAgICB2b2lkIHNldE0zMShmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFsyXVswXSA9
IGY7IH0KKyAgICB2b2lkIHNldE0zMihmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFsyXVsxXSA9
IGY7IH0KKyAgICB2b2lkIHNldE0zMyhmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFsyXVsyXSA9
IGY7IH0KKyAgICB2b2lkIHNldE0zNChmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFsyXVszXSA9
IGY7IH0KKyAgICB2b2lkIHNldE00MShmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFszXVswXSA9
IGY7IH0KKyAgICB2b2lkIHNldE00MihmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFszXVsxXSA9
IGY7IH0KKyAgICB2b2lkIHNldE00MyhmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFszXVsyXSA9
IGY7IH0KKyAgICB2b2lkIHNldE00NChmbG9hdCBmKSAgICAgICAgeyBtX21hdHJpeFszXVszXSA9
IGY7IH0KKyAgICAKKyAgICBUcmFuc2Zvcm0zRCYgc2NhbGUoZmxvYXQgc3gsIGZsb2F0IHN5KTsK
KyAgICBUcmFuc2Zvcm0zRCYgc2NhbGUzZChmbG9hdCBzeCwgZmxvYXQgc3ksIGZsb2F0IHN6KTsK
KyAgICAKKyAgICAvLyBhbmdsZXMgYXJlIGluIGRlZ3JlZXMuIHgseSx6IG11c3QgZm9ybSBhIHVu
aXQgdmVjdG9yIChsZW5ndGggMSkgb3IgcmVzdWx0cyBhcmUgdW5kZWZpbmVkCisgICAgVHJhbnNm
b3JtM0QmIHJvdGF0ZTNkKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHosIGZsb2F0IGFuZ2xlKTsK
KyAgICAKKyAgICAvLyBhbmdsZXMgYXJlIGluIGRlZ3JlZXMuIAorICAgIFRyYW5zZm9ybTNEJiBy
b3RhdGUzZChmbG9hdCByeCwgZmxvYXQgcnksIGZsb2F0IHJ6KTsKKyAgICBUcmFuc2Zvcm0zRCYg
dHJhbnNsYXRlKGZsb2F0IHR4LCBmbG9hdCB0eSk7CisgICAgVHJhbnNmb3JtM0QmIHRyYW5zbGF0
ZTNkKGZsb2F0IHR4LCBmbG9hdCB0eSwgZmxvYXQgdHopOworICAgIFRyYW5zZm9ybTNEJiBza2V3
KGZsb2F0IHN4LCBmbG9hdCBzeSk7CisgICAgVHJhbnNmb3JtM0QmIGFwcGx5UGVyc3BlY3RpdmUo
ZmxvYXQgcCk7CisgICAgCisgICAgYm9vbCBoYXNQZXJzcGVjdGl2ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWF0cml4WzJdWzNdICE9IDAuMGY7IH0KKyAgICAKKyAgICAvLyB0aGlzID0gbWF0ICogdGhp
cworICAgIFRyYW5zZm9ybTNEJiBtdWx0TGVmdChjb25zdCBUcmFuc2Zvcm0zRCYgbWF0KTsKKyAg
ICAKKyAgICAvLyBtdWx0aXBseSBwYXNzZWQgMkQgcG9pbnQgYnkgbWF0cml4IChhc3N1bWUgej0w
KQorICAgIHZvaWQgbXVsdFZlY01hdHJpeChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCYgZHN0WCwg
ZmxvYXQmIGRzdFkpIGNvbnN0OworICAgIAorICAgIC8vIHJldHVybiB0aGUgaW52ZXJzZSBvZiBt
YXRyaXgKKyAgICBUcmFuc2Zvcm0zRCBpbnZlcnNlKCkgY29uc3Q7CisKKyAgICAvLyByZXR1cm4g
YW4gYWZmaW5lIHRyYW5zZm9ybSAobG9zc3khKQorICAgIEFmZmluZVRyYW5zZm9ybSBhZmZpbmVU
cmFuc2Zvcm0oKSBjb25zdDsKKyAgICAKKyAgICAvL0VxdWFsaXR5IGNvbXBhcmlzb24gb3BlcmF0
b3IKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA9PShjb25zdCBUcmFuc2Zvcm0zRCAmbTEsIGNv
bnN0IFRyYW5zZm9ybTNEICZtMikKKyAgICB7CisgICAgICAgIHJldHVybiAobTEubV9tYXRyaXhb
MF1bMF0gPT0gbTIubV9tYXRyaXhbMF1bMF0gJiYKKyAgICAgICAgICAgICAgICBtMS5tX21hdHJp
eFswXVsxXSA9PSBtMi5tX21hdHJpeFswXVsxXSAmJgorICAgICAgICAgICAgICAgIG0xLm1fbWF0
cml4WzBdWzJdID09IG0yLm1fbWF0cml4WzBdWzJdICYmCisgICAgICAgICAgICAgICAgbTEubV9t
YXRyaXhbMF1bM10gPT0gbTIubV9tYXRyaXhbMF1bM10gJiYKKyAgICAgICAgICAgICAgICBtMS5t
X21hdHJpeFsxXVswXSA9PSBtMi5tX21hdHJpeFsxXVswXSAmJgorICAgICAgICAgICAgICAgIG0x
Lm1fbWF0cml4WzFdWzFdID09IG0yLm1fbWF0cml4WzFdWzFdICYmCisgICAgICAgICAgICAgICAg
bTEubV9tYXRyaXhbMV1bMl0gPT0gbTIubV9tYXRyaXhbMV1bMl0gJiYKKyAgICAgICAgICAgICAg
ICBtMS5tX21hdHJpeFsxXVszXSA9PSBtMi5tX21hdHJpeFsxXVszXSAmJgorICAgICAgICAgICAg
ICAgIG0xLm1fbWF0cml4WzJdWzBdID09IG0yLm1fbWF0cml4WzJdWzBdICYmCisgICAgICAgICAg
ICAgICAgbTEubV9tYXRyaXhbMl1bMV0gPT0gbTIubV9tYXRyaXhbMl1bMV0gJiYKKyAgICAgICAg
ICAgICAgICBtMS5tX21hdHJpeFsyXVsyXSA9PSBtMi5tX21hdHJpeFsyXVsyXSAmJgorICAgICAg
ICAgICAgICAgIG0xLm1fbWF0cml4WzJdWzNdID09IG0yLm1fbWF0cml4WzJdWzNdICYmCisgICAg
ICAgICAgICAgICAgbTEubV9tYXRyaXhbM11bMF0gPT0gbTIubV9tYXRyaXhbM11bMF0gJiYKKyAg
ICAgICAgICAgICAgICBtMS5tX21hdHJpeFszXVsxXSA9PSBtMi5tX21hdHJpeFszXVsxXSAmJgor
ICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4WzNdWzJdID09IG0yLm1fbWF0cml4WzNdWzJdICYm
CisgICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbM11bM10gPT0gbTIubV9tYXRyaXhbM11bM10p
OworICAgIH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yICE9KGNvbnN0IFRyYW5zZm9ybTNE
ICZtMSwgY29uc3QgVHJhbnNmb3JtM0QgJm0yKQorICAgIHsgcmV0dXJuICEobTEgPT0gbTIpOyB9
CisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvciA8KGNvbnN0IFRyYW5zZm9ybTNEICZtMSwgY29u
c3QgVHJhbnNmb3JtM0QgJm0yKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChtMS5tX21hdHJpeFsw
XVswXSA8IG0yLm1fbWF0cml4WzBdWzBdICYmCisgICAgICAgICAgICAgICAgbTEubV9tYXRyaXhb
MF1bMV0gPCBtMi5tX21hdHJpeFswXVsxXSAmJgorICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4
WzBdWzJdIDwgbTIubV9tYXRyaXhbMF1bMl0gJiYKKyAgICAgICAgICAgICAgICBtMS5tX21hdHJp
eFswXVszXSA8IG0yLm1fbWF0cml4WzBdWzNdICYmCisgICAgICAgICAgICAgICAgbTEubV9tYXRy
aXhbMV1bMF0gPCBtMi5tX21hdHJpeFsxXVswXSAmJgorICAgICAgICAgICAgICAgIG0xLm1fbWF0
cml4WzFdWzFdIDwgbTIubV9tYXRyaXhbMV1bMV0gJiYKKyAgICAgICAgICAgICAgICBtMS5tX21h
dHJpeFsxXVsyXSA8IG0yLm1fbWF0cml4WzFdWzJdICYmCisgICAgICAgICAgICAgICAgbTEubV9t
YXRyaXhbMV1bM10gPCBtMi5tX21hdHJpeFsxXVszXSAmJgorICAgICAgICAgICAgICAgIG0xLm1f
bWF0cml4WzJdWzBdIDwgbTIubV9tYXRyaXhbMl1bMF0gJiYKKyAgICAgICAgICAgICAgICBtMS5t
X21hdHJpeFsyXVsxXSA8IG0yLm1fbWF0cml4WzJdWzFdICYmCisgICAgICAgICAgICAgICAgbTEu
bV9tYXRyaXhbMl1bMl0gPCBtMi5tX21hdHJpeFsyXVsyXSAmJgorICAgICAgICAgICAgICAgIG0x
Lm1fbWF0cml4WzJdWzNdIDwgbTIubV9tYXRyaXhbMl1bM10gJiYKKyAgICAgICAgICAgICAgICBt
MS5tX21hdHJpeFszXVswXSA8IG0yLm1fbWF0cml4WzNdWzBdICYmCisgICAgICAgICAgICAgICAg
bTEubV9tYXRyaXhbM11bMV0gPCBtMi5tX21hdHJpeFszXVsxXSAmJgorICAgICAgICAgICAgICAg
IG0xLm1fbWF0cml4WzNdWzJdIDwgbTIubV9tYXRyaXhbM11bMl0gJiYKKyAgICAgICAgICAgICAg
ICBtMS5tX21hdHJpeFszXVszXSA8IG0yLm1fbWF0cml4WzNdWzNdKTsKKyAgICB9CisgICAgIAor
cHJpdmF0ZToKKyAgICB2b2lkIHNldE1hdHJpeChjb25zdCBmbG9hdCogbSkgICAgICAgIHsgaWYg
KG0gJiYgbSAhPSAoZmxvYXQqKSBtX21hdHJpeCkgbWVtY3B5KG1fbWF0cml4LCBtLCAxNipzaXpl
b2YoZmxvYXQpKTsgfQorICAgIAorICAgIGZsb2F0ICAgbV9tYXRyaXhbNF1bNF07Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBUcmFuc2Zvcm0zRF9oCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHAKaW5kZXggNTkzYzZjNS4uY2U0YTJmNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmNwcApAQCAtMjU4LDggKzI1OCw5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0
ZVRyYW5zZm9ybSgpCiAgICAgfQogICAgIAogICAgIGlmIChoYXNUcmFuc2Zvcm0pIHsKLSAgICAg
ICAgbV90cmFuc2Zvcm0tPnJlc2V0KCk7Ci0gICAgICAgIHJlbmRlcmVyKCktPnN0eWxlKCktPmFw
cGx5VHJhbnNmb3JtKCptX3RyYW5zZm9ybSwgcmVuZGVyZXIoKS0+Ym9yZGVyQm94KCkuc2l6ZSgp
KTsKKyAgICAgICAgVHJhbnNmb3JtM0QgdHJhbnNmb3JtM0Q7CisgICAgICAgIHJlbmRlcmVyKCkt
PnN0eWxlKCktPmFwcGx5VHJhbnNmb3JtKHRyYW5zZm9ybTNELCByZW5kZXJlcigpLT5ib3JkZXJC
b3goKS5zaXplKCksIHRydWUpOworICAgICAgICBtX3RyYW5zZm9ybS5zZXQobmV3IEFmZmluZVRy
YW5zZm9ybSh0cmFuc2Zvcm0zRC5hZmZpbmVUcmFuc2Zvcm0oKSkpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwCmluZGV4IDkwNjM4ZDEuLjA2OTY0YTkg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAorKysg
Yi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAgLTQxLDYgKzQxLDEy
IEBAIHN0YXRpYyBib29sIGltYWdlc0VxdWl2YWxlbnQoU3R5bGVJbWFnZSogaW1hZ2UxLCBTdHls
ZUltYWdlKiBpbWFnZTIpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKy8vIGNvbXBhcmUgZmxvYXRp
bmcgcG9pbnRzLCB0YWtpbmcgbmFuIGludG8gYWNjb3VudAorc3RhdGljIGlubGluZSBib29sIGZs
b2F0aW5nUG9pbnRWYWx1ZXNFcXVhbChmbG9hdCBhLCBmbG9hdCBiKQoreworICAgIHJldHVybiAo
aXNuYW4oYSkgJiYgaXNuYW4oYikpIHx8IChhID09IGIpOworfQorCiBib29sIE5pbmVQaWVjZUlt
YWdlOjpvcGVyYXRvcj09KGNvbnN0IE5pbmVQaWVjZUltYWdlJiBvKSBjb25zdAogewogICAgIHJl
dHVybiBpbWFnZXNFcXVpdmFsZW50KG1faW1hZ2UuZ2V0KCksIG8ubV9pbWFnZS5nZXQoKSkgJiYg
bV9zbGljZXMgPT0gby5tX3NsaWNlcyAmJiBtX2hvcml6b250YWxSdWxlID09IG8ubV9ob3Jpem9u
dGFsUnVsZSAmJgpAQCAtNjEzLDEyICs2MTksMTQgQEAgVHJhbnNmb3JtT3BlcmF0aW9uKiBTa2V3
VHJhbnNmb3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20K
ICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgCiAgICAgaWYgKGJsZW5kVG9JZGVudGl0eSkKLSAg
ICAgICAgcmV0dXJuIG5ldyBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKG1fYW5nbGVYIC0gbV9hbmds
ZVggKiBwcm9ncmVzcywgbV9hbmdsZVkgLSBtX2FuZ2xlWSAqIHByb2dyZXNzKTsKKyAgICAgICAg
cmV0dXJuIG5ldyBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKG1fYW5nbGVYIC0gbV9hbmdsZVggKiBw
cm9ncmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYW5n
bGVZIC0gbV9hbmdsZVkgKiBwcm9ncmVzcyk7CiAgICAgCiAgICAgY29uc3QgU2tld1RyYW5zZm9y
bU9wZXJhdGlvbiogZnJvbU9wID0gc3RhdGljX2Nhc3Q8Y29uc3QgU2tld1RyYW5zZm9ybU9wZXJh
dGlvbio+KGZyb20pOwogICAgIGRvdWJsZSBmcm9tQW5nbGVYID0gZnJvbU9wID8gZnJvbU9wLT5t
X2FuZ2xlWCA6IDA7CiAgICAgZG91YmxlIGZyb21BbmdsZVkgPSBmcm9tT3AgPyBmcm9tT3AtPm1f
YW5nbGVZIDogMDsKLSAgICByZXR1cm4gbmV3IFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24oZnJvbUFu
Z2xlWCArIChtX2FuZ2xlWCAtIGZyb21BbmdsZVgpICogcHJvZ3Jlc3MsIGZyb21BbmdsZVkgKyAo
bV9hbmdsZVkgLSBmcm9tQW5nbGVZKSAqIHByb2dyZXNzKTsKKyAgICByZXR1cm4gbmV3IFNrZXdU
cmFuc2Zvcm1PcGVyYXRpb24oZnJvbUFuZ2xlWCArIChtX2FuZ2xlWCAtIGZyb21BbmdsZVgpICog
cHJvZ3Jlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21Bbmds
ZVkgKyAobV9hbmdsZVkgLSBmcm9tQW5nbGVZKSAqIHByb2dyZXNzKTsKIH0KIAogVHJhbnNmb3Jt
T3BlcmF0aW9uKiBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0
eSkKQEAgLTY0MSwyNyArNjQ5LDMzIEBAIFRyYW5zZm9ybU9wZXJhdGlvbiogTWF0cml4VHJhbnNm
b3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyCiAgICAgICAg
IHJldHVybiB0aGlzOwogICAgIAogICAgIGlmIChibGVuZFRvSWRlbnRpdHkpCi0gICAgICAgIHJl
dHVybiBuZXcgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKG1fYSAqICgxLiAtIHByb2dyZXNzKSAr
IHByb2dyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2IgKiAoMS4gLSBwcm9ncmVzcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fYyAqICgxLiAtIHByb2dyZXNzKSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbV9kICogKDEuIC0gcHJvZ3Jlc3MpICsgcHJvZ3Jlc3MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZSAqICgxLiAtIHBy
b2dyZXNzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9m
ICogKDEuIC0gcHJvZ3Jlc3MpKTsKKyAgICAgICAgcmV0dXJuIG5ldyBNYXRyaXhUcmFuc2Zvcm1P
cGVyYXRpb24oKGZsb2F0KSAobV9tYXRyaXguYSgpICogKDEuIC0gcHJvZ3Jlc3MpICsgcHJvZ3Jl
c3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQp
IChtX21hdHJpeC5iKCkgKiAoMS4gLSBwcm9ncmVzcykpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQpIChtX21hdHJpeC5jKCkgKiAoMS4gLSBwcm9n
cmVzcykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxv
YXQpIChtX21hdHJpeC5kKCkgKiAoMS4gLSBwcm9ncmVzcykgKyBwcm9ncmVzcyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCkgKG1fbWF0cml4LmUo
KSAqICgxLiAtIHByb2dyZXNzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChmbG9hdCkgKG1fbWF0cml4LmYoKSAqICgxLiAtIHByb2dyZXNzKSkpOwogCiAg
ICAgY29uc3QgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tT3AgPSBzdGF0aWNfY2FzdDxj
b25zdCBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24qPihmcm9tKTsKLSAgICBkb3VibGUgZnJvbUEg
PSBmcm9tT3AgPyBmcm9tT3AtPm1fYSA6IDEuOwotICAgIGRvdWJsZSBmcm9tQiA9IGZyb21PcCA/
IGZyb21PcC0+bV9iIDogMDsKLSAgICBkb3VibGUgZnJvbUMgPSBmcm9tT3AgPyBmcm9tT3AtPm1f
YyA6IDA7Ci0gICAgZG91YmxlIGZyb21EID0gZnJvbU9wID8gZnJvbU9wLT5tX2QgOiAxLjsKLSAg
ICBkb3VibGUgZnJvbUUgPSBmcm9tT3AgPyBmcm9tT3AtPm1fZSA6IDA7Ci0gICAgZG91YmxlIGZy
b21GID0gZnJvbU9wID8gZnJvbU9wLT5tX2YgOiAwOwotICAgIAotICAgIHJldHVybiBuZXcgTWF0
cml4VHJhbnNmb3JtT3BlcmF0aW9uKGZyb21BICsgKG1fYSAtIGZyb21BKSAqIHByb2dyZXNzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21CICsgKG1fYiAtIGZy
b21CKSAqIHByb2dyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZyb21DICsgKG1fYyAtIGZyb21DKSAqIHByb2dyZXNzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZyb21EICsgKG1fZCAtIGZyb21EKSAqIHByb2dyZXNzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21FICsgKG1fZSAtIGZyb21F
KSAqIHByb2dyZXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZy
b21GICsgKG1fZiAtIGZyb21GKSAqIHByb2dyZXNzKTsKKyAgICBkb3VibGUgZnJvbUEgPSBmcm9t
T3AgPyBmcm9tT3AtPm1fbWF0cml4LmEoKSA6IDEuOworICAgIGRvdWJsZSBmcm9tQiA9IGZyb21P
cCA/IGZyb21PcC0+bV9tYXRyaXguYigpIDogMDsKKyAgICBkb3VibGUgZnJvbUMgPSBmcm9tT3Ag
PyBmcm9tT3AtPm1fbWF0cml4LmMoKSA6IDA7CisgICAgZG91YmxlIGZyb21EID0gZnJvbU9wID8g
ZnJvbU9wLT5tX21hdHJpeC5kKCkgOiAxLjsKKyAgICBkb3VibGUgZnJvbUUgPSBmcm9tT3AgPyBm
cm9tT3AtPm1fbWF0cml4LmUoKSA6IDA7CisgICAgZG91YmxlIGZyb21GID0gZnJvbU9wID8gZnJv
bU9wLT5tX21hdHJpeC5mKCkgOiAwOworCisgICAgcmV0dXJuIG5ldyBNYXRyaXhUcmFuc2Zvcm1P
cGVyYXRpb24oKGZsb2F0KSAoZnJvbUEgKyAobV9tYXRyaXguYSgpIC0gZnJvbUEpICogcHJvZ3Jl
c3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCkgKGZy
b21CICsgKG1fbWF0cml4LmIoKSAtIGZyb21CKSAqIHByb2dyZXNzKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQpIChmcm9tQyArIChtX21hdHJpeC5jKCkg
LSBmcm9tQykgKiBwcm9ncmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGZsb2F0KSAoZnJvbUQgKyAobV9tYXRyaXguZCgpIC0gZnJvbUQpICogcHJvZ3Jlc3Mp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCkgKGZyb21F
ICsgKG1fbWF0cml4LmUoKSAtIGZyb21FKSAqIHByb2dyZXNzKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQpIChmcm9tRiArIChtX21hdHJpeC5mKCkgLSBm
cm9tRikgKiBwcm9ncmVzcykpOworfQorCitUcmFuc2Zvcm1PcGVyYXRpb24qIE1hdHJpeDNEVHJh
bnNmb3JtT3BlcmF0aW9uOjpibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRv
dWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkpCit7CisgICAgLy8gVE9ETzogQ0ZN
IC0gTGV0J3Mgbm90IHdvcnJ5IGFib3V0IGRpcmVjdCBibGVuZCBvZiAzRCBtYXRyaWNlcyBqdXN0
IHlldAorICAgIHJldHVybiAwOwogfQogCiBUcmFuc2l0aW9uOjpUcmFuc2l0aW9uKCkKQEAgLTE2
OTYsNyArMTcxMCw3IEBAIHZvaWQgQ29udGVudERhdGE6OmNsZWFyKCkKICAgICB9CiB9CiAKLXZv
aWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
LCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdAordm9pZCBSZW5kZXJTdHlsZTo6
YXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtM0QmIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYgYm9y
ZGVyQm94U2l6ZSwgYm9vbCBjaGVja0FwcGx5VHJhbnNmb3JtT3JpZ2luKSBjb25zdAogewogICAg
IC8vIHRyYW5zZm9ybS1vcmlnaW4gYnJhY2tldHMgdGhlIHRyYW5zZm9ybSB3aXRoIHRyYW5zbGF0
ZSBvcGVyYXRpb25zLgogICAgIC8vIE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVyZSB0aGUgb25s
eSB0cmFuc2Zvcm0gaXMgYSB0cmFuc2xhdGlvbiwgc2luY2UgdGhlIHRyYW5zZm9ybS1vcmlnaW4g
aXMgaXJyZWxldmFudApAQCAtMTcwNCwxMCArMTcxOCwxMiBAQCB2b2lkIFJlbmRlclN0eWxlOjph
cHBseVRyYW5zZm9ybShBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYg
Ym9yZAogICAgIGJvb2wgYXBwbHlUcmFuc2Zvcm1PcmlnaW4gPSBmYWxzZTsKICAgICB1bnNpZ25l
ZCBzID0gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5tX29wZXJhdGlvbnMuc2l6
ZSgpOwogICAgIHVuc2lnbmVkIGk7Ci0gICAgZm9yIChpID0gMDsgaSA8IHM7IGkrKykgewotICAg
ICAgICBpZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV9vcGVyYXRpb25z
W2ldLT5pc1RyYW5zbGF0ZU9wZXJhdGlvbigpKSB7Ci0gICAgICAgICAgICBhcHBseVRyYW5zZm9y
bU9yaWdpbiA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKKyAgICBpZiAoY2hlY2tBcHBseVRy
YW5zZm9ybU9yaWdpbikgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgczsgaSsrKSB7CisgICAg
ICAgICAgICBpZiAoIXJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV9vcGVyYXRp
b25zW2ldLT5pc1RyYW5zbGF0ZU9wZXJhdGlvbigpKSB7CisgICAgICAgICAgICAgICAgYXBwbHlU
cmFuc2Zvcm1PcmlnaW4gPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaCBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmgKaW5kZXggOTVlZjRmOC4uNWNkOThhMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZS5oCkBAIC00Miw3ICs0Miw2IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCiAj
aW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJDU1NDdXJzb3JJbWFnZVZhbHVlLmgiCi0jaW5j
bHVkZSAiQ1NTVHJhbnNmb3JtVmFsdWUuaCIKICNpbmNsdWRlICJEYXRhUmVmLmgiCiAjaW5jbHVk
ZSAiRm9udC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKQEAgLTUwLDYgKzQ5LDcgQEAKICNp
bmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGVuZ3RoLmgiCiAjaW5jbHVkZSAiUGFpci5o
IgorI2luY2x1ZGUgIlRyYW5zZm9ybTNELmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlICJUZXh0RGlyZWN0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAg
LTc4NCwzMCArNzg0LDYwIEBAIHByaXZhdGU6CiAKIGNsYXNzIFRyYW5zZm9ybU9wZXJhdGlvbiA6
IHB1YmxpYyBSZWZDb3VudGVkPFRyYW5zZm9ybU9wZXJhdGlvbj4gewogcHVibGljOgotICAgIFRy
YW5zZm9ybU9wZXJhdGlvbigpIDogUmVmQ291bnRlZDxUcmFuc2Zvcm1PcGVyYXRpb24+KDApIHsg
fQogICAgIHZpcnR1YWwgflRyYW5zZm9ybU9wZXJhdGlvbigpIHt9CiAgICAgCiAgICAgdmlydHVh
bCBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJikgY29uc3QgPSAwOwog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8pIGNvbnN0IHsg
cmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShBZmZpbmVU
cmFuc2Zvcm0mLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplKSA9IDA7CisgICAgdmlydHVh
bCBib29sIGFwcGx5KFRyYW5zZm9ybTNEJiwgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSkg
Y29uc3QgPSAwOwogICAgIAogICAgIHZpcnR1YWwgVHJhbnNmb3JtT3BlcmF0aW9uKiBibGVuZChj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVu
ZFRvSWRlbnRpdHkgPSBmYWxzZSkgPSAwOwogICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc0lkZW50
aXR5T3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wg
aXNTY2FsZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBi
b29sIGlzUm90YXRlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0
dWFsIGJvb2wgaXNTa2V3T3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2
aXJ0dWFsIGJvb2wgaXNUcmFuc2xhdGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCBpc01hdHJpeE9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgdmlydHVhbCBib29sIGlzTWF0cml4M0RPcGVyYXRpb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1BlcnNwZWN0aXZlT3BlcmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gZmFsc2U7IH0KK307CisKK2NsYXNzIElkZW50aXR5VHJhbnNmb3JtT3Bl
cmF0aW9uIDogcHVibGljIFRyYW5zZm9ybU9wZXJhdGlvbgoreworcHVibGljOgorICAgIElkZW50
aXR5VHJhbnNmb3JtT3BlcmF0aW9uKCkKKyAgICB7fQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBp
c0lkZW50aXR5T3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAgIHZp
cnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBvLmlzSWRlbnRpdHlPcGVyYXRpb24oKTsKKyAgICB9Cisg
ICAgCisgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybTNEJiB0cmFuc2Zvcm0sIGNvbnN0
IEludFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwgVHJhbnNmb3JtT3BlcmF0aW9uKiBibGVuZChj
b25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVu
ZFRvSWRlbnRpdHkgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0K
IH07CiAKIGNsYXNzIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uIDogcHVibGljIFRyYW5zZm9ybU9w
ZXJhdGlvbgogewogcHVibGljOgogICAgIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKGRvdWJsZSBz
eCwgZG91YmxlIHN5KQotICAgIDogbV94KHN4KSwgbV95KHN5KQorICAgIDogbV94KHN4KSwgbV95
KHN5KSwgbV96KDEuZikKICAgICB7fQotICAgICAgICAKKworICAgIFNjYWxlVHJhbnNmb3JtT3Bl
cmF0aW9uKGRvdWJsZSBzeCwgZG91YmxlIHN5LCBkb3VibGUgc3opCisgICAgOiBtX3goc3gpLCBt
X3koc3kpLCBtX3ooc3opCisgICAge30KKyAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNTY2FsZU9w
ZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3QKQEAgLTgxOSw5ICs4NDks
MTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGFwcGx5KEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXplJiBi
b3JkZXJCb3hTaXplKQorICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm0zRCYgdHJhbnNm
b3JtLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdAogICAgIHsKLSAgICAgICAg
dHJhbnNmb3JtLnNjYWxlKG1feCwgbV95KTsKKyAgICAgICAgdHJhbnNmb3JtLnNjYWxlM2QoKGZs
b2F0KSBtX3gsIChmbG9hdCkgbV95LCAoZmxvYXQpIG1feik7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICB2aXJ0dWFsIFRyYW5zZm9ybU9wZXJhdGlvbiogYmxlbmQoY29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lk
ZW50aXR5ID0gZmFsc2UpOwpAQCAtODI5LDM1ICs4NjAsNDQgQEAgcHVibGljOgogcHJpdmF0ZToK
ICAgICBkb3VibGUgbV94OwogICAgIGRvdWJsZSBtX3k7CisgICAgZG91YmxlIG1fejsKIH07CiAK
IGNsYXNzIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRp
b24KIHsKIHB1YmxpYzoKICAgICBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24oZG91YmxlIGFuZ2xl
KQotICAgIDogbV9hbmdsZShhbmdsZSkKKyAgICA6IG1feCgwLmYpLCBtX3koMC5mKSwgbV96KDEu
ZiksIG1fYW5nbGUoYW5nbGUpCiAgICAge30KLQorIAorICAgIFJvdGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbihkb3VibGUgeCwgZG91YmxlIHksIGRvdWJsZSB6LCBkb3VibGUgYW5nbGUpCisgICAgOiBt
X3goeCksIG1feSh5KSwgbV96KHopLCBtX2FuZ2xlKGFuZ2xlKQorICAgIHt9CisgICAgCiAgICAg
dmlydHVhbCBib29sIGlzUm90YXRlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBv
KSBjb25zdAogICAgIHsKICAgICAgICAgaWYgKG8uaXNSb3RhdGVPcGVyYXRpb24oKSkgewogICAg
ICAgICAgICAgY29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKiByID0gc3RhdGljX2Nhc3Q8
Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4oJm8pOwotICAgICAgICAgICAgcmV0dXJu
IG1fYW5nbGUgPT0gci0+bV9hbmdsZTsKKyAgICAgICAgICAgIHJldHVybiBtX3ggPT0gci0+bV94
ICYmIG1feSA9PSByLT5tX3kgJiYgbV96ID09IHItPm1feiAmJiBtX2FuZ2xlID09IHItPm1fYW5n
bGU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICB2
aXJ0dWFsIHZvaWQgYXBwbHkoQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEludFNp
emUmIGJvcmRlckJveFNpemUpCisgICAgIH0KKyAgICAgCisgICAgdmlydHVhbCBib29sIGFwcGx5
KFRyYW5zZm9ybTNEJiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNpemUpIGNv
bnN0CiAgICAgewotICAgICAgICB0cmFuc2Zvcm0ucm90YXRlKG1fYW5nbGUpOworICAgICAgICB0
cmFuc2Zvcm0ucm90YXRlM2QoKGZsb2F0KSBtX3gsIChmbG9hdCkgbV95LCAoZmxvYXQpIG1feiwg
KGZsb2F0KSBtX2FuZ2xlKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHZp
cnR1YWwgVHJhbnNmb3JtT3BlcmF0aW9uKiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24q
IGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSk7Ci0g
ICAgCi1wcml2YXRlOgotICAgIGRvdWJsZSBtX2FuZ2xlOworICAgICAKKyBwcml2YXRlOgorICAg
ICBkb3VibGUgbV94OworICAgICBkb3VibGUgbV95OworICAgICBkb3VibGUgbV96OworICAgICBk
b3VibGUgbV9hbmdsZTsKIH07CiAKIGNsYXNzIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24gOiBwdWJs
aWMgVHJhbnNmb3JtT3BlcmF0aW9uCkBAIC04NzgsOSArOTE4LDEwIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSkKKyAgICB2
aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtM0QmIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYg
Ym9yZGVyQm94U2l6ZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHRyYW5zZm9ybS5za2V3KG1fYW5n
bGVYLCBtX2FuZ2xlWSk7CisgICAgICAgIHRyYW5zZm9ybS5za2V3KChmbG9hdCkgbV9hbmdsZVgs
IChmbG9hdCkgbV9hbmdsZVkpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAg
dmlydHVhbCBUcmFuc2Zvcm1PcGVyYXRpb24qIGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlv
biogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKTsK
QEAgLTg5NCw2NSArOTM1LDEwMCBAQCBjbGFzcyBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24g
OiBwdWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uCiB7CiBwdWJsaWM6CiAgICAgVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uKGNvbnN0IExlbmd0aCYgdHgsIGNvbnN0IExlbmd0aCYgdHkpCi0gICAg
OiBtX3godHgpLCBtX3kodHkpCisgICAgOiBtX3godHgpLCBtX3kodHkpLCBtX3ooTGVuZ3RoKCkp
CisgICAge30KKworICAgIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbihjb25zdCBMZW5ndGgm
IHR4LCBjb25zdCBMZW5ndGgmIHR5LCBjb25zdCBMZW5ndGgmIHR6KQorICAgIDogbV94KHR4KSwg
bV95KHR5KSwgbV96KHR6KQogICAgIHt9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzVHJhbnNs
YXRlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCisgICAgCiAgICAgdmlydHVh
bCBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBvKSBjb25zdAogICAg
IHsKICAgICAgICAgaWYgKG8uaXNUcmFuc2xhdGVPcGVyYXRpb24oKSkgewogICAgICAgICAgICAg
Y29uc3QgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKiB0ID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4oJm8pOwotICAgICAgICAgICAgcmV0dXJuIG1f
eCA9PSB0LT5tX3ggJiYgbV95ID09IHQtPm1feTsKKyAgICAgICAgICAgIHJldHVybiBtX3ggPT0g
dC0+bV94ICYmIG1feSA9PSB0LT5tX3kgJiYgbV96ID09IHQtPm1fejsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5KEFmZmlu
ZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplKQorICAg
IAorICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm0zRCYgdHJhbnNmb3JtLCBjb25zdCBJ
bnRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdAogICAgIHsKLSAgICAgICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZShtX3guY2FsY0Zsb2F0VmFsdWUoYm9yZGVyQm94U2l6ZS53aWR0aCgpKSwgbV95LmNh
bGNGbG9hdFZhbHVlKGJvcmRlckJveFNpemUuaGVpZ2h0KCkpKTsKKyAgICAgICAgLy8gVE9ETzog
Q0ZNIC0gSG93IGRvIHdlIGRlYWwgd2l0aCBhIHogdmFsdWUgYXMgYSBwZXJjZW50YWdlPworICAg
ICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QobV94LmNhbGNWYWx1ZShib3JkZXJCb3hTaXplLndp
ZHRoKCkpLCBtX3kuY2FsY1ZhbHVlKGJvcmRlckJveFNpemUuaGVpZ2h0KCkpLCBtX3ouY2FsY1Zh
bHVlKDEpKTsKKyAgICAgICAgcmV0dXJuIG1feC50eXBlKCkgPT0gUGVyY2VudCB8fCBtX3kudHlw
ZSgpID09IFBlcmNlbnQ7CiAgICAgfQotCisgICAgCiAgICAgdmlydHVhbCBUcmFuc2Zvcm1PcGVy
YXRpb24qIGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dy
ZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKTsKLQorICAgIAogcHJpdmF0ZToKICAg
ICBMZW5ndGggbV94OwogICAgIExlbmd0aCBtX3k7CisgICAgTGVuZ3RoIG1fejsKIH07CiAKIGNs
YXNzIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24K
IHsKIHB1YmxpYzoKLSAgICBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24oZG91YmxlIGEsIGRvdWJs
ZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZikKLSAgICA6IG1fYShh
KSwgbV9iKGIpLCBtX2MoYyksIG1fZChkKSwgbV9lKGUpLCBtX2YoZikKLSAgICB7fQorICAgIE1h
dHJpeFRyYW5zZm9ybU9wZXJhdGlvbihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIG0pCisgICAgeyBt
X21hdHJpeCA9IG07IH0KKyAgICAKKyAgICBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24oZmxvYXQg
YSwgZmxvYXQgYiwgZmxvYXQgYywgZmxvYXQgZCwgZmxvYXQgZSwgZmxvYXQgZikKKyAgICB7Cisg
ICAgICAgIG1fbWF0cml4LnNldE1hdHJpeChhLGIsYyxkLGUsZik7CisgICAgfQogICAgIAogICAg
IHZpcnR1YWwgYm9vbCBpc01hdHJpeE9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0K
LQorICAgIAogICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbiYgbykgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChvLmlzTWF0cml4T3BlcmF0aW9uKCkp
IHsKICAgICAgICAgICAgIGNvbnN0IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbiogbSA9IHN0YXRp
Y19jYXN0PGNvbnN0IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbio+KCZvKTsKLSAgICAgICAgICAg
IHJldHVybiBtX2EgPT0gbS0+bV9hICYmIG1fYiA9PSBtLT5tX2IgJiYgbV9jID09IG0tPm1fYyAm
JiBtX2QgPT0gbS0+bV9kICYmIG1fZSA9PSBtLT5tX2UgJiYgbV9mID09IG0tPm1fZjsKKyAgICAg
ICAgICAgIHJldHVybiBtX21hdHJpeCA9PSBtLT5tX21hdHJpeDsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGFwcGx5KEFmZmluZVRy
YW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplKQorICAgIAor
ICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm0zRCYgdHJhbnNmb3JtLCBjb25zdCBJbnRT
aXplJiBib3JkZXJCb3hTaXplKSBjb25zdAogICAgIHsKLSAgICAgICAgQWZmaW5lVHJhbnNmb3Jt
IG1hdHJpeChtX2EsIG1fYiwgbV9jLCBtX2QsIG1fZSwgbV9mKTsKLSAgICAgICAgdHJhbnNmb3Jt
ID0gbWF0cml4ICogdHJhbnNmb3JtOworICAgICAgICB0cmFuc2Zvcm0ubXVsdExlZnQoVHJhbnNm
b3JtM0QobV9tYXRyaXgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICAKKyAg
ICB2aXJ0dWFsIFRyYW5zZm9ybU9wZXJhdGlvbiogYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2Up
OworICAgIAorcHJpdmF0ZToKKyAgICBBZmZpbmVUcmFuc2Zvcm0gbV9tYXRyaXg7Cit9OwogCitj
bGFzcyBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRp
b24KK3sKK3B1YmxpYzoKKyAgICBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbihjb25zdCBUcmFu
c2Zvcm0zRCYgbWF0KQorICAgIHsgbV9tYXRyaXggPSBtYXQ7IH0KKyAgICAKKyAgICB2aXJ0dWFs
IGJvb2wgaXNNYXRyaXgzRE9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8p
IGNvbnN0CisgICAgeworICAgICAgICBpZiAoby5pc01hdHJpeDNET3BlcmF0aW9uKCkpIHsKKyAg
ICAgICAgICAgIGNvbnN0IE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uKiBtID0gc3RhdGljX2Nh
c3Q8Y29uc3QgTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24qPigmbyk7CisgICAgICAgICAgICBy
ZXR1cm4gbV9tYXRyaXggPT0gbS0+bV9tYXRyaXg7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtM0Qm
IHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHRyYW5zZm9ybS5tdWx0TGVmdChtX21hdHJpeCk7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisgICAgCiAgICAgdmlydHVhbCBUcmFuc2Zvcm1PcGVyYXRpb24qIGJsZW5kKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9JZGVudGl0eSA9IGZhbHNlKTsKICAgICAKIHByaXZhdGU6Ci0gICAgZG91YmxlIG1fYTsKLSAg
ICBkb3VibGUgbV9iOwotICAgIGRvdWJsZSBtX2M7Ci0gICAgZG91YmxlIG1fZDsKLSAgICBkb3Vi
bGUgbV9lOwotICAgIGRvdWJsZSBtX2Y7CisgICAgVHJhbnNmb3JtM0QgbV9tYXRyaXg7CiB9Owog
CiBjbGFzcyBUcmFuc2Zvcm1PcGVyYXRpb25zCkBAIC0yMDQ4LDcgKzIxMjQsNyBAQCBwdWJsaWM6
CiAgICAgTGVuZ3RoIHRyYW5zZm9ybU9yaWdpblgoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1feDsgfQogICAgIExlbmd0aCB0cmFuc2Zvcm1Pcmln
aW5ZKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdHJhbnNmb3JtLT5t
X3k7IH0KICAgICBib29sIGhhc1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuICFyYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1fb3BlcmF0aW9ucy5pc0VtcHR5KCk7IH0KLSAgICB2
b2lkIGFwcGx5VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEludFNpemUmIGJvcmRl
ckJveFNpemUpIGNvbnN0OworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oVHJhbnNmb3JtM0QmLCBj
b25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplLCBib29sIGNoZWNrQXBwbHlUcmFuc2Zvcm1Pcmln
aW4pIGNvbnN0OwogICAgIGJvb2wgaGFzTWFzaygpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhl
cml0ZWREYXRhLT5tX21hc2suaGFzSW1hZ2UoKSB8fCByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9t
YXNrQm94SW1hZ2UuaGFzSW1hZ2UoKTsgfQogICAgIC8vIEVuZCBDU1MzIEdldHRlcnMKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21235</attachid>
            <date>2008-05-19 14:07:25 -0700</date>
            <delta_ts>2008-05-19 14:07:25 -0700</delta_ts>
            <desc>tests computed style of transform</desc>
            <filename>computed_cssmatrix_2d.html</filename>
            <type>text/html</type>
            <size>1798</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIKICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cgo8aHRtbCBs
YW5nPSJlbiI+CjxoZWFkPgogIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KICA8dGl0bGU+Z2V0Q29tcHV0ZWRTdHlsZSBh
bmQgQ1NTTWF0cml4PC90aXRsZT4KCiAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2Ny
ZWVuIj4KICAKICAgIC5jb250YWluZXIgewogICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAg
IGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICAgbWFyZ2luOiAzMHB4OwogICAgICBoZWlnaHQ6
IDI1MHB4OwogICAgICB3aWR0aDogMjUwcHg7CiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNr
OwogICAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwogICAgfQogICAgI2JveCB7CiAgICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgaGVpZ2h0OiAyMDBweDsKICAgICAgd2lkdGg6IDIw
MHB4OwogICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjE5OTVEOwogICAgICAtd2Via2l0LXRyYW5z
Zm9ybTogc2NhbGUoMC40LCAxLjIpIHJvdGF0ZSgwLjRyYWQpIHRyYW5zbGF0ZSgxMDBweCwgMjBw
eCk7CiAgICB9CgogICAgI2JveDIsICNib3gzIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwog
ICAgICBoZWlnaHQ6IDIwMHB4OwogICAgICB3aWR0aDogMjAwcHg7CiAgICAgIGJhY2tncm91bmQt
Y29sb3I6ICM3NjExOTk7CiAgICB9CgogICAgI2JveDMgewogICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiAjOTkwZjMyOwogICAgfQoKICA8L3N0eWxlPgoKICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNj
cmlwdCIgY2hhcnNldD0idXRmLTgiPgogICAgZnVuY3Rpb24gYm94Q2xpY2tlZChlbGVtZW50KQog
ICAgewogICAgICB2YXIgdGhlU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50
KTsKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpLmlubmVySFRNTCA9IHRoZVN0
eWxlLndlYmtpdFRyYW5zZm9ybTsKICAgICAgCiAgICAgIHZhciBib3gyID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2JveDInKTsKICAgICAgYm94Mi5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSB0
aGVTdHlsZS53ZWJraXRUcmFuc2Zvcm07CgogICAgICB2YXIgYm94MyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCdib3gzJyk7CiAgICAgIGJveDMuc3R5bGUud2Via2l0VHJhbnNmb3JtID0gbmV3
IFdlYktpdENTU01hdHJpeCh0aGVTdHlsZS53ZWJraXRUcmFuc2Zvcm0pOwogICAgfQogIDwvc2Ny
aXB0Pgo8L2hlYWQ+Cjxib2R5PgoKPHA+Q2xpY2tpbmcgdGhlIGdyZWVuIGJveCBzaG91bGQgZ2l2
ZSB0aGUgcHVycGxlIGJveCBhbmQgcmVkIGJveGVzIHRoZSBzYW1lIHRyYW5zZm9ybSwgcmVsYXRp
dmUgdG8gdGhlIGNvbnRhaW5lciBib3hlczwvcD4KPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICA8
ZGl2IGlkPSJib3giIG9uY2xpY2s9ImJveENsaWNrZWQodGhpcykiPjwvZGl2Pgo8L2Rpdj4KCjxk
aXYgY2xhc3M9ImNvbnRhaW5lciI+CiAgPGRpdiBpZD0iYm94MiIgb25jbGljaz0iYm94Q2xpY2tl
ZCh0aGlzKSI+PC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KICA8ZGl2IGlk
PSJib3gzIiBvbmNsaWNrPSJib3hDbGlja2VkKHRoaXMpIj48L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlk
PSJsb2ciPjwvZGl2PgoKPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21236</attachid>
            <date>2008-05-19 14:09:13 -0700</date>
            <delta_ts>2008-05-19 14:09:13 -0700</delta_ts>
            <desc>tests various transforms</desc>
            <filename>simple_transforms.html</filename>
            <type>text/html</type>
            <size>1113</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIKICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cgo8aHRtbCBs
YW5nPSJlbiI+CjxoZWFkPgogICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250
ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgogICAgPHRpdGxlPlNpbXBsZSBUcmFuc2Zv
cm1zPC90aXRsZT4KICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CiAg
ICAgICAgLmJveCB7CiAgICAgICAgICAgIGhlaWdodDogMjAwcHg7CiAgICAgICAgICAgIHdpZHRo
OiAyMDBweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwYTBhMDsKICAgICAgICB9
CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoKPGgxPlRlc3RpbmcgdHJhbnNmb3JtczwvaDE+
CjxwPkFsbCBib3hlcyBhcmUgMjAweDIwMCBwaXhlbHM8L3A+Cgo8ZGl2IGNsYXNzPSJib3giIHN0
eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDEwMHB4OyB0b3A6IDEwMHB4OyAtd2Via2l0
LXRyYW5zZm9ybTogc2NhbGUoMS41LCAwLjc1KSI+CiAgc2NhbGUoMS41LCAwLjc1KQo8L2Rpdj4K
CjxkaXYgY2xhc3M9ImJveCIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogNDAwcHg7
IHRvcDogMTAwcHg7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzBkZWcpIj4KICByb3RhdGUo
MzBkZWcpCjwvZGl2PgoKPGRpdiBjbGFzcz0iYm94IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRl
OyBsZWZ0OiAxMDBweDsgdG9wOiAzMDBweDsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSg1
MHB4LCA4MHB4KSI+CiAgdHJhbnNsYXRlKDUwcHgsIDgwcHgpCjwvZGl2PgoKPGRpdiBjbGFzcz0i
Ym94IiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA0MDBweDsgdG9wOiAzMDBweDsg
LXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxMHB4LCA1MHB4KSBzY2FsZSgwLjgpIHJvdGF0
ZSgtMTBkZWcpIj4KICB0cmFuc2xhdGUoMTBweCwgNTBweCkgc2NhbGUoMC44KSByb3RhdGUoLTEw
ZGVnKQo8L2Rpdj4KCgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21237</attachid>
            <date>2008-05-19 14:09:52 -0700</date>
            <delta_ts>2008-05-19 14:09:52 -0700</delta_ts>
            <desc>sets a transform property to a new cssmatrix</desc>
            <filename>setting_transform_to_CSSMatrix.html</filename>
            <type>text/html</type>
            <size>1085</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">PGh0bWw+CgogIDxoZWFkPgogICAgPHRpdGxlPlNldHRpbmcgJ3RyYW5zZm9ybScgdG8gYSBDU1NN
YXRyaXggaW5zdGFuY2U8L3RpdGxlPgogICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0i
c2NyZWVuIj4KICAgICAgCiAgICAgICN0YXJnZXQgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgaGVpZ2h0OiAxMDBweDsKICAgICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5
OiAtd2Via2l0LXRyYW5zZm9ybTsKICAgICAgICAtd2Via2l0LXRyYW5zaXRpb24tZHVyYXRpb246
IDFzOwogICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApOwogICAgICB9CiAg
ICAgIAogICAgPC9zdHlsZT4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFy
c2V0PSJ1dGYtOCI+CiAgICAgIAogICAgICBmdW5jdGlvbiBpbml0ICgpIHsKICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgndGFyZ2V0JykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0
cmFuc2xhdGUsIGZhbHNlKTsKICAgICAgfQoKICAgICAgZnVuY3Rpb24gdHJhbnNsYXRlIChldmVu
dCkgewogICAgICAgIHZhciBtID0gbmV3IFdlYktpdENTU01hdHJpeCgpOwogICAgICAgIG0gPSBt
LnRyYW5zbGF0ZSgxMDAsIDAsIDApOwogICAgICAgIG0gPSBtLnJvdGF0ZSgwLCAwLCAxLCAwLjUp
OwogICAgICAgIGNvbnNvbGUubG9nKG0udG9TdHJpbmcoKSk7CiAgICAgICAgZXZlbnQudGFyZ2V0
LnN0eWxlLndlYmtpdFRyYW5zZm9ybSA9IG5ldyBXZWJLaXRDU1NNYXRyaXgoKS50cmFuc2xhdGUo
MTAwLCAwLCAwKTsKICAgICAgfQoKICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQn
LCBpbml0LCBmYWxzZSk7CiAgICAgIAogICAgPC9zY3JpcHQ+CiAgPC9oZWFkPgo8Ym9keT4KICA8
cD5DbGljayBvbiB0aGUgcmVkIGJveC4gSXQgc2hvdWxkIHRyYW5zaXRpb24gdG8gdGhlIHJpZ2h0
LCB0aGVuIHN0b3AuPC9wPgogIDxkaXYgaWQ9InRhcmdldCI+PC9kaXY+CjwvYm9keT4KPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>21238</attachid>
            <date>2008-05-19 14:10:30 -0700</date>
            <delta_ts>2008-05-19 14:10:30 -0700</delta_ts>
            <desc>tests transitions on transforms</desc>
            <filename>transition_transform.html</filename>
            <type>text/html</type>
            <size>1455</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFs
Ly9FTiIKICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cgo8aHRtbCBs
YW5nPSJlbiI+CjxoZWFkPgoJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50
PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgoJPHRpdGxlPlRyYW5zaXRpb24gb2YgdHJhbnNm
b3JtIHByb3BlcnR5PC90aXRsZT4KICAgIDxzdHlsZT4KICAgICAgICAgZGl2IHsKICAgICAgICAg
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICAgICAgIGxlZnQ6IDEwMHB4OwogICAgICAg
ICAgICAgaGVpZ2h0OiAyMDBweDsKICAgICAgICAgICAgIHdpZHRoOiAzMDBweDsKICAgICAgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6ICM5YmI7CiAgICAgICAgICAgICAtd2Via2l0LXRyYW5zaXRp
b24tcHJvcGVydHk6IC13ZWJraXQtdHJhbnNmb3JtOwogICAgICAgICAgICAgLXdlYmtpdC10cmFu
c2l0aW9uLWR1cmF0aW9uOiAxczsKICAgICAgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFu
c2xhdGUoMHB4KTsKICAgICAgICAgfQogICAgIDwvc3R5bGU+CiAgICAgPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KICAgICAgCiAgICAgIHZhciBmbGFnID0g
dHJ1ZTsKICAgICAgCiAgICAgIGZ1bmN0aW9uIGluaXQoKSB7CiAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInRhcmdldCIpLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24o
ZXZ0KSB7CiAgICAgICAgICBpZiAoZmxhZykKICAgICAgICAgICAgZXZ0LnRhcmdldC5zdHlsZS53
ZWJraXRUcmFuc2Zvcm0gPSAidHJhbnNsYXRlKDIwMHB4KSI7CiAgICAgICAgICAgIC8vZXZ0LnRh
cmdldC5zdHlsZS53ZWJraXRUcmFuc2Zvcm0gPSAicm90YXRlKDEwZGVnKSI7CiAgICAgICAgICBl
bHNlIAogICAgICAgICAgICBldnQudGFyZ2V0LnN0eWxlLndlYmtpdFRyYW5zZm9ybSA9ICJ0cmFu
c2xhdGUoMHB4KSI7CiAgICAgICAgICAgIC8vZXZ0LnRhcmdldC5zdHlsZS53ZWJraXRUcmFuc2Zv
cm0gPSAicm90YXRlKC0xMGRlZykiOwogICAgICAgICAgZmxhZyA9ICFmbGFnOwogICAgICAgIH0s
IGZhbHNlKTsKICAgICAgfQogICAgICAKICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxv
YWQiLCBpbml0LCBmYWxzZSk7CiAgICAgPC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHk+CiAgPGgxPlRy
YW5zaXRpb24gb2YgJ3RyYW5zZm9ybScgcHJvcGVydHk8L2gxPgoKICA8cD5UaGUgZWxlbWVudCBi
ZWxvdyBzaG91bGQgbW92ZSAyMDAgcGl4ZWxzIGxlZnQgb3IgcmlnaHQgd2hlbiBjbGlja2VkPC9w
PgogIAogIDxkaXYgaWQ9InRhcmdldCI+CiAgICBUaGlzIGVsZW1lbnQgc2hvdWxkIHRyYW5zaXRp
b24uCiAgPC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21240</attachid>
            <date>2008-05-19 16:21:58 -0700</date>
            <delta_ts>2008-05-22 14:01:47 -0700</delta_ts>
            <desc>Transforms patch</desc>
            <filename>transforms.patch</filename>
            <type>text/plain</type>
            <size>140752</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQppbmRleCA0YTM4ZDkyLi5iMTJmZDIxIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBA
IC0zMzcsNiArMzM3LDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgVHJlZVdhbGtlciBcCiAgICAg
VUlFdmVudCBcCiAgICAgVm9pZENhbGxiYWNrIFwKKyAgICBXZWJLaXRDU1NNYXRyaXggXAorICAg
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlIFwKICAgICBXaGVlbEV2ZW50IFwKICAgICBYTUxIdHRw
UmVxdWVzdCBcCiAgICAgWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24gXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXggNjFhNzZh
ZS4uNDA1MjY0NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0zMzYsNiArMzM2LDggQEAgd2ViY29yZV9idWlsdF9zb3Vy
Y2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KU1RleHRFdmVudC5jcHAgXAogCURlcml2ZWRTb3Vy
Y2VzL0pTVHJlZVdhbGtlci5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0pTVUlFdmVudC5jcHAgXAor
CURlcml2ZWRTb3VyY2VzL0pTV2ViS2l0Q1NTTWF0cml4LmNwcCBcCisJRGVyaXZlZFNvdXJjZXMv
SlNXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0pTV2hlZWxF
dmVudC5jcHAgXAogCURlcml2ZWRTb3VyY2VzL0pTWE1MSHR0cFJlcXVlc3QuY3BwIFwKIAlEZXJp
dmVkU291cmNlcy9KU1hNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmNwcCBcCkBAIC0zNjIsNiArMzY0
LDggQEAgSURMX0JJTkRJTkdTICs9ICBcCiAJV2ViQ29yZS9jc3MvUmVjdC5pZGwgXAogCVdlYkNv
cmUvY3NzL1N0eWxlU2hlZXQuaWRsIFwKIAlXZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5pZGwg
XAorCVdlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwgXAorCVdlYkNvcmUvY3NzL1dlYktp
dENTU1RyYW5zZm9ybVZhbHVlLmlkbCBcCiAJV2ViQ29yZS9kb20vQXR0ci5pZGwgXAogCVdlYkNv
cmUvZG9tL0NoYXJhY3RlckRhdGEuaWRsIFwKIAlXZWJDb3JlL2RvbS9DbGlwYm9hcmQuaWRsIFwK
QEAgLTUzOSw2ICs1NDMsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1RyZWVXYWxr
ZXJDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NTTWF0cml4Q29u
dHJ1Y3Rvci5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9y
LmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwIFwK
QEAgLTU5Myw3ICs1OTgsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvY3NzL0NT
U1N0eWxlU2VsZWN0b3IuY3BwIFwKIAlXZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcCBcCiAJ
V2ViQ29yZS9jc3MvQ1NTVGltaW5nRnVuY3Rpb25WYWx1ZS5jcHAgXAotCVdlYkNvcmUvY3NzL0NT
U1RyYW5zZm9ybVZhbHVlLmNwcCBcCiAJV2ViQ29yZS9jc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUu
Y3BwIFwKIAlXZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwIFwKIAlXZWJDb3JlL2Nzcy9Gb250
RmFtaWx5VmFsdWUuY3BwIFwKQEAgLTYwOCw2ICs2MTIsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVdlYkNvcmUvY3NzL1N0eWxlTGlzdC5jcHAgXAogCVdlYkNvcmUvY3NzL1N0eWxlU2hlZXQu
Y3BwIFwKIAlXZWJDb3JlL2Nzcy9TdHlsZVNoZWV0TGlzdC5jcHAgXAorCVdlYkNvcmUvY3NzL1dl
YktpdENTU01hdHJpeC5jcHAgXAorCVdlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVl
LmNwcCBcCiAJV2ViQ29yZS9kb20vQXR0ci5jcHAgXAogCVdlYkNvcmUvZG9tL0F0dHJpYnV0ZS5j
cHAgXAogCVdlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcCBcCkBAIC04ODks
NyArODk1LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UG9pbnQuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UmVj
dC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRTaXplLmNwcCBcCi0gICAg
ICAgIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR2VuZXJhdGVkSW1hZ2UuY3BwIFwKKwlXZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dlbmVyYXRlZEltYWdlLmNwcCBcCiAJV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFkaWVudC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c1R5cGVzLmNwcCBcCkBAIC04OTgsNiArOTA0LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1BhdGguY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1BhdGhUcmF2ZXJzYWxTdGF0ZS5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvUGVuLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFuc2Zvcm0zRC5jcHAg
XAogCVdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vTG9nZ2lu
Zy5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAgXApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNzQ3
MDI0OC4uNGFiYWY3OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJD
b3JlL1dlYkNvcmUucHJvCkBAIC0yMzgsNiArMjM4LDggQEAgSURMX0JJTkRJTkdTICs9IFwKICAg
ICBjc3MvUmVjdC5pZGwgXAogICAgIGNzcy9TdHlsZVNoZWV0LmlkbCBcCiAgICAgY3NzL1N0eWxl
U2hlZXRMaXN0LmlkbCBcCisgICAgY3NzL1dlYktpdENTU01hdHJpeC5pZGwgXAorICAgIGNzcy9X
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGwgXAogICAgIGRvbS9BdHRyLmlkbCBcCiAgICAgZG9t
L0NoYXJhY3RlckRhdGEuaWRsIFwKICAgICBkb20vQ2xpcGJvYXJkLmlkbCBcCkBAIC00MTQsNiAr
NDE2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0Q3VzdG9t
LmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgXAogICAg
IGJpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3RvbS5jcHAgXAorICAgIGJpbmRpbmdzL2pzL0pT
V2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0
dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwIFwKICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1
ZXN0Q3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0
b3IuY3BwIFwKQEAgLTQ3MSw3ICs0NzQsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBjc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAgXAogICAgIGNzcy9DU1NTdHlsZVNoZWV0LmNwcCBcCiAgICAgY3NzL0NT
U1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwIFwKLSAgICBjc3MvQ1NTVHJhbnNmb3JtVmFsdWUuY3Bw
IFwKICAgICBjc3MvQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwIFwKICAgICBjc3MvQ1NTVmFsdWVM
aXN0LmNwcCBcCiAgICAgY3NzL0ZvbnRGYW1pbHlWYWx1ZS5jcHAgXApAQCAtNDg2LDYgKzQ4OCw4
IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9TdHlsZUxpc3QuY3BwIFwKICAgICBjc3MvU3R5bGVT
aGVldC5jcHAgXAogICAgIGNzcy9TdHlsZVNoZWV0TGlzdC5jcHAgXAorICAgIGNzcy9XZWJLaXRD
U1NNYXRyaXguY3BwIFwKKyAgICBjc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIFwKICAg
ICBkb20vQXR0ci5jcHAgXAogICAgIGRvbS9BdHRyaWJ1dGUuY3BwIFwKICAgICBkb20vQmVmb3Jl
VGV4dEluc2VydGVkRXZlbnQuY3BwIFwKQEAgLTc4Myw2ICs3ODcsNyBAQCBTT1VSQ0VTICs9IFwK
ICAgICBwbGF0Zm9ybS9ncmFwaGljcy9QYXRoVHJhdmVyc2FsU3RhdGUuY3BwIFwKICAgICBwbGF0
Zm9ybS9ncmFwaGljcy9QZW4uY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRG
b250RGF0YS5jcHAgXAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL1RyYW5zZm9ybTNELmNwcCBcCiAg
ICAgcGxhdGZvcm0vS1VSTC5jcHAgXAogICAgIHBsYXRmb3JtL0xvZ2dpbmcuY3BwIFwKICAgICBw
bGF0Zm9ybS9NSU1FVHlwZVJlZ2lzdHJ5LmNwcCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagppbmRleCA0OWUzZGRmLi5mMzNkMmI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oKQEAgLTI4MDgsNiArMjgwOCwyMiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTV2ViS2l0Q1NTTWF0cml4LmNwcCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0
RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNXZWJLaXRDU1NNYXRyaXgu
aCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQo
V2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGly
KVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNXaGVlbEV2ZW50LmNwcCINCiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCkBAIC01MDczLDYgKzUwODksMTQgQEAKIAkJCQkJPg0KIAkJCQk8
L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXGdyYXBo
aWNzXFRyYW5zZm9ybTNELmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0K
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xUcmFuc2Zvcm0zRC5oIg0K
KwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHBsYXRmb3JtXGdyYXBoaWNzXFVuaXRCZXppZXIuaCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0K
QEAgLTg0NTQsMjIgKzg0NzgsNiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0J
CQkJUmVsYXRpdmVQYXRoPSIuLlxjc3NcQ1NTVHJhbnNmb3JtVmFsdWUuY3BwIg0KLQkJCQk+DQot
CQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZV9QR098V2luMzIiDQot
CQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJ
CQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxl
Q29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRo
PSIuLlxjc3NcQ1NTVHJhbnNmb3JtVmFsdWUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8
RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGNzc1xDU1NVbmljb2RlUmFuZ2VWYWx1ZS5jcHAi
DQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtODc2Miw2ICs4NzcwLDQyIEBA
CiAJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxjc3NcV2ViS2l0Q1NTTWF0cml4LmNwcCINCisJCQkJPg0KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdpbjMyIg0KKwkJCQkJ
Pg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCVdo
b2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1ZSINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZp
Z3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Y3NzXFdlYktpdENTU01hdHJpeC5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXHRva2VuaXplci5mbGV4Ig0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlLmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5h
bWU9IlJlbGVhc2VfUEdPfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1
ZSINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY3NzXFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIu
Llxjc3NcdG9rZW5pemVyLmZsZXgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTM4NjMsNiAr
MTM5MDcsMTQgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3Bw
Ig0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGJpbmRpbmdzXGpzXEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuaCINCisJCQkJCT4N
CisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5n
c1xqc1xKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0Zp
bGU+DQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwMWQ2
NjU5Li5lZjI2MDI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtMzg1LDYgKzM4NSwyNiBAQAogCQkyOTk5ODZBMTBERDBERUVBMDBGOEQyNjEgLyogQWNj
ZXNzaWJpbGl0eUxpc3RCb3guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMjk5OTg2OUQwREQwREVFQTAwRjhEMjYxIC8qIEFjY2Vzc2liaWxpdHlMaXN0
Qm94LmNwcCAqLzsgfTsKIAkJMkQ5MDY2MDYwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOTA2
NjA0MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5jcHAgKi87IH07CiAJCTJEOTA2NjA3
MEJFMTQxRDQwMDk1Njk5OCAvKiBMYXlvdXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5MDY2MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91
dFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMzE2Q0M3N0MwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENTU01hdHJpeC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZDQzc3NjBEREU0N0Ew
MDA4ODk5RTIgLyogV2ViS2l0Q1NTTWF0cml4LmNwcCAqLzsgfTsKKwkJMzE2Q0M3N0QwRERFNDdB
MDAwODg5OUUyIC8qIFdlYktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2Q0M3NzcwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENT
U01hdHJpeC5oICovOyB9OworCQkzMTZDQzc3RTBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NT
TWF0cml4LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE2Q0M3NzgwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENTU01hdHJpeC5pZGwgKi87IH07
CisJCTMxNkNDNzdGMERERTQ3QTAwMDg4OTlFMiAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZDQzc3
OTBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwICovOyB9Owor
CQkzMTZDQzc4MDBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkNDNzdBMERE
RTQ3QTAwMDg4OTlFMiAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oICovOyB9OworCQkzMTZD
Qzc4MTBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsIGluIFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZDQzc3QjBEREU0
N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsICovOyB9OworCQkzMTZD
Qzc4NzBEREU0QUMyMDA4ODk5RTIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2Q0M3ODMwRERFNEFDMjAwODg5
OUUyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmNwcCAqLzsgfTsKKwkJMzE2Q0M3ODgwRERFNEFDMjAw
ODg5OUUyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZDQzc4NDBEREU0QUMyMDA4ODk5RTIgLyogSlNXZWJLaXRD
U1NNYXRyaXguaCAqLzsgfTsKKwkJMzE2Q0M3ODkwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzE2Q0M3ODUwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuY3BwICovOyB9OworCQkzMTZDQzc4QTBEREU0QUMyMDA4ODk5RTIgLyogSlNXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMzE2Q0M3ODYwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTVHJhbnNm
b3JtVmFsdWUuaCAqLzsgfTsKKwkJMzE2Q0M3OTIwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktp
dENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzE2Q0M3OEMwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeC5oICovOyB9
OworCQkzMTZDQzc5MzBEREU0Qjc5MDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTTWF0cml4Lm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2Q0M3OEQwRERF
NEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeC5tbSAqLzsgfTsKKwkJMzE2Q0M3OTQw
RERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeEludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZDQzc4RTBEREU0Qjc5MDA4
ODk5RTIgLyogRE9NV2ViS2l0Q1NTTWF0cml4SW50ZXJuYWwuaCAqLzsgfTsKKwkJMzE2Q0M3OTUw
RERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTZDQzc4RjBEREU0Qjc5MDA4
ODk5RTIgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCAqLzsgfTsKKwkJMzE2Q0M3OTYw
RERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2Q0M3OTAwRERFNEI3OTAw
ODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLm1tICovOyB9OworCQkzMTZDQzc5
NzBEREU0Qjc5MDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWVJbnRlcm5hbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE2Q0M3OTEw
RERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlSW50ZXJuYWwuaCAq
LzsgfTsKKwkJMzE2Q0M3QkYwRERFNTdDRjAwODg5OUUyIC8qIFRyYW5zZm9ybTNELmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxNkNDN0JEMERERTU3
Q0YwMDg4OTlFMiAvKiBUcmFuc2Zvcm0zRC5jcHAgKi87IH07CisJCTMxNkNDN0MwMERERTU3Q0Yw
MDg4OTlFMiAvKiBUcmFuc2Zvcm0zRC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMzE2Q0M3QkUwRERFNTdDRjAwODg5OUUyIC8qIFRyYW5zZm9ybTNELmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzE5NUU3
NjkwRERFNkNGMTAwQTNBRjdBIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5NUU3NjcwRERF
NkNGMTAwQTNBRjdBIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwICovOyB9Owor
CQkzMTk1RTc2QTBEREU2Q0YxMDBBM0FGN0EgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzE5NUU3
NjgwRERFNkNGMTAwQTNBRjdBIC8qIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuaCAqLzsg
fTsKIAkJMzcxRjRGNDAwRDI1QjlBRjAwRUNFMEQ1IC8qIEZvbnREYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEYzRTBEMjVCOUFGMDBFQ0Uw
RDUgLyogRm9udERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkzNzFGNEY0MTBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzcxRjRGM0YwRDI1QjlB
RjAwRUNFMEQ1IC8qIEZvbnREYXRhLmNwcCAqLzsgfTsKIAkJMzcxRjRGRkMwRDI1RTdGMzAwRUNF
MEQ1IC8qIFNlZ21lbnRlZEZvbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9u
dERhdGEuaCAqLzsgfTsKQEAgLTM3MjcsOCArMzc0Nyw2IEBACiAJCUJDOTg1NDNFMENEM0Q5OEMw
MDA2OUJDMSAvKiBKU0NvbnNvbGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDOTg1NDNDMENEM0Q5OEIwMDA2OUJDMSAvKiBKU0NvbnNvbGUuaCAqLzsg
fTsKIAkJQkM5OEEyN0QwQzBDOTk1MDAwNEJFQkY3IC8qIEpTU3R5bGVTaGVldEN1c3RvbS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk4QTI3QzBD
MEM5OTUwMDA0QkVCRjcgLyogSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCAqLzsgfTsKIAkJQkM5OTgx
MkUwREJFODA3QTAwOENFOUVGIC8qIERPTUFic3RyYWN0Vmlld0ZyYW1lLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzk5ODEyRDBEQkU4MDdBMDA4Q0U5
RUYgLyogRE9NQWJzdHJhY3RWaWV3RnJhbWUuaCAqLzsgfTsKLQkJQkM5QUREMjMwQ0M0MDMyNjAw
MDk4QzRDIC8qIENTU1RyYW5zZm9ybVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzlBREQyMjBDQzQwMzI2MDAwOThDNEMgLyogQ1NTVHJhbnNm
b3JtVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQlCQzlBREQ4MDBDQzQwOTIyMDAwOThDNEMgLyogQ1NTVHJhbnNmb3JtVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5QUREN0YwQ0M0
MDkyMjAwMDk4QzRDIC8qIENTU1RyYW5zZm9ybVZhbHVlLmNwcCAqLzsgfTsKIAkJQkNBMTY5QTIw
QkZENTVCNDAwMTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMTY5QTAwQkZENTVCNDAw
MTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuY3BwICovOyB9OwogCQlCQ0ExNjlB
MzBCRkQ1NUI0MDAxOUNBNzYgLyogSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBMTY5QTEwQkZENTVCNDAw
MTlDQTc2IC8qIEpTSFRNTFRhYmxlQ2FwdGlvbkVsZW1lbnQuaCAqLzsgfTsKIAkJQkNBMzc4MTYw
RDE1QzY0NjAwQjc5M0Q2IC8qIFBhdXNlZFRpbWVvdXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQTM3ODE0MEQxNUM2NDYwMEI3OTNENiAvKiBQ
YXVzZWRUaW1lb3V0cy5jcHAgKi87IH07CkBAIC00ODY2LDYgKzQ4ODQsMjYgQEAKIAkJMkQ5MDY2
MDUwQkUxNDFENDAwOTU2OTk4IC8qIExheW91dFN0YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMYXlvdXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkyRDkwNjYwQjA2NjVEOTM3MDA2QjZGMUEgLyogQ2xpcGJvYXJkTWFjLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2FyZE1hYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJ
MkQ5MDY2MEMwNjY1RDkzNzAwNkI2RjFBIC8qIENsaXBib2FyZE1hYy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENsaXBib2FyZE1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CisJCTMxNkNDNzc2MERERTQ3QTAwMDg4OTlFMiAvKiBXZWJLaXRDU1NNYXRyaXguY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0Q1NTTWF0cml4LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2Q0M3NzcwRERFNDdBMDAwODg5OUUyIC8q
IFdlYktpdENTU01hdHJpeC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJL
aXRDU1NNYXRyaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2Q0M3NzgwRERF
NDdBMDAwODg5OUUyIC8qIFdlYktpdENTU01hdHJpeC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gV2ViS2l0Q1NTTWF0cml4LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2
Q0M3NzkwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzE2Q0M3N0EwRERFNDdBMDAwODg5
OUUyIC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTMxNkNDNzdCMERERTQ3QTAwMDg4OTlFMiAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZS5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTZDQzc4MzBEREU0QUMyMDA4ODk5
RTIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gSlNXZWJLaXRDU1NNYXRyaXguY3BwOyBwYXRoID0gLi4vV2ViS2l0QnVpbGQvRGVi
dWcvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdENTU01hdHJpeC5jcHA7IHNvdXJjZVRy
ZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJMzE2Q0M3ODQwRERFNEFDMjAwODg5OUUyIC8qIEpTV2Vi
S2l0Q1NTTWF0cml4LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViS2l0
Q1NTTWF0cml4Lmg7IHBhdGggPSAuLi9XZWJLaXRCdWlsZC9EZWJ1Zy9EZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTV2ViS2l0Q1NTTWF0cml4Lmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsK
KwkJMzE2Q0M3ODUwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gSlNXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZS5jcHA7IHBhdGggPSAuLi9XZWJLaXRCdWlsZC9EZWJ1Zy9EZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gU09V
UkNFX1JPT1Q7IH07CisJCTMxNkNDNzg2MERERTRBQzIwMDg4OTlFMiAvKiBKU1dlYktpdENTU1Ry
YW5zZm9ybVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEpTV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUuaDsgcGF0aCA9IC4uL1dlYktpdEJ1aWxkL0RlYnVnL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CisJCTMxNkNDNzhDMERERTRCNzkwMDg4OTlFMiAvKiBET01XZWJLaXRD
U1NNYXRyaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NV2ViS2l0Q1NT
TWF0cml4Lmg7IHBhdGggPSAuLi9XZWJLaXRCdWlsZC9EZWJ1Zy9EZXJpdmVkU291cmNlcy9XZWJD
b3JlL0RPTVdlYktpdENTU01hdHJpeC5oOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CisJ
CTMxNkNDNzhEMERERTRCNzkwMDg4OTlFMiAvKiBET01XZWJLaXRDU1NNYXRyaXgubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBET01XZWJLaXRDU1NNYXRyaXgubW07
IHBhdGggPSAuLi9XZWJLaXRCdWlsZC9EZWJ1Zy9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0RPTVdl
YktpdENTU01hdHJpeC5tbTsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkzMTZDQzc4
RTBEREU0Qjc5MDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTTWF0cml4SW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NV2ViS2l0Q1NTTWF0cml4SW50ZXJuYWwuaDsg
cGF0aCA9IC4uL1dlYktpdEJ1aWxkL0RlYnVnL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvRE9NV2Vi
S2l0Q1NTTWF0cml4SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQkz
MTZDQzc4RjBEREU0Qjc5MDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuaDsgcGF0aCA9IC4uL1dlYktpdEJ1aWxkL0RlYnVnL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
RE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9
OworCQkzMTZDQzc5MDBEREU0Qjc5MDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBET01XZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZS5tbTsgcGF0aCA9IC4uL1dlYktpdEJ1aWxkL0RlYnVnL0Rlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUubW07IHNvdXJjZVRyZWUg
PSBTT1VSQ0VfUk9PVDsgfTsKKwkJMzE2Q0M3OTEwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktp
dENTU1RyYW5zZm9ybVZhbHVlSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gRE9NV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWVJbnRlcm5hbC5oOyBwYXRoID0gLi4vV2Vi
S2l0QnVpbGQvRGVidWcvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9ET01XZWJLaXRDU1NUcmFuc2Zv
cm1WYWx1ZUludGVybmFsLmg7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKKwkJMzE2Q0M3
QkQwRERFNTdDRjAwODg5OUUyIC8qIFRyYW5zZm9ybTNELmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFRyYW5zZm9ybTNELmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMzE2Q0M3QkUwRERFNTdDRjAwODg5OUUyIC8qIFRyYW5zZm9ybTNELmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRyYW5zZm9ybTNELmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxOTVFNzY3MERERTZDRjEwMEEzQUY3QSAvKiBKU1dlYktpdENTU01h
dHJpeENvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMTk1RTc2ODBEREU2Q0YxMDBBM0FGN0EgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25z
dHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktpdENTU01h
dHJpeENvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM3MUY0RjNF
MEQyNUI5QUYwMEVDRTBENSAvKiBGb250RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb250RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNzFGNEYz
RjBEMjVCOUFGMDBFQ0UwRDUgLyogRm9udERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gRm9udERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkzNzFGNEZGQTBEMjVFN0YzMDBFQ0UwRDUgLyogU2VnbWVudGVkRm9udERhdGEuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VnbWVudGVkRm9udERhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgwNjEsOCArODA5OSw2IEBACiAJCUJDOTg1NDNDMENEM0Q5
OEIwMDA2OUJDMSAvKiBKU0NvbnNvbGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTQ29uc29sZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzk4QTI3QzBD
MEM5OTUwMDA0QkVCRjcgLyogSlNTdHlsZVNoZWV0Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU3R5bGVTaGVldEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUJDOTk4MTJEMERCRTgwN0EwMDhDRTlFRiAvKiBET01BYnN0cmFj
dFZpZXdGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01BYnN0cmFj
dFZpZXdGcmFtZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzlBREQyMjBDQzQw
MzI2MDAwOThDNEMgLyogQ1NTVHJhbnNmb3JtVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENTU1RyYW5zZm9ybVZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUJDOUFERDdGMENDNDA5MjIwMDA5OEM0QyAvKiBDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTVHJhbnNmb3JtVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0ExNjlBMDBCRkQ1NUI0MDAxOUNB
NzYgLyogSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MVGFibGVDYXB0aW9uRWxlbWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQTE2OUExMEJGRDU1QjQwMDE5Q0E3NiAvKiBKU0hUTUxU
YWJsZUNhcHRpb25FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0hUTUxUYWJsZUNhcHRpb25FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDQTM3ODE0MEQxNUM2NDYwMEI3OTNENiAvKiBQYXVzZWRUaW1lb3V0cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXVzZWRUaW1lb3V0cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05MjM5LDYgKzkyNzUsMTIgQEAKIAkJODU5NjdEQ0EwQUE4
QkYwRjAwNUZFREVFIC8qIENTUyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMzE2Q0M3OEMwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJp
eC5oICovLAorCQkJCTMxNkNDNzhEMERERTRCNzkwMDg4OTlFMiAvKiBET01XZWJLaXRDU1NNYXRy
aXgubW0gKi8sCisJCQkJMzE2Q0M3OEUwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01h
dHJpeEludGVybmFsLmggKi8sCisJCQkJMzE2Q0M3OEYwRERFNEI3OTAwODg5OUUyIC8qIERPTVdl
YktpdENTU1RyYW5zZm9ybVZhbHVlLmggKi8sCisJCQkJMzE2Q0M3OTAwRERFNEI3OTAwODg5OUUy
IC8qIERPTVdlYktpdENTU1RyYW5zZm9ybVZhbHVlLm1tICovLAorCQkJCTMxNkNDNzkxMERERTRC
NzkwMDg4OTlFMiAvKiBET01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZUludGVybmFsLmggKi8sCiAJ
CQkJODUwMzJEQzMwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU0NoYXJzZXRSdWxlLmggKi8sCiAJ
CQkJODUwMzJEQzQwQUE4QzlCRTAwN0QzQjdEIC8qIERPTUNTU0NoYXJzZXRSdWxlLm1tICovLAog
CQkJCTg1MDMyREM1MEFBOEM5QkUwMDdEM0I3RCAvKiBET01DU1NGb250RmFjZVJ1bGUuaCAqLywK
QEAgLTExMTE3LDYgKzExMTU5LDEwIEBACiAJCUE4M0I3OTBFMENDQUZGOTcwMDBCMDgyNSAvKiBD
U1MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTMxNkND
NzgzMERERTRBQzIwMDg4OTlFMiAvKiBKU1dlYktpdENTU01hdHJpeC5jcHAgKi8sCisJCQkJMzE2
Q0M3ODQwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTTWF0cml4LmggKi8sCisJCQkJMzE2
Q0M3ODUwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3BwICov
LAorCQkJCTMxNkNDNzg2MERERTRBQzIwMDg4OTlFMiAvKiBKU1dlYktpdENTU1RyYW5zZm9ybVZh
bHVlLmggKi8sCiAJCQkJOTMwNzA1RDcwOUUwQzlCNzAwQjE3RkU0IC8qIEpTQ291bnRlci5jcHAg
Ki8sCiAJCQkJOTMwNzA1RDkwOUUwQzlCRjAwQjE3RkU0IC8qIEpTQ291bnRlci5oICovLAogCQkJ
CUJDNDZDMUYwMEMwRERDOEYwMDIwQ0ZDMyAvKiBKU0NTU0NoYXJzZXRSdWxlLmNwcCAqLywKQEAg
LTExOTQ3LDYgKzExOTkzLDggQEAKIAkJQjJBMDE1OTEwQUY2Q0Q1MzAwNkJDRTBFIC8qIGdyYXBo
aWNzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkzMTZD
QzdCRDBEREU1N0NGMDA4ODk5RTIgLyogVHJhbnNmb3JtM0QuY3BwICovLAorCQkJCTMxNkNDN0JF
MERERTU3Q0YwMDg4OTlFMiAvKiBUcmFuc2Zvcm0zRC5oICovLAogCQkJCUIyMzU0MEYwMEQwMDc4
MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuY3BwICovLAogCQkJCUIyMzU0MEYxMEQwMDc4
MkUwMDIzODJGQSAvKiBTdHJpbmdUcnVuY2F0b3IuaCAqLywKIAkJCQlCMkMzREE0RjBEMDA2Q0Q2
MDBFRjZGMjYgLyogRm9udC5jcHAgKi8sCkBAIC0xMjEyMyw2ICsxMjE3MSw4IEBACiAJCUJDMUEz
NzkzMDk3QzZGQjEwMDE5RjNEOCAvKiBqcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMzE5NUU3NjcwRERFNkNGMTAwQTNBRjdBIC8qIEpTV2ViS2l0Q1NT
TWF0cml4Q29uc3RydWN0b3IuY3BwICovLAorCQkJCTMxOTVFNzY4MERERTZDRjEwMEEzQUY3QSAv
KiBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmggKi8sCiAJCQkJMTRERkIzM0YwQTdERjc2
MzAwMThGNzY5IC8qIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQlCQzRFREVGNzBDMDhGNDE0MDA3
RURENDkgLyogQ3VzdG9tICovLAogCQkJCTkzRjhCMzA2MEEzMDBGRUEwMEY2MUFCOCAvKiBDb2Rl
R2VuZXJhdG9ySlMucG0gKi8sCkBAIC0xMjYyMSw2ICsxMjY3MSwxMiBAQAogCQlGNTIzRDE4NDAy
REU0MkU4MDE4NjM1Q0EgLyogY3NzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQkzMTZDQzc3NjBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTTWF0cml4
LmNwcCAqLywKKwkJCQkzMTZDQzc3NzBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTTWF0cml4
LmggKi8sCisJCQkJMzE2Q0M3NzgwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENTU01hdHJpeC5p
ZGwgKi8sCisJCQkJMzE2Q0M3NzkwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlLmNwcCAqLywKKwkJCQkzMTZDQzc3QTBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuaCAqLywKKwkJCQkzMTZDQzc3QjBEREU0N0EwMDA4ODk5RTIgLyogV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsICovLAogCQkJCUE4MEU2Q0RBMEExOTg5Q0EwMDdGQjhD
NSAvKiBDb3VudGVyLmggKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0IC8qIENvdW50
ZXIuaWRsICovLAogCQkJCUE4MEU2Q0JCMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NCb3JkZXJJbWFn
ZVZhbHVlLmNwcCAqLywKQEAgLTEyNzA2LDggKzEyNzYyLDYgQEAKIAkJCQk4NThDMzkxMDBBQThG
RjAwMDBCMTg3QTQgLyogQ1NTU3R5bGVTaGVldC5pZGwgKi8sCiAJCQkJQkM4MEM5ODUwQ0QyOTRF
RTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuY3BwICovLAogCQkJCUJDODBDOTg2
MENEMjk0RUUwMEEwQjdCMyAvKiBDU1NUaW1pbmdGdW5jdGlvblZhbHVlLmggKi8sCi0JCQkJQkM5
QUREN0YwQ0M0MDkyMjAwMDk4QzRDIC8qIENTU1RyYW5zZm9ybVZhbHVlLmNwcCAqLywKLQkJCQlC
QzlBREQyMjBDQzQwMzI2MDAwOThDNEMgLyogQ1NTVHJhbnNmb3JtVmFsdWUuaCAqLywKIAkJCQkz
NzFGNTNFODBEMjcwNEY5MDBFQ0UwRDUgLyogQ1NTVW5pY29kZVJhbmdlVmFsdWUuY3BwICovLAog
CQkJCTM3MUY1M0U3MEQyNzA0RjkwMEVDRTBENSAvKiBDU1NVbmljb2RlUmFuZ2VWYWx1ZS5oICov
LAogCQkJCUE4MEU2Q0NFMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NVbmtub3duUnVsZS5oICovLApA
QCAtMTMyMDcsNyArMTMyNjEsNiBAQAogCQkJCUJDNzcyQjQwMEM0RUE5MUUwMDgzMjg1RiAvKiBD
U1NTdHlsZVNlbGVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEVBODAwNzBBMTk1MTZFMDBB
OEVGNUYgLyogQ1NTU3R5bGVTaGVldC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM4MEM5ODgwQ0Qy
OTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLAot
CQkJCUJDOUFERDIzMENDNDAzMjYwMDA5OEM0QyAvKiBDU1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJREQ3Q0RGMjUwQTIzQ0Y5ODAwMDY5OTI4IC8qIENTU1Vua25vd25SdWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBFNkNFRTBBMTk4OUNBMDA3RkI4QzUgLyogQ1NTVmFs
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NjU4MTUxMDlEMTMwNDMwMDBFNjFENyAvKiBDU1NW
YWx1ZUtleXdvcmRzLmggaW4gSGVhZGVycyAqLywKQEAgLTE1MTE4LDYgKzE1MTcxLDE2IEBACiAJ
CQkJOTU5NjlCNDgwREQ4RDIxQjAwRjY1M0VFIC8qIEphdmFTY3JpcHRQcm9maWxlTm9kZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTU5NjlCNEEwREQ4RDIxQjAwRjY1M0VFIC8qIEphdmFTY3JpcHRQ
cm9maWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTdGQTYxOTBEREEzQjNBMDAyOEY4QTUgLyog
TmV0d29ya1N0YXRlTm90aWZpZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNkNDNzdEMERERTQ3
QTAwMDg4OTlFMiAvKiBXZWJLaXRDU1NNYXRyaXguaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNkND
NzgwMERERTQ3QTAwMDg4OTlFMiAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMzE2Q0M3ODgwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTTWF0cml4
LmggaW4gSGVhZGVycyAqLywKKwkJCQkzMTZDQzc4QTBEREU0QUMyMDA4ODk5RTIgLyogSlNXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2Q0M3OTIwRERFNEI3
OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMzE2
Q0M3OTQwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktpdENTU01hdHJpeEludGVybmFsLmggaW4g
SGVhZGVycyAqLywKKwkJCQkzMTZDQzc5NTBEREU0Qjc5MDA4ODk5RTIgLyogRE9NV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxNkNDNzk3MERERTRCNzkwMDg4
OTlFMiAvKiBET01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZUludGVybmFsLmggaW4gSGVhZGVycyAq
LywKKwkJCQkzMTZDQzdDMDBEREU1N0NGMDA4ODk5RTIgLyogVHJhbnNmb3JtM0QuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTMxOTVFNzZBMERERTZDRjEwMEEzQUY3QSAvKiBKU1dlYktpdENTU01hdHJp
eENvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzYyNjQwQjBERTExMzdEMDA5RDVB
MDAgLyogQ1NTUmVmbGVjdGlvbkRpcmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xNTIzMiw2ICsxNTI5
NSw4IEBACiAJCQkJODUxMzZDQTgwQUVENjY1OTAwRjkwQTNEIC8qIHdlc3RSZXNpemVDdXJzb3Iu
cG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlGNEYgLyogem9v
bUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMgKi8sCiAJCQkJMUFCMUFFN0IwQzA1MUZERTAwMTM5
RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKKwkJCQkzMTZDQzc3RTBE
REU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTTWF0cml4LmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJ
CQkJMzE2Q0M3ODEwRERFNDdBMDAwODg5OUUyIC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlk
bCBpbiBSZXNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNTM3Miw3ICsxNTQzNyw2IEBACiAJCQkJQkM3NzJCM0Yw
QzRFQTkxRTAwODMyODVGIC8qIENTU1N0eWxlU2VsZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQThFQTgwMDgwQTE5NTE2RTAwQThFRjVGIC8qIENTU1N0eWxlU2hlZXQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM4MEM5ODcwQ0QyOTRFRTAwQTBCN0IzIC8qIENTU1RpbWluZ0Z1bmN0aW9u
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQkM5QUREODAwQ0M0MDkyMjAwMDk4QzRDIC8q
IENTU1RyYW5zZm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4MEU2Q0U0MEExOTg5
Q0EwMDdGQjhDNSAvKiBDU1NWYWx1ZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDM0RB
MjcwRDAwNkMxRDAwRUY2RjI2IC8qIENTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNC
MTZDMTcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTY4
MzcsNiArMTY5MDEsMTQgQEAKIAkJCQk5NTk2OUI0OTBERDhEMjFCMDBGNjUzRUUgLyogSmF2YVNj
cmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE3RkE2MUIwRERBM0JCRTAwMjhG
OEE1IC8qIE5ldHdvcmtTdGF0ZU5vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBN0ZB
NjQ5MEREQTNDQkEwMDI4RjhBNSAvKiBOZXR3b3JrU3RhdGVOb3RpZmllck1hYy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkzMTZDQzc3QzBEREU0N0EwMDA4ODk5RTIgLyogV2ViS2l0Q1NTTWF0cml4
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTMxNkNDNzdGMERERTQ3QTAwMDg4OTlFMiAvKiBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkzMTZDQzc4NzBEREU0
QUMyMDA4ODk5RTIgLyogSlNXZWJLaXRDU1NNYXRyaXguY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MzE2Q0M3ODkwRERFNEFDMjAwODg5OUUyIC8qIEpTV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMzE2Q0M3OTMwRERFNEI3OTAwODg5OUUyIC8qIERPTVdlYktp
dENTU01hdHJpeC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTMxNkNDNzk2MERERTRCNzkwMDg4OTlF
MiAvKiBET01XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTMx
NkNDN0JGMERERTU3Q0YwMDg4OTlFMiAvKiBUcmFuc2Zvcm0zRC5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkzMTk1RTc2OTBEREU2Q0YxMDBBM0FGN0EgLyogSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1
Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZVNvdXJj
ZXMuYmtsIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKaW5kZXggYWRjOTBhYy4uNzMyMTJj
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKKysrIGIvV2ViQ29yZS9X
ZWJDb3JlU291cmNlcy5ia2wKQEAgLTk5LDYgKzk5LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRo
ZSBsaXN0IG9mIGZpbGVzIG5lZWRlZCB0byBidWlsZCBXZWJDb3JlLgogICAgICAgICBiaW5kaW5n
cy9qcy9KU1N0eWxlU2hlZXRDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTU3R5bGVT
aGVldExpc3RDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTVHJlZVdhbGtlckN1c3Rv
bS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5j
cHAKICAgICAgICAgYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNwcAog
ICAgICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAogICAgICAgICBi
aW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTE1OCw3ICsxNTks
NiBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxk
IFdlYkNvcmUuCiAgICAgICAgIGNzcy9DU1NTdHlsZVJ1bGUuY3BwCiAgICAgICAgIGNzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAogICAgICAgICBjc3MvQ1NTU3R5bGVTaGVldC5jcHAKLSAgICAgICAg
Y3NzL0NTU1RyYW5zZm9ybVZhbHVlLmNwcAogICAgICAgICBjc3MvQ1NTVGltaW5nRnVuY3Rpb25W
YWx1ZS5jcHAKICAgICAgICAgY3NzL0NTU1VuaWNvZGVSYW5nZVZhbHVlLmNwcAogICAgICAgICBj
c3MvQ1NTVmFsdWVMaXN0LmNwcApAQCAtMTc0LDYgKzE3NCw4IEBAIFRoaXMgZmlsZSBjb250YWlu
cyB0aGUgbGlzdCBvZiBmaWxlcyBuZWVkZWQgdG8gYnVpbGQgV2ViQ29yZS4KICAgICAgICAgY3Nz
L1N0eWxlTGlzdC5jcHAKICAgICAgICAgY3NzL1N0eWxlU2hlZXQuY3BwCiAgICAgICAgIGNzcy9T
dHlsZVNoZWV0TGlzdC5jcHAKKyAgICAgICAgY3NzL1dlYktpdENTU01hdHJpeC5jcHAKKyAgICAg
ICAgY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcAogICAgIDwvc2V0PgogCiAgICAgPHNl
dCBhcHBlbmQ9IjEiIHZhcj0iV0VCQ09SRV9TT1VSQ0VTX0RFUklWRURTT1VSQ0VTIj4KQEAgLTMx
OSw2ICszMjEsOCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVk
IHRvIGJ1aWxkIFdlYkNvcmUuCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUZXh0
RXZlbnQuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNUcmVlV2Fsa2VyLmNw
cAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTVUlFdmVudC5jcHAKKyAgICAgICAg
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdENTU01hdHJpeC5jcHAKKyAgICAgICAgRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmNwcAogICAgICAg
ICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTV2hlZWxFdmVudC5jcHAKICAgICAgICAgRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1hNTEh0dHBSZXF1ZXN0LmNwcAogICAgICAgICBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uY3BwCkBAIC0zOTksNiArNDAz
LDggQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZWRlZCB0byBidWls
ZCBXZWJDb3JlLgogICAgICAgICBkb20vVHJlZVdhbGtlci5jcHAKICAgICAgICAgZG9tL1VJRXZl
bnQuY3BwCiAgICAgICAgIGRvbS9VSUV2ZW50V2l0aEtleVN0YXRlLmNwcAorICAgICAgICBkb20v
V2ViS2l0Q1NTTWF0cml4LmNwcAorICAgICAgICBkb20vV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
Y3BwCiAgICAgICAgIGRvbS9XaGVlbEV2ZW50LmNwcAogICAgICAgICBkb20vWE1MVG9rZW5pemVy
LmNwcAogICAgIDwvc2V0PgpAQCAtNjQ3LDYgKzY1Myw3IEBAIFRoaXMgZmlsZSBjb250YWlucyB0
aGUgbGlzdCBvZiBmaWxlcyBuZWVkZWQgdG8gYnVpbGQgV2ViQ29yZS4KICAgICAgICAgcGxhdGZv
cm0vZ3JhcGhpY3MvR2x5cGhXaWR0aE1hcC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
U2VnbWVudGVkRm9udERhdGEuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL1NpbXBsZUZv
bnREYXRhLmNwcAorICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9UcmFuc2Zvcm0zRC5jcHAKICAg
ICAgICAgcGxhdGZvcm0vS1VSTC5jcHAKICAgICAgICAgcGxhdGZvcm0vTG9nZ2luZy5jcHAKICAg
ICAgICAgcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dCYXNlLmNwcAppbmRleCAyZjRmNjEyLi4yM2UxMTI2IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiSlNI
VE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiSlNJbWFnZUNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRyaXhD
b25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllci5oIgpAQCAtMTg5LDYg
KzE5MCw3IEBAIGNvbnN0IENsYXNzSW5mbyBKU0RPTVdpbmRvd0Jhc2U6OnNfaW5mbyA9IHsgIldp
bmRvdyIsIDAsICZKU0RPTVdpbmRvd0Jhc2VUYWJsZSwKICAgQXVkaW8gICAgICAgICAgICAgICAg
IFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6QXVkaW8gICAgICAgICAgICAgIERvbnREZWxldGUK
ICAgSW1hZ2UgICAgICAgICAgICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6SW1hZ2Ug
ICAgICAgICAgICAgIERvbnREZWxldGUKICAgT3B0aW9uICAgICAgICAgICAgICAgIFdlYkNvcmU6
OkpTRE9NV2luZG93QmFzZTo6T3B0aW9uICAgICAgICAgICAgIERvbnREZWxldGUKKyAgV2ViS2l0
Q1NTTWF0cml4ICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6V2ViS2l0Q1NTTWF0cml4
ICAgIERvbnREZWxldGUKICAgWE1MSHR0cFJlcXVlc3QgICAgICAgIFdlYkNvcmU6OkpTRE9NV2lu
ZG93QmFzZTo6WE1MSHR0cFJlcXVlc3QgICAgIERvbnREZWxldGUKICAgWFNMVFByb2Nlc3NvciAg
ICAgICAgIFdlYkNvcmU6OkpTRE9NV2luZG93QmFzZTo6WFNMVFByb2Nlc3NvciAgICAgIERvbnRE
ZWxldGUKIEBlbmQKQEAgLTQzNSw3ICs0MzcsMTEgQEAgSlNWYWx1ZSAqSlNET01XaW5kb3dCYXNl
OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuKSBjb25zdAogICAg
ICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICAgIHJldHVybiBuZXcgSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yKGV4
ZWMsIGltcGwoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSk7Ci0gICAgY2FzZSBYTUxIdHRwUmVxdWVz
dDoKKyAgIGNhc2UgV2ViS2l0Q1NTTWF0cml4OgorICAgICAgIGlmICghYWxsb3dzQWNjZXNzRnJv
bShleGVjKSkKKyAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgcmV0dXJu
IG5ldyBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yKGV4ZWMsIGltcGwoKS0+ZnJhbWUoKS0+
ZG9jdW1lbnQoKSk7CisgICBjYXNlIFhNTEh0dHBSZXF1ZXN0OgogICAgICAgaWYgKCFhbGxvd3NB
Y2Nlc3NGcm9tKGV4ZWMpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgIHJl
dHVybiBuZXcgSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yKGV4ZWMsIGltcGwoKS0+ZnJhbWUo
KS0+ZG9jdW1lbnQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAppbmRleCA5
NzY1NmUyLi44N2MyYWEzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmgKQEAg
LTEzMSw4ICsxMzEsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBPbmJlZm9y
ZXVubG9hZCwKIAogICAgICAgICAgICAgLy8gQ29uc3RydWN0b3JzCi0gICAgICAgICAgICBBdWRp
bywgSW1hZ2UsIE9wdGlvbiwgWE1MSHR0cFJlcXVlc3QsCi0gICAgICAgICAgICBYU0xUUHJvY2Vz
c29yCisgICAgICAgICAgICBBdWRpbywgSW1hZ2UsIE9wdGlvbiwgV2ViS2l0Q1NTTWF0cml4LAor
ICAgICAgICAgICAgWE1MSHR0cFJlcXVlc3QsIFhTTFRQcm9jZXNzb3IKICAgICAgICAgfTsKIAog
ICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2ViS2l0Q1NT
TWF0cml4Q29uc3RydWN0b3IuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU01h
dHJpeENvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41
ZDg4YmUzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENT
U01hdHJpeENvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IuaCIKKworI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiSlNXZWJLaXRDU1NNYXRyaXguaCIKKyNpbmNsdWRl
ICJUZXh0LmgiCisjaW5jbHVkZSAiV2ViS2l0Q1NTTWF0cml4LmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBLSlM7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTV2ViS2l0
Q1NTTWF0cml4Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIldlYktpdENTU01hdHJpeENvbnN0cnVj
dG9yIiwgMCwgMCwgMCB9OworCitKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yOjpKU1dlYktp
dENTU01hdHJpeENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgRG9jdW1lbnQqIGRvY3VtZW50
KQorICAgIDogRE9NT2JqZWN0KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+b2JqZWN0UHJv
dG90eXBlKCkpCisgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQoreworICAgIHB1dERpcmVjdChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcig0KSwgUmVhZE9ubHl8RG9udERl
bGV0ZXxEb250RW51bSk7Cit9CisKK2Jvb2wgSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvcjo6
aW1wbGVtZW50c0NvbnN0cnVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK0pT
T2JqZWN0KiBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yOjpjb25zdHJ1Y3QoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBMaXN0JiBhcmdzKQoreworICAgIFN0cmluZyBzOworICAgIGlmIChhcmdz
LnNpemUoKSA+PSAxKSB7CisgICAgICAgIHMgPSBhcmdzWzBdLT5nZXRTdHJpbmcoKTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odG9KUyhleGVjLCBuZXcg
V2ViS2l0Q1NTTWF0cml4KHMpKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5o
IGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRiYzYzNgotLS0gL2Rldi9udWxsCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5oCkBA
IC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIs
IEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmbmRlZiBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yX2gKKyNkZWZpbmUgSlNX
ZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRlICJranNfYmluZGluZy5oIgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBE
b2N1bWVudDsKKyAgICAKK2NsYXNzIEpTV2ViS2l0Q1NTTWF0cml4Q29uc3RydWN0b3IgOiBwdWJs
aWMgRE9NT2JqZWN0IHsKK3B1YmxpYzoKKyAgICBKU1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9y
KEtKUzo6RXhlY1N0YXRlKiwgRG9jdW1lbnQqKTsKKworICAgIHZpcnR1YWwgYm9vbCBpbXBsZW1l
bnRzQ29uc3RydWN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBLSlM6OkpTT2JqZWN0KiBjb25zdHJ1
Y3QoS0pTOjpFeGVjU3RhdGUqLCBjb25zdCBLSlM6Okxpc3QmKTsKKyAgICAKKyAgICB2aXJ0dWFs
IGNvbnN0IEtKUzo6Q2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZv
OyB9CisgICAgc3RhdGljIGNvbnN0IEtKUzo6Q2xhc3NJbmZvIHNfaW5mbzsKKworcHJpdmF0ZToK
KyAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7Cit9OworCit9CisKKyNlbmRpZiAvLyBK
U1dlYktpdENTU01hdHJpeENvbnN0cnVjdG9yX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01JbnRlcm5hbC5oIGIvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFs
LmgKaW5kZXggMWE5MzU0Ni4uZDcwNmFmNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUludGVybmFsLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFs
LmgKQEAgLTE0Myw2ICsxNDMsOCBAQAogI2ltcG9ydCAiRE9NVGV4dEludGVybmFsLmgiCiAjaW1w
b3J0ICJET01UcmVlV2Fsa2VySW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVVJRXZlbnRJbnRlcm5h
bC5oIgorI2ltcG9ydCAiRE9NV2ViS2l0Q1NTTWF0cml4SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRP
TVdlYktpdENTU1RyYW5zZm9ybVZhbHVlSW50ZXJuYWwuaCIKICNpbXBvcnQgIkRPTVdoZWVsRXZl
bnRJbnRlcm5hbC5oIgogCiAjaWYgRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGE1NjZmODkuLjEyNDRkZTcgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtMTQxNiw2ICsxNDE2LDcg
QEAgbXkgJXR5cGVDYW5GYWlsQ29udmVyc2lvbiA9ICgKICAgICAiU1ZHUmVjdCIgPT4gMCwKICAg
ICAiU1ZHVHJhbnNmb3JtIiA9PiAwLAogICAgICJWb2lkQ2FsbGJhY2siID0+IDEsCisgICAgIldl
YktpdENTU01hdHJpeCIgPT4gMCwKICAgICAiWFBhdGhFdmFsdWF0b3IiID0+IDAsCiAgICAgIlhQ
YXRoTlNSZXNvbHZlciIgPT4gMCwKICAgICAiWFBhdGhSZXN1bHQiID0+IDAsCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0gYi9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvck9iakMucG0KaW5kZXggZTY4ZjI0ZC4uODRm
YjY5NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JP
YmpDLnBtCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yT2JqQy5w
bQpAQCAtNDAxLDcgKzQwMSw3IEBAIHN1YiBHZXRCYXNlQ2xhc3MKIAogICAgIHJldHVybiAkcGFy
ZW50IGlmICRwYXJlbnQgZXEgIk9iamVjdCIgb3IgSXNCYXNlVHlwZSgkcGFyZW50KTsKICAgICBy
ZXR1cm4gIkV2ZW50IiBpZiAkcGFyZW50IGVxICJVSUV2ZW50IjsKLSAgICByZXR1cm4gIkNTU1Zh
bHVlIiBpZiAkcGFyZW50IGVxICJTVkdDb2xvciI7CisgICAgcmV0dXJuICJDU1NWYWx1ZSIgaWYg
JHBhcmVudCBlcSAiU1ZHQ29sb3IiIG9yICRwYXJlbnQgZXEgIkNTU1ZhbHVlTGlzdCI7CiAgICAg
cmV0dXJuICJOb2RlIjsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcCBiL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKaW5kZXggMmY1YmEyNi4uNTAzNmY4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiUmVj
dC5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUgIlNoYWRvd1ZhbHVlLmgi
CisjaW5jbHVkZSAiV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCIKIAogI2lmIEVOQUJMRShEQVNI
Qk9BUkRfU1VQUE9SVCkKICNpbmNsdWRlICJEYXNoYm9hcmRSZWdpb24uaCIKQEAgLTE4Myw2ICsx
ODQsOSBAQCBzdGF0aWMgY29uc3QgaW50IGNvbXB1dGVkUHJvcGVydGllc1tdID0gewogICAgIENT
U1Byb3BlcnR5V2Via2l0VGV4dFNlY3VyaXR5LAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0
cm9rZUNvbG9yLAogICAgIENTU1Byb3BlcnR5V2Via2l0VGV4dFN0cm9rZVdpZHRoLAorICAgIENT
U1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtLAorICAgIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luWCwKKyAgICBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybU9yaWdpblksCiAgICAgQ1NT
UHJvcGVydHlXZWJraXRVc2VyRHJhZywKICAgICBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJNb2RpZnks
CiAgICAgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0LApAQCAtMzgzLDYgKzM4NywzNCBAQCBz
dGF0aWMgSW50UmVjdCBzaXppbmdCb3goUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICByZXR1
cm4gcmVuZGVyZXItPnN0eWxlKCktPmJveFNpemluZygpID09IENPTlRFTlRfQk9YID8gcmVuZGVy
ZXItPmNvbnRlbnRCb3goKSA6IHJlbmRlcmVyLT5ib3JkZXJCb3goKTsKIH0KIAorc3RhdGljIFBh
c3NSZWZQdHI8Q1NTVmFsdWVMaXN0PiBjb21wdXRlZFRyYW5zZm9ybShSZW5kZXJPYmplY3QqIHJl
bmRlcmVyKQoreworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOworICAgIAor
ICAgIEludFJlY3QgYm94ID0gc2l6aW5nQm94KHJlbmRlcmVyKTsKKyAgICAKKyAgICBUcmFuc2Zv
cm0zRCB0cmFuc2Zvcm0zZDsKKworICAgIHJlbmRlcmVyLT5zdHlsZSgpLT5hcHBseVRyYW5zZm9y
bSh0cmFuc2Zvcm0zZCwgYm94LnNpemUoKSwgZmFsc2UpOworCisgICAgQWZmaW5lVHJhbnNmb3Jt
IHRyYW5zZm9ybSA9IHRyYW5zZm9ybTNkLmFmZmluZVRyYW5zZm9ybSgpOworCisgICAgUmVmUHRy
PFdlYktpdENTU1RyYW5zZm9ybVZhbHVlPiAgdHJhbnNmb3JtVmFsID0gbmV3IFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlKFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpNYXRyaXhUcmFuc2Zvcm1PcGVy
YXRpb24pOworICAgIAorICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVW
YWx1ZSh0cmFuc2Zvcm0uYSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAg
IHRyYW5zZm9ybVZhbC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm0uYigp
LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgIHRyYW5zZm9ybVZhbC0+YXBw
ZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm0uYygpLCBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX05VTUJFUikpOworICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKG5ldyBDU1NQcmltaXRp
dmVWYWx1ZSh0cmFuc2Zvcm0uZCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwor
ICAgIHRyYW5zZm9ybVZhbC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm0u
ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOworICAgIHRyYW5zZm9ybVZhbC0+
YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSh0cmFuc2Zvcm0uZigpLCBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUikpOworICAgIAorICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3Qg
PSBuZXcgQ1NTVmFsdWVMaXN0KHRydWUpOworICAgIGxpc3QtPmFwcGVuZCh0cmFuc2Zvcm1WYWwp
OworICAgIAorICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKK30KKwogQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24oUGFzc1JlZlB0cjxOb2Rl
PiBuKQogICAgIDogbV9ub2RlKG4pCiB7CkBAIC05OTgsNiArMTAzMCwyMiBAQCBQYXNzUmVmUHRy
PENTU1ZhbHVlPiBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFs
dWUoaW50IHByb3BlcgogICAgICAgICAgICAgcmV0dXJuIGdldEJvcmRlclJhZGl1c0Nvcm5lclZh
bHVlKHN0eWxlLT5ib3JkZXJUb3BMZWZ0UmFkaXVzKCkpOwogICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5V2Via2l0Qm9yZGVyVG9wUmlnaHRSYWRpdXM6CiAgICAgICAgICAgICByZXR1cm4gZ2V0Qm9y
ZGVyUmFkaXVzQ29ybmVyVmFsdWUoc3R5bGUtPmJvcmRlclRvcFJpZ2h0UmFkaXVzKCkpOworICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3JtOgorICAgICAgICAgICAgcmV0dXJu
IGNvbXB1dGVkVHJhbnNmb3JtKHJlbmRlcmVyKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRyYW5zZm9ybU9yaWdpblg6CisgICAgICAgICAgICBpZiAocmVuZGVyZXIpIHsKKyAgICAg
ICAgICAgICAgICBJbnRSZWN0IGJveCA9IHNpemluZ0JveChyZW5kZXJlcik7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+dHJhbnNmb3JtT3JpZ2lu
WCgpLmNhbGNNaW5WYWx1ZShib3gud2lkdGgoKSksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUFgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVy
biBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoc3R5bGUtPnRyYW5zZm9ybU9yaWdpblgoKSk7CisgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm1PcmlnaW5ZOgorICAgICAgICAgICAg
aWYgKHJlbmRlcmVyKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCBib3ggPSBzaXppbmdCb3go
cmVuZGVyZXIpOworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUo
c3R5bGUtPnRyYW5zZm9ybU9yaWdpblkoKS5jYWxjTWluVmFsdWUoYm94LmhlaWdodCgpKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19QWCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDU1NQcmltaXRpdmVWYWx1ZShzdHlsZS0+dHJh
bnNmb3JtT3JpZ2luWSgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUNsaXA6CiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmIChzdHlsZS0+aGFzQ2xpcCgpKSB7CkBAIC0xMDY2LDEwICsxMTE0
LDYgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpn
ZXRQcm9wZXJ0eUNTU1ZhbHVlKGludCBwcm9wZXIKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdE1hcnF1ZWVTcGVlZDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFBhZGRpbmdT
dGFydDoKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRTdHJva2U6Ci0gICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm06Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlXZWJraXRUcmFuc2Zvcm1PcmlnaW46Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
cmFuc2Zvcm1PcmlnaW5YOgotICAgICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VHJhbnNmb3Jt
T3JpZ2luWToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRyYW5zaXRpb246CiAgICAg
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uRHVyYXRpb246CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2l0aW9uUHJvcGVydHk6CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAw
MGRlNDExLi44NWZjYWJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisr
KyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRl
ICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgogI2luY2x1ZGUgIkNT
U1N0eWxlU2hlZXQuaCIKLSNpbmNsdWRlICJDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogI2luY2x1ZGUg
IkNTU1VuaWNvZGVSYW5nZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgog
I2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgpAQCAtNjIsNiArNjEsNyBAQAogI2luY2x1ZGUgIlBh
aXIuaCIKICNpbmNsdWRlICJSZWN0LmgiCiAjaW5jbHVkZSAiU2hhZG93VmFsdWUuaCIKKyNpbmNs
dWRlICJXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogI2luY2x1ZGUgPGtqcy9kdG9hLmg+CiAK
ICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCkBAIC0zNzI5LDcgKzM3MjksNyBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VDYW52YXMoUmVmUHRyPENTU1ZhbHVlPiYgY2FudmFzKQogY2xhc3Mg
VHJhbnNmb3JtT3BlcmF0aW9uSW5mbyB7CiBwdWJsaWM6CiAgICAgVHJhbnNmb3JtT3BlcmF0aW9u
SW5mbyhjb25zdCBQYXJzZVN0cmluZyYgbmFtZSkKLSAgICA6IG1fdHlwZShDU1NUcmFuc2Zvcm1W
YWx1ZTo6VW5rbm93blRyYW5zZm9ybU9wZXJhdGlvbikKKyAgICA6IG1fdHlwZShXZWJLaXRDU1NU
cmFuc2Zvcm1WYWx1ZTo6VW5rbm93blRyYW5zZm9ybU9wZXJhdGlvbikKICAgICAsIG1fYXJnQ291
bnQoMSkKICAgICAsIG1fYWxsb3dTaW5nbGVBcmd1bWVudChmYWxzZSkKICAgICAsIG1fdW5pdChD
U1NQYXJzZXI6OkZVbmtub3duKQpAQCAtMzczNywzMiArMzczNywzNSBAQCBwdWJsaWM6CiAgICAg
ICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2NhbGUoIikgfHwgZXF1YWxJZ25vcmlu
Z0Nhc2UobmFtZSwgInNjYWxleCgiKSB8fCBlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2NhbGV5
KCIpKSB7CiAgICAgICAgICAgICBtX3VuaXQgPSBDU1NQYXJzZXI6OkZOdW1iZXI7CiAgICAgICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNjYWxlKCIpKQotICAgICAgICAgICAg
ICAgIG1fdHlwZSA9IENTU1RyYW5zZm9ybVZhbHVlOjpTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbjsK
KyAgICAgICAgICAgICAgICBtX3R5cGUgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb247CiAgICAgICAgICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2Fz
ZShuYW1lLCAic2NhbGV4KCIpKQotICAgICAgICAgICAgICAgIG1fdHlwZSA9IENTU1RyYW5zZm9y
bVZhbHVlOjpTY2FsZVhUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICAgICAgbV90eXBl
ID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWFRyYW5zZm9ybU9wZXJhdGlvbjsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX3R5cGUgPSBDU1NUcmFuc2Zvcm1WYWx1
ZTo6U2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9uOwotICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKG5hbWUsICJyb3RhdGUoIikpIHsKLSAgICAgICAgICAgIG1fdHlwZSA9IENTU1Ry
YW5zZm9ybVZhbHVlOjpSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICAgICAg
bV90eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWVRyYW5zZm9ybU9wZXJhdGlv
bjsKKyAgICAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAicm90YXRlKCIp
IHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJyb3RhdGV6KCIpKSB7CiAgICAgICAgICAgICBt
X3VuaXQgPSBDU1NQYXJzZXI6OkZBbmdsZTsKKyAgICAgICAgICAgIGlmIChlcXVhbElnbm9yaW5n
Q2FzZShuYW1lLCAicm90YXRlKCIpKQorICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbV90eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJv
dGF0ZVpUcmFuc2Zvcm1PcGVyYXRpb247CiAgICAgICAgIH0gZWxzZSBpZiAoZXF1YWxJZ25vcmlu
Z0Nhc2UobmFtZSwgInNrZXcoIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInNrZXd4KCIp
IHx8IGVxdWFsSWdub3JpbmdDYXNlKG5hbWUsICJza2V3eSgiKSkgewogICAgICAgICAgICAgbV91
bml0ID0gQ1NTUGFyc2VyOjpGQW5nbGU7CiAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nh
c2UobmFtZSwgInNrZXcoIikpCi0gICAgICAgICAgICAgICAgbV90eXBlID0gQ1NTVHJhbnNmb3Jt
VmFsdWU6OlNrZXdUcmFuc2Zvcm1PcGVyYXRpb247CisgICAgICAgICAgICAgICAgbV90eXBlID0g
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdUcmFuc2Zvcm1PcGVyYXRpb247CiAgICAgICAg
ICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAic2tld3goIikpCi0gICAgICAg
ICAgICAgICAgbV90eXBlID0gQ1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdYVHJhbnNmb3JtT3BlcmF0
aW9uOworICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpT
a2V3WFRyYW5zZm9ybU9wZXJhdGlvbjsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBtX3R5cGUgPSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1lUcmFuc2Zvcm1PcGVyYXRpb247Cisg
ICAgICAgICAgICAgICAgbV90eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdZVHJh
bnNmb3JtT3BlcmF0aW9uOwogICAgICAgICB9IGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNlKG5h
bWUsICJ0cmFuc2xhdGUoIikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInRyYW5zbGF0ZXgo
IikgfHwgZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInRyYW5zbGF0ZXkoIikpIHsKICAgICAgICAg
ICAgIG1fdW5pdCA9IENTU1BhcnNlcjo6Rkxlbmd0aCB8IENTU1BhcnNlcjo6RlBlcmNlbnQ7CiAg
ICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UobmFtZSwgInRyYW5zbGF0ZSgiKSkKLSAg
ICAgICAgICAgICAgICBtX3R5cGUgPSBDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uOworICAgICAgICAgICAgICAgIG1fdHlwZSA9IFdlYktpdENTU1RyYW5zZm9y
bVZhbHVlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb247CiAgICAgICAgICAgICBlbHNlIGlm
IChlcXVhbElnbm9yaW5nQ2FzZShuYW1lLCAidHJhbnNsYXRleCgiKSkKLSAgICAgICAgICAgICAg
ICBtX3R5cGUgPSBDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlv
bjsKKyAgICAgICAgICAgICAgICBtX3R5cGUgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJh
bnNsYXRlWFRyYW5zZm9ybU9wZXJhdGlvbjsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBtX3R5cGUgPSBDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWVRyYW5zZm9ybU9wZXJh
dGlvbjsKKyAgICAgICAgICAgICAgICBtX3R5cGUgPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6
VHJhbnNsYXRlWVRyYW5zZm9ybU9wZXJhdGlvbjsKICAgICAgICAgfSBlbHNlIGlmIChlcXVhbEln
bm9yaW5nQ2FzZShuYW1lLCAibWF0cml4KCIpKSB7Ci0gICAgICAgICAgICBtX3R5cGUgPSBDU1NU
cmFuc2Zvcm1WYWx1ZTo6TWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOworICAgICAgICAgICAgbV90
eXBlID0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjsK
ICAgICAgICAgICAgIG1fYXJnQ291bnQgPSAxMTsKICAgICAgICAgICAgIG1fdW5pdCA9IENTU1Bh
cnNlcjo6Rk51bWJlcjsKICAgICAgICAgfQpAQCAtMzc3MywxNSArMzc3NiwxNSBAQCBwdWJsaWM6
CiAgICAgICAgIH0KICAgICB9CiAgICAgCi0gICAgQ1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zZm9y
bU9wZXJhdGlvblR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2Zvcm1PcGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KICAgICB1bnNpZ25lZCBhcmdDb3VudCgpIGNvbnN0IHsgcmV0dXJu
IG1fYXJnQ291bnQ7IH0KICAgICBDU1NQYXJzZXI6OlVuaXRzIHVuaXQoKSBjb25zdCB7IHJldHVy
biBtX3VuaXQ7IH0KIAotICAgIGJvb2wgdW5rbm93bigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9
PSBDU1NUcmFuc2Zvcm1WYWx1ZTo6VW5rbm93blRyYW5zZm9ybU9wZXJhdGlvbjsgfQorICAgIGJv
b2wgdW5rbm93bigpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZTo6VW5rbm93blRyYW5zZm9ybU9wZXJhdGlvbjsgfQogICAgIGJvb2wgaGFzQ29ycmVjdEFy
Z0NvdW50KHVuc2lnbmVkIGFyZ0NvdW50KSB7IHJldHVybiBtX2FyZ0NvdW50ID09IGFyZ0NvdW50
IHx8IChtX2FsbG93U2luZ2xlQXJndW1lbnQgJiYgYXJnQ291bnQgPT0gMSk7IH0KIAogcHJpdmF0
ZToKLSAgICBDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNmb3JtT3BlcmF0aW9uVHlwZSBtX3R5cGU7
CisgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zZm9ybU9wZXJhdGlvblR5cGUgbV90
eXBlOwogICAgIHVuc2lnbmVkIG1fYXJnQ291bnQ7CiAgICAgYm9vbCBtX2FsbG93U2luZ2xlQXJn
dW1lbnQ7CiAgICAgQ1NTUGFyc2VyOjpVbml0cyBtX3VuaXQ7CkBAIC0zNzkzLDcgKzM3OTYsNyBA
QCBQYXNzUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZVRyYW5zZm9ybSgpCiAg
ICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gVGhlIHRyYW5zZm9ybSBpcyBhIGxpc3Qgb2YgZnVu
Y3Rpb25hbCBwcmltaXRpdmVzIHRoYXQgc3BlY2lmeSB0cmFuc2Zvcm0gb3BlcmF0aW9ucy4gIFdl
IGNvbGxlY3QgYSBsaXN0Ci0gICAgLy8gb2YgQ1NTVHJhbnNmb3JtVmFsdWVzLCB3aGVyZSBlYWNo
IHZhbHVlIHNwZWNpZmllcyBhIHNpbmdsZSBvcGVyYXRpb24uCisgICAgLy8gb2YgV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWVzLCB3aGVyZSBlYWNoIHZhbHVlIHNwZWNpZmllcyBhIHNpbmdsZSBvcGVy
YXRpb24uCiAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IG5ldyBDU1NWYWx1ZUxpc3Q7
CiAgICAgZm9yIChWYWx1ZSogdmFsdWUgPSB2YWx1ZUxpc3QtPmN1cnJlbnQoKTsgdmFsdWU7IHZh
bHVlID0gdmFsdWVMaXN0LT5uZXh0KCkpIHsKICAgICAgICAgaWYgKHZhbHVlLT51bml0ICE9IFZh
bHVlOjpGdW5jdGlvbiB8fCAhdmFsdWUtPmZ1bmN0aW9uKQpAQCAtMzgxMyw3ICszODE2LDcgQEAg
UGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+IENTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm0oKQogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAgICAgLy8gQ3JlYXRlIHRoZSBuZXcgQ1NTVHJhbnNm
b3JtVmFsdWUgZm9yIHRoaXMgb3BlcmF0aW9uIGFuZCBhZGQgaXQgdG8gb3VyIGxpc3QuCi0gICAg
ICAgIENTU1RyYW5zZm9ybVZhbHVlKiB0cmFuc2Zvcm1WYWx1ZSA9IG5ldyBDU1NUcmFuc2Zvcm1W
YWx1ZShpbmZvLnR5cGUoKSk7CisgICAgICAgIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKiB0cmFu
c2Zvcm1WYWx1ZSA9IG5ldyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZShpbmZvLnR5cGUoKSk7CiAg
ICAgICAgIGxpc3QtPmFwcGVuZCh0cmFuc2Zvcm1WYWx1ZSk7CiAKICAgICAgICAgLy8gU25hZyBv
dXIgdmFsdWVzLgpAQCAtMzgyNiw3ICszODI5LDcgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZUxpc3Q+
IENTU1BhcnNlcjo6cGFyc2VUcmFuc2Zvcm0oKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBBZGQgdGhlIHZhbHVlIHRvIHRoZSBjdXJyZW50
IHRyYW5zZm9ybSBvcGVyYXRpb24uCi0gICAgICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YWRkVmFs
dWUobmV3IENTU1ByaW1pdGl2ZVZhbHVlKGEtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXMpIGEtPnVuaXQpKTsKKyAgICAgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQo
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKGEtPmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXMpIGEtPnVuaXQpKTsKIAogICAgICAgICAgICAgYSA9IGFyZ3MtPm5leHQoKTsKICAgICAg
ICAgICAgIGlmICghYSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggNTc1ZjRmNy4uZGZm
YjQ3ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTY2LDYgKzY2LDcgQEAKICNpbmNs
dWRlICJTdHlsZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJVc2Vy
QWdlbnRTdHlsZVNoZWV0cy5oIgorI2luY2x1ZGUgIldlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgi
CiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlICJsb2FkZXIuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC00NDgxLDEyMiArNDQ4Miw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rv
cjo6YXBwbHlQcm9wZXJ0eShpbnQgaWQsIENTU1ZhbHVlICp2YWx1ZSkKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VHJhbnNmb3JtOiB7CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklU
SUFMKHRyYW5zZm9ybSwgVHJhbnNmb3JtKTsKICAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBv
cGVyYXRpb25zOwotICAgICAgICBpZiAoIXZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKLSAg
ICAgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+
KHZhbHVlKTsKLSAgICAgICAgICAgIHVuc2lnbmVkIHNpemUgPSBsaXN0LT5sZW5ndGgoKTsKLSAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAg
ICAgICAgICBDU1NUcmFuc2Zvcm1WYWx1ZSogdmFsID0gc3RhdGljX2Nhc3Q8Q1NTVHJhbnNmb3Jt
VmFsdWUqPihsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKLSAgICAgICAgICAgICAg
ICBDU1NWYWx1ZUxpc3QqIHZhbHVlcyA9IHZhbC0+dmFsdWVzKCk7Ci0gICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpcnN0VmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygw
KSk7Ci0gICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN3aXRjaCAodmFsLT50eXBl
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVHJhbnNmb3Jt
VmFsdWU6OlNjYWxlWFRyYW5zZm9ybU9wZXJhdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9uOiB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGUgc3ggPSAxLjA7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgc3kgPSAxLjA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT50eXBl
KCkgPT0gQ1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWVRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzeSA9IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3ggPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICh2YWwtPnR5cGUoKSA9PSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVU
cmFuc2Zvcm1PcGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHZhbHVlcy0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHNlY29uZFZhbHVlLT5nZXREb3VibGVW
YWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IHN4OwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24q
IHNjYWxlID0gbmV3IFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKHN4LCBzeSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZChzY2FsZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBjYXNlIENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246Ci0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVhUcmFu
c2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVHJhbnNmb3JtVmFs
dWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246IHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgb2s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMZW5ndGggdHggPSBMZW5ndGgo
MCwgRml4ZWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAs
IEZpeGVkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwtPnR5cGUoKSA9PSBDU1NU
cmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWVRyYW5zZm9ybU9wZXJhdGlvbikKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBtX3N0eWxl
LCAmb2spOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7IAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR4ID0gY29udmVydFRvTGVuZ3RoKGZpcnN0VmFsdWUsIG1fc3R5bGUsICZv
ayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+dHlwZSgpID09IENTU1Ry
YW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24pIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcy0+bGVuZ3RoKCkgPiAxKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFs
dWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjaygxKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eSA9
IGNvbnZlcnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwgbV9zdHlsZSwgJm9rKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg
ICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2xhdGUg
PSBuZXcgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKHR4LCB0eSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZCh0cmFuc2xhdGUpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgY2FzZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlVHJhbnNmb3JtT3BlcmF0aW9uOiB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgYW5nbGUgPSBmaXJzdFZhbHVlLT5nZXREb3Vi
bGVWYWx1ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0VmFsdWUtPnByaW1p
dGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JBRCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhbmdsZSA9IHJhZDJkZWcoYW5nbGUpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoZmlyc3RWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfR1JBRCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSA9IGdy
YWQyZGVnKGFuZ2xlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJvdGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbiogcm90YXRlID0gbmV3IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbihhbmdsZSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVuZChyb3RhdGUpOwotICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1RyYW5zZm9ybU9wZXJhdGlv
bjoKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBDU1NUcmFuc2Zvcm1WYWx1ZTo6U2tld1hUcmFu
c2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgQ1NTVHJhbnNmb3JtVmFs
dWU6OlNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBk
b3VibGUgYW5nbGVYID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBhbmdsZVkg
PSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFuZ2xlID0gZmlyc3RWYWx1ZS0+
Z2V0RG91YmxlVmFsdWUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdFZhbHVl
LT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SQUQpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGUgPSByYWQyZGVnKGFuZ2xlKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGZpcnN0VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX0dSQUQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5n
bGUgPSBncmFkMmRlZyhhbmdsZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT50
eXBlKCkgPT0gQ1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlWSA9IGFuZ2xlOwotICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVYID0gYW5n
bGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+dHlwZSgpID09IENTU1Ry
YW5zZm9ybVZhbHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMtPmxlbmd0aCgpID4gMSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRz
Q2hlY2soMSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVZID0g
c2Vjb25kVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoc2Vjb25kVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1JBRCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhbmdsZVkgPSByYWQyZGVnKGFuZ2xlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKHNlY29uZFZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19HUkFEKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFuZ2xlWSA9IGdyYWQyZGVnKGFuZ2xlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZVkg
PSBhbmdsZVg7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAg
ICAgICBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKiBza2V3ID0gbmV3IFNrZXdUcmFuc2Zvcm1PcGVy
YXRpb24oYW5nbGVYLCBhbmdsZVkpOwotICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9u
cy5hcHBlbmQoc2tldyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjYXNlIENTU1RyYW5zZm9ybVZhbHVl
OjpNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIENT
U1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsdWVzLT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMikpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZvdXJ0aFZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZXMtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soMykpOwotICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIGZpZnRo
VmFsdWUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlcy0+aXRlbVdpdGhv
dXRCb3VuZHNDaGVjayg0KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogc2l4dGhWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWVz
LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIE1h
dHJpeFRyYW5zZm9ybU9wZXJhdGlvbiogbWF0cml4ID0gbmV3IE1hdHJpeFRyYW5zZm9ybU9wZXJh
dGlvbihmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlY29uZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRoaXJkVmFsdWUtPmdldERvdWJsZVZhbHVlKCksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZm91cnRoVmFsdWUtPmdldERvdWJsZVZhbHVlKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlmdGhWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXh0aFZhbHVlLT5nZXREb3VibGVWYWx1
ZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKG1hdHJpeCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfSAg
IAotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQorICAgICAgICBjcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbHVl
LCBtX3N0eWxlLCBvcGVyYXRpb25zKTsKICAgICAgICAgbV9zdHlsZS0+c2V0VHJhbnNmb3JtKG9w
ZXJhdGlvbnMpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNTMyMiw0ICs1MjA4LDE5MSBA
QCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnZpc2l0ZWRTdGF0ZUNoYW5nZWQodW5zaWduZWQgdmlz
aXRlZEhhc2gpCiAgICAgfQogfQogCitib29sIENTU1N0eWxlU2VsZWN0b3I6OmNyZWF0ZVRyYW5z
Zm9ybU9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUsIFJlbmRlclN0eWxlKiBpblN0eWxlLCBU
cmFuc2Zvcm1PcGVyYXRpb25zJiBvdXRPcGVyYXRpb25zKQoreworICAgIFRyYW5zZm9ybU9wZXJh
dGlvbnMgb3BlcmF0aW9uczsKKyAgICBpZiAoaW5WYWx1ZSAmJiAhaW5WYWx1ZS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CisgICAgICAgIENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENT
U1ZhbHVlTGlzdCo+KGluVmFsdWUpOworICAgICAgICB1bnNpZ25lZCBzaXplID0gbGlzdC0+bGVu
Z3RoKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAg
ICAgICAgICAgIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKiB2YWwgPSBzdGF0aWNfY2FzdDxXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZSo+KGxpc3QtPml0ZW0oaSkpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogZmlyc3RWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDApKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
c3dpdGNoICh2YWwtPm9wZXJhdGlvblR5cGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAg
ICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlWFRyYW5zZm9ybU9wZXJh
dGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTY2Fs
ZVlUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZTo6U2NhbGVaVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgICAgIGNh
c2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNjYWxlM0RUcmFuc2Zvcm1PcGVyYXRpb246IHsK
KyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHN4ID0gMS4wOworICAgICAgICAgICAgICAgICAg
ICBkb3VibGUgc3kgPSAxLjA7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBzeiA9IDEuMDsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlOjpTY2FsZVpUcmFuc2Zvcm1PcGVyYXRpb24pCisgICAgICAgICAgICAg
ICAgICAgICAgICBzeiA9IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENTU1RyYW5z
Zm9ybVZhbHVlOjpTY2FsZVlUcmFuc2Zvcm1PcGVyYXRpb24pCisgICAgICAgICAgICAgICAgICAg
ICAgICBzeSA9IGZpcnN0VmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgIHN4ID0gZmlyc3RWYWx1ZS0+Z2V0
RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwtPm9wZXJhdGlv
blR5cGUoKSAhPSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6U2NhbGVYVHJhbnNmb3JtT3BlcmF0
aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+bGVuZ3RoKCkgPiAy
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0
aGlyZFZhbHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMikp
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeiA9IHRoaXJkVmFsdWUtPmdldERv
dWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh2YWwtPmxlbmd0aCgpID4gMSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogc2Vjb25kVmFsdWUgPSBzdGF0aWNf
Y2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSgxKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN5ID0gc2Vjb25kVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzeSA9IHN4OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBTY2Fs
ZVRyYW5zZm9ybU9wZXJhdGlvbiogc2NhbGUgPSBuZXcgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24o
c3gsIHN5LCBzeik7CisgICAgICAgICAgICAgICAgICAgIG9wZXJhdGlvbnMuYXBwZW5kKHNjYWxl
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVl
OjpUcmFuc2xhdGVYVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgICAgIGNhc2UgV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246CisgICAg
ICAgICAgICAgICAgY2FzZSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6VHJhbnNsYXRlWlRyYW5z
Zm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpUcmFuc2xhdGUzRFRyYW5zZm9ybU9wZXJhdGlvbjogeworICAgICAgICAgICAgICAgICAg
ICBib29sIG9rID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIHR4ID0gTGVuZ3Ro
KDAsIEZpeGVkKTsKKyAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIHR5ID0gTGVuZ3RoKDAsIEZp
eGVkKTsKKyAgICAgICAgICAgICAgICAgICAgTGVuZ3RoIHR6ID0gTGVuZ3RoKDAsIEZpeGVkKTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpID09IFdlYktpdENT
U1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVaVHJhbnNmb3JtT3BlcmF0aW9uKQorICAgICAgICAg
ICAgICAgICAgICAgICAgdHogPSBjb252ZXJ0VG9MZW5ndGgoZmlyc3RWYWx1ZSwgaW5TdHlsZSwg
Jm9rKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsLT5vcGVyYXRpb25UeXBlKCkg
PT0gV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb24p
CisgICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVl
LCBpblN0eWxlLCAmb2spOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsgCisgICAgICAgICAg
ICAgICAgICAgICAgICB0eCA9IGNvbnZlcnRUb0xlbmd0aChmaXJzdFZhbHVlLCBpblN0eWxlLCAm
b2spOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpICE9
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpUcmFuc2xhdGVYVHJhbnNmb3JtT3BlcmF0aW9uKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+bGVuZ3RoKCkgPiAyKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiB0aGlyZFZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMikpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eiA9IGNvbnZlcnRUb0xlbmd0aCh0aGlyZFZh
bHVlLCBpblN0eWxlLCAmb2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsLT5sZW5ndGgoKSA+IDEpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHNlY29uZFZhbHVlID0g
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0eSA9IGNvbnZlcnRUb0xlbmd0aChzZWNvbmRWYWx1ZSwg
aW5TdHlsZSwgJm9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIGlmICghb2spCisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zbGF0ZSA9IG5ldyBUcmFuc2xhdGVU
cmFuc2Zvcm1PcGVyYXRpb24odHgsIHR5LCB0eik7CisgICAgICAgICAgICAgICAgICAgIG9wZXJh
dGlvbnMuYXBwZW5kKHRyYW5zbGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICAgICAgY2FzZSBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlWFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAg
ICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpSb3RhdGVZVHJhbnNmb3JtT3Bl
cmF0aW9uOgorICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJv
dGF0ZVpUcmFuc2Zvcm1PcGVyYXRpb246IHsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHgg
PSAwOworICAgICAgICAgICAgICAgICAgICBkb3VibGUgeSA9IDA7CisgICAgICAgICAgICAgICAg
ICAgIGRvdWJsZSB6ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFuZ2xlID0gZmly
c3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0
VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JBRCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0gcmFkMmRlZyhhbmdsZSk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGZpcnN0VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX0dSQUQpCisgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSA9IGdy
YWQyZGVnKGFuZ2xlKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IGlmICh2YWwtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90
YXRlWFRyYW5zZm9ybU9wZXJhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHggPSAxOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWwtPm9wZXJhdGlvblR5cGUoKSA9PSBXZWJL
aXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Um90YXRlWVRyYW5zZm9ybU9wZXJhdGlvbikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHkgPSAxOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICB6ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgUm90YXRlVHJhbnNm
b3JtT3BlcmF0aW9uKiByb3RhdGUgPSBuZXcgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKHgsIHks
IHosIGFuZ2xlKTsKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5hcHBlbmQocm90YXRl
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlJvdGF0ZTNEVHJhbnNmb3Jt
T3BlcmF0aW9uOiB7CisgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNv
bmRWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDEpKTsK
KyAgICAgICAgICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHRoaXJkVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSgyKSk7CisgICAgICAgICAgICAg
ICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBmb3VydGhWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDMpKTsKKyAgICAgICAgICAgICAgICAgICAgZG91Ymxl
IHggPSBmaXJzdFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBk
b3VibGUgeSA9IHNlY29uZFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAg
ICAgICBkb3VibGUgeiA9IHRoaXJkVmFsdWUtPmdldERvdWJsZVZhbHVlKCk7CisgICAgICAgICAg
ICAgICAgICAgIGRvdWJsZSBhbmdsZSA9IGZvdXJ0aFZhbHVlLT5nZXREb3VibGVWYWx1ZSgpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoZm91cnRoVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JBRCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xl
ID0gcmFkMmRlZyhhbmdsZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZvdXJ0aFZh
bHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19HUkFEKQorICAg
ICAgICAgICAgICAgICAgICAgICAgYW5nbGUgPSBncmFkMmRlZyhhbmdsZSk7CisgICAgICAgICAg
ICAgICAgICAgIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiogcm90YXRlID0gbmV3IFJvdGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbih4LCB5LCB6LCBhbmdsZSk7CisgICAgICAgICAgICAgICAgICAgIG9w
ZXJhdGlvbnMuYXBwZW5kKHJvdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdYVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAg
ICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6OlNrZXdZVHJhbnNmb3JtT3BlcmF0aW9u
OiB7CisgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBhbmdsZVggPSAwOworICAgICAgICAgICAg
ICAgICAgICBkb3VibGUgYW5nbGVZID0gMDsKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIGFu
Z2xlID0gZmlyc3RWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGZpcnN0VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1JBRCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0gcmFkMmRlZyhhbmdsZSk7Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZpcnN0VmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0dSQUQpCisgICAgICAgICAgICAgICAgICAgICAgICBh
bmdsZSA9IGdyYWQyZGVnKGFuZ2xlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+b3Bl
cmF0aW9uVHlwZSgpID09IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3WVRyYW5zZm9ybU9w
ZXJhdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlWSA9IGFuZ2xlOworICAgICAg
ICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlWCA9IGFu
Z2xlOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+b3BlcmF0aW9uVHlwZSgpID09
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC0+bGVuZ3RoKCkgPiAxKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBzZWNvbmRWYWx1ZSA9
IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDEpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVZID0gc2Vjb25kVmFsdWUtPmdldERvdWJsZVZh
bHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWNvbmRWYWx1ZS0+
cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkFEKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5nbGVZID0gcmFkMmRlZyhhbmdsZVkpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChzZWNvbmRWYWx1ZS0+cHJpbWl0
aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFuZ2xlWSA9IGdyYWQyZGVnKGFuZ2xlWSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKiBza2V3ID0gbmV3IFNrZXdUcmFuc2Zvcm1PcGVyYXRp
b24oYW5nbGVYLCBhbmdsZVkpOworICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLmFwcGVu
ZChza2V3KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGNhc2UgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWU6Ok1hdHJpeFRyYW5z
Zm9ybU9wZXJhdGlvbjogeworICAgICAgICAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0
cml4OworICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0QShzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSgwKSktPmdldEZsb2F0VmFsdWUoKSk7CisgICAgICAgICAg
ICAgICAgICAgIG1hdHJpeC5zZXRCKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFs
LT5pdGVtKDEpKS0+Z2V0RmxvYXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgbWF0cml4
LnNldEMoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMikpLT5nZXRG
bG9hdFZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICBtYXRyaXguc2V0RChzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSgzKSktPmdldEZsb2F0VmFsdWUoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1hdHJpeC5zZXRFKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZh
bHVlKj4odmFsLT5pdGVtKDQpKS0+Z2V0RmxvYXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAg
ICAgbWF0cml4LnNldEYoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0o
NSkpLT5nZXRGbG9hdFZhbHVlKCkpOworICAgICAgICAgICAgICAgICAgICBvcGVyYXRpb25zLmFw
cGVuZChuZXcgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKG1hdHJpeCkpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6TWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246IHsKKyAg
ICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtM0QgbWF0cml4KHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsLT5pdGVtKDApKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUq
Pih2YWwtPml0ZW0oMSkpLT5nZXRGbG9hdFZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRl
bSgyKSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDMpKS0+Z2V0
RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oNCkpLT5nZXRGbG9hdFZhbHVl
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSg1KSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsLT5pdGVtKDYpKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWwtPml0ZW0oNykpLT5nZXRGbG9hdFZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbC0+aXRlbSg4
KSktPmdldEZsb2F0VmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsLT5pdGVtKDkpKS0+Z2V0Rmxv
YXRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMTApKS0+Z2V0RmxvYXRWYWx1ZSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NT
UHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMTEpKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWwtPml0ZW0oMTIpKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2
YWwtPml0ZW0oMTMpKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0o
MTQpKS0+Z2V0RmxvYXRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWwtPml0ZW0oMTUpKS0+Z2V0
RmxvYXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9ucy5hcHBlbmQobmV3
IE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uKG1hdHJpeCkpOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9ICAgCisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIG91dE9wZXJhdGlvbnMgPSBvcGVyYXRpb25z
OworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmggYi9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmgKaW5kZXggMDIxZDA2Zi4uNmI0Yzg2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
aApAQCAtMTI5LDYgKzEyOSw4IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBhbGxWaXNpdGVkU3Rh
dGVDaGFuZ2VkKCk7CiAgICAgICAgIHZvaWQgdmlzaXRlZFN0YXRlQ2hhbmdlZCh1bnNpZ25lZCB2
aXNpdGVkSGFzaCk7CiAKKyAgICAgICAgc3RhdGljIGJvb2wgY3JlYXRlVHJhbnNmb3JtT3BlcmF0
aW9ucyhDU1NWYWx1ZSogaW5WYWx1ZSwgUmVuZGVyU3R5bGUqIGluU3R5bGUsIFRyYW5zZm9ybU9w
ZXJhdGlvbnMmIG91dE9wZXJhdGlvbnMpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZW51bSBT
ZWxlY3Rvck1hdGNoIHsgU2VsZWN0b3JNYXRjaGVzLCBTZWxlY3RvckZhaWxzTG9jYWxseSwgU2Vs
ZWN0b3JGYWlsc0NvbXBsZXRlbHkgfTsKICAgICAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVj
dG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCosIGJvb2wgaXNBbmNlc3RvciwgYm9vbCBpc1N1YlNl
bGVjdG9yKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1RyYW5zZm9ybVZhbHVlLmNwcCBi
L1dlYkNvcmUvY3NzL0NTU1RyYW5zZm9ybVZhbHVlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzRmNGRhZS4uMDAwMDAwMAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NUcmFuc2Zvcm1W
YWx1ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
Ci0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNTU1RyYW5zZm9ybVZhbHVlLmgiCi0jaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1DU1NUcmFuc2Zvcm1W
YWx1ZTo6Q1NTVHJhbnNmb3JtVmFsdWUoVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSBvcCkKLTogbV90
eXBlKG9wKQote30KLQotQ1NTVHJhbnNmb3JtVmFsdWU6On5DU1NUcmFuc2Zvcm1WYWx1ZSgpCi17
fQotCi12b2lkIENTU1RyYW5zZm9ybVZhbHVlOjphZGRWYWx1ZShDU1NWYWx1ZSogdmFsKQotewot
ICAgIGlmICghbV92YWx1ZXMpCi0gICAgICAgIG1fdmFsdWVzID0gbmV3IENTU1ZhbHVlTGlzdDsK
LSAgICBtX3ZhbHVlcy0+YXBwZW5kKHZhbCk7Ci19Ci0KLVN0cmluZyBDU1NUcmFuc2Zvcm1WYWx1
ZTo6Y3NzVGV4dCgpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIHJlc3VsdDsKLSAgICBzd2l0Y2gobV90
eXBlKSB7Ci0gICAgICAgIGNhc2UgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAg
ICByZXN1bHQgKz0gInNjYWxlKCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBT
Y2FsZVhUcmFuc2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAgICByZXN1bHQgKz0gInNjYWxlWCgi
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgU2NhbGVZVHJhbnNmb3JtT3BlcmF0
aW9uOgotICAgICAgICAgICAgcmVzdWx0ICs9ICJzY2FsZVkoIjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjoKLSAgICAgICAgICAgIHJl
c3VsdCArPSAicm90YXRlKCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTa2V3
VHJhbnNmb3JtT3BlcmF0aW9uOgotICAgICAgICAgICAgcmVzdWx0ICs9ICJza2V3KCI7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBTa2V3WFRyYW5zZm9ybU9wZXJhdGlvbjoKLSAg
ICAgICAgICAgIHJlc3VsdCArPSAic2tld1goIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIFNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uOgotICAgICAgICAgICAgcmVzdWx0ICs9ICJz
a2V3WSgiOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVHJhbnNsYXRlVHJhbnNm
b3JtT3BlcmF0aW9uOgotICAgICAgICAgICAgcmVzdWx0ICs9ICJ0cmFuc2xhdGUoIjsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb246
Ci0gICAgICAgICAgICByZXN1bHQgKz0gInRyYW5zbGF0ZVgoIjsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIFRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246Ci0gICAgICAgICAg
ICByZXN1bHQgKz0gInRyYW5zbGF0ZVkoIjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbjoKLSAgICAgICAgICAgIHJlc3VsdCArPSAibWF0
cml4KCI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICAKLSAgICBpZiAobV92YWx1ZXMpCi0gICAgICAgIHJlc3VsdCAr
PSBtX3ZhbHVlcy0+Y3NzVGV4dCgpOwotICAgIAotICAgIHJlc3VsdCArPSAiKSI7Ci0gICAgcmV0
dXJuIHJlc3VsdDsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTVHJhbnNmb3Jt
VmFsdWUuaCBiL1dlYkNvcmUvY3NzL0NTU1RyYW5zZm9ybVZhbHVlLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDZhMzVkMzkuLjAwMDAwMDAKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTVHJh
bnNmb3JtVmFsdWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0j
aW5jbHVkZSAiQ1NTVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKLSNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQ1NTVHJhbnNm
b3JtVmFsdWUgOiBwdWJsaWMgQ1NTVmFsdWUKLXsKLXB1YmxpYzoKLSAgICBlbnVtIFRyYW5zZm9y
bU9wZXJhdGlvblR5cGUgewotICAgICAgICBVbmtub3duVHJhbnNmb3JtT3BlcmF0aW9uLAotICAg
ICAgICBTY2FsZVRyYW5zZm9ybU9wZXJhdGlvbiwKLSAgICAgICAgU2NhbGVYVHJhbnNmb3JtT3Bl
cmF0aW9uLAotICAgICAgICBTY2FsZVlUcmFuc2Zvcm1PcGVyYXRpb24sCi0gICAgICAgIFJvdGF0
ZVRyYW5zZm9ybU9wZXJhdGlvbiwKLSAgICAgICAgU2tld1RyYW5zZm9ybU9wZXJhdGlvbiwKLSAg
ICAgICAgU2tld1hUcmFuc2Zvcm1PcGVyYXRpb24sCi0gICAgICAgIFNrZXdZVHJhbnNmb3JtT3Bl
cmF0aW9uLAotICAgICAgICBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24sCi0gICAgICAgIFRy
YW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb24sCi0gICAgICAgIFRyYW5zbGF0ZVlUcmFuc2Zvcm1P
cGVyYXRpb24sCi0gICAgICAgIE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbgotICAgIH07Ci0KLSAg
ICBDU1NUcmFuc2Zvcm1WYWx1ZShUcmFuc2Zvcm1PcGVyYXRpb25UeXBlKTsKLSAgICB2aXJ0dWFs
IH5DU1NUcmFuc2Zvcm1WYWx1ZSgpOwotCi0gICAgdm9pZCBhZGRWYWx1ZShDU1NWYWx1ZSopOwot
ICAgIAotICAgIHZpcnR1YWwgU3RyaW5nIGNzc1RleHQoKSBjb25zdDsKLSAKLSAgICBUcmFuc2Zv
cm1PcGVyYXRpb25UeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KLSAgICBDU1NW
YWx1ZUxpc3QqIHZhbHVlcygpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWVzLmdldCgpOyB9Ci0gICAg
Ci1wcm90ZWN0ZWQ6Ci0gICAgVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSBtX3R5cGU7Ci0gICAgUmVm
UHRyPENTU1ZhbHVlTGlzdD4gbV92YWx1ZXM7Ci19OwotCi19CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2Nzcy9XZWJLaXRDU1NNYXRyaXguY3BwIGIvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDQ3YjZmCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmNwcApAQCAtMCwwICsxLDE1NCBA
QAorLyoqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUsIEluYy4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVTZWxlY3Rv
ci5oIgorI2luY2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAi
Q1NTUHJvcGVydHlOYW1lcy5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAi
V2ViS2l0Q1NTTWF0cml4LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV2ViS2l0Q1NTTWF0
cml4OjpXZWJLaXRDU1NNYXRyaXgoKSA6IFN0eWxlQmFzZSgwKQoreworfQorCitXZWJLaXRDU1NN
YXRyaXg6OldlYktpdENTU01hdHJpeChjb25zdCBXZWJLaXRDU1NNYXRyaXgmIG0pIDogU3R5bGVC
YXNlKDApCit7CisgICAgbV9tYXRyaXggPSBtLm1fbWF0cml4OworfQorCitXZWJLaXRDU1NNYXRy
aXg6OldlYktpdENTU01hdHJpeChjb25zdCBUcmFuc2Zvcm0zRCYgbSkgOiBTdHlsZUJhc2UoMCkK
K3sKKyAgICBtX21hdHJpeCA9IG07Cit9CisKK1dlYktpdENTU01hdHJpeDo6V2ViS2l0Q1NTTWF0
cml4KGNvbnN0IFN0cmluZyYgcykgOiBTdHlsZUJhc2UoMCkKK3sKKyAgICBzZXRNYXRyaXhWYWx1
ZShzKTsKK30KKworV2ViS2l0Q1NTTWF0cml4Ojp+V2ViS2l0Q1NTTWF0cml4KCkKK3sKK30KKwor
dm9pZCBXZWJLaXRDU1NNYXRyaXg6OnNldE1hdHJpeFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQoreworICAgIENTU1BhcnNlciBwKHVzZVN0cmljdFBhcnNpbmcoKSk7CisgICAgUmVmUHRyPENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZURlY2xhcmF0aW9uID0gbmV3IENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOworICAgIGlmIChwLnBhcnNlVmFsdWUoc3R5bGVEZWNsYXJhdGlv
bi5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0sIHN0cmluZywgdHJ1ZSkpIHsKKyAg
ICAgICAgLy8gY29udmVydCB0byBUcmFuc2Zvcm1PcGVyYXRpb25zLiBUaGlzIGNhbiBmYWlsIGlm
IGEgcHJvcGVydHkgCisgICAgICAgIC8vIHJlcXVpcmVzIHN0eWxlIChpLmUuLCBwYXJhbSB1c2Vz
ICdlbXMnIG9yICdleHMnKQorICAgICAgICBQYXNzUmVmUHRyPENTU1ZhbHVlPiB2YWwgPSAgc3R5
bGVEZWNsYXJhdGlvbi0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFRyYW5z
Zm9ybSk7CisgICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKKyAgICAgICAg
aWYgKCFDU1NTdHlsZVNlbGVjdG9yOjpjcmVhdGVUcmFuc2Zvcm1PcGVyYXRpb25zKHZhbC5nZXQo
KSwgMCwgb3BlcmF0aW9ucykpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgICAg
ICAvLyBjb252ZXJ0IHRyYW5zZm9ybSBvcGVyYXRpb25zIHRvIGEgVHJhbnNmb3JtM0QuIFRoaXMg
Y2FuIGZhaWwKKyAgICAgICAgLy8gaWYgYSBwYXJhbSBoYXMgYSBwZXJjZW50YWdlICgnJScpCisg
ICAgICAgIFRyYW5zZm9ybTNEIHQ7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBv
cGVyYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAob3BlcmF0aW9uc1tpXS5n
ZXQoKS0+YXBwbHkodCwgSW50U2l6ZSgwLCAwKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBzZXQgdGhlIG1hdHJpeAorICAgICAgICBt
X21hdHJpeCA9IHQ7CisgICAgfQorfQorCisvLyB0aGlzIGlzIGEgbXVsdFJpZ2h0ICh0aGlzID0g
dGhpcyAqIHNlY29uZE1hdHJpeCkKK1dlYktpdENTU01hdHJpeCogV2ViS2l0Q1NTTWF0cml4Ojpt
dWx0aXBseShXZWJLaXRDU1NNYXRyaXgqIHNlY29uZE1hdHJpeCkKK3sKKyAgICBUcmFuc2Zvcm0z
RCB0bXAoc2Vjb25kTWF0cml4LT5tX21hdHJpeCk7CisgICAgdG1wLm11bHRMZWZ0KG1fbWF0cml4
KTsKKyAgICByZXR1cm4gbmV3IFdlYktpdENTU01hdHJpeCh0bXApOworfQorCitXZWJLaXRDU1NN
YXRyaXgqIFdlYktpdENTU01hdHJpeDo6aW52ZXJzZSgpCit7CisgICAgcmV0dXJuIG5ldyBXZWJL
aXRDU1NNYXRyaXgobV9tYXRyaXguaW52ZXJzZSgpKTsKK30KKworV2ViS2l0Q1NTTWF0cml4KiBX
ZWJLaXRDU1NNYXRyaXg6OnRyYW5zbGF0ZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQorewor
ICAgIGlmIChpc25hbih4KSkgeCA9IDA7IAorICAgIGlmIChpc25hbih5KSkgeSA9IDA7IAorICAg
IGlmIChpc25hbih6KSkgeiA9IDA7IAorICAgIHJldHVybiBuZXcgV2ViS2l0Q1NTTWF0cml4KFRy
YW5zZm9ybTNEKG1fbWF0cml4KS50cmFuc2xhdGUzZCh4LCB5LCB6KSk7Cit9CisKK1dlYktpdENT
U01hdHJpeCogV2ViS2l0Q1NTTWF0cml4OjpzY2FsZShmbG9hdCBzY2FsZVgsIGZsb2F0IHNjYWxl
WSwgZmxvYXQgc2NhbGVaKQoreworICAgIGlmIChpc25hbihzY2FsZVgpKSBzY2FsZVggPSAxOyAK
KyAgICBpZiAoaXNuYW4oc2NhbGVZKSkgc2NhbGVZID0gc2NhbGVYOyAKKyAgICBpZiAoaXNuYW4o
c2NhbGVaKSkgc2NhbGVaID0gMTsgCisgICAgcmV0dXJuIG5ldyBXZWJLaXRDU1NNYXRyaXgoVHJh
bnNmb3JtM0QobV9tYXRyaXgpLnNjYWxlM2Qoc2NhbGVYLCBzY2FsZVksIHNjYWxlWikpOworfQor
CitXZWJLaXRDU1NNYXRyaXgqIFdlYktpdENTU01hdHJpeDo6cm90YXRlKGZsb2F0IHJvdFgsIGZs
b2F0IHJvdFksIGZsb2F0IHJvdFopCit7CisgICAgLy8gaWYgb25seSB0aGUgZmlyc3QgdmFsdWUg
aXMgZ2l2ZW4sIGNvbnNpZGVyIGl0IGFzIHJvdFoKKyAgICBpZiAoaXNuYW4ocm90WSkgJiYgaXNu
YW4ocm90WikpIHsKKyAgICAgICAgcm90WCA9IDA7CisgICAgICAgIHJvdFkgPSAwOworICAgICAg
ICByb3RaID0gMDsKKyAgICB9CisgICAgZWxzZSBpZiAoaXNuYW4ocm90WCkpIHJvdFggPSAwOyAK
KyAgICBpZiAoaXNuYW4ocm90WSkpIHJvdFkgPSAwOyAKKyAgICBpZiAoaXNuYW4ocm90WikpIHJv
dFogPSAwOyAKKyAgICByZXR1cm4gbmV3IFdlYktpdENTU01hdHJpeChUcmFuc2Zvcm0zRChtX21h
dHJpeCkucm90YXRlM2Qocm90WCwgcm90WSwgcm90WikpOworfQorCitXZWJLaXRDU1NNYXRyaXgq
IFdlYktpdENTU01hdHJpeDo6cm90YXRlQXhpc0FuZ2xlKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0
IHosIGZsb2F0IGFuZ2xlKQoreworICAgIGlmIChpc25hbih4KSkgeCA9IDA7IAorICAgIGlmIChp
c25hbih5KSkgeSA9IDA7IAorICAgIGlmIChpc25hbih6KSkgeiA9IDA7CisgICAgaWYgKGlzbmFu
KGFuZ2xlKSkgYW5nbGUgPSAwOworICAgIGlmICh4ID09IDAgJiYgeSA9PSAwICYmIHogPT0gMCkK
KyAgICAgICAgeiA9IDE7CisgICAgcmV0dXJuIG5ldyBXZWJLaXRDU1NNYXRyaXgoVHJhbnNmb3Jt
M0QobV9tYXRyaXgpLnJvdGF0ZTNkKHgsIHksIHosIGFuZ2xlKSk7Cit9CisKK1N0cmluZyBXZWJL
aXRDU1NNYXRyaXg6OnRvU3RyaW5nKCkKK3sKKyAgICAvLyBUZW1wb3JhcmlseSByZXR1cm4gYW4g
YWZmaW5lIHZlcnNpb24gd2hpbGUgcGFyc2luZyBmb3IgM0QgaXMKKyAgICAvLyBkaXNhYmxlZC4g
VGhpcyBpcyBvYnZpb3VzbHkgbG9zc3kuIFdoaWxlIHRoZSBjb250ZW50IGNhbm5vdAorICAgIC8v
IHNwZWNpZnkgM0QgdmlhIENTUywgdGhlIDNkIGZ1bmN0aW9ucyBhcmUgc3RpbGwgYXZhaWxhYmxl
IG9uCisgICAgLy8gdGhpcyBpbnRlcmZhY2UuCisgICAgCisgICAgQWZmaW5lVHJhbnNmb3JtIGFm
ZmluZSA9IG1fbWF0cml4LmFmZmluZVRyYW5zZm9ybSgpOworICAgIHJldHVybiBTdHJpbmc6OmZv
cm1hdCgibWF0cml4KCVmLCAlZiwgJWYsICVmLCAlZiwgJWYpIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWZmaW5lLmEoKSwgYWZmaW5lLmIoKSwgYWZmaW5lLmMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWZmaW5lLmQoKSwgYWZmaW5lLmUoKSwgYWZmaW5lLmYoKSk7CisKKyAg
ICAvKgorICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgibWF0cml4M2QoJWYsICVmLCAlZiwgJWYs
ICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYsICVmLCAlZiwgJWYpIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tMTEoKSwgbV9tYXRyaXgubTEyKCksIG1f
bWF0cml4Lm0xMygpLCBtX21hdHJpeC5tMTQoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9tYXRyaXgubTIxKCksIG1fbWF0cml4Lm0yMigpLCBtX21hdHJpeC5tMjMoKSwgbV9tYXRy
aXgubTI0KCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbWF0cml4Lm0zMSgpLCBt
X21hdHJpeC5tMzIoKSwgbV9tYXRyaXgubTMzKCksIG1fbWF0cml4Lm0zNCgpLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX21hdHJpeC5tNDEoKSwgbV9tYXRyaXgubTQyKCksIG1fbWF0
cml4Lm00MygpLCBtX21hdHJpeC5tNDQoKSk7CisgICAgICovCit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5oIGIvV2Vi
Q29yZS9jc3MvV2ViS2l0Q1NTTWF0cml4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uY2NmNzJmNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvY3NzL1dlYktpdENTU01h
dHJpeC5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUs
IEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisg
Ki8KKworI2lmbmRlZiBXZWJLaXRDU1NNYXRyaXhfaAorI2RlZmluZSBXZWJLaXRDU1NNYXRyaXhf
aAorCisjaW5jbHVkZSAiU3R5bGVCYXNlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
KyNpbmNsdWRlICJUcmFuc2Zvcm0zRC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYg
aW50IEV4Y2VwdGlvbkNvZGU7CisKK2NsYXNzIFdlYktpdENTU01hdHJpeCA6IHB1YmxpYyBTdHls
ZUJhc2UgeworcHVibGljOgorICAgIFdlYktpdENTU01hdHJpeCgpOworICAgIFdlYktpdENTU01h
dHJpeChjb25zdCBXZWJLaXRDU1NNYXRyaXgmIG0pOworICAgIFdlYktpdENTU01hdHJpeChjb25z
dCBUcmFuc2Zvcm0zRCYgbSk7CisgICAgV2ViS2l0Q1NTTWF0cml4KGNvbnN0IFN0cmluZyYgcyk7
CisgICAgdmlydHVhbCB+V2ViS2l0Q1NTTWF0cml4KCk7CisKKyAgICBmbG9hdCBtMTEoKSBjb25z
dCB7IHJldHVybiBtX21hdHJpeC5tMTEoKTsgfQorICAgIGZsb2F0IG0xMigpIGNvbnN0IHsgcmV0
dXJuIG1fbWF0cml4Lm0xMigpOyB9CisgICAgZmxvYXQgbTEzKCkgY29uc3QgeyByZXR1cm4gbV9t
YXRyaXgubTEzKCk7IH0KKyAgICBmbG9hdCBtMTQoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5t
MTQoKTsgfQorICAgIGZsb2F0IG0yMSgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0yMSgpOyB9
CisgICAgZmxvYXQgbTIyKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXgubTIyKCk7IH0KKyAgICBm
bG9hdCBtMjMoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tMjMoKTsgfQorICAgIGZsb2F0IG0y
NCgpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm0yNCgpOyB9CisgICAgZmxvYXQgbTMxKCkgY29u
c3QgeyByZXR1cm4gbV9tYXRyaXgubTMxKCk7IH0KKyAgICBmbG9hdCBtMzIoKSBjb25zdCB7IHJl
dHVybiBtX21hdHJpeC5tMzIoKTsgfQorICAgIGZsb2F0IG0zMygpIGNvbnN0IHsgcmV0dXJuIG1f
bWF0cml4Lm0zMygpOyB9CisgICAgZmxvYXQgbTM0KCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXgu
bTM0KCk7IH0KKyAgICBmbG9hdCBtNDEoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tNDEoKTsg
fQorICAgIGZsb2F0IG00MigpIGNvbnN0IHsgcmV0dXJuIG1fbWF0cml4Lm00MigpOyB9CisgICAg
ZmxvYXQgbTQzKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXgubTQzKCk7IH0KKyAgICBmbG9hdCBt
NDQoKSBjb25zdCB7IHJldHVybiBtX21hdHJpeC5tNDQoKTsgfQorICAgIAorICAgIHZvaWQgc2V0
TTExKGZsb2F0IGYpICAgeyBtX21hdHJpeC5zZXRNMTEoZik7IH0KKyAgICB2b2lkIHNldE0xMihm
bG9hdCBmKSAgIHsgbV9tYXRyaXguc2V0TTEyKGYpOyB9CisgICAgdm9pZCBzZXRNMTMoZmxvYXQg
ZikgICB7IG1fbWF0cml4LnNldE0xMyhmKTsgfQorICAgIHZvaWQgc2V0TTE0KGZsb2F0IGYpICAg
eyBtX21hdHJpeC5zZXRNMTQoZik7IH0KKyAgICB2b2lkIHNldE0yMShmbG9hdCBmKSAgIHsgbV9t
YXRyaXguc2V0TTIxKGYpOyB9CisgICAgdm9pZCBzZXRNMjIoZmxvYXQgZikgICB7IG1fbWF0cml4
LnNldE0yMihmKTsgfQorICAgIHZvaWQgc2V0TTIzKGZsb2F0IGYpICAgeyBtX21hdHJpeC5zZXRN
MjMoZik7IH0KKyAgICB2b2lkIHNldE0yNChmbG9hdCBmKSAgIHsgbV9tYXRyaXguc2V0TTI0KGYp
OyB9CisgICAgdm9pZCBzZXRNMzEoZmxvYXQgZikgICB7IG1fbWF0cml4LnNldE0zMShmKTsgfQor
ICAgIHZvaWQgc2V0TTMyKGZsb2F0IGYpICAgeyBtX21hdHJpeC5zZXRNMzIoZik7IH0KKyAgICB2
b2lkIHNldE0zMyhmbG9hdCBmKSAgIHsgbV9tYXRyaXguc2V0TTMzKGYpOyB9CisgICAgdm9pZCBz
ZXRNMzQoZmxvYXQgZikgICB7IG1fbWF0cml4LnNldE0zNChmKTsgfQorICAgIHZvaWQgc2V0TTQx
KGZsb2F0IGYpICAgeyBtX21hdHJpeC5zZXRNNDEoZik7IH0KKyAgICB2b2lkIHNldE00MihmbG9h
dCBmKSAgIHsgbV9tYXRyaXguc2V0TTQyKGYpOyB9CisgICAgdm9pZCBzZXRNNDMoZmxvYXQgZikg
ICB7IG1fbWF0cml4LnNldE00MyhmKTsgfQorICAgIHZvaWQgc2V0TTQ0KGZsb2F0IGYpICAgeyBt
X21hdHJpeC5zZXRNNDQoZik7IH0KKyAKKyAgICB2b2lkICAgICAgICAgICAgICAgIHNldE1hdHJp
eFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nKTsKKyAgICAKKyAgICAvLyB0aGlzID0gdGhpcyAq
IHNlY29uZE1hdHJpeCAoaS5lLiBtdWx0UmlnaHQpCisgICAgV2ViS2l0Q1NTTWF0cml4KiAgICBt
dWx0aXBseShXZWJLaXRDU1NNYXRyaXgqIHNlY29uZE1hdHJpeCk7CisgICAgCisgICAgLy8gRklY
TUU6IHdlIHJlYWxseSBzaG91bGQgaGF2ZSBhbiBleGNlcHRpb24gaGVyZSwgZm9yIHdoZW4gbWF0
cml4IGlzIG5vdCBpbnZlcnRpYmxlCisgICAgV2ViS2l0Q1NTTWF0cml4KiAgICBpbnZlcnNlKCk7
CisgICAgV2ViS2l0Q1NTTWF0cml4KiAgICB0cmFuc2xhdGUoZmxvYXQgeCwgZmxvYXQgeSwgZmxv
YXQgeik7CisgICAgV2ViS2l0Q1NTTWF0cml4KiAgICBzY2FsZShmbG9hdCBzY2FsZVgsIGZsb2F0
IHNjYWxlWSwgZmxvYXQgc2NhbGVaKTsKKyAgICBXZWJLaXRDU1NNYXRyaXgqICAgIHJvdGF0ZShm
bG9hdCByb3RYLCBmbG9hdCByb3RZLCBmbG9hdCByb3RaKTsKKyAgICBXZWJLaXRDU1NNYXRyaXgq
ICAgIHJvdGF0ZUF4aXNBbmdsZShmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBmbG9hdCBhbmds
ZSk7CisgICAgCisgICAgY29uc3QgVHJhbnNmb3JtM0QmICAgIHRyYW5zZm9ybSgpIHsgcmV0dXJu
IG1fbWF0cml4OyB9CisgICAgCisgICAgU3RyaW5nIHRvU3RyaW5nKCk7CisgICAgCitwcm90ZWN0
ZWQ6CisgICAgVHJhbnNmb3JtM0QgbV9tYXRyaXg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBXZWJLaXRDU1NNYXRyaXhfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9j
c3MvV2ViS2l0Q1NTTWF0cml4LmlkbCBiL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU2NGMyMgotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvY3NzL1dlYktpdENTU01hdHJpeC5pZGwKQEAgLTAsMCArMSw2NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNz
cyB7CisKKyAgICAvLyBJbnRyb2R1Y2VkIGluIERPTSBMZXZlbCA/OgorICAgIGludGVyZmFjZSBb
CisgICAgICAgIEludGVyZmFjZVVVSUQ9MzQ5Yzk4OWUtODc3Zi00MTZlLTljY2UtY2E4MTFlNTJk
OWU4LAorICAgICAgICBJbXBsZW1lbnRhdGlvblVVSUQ9NWZlYjE2ZTYtZjQ0MS00YjQ2LTliMTAt
OWU4MzNhNGRjZDFiCisgICAgXSBXZWJLaXRDU1NNYXRyaXggeworCisgICAgICAgIGF0dHJpYnV0
ZSBmbG9hdCBtMTE7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMTI7CisgICAgICAgIGF0dHJp
YnV0ZSBmbG9hdCBtMTM7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMTQ7CisgICAgICAgIGF0
dHJpYnV0ZSBmbG9hdCBtMjE7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMjI7CisgICAgICAg
IGF0dHJpYnV0ZSBmbG9hdCBtMjM7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMjQ7CisgICAg
ICAgIGF0dHJpYnV0ZSBmbG9hdCBtMzE7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMzI7Cisg
ICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMzM7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtMzQ7
CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtNDE7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBt
NDI7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9hdCBtNDM7CisgICAgICAgIGF0dHJpYnV0ZSBmbG9h
dCBtNDQ7CisKKyAgICAgICAgdm9pZCAgICAgICAgICAgIHNldE1hdHJpeFZhbHVlKGluIERPTVN0
cmluZyBzdHJpbmcpOworICAgICAgICBXZWJLaXRDU1NNYXRyaXggbXVsdGlwbHkoaW4gV2ViS2l0
Q1NTTWF0cml4IHNlY29uZE1hdHJpeCkgcmFpc2VzIENTU0V4Y2VwdGlvbjsKKyAgICAgICAgV2Vi
S2l0Q1NTTWF0cml4IGludmVyc2UoKSByYWlzZXMgQ1NTRXhjZXB0aW9uOworICAgICAgICBXZWJL
aXRDU1NNYXRyaXggdHJhbnNsYXRlKGluIGZsb2F0IHgsIGluIGZsb2F0IHksIGluIGZsb2F0IHop
OworICAgICAgICBXZWJLaXRDU1NNYXRyaXggc2NhbGUoaW4gZmxvYXQgc2NhbGVYLCBpbiBmbG9h
dCBzY2FsZVksIGluIGZsb2F0IHNjYWxlWik7CisgICAgICAgIFdlYktpdENTU01hdHJpeCByb3Rh
dGUoaW4gZmxvYXQgcm90WCwgaW4gZmxvYXQgcm90WSwgaW4gZmxvYXQgcm90Wik7CisgICAgICAg
IFdlYktpdENTU01hdHJpeCByb3RhdGVBeGlzQW5nbGUoaW4gZmxvYXQgeCwgaW4gZmxvYXQgeSwg
aW4gZmxvYXQgeiwgaW4gZmxvYXQgYW5nbGUpOworICAgICAgICAKKyAgICAgICAgRE9NU3RyaW5n
IHRvU3RyaW5nKCk7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUuY3BwIGIvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFs
dWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YmYzOTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5jcHAKQEAg
LTAsMCArMSwxMTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYktpdENTU1RyYW5zZm9ybVZhbHVlOjpXZWJLaXRD
U1NUcmFuc2Zvcm1WYWx1ZShUcmFuc2Zvcm1PcGVyYXRpb25UeXBlIG9wKQorOiBtX3R5cGUob3Ap
Cit7fQorCitXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6fldlYktpdENTU1RyYW5zZm9ybVZhbHVl
KCkKK3t9CisKK1N0cmluZyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0
Cit7CisgICAgU3RyaW5nIHJlc3VsdDsKKyAgICBzd2l0Y2gobV90eXBlKSB7CisgICAgICAgIGNh
c2UgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0gInNjYWxl
KCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTY2FsZVhUcmFuc2Zvcm1PcGVy
YXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0gInNjYWxlWCgiOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgU2NhbGVZVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAg
cmVzdWx0ICs9ICJzY2FsZVkoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNj
YWxlWlRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAic2NhbGVaKCI7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTY2FsZTNEVHJhbnNmb3JtT3BlcmF0
aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJzY2FsZTNkKCI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICBy
ZXN1bHQgKz0gInJvdGF0ZSgiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUm90
YXRlWFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAicm90YXRlWCgi
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUm90YXRlWVRyYW5zZm9ybU9wZXJh
dGlvbjoKKyAgICAgICAgICAgIHJlc3VsdCArPSAicm90YXRlWSgiOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgUm90YXRlWlRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAg
IHJlc3VsdCArPSAicm90YXRlWigiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Um90YXRlM0RUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0gInJvdGF0
ZTNkKCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTa2V3VHJhbnNmb3JtT3Bl
cmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJza2V3KCI7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBTa2V3WFRyYW5zZm9ybU9wZXJhdGlvbjoKKyAgICAgICAgICAgIHJl
c3VsdCArPSAic2tld1goIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNrZXdZ
VHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJza2V3WSgiOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9u
OgorICAgICAgICAgICAgcmVzdWx0ICs9ICJ0cmFuc2xhdGUoIjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAg
ICByZXN1bHQgKz0gInRyYW5zbGF0ZVgoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0g
InRyYW5zbGF0ZVkoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zbGF0
ZVpUcmFuc2Zvcm1PcGVyYXRpb246CisgICAgICAgICAgICByZXN1bHQgKz0gInRyYW5zbGF0ZVoo
IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyYW5zbGF0ZTNEVHJhbnNmb3Jt
T3BlcmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9ICJ0cmFuc2xhdGUzZCgiOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uOgorICAg
ICAgICAgICAgcmVzdWx0ICs9ICJtYXRyaXgoIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uOgorICAgICAgICAgICAgcmVzdWx0ICs9
ICJtYXRyaXgzZCgiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgcmVzdWx0ICs9IENTU1ZhbHVlTGlzdDo6
Y3NzVGV4dCgpOworICAgIAorICAgIHJlc3VsdCArPSAiKSI7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
aCBiL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uOTc5NWQ5YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUv
Y3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWVfaAorI2RlZmluZSBXZWJLaXRDU1NUcmFu
c2Zvcm1WYWx1ZV9oCisKKyNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSA6IHB1YmxpYyBDU1NWYWx1
ZUxpc3QKK3sKK3B1YmxpYzoKKyAgICBlbnVtIFRyYW5zZm9ybU9wZXJhdGlvblR5cGUgeworICAg
ICAgICBVbmtub3duVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBTY2FsZVRyYW5zZm9ybU9w
ZXJhdGlvbiwKKyAgICAgICAgU2NhbGVYVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBTY2Fs
ZVlUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAgICAgIFNjYWxlWlRyYW5zZm9ybU9wZXJhdGlvbiwK
KyAgICAgICAgU2NhbGUzRFRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAgUm90YXRlVHJhbnNm
b3JtT3BlcmF0aW9uLAorICAgICAgICBSb3RhdGVYVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAg
ICBSb3RhdGVZVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBSb3RhdGVaVHJhbnNmb3JtT3Bl
cmF0aW9uLAorICAgICAgICBSb3RhdGUzRFRyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAgU2tl
d1RyYW5zZm9ybU9wZXJhdGlvbiwKKyAgICAgICAgU2tld1hUcmFuc2Zvcm1PcGVyYXRpb24sCisg
ICAgICAgIFNrZXdZVHJhbnNmb3JtT3BlcmF0aW9uLAorICAgICAgICBUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24sCisgICAgICAgIFRyYW5zbGF0ZVhUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAg
ICAgIFRyYW5zbGF0ZVlUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAgICAgIFRyYW5zbGF0ZVpUcmFu
c2Zvcm1PcGVyYXRpb24sCisgICAgICAgIFRyYW5zbGF0ZTNEVHJhbnNmb3JtT3BlcmF0aW9uLAor
ICAgICAgICBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24sCisgICAgICAgIE1hdHJpeDNEVHJhbnNm
b3JtT3BlcmF0aW9uCisgICAgfTsKKworICAgIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlKFRyYW5z
Zm9ybU9wZXJhdGlvblR5cGUpOworICAgIHZpcnR1YWwgfldlYktpdENTU1RyYW5zZm9ybVZhbHVl
KCk7CisKKyAgICB2aXJ0dWFsIFN0cmluZyBjc3NUZXh0KCkgY29uc3Q7CisgCisgICAgVHJhbnNm
b3JtT3BlcmF0aW9uVHlwZSBvcGVyYXRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CisgICAgCitwcm90ZWN0ZWQ6CisgICAgVHJhbnNmb3JtT3BlcmF0aW9uVHlwZSBtX3R5cGU7Cit9
OworCit9CisKKyNlbmRpZiAvLyBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZV9oCisKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCBiL1dlYkNvcmUvY3Nz
L1dlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi40ZDAxYmVmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9jc3MvV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuaWRsCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUsIEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KKyAqLworCittb2R1bGUgY3NzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdl
bmVyYXRlQ29uc3RydWN0b3IsCisgICAgICAgIEhhc0luZGV4R2V0dGVyCisgICAgICAgIEludGVy
ZmFjZVVVSUQ9MzAzZmU2MzItNWRjZi00NDcyLWI5NzctMzNhNTQ4MWUxZDEyLAorICAgICAgICBJ
bXBsZW1lbnRhdGlvblVVSUQ9ZWI0OWU1YzYtNjA3NS00NWI4LWI1YzQtN2U3NzVjMDFlN2M0Cisg
ICAgXSBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSA6IENTU1ZhbHVlTGlzdCB7CisKKyAgICAgICAg
Ly8gT3BlcmF0aW9uVHlwZXMKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1VOS05P
V05fVFJBTlNGT1JNID0gMDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX01BVFJJ
WCAgICAgICAgICAgID0gMTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX01BVFJJ
WDNEICAgICAgICAgID0gMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1JPVEFU
RSAgICAgICAgICAgID0gMzsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1JPVEFU
RTNEICAgICAgICAgID0gNDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1RSQU5T
TEFURSAgICAgICAgID0gNTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1RSQU5T
TEFURTNEICAgICAgID0gNjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1NDQUxF
ICAgICAgICAgICAgID0gNzsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1NDQUxF
M0QgICAgICAgICAgID0gODsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1NLRVdY
ICAgICAgICAgICAgID0gOTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1NLRVdZ
ICAgICAgICAgICAgID0gMTA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19TS0VX
WiAgICAgICAgICAgICA9IDExOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDU1NfUEVS
U1BFQ1RJVkUgICAgICAgPSAxMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NTX1JP
VEFURVggICAgICAgICAgID0gMTM7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENTU19S
T1RBVEVZICAgICAgICAgICA9IDE0OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDU1Nf
Uk9UQVRFWiAgICAgICAgICAgPSAxNTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ1NT
X1RSQU5TTEFURVggICAgICAgID0gMTY7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IENT
U19UUkFOU0xBVEVZICAgICAgICA9IDE3OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBD
U1NfVFJBTlNMQVRFWiAgICAgICAgPSAxODsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
Q1NTX1NDQUxFWCAgICAgICAgICAgID0gMTk7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0
IENTU19TQ0FMRVkgICAgICAgICAgICA9IDIwOworICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9y
dCBDU1NfU0NBTEVaICAgICAgICAgICAgPSAyMTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgdW5zaWduZWQgc2hvcnQgb3BlcmF0aW9uVHlwZTsKKyAgICB9OworCit9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1RyYW5zZm9ybTNELmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVHJhbnNmb3JtM0QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjU0ZGQ3MmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1RyYW5zZm9ybTNELmNwcApAQCAtMCwwICsxLDU0MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgor
I2luY2x1ZGUgIlRyYW5zZm9ybTNELmgiCisjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCisvKgorQWRhcHRlZCBmcm9tIE1hdHJpeCBJbnZlcnNpb24g
YnkgUmljaGFyZCBDYXJsaW5nLCBHcmFwaGljcyBHZW1zIDxodHRwOi8vdG9nLmFjbS5vcmcvR3Jh
cGhpY3NHZW1zL2luZGV4Lmh0bWw+LgorCitFVUxBOiBUaGUgR3JhcGhpY3MgR2VtcyBjb2RlIGlz
IGNvcHlyaWdodC1wcm90ZWN0ZWQuIEluIG90aGVyIHdvcmRzLCB5b3UgY2Fubm90IGNsYWltIHRo
ZSB0ZXh0IG9mIHRoZSBjb2RlIAorYXMgeW91ciBvd24gYW5kIHJlc2VsbCBpdC4gVXNpbmcgdGhl
IGNvZGUgaXMgcGVybWl0dGVkIGluIGFueSBwcm9ncmFtLCBwcm9kdWN0LCBvciBsaWJyYXJ5LCBu
b24tY29tbWVyY2lhbCAKK29yIGNvbW1lcmNpYWwuIEdpdmluZyBjcmVkaXQgaXMgbm90IHJlcXVp
cmVkLCB0aG91Z2ggaXMgYSBuaWNlIGdlc3R1cmUuIFRoZSBjb2RlIGNvbWVzIGFzLWlzLCBhbmQg
aWYgdGhlcmUgCithcmUgYW55IGZsYXdzIG9yIHByb2JsZW1zIHdpdGggYW55IEdlbXMgY29kZSwg
bm9ib2R5IGludm9sdmVkIHdpdGggR2VtcyAtIGF1dGhvcnMsIGVkaXRvcnMsIHB1Ymxpc2hlcnMs
IG9yIAord2VibWFzdGVycyAtIGFyZSB0byBiZSBoZWxkIHJlc3BvbnNpYmxlLiBCYXNpY2FsbHks
IGRvbid0IGJlIGEgamVyaywgYW5kIHJlbWVtYmVyIHRoYXQgYW55dGhpbmcgZnJlZSBjb21lcyAK
K3dpdGggbm8gZ3VhcmFudGVlLgorKi8KKwordHlwZWRlZiBmbG9hdCBNYXRyaXg0WzRdWzRdOwor
CisjZGVmaW5lIFNNQUxMX05VTUJFUiAgICAxLmUtOAorCisvKiAKKyAqICAgaW52ZXJzZSggb3Jp
Z2luYWxfbWF0cml4LCBpbnZlcnNlX21hdHJpeCApCisgKiAKKyAqICAgIGNhbGN1bGF0ZSB0aGUg
aW52ZXJzZSBvZiBhIDR4NCBtYXRyaXgKKyAqCisgKiAgICAgLTEgICAgIAorICogICAgIEEgID0g
X19fMV9fIGFkam9pbnQgQQorICogICAgICAgICBkZXQgQQorICovCisKKy8qCisgKiBkb3VibGUg
PSBkZXQyeDIoIGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkICkKKyAqIAor
ICogY2FsY3VsYXRlIHRoZSBkZXRlcm1pbmFudCBvZiBhIDJ4MiBtYXRyaXguCisgKi8KKworc3Rh
dGljIGZsb2F0IGRldDJ4MihmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBkKQorewor
ICAgIGZsb2F0IGFuczsKKyAgICBhbnMgPSBhICogZCAtIGIgKiBjOworICAgIHJldHVybiBhbnM7
Cit9CisKKy8qCisgKiBkb3VibGUgPSBkZXQzeDMoICBhMSwgYTIsIGEzLCBiMSwgYjIsIGIzLCBj
MSwgYzIsIGMzICkKKyAqIAorICogY2FsY3VsYXRlIHRoZSBkZXRlcm1pbmFudCBvZiBhIDN4MyBt
YXRyaXgKKyAqIGluIHRoZSBmb3JtCisgKgorICogICAgIHwgYTEsICBiMSwgIGMxIHwKKyAqICAg
ICB8IGEyLCAgYjIsICBjMiB8CisgKiAgICAgfCBhMywgIGIzLCAgYzMgfAorICovCisKK3N0YXRp
YyBmbG9hdCBkZXQzeDMoZmxvYXQgYTEsIGZsb2F0IGEyLCBmbG9hdCBhMywgZmxvYXQgYjEsIGZs
b2F0IGIyLCBmbG9hdCBiMywgZmxvYXQgYzEsIGZsb2F0IGMyLCBmbG9hdCBjMykKK3sKKyAgICBm
bG9hdCBhbnM7CisKKyAgICBhbnMgPSBhMSAqIGRldDJ4MiggYjIsIGIzLCBjMiwgYzMgKQorICAg
ICAgICAtIGIxICogZGV0MngyKCBhMiwgYTMsIGMyLCBjMyApCisgICAgICAgICsgYzEgKiBkZXQy
eDIoIGEyLCBhMywgYjIsIGIzICk7CisgICAgcmV0dXJuIGFuczsKK30KKworLyoKKyAqIGRvdWJs
ZSA9IGRldDR4NCggbWF0cml4ICkKKyAqIAorICogY2FsY3VsYXRlIHRoZSBkZXRlcm1pbmFudCBv
ZiBhIDR4NCBtYXRyaXguCisgKi8KK3N0YXRpYyBmbG9hdCBkZXQ0eDQoY29uc3QgTWF0cml4NCBt
KQoreworICAgIGZsb2F0IGFuczsKKyAgICBmbG9hdCBhMSwgYTIsIGEzLCBhNCwgYjEsIGIyLCBi
MywgYjQsIGMxLCBjMiwgYzMsIGM0LCBkMSwgZDIsIGQzLCBkNDsKKworICAgIC8qIGFzc2lnbiB0
byBpbmRpdmlkdWFsIHZhcmlhYmxlIG5hbWVzIHRvIGFpZCBzZWxlY3RpbmcgKi8KKyAgICAvKiAg
Y29ycmVjdCBlbGVtZW50cyAqLworCisgICAgYTEgPSBtWzBdWzBdOyBiMSA9IG1bMF1bMV07IAor
ICAgIGMxID0gbVswXVsyXTsgZDEgPSBtWzBdWzNdOworCisgICAgYTIgPSBtWzFdWzBdOyBiMiA9
IG1bMV1bMV07IAorICAgIGMyID0gbVsxXVsyXTsgZDIgPSBtWzFdWzNdOworCisgICAgYTMgPSBt
WzJdWzBdOyBiMyA9IG1bMl1bMV07IAorICAgIGMzID0gbVsyXVsyXTsgZDMgPSBtWzJdWzNdOwor
CisgICAgYTQgPSBtWzNdWzBdOyBiNCA9IG1bM11bMV07IAorICAgIGM0ID0gbVszXVsyXTsgZDQg
PSBtWzNdWzNdOworCisgICAgYW5zID0gYTEgKiBkZXQzeDMoIGIyLCBiMywgYjQsIGMyLCBjMywg
YzQsIGQyLCBkMywgZDQpCisgICAgICAgIC0gYjEgKiBkZXQzeDMoIGEyLCBhMywgYTQsIGMyLCBj
MywgYzQsIGQyLCBkMywgZDQpCisgICAgICAgICsgYzEgKiBkZXQzeDMoIGEyLCBhMywgYTQsIGIy
LCBiMywgYjQsIGQyLCBkMywgZDQpCisgICAgICAgIC0gZDEgKiBkZXQzeDMoIGEyLCBhMywgYTQs
IGIyLCBiMywgYjQsIGMyLCBjMywgYzQpOworICAgIHJldHVybiBhbnM7Cit9CisKKy8qIAorICog
ICBhZGpvaW50KCBvcmlnaW5hbF9tYXRyaXgsIGludmVyc2VfbWF0cml4ICkKKyAqIAorICogICAg
IGNhbGN1bGF0ZSB0aGUgYWRqb2ludCBvZiBhIDR4NCBtYXRyaXgKKyAqCisgKiAgICAgIExldCAg
YSAgIGRlbm90ZSB0aGUgbWlub3IgZGV0ZXJtaW5hbnQgb2YgbWF0cml4IEEgb2J0YWluZWQgYnkK
KyAqICAgICAgICAgICBpagorICoKKyAqICAgICAgZGVsZXRpbmcgdGhlIGl0aCByb3cgYW5kIGp0
aCBjb2x1bW4gZnJvbSBBLgorICoKKyAqICAgICAgICAgICAgICAgICAgICBpK2oKKyAqICAgICBM
ZXQgIGIgICA9ICgtMSkgICAgYQorICogICAgICAgICAgaWogICAgICAgICAgICBqaQorICoKKyAq
ICAgIFRoZSBtYXRyaXggQiA9IChiICApIGlzIHRoZSBhZGpvaW50IG9mIEEKKyAqICAgICAgICAg
ICAgICAgICAgICAgaWoKKyAqLworCitzdGF0aWMgdm9pZCBhZGpvaW50KGNvbnN0IE1hdHJpeDQg
c3JjTWF0cml4LCBNYXRyaXg0IG91dE1hdHJpeCkKK3sKKyAgICBmbG9hdCBhMSwgYTIsIGEzLCBh
NCwgYjEsIGIyLCBiMywgYjQ7CisgICAgZmxvYXQgYzEsIGMyLCBjMywgYzQsIGQxLCBkMiwgZDMs
IGQ0OworCisgICAgLyogYXNzaWduIHRvIGluZGl2aWR1YWwgdmFyaWFibGUgbmFtZXMgdG8gYWlk
ICAqLworICAgIC8qIHNlbGVjdGluZyBjb3JyZWN0IHZhbHVlcyAgKi8KKworICAgIGExID0gc3Jj
TWF0cml4WzBdWzBdOyBiMSA9IHNyY01hdHJpeFswXVsxXTsgCisgICAgYzEgPSBzcmNNYXRyaXhb
MF1bMl07IGQxID0gc3JjTWF0cml4WzBdWzNdOworCisgICAgYTIgPSBzcmNNYXRyaXhbMV1bMF07
IGIyID0gc3JjTWF0cml4WzFdWzFdOyAKKyAgICBjMiA9IHNyY01hdHJpeFsxXVsyXTsgZDIgPSBz
cmNNYXRyaXhbMV1bM107CisKKyAgICBhMyA9IHNyY01hdHJpeFsyXVswXTsgYjMgPSBzcmNNYXRy
aXhbMl1bMV07CisgICAgYzMgPSBzcmNNYXRyaXhbMl1bMl07IGQzID0gc3JjTWF0cml4WzJdWzNd
OworCisgICAgYTQgPSBzcmNNYXRyaXhbM11bMF07IGI0ID0gc3JjTWF0cml4WzNdWzFdOyAKKyAg
ICBjNCA9IHNyY01hdHJpeFszXVsyXTsgZDQgPSBzcmNNYXRyaXhbM11bM107CisKKworICAgIC8q
IHJvdyBjb2x1bW4gbGFiZWxpbmcgcmV2ZXJzZWQgc2luY2Ugd2UgdHJhbnNwb3NlIHJvd3MgJiBj
b2x1bW5zICovCisKKyAgICBvdXRNYXRyaXhbMF1bMF0gID0gICBkZXQzeDMoIGIyLCBiMywgYjQs
IGMyLCBjMywgYzQsIGQyLCBkMywgZDQpOworICAgIG91dE1hdHJpeFsxXVswXSAgPSAtIGRldDN4
MyggYTIsIGEzLCBhNCwgYzIsIGMzLCBjNCwgZDIsIGQzLCBkNCk7CisgICAgb3V0TWF0cml4WzJd
WzBdICA9ICAgZGV0M3gzKCBhMiwgYTMsIGE0LCBiMiwgYjMsIGI0LCBkMiwgZDMsIGQ0KTsKKyAg
ICBvdXRNYXRyaXhbM11bMF0gID0gLSBkZXQzeDMoIGEyLCBhMywgYTQsIGIyLCBiMywgYjQsIGMy
LCBjMywgYzQpOworICAgICAgICAKKyAgICBvdXRNYXRyaXhbMF1bMV0gID0gLSBkZXQzeDMoIGIx
LCBiMywgYjQsIGMxLCBjMywgYzQsIGQxLCBkMywgZDQpOworICAgIG91dE1hdHJpeFsxXVsxXSAg
PSAgIGRldDN4MyggYTEsIGEzLCBhNCwgYzEsIGMzLCBjNCwgZDEsIGQzLCBkNCk7CisgICAgb3V0
TWF0cml4WzJdWzFdICA9IC0gZGV0M3gzKCBhMSwgYTMsIGE0LCBiMSwgYjMsIGI0LCBkMSwgZDMs
IGQ0KTsKKyAgICBvdXRNYXRyaXhbM11bMV0gID0gICBkZXQzeDMoIGExLCBhMywgYTQsIGIxLCBi
MywgYjQsIGMxLCBjMywgYzQpOworICAgICAgICAKKyAgICBvdXRNYXRyaXhbMF1bMl0gID0gICBk
ZXQzeDMoIGIxLCBiMiwgYjQsIGMxLCBjMiwgYzQsIGQxLCBkMiwgZDQpOworICAgIG91dE1hdHJp
eFsxXVsyXSAgPSAtIGRldDN4MyggYTEsIGEyLCBhNCwgYzEsIGMyLCBjNCwgZDEsIGQyLCBkNCk7
CisgICAgb3V0TWF0cml4WzJdWzJdICA9ICAgZGV0M3gzKCBhMSwgYTIsIGE0LCBiMSwgYjIsIGI0
LCBkMSwgZDIsIGQ0KTsKKyAgICBvdXRNYXRyaXhbM11bMl0gID0gLSBkZXQzeDMoIGExLCBhMiwg
YTQsIGIxLCBiMiwgYjQsIGMxLCBjMiwgYzQpOworICAgICAgICAKKyAgICBvdXRNYXRyaXhbMF1b
M10gID0gLSBkZXQzeDMoIGIxLCBiMiwgYjMsIGMxLCBjMiwgYzMsIGQxLCBkMiwgZDMpOworICAg
IG91dE1hdHJpeFsxXVszXSAgPSAgIGRldDN4MyggYTEsIGEyLCBhMywgYzEsIGMyLCBjMywgZDEs
IGQyLCBkMyk7CisgICAgb3V0TWF0cml4WzJdWzNdICA9IC0gZGV0M3gzKCBhMSwgYTIsIGEzLCBi
MSwgYjIsIGIzLCBkMSwgZDIsIGQzKTsKKyAgICBvdXRNYXRyaXhbM11bM10gID0gICBkZXQzeDMo
IGExLCBhMiwgYTMsIGIxLCBiMiwgYjMsIGMxLCBjMiwgYzMpOworfQorCisvLyByZXR1cm5zIGZh
bHNlIGlmIHRoZSBtYXRyaXggaXMgbm90IGludGVydGlibGUKK3N0YXRpYyBib29sIGludmVyc2Uo
Y29uc3QgTWF0cml4NCBzcmNNYXRyaXgsIE1hdHJpeDQgb3V0TWF0cml4KQoreworICAgIC8qIGNh
bGN1bGF0ZSB0aGUgYWRqb2ludCBtYXRyaXggKi8KKworICAgIGFkam9pbnQoc3JjTWF0cml4LCBv
dXRNYXRyaXgpOworCisgICAgLyogIGNhbGN1bGF0ZSB0aGUgNHg0IGRldGVybWluYW50CisgICAg
ICogIGlmIHRoZSBkZXRlcm1pbmFudCBpcyB6ZXJvLCAKKyAgICAgKiAgdGhlbiB0aGUgaW52ZXJz
ZSBtYXRyaXggaXMgbm90IHVuaXF1ZS4KKyAgICAgKi8KKworICAgIGZsb2F0IGRldCA9IGRldDR4
NChzcmNNYXRyaXgpOworCisgICAgaWYgKGZhYnMoZGV0KSA8IFNNQUxMX05VTUJFUikgeworICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyogc2NhbGUgdGhlIGFkam9pbnQgbWF0
cml4IHRvIGdldCB0aGUgaW52ZXJzZSAqLworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBp
KyspCisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgNDsgaisrKQorICAgICAgICAgICAgb3V0
TWF0cml4W2ldW2pdID0gb3V0TWF0cml4W2ldW2pdIC8gZGV0OworCisgICAgcmV0dXJuIHRydWU7
Cit9CisKKy8qIEVuZCBvZiBjb2RlIGFkYXB0ZWQgZnJvbSBNYXRyaXggSW52ZXJzaW9uIGJ5IFJp
Y2hhcmQgQ2FybGluZyAqLworCitUcmFuc2Zvcm0zRDo6VHJhbnNmb3JtM0QoY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB0KQoreworICAgIG1ha2VJZGVudGl0eSgpOworICAgIG1fbWF0cml4WzBdWzBd
ID0gKGZsb2F0KSB0LmEoKTsKKyAgICBtX21hdHJpeFswXVsxXSA9IChmbG9hdCkgdC5iKCk7Cisg
ICAgbV9tYXRyaXhbMV1bMF0gPSAoZmxvYXQpIHQuYygpOworICAgIG1fbWF0cml4WzFdWzFdID0g
KGZsb2F0KSB0LmQoKTsKKworICAgIG1fbWF0cml4WzNdWzBdID0gKGZsb2F0KSB0LmUoKTsKKyAg
ICBtX21hdHJpeFszXVsxXSA9IChmbG9hdCkgdC5mKCk7Cit9CisKK1RyYW5zZm9ybTNEJiBUcmFu
c2Zvcm0zRDo6c2NhbGUoZmxvYXQgc3gsIGZsb2F0IHN5KQoreworICAgIFRyYW5zZm9ybTNEIG1h
dDsKKyAgICBtYXQubV9tYXRyaXhbMF1bMF0gPSBzeDsKKyAgICBtYXQubV9tYXRyaXhbMV1bMV0g
PSBzeTsKKworICAgIG11bHRMZWZ0KG1hdCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitUcmFu
c2Zvcm0zRCYgVHJhbnNmb3JtM0Q6OnNjYWxlM2QoZmxvYXQgc3gsIGZsb2F0IHN5LCBmbG9hdCBz
eikKK3sKKyAgICBUcmFuc2Zvcm0zRCBtYXQ7CisgICAgbWF0Lm1fbWF0cml4WzBdWzBdID0gc3g7
CisgICAgbWF0Lm1fbWF0cml4WzFdWzFdID0gc3k7CisgICAgbWF0Lm1fbWF0cml4WzJdWzJdID0g
c3o7CisKKyAgICBtdWx0TGVmdChtYXQpOworICAgIHJldHVybiAqdGhpczsKK30KKworVHJhbnNm
b3JtM0QmIFRyYW5zZm9ybTNEOjpyb3RhdGUzZChmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6LCBm
bG9hdCBhbmdsZSkKK3sKKyAgICAvLyBhbmdsZXMgYXJlIGluIGRlZ3JlZXMuIFN3aXRjaCB0byBy
YWRpYW5zCisgICAgYW5nbGUgPSBkZWcycmFkKGFuZ2xlKTsKKyAgICAKKyAgICBhbmdsZSAvPSAy
LjBmOworICAgIGZsb2F0IHNpbkEgPSBzaW5mKGFuZ2xlKTsKKyAgICBmbG9hdCBjb3NBID0gY29z
ZihhbmdsZSk7CisgICAgZmxvYXQgc2luQTIgPSBzaW5BICogc2luQTsKKyAgICAKKyAgICAvLyBu
b3JtYWxpemUKKyAgICBmbG9hdCBsZW5ndGggPSBzcXJ0Zih4KngreSp5K3oqeik7CisgICAgaWYg
KGxlbmd0aCA9PSAwLjBmKSB7CisgICAgICAgIC8vIGJhZCB2ZWN0b3IsIGp1c3QgdXNlIHNvbWV0
aGluZyByZWFzb25hYmxlCisgICAgICAgIHggPSAwLmY7CisgICAgICAgIHkgPSAwLmY7CisgICAg
ICAgIHogPSAxLmY7CisgICAgfQorICAgIGVsc2UgaWYgKGxlbmd0aCAhPSAxLjBmKSB7CisgICAg
ICAgIHggLz0gbGVuZ3RoOworICAgICAgICB5IC89IGxlbmd0aDsKKyAgICAgICAgeiAvPSBsZW5n
dGg7CisgICAgfQorICAgIAorICAgIFRyYW5zZm9ybTNEIG1hdDsKKworICAgIC8vIG9wdGltaXpl
IGNhc2Ugd2hlcmUgYXhpcyBpcyBhbG9uZyBtYWpvciBheGlzCisgICAgaWYgKHggPT0gMS4wZiAm
JiB5ID09IDAuMGYgJiYgeiA9PSAwLjBmKSB7CisgICAgICAgIG1hdC5tX21hdHJpeFswXVswXSA9
IDEuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFswXVsxXSA9IDAuMGY7CisgICAgICAgIG1hdC5t
X21hdHJpeFswXVsyXSA9IDAuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFsxXVswXSA9IDAuMGY7
CisgICAgICAgIG1hdC5tX21hdHJpeFsxXVsxXSA9IDEuMGYgLSAyLjBmICogc2luQTI7CisgICAg
ICAgIG1hdC5tX21hdHJpeFsxXVsyXSA9IDIuMGYgKiBzaW5BICogY29zQTsKKyAgICAgICAgbWF0
Lm1fbWF0cml4WzJdWzBdID0gMC4wZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzJdWzFdID0gLTIu
MGYgKiBzaW5BICogY29zQTsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzJdWzJdID0gMS4wZiAtIDIu
MGYgKiBzaW5BMjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzNdID0gbWF0Lm1fbWF0cml4WzFd
WzNdID0gbWF0Lm1fbWF0cml4WzJdWzNdID0gMC4wZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzNd
WzBdID0gbWF0Lm1fbWF0cml4WzNdWzFdID0gbWF0Lm1fbWF0cml4WzNdWzJdID0gMC4wZjsKKyAg
ICAgICAgbWF0Lm1fbWF0cml4WzNdWzNdID0gMS4wZjsKKyAgICB9CisgICAgZWxzZSBpZiAoeCA9
PSAwLjBmICYmIHkgPT0gMS4wZiAmJiB6ID09IDAuMGYpIHsKKyAgICAgICAgbWF0Lm1fbWF0cml4
WzBdWzBdID0gMS4wZiAtIDIuMGYgKiBzaW5BMjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzFd
ID0gMC4wZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzBdWzJdID0gLTIuMGYgKiBzaW5BICogY29z
QTsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzFdWzBdID0gMC4wZjsKKyAgICAgICAgbWF0Lm1fbWF0
cml4WzFdWzFdID0gMS4wZjsKKyAgICAgICAgbWF0Lm1fbWF0cml4WzFdWzJdID0gMC4wZjsKKyAg
ICAgICAgbWF0Lm1fbWF0cml4WzJdWzBdID0gMi4wZiAqIHNpbkEgKiBjb3NBOworICAgICAgICBt
YXQubV9tYXRyaXhbMl1bMV0gPSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhbMl1bMl0gPSAx
LjBmIC0gMi4wZiAqIHNpbkEyOworICAgICAgICBtYXQubV9tYXRyaXhbMF1bM10gPSBtYXQubV9t
YXRyaXhbMV1bM10gPSBtYXQubV9tYXRyaXhbMl1bM10gPSAwLjBmOworICAgICAgICBtYXQubV9t
YXRyaXhbM11bMF0gPSBtYXQubV9tYXRyaXhbM11bMV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAw
LjBmOworICAgICAgICBtYXQubV9tYXRyaXhbM11bM10gPSAxLjBmOworICAgIH0KKyAgICBlbHNl
IGlmICh4ID09IDAuMGYgJiYgeSA9PSAwLjBmICYmIHogPT0gMS4wZikgeworICAgICAgICBtYXQu
bV9tYXRyaXhbMF1bMF0gPSAxLjBmIC0gMi4wZiAqIHNpbkEyOworICAgICAgICBtYXQubV9tYXRy
aXhbMF1bMV0gPSAyLjBmICogc2luQSAqIGNvc0E7CisgICAgICAgIG1hdC5tX21hdHJpeFswXVsy
XSA9IDAuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFsxXVswXSA9IC0yLjBmICogc2luQSAqIGNv
c0E7CisgICAgICAgIG1hdC5tX21hdHJpeFsxXVsxXSA9IDEuMGYgLSAyLjBmICogc2luQTI7Cisg
ICAgICAgIG1hdC5tX21hdHJpeFsxXVsyXSA9IDAuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFsy
XVswXSA9IDAuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFsyXVsxXSA9IDAuMGY7CisgICAgICAg
IG1hdC5tX21hdHJpeFsyXVsyXSA9IDEuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFswXVszXSA9
IG1hdC5tX21hdHJpeFsxXVszXSA9IG1hdC5tX21hdHJpeFsyXVszXSA9IDAuMGY7CisgICAgICAg
IG1hdC5tX21hdHJpeFszXVswXSA9IG1hdC5tX21hdHJpeFszXVsxXSA9IG1hdC5tX21hdHJpeFsz
XVsyXSA9IDAuMGY7CisgICAgICAgIG1hdC5tX21hdHJpeFszXVszXSA9IDEuMGY7CisgICAgfQor
ICAgIGVsc2UgeworICAgICAgICBmbG9hdCB4MiA9IHgqeDsgZmxvYXQgeTIgPSB5Knk7IGZsb2F0
IHoyID0geip6OworICAgIAorICAgICAgICBtYXQubV9tYXRyaXhbMF1bMF0gPSAxLjBmIC0gMi4w
ZiAqICh5MiArIHoyKSAqIHNpbkEyOworICAgICAgICBtYXQubV9tYXRyaXhbMF1bMV0gPSAyLjBm
ICogKHggKiB5ICogc2luQTIgKyB6ICogc2luQSAqIGNvc0EpOworICAgICAgICBtYXQubV9tYXRy
aXhbMF1bMl0gPSAyLjBmICogKHggKiB6ICogc2luQTIgLSB5ICogc2luQSAqIGNvc0EpOworICAg
ICAgICBtYXQubV9tYXRyaXhbMV1bMF0gPSAyLjBmICogKHkgKiB4ICogc2luQTIgLSB6ICogc2lu
QSAqIGNvc0EpOworICAgICAgICBtYXQubV9tYXRyaXhbMV1bMV0gPSAxLjBmIC0gMi4wZiAqICh6
MiArIHgyKSAqIHNpbkEyOworICAgICAgICBtYXQubV9tYXRyaXhbMV1bMl0gPSAyLjBmICogKHkg
KiB6ICogc2luQTIgKyB4ICogc2luQSAqIGNvc0EpOworICAgICAgICBtYXQubV9tYXRyaXhbMl1b
MF0gPSAyLjBmICogKHogKiB4ICogc2luQTIgKyB5ICogc2luQSAqIGNvc0EpOworICAgICAgICBt
YXQubV9tYXRyaXhbMl1bMV0gPSAyLjBmICogKHogKiB5ICogc2luQTIgLSB4ICogc2luQSAqIGNv
c0EpOworICAgICAgICBtYXQubV9tYXRyaXhbMl1bMl0gPSAxLjBmIC0gMi4wZiAqICh4MiArIHky
KSAqIHNpbkEyOworICAgICAgICBtYXQubV9tYXRyaXhbMF1bM10gPSBtYXQubV9tYXRyaXhbMV1b
M10gPSBtYXQubV9tYXRyaXhbMl1bM10gPSAwLjBmOworICAgICAgICBtYXQubV9tYXRyaXhbM11b
MF0gPSBtYXQubV9tYXRyaXhbM11bMV0gPSBtYXQubV9tYXRyaXhbM11bMl0gPSAwLjBmOworICAg
ICAgICBtYXQubV9tYXRyaXhbM11bM10gPSAxLjBmOworICAgIH0KKyAgICBtdWx0TGVmdChtYXQp
OworICAgIHJldHVybiAqdGhpczsKK30KKworVHJhbnNmb3JtM0QmIFRyYW5zZm9ybTNEOjpyb3Rh
dGUzZChmbG9hdCByeCwgZmxvYXQgcnksIGZsb2F0IHJ6KQoreworICAgIC8vIGFuZ2xlcyBhcmUg
aW4gZGVncmVlcy4gU3dpdGNoIHRvIHJhZGlhbnMKKyAgICByeCA9IGRlZzJyYWQocngpOworICAg
IHJ5ID0gZGVnMnJhZChyeSk7CisgICAgcnogPSBkZWcycmFkKHJ6KTsKKyAgICAKKyAgICBUcmFu
c2Zvcm0zRCBtYXQ7CisgICAgCisgICAgcnggLz0gMi4wZjsKKyAgICBmbG9hdCBzaW5BID0gc2lu
ZihyeCk7CisgICAgZmxvYXQgY29zQSA9IGNvc2YocngpOworICAgIGZsb2F0IHNpbkEyID0gc2lu
QSAqIHNpbkE7CisgICAgCisgICAgbWF0Lm1fbWF0cml4WzBdWzBdID0gMS4wZjsKKyAgICBtYXQu
bV9tYXRyaXhbMF1bMV0gPSAwLjBmOworICAgIG1hdC5tX21hdHJpeFswXVsyXSA9IDAuMGY7Cisg
ICAgbWF0Lm1fbWF0cml4WzFdWzBdID0gMC4wZjsKKyAgICBtYXQubV9tYXRyaXhbMV1bMV0gPSAx
LjBmIC0gMi4wZiAqIHNpbkEyOworICAgIG1hdC5tX21hdHJpeFsxXVsyXSA9IDIuMGYgKiBzaW5B
ICogY29zQTsKKyAgICBtYXQubV9tYXRyaXhbMl1bMF0gPSAwLjBmOworICAgIG1hdC5tX21hdHJp
eFsyXVsxXSA9IC0yLjBmICogc2luQSAqIGNvc0E7CisgICAgbWF0Lm1fbWF0cml4WzJdWzJdID0g
MS4wZiAtIDIuMGYgKiBzaW5BMjsKKyAgICBtYXQubV9tYXRyaXhbMF1bM10gPSBtYXQubV9tYXRy
aXhbMV1bM10gPSBtYXQubV9tYXRyaXhbMl1bM10gPSAwLjBmOworICAgIG1hdC5tX21hdHJpeFsz
XVswXSA9IG1hdC5tX21hdHJpeFszXVsxXSA9IG1hdC5tX21hdHJpeFszXVsyXSA9IDAuMGY7Cisg
ICAgbWF0Lm1fbWF0cml4WzNdWzNdID0gMS4wZjsKKyAgICAKKyAgICBUcmFuc2Zvcm0zRCBybWF0
KG1hdCk7CisgICAgCisgICAgcnkgLz0gMi4wZjsKKyAgICBzaW5BID0gc2luZihyeSk7CisgICAg
Y29zQSA9IGNvc2YocnkpOworICAgIHNpbkEyID0gc2luQSAqIHNpbkE7CisgICAgCisgICAgbWF0
Lm1fbWF0cml4WzBdWzBdID0gMS4wZiAtIDIuMGYgKiBzaW5BMjsKKyAgICBtYXQubV9tYXRyaXhb
MF1bMV0gPSAwLjBmOworICAgIG1hdC5tX21hdHJpeFswXVsyXSA9IC0yLjBmICogc2luQSAqIGNv
c0E7CisgICAgbWF0Lm1fbWF0cml4WzFdWzBdID0gMC4wZjsKKyAgICBtYXQubV9tYXRyaXhbMV1b
MV0gPSAxLjBmOworICAgIG1hdC5tX21hdHJpeFsxXVsyXSA9IDAuMGY7CisgICAgbWF0Lm1fbWF0
cml4WzJdWzBdID0gMi4wZiAqIHNpbkEgKiBjb3NBOworICAgIG1hdC5tX21hdHJpeFsyXVsxXSA9
IDAuMGY7CisgICAgbWF0Lm1fbWF0cml4WzJdWzJdID0gMS4wZiAtIDIuMGYgKiBzaW5BMjsKKyAg
ICBtYXQubV9tYXRyaXhbMF1bM10gPSBtYXQubV9tYXRyaXhbMV1bM10gPSBtYXQubV9tYXRyaXhb
Ml1bM10gPSAwLjBmOworICAgIG1hdC5tX21hdHJpeFszXVswXSA9IG1hdC5tX21hdHJpeFszXVsx
XSA9IG1hdC5tX21hdHJpeFszXVsyXSA9IDAuMGY7CisgICAgbWF0Lm1fbWF0cml4WzNdWzNdID0g
MS4wZjsKKyAgICAKKyAgICBybWF0Lm11bHRMZWZ0KG1hdCk7CisKKyAgICByeiAvPSAyLjBmOwor
ICAgIHNpbkEgPSBzaW5mKHJ6KTsKKyAgICBjb3NBID0gY29zZihyeik7CisgICAgc2luQTIgPSBz
aW5BICogc2luQTsKKyAgICAKKyAgICBtYXQubV9tYXRyaXhbMF1bMF0gPSAxLjBmIC0gMi4wZiAq
IHNpbkEyOworICAgIG1hdC5tX21hdHJpeFswXVsxXSA9IDIuMGYgKiBzaW5BICogY29zQTsKKyAg
ICBtYXQubV9tYXRyaXhbMF1bMl0gPSAwLjBmOworICAgIG1hdC5tX21hdHJpeFsxXVswXSA9IC0y
LjBmICogc2luQSAqIGNvc0E7CisgICAgbWF0Lm1fbWF0cml4WzFdWzFdID0gMS4wZiAtIDIuMGYg
KiBzaW5BMjsKKyAgICBtYXQubV9tYXRyaXhbMV1bMl0gPSAwLjBmOworICAgIG1hdC5tX21hdHJp
eFsyXVswXSA9IDAuMGY7CisgICAgbWF0Lm1fbWF0cml4WzJdWzFdID0gMC4wZjsKKyAgICBtYXQu
bV9tYXRyaXhbMl1bMl0gPSAxLjBmOworICAgIG1hdC5tX21hdHJpeFswXVszXSA9IG1hdC5tX21h
dHJpeFsxXVszXSA9IG1hdC5tX21hdHJpeFsyXVszXSA9IDAuMGY7CisgICAgbWF0Lm1fbWF0cml4
WzNdWzBdID0gbWF0Lm1fbWF0cml4WzNdWzFdID0gbWF0Lm1fbWF0cml4WzNdWzJdID0gMC4wZjsK
KyAgICBtYXQubV9tYXRyaXhbM11bM10gPSAxLjBmOworCisgICAgcm1hdC5tdWx0TGVmdChtYXQp
OworCisgICAgbXVsdExlZnQocm1hdCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitUcmFuc2Zv
cm0zRCYgVHJhbnNmb3JtM0Q6OnRyYW5zbGF0ZShmbG9hdCB0eCwgZmxvYXQgdHkpCit7CisgICAg
VHJhbnNmb3JtM0QgbWF0OworICAgIG1hdC5tX21hdHJpeFszXVswXSA9IHR4OworICAgIG1hdC5t
X21hdHJpeFszXVsxXSA9IHR5OworCisgICAgbXVsdExlZnQobWF0KTsKKyAgICByZXR1cm4gKnRo
aXM7Cit9CisKK1RyYW5zZm9ybTNEJiBUcmFuc2Zvcm0zRDo6dHJhbnNsYXRlM2QoZmxvYXQgdHgs
IGZsb2F0IHR5LCBmbG9hdCB0eikKK3sKKyAgICBUcmFuc2Zvcm0zRCBtYXQ7CisgICAgbWF0Lm1f
bWF0cml4WzNdWzBdID0gdHg7CisgICAgbWF0Lm1fbWF0cml4WzNdWzFdID0gdHk7CisgICAgbWF0
Lm1fbWF0cml4WzNdWzJdID0gdHo7CisKKyAgICBtdWx0TGVmdChtYXQpOworICAgIHJldHVybiAq
dGhpczsKK30KKworVHJhbnNmb3JtM0QmIFRyYW5zZm9ybTNEOjpza2V3KGZsb2F0IHN4LCBmbG9h
dCBzeSkKK3sKKyAgICAvLyBhbmdsZXMgYXJlIGluIGRlZ3JlZXMuIFN3aXRjaCB0byByYWRpYW5z
CisgICAgc3ggPSBkZWcycmFkKHN4KTsKKyAgICBzeSA9IGRlZzJyYWQoc3kpOworICAgIAorICAg
IFRyYW5zZm9ybTNEIG1hdDsKKyAgICBtYXQubV9tYXRyaXhbMF1bMV0gPSB0YW5mKHN5KTsgLy8g
bm90ZSB0aGF0IHRoZSB5IHNoZWFyIGdvZXMgaW4gdGhlIGZpcnN0IHJvdworICAgIG1hdC5tX21h
dHJpeFsxXVswXSA9IHRhbmYoc3gpOyAvLyBhbmQgdGhlIHggc2hlYXIgaW4gdGhlIHNlY29uZCBy
b3cKKworICAgIG11bHRMZWZ0KG1hdCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCitUcmFuc2Zv
cm0zRCYgVHJhbnNmb3JtM0Q6OmFwcGx5UGVyc3BlY3RpdmUoZmxvYXQgcCkKK3sKKyAgICBUcmFu
c2Zvcm0zRCBtYXQ7CisgICAgaWYgKHAgIT0gMCkKKyAgICAgICAgbWF0Lm1fbWF0cml4WzJdWzNd
ID0gLTEvcDsKKworICAgIG11bHRMZWZ0KG1hdCk7CisgICAgcmV0dXJuICp0aGlzOworfQorCisv
LworLy8gbXVsdGlwbGllcyBtYXRyaXggYnkgZ2l2ZW4gbWF0cml4IG9uIHRoZSByaWdodAorLy8K
K1RyYW5zZm9ybTNEICYgCitUcmFuc2Zvcm0zRDo6bXVsdExlZnQoY29uc3QgVHJhbnNmb3JtM0Qm
IG1hdCkKK3sKKyAgICBmbG9hdCB0bXBbNF1bNF07CisgICAgCisgICAgdG1wWzBdWzBdID0gKG1h
dC5tX21hdHJpeFswXVswXSAqIG1fbWF0cml4WzBdWzBdICsgbWF0Lm1fbWF0cml4WzBdWzFdICog
bV9tYXRyaXhbMV1bMF0KKyAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0cml4WzBdWzJdICogbV9t
YXRyaXhbMl1bMF0gKyBtYXQubV9tYXRyaXhbMF1bM10gKiBtX21hdHJpeFszXVswXSk7CisgICAg
dG1wWzBdWzFdID0gKG1hdC5tX21hdHJpeFswXVswXSAqIG1fbWF0cml4WzBdWzFdICsgbWF0Lm1f
bWF0cml4WzBdWzFdICogbV9tYXRyaXhbMV1bMV0KKyAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0
cml4WzBdWzJdICogbV9tYXRyaXhbMl1bMV0gKyBtYXQubV9tYXRyaXhbMF1bM10gKiBtX21hdHJp
eFszXVsxXSk7CisgICAgdG1wWzBdWzJdID0gKG1hdC5tX21hdHJpeFswXVswXSAqIG1fbWF0cml4
WzBdWzJdICsgbWF0Lm1fbWF0cml4WzBdWzFdICogbV9tYXRyaXhbMV1bMl0KKyAgICAgICAgICAg
ICAgICsgbWF0Lm1fbWF0cml4WzBdWzJdICogbV9tYXRyaXhbMl1bMl0gKyBtYXQubV9tYXRyaXhb
MF1bM10gKiBtX21hdHJpeFszXVsyXSk7CisgICAgdG1wWzBdWzNdID0gKG1hdC5tX21hdHJpeFsw
XVswXSAqIG1fbWF0cml4WzBdWzNdICsgbWF0Lm1fbWF0cml4WzBdWzFdICogbV9tYXRyaXhbMV1b
M10KKyAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0cml4WzBdWzJdICogbV9tYXRyaXhbMl1bM10g
KyBtYXQubV9tYXRyaXhbMF1bM10gKiBtX21hdHJpeFszXVszXSk7CisKKyAgICB0bXBbMV1bMF0g
PSAobWF0Lm1fbWF0cml4WzFdWzBdICogbV9tYXRyaXhbMF1bMF0gKyBtYXQubV9tYXRyaXhbMV1b
MV0gKiBtX21hdHJpeFsxXVswXQorICAgICAgICAgICAgICAgKyBtYXQubV9tYXRyaXhbMV1bMl0g
KiBtX21hdHJpeFsyXVswXSArIG1hdC5tX21hdHJpeFsxXVszXSAqIG1fbWF0cml4WzNdWzBdKTsK
KyAgICB0bXBbMV1bMV0gPSAobWF0Lm1fbWF0cml4WzFdWzBdICogbV9tYXRyaXhbMF1bMV0gKyBt
YXQubV9tYXRyaXhbMV1bMV0gKiBtX21hdHJpeFsxXVsxXQorICAgICAgICAgICAgICAgKyBtYXQu
bV9tYXRyaXhbMV1bMl0gKiBtX21hdHJpeFsyXVsxXSArIG1hdC5tX21hdHJpeFsxXVszXSAqIG1f
bWF0cml4WzNdWzFdKTsKKyAgICB0bXBbMV1bMl0gPSAobWF0Lm1fbWF0cml4WzFdWzBdICogbV9t
YXRyaXhbMF1bMl0gKyBtYXQubV9tYXRyaXhbMV1bMV0gKiBtX21hdHJpeFsxXVsyXQorICAgICAg
ICAgICAgICAgKyBtYXQubV9tYXRyaXhbMV1bMl0gKiBtX21hdHJpeFsyXVsyXSArIG1hdC5tX21h
dHJpeFsxXVszXSAqIG1fbWF0cml4WzNdWzJdKTsKKyAgICB0bXBbMV1bM10gPSAobWF0Lm1fbWF0
cml4WzFdWzBdICogbV9tYXRyaXhbMF1bM10gKyBtYXQubV9tYXRyaXhbMV1bMV0gKiBtX21hdHJp
eFsxXVszXQorICAgICAgICAgICAgICAgKyBtYXQubV9tYXRyaXhbMV1bMl0gKiBtX21hdHJpeFsy
XVszXSArIG1hdC5tX21hdHJpeFsxXVszXSAqIG1fbWF0cml4WzNdWzNdKTsKKworICAgIHRtcFsy
XVswXSA9IChtYXQubV9tYXRyaXhbMl1bMF0gKiBtX21hdHJpeFswXVswXSArIG1hdC5tX21hdHJp
eFsyXVsxXSAqIG1fbWF0cml4WzFdWzBdCisgICAgICAgICAgICAgICArIG1hdC5tX21hdHJpeFsy
XVsyXSAqIG1fbWF0cml4WzJdWzBdICsgbWF0Lm1fbWF0cml4WzJdWzNdICogbV9tYXRyaXhbM11b
MF0pOworICAgIHRtcFsyXVsxXSA9IChtYXQubV9tYXRyaXhbMl1bMF0gKiBtX21hdHJpeFswXVsx
XSArIG1hdC5tX21hdHJpeFsyXVsxXSAqIG1fbWF0cml4WzFdWzFdCisgICAgICAgICAgICAgICAr
IG1hdC5tX21hdHJpeFsyXVsyXSAqIG1fbWF0cml4WzJdWzFdICsgbWF0Lm1fbWF0cml4WzJdWzNd
ICogbV9tYXRyaXhbM11bMV0pOworICAgIHRtcFsyXVsyXSA9IChtYXQubV9tYXRyaXhbMl1bMF0g
KiBtX21hdHJpeFswXVsyXSArIG1hdC5tX21hdHJpeFsyXVsxXSAqIG1fbWF0cml4WzFdWzJdCisg
ICAgICAgICAgICAgICArIG1hdC5tX21hdHJpeFsyXVsyXSAqIG1fbWF0cml4WzJdWzJdICsgbWF0
Lm1fbWF0cml4WzJdWzNdICogbV9tYXRyaXhbM11bMl0pOworICAgIHRtcFsyXVszXSA9IChtYXQu
bV9tYXRyaXhbMl1bMF0gKiBtX21hdHJpeFswXVszXSArIG1hdC5tX21hdHJpeFsyXVsxXSAqIG1f
bWF0cml4WzFdWzNdCisgICAgICAgICAgICAgICArIG1hdC5tX21hdHJpeFsyXVsyXSAqIG1fbWF0
cml4WzJdWzNdICsgbWF0Lm1fbWF0cml4WzJdWzNdICogbV9tYXRyaXhbM11bM10pOworCisgICAg
dG1wWzNdWzBdID0gKG1hdC5tX21hdHJpeFszXVswXSAqIG1fbWF0cml4WzBdWzBdICsgbWF0Lm1f
bWF0cml4WzNdWzFdICogbV9tYXRyaXhbMV1bMF0KKyAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0
cml4WzNdWzJdICogbV9tYXRyaXhbMl1bMF0gKyBtYXQubV9tYXRyaXhbM11bM10gKiBtX21hdHJp
eFszXVswXSk7CisgICAgdG1wWzNdWzFdID0gKG1hdC5tX21hdHJpeFszXVswXSAqIG1fbWF0cml4
WzBdWzFdICsgbWF0Lm1fbWF0cml4WzNdWzFdICogbV9tYXRyaXhbMV1bMV0KKyAgICAgICAgICAg
ICAgICsgbWF0Lm1fbWF0cml4WzNdWzJdICogbV9tYXRyaXhbMl1bMV0gKyBtYXQubV9tYXRyaXhb
M11bM10gKiBtX21hdHJpeFszXVsxXSk7CisgICAgdG1wWzNdWzJdID0gKG1hdC5tX21hdHJpeFsz
XVswXSAqIG1fbWF0cml4WzBdWzJdICsgbWF0Lm1fbWF0cml4WzNdWzFdICogbV9tYXRyaXhbMV1b
Ml0KKyAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0cml4WzNdWzJdICogbV9tYXRyaXhbMl1bMl0g
KyBtYXQubV9tYXRyaXhbM11bM10gKiBtX21hdHJpeFszXVsyXSk7CisgICAgdG1wWzNdWzNdID0g
KG1hdC5tX21hdHJpeFszXVswXSAqIG1fbWF0cml4WzBdWzNdICsgbWF0Lm1fbWF0cml4WzNdWzFd
ICogbV9tYXRyaXhbMV1bM10KKyAgICAgICAgICAgICAgICsgbWF0Lm1fbWF0cml4WzNdWzJdICog
bV9tYXRyaXhbMl1bM10gKyBtYXQubV9tYXRyaXhbM11bM10gKiBtX21hdHJpeFszXVszXSk7Cisg
ICAgCisgICAgc2V0TWF0cml4KChmbG9hdCopIHRtcCk7CisgICAgcmV0dXJuICp0aGlzOworfQor
Cit2b2lkCitUcmFuc2Zvcm0zRDo6bXVsdFZlY01hdHJpeChmbG9hdCBpbngsIGZsb2F0IGlueSwg
ZmxvYXQmIG91dHgsIGZsb2F0JiBvdXR5KSBjb25zdAoreworICAgIG91dHggPSBtX21hdHJpeFsz
XVswXSArIGlueCAqIG1fbWF0cml4WzBdWzBdICsgaW55ICogbV9tYXRyaXhbMV1bMF07CisgICAg
b3V0eSA9IG1fbWF0cml4WzNdWzFdICsgaW54ICogbV9tYXRyaXhbMF1bMV0gKyBpbnkgKiBtX21h
dHJpeFsxXVsxXTsKKyAgICBmbG9hdCB3ID0gbV9tYXRyaXhbM11bM10gKyBpbnggKiBtX21hdHJp
eFswXVszXSArIGlueSAqIG1fbWF0cml4WzFdWzNdOworICAgIGlmICh3ICE9IDEgJiYgdyAhPSAw
KSB7CisgICAgICAgIG91dHggLz0gdzsKKyAgICAgICAgb3V0eSAvPSB3OworICAgIH0KK30KKwor
Ly8KKy8vIHJldHVybnMgaW52ZXJzZSBvZiBtYXRyaXgKKy8vCitUcmFuc2Zvcm0zRAorVHJhbnNm
b3JtM0Q6OmludmVyc2UoKSBjb25zdCAKK3sKKyAgICBUcmFuc2Zvcm0zRCBpbnZNYXQ7CisgICAg
CisgICAgYm9vbCBpbnZlcnRlZCA9IFdlYkNvcmU6OmludmVyc2UoKGZsb2F0KCopWzRdKSBtX21h
dHJpeCwgKGZsb2F0KCopWzRdKSBpbnZNYXQubV9tYXRyaXgpOworICAgIGlmICghaW52ZXJ0ZWQp
IHsKKyAgICAgICAgLy8gRklYTUU6IGluZGljYXRlIGZhaWx1cmUgc29tZWhvdworICAgICAgICBy
ZXR1cm4gVHJhbnNmb3JtM0QoKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGludk1hdDsKK30K
KworQWZmaW5lVHJhbnNmb3JtCitUcmFuc2Zvcm0zRDo6YWZmaW5lVHJhbnNmb3JtKCkgY29uc3QK
K3sKKyAgICAvLyBOb3RlIHRoYXQgdGhpcyB0aHJvd3MgYXdheSB0aGUgei1heGlzCisgICAgLy8g
RklYTUU6IGluZGljYXRlIHdoZW4gdGhpcyBsb3NlcyBkYXRhIHNvbWVob3cKKyAgICBBZmZpbmVU
cmFuc2Zvcm0gdHJhbnNmb3JtKG1fbWF0cml4WzBdWzBdLCBtX21hdHJpeFswXVsxXSwgbV9tYXRy
aXhbMV1bMF0sIG1fbWF0cml4WzFdWzFdLCBtX21hdHJpeFszXVswXSwgbV9tYXRyaXhbM11bMV0p
OworICAgIHJldHVybiB0cmFuc2Zvcm07Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVHJhbnNmb3JtM0QuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VHJhbnNmb3JtM0QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDRkNDUw
Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9UcmFuc2Zvcm0z
RC5oCkBAIC0wLDAgKzEsMTc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFRyYW5z
Zm9ybTNEX2gKKyNkZWZpbmUgVHJhbnNmb3JtM0RfaAorCisjaW5jbHVkZSAiRmxvYXRQb2ludC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEFmZmluZVRyYW5zZm9ybTsKKworY2xh
c3MgVHJhbnNmb3JtM0QgeworcHVibGljOgorICAgIFRyYW5zZm9ybTNEKCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG1ha2VJZGVudGl0eSgpOyB9
CisgICAgVHJhbnNmb3JtM0QoZmxvYXQgbTExLCBmbG9hdCBtMTIsIGZsb2F0IG0xMywgZmxvYXQg
bTE0LAorICAgICAgICAgICAgICAgIGZsb2F0IG0yMSwgZmxvYXQgbTIyLCBmbG9hdCBtMjMsIGZs
b2F0IG0yNCwKKyAgICAgICAgICAgICAgICBmbG9hdCBtMzEsIGZsb2F0IG0zMiwgZmxvYXQgbTMz
LCBmbG9hdCBtMzQsCisgICAgICAgICAgICAgICAgZmxvYXQgbTQxLCBmbG9hdCBtNDIsIGZsb2F0
IG00MywgZmxvYXQgbTQ0KSAgICAgICAgIHsgc2V0TWF0cml4KG0xMSwgbTEyLCBtMTMsIG0xNCwg
bTIxLCBtMjIsIG0yMywgbTI0LCBtMzEsIG0zMiwgbTMzLCBtMzQsIG00MSwgbTQyLCBtNDMsIG00
NCk7IH0KKyAgICBUcmFuc2Zvcm0zRChjb25zdCBUcmFuc2Zvcm0zRCYgdCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeyAqdGhpcyA9IHQ7IH0KKworICAgIFRyYW5zZm9ybTNEKGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdCk7CisgICAgCisgICAgVHJhbnNmb3JtM0QgJm9wZXJhdG9yID0o
Y29uc3QgVHJhbnNmb3JtM0QgJnQpCisgICAgeworICAgICAgICBzZXRNYXRyaXgoKGZsb2F0Kikg
dC5tX21hdHJpeCk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB2b2lkIHNl
dE1hdHJpeChmbG9hdCBtMTEsIGZsb2F0IG0xMiwgZmxvYXQgbTEzLCBmbG9hdCBtMTQsCisgICAg
ICAgICAgICAgICAgICAgIGZsb2F0IG0yMSwgZmxvYXQgbTIyLCBmbG9hdCBtMjMsIGZsb2F0IG0y
NCwKKyAgICAgICAgICAgICAgICAgICAgZmxvYXQgbTMxLCBmbG9hdCBtMzIsIGZsb2F0IG0zMywg
ZmxvYXQgbTM0LAorICAgICAgICAgICAgICAgICAgICBmbG9hdCBtNDEsIGZsb2F0IG00MiwgZmxv
YXQgbTQzLCBmbG9hdCBtNDQpCisgICAgeworICAgICAgICBtX21hdHJpeFswXVswXSA9IG0xMTsg
bV9tYXRyaXhbMF1bMV0gPSBtMTI7IG1fbWF0cml4WzBdWzJdID0gbTEzOyBtX21hdHJpeFswXVsz
XSA9IG0xNDsgCisgICAgICAgIG1fbWF0cml4WzFdWzBdID0gbTIxOyBtX21hdHJpeFsxXVsxXSA9
IG0yMjsgbV9tYXRyaXhbMV1bMl0gPSBtMjM7IG1fbWF0cml4WzFdWzNdID0gbTI0OyAKKyAgICAg
ICAgbV9tYXRyaXhbMl1bMF0gPSBtMzE7IG1fbWF0cml4WzJdWzFdID0gbTMyOyBtX21hdHJpeFsy
XVsyXSA9IG0zMzsgbV9tYXRyaXhbMl1bM10gPSBtMzQ7IAorICAgICAgICBtX21hdHJpeFszXVsw
XSA9IG00MTsgbV9tYXRyaXhbM11bMV0gPSBtNDI7IG1fbWF0cml4WzNdWzJdID0gbTQzOyBtX21h
dHJpeFszXVszXSA9IG00NDsKKyAgICB9CisgICAgCisgICAgVHJhbnNmb3JtM0QmICAgIG1ha2VJ
ZGVudGl0eSgpICB7IHNldE1hdHJpeCgxLDAsMCwwLCAwLDEsMCwwLCAwLDAsMSwwLCAwLDAsMCwx
KTsgcmV0dXJuICp0aGlzOyB9CisgICAgYm9vbCBpc0lkZW50aXR5KCkgY29uc3QgICAgIHsgcmV0
dXJuICp0aGlzID09IFRyYW5zZm9ybTNEKCk7IH0KKyAgICAKKyAgICBmbG9hdCBtMTEoKSBjb25z
dCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMF1bMF07IH0KKyAgICBmbG9hdCBtMTIoKSBj
b25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMF1bMV07IH0KKyAgICBmbG9hdCBtMTMo
KSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMF1bMl07IH0KKyAgICBmbG9hdCBt
MTQoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMF1bM107IH0KKyAgICBmbG9h
dCBtMjEoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMV1bMF07IH0KKyAgICBm
bG9hdCBtMjIoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMV1bMV07IH0KKyAg
ICBmbG9hdCBtMjMoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMV1bMl07IH0K
KyAgICBmbG9hdCBtMjQoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMV1bM107
IH0KKyAgICBmbG9hdCBtMzEoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhbMl1b
MF07IH0KKyAgICBmbG9hdCBtMzIoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRyaXhb
Ml1bMV07IH0KKyAgICBmbG9hdCBtMzMoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9tYXRy
aXhbMl1bMl07IH0KKyAgICBmbG9hdCBtMzQoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4gbV9t
YXRyaXhbMl1bM107IH0KKyAgICBmbG9hdCBtNDEoKSBjb25zdCAgICAgICAgICAgeyByZXR1cm4g
bV9tYXRyaXhbM11bMF07IH0KKyAgICBmbG9hdCBtNDIoKSBjb25zdCAgICAgICAgICAgeyByZXR1
cm4gbV9tYXRyaXhbM11bMV07IH0KKyAgICBmbG9hdCBtNDMoKSBjb25zdCAgICAgICAgICAgeyBy
ZXR1cm4gbV9tYXRyaXhbM11bMl07IH0KKyAgICBmbG9hdCBtNDQoKSBjb25zdCAgICAgICAgICAg
eyByZXR1cm4gbV9tYXRyaXhbM11bM107IH0KKworICAgIHZvaWQgc2V0TTExKGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzBdWzBdID0gZjsgfQorICAgIHZvaWQgc2V0TTEyKGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzBdWzFdID0gZjsgfQorICAgIHZvaWQgc2V0TTEzKGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzBdWzJdID0gZjsgfQorICAgIHZvaWQgc2V0TTE0KGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzBdWzNdID0gZjsgfQorICAgIHZvaWQgc2V0TTIxKGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzFdWzBdID0gZjsgfQorICAgIHZvaWQgc2V0TTIyKGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzFdWzFdID0gZjsgfQorICAgIHZvaWQgc2V0TTIzKGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzFdWzJdID0gZjsgfQorICAgIHZvaWQgc2V0TTI0KGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzFdWzNdID0gZjsgfQorICAgIHZvaWQgc2V0TTMxKGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzJdWzBdID0gZjsgfQorICAgIHZvaWQgc2V0TTMyKGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzJdWzFdID0gZjsgfQorICAgIHZvaWQgc2V0TTMzKGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzJdWzJdID0gZjsgfQorICAgIHZvaWQgc2V0TTM0KGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzJdWzNdID0gZjsgfQorICAgIHZvaWQgc2V0TTQxKGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzNdWzBdID0gZjsgfQorICAgIHZvaWQgc2V0TTQyKGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzNdWzFdID0gZjsgfQorICAgIHZvaWQgc2V0TTQzKGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzNdWzJdID0gZjsgfQorICAgIHZvaWQgc2V0TTQ0KGZsb2F0IGYpICAg
ICAgICB7IG1fbWF0cml4WzNdWzNdID0gZjsgfQorICAgIAorICAgIFRyYW5zZm9ybTNEJiBzY2Fs
ZShmbG9hdCBzeCwgZmxvYXQgc3kpOworICAgIFRyYW5zZm9ybTNEJiBzY2FsZTNkKGZsb2F0IHN4
LCBmbG9hdCBzeSwgZmxvYXQgc3opOworICAgIAorICAgIC8vIGFuZ2xlcyBhcmUgaW4gZGVncmVl
cy4geCx5LHogbXVzdCBmb3JtIGEgdW5pdCB2ZWN0b3IgKGxlbmd0aCAxKSBvciByZXN1bHRzIGFy
ZSB1bmRlZmluZWQKKyAgICBUcmFuc2Zvcm0zRCYgcm90YXRlM2QoZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgeiwgZmxvYXQgYW5nbGUpOworICAgIAorICAgIC8vIGFuZ2xlcyBhcmUgaW4gZGVncmVl
cy4gCisgICAgVHJhbnNmb3JtM0QmIHJvdGF0ZTNkKGZsb2F0IHJ4LCBmbG9hdCByeSwgZmxvYXQg
cnopOworICAgIFRyYW5zZm9ybTNEJiB0cmFuc2xhdGUoZmxvYXQgdHgsIGZsb2F0IHR5KTsKKyAg
ICBUcmFuc2Zvcm0zRCYgdHJhbnNsYXRlM2QoZmxvYXQgdHgsIGZsb2F0IHR5LCBmbG9hdCB0eik7
CisgICAgVHJhbnNmb3JtM0QmIHNrZXcoZmxvYXQgc3gsIGZsb2F0IHN5KTsKKyAgICBUcmFuc2Zv
cm0zRCYgYXBwbHlQZXJzcGVjdGl2ZShmbG9hdCBwKTsKKyAgICAKKyAgICBib29sIGhhc1BlcnNw
ZWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9tYXRyaXhbMl1bM10gIT0gMC4wZjsgfQorICAgIAor
ICAgIC8vIHRoaXMgPSBtYXQgKiB0aGlzCisgICAgVHJhbnNmb3JtM0QmIG11bHRMZWZ0KGNvbnN0
IFRyYW5zZm9ybTNEJiBtYXQpOworICAgIAorICAgIC8vIG11bHRpcGx5IHBhc3NlZCAyRCBwb2lu
dCBieSBtYXRyaXggKGFzc3VtZSB6PTApCisgICAgdm9pZCBtdWx0VmVjTWF0cml4KGZsb2F0IHgs
IGZsb2F0IHksIGZsb2F0JiBkc3RYLCBmbG9hdCYgZHN0WSkgY29uc3Q7CisgICAgCisgICAgLy8g
cmV0dXJuIHRoZSBpbnZlcnNlIG9mIG1hdHJpeAorICAgIFRyYW5zZm9ybTNEIGludmVyc2UoKSBj
b25zdDsKKworICAgIC8vIHJldHVybiBhbiBhZmZpbmUgdHJhbnNmb3JtIChsb3NzeSEpCisgICAg
QWZmaW5lVHJhbnNmb3JtIGFmZmluZVRyYW5zZm9ybSgpIGNvbnN0OworICAgIAorICAgIC8vRXF1
YWxpdHkgY29tcGFyaXNvbiBvcGVyYXRvcgorICAgIGZyaWVuZCBib29sIG9wZXJhdG9yID09KGNv
bnN0IFRyYW5zZm9ybTNEICZtMSwgY29uc3QgVHJhbnNmb3JtM0QgJm0yKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIChtMS5tX21hdHJpeFswXVswXSA9PSBtMi5tX21hdHJpeFswXVswXSAmJgorICAg
ICAgICAgICAgICAgIG0xLm1fbWF0cml4WzBdWzFdID09IG0yLm1fbWF0cml4WzBdWzFdICYmCisg
ICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbMF1bMl0gPT0gbTIubV9tYXRyaXhbMF1bMl0gJiYK
KyAgICAgICAgICAgICAgICBtMS5tX21hdHJpeFswXVszXSA9PSBtMi5tX21hdHJpeFswXVszXSAm
JgorICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4WzFdWzBdID09IG0yLm1fbWF0cml4WzFdWzBd
ICYmCisgICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbMV1bMV0gPT0gbTIubV9tYXRyaXhbMV1b
MV0gJiYKKyAgICAgICAgICAgICAgICBtMS5tX21hdHJpeFsxXVsyXSA9PSBtMi5tX21hdHJpeFsx
XVsyXSAmJgorICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4WzFdWzNdID09IG0yLm1fbWF0cml4
WzFdWzNdICYmCisgICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbMl1bMF0gPT0gbTIubV9tYXRy
aXhbMl1bMF0gJiYKKyAgICAgICAgICAgICAgICBtMS5tX21hdHJpeFsyXVsxXSA9PSBtMi5tX21h
dHJpeFsyXVsxXSAmJgorICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4WzJdWzJdID09IG0yLm1f
bWF0cml4WzJdWzJdICYmCisgICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbMl1bM10gPT0gbTIu
bV9tYXRyaXhbMl1bM10gJiYKKyAgICAgICAgICAgICAgICBtMS5tX21hdHJpeFszXVswXSA9PSBt
Mi5tX21hdHJpeFszXVswXSAmJgorICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4WzNdWzFdID09
IG0yLm1fbWF0cml4WzNdWzFdICYmCisgICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbM11bMl0g
PT0gbTIubV9tYXRyaXhbM11bMl0gJiYKKyAgICAgICAgICAgICAgICBtMS5tX21hdHJpeFszXVsz
XSA9PSBtMi5tX21hdHJpeFszXVszXSk7CisgICAgfQorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0
b3IgIT0oY29uc3QgVHJhbnNmb3JtM0QgJm0xLCBjb25zdCBUcmFuc2Zvcm0zRCAmbTIpCisgICAg
eyByZXR1cm4gIShtMSA9PSBtMik7IH0KKworICAgIGZyaWVuZCBib29sIG9wZXJhdG9yIDwoY29u
c3QgVHJhbnNmb3JtM0QgJm0xLCBjb25zdCBUcmFuc2Zvcm0zRCAmbTIpCisgICAgeworICAgICAg
ICByZXR1cm4gKG0xLm1fbWF0cml4WzBdWzBdIDwgbTIubV9tYXRyaXhbMF1bMF0gJiYKKyAgICAg
ICAgICAgICAgICBtMS5tX21hdHJpeFswXVsxXSA8IG0yLm1fbWF0cml4WzBdWzFdICYmCisgICAg
ICAgICAgICAgICAgbTEubV9tYXRyaXhbMF1bMl0gPCBtMi5tX21hdHJpeFswXVsyXSAmJgorICAg
ICAgICAgICAgICAgIG0xLm1fbWF0cml4WzBdWzNdIDwgbTIubV9tYXRyaXhbMF1bM10gJiYKKyAg
ICAgICAgICAgICAgICBtMS5tX21hdHJpeFsxXVswXSA8IG0yLm1fbWF0cml4WzFdWzBdICYmCisg
ICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbMV1bMV0gPCBtMi5tX21hdHJpeFsxXVsxXSAmJgor
ICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4WzFdWzJdIDwgbTIubV9tYXRyaXhbMV1bMl0gJiYK
KyAgICAgICAgICAgICAgICBtMS5tX21hdHJpeFsxXVszXSA8IG0yLm1fbWF0cml4WzFdWzNdICYm
CisgICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbMl1bMF0gPCBtMi5tX21hdHJpeFsyXVswXSAm
JgorICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4WzJdWzFdIDwgbTIubV9tYXRyaXhbMl1bMV0g
JiYKKyAgICAgICAgICAgICAgICBtMS5tX21hdHJpeFsyXVsyXSA8IG0yLm1fbWF0cml4WzJdWzJd
ICYmCisgICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbMl1bM10gPCBtMi5tX21hdHJpeFsyXVsz
XSAmJgorICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4WzNdWzBdIDwgbTIubV9tYXRyaXhbM11b
MF0gJiYKKyAgICAgICAgICAgICAgICBtMS5tX21hdHJpeFszXVsxXSA8IG0yLm1fbWF0cml4WzNd
WzFdICYmCisgICAgICAgICAgICAgICAgbTEubV9tYXRyaXhbM11bMl0gPCBtMi5tX21hdHJpeFsz
XVsyXSAmJgorICAgICAgICAgICAgICAgIG0xLm1fbWF0cml4WzNdWzNdIDwgbTIubV9tYXRyaXhb
M11bM10pOworICAgIH0KKyAgICAgCitwcml2YXRlOgorICAgIHZvaWQgc2V0TWF0cml4KGNvbnN0
IGZsb2F0KiBtKSAgICAgICAgeyBpZiAobSAmJiBtICE9IChmbG9hdCopIG1fbWF0cml4KSBtZW1j
cHkobV9tYXRyaXgsIG0sIDE2KnNpemVvZihmbG9hdCkpOyB9CisgICAgCisgICAgZmxvYXQgICBt
X21hdHJpeFs0XVs0XTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFRyYW5zZm9ybTNEX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA1OTNjNmM1Li5j
ZTRhMmY1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yNTgsOCArMjU4LDkgQEAg
dm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlVHJhbnNmb3JtKCkKICAgICB9CiAgICAgCiAgICAgaWYg
KGhhc1RyYW5zZm9ybSkgewotICAgICAgICBtX3RyYW5zZm9ybS0+cmVzZXQoKTsKLSAgICAgICAg
cmVuZGVyZXIoKS0+c3R5bGUoKS0+YXBwbHlUcmFuc2Zvcm0oKm1fdHJhbnNmb3JtLCByZW5kZXJl
cigpLT5ib3JkZXJCb3goKS5zaXplKCkpOworICAgICAgICBUcmFuc2Zvcm0zRCB0cmFuc2Zvcm0z
RDsKKyAgICAgICAgcmVuZGVyZXIoKS0+c3R5bGUoKS0+YXBwbHlUcmFuc2Zvcm0odHJhbnNmb3Jt
M0QsIHJlbmRlcmVyKCktPmJvcmRlckJveCgpLnNpemUoKSwgdHJ1ZSk7CisgICAgICAgIG1fdHJh
bnNmb3JtLnNldChuZXcgQWZmaW5lVHJhbnNmb3JtKHRyYW5zZm9ybTNELmFmZmluZVRyYW5zZm9y
bSgpKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAK
aW5kZXggOTA2MzhkMS4uMDY5NjRhOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlLmNwcApAQCAtNDEsNiArNDEsMTIgQEAgc3RhdGljIGJvb2wgaW1hZ2VzRXF1aXZhbGVudChT
dHlsZUltYWdlKiBpbWFnZTEsIFN0eWxlSW1hZ2UqIGltYWdlMikKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorLy8gY29tcGFyZSBmbG9hdGluZyBwb2ludHMsIHRha2luZyBuYW4gaW50byBhY2NvdW50
CitzdGF0aWMgaW5saW5lIGJvb2wgZmxvYXRpbmdQb2ludFZhbHVlc0VxdWFsKGZsb2F0IGEsIGZs
b2F0IGIpCit7CisgICAgcmV0dXJuIChpc25hbihhKSAmJiBpc25hbihiKSkgfHwgKGEgPT0gYik7
Cit9CisKIGJvb2wgTmluZVBpZWNlSW1hZ2U6Om9wZXJhdG9yPT0oY29uc3QgTmluZVBpZWNlSW1h
Z2UmIG8pIGNvbnN0CiB7CiAgICAgcmV0dXJuIGltYWdlc0VxdWl2YWxlbnQobV9pbWFnZS5nZXQo
KSwgby5tX2ltYWdlLmdldCgpKSAmJiBtX3NsaWNlcyA9PSBvLm1fc2xpY2VzICYmIG1faG9yaXpv
bnRhbFJ1bGUgPT0gby5tX2hvcml6b250YWxSdWxlICYmCkBAIC02MTMsMTIgKzYxOSwxNCBAQCBU
cmFuc2Zvcm1PcGVyYXRpb24qIFNrZXdUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRy
YW5zZm9ybU9wZXJhdGlvbiogZnJvbQogICAgICAgICByZXR1cm4gdGhpczsKICAgICAKICAgICBp
ZiAoYmxlbmRUb0lkZW50aXR5KQotICAgICAgICByZXR1cm4gbmV3IFNrZXdUcmFuc2Zvcm1PcGVy
YXRpb24obV9hbmdsZVggLSBtX2FuZ2xlWCAqIHByb2dyZXNzLCBtX2FuZ2xlWSAtIG1fYW5nbGVZ
ICogcHJvZ3Jlc3MpOworICAgICAgICByZXR1cm4gbmV3IFNrZXdUcmFuc2Zvcm1PcGVyYXRpb24o
bV9hbmdsZVggLSBtX2FuZ2xlWCAqIHByb2dyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbV9hbmdsZVkgLSBtX2FuZ2xlWSAqIHByb2dyZXNzKTsKICAgICAK
ICAgICBjb25zdCBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tT3AgPSBzdGF0aWNfY2FzdDxj
b25zdCBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKj4oZnJvbSk7CiAgICAgZG91YmxlIGZyb21Bbmds
ZVggPSBmcm9tT3AgPyBmcm9tT3AtPm1fYW5nbGVYIDogMDsKICAgICBkb3VibGUgZnJvbUFuZ2xl
WSA9IGZyb21PcCA/IGZyb21PcC0+bV9hbmdsZVkgOiAwOwotICAgIHJldHVybiBuZXcgU2tld1Ry
YW5zZm9ybU9wZXJhdGlvbihmcm9tQW5nbGVYICsgKG1fYW5nbGVYIC0gZnJvbUFuZ2xlWCkgKiBw
cm9ncmVzcywgZnJvbUFuZ2xlWSArIChtX2FuZ2xlWSAtIGZyb21BbmdsZVkpICogcHJvZ3Jlc3Mp
OworICAgIHJldHVybiBuZXcgU2tld1RyYW5zZm9ybU9wZXJhdGlvbihmcm9tQW5nbGVYICsgKG1f
YW5nbGVYIC0gZnJvbUFuZ2xlWCkgKiBwcm9ncmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZnJvbUFuZ2xlWSArIChtX2FuZ2xlWSAtIGZyb21BbmdsZVkpICogcHJv
Z3Jlc3MpOwogfQogCiBUcmFuc2Zvcm1PcGVyYXRpb24qIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbjo6YmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jl
c3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5KQpAQCAtNjQxLDI3ICs2NDksMzMgQEAgVHJhbnNmb3Jt
T3BlcmF0aW9uKiBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbiogZnIKICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgCiAgICAgaWYgKGJsZW5k
VG9JZGVudGl0eSkKLSAgICAgICAgcmV0dXJuIG5ldyBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24o
bV9hICogKDEuIC0gcHJvZ3Jlc3MpICsgcHJvZ3Jlc3MsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fYiAqICgxLiAtIHByb2dyZXNzKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9jICogKDEuIC0gcHJvZ3Jlc3MpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2QgKiAoMS4gLSBw
cm9ncmVzcykgKyBwcm9ncmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9lICogKDEuIC0gcHJvZ3Jlc3MpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtX2YgKiAoMS4gLSBwcm9ncmVzcykpOworICAgICAgICByZXR1
cm4gbmV3IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbigoZmxvYXQpIChtX21hdHJpeC5hKCkgKiAo
MS4gLSBwcm9ncmVzcykgKyBwcm9ncmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChmbG9hdCkgKG1fbWF0cml4LmIoKSAqICgxLiAtIHByb2dyZXNzKSks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCkgKG1f
bWF0cml4LmMoKSAqICgxLiAtIHByb2dyZXNzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChmbG9hdCkgKG1fbWF0cml4LmQoKSAqICgxLiAtIHByb2dyZXNz
KSArIHByb2dyZXNzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGZsb2F0KSAobV9tYXRyaXguZSgpICogKDEuIC0gcHJvZ3Jlc3MpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZsb2F0KSAobV9tYXRyaXguZigpICog
KDEuIC0gcHJvZ3Jlc3MpKSk7CiAKICAgICBjb25zdCBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24q
IGZyb21PcCA9IHN0YXRpY19jYXN0PGNvbnN0IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbio+KGZy
b20pOwotICAgIGRvdWJsZSBmcm9tQSA9IGZyb21PcCA/IGZyb21PcC0+bV9hIDogMS47Ci0gICAg
ZG91YmxlIGZyb21CID0gZnJvbU9wID8gZnJvbU9wLT5tX2IgOiAwOwotICAgIGRvdWJsZSBmcm9t
QyA9IGZyb21PcCA/IGZyb21PcC0+bV9jIDogMDsKLSAgICBkb3VibGUgZnJvbUQgPSBmcm9tT3Ag
PyBmcm9tT3AtPm1fZCA6IDEuOwotICAgIGRvdWJsZSBmcm9tRSA9IGZyb21PcCA/IGZyb21PcC0+
bV9lIDogMDsKLSAgICBkb3VibGUgZnJvbUYgPSBmcm9tT3AgPyBmcm9tT3AtPm1fZiA6IDA7Ci0g
ICAgCi0gICAgcmV0dXJuIG5ldyBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24oZnJvbUEgKyAobV9h
IC0gZnJvbUEpICogcHJvZ3Jlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZnJvbUIgKyAobV9iIC0gZnJvbUIpICogcHJvZ3Jlc3MsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnJvbUMgKyAobV9jIC0gZnJvbUMpICogcHJvZ3Jlc3Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbUQgKyAobV9kIC0g
ZnJvbUQpICogcHJvZ3Jlc3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJvbUUgKyAobV9lIC0gZnJvbUUpICogcHJvZ3Jlc3MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZnJvbUYgKyAobV9mIC0gZnJvbUYpICogcHJvZ3Jlc3MpOwor
ICAgIGRvdWJsZSBmcm9tQSA9IGZyb21PcCA/IGZyb21PcC0+bV9tYXRyaXguYSgpIDogMS47Cisg
ICAgZG91YmxlIGZyb21CID0gZnJvbU9wID8gZnJvbU9wLT5tX21hdHJpeC5iKCkgOiAwOworICAg
IGRvdWJsZSBmcm9tQyA9IGZyb21PcCA/IGZyb21PcC0+bV9tYXRyaXguYygpIDogMDsKKyAgICBk
b3VibGUgZnJvbUQgPSBmcm9tT3AgPyBmcm9tT3AtPm1fbWF0cml4LmQoKSA6IDEuOworICAgIGRv
dWJsZSBmcm9tRSA9IGZyb21PcCA/IGZyb21PcC0+bV9tYXRyaXguZSgpIDogMDsKKyAgICBkb3Vi
bGUgZnJvbUYgPSBmcm9tT3AgPyBmcm9tT3AtPm1fbWF0cml4LmYoKSA6IDA7CisKKyAgICByZXR1
cm4gbmV3IE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbigoZmxvYXQpIChmcm9tQSArIChtX21hdHJp
eC5hKCkgLSBmcm9tQSkgKiBwcm9ncmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGZsb2F0KSAoZnJvbUIgKyAobV9tYXRyaXguYigpIC0gZnJvbUIpICogcHJv
Z3Jlc3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCkg
KGZyb21DICsgKG1fbWF0cml4LmMoKSAtIGZyb21DKSAqIHByb2dyZXNzKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmxvYXQpIChmcm9tRCArIChtX21hdHJpeC5k
KCkgLSBmcm9tRCkgKiBwcm9ncmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGZsb2F0KSAoZnJvbUUgKyAobV9tYXRyaXguZSgpIC0gZnJvbUUpICogcHJvZ3Jl
c3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbG9hdCkgKGZy
b21GICsgKG1fbWF0cml4LmYoKSAtIGZyb21GKSAqIHByb2dyZXNzKSk7Cit9CisKK1RyYW5zZm9y
bU9wZXJhdGlvbiogTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmJsZW5kKGNvbnN0IFRyYW5z
Zm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0
eSkKK3sKKyAgICAvLyBUT0RPOiBDRk0gLSBMZXQncyBub3Qgd29ycnkgYWJvdXQgZGlyZWN0IGJs
ZW5kIG9mIDNEIG1hdHJpY2VzIGp1c3QgeWV0CisgICAgcmV0dXJuIDA7CiB9CiAKIFRyYW5zaXRp
b246OlRyYW5zaXRpb24oKQpAQCAtMTY5Niw3ICsxNzEwLDcgQEAgdm9pZCBDb250ZW50RGF0YTo6
Y2xlYXIoKQogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTdHlsZTo6YXBwbHlUcmFuc2Zvcm0oQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNpemUpIGNv
bnN0Cit2b2lkIFJlbmRlclN0eWxlOjphcHBseVRyYW5zZm9ybShUcmFuc2Zvcm0zRCYgdHJhbnNm
b3JtLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplLCBib29sIGNoZWNrQXBwbHlUcmFuc2Zv
cm1PcmlnaW4pIGNvbnN0CiB7CiAgICAgLy8gdHJhbnNmb3JtLW9yaWdpbiBicmFja2V0cyB0aGUg
dHJhbnNmb3JtIHdpdGggdHJhbnNsYXRlIG9wZXJhdGlvbnMuCiAgICAgLy8gT3B0aW1pemUgZm9y
IHRoZSBjYXNlIHdoZXJlIHRoZSBvbmx5IHRyYW5zZm9ybSBpcyBhIHRyYW5zbGF0aW9uLCBzaW5j
ZSB0aGUgdHJhbnNmb3JtLW9yaWdpbiBpcyBpcnJlbGV2YW50CkBAIC0xNzA0LDEwICsxNzE4LDEy
IEBAIHZvaWQgUmVuZGVyU3R5bGU6OmFwcGx5VHJhbnNmb3JtKEFmZmluZVRyYW5zZm9ybSYgdHJh
bnNmb3JtLCBjb25zdCBJbnRTaXplJiBib3JkCiAgICAgYm9vbCBhcHBseVRyYW5zZm9ybU9yaWdp
biA9IGZhbHNlOwogICAgIHVuc2lnbmVkIHMgPSByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV90cmFu
c2Zvcm0tPm1fb3BlcmF0aW9ucy5zaXplKCk7CiAgICAgdW5zaWduZWQgaTsKLSAgICBmb3IgKGkg
PSAwOyBpIDwgczsgaSsrKSB7Ci0gICAgICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERhdGEtPm1f
dHJhbnNmb3JtLT5tX29wZXJhdGlvbnNbaV0tPmlzVHJhbnNsYXRlT3BlcmF0aW9uKCkpIHsKLSAg
ICAgICAgICAgIGFwcGx5VHJhbnNmb3JtT3JpZ2luID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFr
OworICAgIGlmIChjaGVja0FwcGx5VHJhbnNmb3JtT3JpZ2luKSB7CisgICAgICAgIGZvciAoaSA9
IDA7IGkgPCBzOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fdHJhbnNmb3JtLT5tX29wZXJhdGlvbnNbaV0tPmlzVHJhbnNsYXRlT3BlcmF0aW9uKCkpIHsK
KyAgICAgICAgICAgICAgICBhcHBseVRyYW5zZm9ybU9yaWdpbiA9IHRydWU7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCA5NWVmNGY4Li41Y2Q5OGExIDEwMDY0
NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCisrKyBiL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKQEAgLTQyLDcgKzQyLDYgQEAKICNpbmNs
dWRlICJDU1NWYWx1ZUxpc3QuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkNTU0N1
cnNvckltYWdlVmFsdWUuaCIKLSNpbmNsdWRlICJDU1NUcmFuc2Zvcm1WYWx1ZS5oIgogI2luY2x1
ZGUgIkRhdGFSZWYuaCIKICNpbmNsdWRlICJGb250LmgiCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5o
IgpAQCAtNTAsNiArNDksNyBAQAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMZW5n
dGguaCIKICNpbmNsdWRlICJQYWlyLmgiCisjaW5jbHVkZSAiVHJhbnNmb3JtM0QuaCIKICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgIlRleHREaXJlY3Rpb24uaCIKICNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNzg0LDMwICs3ODQsNjAgQEAgcHJpdmF0ZToKIAogY2xh
c3MgVHJhbnNmb3JtT3BlcmF0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8VHJhbnNmb3JtT3BlcmF0
aW9uPiB7CiBwdWJsaWM6Ci0gICAgVHJhbnNmb3JtT3BlcmF0aW9uKCkgOiBSZWZDb3VudGVkPFRy
YW5zZm9ybU9wZXJhdGlvbj4oMCkgeyB9CiAgICAgdmlydHVhbCB+VHJhbnNmb3JtT3BlcmF0aW9u
KCkge30KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb24mKSBjb25zdCA9IDA7CiAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFRyYW5zZm9y
bU9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvKTsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGFwcGx5KEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEludFNpemUmIGJvcmRlckJv
eFNpemUpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtM0QmLCBjb25zdCBJ
bnRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdCA9IDA7CiAgICAgCiAgICAgdmlydHVhbCBUcmFu
c2Zvcm1PcGVyYXRpb24qIGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKSA9IDA7CiAgICAgCisg
ICAgdmlydHVhbCBib29sIGlzSWRlbnRpdHlPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NjYWxlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNSb3RhdGVPcGVyYXRpb24oKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NrZXdPcGVyYXRpb24oKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1RyYW5zbGF0ZU9wZXJhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzTWF0cml4T3BlcmF0
aW9uKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNNYXRyaXgz
RE9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGlz
UGVyc3BlY3RpdmVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorfTsKKworY2xh
c3MgSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24gOiBwdWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9u
Cit7CitwdWJsaWM6CisgICAgSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24oKQorICAgIHt9Cisg
ICAgCisgICAgdmlydHVhbCBib29sIGlzSWRlbnRpdHlPcGVyYXRpb24oKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CisgICAgCisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNm
b3JtT3BlcmF0aW9uJiBvKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG8uaXNJZGVudGl0
eU9wZXJhdGlvbigpOworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNm
b3JtM0QmIHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgdmlydHVhbCBUcmFu
c2Zvcm1PcGVyYXRpb24qIGJsZW5kKGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91
YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9JZGVudGl0eSA9IGZhbHNlKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXM7CisgICAgfQogfTsKIAogY2xhc3MgU2NhbGVUcmFuc2Zvcm1PcGVyYXRp
b24gOiBwdWJsaWMgVHJhbnNmb3JtT3BlcmF0aW9uCiB7CiBwdWJsaWM6CiAgICAgU2NhbGVUcmFu
c2Zvcm1PcGVyYXRpb24oZG91YmxlIHN4LCBkb3VibGUgc3kpCi0gICAgOiBtX3goc3gpLCBtX3ko
c3kpCisgICAgOiBtX3goc3gpLCBtX3koc3kpLCBtX3ooMS5mKQogICAgIHt9Ci0gICAgICAgIAor
CisgICAgU2NhbGVUcmFuc2Zvcm1PcGVyYXRpb24oZG91YmxlIHN4LCBkb3VibGUgc3ksIGRvdWJs
ZSBzeikKKyAgICA6IG1feChzeCksIG1feShzeSksIG1feihzeikKKyAgICB7fQorICAgIAogICAg
IHZpcnR1YWwgYm9vbCBpc1NjYWxlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBv
KSBjb25zdApAQCAtODE5LDkgKzg0OSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYXBwbHkoQWZmaW5lVHJhbnNmb3JtJiB0cmFu
c2Zvcm0sIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNpemUpCisgICAgdmlydHVhbCBib29sIGFw
cGx5KFRyYW5zZm9ybTNEJiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNpemUp
IGNvbnN0CiAgICAgewotICAgICAgICB0cmFuc2Zvcm0uc2NhbGUobV94LCBtX3kpOworICAgICAg
ICB0cmFuc2Zvcm0uc2NhbGUzZCgoZmxvYXQpIG1feCwgKGZsb2F0KSBtX3ksIChmbG9hdCkgbV96
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIHZpcnR1YWwgVHJhbnNmb3Jt
T3BlcmF0aW9uKiBibGVuZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBw
cm9ncmVzcywgYm9vbCBibGVuZFRvSWRlbnRpdHkgPSBmYWxzZSk7CkBAIC04MjksMzUgKzg2MCw0
NCBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGRvdWJsZSBtX3g7CiAgICAgZG91YmxlIG1feTsK
KyAgICBkb3VibGUgbV96OwogfTsKIAogY2xhc3MgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uIDog
cHVibGljIFRyYW5zZm9ybU9wZXJhdGlvbgogewogcHVibGljOgogICAgIFJvdGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbihkb3VibGUgYW5nbGUpCi0gICAgOiBtX2FuZ2xlKGFuZ2xlKQorICAgIDogbV94
KDAuZiksIG1feSgwLmYpLCBtX3ooMS5mKSwgbV9hbmdsZShhbmdsZSkKICAgICB7fQotCisgCisg
ICAgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHos
IGRvdWJsZSBhbmdsZSkKKyAgICA6IG1feCh4KSwgbV95KHkpLCBtX3ooeiksIG1fYW5nbGUoYW5n
bGUpCisgICAge30KKyAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNSb3RhdGVPcGVyYXRpb24oKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBUcmFuc2Zvcm1PcGVyYXRpb24mIG8pIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoby5pc1Jv
dGF0ZU9wZXJhdGlvbigpKSB7CiAgICAgICAgICAgICBjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVy
YXRpb24qIHIgPSBzdGF0aWNfY2FzdDxjb25zdCBSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPigm
byk7Ci0gICAgICAgICAgICByZXR1cm4gbV9hbmdsZSA9PSByLT5tX2FuZ2xlOworICAgICAgICAg
ICAgcmV0dXJuIG1feCA9PSByLT5tX3ggJiYgbV95ID09IHItPm1feSAmJiBtX3ogPT0gci0+bV96
ICYmIG1fYW5nbGUgPT0gci0+bV9hbmdsZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfQotICAgIAotICAgIHZpcnR1YWwgdm9pZCBhcHBseShBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSwgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSkKKyAgICAgfQorICAgICAK
KyAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoVHJhbnNmb3JtM0QmIHRyYW5zZm9ybSwgY29uc3QgSW50
U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3QKICAgICB7Ci0gICAgICAgIHRyYW5zZm9ybS5yb3Rh
dGUobV9hbmdsZSk7CisgICAgICAgIHRyYW5zZm9ybS5yb3RhdGUzZCgoZmxvYXQpIG1feCwgKGZs
b2F0KSBtX3ksIChmbG9hdCkgbV96LCAoZmxvYXQpIG1fYW5nbGUpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgdmlydHVhbCBUcmFuc2Zvcm1PcGVyYXRpb24qIGJsZW5kKGNv
bnN0IFRyYW5zZm9ybU9wZXJhdGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5k
VG9JZGVudGl0eSA9IGZhbHNlKTsKLSAgICAKLXByaXZhdGU6Ci0gICAgZG91YmxlIG1fYW5nbGU7
CisgICAgIAorIHByaXZhdGU6CisgICAgIGRvdWJsZSBtX3g7CisgICAgIGRvdWJsZSBtX3k7Cisg
ICAgIGRvdWJsZSBtX3o7CisgICAgIGRvdWJsZSBtX2FuZ2xlOwogfTsKIAogY2xhc3MgU2tld1Ry
YW5zZm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24KQEAgLTg3OCw5ICs5
MTgsMTAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdmly
dHVhbCB2b2lkIGFwcGx5KEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXpl
JiBib3JkZXJCb3hTaXplKQorICAgIHZpcnR1YWwgYm9vbCBhcHBseShUcmFuc2Zvcm0zRCYgdHJh
bnNmb3JtLCBjb25zdCBJbnRTaXplJiBib3JkZXJCb3hTaXplKSBjb25zdAogICAgIHsKLSAgICAg
ICAgdHJhbnNmb3JtLnNrZXcobV9hbmdsZVgsIG1fYW5nbGVZKTsKKyAgICAgICAgdHJhbnNmb3Jt
LnNrZXcoKGZsb2F0KSBtX2FuZ2xlWCwgKGZsb2F0KSBtX2FuZ2xlWSk7CisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKICAgICB2aXJ0dWFsIFRyYW5zZm9ybU9wZXJhdGlvbiogYmxlbmQo
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxl
bmRUb0lkZW50aXR5ID0gZmFsc2UpOwpAQCAtODk0LDY1ICs5MzUsMTAwIEBAIGNsYXNzIFRyYW5z
bGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiA6IHB1YmxpYyBUcmFuc2Zvcm1PcGVyYXRpb24KIHsKIHB1
YmxpYzoKICAgICBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24oY29uc3QgTGVuZ3RoJiB0eCwg
Y29uc3QgTGVuZ3RoJiB0eSkKLSAgICA6IG1feCh0eCksIG1feSh0eSkKKyAgICA6IG1feCh0eCks
IG1feSh0eSksIG1feihMZW5ndGgoKSkKKyAgICB7fQorCisgICAgVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uKGNvbnN0IExlbmd0aCYgdHgsIGNvbnN0IExlbmd0aCYgdHksIGNvbnN0IExlbmd0
aCYgdHopCisgICAgOiBtX3godHgpLCBtX3kodHkpLCBtX3oodHopCiAgICAge30KICAgICAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNUcmFuc2xhdGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9Ci0KKyAgICAKICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBUcmFuc2Zvcm1P
cGVyYXRpb24mIG8pIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoby5pc1RyYW5zbGF0ZU9wZXJh
dGlvbigpKSB7CiAgICAgICAgICAgICBjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24q
IHQgPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24qPigmbyk7
Ci0gICAgICAgICAgICByZXR1cm4gbV94ID09IHQtPm1feCAmJiBtX3kgPT0gdC0+bV95OworICAg
ICAgICAgICAgcmV0dXJuIG1feCA9PSB0LT5tX3ggJiYgbV95ID09IHQtPm1feSAmJiBtX3ogPT0g
dC0+bV96OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgYXBwbHkoQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEludFNp
emUmIGJvcmRlckJveFNpemUpCisgICAgCisgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9y
bTNEJiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0CiAgICAg
ewotICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG1feC5jYWxjRmxvYXRWYWx1ZShib3JkZXJC
b3hTaXplLndpZHRoKCkpLCBtX3kuY2FsY0Zsb2F0VmFsdWUoYm9yZGVyQm94U2l6ZS5oZWlnaHQo
KSkpOworICAgICAgICAvLyBUT0RPOiBDRk0gLSBIb3cgZG8gd2UgZGVhbCB3aXRoIGEgeiB2YWx1
ZSBhcyBhIHBlcmNlbnRhZ2U/CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZChtX3guY2Fs
Y1ZhbHVlKGJvcmRlckJveFNpemUud2lkdGgoKSksIG1feS5jYWxjVmFsdWUoYm9yZGVyQm94U2l6
ZS5oZWlnaHQoKSksIG1fei5jYWxjVmFsdWUoMSkpOworICAgICAgICByZXR1cm4gbV94LnR5cGUo
KSA9PSBQZXJjZW50IHx8IG1feS50eXBlKCkgPT0gUGVyY2VudDsKICAgICB9Ci0KKyAgICAKICAg
ICB2aXJ0dWFsIFRyYW5zZm9ybU9wZXJhdGlvbiogYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0
aW9uKiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2Up
OwotCisgICAgCiBwcml2YXRlOgogICAgIExlbmd0aCBtX3g7CiAgICAgTGVuZ3RoIG1feTsKKyAg
ICBMZW5ndGggbV96OwogfTsKIAogY2xhc3MgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uIDogcHVi
bGljIFRyYW5zZm9ybU9wZXJhdGlvbgogewogcHVibGljOgotICAgIE1hdHJpeFRyYW5zZm9ybU9w
ZXJhdGlvbihkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCwgZG91YmxlIGUs
IGRvdWJsZSBmKQotICAgIDogbV9hKGEpLCBtX2IoYiksIG1fYyhjKSwgbV9kKGQpLCBtX2UoZSks
IG1fZihmKQotICAgIHt9CisgICAgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgbSkKKyAgICB7IG1fbWF0cml4ID0gbTsgfQorICAgIAorICAgIE1hdHJpeFRy
YW5zZm9ybU9wZXJhdGlvbihmbG9hdCBhLCBmbG9hdCBiLCBmbG9hdCBjLCBmbG9hdCBkLCBmbG9h
dCBlLCBmbG9hdCBmKQorICAgIHsKKyAgICAgICAgbV9tYXRyaXguc2V0TWF0cml4KGEsYixjLGQs
ZSxmKTsKKyAgICB9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzTWF0cml4T3BlcmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCisgICAgCiAgICAgdmlydHVhbCBib29sIG9wZXJhdG9y
PT0oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uJiBvKSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KG8uaXNNYXRyaXhPcGVyYXRpb24oKSkgewogICAgICAgICAgICAgY29uc3QgTWF0cml4VHJhbnNm
b3JtT3BlcmF0aW9uKiBtID0gc3RhdGljX2Nhc3Q8Y29uc3QgTWF0cml4VHJhbnNmb3JtT3BlcmF0
aW9uKj4oJm8pOwotICAgICAgICAgICAgcmV0dXJuIG1fYSA9PSBtLT5tX2EgJiYgbV9iID09IG0t
Pm1fYiAmJiBtX2MgPT0gbS0+bV9jICYmIG1fZCA9PSBtLT5tX2QgJiYgbV9lID09IG0tPm1fZSAm
JiBtX2YgPT0gbS0+bV9mOworICAgICAgICAgICAgcmV0dXJuIG1fbWF0cml4ID09IG0tPm1fbWF0
cml4OwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgYXBwbHkoQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUm
IGJvcmRlckJveFNpemUpCisgICAgCisgICAgdmlydHVhbCBib29sIGFwcGx5KFRyYW5zZm9ybTNE
JiB0cmFuc2Zvcm0sIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNpemUpIGNvbnN0CiAgICAgewot
ICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gbWF0cml4KG1fYSwgbV9iLCBtX2MsIG1fZCwgbV9lLCBt
X2YpOwotICAgICAgICB0cmFuc2Zvcm0gPSBtYXRyaXggKiB0cmFuc2Zvcm07CisgICAgICAgIHRy
YW5zZm9ybS5tdWx0TGVmdChUcmFuc2Zvcm0zRChtX21hdHJpeCkpOworICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQorICAgIAorICAgIHZpcnR1YWwgVHJhbnNmb3JtT3BlcmF0aW9uKiBibGVu
ZChjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBi
bGVuZFRvSWRlbnRpdHkgPSBmYWxzZSk7CisgICAgCitwcml2YXRlOgorICAgIEFmZmluZVRyYW5z
Zm9ybSBtX21hdHJpeDsKK307CiAKK2NsYXNzIE1hdHJpeDNEVHJhbnNmb3JtT3BlcmF0aW9uIDog
cHVibGljIFRyYW5zZm9ybU9wZXJhdGlvbgoreworcHVibGljOgorICAgIE1hdHJpeDNEVHJhbnNm
b3JtT3BlcmF0aW9uKGNvbnN0IFRyYW5zZm9ybTNEJiBtYXQpCisgICAgeyBtX21hdHJpeCA9IG1h
dDsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc01hdHJpeDNET3BlcmF0aW9uKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIAorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbiYgbykgY29uc3QKKyAgICB7CisgICAgICAgIGlmIChvLmlzTWF0
cml4M0RPcGVyYXRpb24oKSkgeworICAgICAgICAgICAgY29uc3QgTWF0cml4M0RUcmFuc2Zvcm1P
cGVyYXRpb24qIG0gPSBzdGF0aWNfY2FzdDxjb25zdCBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlv
bio+KCZvKTsKKyAgICAgICAgICAgIHJldHVybiBtX21hdHJpeCA9PSBtLT5tX21hdHJpeDsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHZpcnR1YWwg
Ym9vbCBhcHBseShUcmFuc2Zvcm0zRCYgdHJhbnNmb3JtLCBjb25zdCBJbnRTaXplJiBib3JkZXJC
b3hTaXplKSBjb25zdAorICAgIHsKKyAgICAgICAgdHJhbnNmb3JtLm11bHRMZWZ0KG1fbWF0cml4
KTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKICAgICB2aXJ0dWFsIFRyYW5z
Zm9ybU9wZXJhdGlvbiogYmxlbmQoY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb0lkZW50aXR5ID0gZmFsc2UpOwogICAgIAogcHJpdmF0
ZToKLSAgICBkb3VibGUgbV9hOwotICAgIGRvdWJsZSBtX2I7Ci0gICAgZG91YmxlIG1fYzsKLSAg
ICBkb3VibGUgbV9kOwotICAgIGRvdWJsZSBtX2U7Ci0gICAgZG91YmxlIG1fZjsKKyAgICBUcmFu
c2Zvcm0zRCBtX21hdHJpeDsKIH07CiAKIGNsYXNzIFRyYW5zZm9ybU9wZXJhdGlvbnMKQEAgLTIw
NDgsNyArMjEyNCw3IEBAIHB1YmxpYzoKICAgICBMZW5ndGggdHJhbnNmb3JtT3JpZ2luWCgpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV94OyB9CiAg
ICAgTGVuZ3RoIHRyYW5zZm9ybU9yaWdpblkoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV90cmFuc2Zvcm0tPm1feTsgfQogICAgIGJvb2wgaGFzVHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gIXJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX3RyYW5zZm9ybS0+bV9vcGVyYXRp
b25zLmlzRW1wdHkoKTsgfQotICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm0oQWZmaW5lVHJhbnNmb3Jt
JiwgY29uc3QgSW50U2l6ZSYgYm9yZGVyQm94U2l6ZSkgY29uc3Q7CisgICAgdm9pZCBhcHBseVRy
YW5zZm9ybShUcmFuc2Zvcm0zRCYsIGNvbnN0IEludFNpemUmIGJvcmRlckJveFNpemUsIGJvb2wg
Y2hlY2tBcHBseVRyYW5zZm9ybU9yaWdpbikgY29uc3Q7CiAgICAgYm9vbCBoYXNNYXNrKCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbWFzay5oYXNJbWFnZSgpIHx8IHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX21hc2tCb3hJbWFnZS5oYXNJbWFnZSgpOyB9CiAgICAgLy8g
RW5kIENTUzMgR2V0dGVycwogCg==
</data>
<flag name="review"
          id="9279"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>