<?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>125762</bug_id>
          
          <creation_ts>2013-12-15 19:19:10 -0800</creation_ts>
          <short_desc>CTTE: Convert more of SVG to use references</short_desc>
          <delta_ts>2013-12-16 11:20:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>959968</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-15 19:19:10 -0800</bug_when>
    <thetext>CTTE: Convert more of SVG to use references</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959969</commentid>
    <comment_count>1</comment_count>
      <attachid>219289</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-15 19:19:42 -0800</bug_when>
    <thetext>Created attachment 219289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959975</commentid>
    <comment_count>2</comment_count>
      <attachid>219289</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-12-15 20:28:42 -0800</bug_when>
    <thetext>Comment on attachment 219289
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=219289&amp;action=review

&gt; Source/WebCore/rendering/svg/RenderSVGResource.cpp:179
&gt; +        if (RenderElement* renderer = element-&gt;renderer())

Could use auto instead of specifying RenderElement. Other places in the patch, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959978</commentid>
    <comment_count>3</comment_count>
      <attachid>219292</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-15 20:38:20 -0800</bug_when>
    <thetext>Created attachment 219292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960087</commentid>
    <comment_count>4</comment_count>
      <attachid>219292</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-12-16 09:37:41 -0800</bug_when>
    <thetext>Comment on attachment 219292
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=219292&amp;action=review

Looks great. I spotted 6 “other places” you didn’t change.

&gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:292
&gt; +    if (RenderElement* renderer = targetElement-&gt;renderer())

One of the “other places”.

&gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:307
&gt; +        if (RenderElement* renderer = shadowTreeElement-&gt;renderer()) {

Another of the “other places”.

&gt; Source/WebCore/svg/SVGFEImageElement.cpp:202
&gt; +    RenderElement* parentRenderer = parent-&gt;renderer();

Another of the “other places”.

&gt; Source/WebCore/svg/SVGFELightElement.cpp:217
&gt; +    RenderElement* renderer = parent-&gt;renderer();

Another of the “other places”.

&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:168
&gt; +    RenderElement* renderer = parent-&gt;renderer();

Another of the “other places”.

&gt; Source/WebCore/svg/SVGSVGElement.cpp:726
&gt; +                if (RenderElement* renderer = svg-&gt;renderer())

Another of the “other places”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960129</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-12-16 10:53:08 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 219292 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219292&amp;action=review
&gt; 
&gt; Looks great. I spotted 6 “other places” you didn’t change.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:292
&gt; &gt; +    if (RenderElement* renderer = targetElement-&gt;renderer())
&gt; 
&gt; One of the “other places”.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:307
&gt; &gt; +        if (RenderElement* renderer = shadowTreeElement-&gt;renderer()) {
&gt; 
&gt; Another of the “other places”.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGFEImageElement.cpp:202
&gt; &gt; +    RenderElement* parentRenderer = parent-&gt;renderer();
&gt; 
&gt; Another of the “other places”.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGFELightElement.cpp:217
&gt; &gt; +    RenderElement* renderer = parent-&gt;renderer();
&gt; 
&gt; Another of the “other places”.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:168
&gt; &gt; +    RenderElement* renderer = parent-&gt;renderer();
&gt; 
&gt; Another of the “other places”.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGSVGElement.cpp:726
&gt; &gt; +                if (RenderElement* renderer = svg-&gt;renderer())
&gt; 
&gt; Another of the “other places”.

Doh. I&apos;ll get them in another pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960151</commentid>
    <comment_count>6</comment_count>
      <attachid>219292</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-16 11:20:12 -0800</bug_when>
    <thetext>Comment on attachment 219292
Patch

Clearing flags on attachment: 219292

Committed r160651: &lt;http://trac.webkit.org/changeset/160651&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960152</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-16 11:20:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219289</attachid>
            <date>2013-12-15 19:19:42 -0800</date>
            <delta_ts>2013-12-15 20:38:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125762-20131215191943.patch</filename>
            <type>text/plain</type>
            <size>52847</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDYyNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAxMy0xMi0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIENUVEU6IENvbnZlcnQgbW9yZSBvZiBT
VkcgdG8gdXNlIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNTc2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92
ZUZyb21DYWNoZUFuZEludmFsaWRhdGVEZXBlbmRlbmNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cmVtb3ZlQ2xpZW50RnJvbUNh
Y2hlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6Om1hcmtBbGxD
bGllbnRzRm9ySW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyOjptYXJrQWxsQ2xpZW50TGF5ZXJzRm9ySW52YWxpZGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjptYXJrQ2xpZW50Rm9ySW52
YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
OjpyZW1vdmVDbGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpy
ZW1vdmVDbGllbnRGcm9tQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OnJlbW92ZUNsaWVudEZyb21DYWNoZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpyZW1vdmVDbGllbnRGcm9t
Q2FjaGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvcjo6cmVtb3Zl
Q2xpZW50RnJvbUNhY2hlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBv
cnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZVJlc291cmNlc09mQ2hpbGRyZW4p
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Jlc291cmNlczo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVzb3VyY2VzQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6
OmNsaWVudExheW91dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2Fj
aGU6OmNsaWVudFN0eWxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXND
YWNoZTo6Y2xpZW50V2FzQWRkZWRUb1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3Vy
Y2VzQ2FjaGU6OmNsaWVudFdpbGxCZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50RGVzdHJveWVkKToKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHQ2ly
Y2xlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHN2Zy9TVkdG
RUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGaWx0ZXJQcmlt
aXRpdmVQYXJlbnQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjppbnZhbGlkYXRlTVBhdGhEZXBlbmRl
bmNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0Q2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BvbHlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c2V0dXBJbml0aWFsVmlldyk6CisgICAgICAg
ICogc3ZnL1NWR1N0b3BFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0b3BFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisKIDIwMTMtMTItMTUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFtXaW5dIFVucmV2aWV3ZWQgYnVpbGQgZml4CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAkocmV2
aXNpb24gMTYwNjE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJ
bWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5NSwxMCArMTk1LDEwIEBAIHZvaWQgUmVuZGVy
U1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZChXcmFwcGUKICAgICAvLyBUaGUgaW1hZ2UgcmVzb3VyY2Ug
ZGVmYXVsdHMgdG8gbnVsbEltYWdlIHVudGlsIHRoZSByZXNvdXJjZSBhcnJpdmVzLgogICAgIC8v
IFRoaXMgZW1wdHkgaW1hZ2UgbWF5IGJlIGNhY2hlZCBieSBTVkcgcmVzb3VyY2VzIHdoaWNoIG11
c3QgYmUgaW52YWxpZGF0ZWQuCiAgICAgaWYgKFNWR1Jlc291cmNlcyogcmVzb3VyY2VzID0gU1ZH
UmVzb3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlck9iamVjdCgqdGhpcykpCi0g
ICAgICAgIHJlc291cmNlcy0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHRoaXMpOworICAgICAgICBy
ZXNvdXJjZXMtPnJlbW92ZUNsaWVudEZyb21DYWNoZSgqdGhpcyk7CiAKICAgICAvLyBFdmVudHVh
bGx5IG5vdGlmeSBwYXJlbnQgcmVzb3VyY2VzLCB0aGF0IHdlJ3ZlIGNoYW5nZWQuCi0gICAgUmVu
ZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlv
bih0aGlzLCBmYWxzZSk7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQ
YXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqdGhpcywgZmFsc2UpOwogCiAgICAgLy8gVXBkYXRl
IHRoZSBTVkdJbWFnZUNhY2hlIHNpemVBbmRTY2FsZXMgZW50cnkgaW4gY2FzZSBpbWFnZSBsb2Fk
aW5nIGZpbmlzaGVkIGFmdGVyIGxheW91dC4KICAgICAvLyAoaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk5NDg5KQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDE2MDYxNikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjEsMTMgKzE2MSwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVtb3Zl
RnJvbUNhY2hlQW5kSW52CiAgICAgaWYgKFNWR1Jlc291cmNlcyogcmVzb3VyY2VzID0gU1ZHUmVz
b3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlck9iamVjdChvYmplY3QpKSB7CiAj
aWYgRU5BQkxFKEZJTFRFUlMpCiAgICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciog
ZmlsdGVyID0gcmVzb3VyY2VzLT5maWx0ZXIoKSkKLSAgICAgICAgICAgIGZpbHRlci0+cmVtb3Zl
Q2xpZW50RnJvbUNhY2hlKCZvYmplY3QpOworICAgICAgICAgICAgZmlsdGVyLT5yZW1vdmVDbGll
bnRGcm9tQ2FjaGUob2JqZWN0KTsKICNlbmRpZgogICAgICAgICBpZiAoUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXNrZXIqIG1hc2tlciA9IHJlc291cmNlcy0+bWFza2VyKCkpCi0gICAgICAgICAgICBtYXNr
ZXItPnJlbW92ZUNsaWVudEZyb21DYWNoZSgmb2JqZWN0KTsKKyAgICAgICAgICAgIG1hc2tlci0+
cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKG9iamVjdCk7CiAKICAgICAgICAgaWYgKFJlbmRlclNWR1Jl
c291cmNlQ2xpcHBlciogY2xpcHBlciA9IHJlc291cmNlcy0+Y2xpcHBlcigpKQotICAgICAgICAg
ICAgY2xpcHBlci0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKCZvYmplY3QpOworICAgICAgICAgICAg
Y2xpcHBlci0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKG9iamVjdCk7CiAgICAgfQogCiAgICAgaWYg
KCFvYmplY3Qubm9kZSgpIHx8ICFvYmplY3Qubm9kZSgpLT5pc1NWR0VsZW1lbnQoKSkKQEAgLTE3
NiwyMyArMTc2LDIyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCByZW1vdmVGcm9tQ2FjaGVBbmRJbnYK
ICAgICBpZiAoIWRlcGVuZGVuY2llcykKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAoYXV0byBl
bGVtZW50IDogKmRlcGVuZGVuY2llcykgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5k
ZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyLCBu
ZWVkc0xheW91dCk7CisgICAgICAgIGlmIChSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IGVsZW1l
bnQtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zvckxh
eW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlciwgbmVlZHNMYXlvdXQp
OwogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBh
cmVudFJlc291cmNlSW52YWxpZGF0aW9uKFJlbmRlck9iamVjdCogb2JqZWN0LCBib29sIG5lZWRz
TGF5b3V0KQordm9pZCBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKFJlbmRlck9iamVjdCYgb2JqZWN0LCBib29sIG5lZWRzTGF5b3V0
KQogewotICAgIEFTU0VSVChvYmplY3QpOwotICAgIEFTU0VSVChvYmplY3QtPm5vZGUoKSk7Cisg
ICAgQVNTRVJUKG9iamVjdC5ub2RlKCkpOwogCi0gICAgaWYgKG5lZWRzTGF5b3V0ICYmICFvYmpl
Y3QtPmRvY3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKLSAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xh
eW91dCgpOworICAgIGlmIChuZWVkc0xheW91dCAmJiAhb2JqZWN0LmRvY3VtZW50QmVpbmdEZXN0
cm95ZWQoKSkKKyAgICAgICAgb2JqZWN0LnNldE5lZWRzTGF5b3V0KCk7CiAKLSAgICByZW1vdmVG
cm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKCpvYmplY3QsIG5lZWRzTGF5b3V0KTsK
KyAgICByZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKG9iamVjdCwgbmVl
ZHNMYXlvdXQpOwogCiAgICAgLy8gSW52YWxpZGF0ZSByZXNvdXJjZXMgaW4gYW5jZXN0b3IgY2hh
aW4sIGlmIG5lZWRlZC4KLSAgICBSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBvYmplY3QtPnBhcmVu
dCgpOworICAgIFJlbmRlck9iamVjdCogY3VycmVudCA9IG9iamVjdC5wYXJlbnQoKTsKICAgICB3
aGlsZSAoY3VycmVudCkgewogICAgICAgICByZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVw
ZW5kZW5jaWVzKCpjdXJyZW50LCBuZWVkc0xheW91dCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmgJKHJldmlzaW9uIDE2MDYx
NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+UmVu
ZGVyU1ZHUmVzb3VyY2UoKSB7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxDbGllbnRz
RnJvbUNhY2hlKGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlQ2xpZW50RnJvbUNhY2hlKFJlbmRlck9iamVjdCosIGJvb2wgbWFya0Zv
ckludmFsaWRhdGlvbiA9IHRydWUpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50
RnJvbUNhY2hlKFJlbmRlck9iamVjdCYsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUp
ID0gMDsKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBj
b25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCByZXNv
dXJjZU1vZGUpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVy
RWxlbWVudCYsIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCwgY29uc3QgUGF0aCos
IGNvbnN0IFJlbmRlclNWR1NoYXBlKikgeyB9CkBAIC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAg
ICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2UqIHN0cm9rZVBhaW50aW5nUmVzb3VyY2UoUmVuZGVy
RWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgQ29sb3ImIGZhbGxiYWNrQ29sb3IpOwogICAg
IHN0YXRpYyBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IqIHNoYXJlZFNvbGlkUGFpbnRpbmdS
ZXNvdXJjZSgpOwogCi0gICAgc3RhdGljIHZvaWQgbWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKFJlbmRlck9iamVjdCosIGJvb2wgbmVlZHNMYXlvdXQgPSB0cnVlKTsK
KyAgICBzdGF0aWMgdm9pZCBtYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oUmVuZGVyT2JqZWN0JiwgYm9vbCBuZWVkc0xheW91dCA9IHRydWUpOwogfTsKIAogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyLmNwcAkocmV2aXNpb24gMTYwNjE2KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MSwxMCArNzEsOSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cmVtb3Zl
QWxsCiAgICAgbWFya0FsbENsaWVudHNGb3JJbnZhbGlkYXRpb24obWFya0ZvckludmFsaWRhdGlv
biA/IExheW91dEFuZEJvdW5kYXJpZXNJbnZhbGlkYXRpb24gOiBQYXJlbnRPbmx5SW52YWxpZGF0
aW9uKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnJlbW92ZUNsaWVudEZy
b21DYWNoZShSZW5kZXJPYmplY3QqIGNsaWVudCwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uKQor
dm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5k
ZXJPYmplY3QmIGNsaWVudCwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uKQogewotICAgIEFTU0VS
VChjbGllbnQpOwotICAgIG1fY2xpcHBlci5yZW1vdmUoY2xpZW50KTsKKyAgICBtX2NsaXBwZXIu
cmVtb3ZlKCZjbGllbnQpOwogCiAgICAgbWFya0NsaWVudEZvckludmFsaWRhdGlvbihjbGllbnQs
IG1hcmtGb3JJbnZhbGlkYXRpb24gPyBCb3VuZGFyaWVzSW52YWxpZGF0aW9uIDogUGFyZW50T25s
eUludmFsaWRhdGlvbik7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmgJKHJldmlzaW9uIDE2MDYxNikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIFNWR0NsaXBQ
YXRoRWxlbWVudCYgY2xpcFBhdGhFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdG9TVkdDbGlwUGF0
aEVsZW1lbnQobm9kZUZvck5vbkFub255bW91cygpKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUFsbENsaWVudHNGcm9tQ2FjaGUoYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSk7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QqLCBi
b29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
Q2xpZW50RnJvbUNhY2hlKFJlbmRlck9iamVjdCYsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9
IHRydWUpOwogCiAgICAgdmlydHVhbCBib29sIGFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYs
IGNvbnN0IFJlbmRlclN0eWxlJiwgR3JhcGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJl
c291cmNlTW9kZSkgT1ZFUlJJREU7CiAgICAgLy8gY2xpcFBhdGggY2FuIGJlIGNsaXBwZWQgdG9v
LCBidXQgZG9uJ3QgaGF2ZSBhIGJvdW5kaW5nQm94IG9yIHJlcGFpbnRSZWN0LiBTbyB3ZSBjYW4n
dCBjYWxsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcAkocmV2aXNpb24gMTYwNjE2KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk5LDE4ICs5OSwxNiBAQCB2b2lkIFJlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyOjptYXJrQWxsCiAgICAgYm9vbCBuZWVkc0xheW91dCA9IG1vZGUgPT0gTGF5
b3V0QW5kQm91bmRhcmllc0ludmFsaWRhdGlvbjsKICAgICBib29sIG1hcmtGb3JJbnZhbGlkYXRp
b24gPSBtb2RlICE9IFBhcmVudE9ubHlJbnZhbGlkYXRpb247CiAKLSAgICBIYXNoU2V0PFJlbmRl
ck9iamVjdCo+OjppdGVyYXRvciBlbmQgPSBtX2NsaWVudHMuZW5kKCk7Ci0gICAgZm9yIChIYXNo
U2V0PFJlbmRlck9iamVjdCo+OjppdGVyYXRvciBpdCA9IG1fY2xpZW50cy5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKLSAgICAgICAgUmVuZGVyT2JqZWN0KiBjbGllbnQgPSAqaXQ7CisgICAg
Zm9yIChhdXRvIGNsaWVudCA6IG1fY2xpZW50cykgewogICAgICAgICBpZiAoY2xpZW50LT5pc1NW
R1Jlc291cmNlQ29udGFpbmVyKCkpIHsKICAgICAgICAgICAgIGNsaWVudC0+dG9SZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lcigpLT5yZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKG1hcmtGb3JJbnZh
bGlkYXRpb24pOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAobWFya0ZvckludmFsaWRhdGlvbikKLSAgICAgICAgICAgIG1hcmtDbGllbnRGb3JJbnZhbGlk
YXRpb24oY2xpZW50LCBtb2RlKTsKKyAgICAgICAgICAgIG1hcmtDbGllbnRGb3JJbnZhbGlkYXRp
b24oKmNsaWVudCwgbW9kZSk7CiAKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihjbGllbnQsIG5lZWRzTGF5b3V0KTsK
KyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbigqY2xpZW50LCBuZWVkc0xheW91dCk7CiAgICAgfQogCiAgICAgbWFya0Fs
bENsaWVudExheWVyc0ZvckludmFsaWRhdGlvbigpOwpAQCAtMTIxLDI1ICsxMTksMjMgQEAgdm9p
ZCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6bWFya0FsbAogdm9pZCBSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcjo6bWFya0FsbENsaWVudExheWVyc0ZvckludmFsaWRhdGlvbigpCiB7CiAj
aWYgRU5BQkxFKENTU19GSUxURVJTKQotICAgIEhhc2hTZXQ8UmVuZGVyTGF5ZXIqPjo6aXRlcmF0
b3IgbGF5ZXJFbmQgPSBtX2NsaWVudExheWVycy5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVu
ZGVyTGF5ZXIqPjo6aXRlcmF0b3IgaXQgPSBtX2NsaWVudExheWVycy5iZWdpbigpOyBpdCAhPSBs
YXllckVuZDsgKytpdCkKLSAgICAgICAgKCppdCktPmZpbHRlck5lZWRzUmVwYWludCgpOworICAg
IGZvciAoYXV0byBjbGllbnRMYXllciA6IG1fY2xpZW50TGF5ZXJzKQorICAgICAgICBjbGllbnRM
YXllci0+ZmlsdGVyTmVlZHNSZXBhaW50KCk7CiAjZW5kaWYKIH0KIAotdm9pZCBSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lcjo6bWFya0NsaWVudEZvckludmFsaWRhdGlvbihSZW5kZXJPYmplY3Qq
IGNsaWVudCwgSW52YWxpZGF0aW9uTW9kZSBtb2RlKQordm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNv
bnRhaW5lcjo6bWFya0NsaWVudEZvckludmFsaWRhdGlvbihSZW5kZXJPYmplY3QmIGNsaWVudCwg
SW52YWxpZGF0aW9uTW9kZSBtb2RlKQogewotICAgIEFTU0VSVChjbGllbnQpOwogICAgIEFTU0VS
VCghbV9jbGllbnRzLmlzRW1wdHkoKSk7CiAKICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICBjYXNl
IExheW91dEFuZEJvdW5kYXJpZXNJbnZhbGlkYXRpb246CiAgICAgY2FzZSBCb3VuZGFyaWVzSW52
YWxpZGF0aW9uOgotICAgICAgICBjbGllbnQtPnNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpOwor
ICAgICAgICBjbGllbnQuc2V0TmVlZHNCb3VuZGFyaWVzVXBkYXRlKCk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUmVwYWludEludmFsaWRhdGlvbjoKLSAgICAgICAgaWYgKCFjbGllbnQtPmRv
Y3VtZW50QmVpbmdEZXN0cm95ZWQoKSkKLSAgICAgICAgICAgIGNsaWVudC0+cmVwYWludCgpOwor
ICAgICAgICBpZiAoIWNsaWVudC5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpCisgICAgICAgICAg
ICBjbGllbnQucmVwYWludCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFBhcmVudE9ubHlJ
bnZhbGlkYXRpb246CiAgICAgICAgIGJyZWFrOwpAQCAtMTU1LDcgKzE1MSw3IEBAIHZvaWQgUmVu
ZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OmFkZENsaWUKIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXI6OnJlbW92ZUNsaWVudChSZW5kZXJPYmplY3QqIGNsaWVudCkKIHsKICAgICBBU1NF
UlQoY2xpZW50KTsKLSAgICByZW1vdmVDbGllbnRGcm9tQ2FjaGUoY2xpZW50LCBmYWxzZSk7Cisg
ICAgcmVtb3ZlQ2xpZW50RnJvbUNhY2hlKCpjbGllbnQsIGZhbHNlKTsKICAgICBtX2NsaWVudHMu
cmVtb3ZlKGNsaWVudCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgJKHJldmlzaW9uIDE2
MDYxNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
b250YWluZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgLy8gVXNlZCBmcm9tIHRoZSBpbnZhbGlkYXRlQ2xpZW50L2ludmFsaWRhdGVDbGllbnRzIG1l
dGhvZHMgZnJvbSBjbGFzc2VzLCBpbmhlcml0aW5nIGZyb20gdXMuCiAgICAgdm9pZCBtYXJrQWxs
Q2xpZW50c0ZvckludmFsaWRhdGlvbihJbnZhbGlkYXRpb25Nb2RlKTsKICAgICB2b2lkIG1hcmtB
bGxDbGllbnRMYXllcnNGb3JJbnZhbGlkYXRpb24oKTsKLSAgICB2b2lkIG1hcmtDbGllbnRGb3JJ
bnZhbGlkYXRpb24oUmVuZGVyT2JqZWN0KiwgSW52YWxpZGF0aW9uTW9kZSk7CisgICAgdm9pZCBt
YXJrQ2xpZW50Rm9ySW52YWxpZGF0aW9uKFJlbmRlck9iamVjdCYsIEludmFsaWRhdGlvbk1vZGUp
OwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTVkdSZXNvdXJjZXNDYWNoZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAxNjA2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzMsMTUgKzczLDEzIEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnJlbW92ZUFsbEMK
ICAgICBtYXJrQWxsQ2xpZW50c0ZvckludmFsaWRhdGlvbihtYXJrRm9ySW52YWxpZGF0aW9uID8g
TGF5b3V0QW5kQm91bmRhcmllc0ludmFsaWRhdGlvbiA6IFBhcmVudE9ubHlJbnZhbGlkYXRpb24p
OwogfQogCi12b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpyZW1vdmVDbGllbnRGcm9tQ2Fj
aGUoUmVuZGVyT2JqZWN0KiBjbGllbnQsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbikKK3ZvaWQg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmpl
Y3QmIGNsaWVudCwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uKQogewotICAgIEFTU0VSVChjbGll
bnQpOwotCi0gICAgaWYgKEZpbHRlckRhdGEqIGZpbHRlckRhdGEgPSBtX2ZpbHRlci5nZXQoY2xp
ZW50KSkgeworICAgIGlmIChGaWx0ZXJEYXRhKiBmaWx0ZXJEYXRhID0gbV9maWx0ZXIuZ2V0KCZj
bGllbnQpKSB7CiAgICAgICAgIGlmIChmaWx0ZXJEYXRhLT5zYXZlZENvbnRleHQpCiAgICAgICAg
ICAgICBmaWx0ZXJEYXRhLT5zdGF0ZSA9IEZpbHRlckRhdGE6Ok1hcmtlZEZvclJlbW92YWw7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZmlsdGVyLnJlbW92ZShjbGllbnQpOworICAgICAg
ICAgICAgbV9maWx0ZXIucmVtb3ZlKCZjbGllbnQpOwogICAgIH0KIAogICAgIG1hcmtDbGllbnRG
b3JJbnZhbGlkYXRpb24oY2xpZW50LCBtYXJrRm9ySW52YWxpZGF0aW9uID8gQm91bmRhcmllc0lu
dmFsaWRhdGlvbiA6IFBhcmVudE9ubHlJbnZhbGlkYXRpb24pOwpAQCAtMjYzLDcgKzI2MSw3IEBA
IHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVIKIAogICAgIGNhc2UgRmls
dGVyRGF0YTo6UGFpbnRpbmdTb3VyY2U6CiAgICAgICAgIGlmICghZmlsdGVyRGF0YS0+c2F2ZWRD
b250ZXh0KSB7Ci0gICAgICAgICAgICByZW1vdmVDbGllbnRGcm9tQ2FjaGUoJnJlbmRlcmVyKTsK
KyAgICAgICAgICAgIHJlbW92ZUNsaWVudEZyb21DYWNoZShyZW5kZXJlcik7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzE1LDggKzMxMyw4IEBAIHZvaWQgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OnByaW1pdGl2ZUEKIHsKICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMqIHByaW1pdHZlID0gc3RhdGljX2Nhc3Q8U1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzKj4ob2JqZWN0LT5ub2RlKCkpOwogCi0gICAgZm9yIChhdXRvIGl0
ID0gbV9maWx0ZXIuYmVnaW4oKSwgZW5kID0gbV9maWx0ZXIuZW5kKCk7IGl0ICE9IGVuZDsgKytp
dCkgewotICAgICAgICBjb25zdCBhdXRvICZmaWx0ZXJEYXRhID0gaXQtPnZhbHVlOworICAgIGZv
ciAoY29uc3QgYXV0byYgb2JqZWN0RmlsdGVyRGF0YVBhaXIgOiBtX2ZpbHRlcikgeworICAgICAg
ICBjb25zdCBhdXRvJiBmaWx0ZXJEYXRhID0gb2JqZWN0RmlsdGVyRGF0YVBhaXIudmFsdWU7CiAg
ICAgICAgIGlmIChmaWx0ZXJEYXRhLT5zdGF0ZSAhPSBGaWx0ZXJEYXRhOjpCdWlsdCkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCkBAIC0zMzEsNyArMzI5LDcgQEAgdm9pZCBSZW5kZXJTVkdSZXNv
dXJjZUZpbHRlcjo6cHJpbWl0aXZlQQogICAgICAgICBidWlsZGVyLT5jbGVhclJlc3VsdHNSZWN1
cnNpdmUoZWZmZWN0KTsKIAogICAgICAgICAvLyBSZXBhaW50IHRoZSBpbWFnZSBvbiB0aGUgc2Ny
ZWVuLgotICAgICAgICBtYXJrQ2xpZW50Rm9ySW52YWxpZGF0aW9uKGl0LT5rZXksIFJlcGFpbnRJ
bnZhbGlkYXRpb24pOworICAgICAgICBtYXJrQ2xpZW50Rm9ySW52YWxpZGF0aW9uKCpvYmplY3RG
aWx0ZXJEYXRhUGFpci5rZXksIFJlcGFpbnRJbnZhbGlkYXRpb24pOwogICAgIH0KICAgICBtYXJr
QWxsQ2xpZW50TGF5ZXJzRm9ySW52YWxpZGF0aW9uKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCShy
ZXZpc2lvbiAxNjA2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGlj
OgogICAgIFNWR0ZpbHRlckVsZW1lbnQmIGZpbHRlckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0
b1NWR0ZpbHRlckVsZW1lbnQoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OmVsZW1lbnQoKSk7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKGJvb2wgbWFy
a0ZvckludmFsaWRhdGlvbiA9IHRydWUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnRG
cm9tQ2FjaGUoUmVuZGVyT2JqZWN0KiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSk7
CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QmLCBi
b29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBs
eVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29u
dGV4dComLCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1vZGUpIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCBwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgR3JhcGhpY3NDb250ZXh0
KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSwgY29uc3QgUGF0aCosIGNvbnN0IFJlbmRl
clNWR1NoYXBlKikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAJKHJldmlzaW9u
IDE2MDYxNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VHcmFkaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDEwICs1MCw5IEBAIHZvaWQgUmVu
ZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6cmVtb3ZlQWwKICAgICBtYXJrQWxsQ2xpZW50c0Zvcklu
dmFsaWRhdGlvbihtYXJrRm9ySW52YWxpZGF0aW9uID8gUmVwYWludEludmFsaWRhdGlvbiA6IFBh
cmVudE9ubHlJbnZhbGlkYXRpb24pOwogfQogCi12b2lkIFJlbmRlclNWR1Jlc291cmNlR3JhZGll
bnQ6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QqIGNsaWVudCwgYm9vbCBtYXJr
Rm9ySW52YWxpZGF0aW9uKQordm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50OjpyZW1vdmVD
bGllbnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0JiBjbGllbnQsIGJvb2wgbWFya0ZvckludmFsaWRh
dGlvbikKIHsKLSAgICBBU1NFUlQoY2xpZW50KTsKLSAgICBtX2dyYWRpZW50TWFwLnJlbW92ZShj
bGllbnQpOworICAgIG1fZ3JhZGllbnRNYXAucmVtb3ZlKCZjbGllbnQpOwogICAgIG1hcmtDbGll
bnRGb3JJbnZhbGlkYXRpb24oY2xpZW50LCBtYXJrRm9ySW52YWxpZGF0aW9uID8gUmVwYWludElu
dmFsaWRhdGlvbiA6IFBhcmVudE9ubHlJbnZhbGlkYXRpb24pOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3Jh
ZGllbnQuaAkocmV2aXNpb24gMTYwNjE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4
LDcgQEAgcHVibGljOgogICAgIFNWR0dyYWRpZW50RWxlbWVudCYgZ3JhZGllbnRFbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHR3JhZGllbnRFbGVtZW50Jj4oUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXI6OmVsZW1lbnQoKSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVBbGxDbGllbnRzRnJvbUNhY2hlKGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpIE9W
RVJSSURFIEZJTkFMOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVu
ZGVyT2JqZWN0KiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSkgT1ZFUlJJREUgRklO
QUw7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3Qm
LCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKSBPVkVSUklERSBGSU5BTDsKIAogICAg
IHZpcnR1YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJT
dHlsZSYsIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1vZGUpIE9W
RVJSSURFIEZJTkFMOwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJF
bGVtZW50JiwgR3JhcGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSwg
Y29uc3QgUGF0aCosIGNvbnN0IFJlbmRlclNWR1NoYXBlKikgT1ZFUlJJREUgRklOQUw7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmNwcAkocmV2aXNpb24gMTYwNjE2KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY0LDkgKzY0LDggQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6cmVtb3ZlQWxsQwog
ICAgIG1hcmtBbGxDbGllbnRzRm9ySW52YWxpZGF0aW9uKG1hcmtGb3JJbnZhbGlkYXRpb24gPyBM
YXlvdXRBbmRCb3VuZGFyaWVzSW52YWxpZGF0aW9uIDogUGFyZW50T25seUludmFsaWRhdGlvbik7
CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OnJlbW92ZUNsaWVudEZyb21DYWNo
ZShSZW5kZXJPYmplY3QqIGNsaWVudCwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uKQordm9pZCBS
ZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKFJlbmRlck9iamVj
dCYgY2xpZW50LCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24pCiB7Ci0gICAgQVNTRVJUKGNsaWVu
dCk7CiAgICAgbWFya0NsaWVudEZvckludmFsaWRhdGlvbihjbGllbnQsIG1hcmtGb3JJbnZhbGlk
YXRpb24gPyBCb3VuZGFyaWVzSW52YWxpZGF0aW9uIDogUGFyZW50T25seUludmFsaWRhdGlvbik7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VNYXJrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlTWFya2VyLmgJKHJldmlzaW9uIDE2MDYxNikKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgU1ZHTWFya2VyRWxlbWVudCYgbWFya2Vy
RWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRvU1ZHTWFya2VyRWxlbWVudChSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lcjo6ZWxlbWVudCgpKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFs
bENsaWVudHNGcm9tQ2FjaGUoYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSk7Ci0gICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QqLCBib29sIG1h
cmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50
RnJvbUNhY2hlKFJlbmRlck9iamVjdCYsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUp
OwogCiAgICAgdm9pZCBkcmF3KFBhaW50SW5mbyYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFz
a2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlTWFza2VyLmNwcAkocmV2aXNpb24gMTYwNjE2KQorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU5LDEwICs1OSw5IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OnJlbW92
ZUFsbEMKICAgICBtYXJrQWxsQ2xpZW50c0ZvckludmFsaWRhdGlvbihtYXJrRm9ySW52YWxpZGF0
aW9uID8gTGF5b3V0QW5kQm91bmRhcmllc0ludmFsaWRhdGlvbiA6IFBhcmVudE9ubHlJbnZhbGlk
YXRpb24pOwogfQogCi12b2lkIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpyZW1vdmVDbGllbnRG
cm9tQ2FjaGUoUmVuZGVyT2JqZWN0KiBjbGllbnQsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbikK
K3ZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5k
ZXJPYmplY3QmIGNsaWVudCwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uKQogewotICAgIEFTU0VS
VChjbGllbnQpOwotICAgIG1fbWFza2VyLnJlbW92ZShjbGllbnQpOworICAgIG1fbWFza2VyLnJl
bW92ZSgmY2xpZW50KTsKIAogICAgIG1hcmtDbGllbnRGb3JJbnZhbGlkYXRpb24oY2xpZW50LCBt
YXJrRm9ySW52YWxpZGF0aW9uID8gQm91bmRhcmllc0ludmFsaWRhdGlvbiA6IFBhcmVudE9ubHlJ
bnZhbGlkYXRpb24pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZU1hc2tlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAkocmV2aXNpb24gMTYwNjE2KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBTVkdNYXNrRWxlbWVu
dCYgbWFza0VsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0b1NWR01hc2tFbGVtZW50KFJlbmRlclNW
R1Jlc291cmNlQ29udGFpbmVyOjplbGVtZW50KCkpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQWxsQ2xpZW50c0Zyb21DYWNoZShib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKTsK
LSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50RnJvbUNhY2hlKFJlbmRlck9iamVjdCosIGJv
b2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVD
bGllbnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0JiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0g
dHJ1ZSk7CiAgICAgdmlydHVhbCBib29sIGFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIGNv
bnN0IFJlbmRlclN0eWxlJiwgR3JhcGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291
cmNlTW9kZSkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBGbG9hdFJlY3QgcmVzb3VyY2VCb3VuZGlu
Z0JveChjb25zdCBSZW5kZXJPYmplY3QmKSBPVkVSUklERTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
LmNwcAkocmV2aXNpb24gMTYwNjE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NCwxMCArNTQs
OSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlUGF0dGVybjo6cmVtb3ZlQWxsCiAgICAgbWFya0Fs
bENsaWVudHNGb3JJbnZhbGlkYXRpb24obWFya0ZvckludmFsaWRhdGlvbiA/IFJlcGFpbnRJbnZh
bGlkYXRpb24gOiBQYXJlbnRPbmx5SW52YWxpZGF0aW9uKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdS
ZXNvdXJjZVBhdHRlcm46OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QqIGNsaWVu
dCwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uKQordm9pZCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm46OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QmIGNsaWVudCwgYm9vbCBtYXJr
Rm9ySW52YWxpZGF0aW9uKQogewotICAgIEFTU0VSVChjbGllbnQpOwotICAgIG1fcGF0dGVybk1h
cC5yZW1vdmUoY2xpZW50KTsKKyAgICBtX3BhdHRlcm5NYXAucmVtb3ZlKCZjbGllbnQpOwogICAg
IG1hcmtDbGllbnRGb3JJbnZhbGlkYXRpb24oY2xpZW50LCBtYXJrRm9ySW52YWxpZGF0aW9uID8g
UmVwYWludEludmFsaWRhdGlvbiA6IFBhcmVudE9ubHlJbnZhbGlkYXRpb24pOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VQYXR0ZXJuLmgJKHJldmlzaW9uIDE2MDYxNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDcgKzQ5LDcgQEAgcHVibGljOgogICAgIFNWR1BhdHRlcm5FbGVtZW50JiBwYXR0ZXJuRWxlbWVu
dCgpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUo
Ym9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92
ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QqLCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24g
PSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50RnJvbUNhY2hlKFJlbmRlck9i
amVjdCYsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpOwogCiAgICAgdmlydHVhbCBi
b29sIGFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgR3Jh
cGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSkgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBHcmFwaGlj
c0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlLCBjb25zdCBQYXRoKiwgY29u
c3QgUmVuZGVyU1ZHU2hhcGUqKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IuaAko
cmV2aXNpb24gMTYwNjE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVNvbGlkQ29sb3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB+UmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yKCk7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZShib29sID0gdHJ1ZSkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QqLCBi
b29sID0gdHJ1ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShS
ZW5kZXJPYmplY3QmLCBib29sID0gdHJ1ZSkgeyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlS
ZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRl
eHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKSBPVkVSUklERTsKICAgICB2aXJ0dWFs
IHZvaWQgcG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIEdyYXBoaWNzQ29udGV4dCom
LCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1vZGUsIGNvbnN0IFBhdGgqLCBjb25zdCBSZW5kZXJT
VkdTaGFwZSopIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9T
VkdSZW5kZXJTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCShyZXZpc2lvbiAxNjA2MTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTQsNyArMTk0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGludmFsaWRhdGVSZXNvdXJj
ZXNPZgogewogICAgIEFTU0VSVCghc3RhcnQubmVlZHNMYXlvdXQoKSk7CiAgICAgaWYgKFNWR1Jl
c291cmNlcyogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0Zv
clJlbmRlck9iamVjdChzdGFydCkpCi0gICAgICAgIHJlc291cmNlcy0+cmVtb3ZlQ2xpZW50RnJv
bUNhY2hlKCZzdGFydCwgZmFsc2UpOworICAgICAgICByZXNvdXJjZXMtPnJlbW92ZUNsaWVudEZy
b21DYWNoZShzdGFydCwgZmFsc2UpOwogCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0g
c3RhcnQuZmlyc3RDaGlsZFNsb3coKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5n
KCkpCiAgICAgICAgIGludmFsaWRhdGVSZXNvdXJjZXNPZkNoaWxkcmVuKCpjaGlsZCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCShyZXZp
c2lvbiAxNjA2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNl
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw3ICsyODAsNyBAQCBib29sIFNWR1Jlc291cmNl
czo6YnVpbGRDYWNoZWRSZXNvdXJjZXMoCiAgICAgcmV0dXJuIGZvdW5kUmVzb3VyY2VzOwogfQog
Ci12b2lkIFNWR1Jlc291cmNlczo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKFJlbmRlck9iamVjdCog
b2JqZWN0LCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24pIGNvbnN0Cit2b2lkIFNWR1Jlc291cmNl
czo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKFJlbmRlck9iamVjdCYgb2JqZWN0LCBib29sIG1hcmtG
b3JJbnZhbGlkYXRpb24pIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NsaXBwZXJGaWx0ZXJNYXNrZXJE
YXRhICYmICFtX21hcmtlckRhdGEgJiYgIW1fZmlsbFN0cm9rZURhdGEgJiYgIW1fbGlua2VkUmVz
b3VyY2UpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVzb3VyY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZXNvdXJjZXMuaAkocmV2aXNpb24gMTYwNjE2KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBidWlsZFNldE9mUmVzb3VyY2VzKEhhc2hTZXQ8UmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIqPiYpOwogCiAgICAgLy8gTWV0aG9kcyBvcGVyYXRpbmcgb24g
YWxsIGNhY2hlZCByZXNvdXJjZXMKLSAgICB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5k
ZXJPYmplY3QqLCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKSBjb25zdDsKKyAgICB2
b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QmLCBib29sIG1hcmtGb3JJbnZh
bGlkYXRpb24gPSB0cnVlKSBjb25zdDsKICAgICB2b2lkIHJlc291cmNlRGVzdHJveWVkKFJlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyJik7CiAKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAkocmV2
aXNpb24gMTYwNjE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJj
ZXNDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIFNWR1Jl
c291cmNlc0NhY2hlOjpjbGllbnRMYXlvdXRDaGFuCiAgICAgLy8gSW52YWxpZGF0ZSB0aGUgcmVz
b3VyY2VzIGlmIGVpdGhlciB0aGUgUmVuZGVyRWxlbWVudCBpdHNlbGYgY2hhbmdlZCwKICAgICAv
LyBvciB3ZSBoYXZlIGZpbHRlciByZXNvdXJjZXMsIHdoaWNoIGNvdWxkIGRlcGVuZCBvbiB0aGUg
bGF5b3V0IG9mIGNoaWxkcmVuLgogICAgIGlmIChyZW5kZXJlci5zZWxmTmVlZHNMYXlvdXQoKSkK
LSAgICAgICAgcmVzb3VyY2VzLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUoJnJlbmRlcmVyKTsKKyAg
ICAgICAgcmVzb3VyY2VzLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUocmVuZGVyZXIpOwogfQogCiBz
dGF0aWMgaW5saW5lIGJvb2wgcmVuZGVyZXJDYW5IYXZlUmVzb3VyY2VzKFJlbmRlck9iamVjdCYg
cmVuZGVyZXIpCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xp
ZW50U3R5bGVDaGFuZwogICAgICAgICBjYWNoZS0+YWRkUmVzb3VyY2VzRnJvbVJlbmRlcmVyKHJl
bmRlcmVyLCBuZXdTdHlsZSk7CiAgICAgfQogCi0gICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigmcmVuZGVyZXIsIGZhbHNlKTsK
KyAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52
YWxpZGF0aW9uKHJlbmRlcmVyLCBmYWxzZSk7CiAKICAgICBpZiAocmVuZGVyZXIuZWxlbWVudCgp
ICYmICFyZW5kZXJlci5lbGVtZW50KCktPmlzU1ZHRWxlbWVudCgpKQogICAgICAgICByZW5kZXJl
ci5lbGVtZW50KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoU3ludGhldGljU3R5bGVDaGFuZ2UpOwpA
QCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgU1ZHUmVzb3VyY2VzQ2FjaGU6OmNsaWVudFdhc0FkZGVk
VG8KICAgICBpZiAocmVuZGVyZXIuaXNBbm9ueW1vdXMoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFs
aWRhdGlvbigmcmVuZGVyZXIsIGZhbHNlKTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zv
ckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyLCBmYWxzZSk7CiAK
ICAgICBpZiAoIXJlbmRlcmVyQ2FuSGF2ZVJlc291cmNlcyhyZW5kZXJlcikpCiAgICAgICAgIHJl
dHVybjsKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lkIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRX
aWxsQmVSZW1vCiAgICAgaWYgKHJlbmRlcmVyLmlzQW5vbnltb3VzKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3Vy
Y2VJbnZhbGlkYXRpb24oJnJlbmRlcmVyLCBmYWxzZSk7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlciwgZmFs
c2UpOwogCiAgICAgaWYgKCFyZW5kZXJlckNhbkhhdmVSZXNvdXJjZXMocmVuZGVyZXIpKQogICAg
ICAgICByZXR1cm47CkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6
Y2xpZW50RGVzdHJveWVkKAogewogICAgIFNWR1Jlc291cmNlcyogcmVzb3VyY2VzID0gU1ZHUmVz
b3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlck9iamVjdChyZW5kZXJlcik7CiAg
ICAgaWYgKHJlc291cmNlcykKLSAgICAgICAgcmVzb3VyY2VzLT5yZW1vdmVDbGllbnRGcm9tQ2Fj
aGUoJnJlbmRlcmVyKTsKKyAgICAgICAgcmVzb3VyY2VzLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUo
cmVuZGVyZXIpOwogCiAgICAgU1ZHUmVzb3VyY2VzQ2FjaGUqIGNhY2hlID0gcmVzb3VyY2VzQ2Fj
aGVGcm9tUmVuZGVyT2JqZWN0KHJlbmRlcmVyKTsKICAgICBjYWNoZS0+cmVtb3ZlUmVzb3VyY2Vz
RnJvbVJlbmRlcmVyKHJlbmRlcmVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAkocmV2aXNpb24gMTYwNjE2KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mjg5LDI2ICsyODksMjQgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlSZXN1
bAogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSB0YXJnZXRFbGVtZW50LT5yZW5kZXJlcigpKQotICAgICAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKHJlbmRlcmVyKTsKKyAgICBpZiAoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSB0YXJn
ZXRFbGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zv
ckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiAKICAgICBB
ZmZpbmVUcmFuc2Zvcm0qIHQgPSB0YXJnZXRFbGVtZW50LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0o
KTsKICAgICBpZiAoIXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIC4uLmV4Y2VwdCBpbiBj
YXNlIHdoZXJlIHdlIGhhdmUgYWRkaXRpb25hbCBpbnN0YW5jZXMgaW4gPHVzZT4gdHJlZXMuCi0g
ICAgY29uc3QgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiYgaW5zdGFuY2VzID0gdGFyZ2V0
RWxlbWVudC0+aW5zdGFuY2VzRm9yRWxlbWVudCgpOwotICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxl
bWVudEluc3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RhbmNlcy5lbmQoKTsKLSAg
ICBmb3IgKEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
aW5zdGFuY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBTVkdFbGVtZW50
KiBzaGFkb3dUcmVlRWxlbWVudCA9ICgqaXQpLT5zaGFkb3dUcmVlRWxlbWVudCgpOworICAgIGZv
ciAoYXV0byBpbnN0YW5jZSA6IHRhcmdldEVsZW1lbnQtPmluc3RhbmNlc0ZvckVsZW1lbnQoKSkg
eworICAgICAgICBTVkdFbGVtZW50KiBzaGFkb3dUcmVlRWxlbWVudCA9IGluc3RhbmNlLT5zaGFk
b3dUcmVlRWxlbWVudCgpOwogICAgICAgICBBU1NFUlQoc2hhZG93VHJlZUVsZW1lbnQpOwogICAg
ICAgICBBZmZpbmVUcmFuc2Zvcm0qIHRyYW5zZm9ybSA9IHNoYWRvd1RyZWVFbGVtZW50LT5zdXBw
bGVtZW50YWxUcmFuc2Zvcm0oKTsKICAgICAgICAgaWYgKCF0cmFuc2Zvcm0pCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgdHJhbnNmb3JtLT5zZXRNYXRyaXgodC0+YSgpLCB0LT5iKCks
IHQtPmMoKSwgdC0+ZCgpLCB0LT5lKCksIHQtPmYoKSk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gc2hhZG93VHJlZUVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAg
aWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gc2hhZG93VHJlZUVsZW1lbnQtPnJlbmRlcmVy
KCkpIHsKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwot
ICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7
CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVs
ZW1lbnQuY3BwCShyZXZpc2lvbiAxNjA2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2ly
Y2xlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMiArMTIwLDEyIEBAIHZvaWQg
U1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmcKIAogICAgIGlmIChpc0xlbmd0aEF0
dHJpYnV0ZSkgewogICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOwotICAg
ICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52
YWxpZGF0aW9uKHJlbmRlcmVyKTsKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgaWYgKFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgICAgIFJlbmRlclNW
R1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJl
bmRlcmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjA2MTYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsMTIg
KzEyNSwxMiBAQCB2b2lkIFNWR0VsbGlwc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuCiAKICAg
ICBpZiAoaXNMZW5ndGhBdHRyaWJ1dGUpIHsKICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hh
cGVVcGRhdGUoKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQ
YXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRl
cmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChTVkdMYW5nU3BhY2U6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNl
OjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOwor
ICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNl
SW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTYwNjE2
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk2LDEwICsxOTYsMTQgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5
RmluaXNoZWQoQwogICAgIEVsZW1lbnQqIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKICAgICBB
U1NFUlQocGFyZW50KTsKIAotICAgIGlmICghcGFyZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpm
aWx0ZXJUYWcpIHx8ICFwYXJlbnQtPnJlbmRlcmVyKCkpCisgICAgaWYgKCFwYXJlbnQtPmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmZpbHRlclRhZykpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbmRl
clNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24o
cGFyZW50LT5yZW5kZXJlcigpKTsKKyAgICBSZW5kZXJFbGVtZW50KiBwYXJlbnRSZW5kZXJlciA9
IHBhcmVudC0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXBhcmVudFJlbmRlcmVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCpwYXJlbnRSZW5kZXJlcik7CiB9CiAKIFBhc3NSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZp
bHRlciogZmlsdGVyKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAxNjA2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTQsOSArMjE0LDkgQEAgdm9pZCBTVkdGRUxp
Z2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKAogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudCA9
IHBhcmVudE5vZGUoKTsKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwotICAgIFJl
bmRlck9iamVjdCogcmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyRWxl
bWVudCogcmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7CiAgICAgaWYgKHJlbmRlcmVyICYm
IHJlbmRlcmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkpCi0gICAgICAgIFJlbmRl
clNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24o
cmVuZGVyZXIpOworICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBh
cmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiB9CiAKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuY3BwCShyZXZpc2lvbiAxNjA2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY1LDExICsxNjUsMTEgQEAgdm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50
KFNWRwogICAgIGlmICghcGFyZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOworICAgIFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRl
cmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24ocmVuZGVyZXIsIGZhbHNlKTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zv
ckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlciwgZmFsc2UpOwog
fQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCShyZXZpc2lvbiAxNjA2MTYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTU1LDEzICs1NSwxMyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBpbmxpbmUg
dm9pZCBpbnZhbGlkYXRlKCkKICAgICB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHByaW1p
dGl2ZVJlbmRlcmVyID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNl
OjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocHJpbWl0aXZlUmVu
ZGVyZXIpOworICAgICAgICBpZiAoUmVuZGVyRWxlbWVudCogcHJpbWl0aXZlUmVuZGVyZXIgPSBy
ZW5kZXJlcigpKQorICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcHJpbWl0aXZlUmVuZGVyZXIpOwogICAgIH0K
IAogICAgIGlubGluZSB2b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlKQogICAgIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcHJp
bWl0aXZlUmVuZGVyZXIgPSByZW5kZXJlcigpKQorICAgICAgICBpZiAoUmVuZGVyRWxlbWVudCog
cHJpbWl0aXZlUmVuZGVyZXIgPSByZW5kZXJlcigpKQogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUqPihwcmltaXRpdmVSZW5kZXJlciktPnBy
aW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlKTsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkocmV2aXNpb24g
MTYwNjE2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDggKzEyMiw4IEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQ6OnN2Z0F0dHJpYnUKICAgICBpZiAoaXNMZW5ndGhBdHRyaWJ1dGUpCiAgICAgICAg
IHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAKLSAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgIFJlbmRlclNWR1Jlc291
cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIp
OworICAgIGlmIChSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisg
ICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAogUmVuZGVyRWxlbWVudCogU1ZHRm9yZWlnbk9i
amVjdEVsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjA2MTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw4
ICs4NSw4IEBAIHZvaWQgU1ZHR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY28KIAogICAg
IFNWR0VsZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3VhcmQo
dGhpcyk7CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCkpCi0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVz
b3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOworICAgIGlmIChSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJr
Rm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAog
UmVuZGVyRWxlbWVudCogU1ZHR0VsZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFBhc3NSZWY8UmVuZGVy
U3R5bGU+IHN0eWxlKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDE2MDYxNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGlj
c0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTMgKzEzNCwxMyBAQCB2b2lkIFNW
R0dyYXBoaWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhCiAgICAgaWYgKFNWR1Rlc3RzOjpoYW5k
bGVBdHRyaWJ1dGVDaGFuZ2UodGhpcywgYXR0ck5hbWUpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCk7Ci0gICAgaWYgKCFvYmplY3QpCisg
ICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIGlmICgh
cmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6dHJhbnNmb3JtQXR0cikgewotICAgICAgICBvYmplY3QtPnNldE5lZWRzVHJhbnNmb3JtVXBk
YXRlKCk7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50
UmVzb3VyY2VJbnZhbGlkYXRpb24ob2JqZWN0KTsKKyAgICAgICAgcmVuZGVyZXItPnNldE5lZWRz
VHJhbnNmb3JtVXBkYXRlKCk7CisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5
b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE2MDYxNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQsMjAgKzE1NCwyMCBAQCB2b2lkIFNWR0ltYWdlRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJFbGVt
ZW50KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzTGVuZ3RoQXR0cmlidXRlKSB7CiAgICAgICAgIGlm
ICh0b1JlbmRlclNWR0ltYWdlKHJlbmRlcmVyKS0+dXBkYXRlSW1hZ2VWaWV3cG9ydCgpKQotICAg
ICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBy
ZXNlcnZlQXNwZWN0UmF0aW9BdHRyCiAgICAgICAgIHx8IFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkKICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3Vy
Y2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7
CisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3Vy
Y2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjA2MTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjQsMTIgKzEyNCwxMiBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkCiAKICAgICBpZiAoaXNMZW5ndGhBdHRyaWJ1dGUpIHsKICAgICAgICAgcmVuZGVyZXItPnNl
dE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oKnJlbmRlcmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChTVkdMYW5n
U3BhY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFJlbmRlclNW
R1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVu
ZGVyZXIpOworICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVu
dFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkocmV2aXNpb24gMTYw
NjE2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQKICAgICB9CiAKICAgICBpZiAocmVuZGVyZXIpCi0gICAgICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVy
ZXIpOworICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiB9CiAKIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6
OmludmFsaWRhdGVNUGF0aERlcGVuZGVuY2llcygpCkBAIC0yODYsMTAgKzI4Niw5IEBAIHZvaWQg
U1ZHUGF0aEVsZW1lbnQ6OmludmFsaWRhdGVNUGF0aERlcGUKICAgICAvLyA8bXBhdGg+IGNhbiBv
bmx5IHJlZmVyZW5jZSA8cGF0aD4gYnV0IHRoaXMgZGVwZW5kZW5jeSBpcyBub3QgaGFuZGxlZCBp
bgogICAgIC8vIG1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbiBzbyB3
ZSB1cGRhdGUgYW55IG1wYXRoIGRlcGVuZGVuY2llcyBtYW51YWxseS4KICAgICBpZiAoSGFzaFNl
dDxTVkdFbGVtZW50Kj4qIGRlcGVuZGVuY2llcyA9IGRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5z
aW9ucygpLT5zZXRPZkVsZW1lbnRzUmVmZXJlbmNpbmdUYXJnZXQodGhpcykpIHsKLSAgICAgICAg
SGFzaFNldDxTVkdFbGVtZW50Kj46Oml0ZXJhdG9yIGVuZCA9IGRlcGVuZGVuY2llcy0+ZW5kKCk7
Ci0gICAgICAgIGZvciAoSGFzaFNldDxTVkdFbGVtZW50Kj46Oml0ZXJhdG9yIGl0ID0gZGVwZW5k
ZW5jaWVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICgoKml0
KS0+aGFzVGFnTmFtZShTVkdOYW1lczo6bXBhdGhUYWcpKQotICAgICAgICAgICAgICAgIHRvU1ZH
TVBhdGhFbGVtZW50KCppdCktPnRhcmdldFBhdGhDaGFuZ2VkKCk7CisgICAgICAgIGZvciAoYXV0
byBlbGVtZW50IDogKmRlcGVuZGVuY2llcykgeworICAgICAgICAgICAgaWYgKGVsZW1lbnQtPmhh
c1RhZ05hbWUoU1ZHTmFtZXM6Om1wYXRoVGFnKSkKKyAgICAgICAgICAgICAgICB0b1NWR01QYXRo
RWxlbWVudChlbGVtZW50KS0+dGFyZ2V0UGF0aENoYW5nZWQoKTsKICAgICAgICAgfQogICAgIH0K
IH0KQEAgLTM4OCw3ICszODcsNyBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpwYXRoU2VnTGlzdENo
YW5nZWQoCiAgICAgICAgIHJldHVybjsKIAogICAgIHJlbmRlcmVyLT5zZXROZWVkc1NoYXBlVXBk
YXRlKCk7Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogfQogCiBG
bG9hdFJlY3QgU1ZHUGF0aEVsZW1lbnQ6OmdldEJCb3goU3R5bGVVcGRhdGVTdHJhdGVneSBzdHls
ZVVwZGF0ZVN0cmF0ZWd5KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNjA2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsMTIgKzExOCwxMiBAQCB2b2lkIFNWR1BvbHlFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnBvaW50c0F0dHIpIHsKICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsK
LSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJr
Rm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChTVkdMYW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5
b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOworICAgICAgICBSZW5k
ZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9u
KCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTYwNjE2KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM4LDEyICsxMzgs
MTIgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZAogCiAgICAgaWYg
KGlzTGVuZ3RoQXR0cmlidXRlKSB7CiAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1NoYXBlVXBk
YXRlKCk7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50
UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOworICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoU1ZHTGFuZ1NwYWNlOjppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKKyAgICAg
ICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFs
aWRhdGlvbigqcmVuZGVyZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjA2MTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw4ICsz
MDQsOCBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoCiAgICAgICAg
IHx8IFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkKICAgICAgICAgfHwg
U1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkK
ICAgICAgICAgfHwgU1ZHWm9vbUFuZFBhbjo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
LSAgICAgICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKCkpOwor
ICAgICAgICBpZiAoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQor
ICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC02ODMsNyArNjgzLDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1NWR0VsZW1lbnQ6OnZpZXdCb3hU
bwogCiB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldHVwSW5pdGlhbFZpZXcoY29uc3QgU3RyaW5nJiBm
cmFnbWVudElkZW50aWZpZXIsIEVsZW1lbnQqIGFuY2hvck5vZGUpCiB7Ci0gICAgUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIFNWR1ZpZXdTcGVjKiB2aWV3ID0gbV92aWV3
U3BlYy5nZXQoKTsKICAgICBpZiAodmlldykKICAgICAgICAgdmlldy0+cmVzZXQoKTsKQEAgLTY5
NCw3ICs2OTQsNyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldHVwSW5pdGlhbFZpZXcoY29uCiAg
ICAgaWYgKGZyYWdtZW50SWRlbnRpZmllci5zdGFydHNXaXRoKCJ4cG9pbnRlcigiKSkgewogICAg
ICAgICAvLyBGSVhNRTogWFBvaW50ZXIgcmVmZXJlbmNlcyBhcmUgaWdub3JlZCAoaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDkxKQogICAgICAgICBpZiAocmVuZGVy
ZXIgJiYgaGFkVXNlQ3VycmVudFZpZXcpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKKyAg
ICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3Vy
Y2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
NzA4LDcgKzcwOCw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0dXBJbml0aWFsVmlldyhjb24K
ICAgICAgICAgICAgIHZpZXctPnJlc2V0KCk7CiAKICAgICAgICAgaWYgKHJlbmRlcmVyICYmICho
YWRVc2VDdXJyZW50VmlldyB8fCBtX3VzZUN1cnJlbnRWaWV3KSkKLSAgICAgICAgICAgIFJlbmRl
clNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24o
cmVuZGVyZXIpOworICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC03MjMsOCArNzIzLDggQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzZXR1cElu
aXRpYWxWaWV3KGNvbgogICAgICAgICAgICAgICAgIFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHN0YXRp
Y19jYXN0PFNWR1NWR0VsZW1lbnQqPihlbGVtZW50KTsKICAgICAgICAgICAgICAgICBzdmctPmlu
aGVyaXRWaWV3QXR0cmlidXRlcyh2aWV3RWxlbWVudCk7CiAKLSAgICAgICAgICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN2Zy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAg
ICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUlu
dmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgICAgICAgICAgICAgaWYgKFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyID0gc3ZnLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAgICAgICBSZW5kZXJT
VkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpy
ZW5kZXJlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjA2MTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04OSwxMSArODksOSBAQCB2b2lkIFNWR1N0b3BFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
CiAKICAgICBTVkdFbGVtZW50SW5zdGFuY2U6OkludmFsaWRhdGlvbkd1YXJkIGludmFsaWRhdGlv
bkd1YXJkKHRoaXMpOwogCi0gICAgaWYgKCFyZW5kZXJlcigpKQotICAgICAgICByZXR1cm47Ci0K
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsKLSAgICAgICAgUmVu
ZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlv
bihyZW5kZXJlcigpKTsKKyAgICAgICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5
b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNjA2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsOCArMjEyLDggQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZAogCiAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKLSAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAg
ICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgICAgIGlmIChSZW5kZXJFbGVtZW50KiByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
Q29udGVudEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0Q29udGVudEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjA2MTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDgg
KzI3NCw4IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGUKICAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyKQogICAgICAgICBtX3NwZWNp
ZmllZFRleHRMZW5ndGggPSBtX3RleHRMZW5ndGgudmFsdWU7CiAKLSAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgIFJlbmRlclNWR1Jlc291
cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIp
OworICAgIGlmIChSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisg
ICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAogYm9vbCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OnNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRQYXRoRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MDYxNikKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsOCAr
MTIzLDggQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYQogICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyKQogICAgICAgICB1cGRhdGVS
ZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2Jq
ZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihvYmplY3QpOworICAgIGlmIChSZW5kZXJF
bGVtZW50KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRl
cmVyKTsKIH0KIAogUmVuZGVyRWxlbWVudCogU1ZHVGV4dFBhdGhFbGVtZW50OjpjcmVhdGVSZW5k
ZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MDYxNikK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM1LDE0ICsxMzUsMTQgQEAgdm9pZCBTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50OjpzdmdBdHRyaQogICAgIGlmICh1cGRhdGVSZWxhdGl2ZUxlbmd0aHMpCiAgICAgICAg
IHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAKLSAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJu
OwogCiAgICAgaWYgKHVwZGF0ZVJlbGF0aXZlTGVuZ3RocyB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6cm90YXRlQXR0cikgewogICAgICAgICBpZiAoUmVuZGVyU1ZHVGV4dCogdGV4dFJlbmRlcmVy
ID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKHJlbmRlcmVyKSkK
ICAgICAgICAgICAgIHRleHRSZW5kZXJlci0+c2V0TmVlZHNQb3NpdGlvbmluZ1ZhbHVlc1VwZGF0
ZSgpOwotICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVyKTsKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiAxNjA2MTYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNSwxNCArMjI1LDE0IEBAIHZvaWQgU1ZHVXNl
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCgKIAogICAgIFNWR0VsZW1lbnRJbnN0YW5jZTo6
SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7CiAKLSAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJFbGVtZW50KiBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp4QXR0cgogICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIKICAgICAgICAg
fHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0cgogICAgICAgICB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJ
bmZvcm1hdGlvbigpOwogICAgICAgICBpZiAocmVuZGVyZXIpCi0gICAgICAgICAgICBSZW5kZXJT
VkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJl
bmRlcmVyKTsKKyAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5k
UGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219292</attachid>
            <date>2013-12-15 20:38:20 -0800</date>
            <delta_ts>2013-12-16 11:20:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-125762-20131215203821.patch</filename>
            <type>text/plain</type>
            <size>52731</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MDYyNikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNCBAQAorMjAxMy0xMi0xNSAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIENUVEU6IENvbnZlcnQgbW9yZSBvZiBT
VkcgdG8gdXNlIHJlZmVyZW5jZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEyNTc2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJlbW92
ZUZyb21DYWNoZUFuZEludmFsaWRhdGVEZXBlbmRlbmNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5oOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6cmVtb3ZlQ2xpZW50RnJvbUNh
Y2hlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5o
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6Om1hcmtBbGxD
bGllbnRzRm9ySW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyOjptYXJrQWxsQ2xpZW50TGF5ZXJzRm9ySW52YWxpZGF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjptYXJrQ2xpZW50Rm9ySW52
YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVy
OjpyZW1vdmVDbGllbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
RmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpy
ZW1vdmVDbGllbnRGcm9tQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1Jlc291cmNlRmlsdGVyOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmg6CisgICAgICAgICogcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OnJlbW92ZUNsaWVudEZyb21DYWNoZSk6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50Lmg6CisgICAgICAg
ICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hcmtlcjo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmg6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuOjpyZW1vdmVDbGllbnRGcm9t
Q2FjaGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJu
Lmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvcjo6cmVtb3Zl
Q2xpZW50RnJvbUNhY2hlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBv
cnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZVJlc291cmNlc09mQ2hpbGRyZW4p
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1Jlc291cmNlczo6cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlcy5oOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
UmVzb3VyY2VzQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6
OmNsaWVudExheW91dENoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzQ2Fj
aGU6OmNsaWVudFN0eWxlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXND
YWNoZTo6Y2xpZW50V2FzQWRkZWRUb1RyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3Vy
Y2VzQ2FjaGU6OmNsaWVudFdpbGxCZVJlbW92ZWRGcm9tVHJlZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50RGVzdHJveWVkKToKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHQ2ly
Y2xlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDaXJjbGVFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHN2Zy9TVkdG
RUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGaWx0ZXJQcmlt
aXRpdmVQYXJlbnQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjppbnZhbGlkYXRlTVBhdGhEZXBlbmRl
bmNpZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnBhdGhTZWdMaXN0Q2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BvbHlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHUmVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVjdEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdTVkdFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c2V0dXBJbml0aWFsVmlldyk6CisgICAgICAg
ICogc3ZnL1NWR1N0b3BFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0b3BFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVFJlZkVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisKIDIwMTMtMTItMTUgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFtXSW5dIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIx
NjA1OTkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
SW1hZ2UuY3BwCShyZXZpc2lvbiAxNjA2MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ltYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDEwICsxOTUsMTAg
QEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZQogICAgIC8vIFRoZSBp
bWFnZSByZXNvdXJjZSBkZWZhdWx0cyB0byBudWxsSW1hZ2UgdW50aWwgdGhlIHJlc291cmNlIGFy
cml2ZXMuCiAgICAgLy8gVGhpcyBlbXB0eSBpbWFnZSBtYXkgYmUgY2FjaGVkIGJ5IFNWRyByZXNv
dXJjZXMgd2hpY2ggbXVzdCBiZSBpbnZhbGlkYXRlZC4KICAgICBpZiAoU1ZHUmVzb3VyY2VzKiBy
ZXNvdXJjZXMgPSBTVkdSZXNvdXJjZXNDYWNoZTo6Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyT2Jq
ZWN0KCp0aGlzKSkKLSAgICAgICAgcmVzb3VyY2VzLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUodGhp
cyk7CisgICAgICAgIHJlc291cmNlcy0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKCp0aGlzKTsKIAog
ICAgIC8vIEV2ZW50dWFsbHkgbm90aWZ5IHBhcmVudCByZXNvdXJjZXMsIHRoYXQgd2UndmUgY2hh
bmdlZC4KLSAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKHRoaXMsIGZhbHNlKTsKKyAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCp0aGlzLCBmYWxzZSk7CiAK
ICAgICAvLyBVcGRhdGUgdGhlIFNWR0ltYWdlQ2FjaGUgc2l6ZUFuZFNjYWxlcyBlbnRyeSBpbiBj
YXNlIGltYWdlIGxvYWRpbmcgZmluaXNoZWQgYWZ0ZXIgbGF5b3V0LgogICAgIC8vIChodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0ODkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAkocmV2aXNp
b24gMTYwNjI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNv
dXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MSwxMyArMTYxLDEzIEBAIHN0YXRpYyBpbmxp
bmUgdm9pZCByZW1vdmVGcm9tQ2FjaGVBbmRJbnYKICAgICBpZiAoU1ZHUmVzb3VyY2VzKiByZXNv
dXJjZXMgPSBTVkdSZXNvdXJjZXNDYWNoZTo6Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyT2JqZWN0
KG9iamVjdCkpIHsKICNpZiBFTkFCTEUoRklMVEVSUykKICAgICAgICAgaWYgKFJlbmRlclNWR1Jl
c291cmNlRmlsdGVyKiBmaWx0ZXIgPSByZXNvdXJjZXMtPmZpbHRlcigpKQotICAgICAgICAgICAg
ZmlsdGVyLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUoJm9iamVjdCk7CisgICAgICAgICAgICBmaWx0
ZXItPnJlbW92ZUNsaWVudEZyb21DYWNoZShvYmplY3QpOwogI2VuZGlmCiAgICAgICAgIGlmIChS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2VyID0gcmVzb3VyY2VzLT5tYXNrZXIoKSkKLSAg
ICAgICAgICAgIG1hc2tlci0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKCZvYmplY3QpOworICAgICAg
ICAgICAgbWFza2VyLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUob2JqZWN0KTsKIAogICAgICAgICBp
ZiAoUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyID0gcmVzb3VyY2VzLT5jbGlwcGVy
KCkpCi0gICAgICAgICAgICBjbGlwcGVyLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUoJm9iamVjdCk7
CisgICAgICAgICAgICBjbGlwcGVyLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUob2JqZWN0KTsKICAg
ICB9CiAKICAgICBpZiAoIW9iamVjdC5ub2RlKCkgfHwgIW9iamVjdC5ub2RlKCktPmlzU1ZHRWxl
bWVudCgpKQpAQCAtMTc2LDIzICsxNzYsMjIgQEAgc3RhdGljIGlubGluZSB2b2lkIHJlbW92ZUZy
b21DYWNoZUFuZEludgogICAgIGlmICghZGVwZW5kZW5jaWVzKQogICAgICAgICByZXR1cm47CiAg
ICAgZm9yIChhdXRvIGVsZW1lbnQgOiAqZGVwZW5kZW5jaWVzKSB7Ci0gICAgICAgIGlmIChSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24ocmVuZGVyZXIsIG5lZWRzTGF5b3V0KTsKKyAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSBl
bGVtZW50LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIsIG5lZWRzTGF5
b3V0KTsKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihSZW5kZXJPYmplY3QqIG9iamVjdCwgYm9vbCBu
ZWVkc0xheW91dCkKK3ZvaWQgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbihSZW5kZXJPYmplY3QmIG9iamVjdCwgYm9vbCBuZWVkc0xh
eW91dCkKIHsKLSAgICBBU1NFUlQob2JqZWN0KTsKLSAgICBBU1NFUlQob2JqZWN0LT5ub2RlKCkp
OworICAgIEFTU0VSVChvYmplY3Qubm9kZSgpKTsKIAotICAgIGlmIChuZWVkc0xheW91dCAmJiAh
b2JqZWN0LT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVl
ZHNMYXlvdXQoKTsKKyAgICBpZiAobmVlZHNMYXlvdXQgJiYgIW9iamVjdC5kb2N1bWVudEJlaW5n
RGVzdHJveWVkKCkpCisgICAgICAgIG9iamVjdC5zZXROZWVkc0xheW91dCgpOwogCi0gICAgcmVt
b3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVuZGVuY2llcygqb2JqZWN0LCBuZWVkc0xheW91
dCk7CisgICAgcmVtb3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0ZURlcGVuZGVuY2llcyhvYmplY3Qs
IG5lZWRzTGF5b3V0KTsKIAogICAgIC8vIEludmFsaWRhdGUgcmVzb3VyY2VzIGluIGFuY2VzdG9y
IGNoYWluLCBpZiBuZWVkZWQuCi0gICAgUmVuZGVyT2JqZWN0KiBjdXJyZW50ID0gb2JqZWN0LT5w
YXJlbnQoKTsKKyAgICBSZW5kZXJPYmplY3QqIGN1cnJlbnQgPSBvYmplY3QucGFyZW50KCk7CiAg
ICAgd2hpbGUgKGN1cnJlbnQpIHsKICAgICAgICAgcmVtb3ZlRnJvbUNhY2hlQW5kSW52YWxpZGF0
ZURlcGVuZGVuY2llcygqY3VycmVudCwgbmVlZHNMYXlvdXQpOwogCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5oCShyZXZpc2lvbiAx
NjA2MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
flJlbmRlclNWR1Jlc291cmNlKCkgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsQ2xp
ZW50c0Zyb21DYWNoZShib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QqLCBib29sIG1h
cmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNs
aWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QmLCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0
cnVlKSA9IDA7CiAKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50
JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQg
cmVzb3VyY2VNb2RlKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc3RBcHBseVJlc291cmNlKFJl
bmRlckVsZW1lbnQmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQsIGNvbnN0IFBh
dGgqLCBjb25zdCBSZW5kZXJTVkdTaGFwZSopIHsgfQpAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFJlbmRlclNWR1Jlc291cmNlKiBzdHJva2VQYWludGluZ1Jlc291cmNlKFJl
bmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIENvbG9yJiBmYWxsYmFja0NvbG9yKTsK
ICAgICBzdGF0aWMgUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yKiBzaGFyZWRTb2xpZFBhaW50
aW5nUmVzb3VyY2UoKTsKIAotICAgIHN0YXRpYyB2b2lkIG1hcmtGb3JMYXlvdXRBbmRQYXJlbnRS
ZXNvdXJjZUludmFsaWRhdGlvbihSZW5kZXJPYmplY3QqLCBib29sIG5lZWRzTGF5b3V0ID0gdHJ1
ZSk7CisgICAgc3RhdGljIHZvaWQgbWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKFJlbmRlck9iamVjdCYsIGJvb2wgbmVlZHNMYXlvdXQgPSB0cnVlKTsKIH07CiAKIH0K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHJldmlzaW9uIDE2MDYyNikKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzEsMTAgKzcxLDkgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OnJl
bW92ZUFsbAogICAgIG1hcmtBbGxDbGllbnRzRm9ySW52YWxpZGF0aW9uKG1hcmtGb3JJbnZhbGlk
YXRpb24gPyBMYXlvdXRBbmRCb3VuZGFyaWVzSW52YWxpZGF0aW9uIDogUGFyZW50T25seUludmFs
aWRhdGlvbik7CiB9CiAKLXZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpyZW1vdmVDbGll
bnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0KiBjbGllbnQsIGJvb2wgbWFya0ZvckludmFsaWRhdGlv
bikKK3ZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUo
UmVuZGVyT2JqZWN0JiBjbGllbnQsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbikKIHsKLSAgICBB
U1NFUlQoY2xpZW50KTsKLSAgICBtX2NsaXBwZXIucmVtb3ZlKGNsaWVudCk7CisgICAgbV9jbGlw
cGVyLnJlbW92ZSgmY2xpZW50KTsKIAogICAgIG1hcmtDbGllbnRGb3JJbnZhbGlkYXRpb24oY2xp
ZW50LCBtYXJrRm9ySW52YWxpZGF0aW9uID8gQm91bmRhcmllc0ludmFsaWRhdGlvbiA6IFBhcmVu
dE9ubHlJbnZhbGlkYXRpb24pOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5oCShyZXZpc2lvbiAxNjA2
MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xp
cHBlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICBTVkdD
bGlwUGF0aEVsZW1lbnQmIGNsaXBQYXRoRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHRvU1ZHQ2xp
cFBhdGhFbGVtZW50KG5vZGVGb3JOb25Bbm9ueW1vdXMoKSk7IH0KIAogICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVBbGxDbGllbnRzRnJvbUNhY2hlKGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRy
dWUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0
KiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIHJl
bW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QmLCBib29sIG1hcmtGb3JJbnZhbGlkYXRp
b24gPSB0cnVlKTsKIAogICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRlckVsZW1l
bnQmLCBjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9y
dCByZXNvdXJjZU1vZGUpIE9WRVJSSURFOwogICAgIC8vIGNsaXBQYXRoIGNhbiBiZSBjbGlwcGVk
IHRvbywgYnV0IGRvbid0IGhhdmUgYSBib3VuZGluZ0JveCBvciByZXBhaW50UmVjdC4gU28gd2Ug
Y2FuJ3QgY2FsbApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5jcHAJKHJldmlzaW9uIDE2MDYyNikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDb250YWlu
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OSwxOCArOTksMTYgQEAgdm9pZCBSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lcjo6bWFya0FsbAogICAgIGJvb2wgbmVlZHNMYXlvdXQgPSBtb2RlID09
IExheW91dEFuZEJvdW5kYXJpZXNJbnZhbGlkYXRpb247CiAgICAgYm9vbCBtYXJrRm9ySW52YWxp
ZGF0aW9uID0gbW9kZSAhPSBQYXJlbnRPbmx5SW52YWxpZGF0aW9uOwogCi0gICAgSGFzaFNldDxS
ZW5kZXJPYmplY3QqPjo6aXRlcmF0b3IgZW5kID0gbV9jbGllbnRzLmVuZCgpOwotICAgIGZvciAo
SGFzaFNldDxSZW5kZXJPYmplY3QqPjo6aXRlcmF0b3IgaXQgPSBtX2NsaWVudHMuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFJlbmRlck9iamVjdCogY2xpZW50ID0gKml0Owor
ICAgIGZvciAoYXV0byBjbGllbnQgOiBtX2NsaWVudHMpIHsKICAgICAgICAgaWYgKGNsaWVudC0+
aXNTVkdSZXNvdXJjZUNvbnRhaW5lcigpKSB7CiAgICAgICAgICAgICBjbGllbnQtPnRvUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXIoKS0+cmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZShtYXJrRm9y
SW52YWxpZGF0aW9uKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKG1hcmtGb3JJbnZhbGlkYXRpb24pCi0gICAgICAgICAgICBtYXJrQ2xpZW50Rm9ySW52
YWxpZGF0aW9uKGNsaWVudCwgbW9kZSk7CisgICAgICAgICAgICBtYXJrQ2xpZW50Rm9ySW52YWxp
ZGF0aW9uKCpjbGllbnQsIG1vZGUpOwogCi0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJr
Rm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oY2xpZW50LCBuZWVkc0xheW91
dCk7CisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVz
b3VyY2VJbnZhbGlkYXRpb24oKmNsaWVudCwgbmVlZHNMYXlvdXQpOwogICAgIH0KIAogICAgIG1h
cmtBbGxDbGllbnRMYXllcnNGb3JJbnZhbGlkYXRpb24oKTsKQEAgLTEyMSwyNSArMTE5LDIzIEBA
IHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6Om1hcmtBbGwKIHZvaWQgUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXI6Om1hcmtBbGxDbGllbnRMYXllcnNGb3JJbnZhbGlkYXRpb24oKQog
ewogI2lmIEVOQUJMRShDU1NfRklMVEVSUykKLSAgICBIYXNoU2V0PFJlbmRlckxheWVyKj46Oml0
ZXJhdG9yIGxheWVyRW5kID0gbV9jbGllbnRMYXllcnMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0
PFJlbmRlckxheWVyKj46Oml0ZXJhdG9yIGl0ID0gbV9jbGllbnRMYXllcnMuYmVnaW4oKTsgaXQg
IT0gbGF5ZXJFbmQ7ICsraXQpCi0gICAgICAgICgqaXQpLT5maWx0ZXJOZWVkc1JlcGFpbnQoKTsK
KyAgICBmb3IgKGF1dG8gY2xpZW50TGF5ZXIgOiBtX2NsaWVudExheWVycykKKyAgICAgICAgY2xp
ZW50TGF5ZXItPmZpbHRlck5lZWRzUmVwYWludCgpOwogI2VuZGlmCiB9CiAKLXZvaWQgUmVuZGVy
U1ZHUmVzb3VyY2VDb250YWluZXI6Om1hcmtDbGllbnRGb3JJbnZhbGlkYXRpb24oUmVuZGVyT2Jq
ZWN0KiBjbGllbnQsIEludmFsaWRhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgUmVuZGVyU1ZHUmVzb3Vy
Y2VDb250YWluZXI6Om1hcmtDbGllbnRGb3JJbnZhbGlkYXRpb24oUmVuZGVyT2JqZWN0JiBjbGll
bnQsIEludmFsaWRhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBBU1NFUlQoY2xpZW50KTsKICAgICBB
U1NFUlQoIW1fY2xpZW50cy5pc0VtcHR5KCkpOwogCiAgICAgc3dpdGNoIChtb2RlKSB7CiAgICAg
Y2FzZSBMYXlvdXRBbmRCb3VuZGFyaWVzSW52YWxpZGF0aW9uOgogICAgIGNhc2UgQm91bmRhcmll
c0ludmFsaWRhdGlvbjoKLSAgICAgICAgY2xpZW50LT5zZXROZWVkc0JvdW5kYXJpZXNVcGRhdGUo
KTsKKyAgICAgICAgY2xpZW50LnNldE5lZWRzQm91bmRhcmllc1VwZGF0ZSgpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFJlcGFpbnRJbnZhbGlkYXRpb246Ci0gICAgICAgIGlmICghY2xpZW50
LT5kb2N1bWVudEJlaW5nRGVzdHJveWVkKCkpCi0gICAgICAgICAgICBjbGllbnQtPnJlcGFpbnQo
KTsKKyAgICAgICAgaWYgKCFjbGllbnQuZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpKQorICAgICAg
ICAgICAgY2xpZW50LnJlcGFpbnQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQYXJlbnRP
bmx5SW52YWxpZGF0aW9uOgogICAgICAgICBicmVhazsKQEAgLTE1NSw3ICsxNTEsNyBAQCB2b2lk
IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjphZGRDbGllCiB2b2lkIFJlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyOjpyZW1vdmVDbGllbnQoUmVuZGVyT2JqZWN0KiBjbGllbnQpCiB7CiAgICAg
QVNTRVJUKGNsaWVudCk7Ci0gICAgcmVtb3ZlQ2xpZW50RnJvbUNhY2hlKGNsaWVudCwgZmFsc2Up
OworICAgIHJlbW92ZUNsaWVudEZyb21DYWNoZSgqY2xpZW50LCBmYWxzZSk7CiAgICAgbV9jbGll
bnRzLnJlbW92ZShjbGllbnQpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lci5oCShyZXZpc2lv
biAxNjA2MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5LDcgKzU5LDcgQEAgcHJvdGVjdGVk
OgogICAgIC8vIFVzZWQgZnJvbSB0aGUgaW52YWxpZGF0ZUNsaWVudC9pbnZhbGlkYXRlQ2xpZW50
cyBtZXRob2RzIGZyb20gY2xhc3NlcywgaW5oZXJpdGluZyBmcm9tIHVzLgogICAgIHZvaWQgbWFy
a0FsbENsaWVudHNGb3JJbnZhbGlkYXRpb24oSW52YWxpZGF0aW9uTW9kZSk7CiAgICAgdm9pZCBt
YXJrQWxsQ2xpZW50TGF5ZXJzRm9ySW52YWxpZGF0aW9uKCk7Ci0gICAgdm9pZCBtYXJrQ2xpZW50
Rm9ySW52YWxpZGF0aW9uKFJlbmRlck9iamVjdCosIEludmFsaWRhdGlvbk1vZGUpOworICAgIHZv
aWQgbWFya0NsaWVudEZvckludmFsaWRhdGlvbihSZW5kZXJPYmplY3QmLCBJbnZhbGlkYXRpb25N
b2RlKTsKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgU1ZHUmVzb3VyY2VzQ2FjaGU7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlRmlsdGVyLmNwcAkocmV2aXNpb24gMTYwNjI2KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTczLDE1ICs3MywxMyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpyZW1vdmVB
bGxDCiAgICAgbWFya0FsbENsaWVudHNGb3JJbnZhbGlkYXRpb24obWFya0ZvckludmFsaWRhdGlv
biA/IExheW91dEFuZEJvdW5kYXJpZXNJbnZhbGlkYXRpb24gOiBQYXJlbnRPbmx5SW52YWxpZGF0
aW9uKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUZpbHRlcjo6cmVtb3ZlQ2xpZW50RnJv
bUNhY2hlKFJlbmRlck9iamVjdCogY2xpZW50LCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24pCit2
b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVy
T2JqZWN0JiBjbGllbnQsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbikKIHsKLSAgICBBU1NFUlQo
Y2xpZW50KTsKLQotICAgIGlmIChGaWx0ZXJEYXRhKiBmaWx0ZXJEYXRhID0gbV9maWx0ZXIuZ2V0
KGNsaWVudCkpIHsKKyAgICBpZiAoRmlsdGVyRGF0YSogZmlsdGVyRGF0YSA9IG1fZmlsdGVyLmdl
dCgmY2xpZW50KSkgewogICAgICAgICBpZiAoZmlsdGVyRGF0YS0+c2F2ZWRDb250ZXh0KQogICAg
ICAgICAgICAgZmlsdGVyRGF0YS0+c3RhdGUgPSBGaWx0ZXJEYXRhOjpNYXJrZWRGb3JSZW1vdmFs
OwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2ZpbHRlci5yZW1vdmUoY2xpZW50KTsKKyAg
ICAgICAgICAgIG1fZmlsdGVyLnJlbW92ZSgmY2xpZW50KTsKICAgICB9CiAKICAgICBtYXJrQ2xp
ZW50Rm9ySW52YWxpZGF0aW9uKGNsaWVudCwgbWFya0ZvckludmFsaWRhdGlvbiA/IEJvdW5kYXJp
ZXNJbnZhbGlkYXRpb24gOiBQYXJlbnRPbmx5SW52YWxpZGF0aW9uKTsKQEAgLTI2Myw3ICsyNjEs
NyBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSCiAKICAgICBjYXNl
IEZpbHRlckRhdGE6OlBhaW50aW5nU291cmNlOgogICAgICAgICBpZiAoIWZpbHRlckRhdGEtPnNh
dmVkQ29udGV4dCkgewotICAgICAgICAgICAgcmVtb3ZlQ2xpZW50RnJvbUNhY2hlKCZyZW5kZXJl
cik7CisgICAgICAgICAgICByZW1vdmVDbGllbnRGcm9tQ2FjaGUocmVuZGVyZXIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTMxNSw4ICszMTMsOCBAQCB2b2lkIFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjpwcmltaXRpdmVBCiB7CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzKiBwcmltaXR2ZSA9IHN0YXRpY19jYXN0PFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcyo+KG9iamVjdC0+bm9kZSgpKTsKIAotICAgIGZvciAoYXV0
byBpdCA9IG1fZmlsdGVyLmJlZ2luKCksIGVuZCA9IG1fZmlsdGVyLmVuZCgpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKLSAgICAgICAgY29uc3QgYXV0byAmZmlsdGVyRGF0YSA9IGl0LT52YWx1ZTsKKyAg
ICBmb3IgKGNvbnN0IGF1dG8mIG9iamVjdEZpbHRlckRhdGFQYWlyIDogbV9maWx0ZXIpIHsKKyAg
ICAgICAgY29uc3QgYXV0byYgZmlsdGVyRGF0YSA9IG9iamVjdEZpbHRlckRhdGFQYWlyLnZhbHVl
OwogICAgICAgICBpZiAoZmlsdGVyRGF0YS0+c3RhdGUgIT0gRmlsdGVyRGF0YTo6QnVpbHQpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIApAQCAtMzMxLDcgKzMyOSw3IEBAIHZvaWQgUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXI6OnByaW1pdGl2ZUEKICAgICAgICAgYnVpbGRlci0+Y2xlYXJSZXN1bHRz
UmVjdXJzaXZlKGVmZmVjdCk7CiAKICAgICAgICAgLy8gUmVwYWludCB0aGUgaW1hZ2Ugb24gdGhl
IHNjcmVlbi4KLSAgICAgICAgbWFya0NsaWVudEZvckludmFsaWRhdGlvbihpdC0+a2V5LCBSZXBh
aW50SW52YWxpZGF0aW9uKTsKKyAgICAgICAgbWFya0NsaWVudEZvckludmFsaWRhdGlvbigqb2Jq
ZWN0RmlsdGVyRGF0YVBhaXIua2V5LCBSZXBhaW50SW52YWxpZGF0aW9uKTsKICAgICB9CiAgICAg
bWFya0FsbENsaWVudExheWVyc0ZvckludmFsaWRhdGlvbigpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIu
aAkocmV2aXNpb24gMTYwNjI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw3ICs3MCw3IEBAIHB1
YmxpYzoKICAgICBTVkdGaWx0ZXJFbGVtZW50JiBmaWx0ZXJFbGVtZW50KCkgY29uc3QgeyByZXR1
cm4gdG9TVkdGaWx0ZXJFbGVtZW50KFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyOjplbGVtZW50
KCkpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZShib29s
IG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xp
ZW50RnJvbUNhY2hlKFJlbmRlck9iamVjdCosIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRy
dWUpOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0
JiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSk7CiAKICAgICB2aXJ0dWFsIGJvb2wg
YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmLCBHcmFwaGlj
c0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgcG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIEdyYXBoaWNzQ29u
dGV4dComLCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1vZGUsIGNvbnN0IFBhdGgqLCBjb25zdCBS
ZW5kZXJTVkdTaGFwZSopIE9WRVJSSURFOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlR3JhZGllbnQuY3BwCShyZXZp
c2lvbiAxNjA2MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlR3JhZGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMCArNTAsOSBAQCB2b2lk
IFJlbmRlclNWR1Jlc291cmNlR3JhZGllbnQ6OnJlbW92ZUFsCiAgICAgbWFya0FsbENsaWVudHNG
b3JJbnZhbGlkYXRpb24obWFya0ZvckludmFsaWRhdGlvbiA/IFJlcGFpbnRJbnZhbGlkYXRpb24g
OiBQYXJlbnRPbmx5SW52YWxpZGF0aW9uKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50OjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0KiBjbGllbnQsIGJvb2wg
bWFya0ZvckludmFsaWRhdGlvbikKK3ZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudDo6cmVt
b3ZlQ2xpZW50RnJvbUNhY2hlKFJlbmRlck9iamVjdCYgY2xpZW50LCBib29sIG1hcmtGb3JJbnZh
bGlkYXRpb24pCiB7Ci0gICAgQVNTRVJUKGNsaWVudCk7Ci0gICAgbV9ncmFkaWVudE1hcC5yZW1v
dmUoY2xpZW50KTsKKyAgICBtX2dyYWRpZW50TWFwLnJlbW92ZSgmY2xpZW50KTsKICAgICBtYXJr
Q2xpZW50Rm9ySW52YWxpZGF0aW9uKGNsaWVudCwgbWFya0ZvckludmFsaWRhdGlvbiA/IFJlcGFp
bnRJbnZhbGlkYXRpb24gOiBQYXJlbnRPbmx5SW52YWxpZGF0aW9uKTsKIH0KIApJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZUdyYWRpZW50LmgJKHJldmlzaW9uIDE2MDYyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3
ICs0OCw3IEBAIHB1YmxpYzoKICAgICBTVkdHcmFkaWVudEVsZW1lbnQmIGdyYWRpZW50RWxlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNWR0dyYWRpZW50RWxlbWVudCY+KFJlbmRl
clNWR1Jlc291cmNlQ29udGFpbmVyOjplbGVtZW50KCkpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlQWxsQ2xpZW50c0Zyb21DYWNoZShib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVl
KSBPVkVSUklERSBGSU5BTDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQ2xpZW50RnJvbUNhY2hl
KFJlbmRlck9iamVjdCosIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpIE9WRVJSSURF
IEZJTkFMOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyT2Jq
ZWN0JiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSkgT1ZFUlJJREUgRklOQUw7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgYXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgY29uc3QgUmVu
ZGVyU3R5bGUmLCBHcmFwaGljc0NvbnRleHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2Rl
KSBPVkVSUklERSBGSU5BTDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zdEFwcGx5UmVzb3VyY2UoUmVu
ZGVyRWxlbWVudCYsIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1v
ZGUsIGNvbnN0IFBhdGgqLCBjb25zdCBSZW5kZXJTVkdTaGFwZSopIE9WRVJSSURFIEZJTkFMOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hcmtlci5jcHAJKHJldmlzaW9uIDE2MDYyNikKKysrIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NCw5ICs2NCw4IEBAIHZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OnJlbW92ZUFs
bEMKICAgICBtYXJrQWxsQ2xpZW50c0ZvckludmFsaWRhdGlvbihtYXJrRm9ySW52YWxpZGF0aW9u
ID8gTGF5b3V0QW5kQm91bmRhcmllc0ludmFsaWRhdGlvbiA6IFBhcmVudE9ubHlJbnZhbGlkYXRp
b24pOwogfQogCi12b2lkIFJlbmRlclNWR1Jlc291cmNlTWFya2VyOjpyZW1vdmVDbGllbnRGcm9t
Q2FjaGUoUmVuZGVyT2JqZWN0KiBjbGllbnQsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbikKK3Zv
aWQgUmVuZGVyU1ZHUmVzb3VyY2VNYXJrZXI6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJP
YmplY3QmIGNsaWVudCwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uKQogewotICAgIEFTU0VSVChj
bGllbnQpOwogICAgIG1hcmtDbGllbnRGb3JJbnZhbGlkYXRpb24oY2xpZW50LCBtYXJrRm9ySW52
YWxpZGF0aW9uID8gQm91bmRhcmllc0ludmFsaWRhdGlvbiA6IFBhcmVudE9ubHlJbnZhbGlkYXRp
b24pOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlTWFya2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZU1hcmtlci5oCShyZXZpc2lvbiAxNjA2MjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFya2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIFNWR01hcmtlckVsZW1lbnQmIG1h
cmtlckVsZW1lbnQoKSBjb25zdCB7IHJldHVybiB0b1NWR01hcmtlckVsZW1lbnQoUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXI6OmVsZW1lbnQoKSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCByZW1v
dmVBbGxDbGllbnRzRnJvbUNhY2hlKGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpOwot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0KiwgYm9v
bCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNs
aWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QmLCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0
cnVlKTsKIAogICAgIHZvaWQgZHJhdyhQYWludEluZm8mLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5jcHAJKHJldmlzaW9uIDE2MDYyNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01OSwxMCArNTksOSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpy
ZW1vdmVBbGxDCiAgICAgbWFya0FsbENsaWVudHNGb3JJbnZhbGlkYXRpb24obWFya0ZvckludmFs
aWRhdGlvbiA/IExheW91dEFuZEJvdW5kYXJpZXNJbnZhbGlkYXRpb24gOiBQYXJlbnRPbmx5SW52
YWxpZGF0aW9uKTsKIH0KIAotdm9pZCBSZW5kZXJTVkdSZXNvdXJjZU1hc2tlcjo6cmVtb3ZlQ2xp
ZW50RnJvbUNhY2hlKFJlbmRlck9iamVjdCogY2xpZW50LCBib29sIG1hcmtGb3JJbnZhbGlkYXRp
b24pCit2b2lkIFJlbmRlclNWR1Jlc291cmNlTWFza2VyOjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUo
UmVuZGVyT2JqZWN0JiBjbGllbnQsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbikKIHsKLSAgICBB
U1NFUlQoY2xpZW50KTsKLSAgICBtX21hc2tlci5yZW1vdmUoY2xpZW50KTsKKyAgICBtX21hc2tl
ci5yZW1vdmUoJmNsaWVudCk7CiAKICAgICBtYXJrQ2xpZW50Rm9ySW52YWxpZGF0aW9uKGNsaWVu
dCwgbWFya0ZvckludmFsaWRhdGlvbiA/IEJvdW5kYXJpZXNJbnZhbGlkYXRpb24gOiBQYXJlbnRP
bmx5SW52YWxpZGF0aW9uKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmgJKHJldmlzaW9uIDE2MDYyNikK
KysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsNyArNDUsNyBAQCBwdWJsaWM6CiAgICAgU1ZHTWFza0Vs
ZW1lbnQmIG1hc2tFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdG9TVkdNYXNrRWxlbWVudChSZW5k
ZXJTVkdSZXNvdXJjZUNvbnRhaW5lcjo6ZWxlbWVudCgpKTsgfQogCiAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUoYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1
ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3Qq
LCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlQ2xpZW50RnJvbUNhY2hlKFJlbmRlck9iamVjdCYsIGJvb2wgbWFya0ZvckludmFsaWRhdGlv
biA9IHRydWUpOwogICAgIHZpcnR1YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQm
LCBjb25zdCBSZW5kZXJTdHlsZSYsIEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCBy
ZXNvdXJjZU1vZGUpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgRmxvYXRSZWN0IHJlc291cmNlQm91
bmRpbmdCb3goY29uc3QgUmVuZGVyT2JqZWN0JikgT1ZFUlJJREU7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0
dGVybi5jcHAJKHJldmlzaW9uIDE2MDYyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsMTAg
KzU0LDkgQEAgdm9pZCBSZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm46OnJlbW92ZUFsbAogICAgIG1h
cmtBbGxDbGllbnRzRm9ySW52YWxpZGF0aW9uKG1hcmtGb3JJbnZhbGlkYXRpb24gPyBSZXBhaW50
SW52YWxpZGF0aW9uIDogUGFyZW50T25seUludmFsaWRhdGlvbik7CiB9CiAKLXZvaWQgUmVuZGVy
U1ZHUmVzb3VyY2VQYXR0ZXJuOjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0KiBj
bGllbnQsIGJvb2wgbWFya0ZvckludmFsaWRhdGlvbikKK3ZvaWQgUmVuZGVyU1ZHUmVzb3VyY2VQ
YXR0ZXJuOjpyZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0JiBjbGllbnQsIGJvb2wg
bWFya0ZvckludmFsaWRhdGlvbikKIHsKLSAgICBBU1NFUlQoY2xpZW50KTsKLSAgICBtX3BhdHRl
cm5NYXAucmVtb3ZlKGNsaWVudCk7CisgICAgbV9wYXR0ZXJuTWFwLnJlbW92ZSgmY2xpZW50KTsK
ICAgICBtYXJrQ2xpZW50Rm9ySW52YWxpZGF0aW9uKGNsaWVudCwgbWFya0ZvckludmFsaWRhdGlv
biA/IFJlcGFpbnRJbnZhbGlkYXRpb24gOiBQYXJlbnRPbmx5SW52YWxpZGF0aW9uKTsKIH0KIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRl
cm4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5oCShyZXZpc2lvbiAxNjA2MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICBTVkdQYXR0ZXJuRWxlbWVudCYgcGF0dGVybkVs
ZW1lbnQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxDbGllbnRzRnJvbUNh
Y2hlKGJvb2wgbWFya0ZvckludmFsaWRhdGlvbiA9IHRydWUpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0KiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0
aW9uID0gdHJ1ZSk7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5k
ZXJPYmplY3QmLCBib29sIG1hcmtGb3JJbnZhbGlkYXRpb24gPSB0cnVlKTsKIAogICAgIHZpcnR1
YWwgYm9vbCBhcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYs
IEdyYXBoaWNzQ29udGV4dComLCB1bnNpZ25lZCBzaG9ydCByZXNvdXJjZU1vZGUpIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiwgR3Jh
cGhpY3NDb250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSwgY29uc3QgUGF0aCos
IGNvbnN0IFJlbmRlclNWR1NoYXBlKikgT1ZFUlJJREU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlU29saWRDb2xvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9y
LmgJKHJldmlzaW9uIDE2MDYyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VTb2xpZENvbG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgflJlbmRlclNWR1Jlc291cmNlU29saWRDb2xvcigpOwog
CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbENsaWVudHNGcm9tQ2FjaGUoYm9vbCA9IHRydWUp
IHsgfQotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0
KiwgYm9vbCA9IHRydWUpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2Fj
aGUoUmVuZGVyT2JqZWN0JiwgYm9vbCA9IHRydWUpIHsgfQogCiAgICAgdmlydHVhbCBib29sIGFw
cGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiwgR3JhcGhpY3ND
b250ZXh0KiYsIHVuc2lnbmVkIHNob3J0IHJlc291cmNlTW9kZSkgT1ZFUlJJREU7CiAgICAgdmly
dHVhbCB2b2lkIHBvc3RBcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmLCBHcmFwaGljc0NvbnRl
eHQqJiwgdW5zaWduZWQgc2hvcnQgcmVzb3VyY2VNb2RlLCBjb25zdCBQYXRoKiwgY29uc3QgUmVu
ZGVyU1ZHU2hhcGUqKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAkocmV2aXNpb24gMTYwNjI2KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk0LDcgKzE5NCw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlUmVz
b3VyY2VzT2YKIHsKICAgICBBU1NFUlQoIXN0YXJ0Lm5lZWRzTGF5b3V0KCkpOwogICAgIGlmIChT
VkdSZXNvdXJjZXMqIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJj
ZXNGb3JSZW5kZXJPYmplY3Qoc3RhcnQpKQotICAgICAgICByZXNvdXJjZXMtPnJlbW92ZUNsaWVu
dEZyb21DYWNoZSgmc3RhcnQsIGZhbHNlKTsKKyAgICAgICAgcmVzb3VyY2VzLT5yZW1vdmVDbGll
bnRGcm9tQ2FjaGUoc3RhcnQsIGZhbHNlKTsKIAogICAgIGZvciAoUmVuZGVyT2JqZWN0KiBjaGls
ZCA9IHN0YXJ0LmZpcnN0Q2hpbGRTbG93KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2li
bGluZygpKQogICAgICAgICBpbnZhbGlkYXRlUmVzb3VyY2VzT2ZDaGlsZHJlbigqY2hpbGQpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmNwcAko
cmV2aXNpb24gMTYwNjI2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNv
dXJjZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODAsNyArMjgwLDcgQEAgYm9vbCBTVkdSZXNv
dXJjZXM6OmJ1aWxkQ2FjaGVkUmVzb3VyY2VzKAogICAgIHJldHVybiBmb3VuZFJlc291cmNlczsK
IH0KIAotdm9pZCBTVkdSZXNvdXJjZXM6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmpl
Y3QqIG9iamVjdCwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uKSBjb25zdAordm9pZCBTVkdSZXNv
dXJjZXM6OnJlbW92ZUNsaWVudEZyb21DYWNoZShSZW5kZXJPYmplY3QmIG9iamVjdCwgYm9vbCBt
YXJrRm9ySW52YWxpZGF0aW9uKSBjb25zdAogewogICAgIGlmICghbV9jbGlwcGVyRmlsdGVyTWFz
a2VyRGF0YSAmJiAhbV9tYXJrZXJEYXRhICYmICFtX2ZpbGxTdHJva2VEYXRhICYmICFtX2xpbmtl
ZFJlc291cmNlKQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1Jlc291cmNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzLmgJKHJldmlzaW9uIDE2MDYyNikKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDcg
KzcyLDcgQEAgcHVibGljOgogICAgIHZvaWQgYnVpbGRTZXRPZlJlc291cmNlcyhIYXNoU2V0PFJl
bmRlclNWR1Jlc291cmNlQ29udGFpbmVyKj4mKTsKIAogICAgIC8vIE1ldGhvZHMgb3BlcmF0aW5n
IG9uIGFsbCBjYWNoZWQgcmVzb3VyY2VzCi0gICAgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUo
UmVuZGVyT2JqZWN0KiwgYm9vbCBtYXJrRm9ySW52YWxpZGF0aW9uID0gdHJ1ZSkgY29uc3Q7Cisg
ICAgdm9pZCByZW1vdmVDbGllbnRGcm9tQ2FjaGUoUmVuZGVyT2JqZWN0JiwgYm9vbCBtYXJrRm9y
SW52YWxpZGF0aW9uID0gdHJ1ZSkgY29uc3Q7CiAgICAgdm9pZCByZXNvdXJjZURlc3Ryb3llZChS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYpOwogCiAjaWZuZGVmIE5ERUJVRwpJbmRleDogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAJ
KHJldmlzaW9uIDE2MDYyNikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzQ2FjaGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBT
VkdSZXNvdXJjZXNDYWNoZTo6Y2xpZW50TGF5b3V0Q2hhbgogICAgIC8vIEludmFsaWRhdGUgdGhl
IHJlc291cmNlcyBpZiBlaXRoZXIgdGhlIFJlbmRlckVsZW1lbnQgaXRzZWxmIGNoYW5nZWQsCiAg
ICAgLy8gb3Igd2UgaGF2ZSBmaWx0ZXIgcmVzb3VyY2VzLCB3aGljaCBjb3VsZCBkZXBlbmQgb24g
dGhlIGxheW91dCBvZiBjaGlsZHJlbi4KICAgICBpZiAocmVuZGVyZXIuc2VsZk5lZWRzTGF5b3V0
KCkpCi0gICAgICAgIHJlc291cmNlcy0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKCZyZW5kZXJlcik7
CisgICAgICAgIHJlc291cmNlcy0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsKIH0K
IAogc3RhdGljIGlubGluZSBib29sIHJlbmRlcmVyQ2FuSGF2ZVJlc291cmNlcyhSZW5kZXJPYmpl
Y3QmIHJlbmRlcmVyKQpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgU1ZHUmVzb3VyY2VzQ2FjaGU6
OmNsaWVudFN0eWxlQ2hhbmcKICAgICAgICAgY2FjaGUtPmFkZFJlc291cmNlc0Zyb21SZW5kZXJl
cihyZW5kZXJlciwgbmV3U3R5bGUpOwogICAgIH0KIAotICAgIFJlbmRlclNWR1Jlc291cmNlOjpt
YXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oJnJlbmRlcmVyLCBmYWxz
ZSk7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbihyZW5kZXJlciwgZmFsc2UpOwogCiAgICAgaWYgKHJlbmRlcmVyLmVsZW1l
bnQoKSAmJiAhcmVuZGVyZXIuZWxlbWVudCgpLT5pc1NWR0VsZW1lbnQoKSkKICAgICAgICAgcmVu
ZGVyZXIuZWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRoZXRpY1N0eWxlQ2hhbmdl
KTsKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIFNWR1Jlc291cmNlc0NhY2hlOjpjbGllbnRXYXNB
ZGRlZFRvCiAgICAgaWYgKHJlbmRlcmVyLmlzQW5vbnltb3VzKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24oJnJlbmRlcmVyLCBmYWxzZSk7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1h
cmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlciwgZmFsc2Up
OwogCiAgICAgaWYgKCFyZW5kZXJlckNhbkhhdmVSZXNvdXJjZXMocmVuZGVyZXIpKQogICAgICAg
ICByZXR1cm47CkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6Y2xp
ZW50V2lsbEJlUmVtbwogICAgIGlmIChyZW5kZXJlci5pc0Fub255bW91cygpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCZyZW5kZXJlciwgZmFsc2UpOworICAgIFJlbmRlclNWR1Jlc291
cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIs
IGZhbHNlKTsKIAogICAgIGlmICghcmVuZGVyZXJDYW5IYXZlUmVzb3VyY2VzKHJlbmRlcmVyKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgU1ZHUmVzb3VyY2VzQ2Fj
aGU6OmNsaWVudERlc3Ryb3llZCgKIHsKICAgICBTVkdSZXNvdXJjZXMqIHJlc291cmNlcyA9IFNW
R1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJPYmplY3QocmVuZGVyZXIp
OwogICAgIGlmIChyZXNvdXJjZXMpCi0gICAgICAgIHJlc291cmNlcy0+cmVtb3ZlQ2xpZW50RnJv
bUNhY2hlKCZyZW5kZXJlcik7CisgICAgICAgIHJlc291cmNlcy0+cmVtb3ZlQ2xpZW50RnJvbUNh
Y2hlKHJlbmRlcmVyKTsKIAogICAgIFNWR1Jlc291cmNlc0NhY2hlKiBjYWNoZSA9IHJlc291cmNl
c0NhY2hlRnJvbVJlbmRlck9iamVjdChyZW5kZXJlcik7CiAgICAgY2FjaGUtPnJlbW92ZVJlc291
cmNlc0Zyb21SZW5kZXJlcihyZW5kZXJlcik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MDYyNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4OSwyNiArMjg5LDI0IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5
UmVzdWwKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKSkKLSAg
ICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUlu
dmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0g
dGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1h
cmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogCiAg
ICAgQWZmaW5lVHJhbnNmb3JtKiB0ID0gdGFyZ2V0RWxlbWVudC0+c3VwcGxlbWVudGFsVHJhbnNm
b3JtKCk7CiAgICAgaWYgKCF0KQogICAgICAgICByZXR1cm47CiAKICAgICAvLyAuLi5leGNlcHQg
aW4gY2FzZSB3aGVyZSB3ZSBoYXZlIGFkZGl0aW9uYWwgaW5zdGFuY2VzIGluIDx1c2U+IHRyZWVz
LgotICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4mIGluc3RhbmNlcyA9IHRh
cmdldEVsZW1lbnQtPmluc3RhbmNlc0ZvckVsZW1lbnQoKTsKLSAgICBjb25zdCBIYXNoU2V0PFNW
R0VsZW1lbnRJbnN0YW5jZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnN0YW5jZXMuZW5kKCk7
Ci0gICAgZm9yIChIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IGluc3RhbmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgU1ZHRWxl
bWVudCogc2hhZG93VHJlZUVsZW1lbnQgPSAoKml0KS0+c2hhZG93VHJlZUVsZW1lbnQoKTsKKyAg
ICBmb3IgKGF1dG8gaW5zdGFuY2UgOiB0YXJnZXRFbGVtZW50LT5pbnN0YW5jZXNGb3JFbGVtZW50
KCkpIHsKKyAgICAgICAgU1ZHRWxlbWVudCogc2hhZG93VHJlZUVsZW1lbnQgPSBpbnN0YW5jZS0+
c2hhZG93VHJlZUVsZW1lbnQoKTsKICAgICAgICAgQVNTRVJUKHNoYWRvd1RyZWVFbGVtZW50KTsK
ICAgICAgICAgQWZmaW5lVHJhbnNmb3JtKiB0cmFuc2Zvcm0gPSBzaGFkb3dUcmVlRWxlbWVudC0+
c3VwcGxlbWVudGFsVHJhbnNmb3JtKCk7CiAgICAgICAgIGlmICghdHJhbnNmb3JtKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIHRyYW5zZm9ybS0+c2V0TWF0cml4KHQtPmEoKSwgdC0+
YigpLCB0LT5jKCksIHQtPmQoKSwgdC0+ZSgpLCB0LT5mKCkpOwotICAgICAgICBpZiAoUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHNoYWRvd1RyZWVFbGVtZW50LT5yZW5kZXJlcigpKSB7CisgICAg
ICAgIGlmIChSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHNoYWRvd1RyZWVFbGVtZW50LT5yZW5k
ZXJlcigpKSB7CiAgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUo
KTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50
UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOworICAgICAgICAgICAgUmVuZGVyU1ZHUmVz
b3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVy
ZXIpOwogICAgICAgICB9CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Np
cmNsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJj
bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTYwNjI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NpcmNsZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsMTIgKzEyMCwxMiBAQCB2
b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nCiAKICAgICBpZiAoaXNMZW5n
dGhBdHRyaWJ1dGUpIHsKICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsK
LSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJr
Rm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChTVkdMYW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpIHx8IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5
b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOworICAgICAgICBSZW5k
ZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9u
KCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkocmV2aXNpb24gMTYwNjI2KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1
LDEyICsxMjUsMTIgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbgog
CiAgICAgaWYgKGlzTGVuZ3RoQXR0cmlidXRlKSB7CiAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVk
c1NoYXBlVXBkYXRlKCk7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0
QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOworICAgICAgICBSZW5kZXJT
VkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpy
ZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoU1ZHTGFuZ1NwYWNl
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBSZW5kZXJTVkdSZXNv
dXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRlcmVy
KTsKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2
MDYyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5NiwxMCArMTk2LDE0IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5v
dGlmeUZpbmlzaGVkKEMKICAgICBFbGVtZW50KiBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CiAg
ICAgQVNTRVJUKHBhcmVudCk7CiAKLSAgICBpZiAoIXBhcmVudC0+aGFzVGFnTmFtZShTVkdOYW1l
czo6ZmlsdGVyVGFnKSB8fCAhcGFyZW50LT5yZW5kZXJlcigpKQorICAgIGlmICghcGFyZW50LT5o
YXNUYWdOYW1lKFNWR05hbWVzOjpmaWx0ZXJUYWcpKQogICAgICAgICByZXR1cm47CiAKLSAgICBS
ZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0
aW9uKHBhcmVudC0+cmVuZGVyZXIoKSk7CisgICAgUmVuZGVyRWxlbWVudCogcGFyZW50UmVuZGVy
ZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFwYXJlbnRSZW5kZXJlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbigqcGFyZW50UmVuZGVyZXIpOwogfQogCiBQYXNzUmVmUHRy
PEZpbHRlckVmZmVjdD4gU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIq
LCBGaWx0ZXIqIGZpbHRlcikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTYwNjI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGln
aHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDkgKzIxNCw5IEBAIHZvaWQgU1ZH
RkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgKICAgICBDb250YWluZXJOb2RlKiBwYXJl
bnQgPSBwYXJlbnROb2RlKCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVybjsKLSAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOworICAgIFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwogICAgIGlmIChyZW5kZXJl
ciAmJiByZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpKQotICAgICAgICBS
ZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0
aW9uKHJlbmRlcmVyKTsKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogfQogCiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmNwcAkocmV2aXNpb24gMTYwNjI2KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2NSwxMSArMTY1LDExIEBAIHZvaWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBh
cmVudChTVkcKICAgICBpZiAoIXBhcmVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKKyAgICBSZW5kZXJFbGVtZW50
KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFy
ZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNl
SW52YWxpZGF0aW9uKHJlbmRlcmVyLCBmYWxzZSk7CisgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1h
cmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIsIGZhbHNl
KTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAkocmV2aXNpb24gMTYwNjI2KQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMyArNTUsMTMgQEAgcHJvdGVjdGVkOgogCiAgICAgaW5s
aW5lIHZvaWQgaW52YWxpZGF0ZSgpCiAgICAgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBw
cmltaXRpdmVSZW5kZXJlciA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNv
dXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHByaW1pdGl2
ZVJlbmRlcmVyKTsKKyAgICAgICAgaWYgKFJlbmRlckVsZW1lbnQqIHByaW1pdGl2ZVJlbmRlcmVy
ID0gcmVuZGVyZXIoKSkKKyAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5
b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnByaW1pdGl2ZVJlbmRlcmVyKTsKICAg
ICB9CiAKICAgICBpbmxpbmUgdm9pZCBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKICAgICB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3Qq
IHByaW1pdGl2ZVJlbmRlcmVyID0gcmVuZGVyZXIoKSkKKyAgICAgICAgaWYgKFJlbmRlckVsZW1l
bnQqIHByaW1pdGl2ZVJlbmRlcmVyID0gcmVuZGVyZXIoKSkKICAgICAgICAgICAgIHN0YXRpY19j
YXN0PFJlbmRlclNWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKj4ocHJpbWl0aXZlUmVuZGVyZXIp
LT5wcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZSk7CiAgICAgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJKHJldmlz
aW9uIDE2MDYyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw4ICsxMjIsOCBAQCB2b2lkIFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1CiAgICAgaWYgKGlzTGVuZ3RoQXR0cmlidXRlKQogICAg
ICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwogCi0gICAgaWYgKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKHJlbmRl
cmVyKTsKKyAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAg
IFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24oKnJlbmRlcmVyKTsKIH0KIAogUmVuZGVyRWxlbWVudCogU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQ6OmNyZWF0ZVJlbmRlcmVyKFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjA2MjYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NSw4ICs4NSw4
IEBAIHZvaWQgU1ZHR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY28KIAogICAgIFNWR0Vs
ZW1lbnRJbnN0YW5jZTo6SW52YWxpZGF0aW9uR3VhcmQgaW52YWxpZGF0aW9uR3VhcmQodGhpcyk7
CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0g
ICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24ocmVuZGVyZXIpOworICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVu
ZGVyZXIoKSkKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogfQogCiBSZW5kZXJFbGVtZW50KiBT
VkdHRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAkocmV2aXNpb24g
MTYwNjI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzNCwxMyArMTM0LDEzIEBAIHZvaWQgU1ZHR3JhcGhpY3NFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGEKICAgICBpZiAoU1ZHVGVzdHM6OmhhbmRsZUF0dHJpYnV0ZUNoYW5n
ZSh0aGlzLCBhdHRyTmFtZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbmRlck9iamVjdCog
b2JqZWN0ID0gcmVuZGVyZXIoKTsKLSAgICBpZiAoIW9iamVjdCkKKyAgICBhdXRvIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpIHsKLSAgICAg
ICAgb2JqZWN0LT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwotICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKG9iamVj
dCk7CisgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOworICAgICAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjA2MjYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0
LDIwICsxNTQsMjAgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCk7CisgICAgYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CiAg
ICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGlzTGVuZ3RoQXR0
cmlidXRlKSB7CiAgICAgICAgIGlmICh0b1JlbmRlclNWR0ltYWdlKHJlbmRlcmVyKS0+dXBkYXRl
SW1hZ2VWaWV3cG9ydCgpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgICAgICAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyCiAgICAgICAgIHx8IFNW
R0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkKICAgICAgICAgfHwgU1ZHRXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAg
ICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUlu
dmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAxNjA2MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsMTIgKzEyNCwxMiBAQCB2b2lkIFNWR0xpbmVFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAKICAgICBpZiAoaXNMZW5ndGhBdHRyaWJ1dGUpIHsK
ICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgUmVuZGVy
U1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihy
ZW5kZXJlcik7CisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGlmIChTVkdMYW5nU3BhY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8
IFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVz
b3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOworICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRo
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmNwcAkocmV2aXNpb24gMTYwNjI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgU1ZHUGF0
aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQKICAgICB9CiAKICAgICBpZiAocmVuZGVyZXIp
Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3Vy
Y2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOworICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiB9CiAK
IHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OmludmFsaWRhdGVNUGF0aERlcGVuZGVuY2llcygpCkBAIC0y
ODYsMTAgKzI4Niw5IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OmludmFsaWRhdGVNUGF0aERlcGUK
ICAgICAvLyA8bXBhdGg+IGNhbiBvbmx5IHJlZmVyZW5jZSA8cGF0aD4gYnV0IHRoaXMgZGVwZW5k
ZW5jeSBpcyBub3QgaGFuZGxlZCBpbgogICAgIC8vIG1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbiBzbyB3ZSB1cGRhdGUgYW55IG1wYXRoIGRlcGVuZGVuY2llcyBtYW51
YWxseS4KICAgICBpZiAoSGFzaFNldDxTVkdFbGVtZW50Kj4qIGRlcGVuZGVuY2llcyA9IGRvY3Vt
ZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLT5zZXRPZkVsZW1lbnRzUmVmZXJlbmNpbmdUYXJn
ZXQodGhpcykpIHsKLSAgICAgICAgSGFzaFNldDxTVkdFbGVtZW50Kj46Oml0ZXJhdG9yIGVuZCA9
IGRlcGVuZGVuY2llcy0+ZW5kKCk7Ci0gICAgICAgIGZvciAoSGFzaFNldDxTVkdFbGVtZW50Kj46
Oml0ZXJhdG9yIGl0ID0gZGVwZW5kZW5jaWVzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
LSAgICAgICAgICAgIGlmICgoKml0KS0+aGFzVGFnTmFtZShTVkdOYW1lczo6bXBhdGhUYWcpKQot
ICAgICAgICAgICAgICAgIHRvU1ZHTVBhdGhFbGVtZW50KCppdCktPnRhcmdldFBhdGhDaGFuZ2Vk
KCk7CisgICAgICAgIGZvciAoYXV0byBlbGVtZW50IDogKmRlcGVuZGVuY2llcykgeworICAgICAg
ICAgICAgaWYgKGVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6Om1wYXRoVGFnKSkKKyAgICAg
ICAgICAgICAgICB0b1NWR01QYXRoRWxlbWVudChlbGVtZW50KS0+dGFyZ2V0UGF0aENoYW5nZWQo
KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTM4OCw3ICszODcsNyBAQCB2b2lkIFNWR1BhdGhF
bGVtZW50OjpwYXRoU2VnTGlzdENoYW5nZWQoCiAgICAgICAgIHJldHVybjsKIAogICAgIHJlbmRl
cmVyLT5zZXROZWVkc1NoYXBlVXBkYXRlKCk7Ci0gICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgUmVu
ZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlv
bigqcmVuZGVyZXIpOwogfQogCiBGbG9hdFJlY3QgU1ZHUGF0aEVsZW1lbnQ6OmdldEJCb3goU3R5
bGVVcGRhdGVTdHJhdGVneSBzdHlsZVVwZGF0ZVN0cmF0ZWd5KQpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUG9seUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNjA2MjYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsMTIgKzExOCwx
MiBAQCB2b2lkIFNWR1BvbHlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkCiAKICAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIpIHsKICAgICAgICAgcmVuZGVyZXItPnNl
dE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oKnJlbmRlcmVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChTVkdMYW5n
U3BhY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQ6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIFJlbmRlclNW
R1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVu
ZGVyZXIpOworICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVu
dFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkocmV2aXNpb24gMTYw
NjI2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM4LDEyICsxMzgsMTIgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZAogCiAgICAgaWYgKGlzTGVuZ3RoQXR0cmlidXRlKSB7CiAgICAgICAgIHJlbmRl
cmVyLT5zZXROZWVkc1NoYXBlVXBkYXRlKCk7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjpt
YXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOworICAg
ICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52
YWxpZGF0aW9uKCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAo
U1ZHTGFuZ1NwYWNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBS
ZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0
aW9uKHJlbmRlcmVyKTsKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCShyZXZpc2lv
biAxNjA2MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwNCw4ICszMDQsOCBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoCiAgICAgICAgIHx8IFNWR0xhbmdTcGFjZTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkKICAgICAgICAgfHwgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkKICAgICAgICAgfHwgU1ZHWm9vbUFuZFBhbjo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKHJlbmRlcmVyKCkpOworICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCkpCisgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFu
ZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTY4Myw3ICs2ODMsNyBAQCBBZmZpbmVUcmFuc2Zvcm0gU1ZHU1ZHRWxlbWVu
dDo6dmlld0JveFRvCiAKIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0dXBJbml0aWFsVmlldyhjb25z
dCBTdHJpbmcmIGZyYWdtZW50SWRlbnRpZmllciwgRWxlbWVudCogYW5jaG9yTm9kZSkKIHsKLSAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBhdXRvIHJl
bmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBTVkdWaWV3U3BlYyogdmlldyA9IG1fdmll
d1NwZWMuZ2V0KCk7CiAgICAgaWYgKHZpZXcpCiAgICAgICAgIHZpZXctPnJlc2V0KCk7CkBAIC02
OTQsNyArNjk0LDcgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzZXR1cEluaXRpYWxWaWV3KGNvbgog
ICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIuc3RhcnRzV2l0aCgieHBvaW50ZXIoIikpIHsKICAg
ICAgICAgLy8gRklYTUU6IFhQb2ludGVyIHJlZmVyZW5jZXMgYXJlIGlnbm9yZWQgKGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQ5MSkKICAgICAgICAgaWYgKHJlbmRl
cmVyICYmIGhhZFVzZUN1cnJlbnRWaWV3KQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7Cisg
ICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTcwOCw3ICs3MDgsNyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNldHVwSW5pdGlhbFZpZXcoY29u
CiAgICAgICAgICAgICB2aWV3LT5yZXNldCgpOwogCiAgICAgICAgIGlmIChyZW5kZXJlciAmJiAo
aGFkVXNlQ3VycmVudFZpZXcgfHwgbV91c2VDdXJyZW50VmlldykpCi0gICAgICAgICAgICBSZW5k
ZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9u
KHJlbmRlcmVyKTsKKyAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0
QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNzIzLDggKzcyMyw4IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0dXBJ
bml0aWFsVmlldyhjb24KICAgICAgICAgICAgICAgICBTVkdTVkdFbGVtZW50KiBzdmcgPSBzdGF0
aWNfY2FzdDxTVkdTVkdFbGVtZW50Kj4oZWxlbWVudCk7CiAgICAgICAgICAgICAgICAgc3ZnLT5p
bmhlcml0Vmlld0F0dHJpYnV0ZXModmlld0VsZW1lbnQpOwogCi0gICAgICAgICAgICAgICAgaWYg
KFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdmctPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAg
ICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24ocmVuZGVyZXIpOworICAgICAgICAgICAgICAgIGlmIChSZW5kZXJFbGVtZW50
KiByZW5kZXJlciA9IHN2Zy0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgUmVuZGVy
U1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigq
cmVuZGVyZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkocmV2aXNpb24gMTYwNjI2KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODksMTEgKzg5LDkgQEAgdm9pZCBTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZAogCiAgICAgU1ZHRWxlbWVudEluc3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRp
b25HdWFyZCh0aGlzKTsKIAotICAgIGlmICghcmVuZGVyZXIoKSkKLSAgICAgICAgcmV0dXJuOwot
CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpvZmZzZXRBdHRyKSB7Ci0gICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24ocmVuZGVyZXIoKSk7CisgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKSkKKyAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCShyZXZpc2lvbiAx
NjA2MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMTIsOCArMjEyLDggQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZAogCiAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKICAgICAgICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKLSAgICAgICAgaWYg
KFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAg
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbihyZW5kZXJlcik7CisgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKSkKKyAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5j
cHAJKHJldmlzaW9uIDE2MDYyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsOCArMjc0LDggQEAgdm9pZCBTVkdU
ZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZQogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6dGV4dExlbmd0aEF0dHIpCiAgICAgICAgIG1fc3BlY2lmaWVkVGV4dExlbmd0aCA9IG1f
dGV4dExlbmd0aC52YWx1ZTsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKSkKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5kZXJlcik7CisgICAgaWYgKGF1dG8gcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiB9CiAK
IGJvb2wgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCShyZXZp
c2lvbiAxNjA2MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDggKzEyMyw4IEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGEKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0YXJ0
T2Zmc2V0QXR0cikKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsK
IAotICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24ob2JqZWN0KTsKKyAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisg
ICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKIH0KIAogUmVuZGVyRWxlbWVudCogU1ZHVGV4dFBhdGhF
bGVtZW50OjpjcmVhdGVSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDE2MDYyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDE0ICsxMzUsMTQgQEAgdm9pZCBT
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzdmdBdHRyaQogICAgIGlmICh1cGRhdGVSZWxhdGl2
ZUxlbmd0aHMpCiAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAK
LSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKKyAgICBhdXRv
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAodXBkYXRlUmVsYXRpdmVMZW5ndGhzIHx8IGF0dHJOYW1lID09
IFNWR05hbWVzOjpyb3RhdGVBdHRyKSB7CiAgICAgICAgIGlmIChSZW5kZXJTVkdUZXh0KiB0ZXh0
UmVuZGVyZXIgPSBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IocmVu
ZGVyZXIpKQogICAgICAgICAgICAgdGV4dFJlbmRlcmVyLT5zZXROZWVkc1Bvc2l0aW9uaW5nVmFs
dWVzVXBkYXRlKCk7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5k
UGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24ocmVuZGVyZXIpOworICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5k
ZXJlcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VXNlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE2MDYyNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI1LDE0ICsyMjUsMTQgQEAgdm9p
ZCBTVkdVc2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKAogCiAgICAgU1ZHRWxlbWVudElu
c3RhbmNlOjpJbnZhbGlkYXRpb25HdWFyZCBpbnZhbGlkYXRpb25HdWFyZCh0aGlzKTsKIAotICAg
IFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgIGF1dG8gcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOwogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eEF0dHIKICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyCiAgICAgICAgIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIKICAgICAgICAgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5m
b3JtYXRpb24oKTsKICAgICAgICAgaWYgKHJlbmRlcmVyKQotICAgICAgICAgICAgUmVuZGVyU1ZH
UmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbihyZW5k
ZXJlcik7CisgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBh
cmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>