<?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>86787</bug_id>
          
          <creation_ts>2012-05-17 16:41:30 -0700</creation_ts>
          <short_desc>Update CachedResourceLoader lifetime to allow for main resources</short_desc>
          <delta_ts>2012-10-09 14:58:27 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</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>
          
          <blocked>49246</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>gustavo</cc>
    
    <cc>koivisto</cc>
    
    <cc>philn</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>627125</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-05-17 16:41:30 -0700</bug_when>
    <thetext>Currently, CachedResourceLoader is an OwnPtr of the Document.  This doesn&apos;t work for main resources, since the Document will be created after the resource&apos;s data starts coming in.  Possible ways to resolve this:

1. Refactor revalidation logic out of CachedResourceLoader and have MainResourceLoader talk to MemoryCache more directly.
2. Have the CachedResourceLoader OwnPtr&apos;ed on DocumentLoader until the Document is created, then transfer the OwnPtr to the Document.
3. Make CachedResourceLoader RefCounted and have both DocumentLoader and Document hold RefPtrs to it.
4. Have DocumentLoader OwnPtr the CachedResourceLoader and have Document::cachedResourceLoader() return its loader()-&gt;cachedResourceLoader.

Of those, (3) seems the most sane to me. (2) requires special handling in several cases (e.g., transferring between Documents during the creation of a SinkDocument), (4) requires adding a ton of null checks and seems unreliable to me, and (1) seems like it&apos;ll lead to a lot of duplicate code no matter what.

Will post a patch for (3) soon, but I&apos;m open other ideas if others feel differently.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627131</commentid>
    <comment_count>1</comment_count>
      <attachid>142588</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-05-17 16:50:47 -0700</bug_when>
    <thetext>Created attachment 142588
RefCounted&lt;CachedResourceLoader&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627176</commentid>
    <comment_count>2</comment_count>
      <attachid>142588</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-17 18:02:38 -0700</bug_when>
    <thetext>Comment on attachment 142588
RefCounted&lt;CachedResourceLoader&gt;

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

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:298
&gt; -    if (!document()-&gt;securityOrigin()-&gt;canDisplay(url)) {
&gt; +    if (document() &amp;&amp; !document()-&gt;securityOrigin()-&gt;canDisplay(url)) {

Does this mean we can request any URL if we don&apos;t have a document yet?  Should we add some asserts about |type| to make sure that loophole is only used for main resources?

&gt; Source/WebCore/loader/cache/CachedResourceLoader.h:106
&gt;      Document* document() const { return m_document; }

Should we add a // Can be 0 comment here too?

&gt; Source/WebCore/loader/cache/CachedResourceLoader.h:125
&gt; +    CachedResourceLoader(DocumentLoader*);

Please add the explicit keyword to one-argument constructors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>627178</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-17 18:04:15 -0700</bug_when>
    <thetext>I&apos;m going to leave this up here for a bit to give other folks a chance to comment.  I wonder if it&apos;s worth writing a comment near some of these functions explaining the ownership model for the CachedResourceLoader (and why).  I know we tend to avoid those sorts of comments in WebKit, but this case might be worth explaining since it&apos;s somewhat non-obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628167</commentid>
    <comment_count>4</comment_count>
      <attachid>142800</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-05-18 15:41:40 -0700</bug_when>
    <thetext>Created attachment 142800
Address abarth&apos;s comments, change and explain end of life code in Document.cpp

I wasn&apos;t clearing CachedResourceLoader::m_document at the end of the Document&apos;s life, which could theoretically lead to a stale pointer (I wasn&apos;t able to convince myself that the Document will always outlive the DocumentLoader, correct me if there&apos;s something I don&apos;t know). 

Turns out severing the Document&lt;-&gt;CachedResourceLoader connection is more complicated than I thought, because there are actually cases where multiple Documents will end up with the same CachedResourceLoader.  I think I&apos;ve made this code sufficiently defensive (and commented to death), but I may be missing something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>628398</commentid>
    <comment_count>5</comment_count>
      <attachid>142800</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-19 04:57:30 -0700</bug_when>
    <thetext>Comment on attachment 142800
Address abarth&apos;s comments, change and explain end of life code in Document.cpp

Attachment 142800 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12735109</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>629169</commentid>
    <comment_count>6</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-05-21 09:17:24 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 142800 [details])
&gt; Attachment 142800 [details] did not pass win-ews (win):
&gt; Output: http://queues.webkit.org/results/12735109

It looks like the red bots are because of redness on trunk to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634257</commentid>
    <comment_count>7</comment_count>
      <attachid>144139</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-05-25 13:48:36 -0700</bug_when>
    <thetext>Created attachment 144139
Reposting previous patch to see if EWS failures were flakes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634279</commentid>
    <comment_count>8</comment_count>
      <attachid>144139</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-25 14:10:20 -0700</bug_when>
    <thetext>Comment on attachment 144139
Reposting previous patch to see if EWS failures were flakes

Attachment 144139 did not pass win-ews (win):
Output: http://queues.webkit.org/results/12803599</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634292</commentid>
    <comment_count>9</comment_count>
      <attachid>144149</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-05-25 14:38:27 -0700</bug_when>
    <thetext>Created attachment 144149
Add missing symbols</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637563</commentid>
    <comment_count>10</comment_count>
      <attachid>144899</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-05-30 12:51:44 -0700</bug_when>
    <thetext>Created attachment 144899
Fix gtk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736080</commentid>
    <comment_count>11</comment_count>
      <attachid>167410</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-10-05 16:25:30 -0700</bug_when>
    <thetext>Created attachment 167410
Merge to trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738191</commentid>
    <comment_count>12</comment_count>
      <attachid>167410</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-09 14:34:06 -0700</bug_when>
    <thetext>Comment on attachment 167410
Merge to trunk

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

&gt; Source/WebCore/dom/Document.cpp:535
&gt; +    if (!m_cachedResourceLoader)
&gt; +        m_cachedResourceLoader = CachedResourceLoader::create(0);

Woah, we do this even when we don&apos;t have a frame.  I guess that&apos;s what we&apos;ve always done.  Interesting.

&gt; Source/WebCore/dom/Document.cpp:663
&gt; +    if (m_cachedResourceLoader-&gt;document() == this)
&gt; +        m_cachedResourceLoader-&gt;setDocument(0);

Do you want to make this a single operation on CachedResourceLoader?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738192</commentid>
    <comment_count>13</comment_count>
      <attachid>167410</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-10-09 14:34:55 -0700</bug_when>
    <thetext>Comment on attachment 167410
Merge to trunk

This patch appears correct to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738221</commentid>
    <comment_count>14</comment_count>
      <attachid>167410</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-09 14:58:22 -0700</bug_when>
    <thetext>Comment on attachment 167410
Merge to trunk

Clearing flags on attachment: 167410

Committed r130817: &lt;http://trac.webkit.org/changeset/130817&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738222</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-09 14:58:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142588</attachid>
            <date>2012-05-17 16:50:47 -0700</date>
            <delta_ts>2012-05-18 15:41:40 -0700</delta_ts>
            <desc>RefCounted&lt;CachedResourceLoader&gt;</desc>
            <filename>refcrl.txt</filename>
            <type>text/plain</type>
            <size>15236</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAxMTc1MDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTc4LDcgKzU3OCw3IEBACiAg
ICAgdm9pZCBwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhpbnQgcGFnZUluZGV4LCBJbnRTaXpl
JiBwYWdlU2l6ZSwgaW50JiBtYXJnaW5Ub3AsIGludCYgbWFyZ2luUmlnaHQsIGludCYgbWFyZ2lu
Qm90dG9tLCBpbnQmIG1hcmdpbkxlZnQpOwogCiAgICAgc3RhdGljIHZvaWQgdXBkYXRlU3R5bGVG
b3JBbGxEb2N1bWVudHMoKTsgLy8gRklYTUU6IFRyeSB0byByZWR1Y2UgdGhlICMgb2YgY2FsbHMg
dG8gdGhpcyBmdW5jdGlvbi4KLSAgICBDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKSB7IHJldHVybiBtX2NhY2hlZFJlc291cmNlTG9hZGVyLmdldCgpOyB9CisgICAg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1
cm4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlci5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIGF0
dGFjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKQEAgLTEyNDgsNyArMTI0OCw3IEBA
CiAgICAgVmVjdG9yPE93blB0cjxGb250RGF0YT4gPiBtX2N1c3RvbUZvbnRzOwogCiAgICAgRnJh
bWUqIG1fZnJhbWU7Ci0gICAgT3duUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPiBtX2NhY2hlZFJl
c291cmNlTG9hZGVyOworICAgIFJlZlB0cjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gbV9jYWNoZWRS
ZXNvdXJjZUxvYWRlcjsKICAgICBSZWZQdHI8RG9jdW1lbnRQYXJzZXI+IG1fcGFyc2VyOwogICAg
IGJvb2wgbV93ZWxsRm9ybWVkOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlz
aW9uIDExNzUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUxMyw3ICs1MTMsMTIgQEAKIAogICAgIG1fbWFya2VycyA9IGFkb3B0UHRyKG5l
dyBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIpOwogCi0gICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRl
ciA9IGFkb3B0UHRyKG5ldyBDYWNoZWRSZXNvdXJjZUxvYWRlcih0aGlzKSk7CisgICAgaWYgKG1f
ZnJhbWUpCisgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIgPSBtX2ZyYW1lLT5sb2FkZXIo
KS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKKyAgICBp
ZiAoIW1fY2FjaGVkUmVzb3VyY2VMb2FkZXIpCisgICAgICAgIG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIgPSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKDApOworICAgIG1fY2FjaGVkUmVzb3Vy
Y2VMb2FkZXItPnNldERvY3VtZW50KHRoaXMpOworCiAjaWYgRU5BQkxFKExJTktfUFJFUkVOREVS
KQogICAgIG1fcHJlcmVuZGVyZXIgPSBQcmVyZW5kZXJlcjo6Y3JlYXRlKHRoaXMpOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMTc1MTUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1MSBAQAorMjAxMi0wNS0xNyAgTmF0ZSBD
aGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIgUmVmQ291bnRlZCBhbmQgaGF2ZSBib3RoIERvY3VtZW50CisgICAgICAgIGFuZCBE
b2N1bWVudExvYWRlciBob2xkIFJlZlB0cnMuIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yCisg
ICAgICAgIGNhY2hpbmcgbWFpbiByZXNvdXJjZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njc4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbGl0eSBjaGFu
Z2VzIGF0IHRoaXMgdGltZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOiBPbmx5IGNyZWF0ZSBvdXIgb3duIENhY2hl
ZFJlc291cmNlTG9hZGVyCisgICAgICAgICAgICBpZiB3ZSB3ZXJlIGdpdmVuIGEgbnVsbCBmcmFt
ZS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwOiBUaHJvdWdob3V0LCB1c2Ugb3VyIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIgaW5z
dGVhZAorICAgICAgICAgICAgb2YgdGhlIERvY3VtZW50J3MgcG9pbnRlci4KKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpEb2N1bWVudExvYWRlcik6IENyZWF0ZSBhIENhY2hlZFJl
c291cmNlTG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6On5Eb2N1bWVu
dExvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aXNMb2FkaW5nSW5B
UElTZW5zZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c3VicmVzb3VyY2Up
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmdldFN1YnJlc291cmNlcyk6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudExvYWRlcjo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoRG9jdW1lbnRMb2Fk
ZXIpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHA6IFJlbW92ZSBtX2Rv
Y3VtZW50LCBzaW5jZSBpdCBvbmx5IGV4aXN0ZWQgdG8ga2VlcCBhbGl2ZSBhbmQgYWNjZXNzIHRo
ZSBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgICAgIEl0IGNhbiBub3cgYmUgYWNjZXNz
ZWQgZnJvbSBtX2RvY3VtZW50TG9hZGVyLgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VM
b2FkZXI6OlN1YnJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNl
TG9hZGVyOjp+U3VicmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJj
ZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcyk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmg6CisgICAgICAgIChTdWJyZXNvdXJjZUxvYWRlcik6CisgICAgICAgICogbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDogSGFuZGxlIHRoZSBwb3NzaWJpbGl0eSBv
ZiBhIG51bGwgRG9jdW1lbnQgaW4gc2V2ZXJhbCBwbGFjZXMuCisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6On5DYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRBY2Nlc3NEZW5pZWRN
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkRG9u
ZSk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpj
cmVhdGUpOiBBZGQgY3JlYXRlKCksIG1ha2UgY29uc3RydWN0b3IgcHJpdmF0ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpzZXREb2N1bWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2xlYXJEb2N1bWVudExvYWRlcik6CisgICAg
ICAgIChDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisKIDIwMTItMDUtMTcgIFN1ZGFyc2FuYSBOYWdp
bmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+CiAKICAgICAgICAgTWVt
b3J5IGxlYWsgaW4gTmV0d29ya0luZm9DbGllbnQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTE3
NTAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRT
ZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIK
QEAgLTExMCw4ICsxMTEsOSBAQAogICAgIHJldHVybiBvcHRpb25zOwogfQogCi1DYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Q2FjaGVkUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnQqIGRvY3VtZW50KQotICAg
IDogbV9kb2N1bWVudChkb2N1bWVudCkKK0NhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcihEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIpCisgICAgOiBtX2RvY3Vt
ZW50KDApCisgICAgLCBtX2RvY3VtZW50TG9hZGVyKGRvY3VtZW50TG9hZGVyKQogICAgICwgbV9y
ZXF1ZXN0Q291bnQoMCkKICAgICAsIG1fZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1Rp
bWVyKHRoaXMsICZDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJl
c291cmNlc1RpbWVyRmlyZWQpCiAgICAgLCBtX2F1dG9Mb2FkSW1hZ2VzKHRydWUpCkBAIC0xMjEs
NiArMTIzLDcgQEAKIAogQ2FjaGVkUmVzb3VyY2VMb2FkZXI6On5DYWNoZWRSZXNvdXJjZUxvYWRl
cigpCiB7CisgICAgbV9kb2N1bWVudExvYWRlciA9IDA7CiAgICAgbV9kb2N1bWVudCA9IDA7CiAK
ICAgICBjbGVhclByZWxvYWRzKCk7CkBAIC0xNDYsNiArMTQ5LDggQEAKIAogRnJhbWUqIENhY2hl
ZFJlc291cmNlTG9hZGVyOjpmcmFtZSgpIGNvbnN0CiB7CisgICAgaWYgKG1fZG9jdW1lbnRMb2Fk
ZXIpCisgICAgICAgIHJldHVybiBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpOwogICAgIHJldHVy
biBtX2RvY3VtZW50ID8gbV9kb2N1bWVudC0+ZnJhbWUoKSA6IDA7CiB9CiAKQEAgLTI5MCw3ICsy
OTUsNyBAQAogCiBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJl
c291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBmb3JQcmVsb2FkKQogewot
ICAgIGlmICghZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7
CisgICAgaWYgKGRvY3VtZW50KCkgJiYgIWRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNh
bkRpc3BsYXkodXJsKSkgewogICAgICAgICBpZiAoIWZvclByZWxvYWQpCiAgICAgICAgICAgICBG
cmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGRvY3VtZW50KCktPmZyYW1lKCksIHVy
bC5zdHJpbmcoKSk7CiAgICAgICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlIFVSTCB3YXMgbm90IGFsbG93ZWQgYnkgU2VjdXJpdHlP
cmlnaW46OmNhbkRpc3BsYXkiKTsKQEAgLTU2NCw3ICs1NjksNyBAQAogICAgIH0KIAogICAgIC8v
IER1cmluZyB0aGUgaW5pdGlhbCBsb2FkLCBhdm9pZCBsb2FkaW5nIHRoZSBzYW1lIHJlc291cmNl
IG11bHRpcGxlIHRpbWVzIGZvciBhIHNpbmdsZSBkb2N1bWVudCwgZXZlbiBpZiB0aGUgY2FjaGUg
cG9saWNpZXMgd291bGQgdGVsbCB1cyB0by4KLSAgICBpZiAoIWRvY3VtZW50KCktPmxvYWRFdmVu
dEZpbmlzaGVkKCkgJiYgbV92YWxpZGF0ZWRVUkxzLmNvbnRhaW5zKGV4aXN0aW5nUmVzb3VyY2Ut
PnVybCgpKSkKKyAgICBpZiAoZG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+bG9hZEV2ZW50Rmlu
aXNoZWQoKSAmJiBtX3ZhbGlkYXRlZFVSTHMuY29udGFpbnMoZXhpc3RpbmdSZXNvdXJjZS0+dXJs
KCkpKQogICAgICAgICByZXR1cm4gVXNlOwogCiAgICAgLy8gQ2FjaGVQb2xpY3lSZWxvYWQgYWx3
YXlzIHJlbG9hZHMKQEAgLTYxMCw3ICs2MTUsNyBAQAogICAgICAgICByZXR1cm47CiAKICAgICBT
dHJpbmcgbWVzc2FnZTsKLSAgICBpZiAobV9kb2N1bWVudC0+dXJsKCkuaXNOdWxsKCkpCisgICAg
aWYgKCFtX2RvY3VtZW50IHx8IG1fZG9jdW1lbnQtPnVybCgpLmlzTnVsbCgpKQogICAgICAgICBt
ZXNzYWdlID0gIlVuc2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJMICIgKyB1cmwuc3RyaW5nKCkgKyAn
Lic7CiAgICAgZWxzZQogICAgICAgICBtZXNzYWdlID0gIlVuc2FmZSBhdHRlbXB0IHRvIGxvYWQg
VVJMICIgKyB1cmwuc3RyaW5nKCkgKyAiIGZyb20gZnJhbWUgd2l0aCBVUkwgIiArIG1fZG9jdW1l
bnQtPnVybCgpLnN0cmluZygpICsgIi4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0
IG1hdGNoLlxuIjsKQEAgLTY1OCw3ICs2NjMsOCBAQAogCiB2b2lkIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpsb2FkRG9uZSgpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0KG1fZG9jdW1l
bnQpOworICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdERvY3VtZW50TG9hZGVyKG1f
ZG9jdW1lbnRMb2FkZXIpOworICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdERvY3VtZW50KG1f
ZG9jdW1lbnQpOwogICAgIGlmIChmcmFtZSgpKQogICAgICAgICBmcmFtZSgpLT5sb2FkZXIoKS0+
bG9hZERvbmUoKTsKICAgICBwZXJmb3JtUG9zdExvYWRBY3Rpb25zKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkocmV2
aXNpb24gMTE3NTAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE4ICs0OSwxOSBAQAogY2xhc3MgQ2Fj
aGVkVGV4dFRyYWNrOwogY2xhc3MgQ2FjaGVkWFNMU3R5bGVTaGVldDsKIGNsYXNzIERvY3VtZW50
OworY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVy
OwogY2xhc3MgS1VSTDsKIAogLy8gVGhlIENhY2hlZFJlc291cmNlTG9hZGVyIG1hbmFnZXMgdGhl
IGxvYWRpbmcgb2Ygc2NyaXB0cy9pbWFnZXMvc3R5bGVzaGVldHMgZm9yIGEgc2luZ2xlIGRvY3Vt
ZW50LgotY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgeworY2xhc3MgQ2FjaGVkUmVzb3VyY2VM
b2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKENhY2hlZFJlc291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBmcmllbmQgY2xhc3MgSW1hZ2VMb2FkZXI7CiBmcmllbmQgY2xhc3MgUmVzb3Vy
Y2VDYWNoZVZhbGlkYXRpb25TdXBwcmVzc29yOwogCiBwdWJsaWM6Ci0gICAgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoRG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWNoZWRSZXNvdXJj
ZUxvYWRlcj4gY3JlYXRlKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikgeyByZXR1cm4g
YWRvcHRSZWYobmV3IENhY2hlZFJlc291cmNlTG9hZGVyKGRvY3VtZW50TG9hZGVyKSk7IH0KICAg
ICB+Q2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZEltYWdlPiByZXF1ZXN0SW1hZ2UoUmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0xMDEsNyArMTAy
LDkgQEAKICAgICBDYWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNvbnN0OwogICAgIAogICAgIEZy
YW1lKiBmcmFtZSgpIGNvbnN0OyAvLyBDYW4gYmUgTlVMTAorICAgIHZvaWQgc2V0RG9jdW1lbnQo
RG9jdW1lbnQqIGRvY3VtZW50KSB7IG1fZG9jdW1lbnQgPSBkb2N1bWVudDsgfQogICAgIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQ7IH0KKyAgICB2b2lkIGNs
ZWFyRG9jdW1lbnRMb2FkZXIoKSB7IG1fZG9jdW1lbnRMb2FkZXIgPSAwOyB9CiAKICAgICB2b2lk
IHJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJlc291cmNlKikgY29uc3Q7CiAgICAgdm9pZCBs
b2FkRG9uZSgpOwpAQCAtMTE5LDYgKzEyMiw3IEBACiAgICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hl
ZFJlc291cmNlOjpUeXBlLCBjb25zdCBLVVJMJiwgYm9vbCBmb3JQcmVsb2FkID0gZmFsc2UpOwog
ICAgIAogcHJpdmF0ZToKKyAgICBDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciop
OwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYg
Y2hhcnNldCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJpb3Jp
dHkgPSBSZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFs
c2UpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRl
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJik7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVz
b3VyY2U+IGxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0
JiwgY29uc3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVz
b3VyY2VMb2FkZXJPcHRpb25zJik7CkBAIC0xMzYsNiArMTQwLDcgQEAKICAgICBIYXNoU2V0PFN0
cmluZz4gbV92YWxpZGF0ZWRVUkxzOwogICAgIG11dGFibGUgRG9jdW1lbnRSZXNvdXJjZU1hcCBt
X2RvY3VtZW50UmVzb3VyY2VzOwogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIERvY3Vt
ZW50TG9hZGVyKiBtX2RvY3VtZW50TG9hZGVyOwogICAgIAogICAgIGludCBtX3JlcXVlc3RDb3Vu
dDsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZp
c2lvbiAxMTc1MDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtOTEsNiArOTEsOCBAQAogICAgICAgICBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QoKTsKICAgICAgICAgdm9pZCBzZXRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogCisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRl
cigpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuZ2V0KCk7IH0KKwogICAg
ICAgICBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEoKSBjb25zdCB7IHJldHVy
biBtX3N1YnN0aXR1dGVEYXRhOyB9CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgdGhlIHNh
bWUgYXMgcmVxdWVzdFVSTCgpLiBXZSBzaG91bGQgcmVtb3ZlIG9uZSBvZiB0aGVtLgpAQCAtMjY1
LDYgKzI2Nyw3IEBACiAgICAgICAgIHZvaWQgc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1l
ckZpcmVkKFRpbWVyPERvY3VtZW50TG9hZGVyPiopOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICBGcmFtZSogbV9mcmFtZTsKKyAgICAgICAgUmVmUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPiBt
X2NhY2hlZFJlc291cmNlTG9hZGVyOwogCiAgICAgICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2Fk
ZXI+IG1fbWFpblJlc291cmNlTG9hZGVyOwogICAgICAgICBSZXNvdXJjZUxvYWRlclNldCBtX3N1
YnJlc291cmNlTG9hZGVyczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAkocmV2aXNpb24gMTE3NTAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQAogRG9jdW1lbnRM
b2FkZXI6OkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxLCBjb25zdCBT
dWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiAgICAgOiBtX2RlZmVyTWFpblJlc291cmNl
RGF0YUxvYWQodHJ1ZSkKICAgICAsIG1fZnJhbWUoMCkKKyAgICAsIG1fY2FjaGVkUmVzb3VyY2VM
b2FkZXIoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fd3JpdGVy
KG1fZnJhbWUpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVzdChyZXEpCiAgICAgLCBtX3N1YnN0aXR1
dGVEYXRhKHN1YnN0aXR1dGVEYXRhKQpAQCAtMTE0LDYgKzExNSw3IEBACiAgICAgICAgIG1faWNv
bkxvYWREZWNpc2lvbkNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgaWYgKG1faWNvbkRhdGFD
YWxsYmFjaykKICAgICAgICAgbV9pY29uRGF0YUNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CisgICAg
bV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+Y2xlYXJEb2N1bWVudExvYWRlcigpOwogfQogCiBQYXNz
UmVmUHRyPFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBj
b25zdApAQCAtNDU0LDcgKzQ1Niw3IEBACiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1l
LT5kb2N1bWVudCgpOwogICAgICAgICBpZiAoKG1fbWFpblJlc291cmNlTG9hZGVyIHx8ICFtX2Zy
YW1lLT5kb2N1bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpKSAmJiBpc0xvYWRpbmcoKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoZG9jLT5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpLT5yZXF1ZXN0Q291bnQoKSkKKyAgICAgICAgaWYgKG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXItPnJlcXVlc3RDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlm
IChEb2N1bWVudFBhcnNlciogcGFyc2VyID0gZG9jLT5wYXJzZXIoKSkKICAgICAgICAgICAgIGlm
IChwYXJzZXItPnByb2Nlc3NpbmdEYXRhKCkpCkBAIC01NjAsNyArNTYyLDcgQEAKICAgICBpZiAo
IWlzQ29tbWl0dGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVy
KCktPmNhY2hlZFJlc291cmNlKHVybCk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0g
bV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+Y2FjaGVkUmVzb3VyY2UodXJsKTsKICAgICBpZiAoIXJl
c291cmNlIHx8ICFyZXNvdXJjZS0+aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmVS
ZXNvdXJjZUZvclVSTCh1cmwpOwogCkBAIC01ODEsOSArNTgzLDcgQEAKICAgICBpZiAoIWlzQ29t
bWl0dGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1f
ZnJhbWUtPmRvY3VtZW50KCk7Ci0KLSAgICBjb25zdCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9j
dW1lbnRSZXNvdXJjZU1hcCYgYWxsUmVzb3VyY2VzID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNl
TG9hZGVyKCktPmFsbENhY2hlZFJlc291cmNlcygpOworICAgIGNvbnN0IENhY2hlZFJlc291cmNl
TG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwJiBhbGxSZXNvdXJjZXMgPSBtX2NhY2hlZFJlc291
cmNlTG9hZGVyLT5hbGxDYWNoZWRSZXNvdXJjZXMoKTsKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6RG9jdW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYWxsUmVzb3VyY2Vz
LmVuZCgpOwogICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50UmVzb3VyY2VN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkgewogICAgICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBzdWJyZXNvdXJjZSA9IHRo
aXMtPnN1YnJlc291cmNlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+c2Vjb25kLT51cmwoKSkp
OwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShy
ZXZpc2lvbiAxMTc1MDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw2IEBACiBTdWJyZXNvdXJjZUxvYWRl
cjo6U3VicmVzb3VyY2VMb2FkZXIoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IFJlc291cmNl
TG9hZGVyKGZyYW1lLCBvcHRpb25zKQogICAgICwgbV9yZXNvdXJjZShyZXNvdXJjZSkKLSAgICAs
IG1fZG9jdW1lbnQoZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgLCBtX2xvYWRpbmdNdWx0aXBhcnRD
b250ZW50KGZhbHNlKQogICAgICwgbV9zdGF0ZShVbmluaXRpYWxpemVkKQogICAgICwgbV9yZXF1
ZXN0Q291bnRUcmFja2VyKGFkb3B0UHRyKG5ldyBSZXF1ZXN0Q291bnRUcmFja2VyKGZyYW1lLT5k
b2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLCByZXNvdXJjZSkpKQpAQCAtNzQsNyAr
NzMsNiBAQAogU3VicmVzb3VyY2VMb2FkZXI6On5TdWJyZXNvdXJjZUxvYWRlcigpCiB7CiAgICAg
QVNTRVJUKG1fc3RhdGUgIT0gSW5pdGlhbGl6ZWQpOwotICAgIEFTU0VSVCghbV9kb2N1bWVudCk7
CiAgICAgQVNTRVJUKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOwogI2lmbmRlZiBOREVCVUcKICAg
ICBzdWJyZXNvdXJjZUxvYWRlckNvdW50ZXIuZGVjcmVtZW50KCk7CkBAIC0xNDcsNyArMTQ1LDcg
QEAKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3Qs
IHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGlmICghcHJldmlvdXNVUkwuaXNOdWxsKCkgJiYgIW5l
d1JlcXVlc3QuaXNOdWxsKCkgJiYgcHJldmlvdXNVUkwgIT0gbmV3UmVxdWVzdC51cmwoKSkgewot
ICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNhblJlcXVl
c3QobV9yZXNvdXJjZS0+dHlwZSgpLCBuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICBpZiAo
IW1fZG9jdW1lbnRMb2FkZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNhblJlcXVlc3QobV9y
ZXNvdXJjZS0+dHlwZSgpLCBuZXdSZXF1ZXN0LnVybCgpKSkgewogICAgICAgICAgICAgY2FuY2Vs
KCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMxNCwxMyArMzEyLDEyIEBA
CiAgICAgQVNTRVJUKCFyZWFjaGVkVGVybWluYWxTdGF0ZSgpKTsKICAgICBpZiAobV9zdGF0ZSAh
PSBVbmluaXRpYWxpemVkKSB7CiAgICAgICAgIG1fcmVxdWVzdENvdW50VHJhY2tlci5jbGVhcigp
OwotICAgICAgICBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5sb2FkRG9uZSgp
OworICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5sb2Fk
RG9uZSgpOwogICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgbV9yZXNvdXJjZS0+c3RvcExvYWRpbmcoKTsKICAgICAgICAgbV9k
b2N1bWVudExvYWRlci0+cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7CiAgICAgfQotICAg
IG1fZG9jdW1lbnQgPSAwOwogICAgIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCShy
ZXZpc2lvbiAxMTc1MDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNiBAQAogICAgIH07CiAKICAgICBDYWNo
ZWRSZXNvdXJjZSogbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7
CiAgICAgYm9vbCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50OwogICAgIFN1YnJlc291cmNlTG9h
ZGVyU3RhdGUgbV9zdGF0ZTsKICAgICBPd25QdHI8UmVxdWVzdENvdW50VHJhY2tlcj4gbV9yZXF1
ZXN0Q291bnRUcmFja2VyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>142800</attachid>
            <date>2012-05-18 15:41:40 -0700</date>
            <delta_ts>2012-05-25 13:48:36 -0700</delta_ts>
            <desc>Address abarth&apos;s comments, change and explain end of life code in Document.cpp</desc>
            <filename>refcrl2.txt</filename>
            <type>text/plain</type>
            <size>18208</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMTc1MDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ5Nyw2ICsxNDk3LDcgQEAK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYmIKIF9fWk5LN1dl
YkNvcmU4RG9jdW1lbnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQxNmRhc2hib2FyZFJlZ2lvbnNFdgorX19aTks3V2ViQ29yZThE
b2N1bWVudDIwY2FjaGVkUmVzb3VyY2VMb2FkZXJFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDMx
ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dl
YkNvcmU4RG9jdW1lbnQ0Ym9keUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NHBhZ2VFdgpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDExNzUwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzgsNyArNTc4LDcgQEAKICAgICB2
b2lkIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBh
Z2VTaXplLCBpbnQmIG1hcmdpblRvcCwgaW50JiBtYXJnaW5SaWdodCwgaW50JiBtYXJnaW5Cb3R0
b20sIGludCYgbWFyZ2luTGVmdCk7CiAKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZvckFs
bERvY3VtZW50cygpOyAvLyBGSVhNRTogVHJ5IHRvIHJlZHVjZSB0aGUgIyBvZiBjYWxscyB0byB0
aGlzIGZ1bmN0aW9uLgotICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxv
YWRlcigpIHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuZ2V0KCk7IH0KKyAgICBDYWNo
ZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CkBAIC0xMjQ4
LDcgKzEyNDgsNyBAQAogICAgIFZlY3RvcjxPd25QdHI8Rm9udERhdGE+ID4gbV9jdXN0b21Gb250
czsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwotICAgIE93blB0cjxDYWNoZWRSZXNvdXJjZUxvYWRl
cj4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsKKyAgICBSZWZQdHI8Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAgICAgUmVmUHRyPERvY3VtZW50UGFyc2VyPiBt
X3BhcnNlcjsKICAgICBib29sIG1fd2VsbEZvcm1lZDsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAxMTc1MDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTMsNyArNTEzLDEyIEBACiAKICAgICBtX21hcmtlcnMg
PSBhZG9wdFB0cihuZXcgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKTsKIAotICAgIG1fY2FjaGVk
UmVzb3VyY2VMb2FkZXIgPSBhZG9wdFB0cihuZXcgQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhpcykp
OworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyID0gbV9m
cmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCk7CisgICAgaWYgKCFtX2NhY2hlZFJlc291cmNlTG9hZGVyKQorICAgICAgICBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSgwKTsKKyAgICBt
X2NhY2hlZFJlc291cmNlTG9hZGVyLT5zZXREb2N1bWVudCh0aGlzKTsKKwogI2lmIEVOQUJMRShM
SU5LX1BSRVJFTkRFUikKICAgICBtX3ByZXJlbmRlcmVyID0gUHJlcmVuZGVyZXI6OmNyZWF0ZSh0
aGlzKTsKICNlbmRpZgpAQCAtNjI3LDYgKzYzMiwxMSBAQAogICAgICAgICBtX21lZGlhUXVlcnlN
YXRjaGVyLT5kb2N1bWVudERlc3Ryb3llZCgpOwogCiAgICAgY2xlYXJTdHlsZVJlc29sdmVyKCk7
IC8vIFdlIG5lZWQgdG8gZGVzdG9yeSBDU1NGb250U2VsZWN0b3IgYmVmb3JlIGRlc3Ryb3lpbmcg
bV9jYWNoZWRSZXNvdXJjZUxvYWRlci4KKworICAgIC8vIEl0J3MgcG9zc2libGUgZm9yIG11bHRp
cGxlIERvY3VtZW50cyB0byBlbmQgdXAgcmVmZXJlbmNpbmcgdGhlIHNhbWUgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIgKGUuZy4sIFNWR0ltYWdlcworICAgIC8vIGxvYWQgdGhlIGluaXRpYWwgZW1wdHkg
ZG9jdW1lbnQgYW5kIHRoZSBTVkdEb2N1bWVudCB3aXRoIHRoZSBzYW1lIERvY3VtZW50TG9hZGVy
KS4KKyAgICBpZiAobV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKSA9PSB0aGlzKQor
ICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5zZXREb2N1bWVudCgwKTsKICAgICBtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNsZWFyKCk7CiAKICAgICAvLyBXZSBtdXN0IGNhbGwgY2xlYXJS
YXJlRGF0YSgpIGhlcmUgc2luY2UgYSBEb2N1bWVudCBjbGFzcyBpbmhlcml0cyBUcmVlU2NvcGUK
QEAgLTU5NTQsNiArNTk2NCwxNiBAQAogI2VuZGlmCiB9CiAKK0NhY2hlZFJlc291cmNlTG9hZGVy
KiBEb2N1bWVudDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBjb25zdAoreworICAgIC8vIE5vcm1h
bGx5LCB3ZSBzaG91bGRuJ3QgYmUgYWNjZXNzaW5nIENhY2hlZFJlc291cmNlTG9hZGVyIHVubGVz
cyB0aGlzIERvY3VtZW50IGlzIGFjdHVhbGx5IHRoZSBjb250ZXh0CisgICAgLy8gdGhlIENhY2hl
ZFJlc291cmNlTG9hZGVyIGlzIHVzaW5nLiBIb3dldmVyLCB3ZSBuZWVkIHRvIGRvIHNvbWUgY2xl
YW51cCBpbiB0aGUgZGVzdHJ1Y3RvciAoaGVuY2UgdGhlCisgICAgLy8gbV9kZWxldGlvbkhhc0Jl
Z3VuIGNoZWNrKSwgYW5kIHdlIG1heSBubyBsb25nZXIgYmUgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
Om1fZG9jdW1lbnQuIFRoaXMgY2FuIG9ubHkKKyAgICAvLyBoYXBwZW4gaW4gY2FzZXMgd2hlcmUg
d2UgY3JlYXRlIGEgbmV3IERvY3VtZW50IHdpdGhvdXQgYSBuZXcgRG9jdW1lbnRMb2FkZXIgKGUu
Zy4sIFNWR0ltYWdlcykuCisgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1biB8fCBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpID09IHRoaXMpOworICAgIHJldHVybiBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyLmdldCgpOworfQorCiBEb2N1bWVudExvYWRlciogRG9jdW1lbnQ6Omxv
YWRlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMTE3NjI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTggQEAKKzIwMTItMDUtMTggIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBNYWtlIENhY2hlZFJlc291cmNlTG9hZGVyIFJlZkNvdW50ZWQgYW5k
IGhhdmUgYm90aCBEb2N1bWVudAorICAgICAgICBhbmQgRG9jdW1lbnRMb2FkZXIgaG9sZCBSZWZQ
dHJzLiBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvcgorICAgICAgICBjYWNoaW5nIG1haW4gcmVz
b3VyY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcyBhdCB0aGlzIHRpbWUuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IE9ubHkgY3JlYXRlIG91ciBvd24gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIKKyAgICAgICAgICAgIGlmIHdlIHdlcmUgZ2l2ZW4gYSBudWxsIGZyYW1lLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcDogVGhyb3VnaG91dCwgdXNlIG91ciBtX2NhY2hlZFJlc291
cmNlTG9hZGVyIGluc3RlYWQKKyAgICAgICAgICAgIG9mIHRoZSBEb2N1bWVudCdzIHBvaW50ZXIu
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOiBDcmVh
dGUgYSBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjp+RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmlzTG9hZGluZ0luQVBJU2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnN1YnJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpnZXRTdWJy
ZXNvdXJjZXMpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAg
KERvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OiBSZW1vdmUgbV9kb2N1bWVudCwgc2luY2UgaXQgb25seSBleGlzdGVkIHRvIGtlZXAgYWxpdmUg
YW5kIGFjY2VzcyB0aGUgQ2FjaGVkUmVzb3VyY2VMb2FkZXIuCisgICAgICAgICAgICBJdCBjYW4g
bm93IGJlIGFjY2Vzc2VkIGZyb20gbV9kb2N1bWVudExvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpTdWJyZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6flN1YnJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAqIGxvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoU3VicmVzb3VyY2VMb2FkZXIpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6IEhhbmRsZSB0aGUg
cG9zc2liaWxpdHkgb2YgYSBudWxsIERvY3VtZW50IGluIHNldmVyYWwgcGxhY2VzLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjp+Q2FjaGVkUmVzb3VyY2VM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRp
b25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByaW50
QWNjZXNzRGVuaWVkTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6bG9hZERvbmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Y3JlYXRlKTogQWRkIGNyZWF0ZSgpLCBtYWtlIGNvbnN0cnVjdG9yIHByaXZh
dGUuCisgICAgICAgIChDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6ZG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnNldERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpjbGVhckRvY3VtZW50TG9hZGVyKToKKwogMjAxMi0wNS0xOCAgVmlhdGNo
ZXNsYXYgT3N0YXBlbmtvICA8b3N0YXBlbmtvLnZpYXRjaGVzbGF2QG5va2lhLmNvbT4KIAogICAg
ICAgICBbUXRdIFJFR1JFU1NJT04ocjExNzUwMSk6IEl0IG1hZGUgYWxtb3N0IGFsbCB0ZXN0cyBh
c3NlcnQgaW4gZGVidWcgbW9kZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMTc1MDApCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtMTEwLDgg
KzExMSw5IEBACiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKLUNhY2hlZFJlc291cmNlTG9hZGVy
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBtX2RvY3Vt
ZW50KGRvY3VtZW50KQorQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVy
KERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikKKyAgICA6IG1fZG9jdW1lbnQoMCkKKyAg
ICAsIG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCiAgICAgLCBtX3JlcXVlc3RDb3Vu
dCgwKQogICAgICwgbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXIodGhpcywg
JkNhY2hlZFJlc291cmNlTG9hZGVyOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGlt
ZXJGaXJlZCkKICAgICAsIG1fYXV0b0xvYWRJbWFnZXModHJ1ZSkKQEAgLTEyMSw2ICsxMjMsNyBA
QAogCiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6fkNhY2hlZFJlc291cmNlTG9hZGVyKCkKIHsKKyAg
ICBtX2RvY3VtZW50TG9hZGVyID0gMDsKICAgICBtX2RvY3VtZW50ID0gMDsKIAogICAgIGNsZWFy
UHJlbG9hZHMoKTsKQEAgLTE0Niw3ICsxNDksNyBAQAogCiBGcmFtZSogQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmZyYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kb2N1bWVudCA/IG1fZG9jdW1l
bnQtPmZyYW1lKCkgOiAwOworICAgIHJldHVybiBtX2RvY3VtZW50TG9hZGVyID8gbV9kb2N1bWVu
dExvYWRlci0+ZnJhbWUoKSA6IDA7CiB9CiAKIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZElt
YWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKQEAgLTI5MCw2ICsyOTMsMTAgQEAKIAogYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmws
IGJvb2wgZm9yUHJlbG9hZCkKIHsKKyAgICAvLyBGSVhNRTogV2hlbiB3ZSBjYW4gbG9hZCBtYWlu
IHJlc291cmNlcyB0aHJvdWdoIENhY2hlZFJlc291cmNlTG9hZGVyLCB3ZSdsbCBuZWVkIHRvIGFs
bG93IGZvciBudWxsIGRvY3VtZW50KCkgaGVyZS4KKyAgICBpZiAoIWRvY3VtZW50KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+Y2FuRGlzcGxheSh1cmwpKSB7CiAgICAgICAgIGlmICghZm9yUHJlbG9hZCkKICAgICAgICAg
ICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZG9jdW1lbnQoKS0+ZnJhbWUo
KSwgdXJsLnN0cmluZygpKTsKQEAgLTU2NCw3ICs1NzEsNyBAQAogICAgIH0KIAogICAgIC8vIER1
cmluZyB0aGUgaW5pdGlhbCBsb2FkLCBhdm9pZCBsb2FkaW5nIHRoZSBzYW1lIHJlc291cmNlIG11
bHRpcGxlIHRpbWVzIGZvciBhIHNpbmdsZSBkb2N1bWVudCwgZXZlbiBpZiB0aGUgY2FjaGUgcG9s
aWNpZXMgd291bGQgdGVsbCB1cyB0by4KLSAgICBpZiAoIWRvY3VtZW50KCktPmxvYWRFdmVudEZp
bmlzaGVkKCkgJiYgbV92YWxpZGF0ZWRVUkxzLmNvbnRhaW5zKGV4aXN0aW5nUmVzb3VyY2UtPnVy
bCgpKSkKKyAgICBpZiAoZG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+bG9hZEV2ZW50RmluaXNo
ZWQoKSAmJiBtX3ZhbGlkYXRlZFVSTHMuY29udGFpbnMoZXhpc3RpbmdSZXNvdXJjZS0+dXJsKCkp
KQogICAgICAgICByZXR1cm4gVXNlOwogCiAgICAgLy8gQ2FjaGVQb2xpY3lSZWxvYWQgYWx3YXlz
IHJlbG9hZHMKQEAgLTYxMCw3ICs2MTcsNyBAQAogICAgICAgICByZXR1cm47CiAKICAgICBTdHJp
bmcgbWVzc2FnZTsKLSAgICBpZiAobV9kb2N1bWVudC0+dXJsKCkuaXNOdWxsKCkpCisgICAgaWYg
KCFtX2RvY3VtZW50IHx8IG1fZG9jdW1lbnQtPnVybCgpLmlzTnVsbCgpKQogICAgICAgICBtZXNz
YWdlID0gIlVuc2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJMICIgKyB1cmwuc3RyaW5nKCkgKyAnLic7
CiAgICAgZWxzZQogICAgICAgICBtZXNzYWdlID0gIlVuc2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJM
ICIgKyB1cmwuc3RyaW5nKCkgKyAiIGZyb20gZnJhbWUgd2l0aCBVUkwgIiArIG1fZG9jdW1lbnQt
PnVybCgpLnN0cmluZygpICsgIi4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1h
dGNoLlxuIjsKQEAgLTY1OCw3ICs2NjUsOCBAQAogCiB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVy
Ojpsb2FkRG9uZSgpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0KG1fZG9jdW1lbnQp
OworICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdERvY3VtZW50TG9hZGVyKG1fZG9j
dW1lbnRMb2FkZXIpOworICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdERvY3VtZW50KG1fZG9j
dW1lbnQpOwogICAgIGlmIChmcmFtZSgpKQogICAgICAgICBmcmFtZSgpLT5sb2FkZXIoKS0+bG9h
ZERvbmUoKTsKICAgICBwZXJmb3JtUG9zdExvYWRBY3Rpb25zKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNp
b24gMTE3NTAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE4ICs0OSwyNiBAQAogY2xhc3MgQ2FjaGVk
VGV4dFRyYWNrOwogY2xhc3MgQ2FjaGVkWFNMU3R5bGVTaGVldDsKIGNsYXNzIERvY3VtZW50Owor
Y2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVyOwog
Y2xhc3MgS1VSTDsKIAotLy8gVGhlIENhY2hlZFJlc291cmNlTG9hZGVyIG1hbmFnZXMgdGhlIGxv
YWRpbmcgb2Ygc2NyaXB0cy9pbWFnZXMvc3R5bGVzaGVldHMgZm9yIGEgc2luZ2xlIGRvY3VtZW50
LgotY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgeworLy8gVGhlIENhY2hlZFJlc291cmNlTG9h
ZGVyIHByb3ZpZGVzIGEgcGVyLWNvbnRleHQgaW50ZXJmYWNlIHRvIHRoZSBNZW1vcnlDYWNoZQor
Ly8gYW5kIGVuZm9yY2VzIGEgYnVuY2ggb2Ygc2VjdXJpdHkgY2hlY2tzIGFuZCBydWxlcyBmb3Ig
cmVzb3VyY2UgcmV2YWxpZGF0aW9uLgorLy8gSXRzIGxpZmV0aW1lIGlzIHJvdWdobHkgcGVyLURv
Y3VtZW50TG9hZGVyLCBpbiB0aGF0IGl0IGlzIGdlbmVyYWxseSBjcmVhdGVkCisvLyBpbiB0aGUg
RG9jdW1lbnRMb2FkZXIgY29uc3RydWN0b3IgYW5kIGxvc2VzIGl0cyBhYmlsaXR5IHRvIGdlbmVy
YXRlIG5ldHdvcmsKKy8vIHJlcXVlc3RzIHdoZW4gdGhlIERvY3VtZW50TG9hZGVyIGlzIGRlc3Ry
b3llZC4gRG9jdW1lbnRzIGFsc28gaG9sZCBhIAorLy8gUmVmUHRyPENhY2hlZFJlc291cmNlTG9h
ZGVyPiBmb3IgdGhlaXIgbGlmZXRpbWUgKGFuZCB3aWxsIGNyZWF0ZSBvbmUgaWYgdGhleQorLy8g
YXJlIGluaXRpYWxpemVkIHdpdGhvdXQgYSBGcmFtZSksIHNvIGEgRG9jdW1lbnQgY2FuIGtlZXAg
YSBDYWNoZWRSZXNvdXJjZUxvYWRlcgorLy8gYWxpdmUgcGFzdCBkZXRhY2ggaWYgc2NyaXB0cyBz
dGlsbCByZWZlcmVuY2UgdGhlIERvY3VtZW50LgorY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENhY2hlZFJlc291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBmcmllbmQgY2xhc3MgSW1hZ2VMb2FkZXI7CiBmcmllbmQgY2xhc3MgUmVzb3VyY2VDYWNo
ZVZhbGlkYXRpb25TdXBwcmVzc29yOwogCiBwdWJsaWM6Ci0gICAgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoRG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWNoZWRSZXNvdXJjZUxvYWRl
cj4gY3JlYXRlKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IENhY2hlZFJlc291cmNlTG9hZGVyKGRvY3VtZW50TG9hZGVyKSk7IH0KICAgICB+Q2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZElt
YWdlPiByZXF1ZXN0SW1hZ2UoUmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0xMDAsOCArMTA4LDEwIEBA
CiAgICAgCiAgICAgQ2FjaGVQb2xpY3kgY2FjaGVQb2xpY3koKSBjb25zdDsKICAgICAKLSAgICBG
cmFtZSogZnJhbWUoKSBjb25zdDsgLy8gQ2FuIGJlIE5VTEwKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50OyB9CisgICAgRnJhbWUqIGZyYW1lKCkgY29u
c3Q7IC8vIENhbiBiZSBudWxsCisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9kb2N1bWVudDsgfSAvLyBDYW4gYmUgbnVsbAorICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KSB7IG1fZG9jdW1lbnQgPSBkb2N1bWVudDsgfQorICAgIHZvaWQgY2xl
YXJEb2N1bWVudExvYWRlcigpIHsgbV9kb2N1bWVudExvYWRlciA9IDA7IH0KIAogICAgIHZvaWQg
cmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKSBjb25zdDsKICAgICB2b2lkIGxv
YWREb25lKCk7CkBAIC0xMTksNiArMTI5LDcgQEAKICAgICBib29sIGNhblJlcXVlc3QoQ2FjaGVk
UmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwmLCBib29sIGZvclByZWxvYWQgPSBmYWxzZSk7CiAg
ICAgCiBwcml2YXRlOgorICAgIGV4cGxpY2l0IENhY2hlZFJlc291cmNlTG9hZGVyKERvY3VtZW50
TG9hZGVyKik7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlcXVl
c3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBSZXNvdXJjZUxv
YWRQcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgYm9vbCBpc1ByZWxv
YWQgPSBmYWxzZSk7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJl
dmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlTG9hZFByaW9yaXR5LCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gbG9hZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5LCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKQEAgLTEzNiw2ICsxNDcsNyBAQAogICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3ZhbGlkYXRlZFVSTHM7CiAgICAgbXV0YWJsZSBEb2N1bWVudFJlc291
cmNlTWFwIG1fZG9jdW1lbnRSZXNvdXJjZXM7CiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7Cisg
ICAgRG9jdW1lbnRMb2FkZXIqIG1fZG9jdW1lbnRMb2FkZXI7CiAgICAgCiAgICAgaW50IG1fcmVx
dWVzdENvdW50OwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgJKHJldmlzaW9uIDExNzUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4IEBACiAgICAgICAgIFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCgpOwogICAgICAgICB2b2lkIHNldFJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291
cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlci5nZXQoKTsg
fQorCiAgICAgICAgIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGE7IH0KIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyB0aGUgc2FtZSBhcyByZXF1ZXN0VVJMKCkuIFdlIHNob3VsZCByZW1vdmUgb25lIG9mIHRoZW0u
CkBAIC0yNjUsNiArMjY3LDcgQEAKICAgICAgICAgdm9pZCBzdWJzdGl0dXRlUmVzb3VyY2VEZWxp
dmVyeVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnRMb2FkZXI+Kik7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgIEZyYW1lKiBtX2ZyYW1lOworICAgICAgICBSZWZQdHI8Q2FjaGVkUmVzb3VyY2VM
b2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAKICAgICAgICAgUmVmUHRyPE1haW5SZXNv
dXJjZUxvYWRlcj4gbV9tYWluUmVzb3VyY2VMb2FkZXI7CiAgICAgICAgIFJlc291cmNlTG9hZGVy
U2V0IG1fc3VicmVzb3VyY2VMb2FkZXJzOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAxMTc1MDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw3IEBACiBE
b2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKICAgICA6IG1fZGVmZXJNYWlu
UmVzb3VyY2VEYXRhTG9hZCh0cnVlKQogICAgICwgbV9mcmFtZSgwKQorICAgICwgbV9jYWNoZWRS
ZXNvdXJjZUxvYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMpKQogICAgICwg
bV93cml0ZXIobV9mcmFtZSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcSkKICAgICAsIG1f
c3Vic3RpdHV0ZURhdGEoc3Vic3RpdHV0ZURhdGEpCkBAIC0xMTQsNiArMTE1LDcgQEAKICAgICAg
ICAgbV9pY29uTG9hZERlY2lzaW9uQ2FsbGJhY2stPmludmFsaWRhdGUoKTsKICAgICBpZiAobV9p
Y29uRGF0YUNhbGxiYWNrKQogICAgICAgICBtX2ljb25EYXRhQ2FsbGJhY2stPmludmFsaWRhdGUo
KTsKKyAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5jbGVhckRvY3VtZW50TG9hZGVyKCk7CiB9
CiAKIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNl
RGF0YSgpIGNvbnN0CkBAIC00NTQsNyArNDU2LDcgQEAKICAgICAgICAgRG9jdW1lbnQqIGRvYyA9
IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgICAgIGlmICgobV9tYWluUmVzb3VyY2VMb2FkZXIg
fHwgIW1fZnJhbWUtPmRvY3VtZW50KCktPmxvYWRFdmVudEZpbmlzaGVkKCkpICYmIGlzTG9hZGlu
ZygpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChkb2MtPmNhY2hlZFJl
c291cmNlTG9hZGVyKCktPnJlcXVlc3RDb3VudCgpKQorICAgICAgICBpZiAobV9jYWNoZWRSZXNv
dXJjZUxvYWRlci0+cmVxdWVzdENvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBkb2MtPnBhcnNlcigpKQogICAgICAg
ICAgICAgaWYgKHBhcnNlci0+cHJvY2Vzc2luZ0RhdGEoKSkKQEAgLTU2MCw3ICs1NjIsNyBAQAog
ICAgIGlmICghaXNDb21taXR0ZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2UodXJsKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5jYWNoZWRSZXNvdXJjZSh1cmwpOwogICAg
IGlmICghcmVzb3VyY2UgfHwgIXJlc291cmNlLT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm4g
YXJjaGl2ZVJlc291cmNlRm9yVVJMKHVybCk7CiAKQEAgLTU4MSw5ICs1ODMsNyBAQAogICAgIGlm
ICghaXNDb21taXR0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKLQotICAgIGNvbnN0IENhY2hlZFJlc291cmNlTG9h
ZGVyOjpEb2N1bWVudFJlc291cmNlTWFwJiBhbGxSZXNvdXJjZXMgPSBkb2N1bWVudC0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS0+YWxsQ2FjaGVkUmVzb3VyY2VzKCk7CisgICAgY29uc3QgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50UmVzb3VyY2VNYXAmIGFsbFJlc291cmNlcyA9IG1fY2Fj
aGVkUmVzb3VyY2VMb2FkZXItPmFsbENhY2hlZFJlc291cmNlcygpOwogICAgIENhY2hlZFJlc291
cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBhbGxS
ZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRS
ZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbGxSZXNvdXJjZXMuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJlc291
cmNlID0gdGhpcy0+c3VicmVzb3VyY2UoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT5zZWNvbmQt
PnVybCgpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDExNzUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDYgQEAKIFN1YnJlc291
cmNlTG9hZGVyOjpTdWJyZXNvdXJjZUxvYWRlcihGcmFtZSogZnJhbWUsIENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogICAgIDog
UmVzb3VyY2VMb2FkZXIoZnJhbWUsIG9wdGlvbnMpCiAgICAgLCBtX3Jlc291cmNlKHJlc291cmNl
KQotICAgICwgbV9kb2N1bWVudChmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAsIG1fbG9hZGluZ011
bHRpcGFydENvbnRlbnQoZmFsc2UpCiAgICAgLCBtX3N0YXRlKFVuaW5pdGlhbGl6ZWQpCiAgICAg
LCBtX3JlcXVlc3RDb3VudFRyYWNrZXIoYWRvcHRQdHIobmV3IFJlcXVlc3RDb3VudFRyYWNrZXIo
ZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCksIHJlc291cmNlKSkpCkBA
IC03NCw3ICs3Myw2IEBACiBTdWJyZXNvdXJjZUxvYWRlcjo6flN1YnJlc291cmNlTG9hZGVyKCkK
IHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBJbml0aWFsaXplZCk7Ci0gICAgQVNTRVJUKCFtX2Rv
Y3VtZW50KTsKICAgICBBU1NFUlQocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7CiAjaWZuZGVmIE5E
RUJVRwogICAgIHN1YnJlc291cmNlTG9hZGVyQ291bnRlci5kZWNyZW1lbnQoKTsKQEAgLTE0Nyw3
ICsxNDUsNyBAQAogICAgIAogICAgIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QobmV3
UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgaWYgKCFwcmV2aW91c1VSTC5pc051bGwo
KSAmJiAhbmV3UmVxdWVzdC5pc051bGwoKSAmJiBwcmV2aW91c1VSTCAhPSBuZXdSZXF1ZXN0LnVy
bCgpKSB7Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+
Y2FuUmVxdWVzdChtX3Jlc291cmNlLT50eXBlKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7CisgICAg
ICAgIGlmICghbV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FuUmVx
dWVzdChtX3Jlc291cmNlLT50eXBlKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7CiAgICAgICAgICAg
ICBjYW5jZWwoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzE0LDEzICsz
MTIsMTIgQEAKICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOwogICAgIGlmICht
X3N0YXRlICE9IFVuaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9yZXF1ZXN0Q291bnRUcmFja2Vy
LmNsZWFyKCk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmxv
YWREb25lKCk7CisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmNhY2hlZFJlc291cmNlTG9hZGVy
KCktPmxvYWREb25lKCk7CiAgICAgICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX3Jlc291cmNlLT5zdG9wTG9hZGluZygpOwogICAg
ICAgICBtX2RvY3VtZW50TG9hZGVyLT5yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcih0aGlzKTsKICAg
ICB9Ci0gICAgbV9kb2N1bWVudCA9IDA7CiAgICAgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNv
dXJjZXMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmgJKHJldmlzaW9uIDExNzUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw2IEBACiAgICAgfTsKIAog
ICAgIENhY2hlZFJlc291cmNlKiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxEb2N1bWVudD4gbV9k
b2N1bWVudDsKICAgICBib29sIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQ7CiAgICAgU3VicmVz
b3VyY2VMb2FkZXJTdGF0ZSBtX3N0YXRlOwogICAgIE93blB0cjxSZXF1ZXN0Q291bnRUcmFja2Vy
PiBtX3JlcXVlc3RDb3VudFRyYWNrZXI7Cg==
</data>
<flag name="commit-queue"
          id="149219"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144139</attachid>
            <date>2012-05-25 13:48:36 -0700</date>
            <delta_ts>2012-05-25 14:11:59 -0700</delta_ts>
            <desc>Reposting previous patch to see if EWS failures were flakes</desc>
            <filename>refcrl2.txt</filename>
            <type>text/plain</type>
            <size>18208</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMTc1MDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ5Nyw2ICsxNDk3LDcgQEAK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYmIKIF9fWk5LN1dl
YkNvcmU4RG9jdW1lbnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UKIF9f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQxNmRhc2hib2FyZFJlZ2lvbnNFdgorX19aTks3V2ViQ29yZThE
b2N1bWVudDIwY2FjaGVkUmVzb3VyY2VMb2FkZXJFdgogX19aTks3V2ViQ29yZThEb2N1bWVudDMx
ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk5LN1dl
YkNvcmU4RG9jdW1lbnQ0Ym9keUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NHBhZ2VFdgpJbmRl
eDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDExNzUwMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NzgsNyArNTc4LDcgQEAKICAgICB2
b2lkIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUmIHBh
Z2VTaXplLCBpbnQmIG1hcmdpblRvcCwgaW50JiBtYXJnaW5SaWdodCwgaW50JiBtYXJnaW5Cb3R0
b20sIGludCYgbWFyZ2luTGVmdCk7CiAKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZvckFs
bERvY3VtZW50cygpOyAvLyBGSVhNRTogVHJ5IHRvIHJlZHVjZSB0aGUgIyBvZiBjYWxscyB0byB0
aGlzIGZ1bmN0aW9uLgotICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxv
YWRlcigpIHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuZ2V0KCk7IH0KKyAgICBDYWNo
ZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKIAogICAgIHZp
cnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CkBAIC0xMjQ4
LDcgKzEyNDgsNyBAQAogICAgIFZlY3RvcjxPd25QdHI8Rm9udERhdGE+ID4gbV9jdXN0b21Gb250
czsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwotICAgIE93blB0cjxDYWNoZWRSZXNvdXJjZUxvYWRl
cj4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsKKyAgICBSZWZQdHI8Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAgICAgUmVmUHRyPERvY3VtZW50UGFyc2VyPiBt
X3BhcnNlcjsKICAgICBib29sIG1fd2VsbEZvcm1lZDsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCShyZXZpc2lvbiAxMTc1MDApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTMsNyArNTEzLDEyIEBACiAKICAgICBtX21hcmtlcnMg
PSBhZG9wdFB0cihuZXcgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKTsKIAotICAgIG1fY2FjaGVk
UmVzb3VyY2VMb2FkZXIgPSBhZG9wdFB0cihuZXcgQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhpcykp
OworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyID0gbV9m
cmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCk7CisgICAgaWYgKCFtX2NhY2hlZFJlc291cmNlTG9hZGVyKQorICAgICAgICBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSgwKTsKKyAgICBt
X2NhY2hlZFJlc291cmNlTG9hZGVyLT5zZXREb2N1bWVudCh0aGlzKTsKKwogI2lmIEVOQUJMRShM
SU5LX1BSRVJFTkRFUikKICAgICBtX3ByZXJlbmRlcmVyID0gUHJlcmVuZGVyZXI6OmNyZWF0ZSh0
aGlzKTsKICNlbmRpZgpAQCAtNjI3LDYgKzYzMiwxMSBAQAogICAgICAgICBtX21lZGlhUXVlcnlN
YXRjaGVyLT5kb2N1bWVudERlc3Ryb3llZCgpOwogCiAgICAgY2xlYXJTdHlsZVJlc29sdmVyKCk7
IC8vIFdlIG5lZWQgdG8gZGVzdG9yeSBDU1NGb250U2VsZWN0b3IgYmVmb3JlIGRlc3Ryb3lpbmcg
bV9jYWNoZWRSZXNvdXJjZUxvYWRlci4KKworICAgIC8vIEl0J3MgcG9zc2libGUgZm9yIG11bHRp
cGxlIERvY3VtZW50cyB0byBlbmQgdXAgcmVmZXJlbmNpbmcgdGhlIHNhbWUgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIgKGUuZy4sIFNWR0ltYWdlcworICAgIC8vIGxvYWQgdGhlIGluaXRpYWwgZW1wdHkg
ZG9jdW1lbnQgYW5kIHRoZSBTVkdEb2N1bWVudCB3aXRoIHRoZSBzYW1lIERvY3VtZW50TG9hZGVy
KS4KKyAgICBpZiAobV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKSA9PSB0aGlzKQor
ICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5zZXREb2N1bWVudCgwKTsKICAgICBtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNsZWFyKCk7CiAKICAgICAvLyBXZSBtdXN0IGNhbGwgY2xlYXJS
YXJlRGF0YSgpIGhlcmUgc2luY2UgYSBEb2N1bWVudCBjbGFzcyBpbmhlcml0cyBUcmVlU2NvcGUK
QEAgLTU5NTQsNiArNTk2NCwxNiBAQAogI2VuZGlmCiB9CiAKK0NhY2hlZFJlc291cmNlTG9hZGVy
KiBEb2N1bWVudDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBjb25zdAoreworICAgIC8vIE5vcm1h
bGx5LCB3ZSBzaG91bGRuJ3QgYmUgYWNjZXNzaW5nIENhY2hlZFJlc291cmNlTG9hZGVyIHVubGVz
cyB0aGlzIERvY3VtZW50IGlzIGFjdHVhbGx5IHRoZSBjb250ZXh0CisgICAgLy8gdGhlIENhY2hl
ZFJlc291cmNlTG9hZGVyIGlzIHVzaW5nLiBIb3dldmVyLCB3ZSBuZWVkIHRvIGRvIHNvbWUgY2xl
YW51cCBpbiB0aGUgZGVzdHJ1Y3RvciAoaGVuY2UgdGhlCisgICAgLy8gbV9kZWxldGlvbkhhc0Jl
Z3VuIGNoZWNrKSwgYW5kIHdlIG1heSBubyBsb25nZXIgYmUgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
Om1fZG9jdW1lbnQuIFRoaXMgY2FuIG9ubHkKKyAgICAvLyBoYXBwZW4gaW4gY2FzZXMgd2hlcmUg
d2UgY3JlYXRlIGEgbmV3IERvY3VtZW50IHdpdGhvdXQgYSBuZXcgRG9jdW1lbnRMb2FkZXIgKGUu
Zy4sIFNWR0ltYWdlcykuCisgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1biB8fCBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpID09IHRoaXMpOworICAgIHJldHVybiBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyLmdldCgpOworfQorCiBEb2N1bWVudExvYWRlciogRG9jdW1lbnQ6Omxv
YWRlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQpJbmRleDogU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNp
b24gMTE3NjI1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTggQEAKKzIwMTItMDUtMTggIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBNYWtlIENhY2hlZFJlc291cmNlTG9hZGVyIFJlZkNvdW50ZWQgYW5k
IGhhdmUgYm90aCBEb2N1bWVudAorICAgICAgICBhbmQgRG9jdW1lbnRMb2FkZXIgaG9sZCBSZWZQ
dHJzLiBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvcgorICAgICAgICBjYWNoaW5nIG1haW4gcmVz
b3VyY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODY3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
byBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcyBhdCB0aGlzIHRpbWUuCisKKyAg
ICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IE9ubHkgY3JlYXRlIG91ciBvd24gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIKKyAgICAgICAgICAgIGlmIHdlIHdlcmUgZ2l2ZW4gYSBudWxsIGZyYW1lLgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50TG9hZGVyLmNwcDogVGhyb3VnaG91dCwgdXNlIG91ciBtX2NhY2hlZFJlc291
cmNlTG9hZGVyIGluc3RlYWQKKyAgICAgICAgICAgIG9mIHRoZSBEb2N1bWVudCdzIHBvaW50ZXIu
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOiBDcmVh
dGUgYSBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjp+RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmlzTG9hZGluZ0luQVBJU2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OnN1YnJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpnZXRTdWJy
ZXNvdXJjZXMpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAg
KERvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
OiBSZW1vdmUgbV9kb2N1bWVudCwgc2luY2UgaXQgb25seSBleGlzdGVkIHRvIGtlZXAgYWxpdmUg
YW5kIGFjY2VzcyB0aGUgQ2FjaGVkUmVzb3VyY2VMb2FkZXIuCisgICAgICAgICAgICBJdCBjYW4g
bm93IGJlIGFjY2Vzc2VkIGZyb20gbV9kb2N1bWVudExvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6
OlN1YnJlc291cmNlTG9hZGVyOjpTdWJyZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdWJyZXNvdXJjZUxvYWRlcjo6flN1YnJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U3VicmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAqIGxvYWRl
ci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoU3VicmVzb3VyY2VMb2FkZXIpOgorICAg
ICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6IEhhbmRsZSB0aGUg
cG9zc2liaWxpdHkgb2YgYSBudWxsIERvY3VtZW50IGluIHNldmVyYWwgcGxhY2VzLgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjp+Q2FjaGVkUmVzb3VyY2VM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRp
b25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByaW50
QWNjZXNzRGVuaWVkTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6bG9hZERvbmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Y3JlYXRlKTogQWRkIGNyZWF0ZSgpLCBtYWtlIGNvbnN0cnVjdG9yIHByaXZh
dGUuCisgICAgICAgIChDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6ZG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnNldERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlTG9hZGVyOjpjbGVhckRvY3VtZW50TG9hZGVyKToKKwogMjAxMi0wNS0xOCAgVmlhdGNo
ZXNsYXYgT3N0YXBlbmtvICA8b3N0YXBlbmtvLnZpYXRjaGVzbGF2QG5va2lhLmNvbT4KIAogICAg
ICAgICBbUXRdIFJFR1JFU1NJT04ocjExNzUwMSk6IEl0IG1hZGUgYWxtb3N0IGFsbCB0ZXN0cyBh
c3NlcnQgaW4gZGVidWcgbW9kZQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMTc1MDApCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3VyaXR5UG9s
aWN5LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAtMTEwLDgg
KzExMSw5IEBACiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKLUNhY2hlZFJlc291cmNlTG9hZGVy
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBtX2RvY3Vt
ZW50KGRvY3VtZW50KQorQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVy
KERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikKKyAgICA6IG1fZG9jdW1lbnQoMCkKKyAg
ICAsIG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCiAgICAgLCBtX3JlcXVlc3RDb3Vu
dCgwKQogICAgICwgbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXIodGhpcywg
JkNhY2hlZFJlc291cmNlTG9hZGVyOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGlt
ZXJGaXJlZCkKICAgICAsIG1fYXV0b0xvYWRJbWFnZXModHJ1ZSkKQEAgLTEyMSw2ICsxMjMsNyBA
QAogCiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6fkNhY2hlZFJlc291cmNlTG9hZGVyKCkKIHsKKyAg
ICBtX2RvY3VtZW50TG9hZGVyID0gMDsKICAgICBtX2RvY3VtZW50ID0gMDsKIAogICAgIGNsZWFy
UHJlbG9hZHMoKTsKQEAgLTE0Niw3ICsxNDksNyBAQAogCiBGcmFtZSogQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OmZyYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kb2N1bWVudCA/IG1fZG9jdW1l
bnQtPmZyYW1lKCkgOiAwOworICAgIHJldHVybiBtX2RvY3VtZW50TG9hZGVyID8gbV9kb2N1bWVu
dExvYWRlci0+ZnJhbWUoKSA6IDA7CiB9CiAKIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZElt
YWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKQEAgLTI5MCw2ICsyOTMsMTAgQEAKIAogYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmws
IGJvb2wgZm9yUHJlbG9hZCkKIHsKKyAgICAvLyBGSVhNRTogV2hlbiB3ZSBjYW4gbG9hZCBtYWlu
IHJlc291cmNlcyB0aHJvdWdoIENhY2hlZFJlc291cmNlTG9hZGVyLCB3ZSdsbCBuZWVkIHRvIGFs
bG93IGZvciBudWxsIGRvY3VtZW50KCkgaGVyZS4KKyAgICBpZiAoIWRvY3VtZW50KCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+Y2FuRGlzcGxheSh1cmwpKSB7CiAgICAgICAgIGlmICghZm9yUHJlbG9hZCkKICAgICAgICAg
ICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZG9jdW1lbnQoKS0+ZnJhbWUo
KSwgdXJsLnN0cmluZygpKTsKQEAgLTU2NCw3ICs1NzEsNyBAQAogICAgIH0KIAogICAgIC8vIER1
cmluZyB0aGUgaW5pdGlhbCBsb2FkLCBhdm9pZCBsb2FkaW5nIHRoZSBzYW1lIHJlc291cmNlIG11
bHRpcGxlIHRpbWVzIGZvciBhIHNpbmdsZSBkb2N1bWVudCwgZXZlbiBpZiB0aGUgY2FjaGUgcG9s
aWNpZXMgd291bGQgdGVsbCB1cyB0by4KLSAgICBpZiAoIWRvY3VtZW50KCktPmxvYWRFdmVudEZp
bmlzaGVkKCkgJiYgbV92YWxpZGF0ZWRVUkxzLmNvbnRhaW5zKGV4aXN0aW5nUmVzb3VyY2UtPnVy
bCgpKSkKKyAgICBpZiAoZG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+bG9hZEV2ZW50RmluaXNo
ZWQoKSAmJiBtX3ZhbGlkYXRlZFVSTHMuY29udGFpbnMoZXhpc3RpbmdSZXNvdXJjZS0+dXJsKCkp
KQogICAgICAgICByZXR1cm4gVXNlOwogCiAgICAgLy8gQ2FjaGVQb2xpY3lSZWxvYWQgYWx3YXlz
IHJlbG9hZHMKQEAgLTYxMCw3ICs2MTcsNyBAQAogICAgICAgICByZXR1cm47CiAKICAgICBTdHJp
bmcgbWVzc2FnZTsKLSAgICBpZiAobV9kb2N1bWVudC0+dXJsKCkuaXNOdWxsKCkpCisgICAgaWYg
KCFtX2RvY3VtZW50IHx8IG1fZG9jdW1lbnQtPnVybCgpLmlzTnVsbCgpKQogICAgICAgICBtZXNz
YWdlID0gIlVuc2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJMICIgKyB1cmwuc3RyaW5nKCkgKyAnLic7
CiAgICAgZWxzZQogICAgICAgICBtZXNzYWdlID0gIlVuc2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJM
ICIgKyB1cmwuc3RyaW5nKCkgKyAiIGZyb20gZnJhbWUgd2l0aCBVUkwgIiArIG1fZG9jdW1lbnQt
PnVybCgpLnN0cmluZygpICsgIi4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1h
dGNoLlxuIjsKQEAgLTY1OCw3ICs2NjUsOCBAQAogCiB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVy
Ojpsb2FkRG9uZSgpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0KG1fZG9jdW1lbnQp
OworICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdERvY3VtZW50TG9hZGVyKG1fZG9j
dW1lbnRMb2FkZXIpOworICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdERvY3VtZW50KG1fZG9j
dW1lbnQpOwogICAgIGlmIChmcmFtZSgpKQogICAgICAgICBmcmFtZSgpLT5sb2FkZXIoKS0+bG9h
ZERvbmUoKTsKICAgICBwZXJmb3JtUG9zdExvYWRBY3Rpb25zKCk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAkocmV2aXNp
b24gMTE3NTAwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE4ICs0OSwyNiBAQAogY2xhc3MgQ2FjaGVk
VGV4dFRyYWNrOwogY2xhc3MgQ2FjaGVkWFNMU3R5bGVTaGVldDsKIGNsYXNzIERvY3VtZW50Owor
Y2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNzIEltYWdlTG9hZGVyOwog
Y2xhc3MgS1VSTDsKIAotLy8gVGhlIENhY2hlZFJlc291cmNlTG9hZGVyIG1hbmFnZXMgdGhlIGxv
YWRpbmcgb2Ygc2NyaXB0cy9pbWFnZXMvc3R5bGVzaGVldHMgZm9yIGEgc2luZ2xlIGRvY3VtZW50
LgotY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgeworLy8gVGhlIENhY2hlZFJlc291cmNlTG9h
ZGVyIHByb3ZpZGVzIGEgcGVyLWNvbnRleHQgaW50ZXJmYWNlIHRvIHRoZSBNZW1vcnlDYWNoZQor
Ly8gYW5kIGVuZm9yY2VzIGEgYnVuY2ggb2Ygc2VjdXJpdHkgY2hlY2tzIGFuZCBydWxlcyBmb3Ig
cmVzb3VyY2UgcmV2YWxpZGF0aW9uLgorLy8gSXRzIGxpZmV0aW1lIGlzIHJvdWdobHkgcGVyLURv
Y3VtZW50TG9hZGVyLCBpbiB0aGF0IGl0IGlzIGdlbmVyYWxseSBjcmVhdGVkCisvLyBpbiB0aGUg
RG9jdW1lbnRMb2FkZXIgY29uc3RydWN0b3IgYW5kIGxvc2VzIGl0cyBhYmlsaXR5IHRvIGdlbmVy
YXRlIG5ldHdvcmsKKy8vIHJlcXVlc3RzIHdoZW4gdGhlIERvY3VtZW50TG9hZGVyIGlzIGRlc3Ry
b3llZC4gRG9jdW1lbnRzIGFsc28gaG9sZCBhIAorLy8gUmVmUHRyPENhY2hlZFJlc291cmNlTG9h
ZGVyPiBmb3IgdGhlaXIgbGlmZXRpbWUgKGFuZCB3aWxsIGNyZWF0ZSBvbmUgaWYgdGhleQorLy8g
YXJlIGluaXRpYWxpemVkIHdpdGhvdXQgYSBGcmFtZSksIHNvIGEgRG9jdW1lbnQgY2FuIGtlZXAg
YSBDYWNoZWRSZXNvdXJjZUxvYWRlcgorLy8gYWxpdmUgcGFzdCBkZXRhY2ggaWYgc2NyaXB0cyBz
dGlsbCByZWZlcmVuY2UgdGhlIERvY3VtZW50LgorY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXIg
OiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENhY2hlZFJlc291cmNlTG9hZGVyKTsgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBmcmllbmQgY2xhc3MgSW1hZ2VMb2FkZXI7CiBmcmllbmQgY2xhc3MgUmVzb3VyY2VDYWNo
ZVZhbGlkYXRpb25TdXBwcmVzc29yOwogCiBwdWJsaWM6Ci0gICAgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoRG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWNoZWRSZXNvdXJjZUxvYWRl
cj4gY3JlYXRlKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IENhY2hlZFJlc291cmNlTG9hZGVyKGRvY3VtZW50TG9hZGVyKSk7IH0KICAgICB+Q2Fj
aGVkUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZElt
YWdlPiByZXF1ZXN0SW1hZ2UoUmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0xMDAsOCArMTA4LDEwIEBA
CiAgICAgCiAgICAgQ2FjaGVQb2xpY3kgY2FjaGVQb2xpY3koKSBjb25zdDsKICAgICAKLSAgICBG
cmFtZSogZnJhbWUoKSBjb25zdDsgLy8gQ2FuIGJlIE5VTEwKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50OyB9CisgICAgRnJhbWUqIGZyYW1lKCkgY29u
c3Q7IC8vIENhbiBiZSBudWxsCisgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyByZXR1
cm4gbV9kb2N1bWVudDsgfSAvLyBDYW4gYmUgbnVsbAorICAgIHZvaWQgc2V0RG9jdW1lbnQoRG9j
dW1lbnQqIGRvY3VtZW50KSB7IG1fZG9jdW1lbnQgPSBkb2N1bWVudDsgfQorICAgIHZvaWQgY2xl
YXJEb2N1bWVudExvYWRlcigpIHsgbV9kb2N1bWVudExvYWRlciA9IDA7IH0KIAogICAgIHZvaWQg
cmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKSBjb25zdDsKICAgICB2b2lkIGxv
YWREb25lKCk7CkBAIC0xMTksNiArMTI5LDcgQEAKICAgICBib29sIGNhblJlcXVlc3QoQ2FjaGVk
UmVzb3VyY2U6OlR5cGUsIGNvbnN0IEtVUkwmLCBib29sIGZvclByZWxvYWQgPSBmYWxzZSk7CiAg
ICAgCiBwcml2YXRlOgorICAgIGV4cGxpY2l0IENhY2hlZFJlc291cmNlTG9hZGVyKERvY3VtZW50
TG9hZGVyKik7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJlcXVl
c3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3Qg
U3RyaW5nJiBjaGFyc2V0LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmLCBSZXNvdXJjZUxv
YWRQcmlvcml0eSA9IFJlc291cmNlTG9hZFByaW9yaXR5VW5yZXNvbHZlZCwgYm9vbCBpc1ByZWxv
YWQgPSBmYWxzZSk7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJl
dmFsaWRhdGVSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSosIFJlc291cmNlTG9hZFByaW9yaXR5LCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSZXNvdXJjZT4gbG9hZFJlc291cmNlKENhY2hlZFJlc291cmNlOjpUeXBlLCBSZXNvdXJj
ZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIFJlc291cmNlTG9hZFByaW9yaXR5LCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmKTsKQEAgLTEzNiw2ICsxNDcsNyBAQAogICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3ZhbGlkYXRlZFVSTHM7CiAgICAgbXV0YWJsZSBEb2N1bWVudFJlc291
cmNlTWFwIG1fZG9jdW1lbnRSZXNvdXJjZXM7CiAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7Cisg
ICAgRG9jdW1lbnRMb2FkZXIqIG1fZG9jdW1lbnRMb2FkZXI7CiAgICAgCiAgICAgaW50IG1fcmVx
dWVzdENvdW50OwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVy
LmgJKHJldmlzaW9uIDExNzUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw2ICs5MSw4IEBACiAgICAgICAgIFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCgpOwogICAgICAgICB2b2lkIHNldFJlcXVlc3QoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0Jik7CiAKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291
cmNlTG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlci5nZXQoKTsg
fQorCiAgICAgICAgIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fc3Vic3RpdHV0ZURhdGE7IH0KIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBp
cyB0aGUgc2FtZSBhcyByZXF1ZXN0VVJMKCkuIFdlIHNob3VsZCByZW1vdmUgb25lIG9mIHRoZW0u
CkBAIC0yNjUsNiArMjY3LDcgQEAKICAgICAgICAgdm9pZCBzdWJzdGl0dXRlUmVzb3VyY2VEZWxp
dmVyeVRpbWVyRmlyZWQoVGltZXI8RG9jdW1lbnRMb2FkZXI+Kik7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgIEZyYW1lKiBtX2ZyYW1lOworICAgICAgICBSZWZQdHI8Q2FjaGVkUmVzb3VyY2VM
b2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAKICAgICAgICAgUmVmUHRyPE1haW5SZXNv
dXJjZUxvYWRlcj4gbV9tYWluUmVzb3VyY2VMb2FkZXI7CiAgICAgICAgIFJlc291cmNlTG9hZGVy
U2V0IG1fc3VicmVzb3VyY2VMb2FkZXJzOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAxMTc1MDApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw3IEBACiBE
b2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXEs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSkKICAgICA6IG1fZGVmZXJNYWlu
UmVzb3VyY2VEYXRhTG9hZCh0cnVlKQogICAgICwgbV9mcmFtZSgwKQorICAgICwgbV9jYWNoZWRS
ZXNvdXJjZUxvYWRlcihDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKHRoaXMpKQogICAgICwg
bV93cml0ZXIobV9mcmFtZSkKICAgICAsIG1fb3JpZ2luYWxSZXF1ZXN0KHJlcSkKICAgICAsIG1f
c3Vic3RpdHV0ZURhdGEoc3Vic3RpdHV0ZURhdGEpCkBAIC0xMTQsNiArMTE1LDcgQEAKICAgICAg
ICAgbV9pY29uTG9hZERlY2lzaW9uQ2FsbGJhY2stPmludmFsaWRhdGUoKTsKICAgICBpZiAobV9p
Y29uRGF0YUNhbGxiYWNrKQogICAgICAgICBtX2ljb25EYXRhQ2FsbGJhY2stPmludmFsaWRhdGUo
KTsKKyAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5jbGVhckRvY3VtZW50TG9hZGVyKCk7CiB9
CiAKIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBEb2N1bWVudExvYWRlcjo6bWFpblJlc291cmNl
RGF0YSgpIGNvbnN0CkBAIC00NTQsNyArNDU2LDcgQEAKICAgICAgICAgRG9jdW1lbnQqIGRvYyA9
IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgICAgIGlmICgobV9tYWluUmVzb3VyY2VMb2FkZXIg
fHwgIW1fZnJhbWUtPmRvY3VtZW50KCktPmxvYWRFdmVudEZpbmlzaGVkKCkpICYmIGlzTG9hZGlu
ZygpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChkb2MtPmNhY2hlZFJl
c291cmNlTG9hZGVyKCktPnJlcXVlc3RDb3VudCgpKQorICAgICAgICBpZiAobV9jYWNoZWRSZXNv
dXJjZUxvYWRlci0+cmVxdWVzdENvdW50KCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIgPSBkb2MtPnBhcnNlcigpKQogICAgICAg
ICAgICAgaWYgKHBhcnNlci0+cHJvY2Vzc2luZ0RhdGEoKSkKQEAgLTU2MCw3ICs1NjIsNyBAQAog
ICAgIGlmICghaXNDb21taXR0ZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2UodXJsKTsKKyAgICBDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5jYWNoZWRSZXNvdXJjZSh1cmwpOwogICAg
IGlmICghcmVzb3VyY2UgfHwgIXJlc291cmNlLT5pc0xvYWRlZCgpKQogICAgICAgICByZXR1cm4g
YXJjaGl2ZVJlc291cmNlRm9yVVJMKHVybCk7CiAKQEAgLTU4MSw5ICs1ODMsNyBAQAogICAgIGlm
ICghaXNDb21taXR0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRG9jdW1lbnQqIGRvY3Vt
ZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKLQotICAgIGNvbnN0IENhY2hlZFJlc291cmNlTG9h
ZGVyOjpEb2N1bWVudFJlc291cmNlTWFwJiBhbGxSZXNvdXJjZXMgPSBkb2N1bWVudC0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS0+YWxsQ2FjaGVkUmVzb3VyY2VzKCk7CisgICAgY29uc3QgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50UmVzb3VyY2VNYXAmIGFsbFJlc291cmNlcyA9IG1fY2Fj
aGVkUmVzb3VyY2VMb2FkZXItPmFsbENhY2hlZFJlc291cmNlcygpOwogICAgIENhY2hlZFJlc291
cmNlTG9hZGVyOjpEb2N1bWVudFJlc291cmNlTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBhbGxS
ZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRS
ZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBhbGxSZXNvdXJjZXMuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFJlZlB0cjxBcmNoaXZlUmVzb3VyY2U+IHN1YnJlc291
cmNlID0gdGhpcy0+c3VicmVzb3VyY2UoS1VSTChQYXJzZWRVUkxTdHJpbmcsIGl0LT5zZWNvbmQt
PnVybCgpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHAJKHJldmlzaW9uIDExNzUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDYgQEAKIFN1YnJlc291
cmNlTG9hZGVyOjpTdWJyZXNvdXJjZUxvYWRlcihGcmFtZSogZnJhbWUsIENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogICAgIDog
UmVzb3VyY2VMb2FkZXIoZnJhbWUsIG9wdGlvbnMpCiAgICAgLCBtX3Jlc291cmNlKHJlc291cmNl
KQotICAgICwgbV9kb2N1bWVudChmcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAsIG1fbG9hZGluZ011
bHRpcGFydENvbnRlbnQoZmFsc2UpCiAgICAgLCBtX3N0YXRlKFVuaW5pdGlhbGl6ZWQpCiAgICAg
LCBtX3JlcXVlc3RDb3VudFRyYWNrZXIoYWRvcHRQdHIobmV3IFJlcXVlc3RDb3VudFRyYWNrZXIo
ZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCksIHJlc291cmNlKSkpCkBA
IC03NCw3ICs3Myw2IEBACiBTdWJyZXNvdXJjZUxvYWRlcjo6flN1YnJlc291cmNlTG9hZGVyKCkK
IHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBJbml0aWFsaXplZCk7Ci0gICAgQVNTRVJUKCFtX2Rv
Y3VtZW50KTsKICAgICBBU1NFUlQocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7CiAjaWZuZGVmIE5E
RUJVRwogICAgIHN1YnJlc291cmNlTG9hZGVyQ291bnRlci5kZWNyZW1lbnQoKTsKQEAgLTE0Nyw3
ICsxNDUsNyBAQAogICAgIAogICAgIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QobmV3
UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgaWYgKCFwcmV2aW91c1VSTC5pc051bGwo
KSAmJiAhbmV3UmVxdWVzdC5pc051bGwoKSAmJiBwcmV2aW91c1VSTCAhPSBuZXdSZXF1ZXN0LnVy
bCgpKSB7Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+
Y2FuUmVxdWVzdChtX3Jlc291cmNlLT50eXBlKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7CisgICAg
ICAgIGlmICghbV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FuUmVx
dWVzdChtX3Jlc291cmNlLT50eXBlKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7CiAgICAgICAgICAg
ICBjYW5jZWwoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzE0LDEzICsz
MTIsMTIgQEAKICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOwogICAgIGlmICht
X3N0YXRlICE9IFVuaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgbV9yZXF1ZXN0Q291bnRUcmFja2Vy
LmNsZWFyKCk7Ci0gICAgICAgIG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmxv
YWREb25lKCk7CisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmNhY2hlZFJlc291cmNlTG9hZGVy
KCktPmxvYWREb25lKCk7CiAgICAgICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX3Jlc291cmNlLT5zdG9wTG9hZGluZygpOwogICAg
ICAgICBtX2RvY3VtZW50TG9hZGVyLT5yZW1vdmVTdWJyZXNvdXJjZUxvYWRlcih0aGlzKTsKICAg
ICB9Ci0gICAgbV9kb2N1bWVudCA9IDA7CiAgICAgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNv
dXJjZXMoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmgJKHJldmlzaW9uIDExNzUwMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw2IEBACiAgICAgfTsKIAog
ICAgIENhY2hlZFJlc291cmNlKiBtX3Jlc291cmNlOwotICAgIFJlZlB0cjxEb2N1bWVudD4gbV9k
b2N1bWVudDsKICAgICBib29sIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQ7CiAgICAgU3VicmVz
b3VyY2VMb2FkZXJTdGF0ZSBtX3N0YXRlOwogICAgIE93blB0cjxSZXF1ZXN0Q291bnRUcmFja2Vy
PiBtX3JlcXVlc3RDb3VudFRyYWNrZXI7Cg==
</data>
<flag name="commit-queue"
          id="150880"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144149</attachid>
            <date>2012-05-25 14:38:27 -0700</date>
            <delta_ts>2012-05-30 12:51:44 -0700</delta_ts>
            <desc>Add missing symbols</desc>
            <filename>refcrl3.txt</filename>
            <type>text/plain</type>
            <size>20788</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDExODU2
MykKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA1
LTI1ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXBkYXRl
IHN5bWJvbHMgZm9yIERvY3VtZW50OjpjYWNoZWRSZXNvdXJjZUxvYWRlcigpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3ODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDUtMjUgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2Vr
QGdtYWlsLmNvbT4KIAogICAgICAgICBjb25maWd1cmUuYWMgaGFzIGR1cGxpY2F0ZWQgQUNfTVNH
X1JFU1VMVChbJGVuYWJsZV9zYW5kYm94XSkgYW5kIG5vdGhpbmcgZm9yIHNlYW1sZXNzIGlmcmFt
ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMTg1NjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ5OSw2ICsxNDk5LDcg
QEAKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYmIKIF9fWk5L
N1dlYkNvcmU4RG9jdW1lbnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNmRhc2hib2FyZFJlZ2lvbnNFdgorX19aTks3V2ViQ29y
ZThEb2N1bWVudDIwY2FjaGVkUmVzb3VyY2VMb2FkZXJFdgogX19aTks3V2ViQ29yZThEb2N1bWVu
dDMxZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk5L
N1dlYkNvcmU4RG9jdW1lbnQ0Ym9keUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NHBhZ2VFdgpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDExODU2MykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsNyArNTgyLDcgQEAKICAg
ICB2b2lkIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUm
IHBhZ2VTaXplLCBpbnQmIG1hcmdpblRvcCwgaW50JiBtYXJnaW5SaWdodCwgaW50JiBtYXJnaW5C
b3R0b20sIGludCYgbWFyZ2luTGVmdCk7CiAKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZv
ckFsbERvY3VtZW50cygpOyAvLyBGSVhNRTogVHJ5IHRvIHJlZHVjZSB0aGUgIyBvZiBjYWxscyB0
byB0aGlzIGZ1bmN0aW9uLgotICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJj
ZUxvYWRlcigpIHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuZ2V0KCk7IH0KKyAgICBD
YWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CkBAIC0x
MjUyLDcgKzEyNTIsNyBAQAogICAgIFZlY3RvcjxPd25QdHI8Rm9udERhdGE+ID4gbV9jdXN0b21G
b250czsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwotICAgIE93blB0cjxDYWNoZWRSZXNvdXJjZUxv
YWRlcj4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsKKyAgICBSZWZQdHI8Q2FjaGVkUmVzb3VyY2VM
b2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAgICAgUmVmUHRyPERvY3VtZW50UGFyc2Vy
PiBtX3BhcnNlcjsKICAgICBib29sIG1fd2VsbEZvcm1lZDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAxMTg1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTQsNyArNTE0LDEyIEBACiAKICAgICBtX21hcmtl
cnMgPSBhZG9wdFB0cihuZXcgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKTsKIAotICAgIG1fY2Fj
aGVkUmVzb3VyY2VMb2FkZXIgPSBhZG9wdFB0cihuZXcgQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhp
cykpOworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyID0g
bV9mcmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmNhY2hlZFJlc291cmNl
TG9hZGVyKCk7CisgICAgaWYgKCFtX2NhY2hlZFJlc291cmNlTG9hZGVyKQorICAgICAgICBtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSgwKTsKKyAg
ICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5zZXREb2N1bWVudCh0aGlzKTsKKwogI2lmIEVOQUJM
RShMSU5LX1BSRVJFTkRFUikKICAgICBtX3ByZXJlbmRlcmVyID0gUHJlcmVuZGVyZXI6OmNyZWF0
ZSh0aGlzKTsKICNlbmRpZgpAQCAtNjI4LDYgKzYzMywxMSBAQAogICAgICAgICBtX21lZGlhUXVl
cnlNYXRjaGVyLT5kb2N1bWVudERlc3Ryb3llZCgpOwogCiAgICAgY2xlYXJTdHlsZVJlc29sdmVy
KCk7IC8vIFdlIG5lZWQgdG8gZGVzdG9yeSBDU1NGb250U2VsZWN0b3IgYmVmb3JlIGRlc3Ryb3lp
bmcgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci4KKworICAgIC8vIEl0J3MgcG9zc2libGUgZm9yIG11
bHRpcGxlIERvY3VtZW50cyB0byBlbmQgdXAgcmVmZXJlbmNpbmcgdGhlIHNhbWUgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIgKGUuZy4sIFNWR0ltYWdlcworICAgIC8vIGxvYWQgdGhlIGluaXRpYWwgZW1w
dHkgZG9jdW1lbnQgYW5kIHRoZSBTVkdEb2N1bWVudCB3aXRoIHRoZSBzYW1lIERvY3VtZW50TG9h
ZGVyKS4KKyAgICBpZiAobV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKSA9PSB0aGlz
KQorICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5zZXREb2N1bWVudCgwKTsKICAgICBt
X2NhY2hlZFJlc291cmNlTG9hZGVyLmNsZWFyKCk7CiAKICAgICAvLyBXZSBtdXN0IGNhbGwgY2xl
YXJSYXJlRGF0YSgpIGhlcmUgc2luY2UgYSBEb2N1bWVudCBjbGFzcyBpbmhlcml0cyBUcmVlU2Nv
cGUKQEAgLTU5NTcsNiArNTk2NywxNiBAQAogI2VuZGlmCiB9CiAKK0NhY2hlZFJlc291cmNlTG9h
ZGVyKiBEb2N1bWVudDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBjb25zdAoreworICAgIC8vIE5v
cm1hbGx5LCB3ZSBzaG91bGRuJ3QgYmUgYWNjZXNzaW5nIENhY2hlZFJlc291cmNlTG9hZGVyIHVu
bGVzcyB0aGlzIERvY3VtZW50IGlzIGFjdHVhbGx5IHRoZSBjb250ZXh0CisgICAgLy8gdGhlIENh
Y2hlZFJlc291cmNlTG9hZGVyIGlzIHVzaW5nLiBIb3dldmVyLCB3ZSBuZWVkIHRvIGRvIHNvbWUg
Y2xlYW51cCBpbiB0aGUgZGVzdHJ1Y3RvciAoaGVuY2UgdGhlCisgICAgLy8gbV9kZWxldGlvbkhh
c0JlZ3VuIGNoZWNrKSwgYW5kIHdlIG1heSBubyBsb25nZXIgYmUgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6Om1fZG9jdW1lbnQuIFRoaXMgY2FuIG9ubHkKKyAgICAvLyBoYXBwZW4gaW4gY2FzZXMgd2hl
cmUgd2UgY3JlYXRlIGEgbmV3IERvY3VtZW50IHdpdGhvdXQgYSBuZXcgRG9jdW1lbnRMb2FkZXIg
KGUuZy4sIFNWR0ltYWdlcykuCisgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1biB8fCBtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpID09IHRoaXMpOworICAgIHJldHVybiBtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyLmdldCgpOworfQorCiBEb2N1bWVudExvYWRlciogRG9jdW1lbnQ6
OmxvYWRlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQpJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMTE4NTYzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNTggQEAKKzIwMTItMDUtMTggIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBNYWtlIENhY2hlZFJlc291cmNlTG9hZGVyIFJlZkNvdW50ZWQg
YW5kIGhhdmUgYm90aCBEb2N1bWVudAorICAgICAgICBhbmQgRG9jdW1lbnRMb2FkZXIgaG9sZCBS
ZWZQdHJzLiBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvcgorICAgICAgICBjYWNoaW5nIG1haW4g
cmVzb3VyY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODY3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcyBhdCB0aGlzIHRpbWUuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IE9ubHkgY3JlYXRlIG91ciBvd24gQ2FjaGVkUmVz
b3VyY2VMb2FkZXIKKyAgICAgICAgICAgIGlmIHdlIHdlcmUgZ2l2ZW4gYSBudWxsIGZyYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDogVGhyb3VnaG91dCwgdXNlIG91ciBtX2NhY2hlZFJl
c291cmNlTG9hZGVyIGluc3RlYWQKKyAgICAgICAgICAgIG9mIHRoZSBEb2N1bWVudCdzIHBvaW50
ZXIuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOiBD
cmVhdGUgYSBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmlzTG9hZGluZ0luQVBJU2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OnN1YnJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpnZXRT
dWJyZXNvdXJjZXMpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAg
ICAgKERvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOiBSZW1vdmUgbV9kb2N1bWVudCwgc2luY2UgaXQgb25seSBleGlzdGVkIHRvIGtlZXAgYWxp
dmUgYW5kIGFjY2VzcyB0aGUgQ2FjaGVkUmVzb3VyY2VMb2FkZXIuCisgICAgICAgICAgICBJdCBj
YW4gbm93IGJlIGFjY2Vzc2VkIGZyb20gbV9kb2N1bWVudExvYWRlci4KKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpTdWJyZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6flN1YnJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAqIGxv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoU3VicmVzb3VyY2VMb2FkZXIpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6IEhhbmRsZSB0
aGUgcG9zc2liaWxpdHkgb2YgYSBudWxsIERvY3VtZW50IGluIHNldmVyYWwgcGxhY2VzLgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjp+Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlk
YXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnBy
aW50QWNjZXNzRGVuaWVkTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6bG9hZERvbmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKTogQWRkIGNyZWF0ZSgpLCBtYWtlIGNvbnN0cnVjdG9yIHBy
aXZhdGUuCisgICAgICAgIChDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnNldERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpjbGVhckRvY3VtZW50TG9hZGVyKToKKwogMjAxMi0wNS0yNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBhYnNv
bHV0ZSBjbGlwIHJlY3RzIG9uIFJlbmRlckxheWVyIGZvciBjb21wb3NpdGluZyBvdmVybGFwIHRl
c3RpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTE4NTYzKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTExMCw4ICsxMTEsOSBAQAogICAg
IHJldHVybiBvcHRpb25zOwogfQogCi1DYWNoZWRSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkK
K0NhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIpCisgICAgOiBtX2RvY3VtZW50KDApCisgICAgLCBtX2RvY3VtZW50
TG9hZGVyKGRvY3VtZW50TG9hZGVyKQogICAgICwgbV9yZXF1ZXN0Q291bnQoMCkKICAgICAsIG1f
Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyKHRoaXMsICZDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQpCiAgICAg
LCBtX2F1dG9Mb2FkSW1hZ2VzKHRydWUpCkBAIC0xMjEsNiArMTIzLDcgQEAKIAogQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6On5DYWNoZWRSZXNvdXJjZUxvYWRlcigpCiB7CisgICAgbV9kb2N1bWVudExv
YWRlciA9IDA7CiAgICAgbV9kb2N1bWVudCA9IDA7CiAKICAgICBjbGVhclByZWxvYWRzKCk7CkBA
IC0xNDYsNyArMTQ5LDcgQEAKIAogRnJhbWUqIENhY2hlZFJlc291cmNlTG9hZGVyOjpmcmFtZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnQgPyBtX2RvY3VtZW50LT5mcmFtZSgpIDog
MDsKKyAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlciA/IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1l
KCkgOiAwOwogfQogCiBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC0y
OTAsNiArMjkzLDEwIEBACiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3Qo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGZvclByZWxv
YWQpCiB7CisgICAgLy8gRklYTUU6IFdoZW4gd2UgY2FuIGxvYWQgbWFpbiByZXNvdXJjZXMgdGhy
b3VnaCBDYWNoZWRSZXNvdXJjZUxvYWRlciwgd2UnbGwgbmVlZCB0byBhbGxvdyBmb3IgbnVsbCBk
b2N1bWVudCgpIGhlcmUuCisgICAgaWYgKCFkb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICBpZiAoIWRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXko
dXJsKSkgewogICAgICAgICBpZiAoIWZvclByZWxvYWQpCiAgICAgICAgICAgICBGcmFtZUxvYWRl
cjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGRvY3VtZW50KCktPmZyYW1lKCksIHVybC5zdHJpbmco
KSk7CkBAIC01NjQsNyArNTcxLDcgQEAKICAgICB9CiAKICAgICAvLyBEdXJpbmcgdGhlIGluaXRp
YWwgbG9hZCwgYXZvaWQgbG9hZGluZyB0aGUgc2FtZSByZXNvdXJjZSBtdWx0aXBsZSB0aW1lcyBm
b3IgYSBzaW5nbGUgZG9jdW1lbnQsIGV2ZW4gaWYgdGhlIGNhY2hlIHBvbGljaWVzIHdvdWxkIHRl
bGwgdXMgdG8uCi0gICAgaWYgKCFkb2N1bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpICYmIG1f
dmFsaWRhdGVkVVJMcy5jb250YWlucyhleGlzdGluZ1Jlc291cmNlLT51cmwoKSkpCisgICAgaWYg
KGRvY3VtZW50KCkgJiYgIWRvY3VtZW50KCktPmxvYWRFdmVudEZpbmlzaGVkKCkgJiYgbV92YWxp
ZGF0ZWRVUkxzLmNvbnRhaW5zKGV4aXN0aW5nUmVzb3VyY2UtPnVybCgpKSkKICAgICAgICAgcmV0
dXJuIFVzZTsKIAogICAgIC8vIENhY2hlUG9saWN5UmVsb2FkIGFsd2F5cyByZWxvYWRzCkBAIC02
MTAsNyArNjE3LDcgQEAKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0g
ICAgaWYgKG1fZG9jdW1lbnQtPnVybCgpLmlzTnVsbCgpKQorICAgIGlmICghbV9kb2N1bWVudCB8
fCBtX2RvY3VtZW50LT51cmwoKS5pc051bGwoKSkKICAgICAgICAgbWVzc2FnZSA9ICJVbnNhZmUg
YXR0ZW1wdCB0byBsb2FkIFVSTCAiICsgdXJsLnN0cmluZygpICsgJy4nOwogICAgIGVsc2UKICAg
ICAgICAgbWVzc2FnZSA9ICJVbnNhZmUgYXR0ZW1wdCB0byBsb2FkIFVSTCAiICsgdXJsLnN0cmlu
ZygpICsgIiBmcm9tIGZyYW1lIHdpdGggVVJMICIgKyBtX2RvY3VtZW50LT51cmwoKS5zdHJpbmco
KSArICIuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiI7CkBAIC02
NTgsNyArNjY1LDggQEAKIAogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZERvbmUoKQog
ewotICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdChtX2RvY3VtZW50KTsKKyAgICBSZWZQdHI8
RG9jdW1lbnRMb2FkZXI+IHByb3RlY3REb2N1bWVudExvYWRlcihtX2RvY3VtZW50TG9hZGVyKTsK
KyAgICBSZWZQdHI8RG9jdW1lbnQ+IHByb3RlY3REb2N1bWVudChtX2RvY3VtZW50KTsKICAgICBp
ZiAoZnJhbWUoKSkKICAgICAgICAgZnJhbWUoKS0+bG9hZGVyKCktPmxvYWREb25lKCk7CiAgICAg
cGVyZm9ybVBvc3RMb2FkQWN0aW9ucygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDExODU2MykKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSwxOCArNDksMjYgQEAKIGNsYXNzIENhY2hlZFRleHRUcmFjazsKIGNs
YXNzIENhY2hlZFhTTFN0eWxlU2hlZXQ7CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIERvY3VtZW50
TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbWFnZUxvYWRlcjsKIGNsYXNzIEtVUkw7CiAK
LS8vIFRoZSBDYWNoZWRSZXNvdXJjZUxvYWRlciBtYW5hZ2VzIHRoZSBsb2FkaW5nIG9mIHNjcmlw
dHMvaW1hZ2VzL3N0eWxlc2hlZXRzIGZvciBhIHNpbmdsZSBkb2N1bWVudC4KLWNsYXNzIENhY2hl
ZFJlc291cmNlTG9hZGVyIHsKKy8vIFRoZSBDYWNoZWRSZXNvdXJjZUxvYWRlciBwcm92aWRlcyBh
IHBlci1jb250ZXh0IGludGVyZmFjZSB0byB0aGUgTWVtb3J5Q2FjaGUKKy8vIGFuZCBlbmZvcmNl
cyBhIGJ1bmNoIG9mIHNlY3VyaXR5IGNoZWNrcyBhbmQgcnVsZXMgZm9yIHJlc291cmNlIHJldmFs
aWRhdGlvbi4KKy8vIEl0cyBsaWZldGltZSBpcyByb3VnaGx5IHBlci1Eb2N1bWVudExvYWRlciwg
aW4gdGhhdCBpdCBpcyBnZW5lcmFsbHkgY3JlYXRlZAorLy8gaW4gdGhlIERvY3VtZW50TG9hZGVy
IGNvbnN0cnVjdG9yIGFuZCBsb3NlcyBpdHMgYWJpbGl0eSB0byBnZW5lcmF0ZSBuZXR3b3JrCisv
LyByZXF1ZXN0cyB3aGVuIHRoZSBEb2N1bWVudExvYWRlciBpcyBkZXN0cm95ZWQuIERvY3VtZW50
cyBhbHNvIGhvbGQgYSAKKy8vIFJlZlB0cjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gZm9yIHRoZWly
IGxpZmV0aW1lIChhbmQgd2lsbCBjcmVhdGUgb25lIGlmIHRoZXkKKy8vIGFyZSBpbml0aWFsaXpl
ZCB3aXRob3V0IGEgRnJhbWUpLCBzbyBhIERvY3VtZW50IGNhbiBrZWVwIGEgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIKKy8vIGFsaXZlIHBhc3QgZGV0YWNoIGlmIHNjcmlwdHMgc3RpbGwgcmVmZXJlbmNl
IHRoZSBEb2N1bWVudC4KK2NsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
YWNoZWRSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogZnJpZW5kIGNs
YXNzIEltYWdlTG9hZGVyOwogZnJpZW5kIGNsYXNzIFJlc291cmNlQ2FjaGVWYWxpZGF0aW9uU3Vw
cHJlc3NvcjsKIAogcHVibGljOgotICAgIENhY2hlZFJlc291cmNlTG9hZGVyKERvY3VtZW50Kik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShEb2N1
bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYWNoZWRS
ZXNvdXJjZUxvYWRlcihkb2N1bWVudExvYWRlcikpOyB9CiAgICAgfkNhY2hlZFJlc291cmNlTG9h
ZGVyKCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gcmVxdWVzdElt
YWdlKFJlc291cmNlUmVxdWVzdCYpOwpAQCAtMTAwLDggKzEwOCwxMCBAQAogICAgIAogICAgIENh
Y2hlUG9saWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7CiAgICAgCi0gICAgRnJhbWUqIGZyYW1lKCkg
Y29uc3Q7IC8vIENhbiBiZSBOVUxMCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9kb2N1bWVudDsgfQorICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OyAvLyBDYW4gYmUg
bnVsbAorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQ7
IH0gLy8gQ2FuIGJlIG51bGwKKyAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkgeyBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7IH0KKyAgICB2b2lkIGNsZWFyRG9jdW1lbnRMb2Fk
ZXIoKSB7IG1fZG9jdW1lbnRMb2FkZXIgPSAwOyB9CiAKICAgICB2b2lkIHJlbW92ZUNhY2hlZFJl
c291cmNlKENhY2hlZFJlc291cmNlKikgY29uc3Q7CiAgICAgdm9pZCBsb2FkRG9uZSgpOwpAQCAt
MTE5LDYgKzEyOSw3IEBACiAgICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBl
LCBjb25zdCBLVVJMJiwgYm9vbCBmb3JQcmVsb2FkID0gZmFsc2UpOwogICAgIAogcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciopOwogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBS
ZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOwog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRlUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJik7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
IGxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJik7CkBAIC0xMzYsNiArMTQ3LDcgQEAKICAgICBIYXNoU2V0PFN0cmluZz4g
bV92YWxpZGF0ZWRVUkxzOwogICAgIG11dGFibGUgRG9jdW1lbnRSZXNvdXJjZU1hcCBtX2RvY3Vt
ZW50UmVzb3VyY2VzOwogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIERvY3VtZW50TG9h
ZGVyKiBtX2RvY3VtZW50TG9hZGVyOwogICAgIAogICAgIGludCBtX3JlcXVlc3RDb3VudDsKICAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAx
MTg1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTEsNiArOTEsOCBAQAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QoKTsKICAgICAgICAgdm9pZCBzZXRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
CisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuZ2V0KCk7IH0KKwogICAgICAgICBj
b25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3N1
YnN0aXR1dGVEYXRhOyB9CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgdGhlIHNhbWUgYXMg
cmVxdWVzdFVSTCgpLiBXZSBzaG91bGQgcmVtb3ZlIG9uZSBvZiB0aGVtLgpAQCAtMjY1LDYgKzI2
Nyw3IEBACiAgICAgICAgIHZvaWQgc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVk
KFRpbWVyPERvY3VtZW50TG9hZGVyPiopOwogICAgICAgICAgICAgICAgIAogICAgICAgICBGcmFt
ZSogbV9mcmFtZTsKKyAgICAgICAgUmVmUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPiBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyOwogCiAgICAgICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IG1f
bWFpblJlc291cmNlTG9hZGVyOwogICAgICAgICBSZXNvdXJjZUxvYWRlclNldCBtX3N1YnJlc291
cmNlTG9hZGVyczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAkocmV2aXNpb24gMTE4NTYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQAogRG9jdW1lbnRMb2FkZXI6
OkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiAgICAgOiBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxv
YWQodHJ1ZSkKICAgICAsIG1fZnJhbWUoMCkKKyAgICAsIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIo
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fd3JpdGVyKG1fZnJh
bWUpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVzdChyZXEpCiAgICAgLCBtX3N1YnN0aXR1dGVEYXRh
KHN1YnN0aXR1dGVEYXRhKQpAQCAtMTE0LDYgKzExNSw3IEBACiAgICAgICAgIG1faWNvbkxvYWRE
ZWNpc2lvbkNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgaWYgKG1faWNvbkRhdGFDYWxsYmFj
aykKICAgICAgICAgbV9pY29uRGF0YUNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CisgICAgbV9jYWNo
ZWRSZXNvdXJjZUxvYWRlci0+Y2xlYXJEb2N1bWVudExvYWRlcigpOwogfQogCiBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdApA
QCAtNDU0LDcgKzQ1Niw3IEBACiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpOwogICAgICAgICBpZiAoKG1fbWFpblJlc291cmNlTG9hZGVyIHx8ICFtX2ZyYW1lLT5k
b2N1bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpKSAmJiBpc0xvYWRpbmcoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoZG9jLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LT5yZXF1ZXN0Q291bnQoKSkKKyAgICAgICAgaWYgKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJl
cXVlc3RDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChEb2N1
bWVudFBhcnNlciogcGFyc2VyID0gZG9jLT5wYXJzZXIoKSkKICAgICAgICAgICAgIGlmIChwYXJz
ZXItPnByb2Nlc3NpbmdEYXRhKCkpCkBAIC01NjAsNyArNTYyLDcgQEAKICAgICBpZiAoIWlzQ29t
bWl0dGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNh
Y2hlZFJlc291cmNlKHVybCk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbV9jYWNo
ZWRSZXNvdXJjZUxvYWRlci0+Y2FjaGVkUmVzb3VyY2UodXJsKTsKICAgICBpZiAoIXJlc291cmNl
IHx8ICFyZXNvdXJjZS0+aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmVSZXNvdXJj
ZUZvclVSTCh1cmwpOwogCkBAIC01ODEsOSArNTgzLDcgQEAKICAgICBpZiAoIWlzQ29tbWl0dGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUt
PmRvY3VtZW50KCk7Ci0KLSAgICBjb25zdCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRS
ZXNvdXJjZU1hcCYgYWxsUmVzb3VyY2VzID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVy
KCktPmFsbENhY2hlZFJlc291cmNlcygpOworICAgIGNvbnN0IENhY2hlZFJlc291cmNlTG9hZGVy
OjpEb2N1bWVudFJlc291cmNlTWFwJiBhbGxSZXNvdXJjZXMgPSBtX2NhY2hlZFJlc291cmNlTG9h
ZGVyLT5hbGxDYWNoZWRSZXNvdXJjZXMoKTsKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9j
dW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYWxsUmVzb3VyY2VzLmVuZCgp
OwogICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50UmVzb3VyY2VNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBzdWJyZXNvdXJjZSA9IHRoaXMtPnN1
YnJlc291cmNlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+c2Vjb25kLT51cmwoKSkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lv
biAxMTg1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw2IEBACiBTdWJyZXNvdXJjZUxvYWRlcjo6U3Vi
cmVzb3VyY2VMb2FkZXIoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IFJlc291cmNlTG9hZGVy
KGZyYW1lLCBvcHRpb25zKQogICAgICwgbV9yZXNvdXJjZShyZXNvdXJjZSkKLSAgICAsIG1fZG9j
dW1lbnQoZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgLCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50
KGZhbHNlKQogICAgICwgbV9zdGF0ZShVbmluaXRpYWxpemVkKQogICAgICwgbV9yZXF1ZXN0Q291
bnRUcmFja2VyKGFkb3B0UHRyKG5ldyBSZXF1ZXN0Q291bnRUcmFja2VyKGZyYW1lLT5kb2N1bWVu
dCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLCByZXNvdXJjZSkpKQpAQCAtNzQsNyArNzMsNiBA
QAogU3VicmVzb3VyY2VMb2FkZXI6On5TdWJyZXNvdXJjZUxvYWRlcigpCiB7CiAgICAgQVNTRVJU
KG1fc3RhdGUgIT0gSW5pdGlhbGl6ZWQpOwotICAgIEFTU0VSVCghbV9kb2N1bWVudCk7CiAgICAg
QVNTRVJUKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOwogI2lmbmRlZiBOREVCVUcKICAgICBzdWJy
ZXNvdXJjZUxvYWRlckNvdW50ZXIuZGVjcmVtZW50KCk7CkBAIC0xNDcsNyArMTQ1LDcgQEAKICAg
ICAKICAgICBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpOwogICAgIGlmICghcHJldmlvdXNVUkwuaXNOdWxsKCkgJiYgIW5ld1JlcXVl
c3QuaXNOdWxsKCkgJiYgcHJldmlvdXNVUkwgIT0gbmV3UmVxdWVzdC51cmwoKSkgewotICAgICAg
ICBpZiAoIW1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNhblJlcXVlc3QobV9y
ZXNvdXJjZS0+dHlwZSgpLCBuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICBpZiAoIW1fZG9j
dW1lbnRMb2FkZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNhblJlcXVlc3QobV9yZXNvdXJj
ZS0+dHlwZSgpLCBuZXdSZXF1ZXN0LnVybCgpKSkgewogICAgICAgICAgICAgY2FuY2VsKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMxNCwxMyArMzEyLDEyIEBACiAgICAg
QVNTRVJUKCFyZWFjaGVkVGVybWluYWxTdGF0ZSgpKTsKICAgICBpZiAobV9zdGF0ZSAhPSBVbmlu
aXRpYWxpemVkKSB7CiAgICAgICAgIG1fcmVxdWVzdENvdW50VHJhY2tlci5jbGVhcigpOwotICAg
ICAgICBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5sb2FkRG9uZSgpOworICAg
ICAgICBtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5sb2FkRG9uZSgp
OwogICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgbV9yZXNvdXJjZS0+c3RvcExvYWRpbmcoKTsKICAgICAgICAgbV9kb2N1bWVu
dExvYWRlci0+cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7CiAgICAgfQotICAgIG1fZG9j
dW1lbnQgPSAwOwogICAgIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCShyZXZpc2lv
biAxMTg1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNiBAQAogICAgIH07CiAKICAgICBDYWNoZWRSZXNv
dXJjZSogbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAg
Ym9vbCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50OwogICAgIFN1YnJlc291cmNlTG9hZGVyU3Rh
dGUgbV9zdGF0ZTsKICAgICBPd25QdHI8UmVxdWVzdENvdW50VHJhY2tlcj4gbV9yZXF1ZXN0Q291
bnRUcmFja2VyOwpJbmRleDogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCShyZXZpc2lvbiAxMTg1NjMp
CisrKyBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDAsNiArMTAwLDcgQEAKIF9aTks3V2ViQ29yZTVGcmFtZThzZXR0aW5nc0V2OwogX1pOSzdXZWJD
b3JlNkpTTm9kZTIxcHVzaEV2ZW50SGFuZGxlclNjb3BlRVBOM0pTQzlFeGVjU3RhdGVFUE5TMV8x
NFNjb3BlQ2hhaW5Ob2RlRTsKIF9aTks3V2ViQ29yZTdFbGVtZW50NnNoYWRvd0V2OworX1pOSzdX
ZWJDb3JlOERvY3VtZW50MjBjYWNoZWRSZXNvdXJjZUxvYWRlckV2CiBfWk5LN1dlYkNvcmU4RG9j
dW1lbnQ0cGFnZUV2OwogX1pOSzdXZWJDb3JlOERvY3VtZW50OHNldHRpbmdzRXY7CiBfWk5LN1dl
YkNvcmU4RG9jdW1lbnQ0dmlld0V2OwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTE4NTYzKQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIg
QEAKKzIwMTItMDUtMjUgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBVcGRhdGUgc3ltYm9scyBmb3IgRG9jdW1lbnQ6OmNhY2hlZFJlc291cmNlTG9hZGVyKCku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04Njc4Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2luL1dl
YktpdDIuZGVmOgorCiAyMDEyLTA1LTI1ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODc0
MTgKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYJKHJldmlzaW9uIDExODU2MykKKysrIFNvdXJj
ZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgkod29ya2luZyBjb3B5KQpAQCAtMTYxLDYgKzE2MSw3
IEBACiAgICAgICAgID9hZGRAQXRvbWljU3RyaW5nQFdURkBAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0
cmluZ0ltcGxAV1RGQEBAMkBQQkVAWgogICAgICAgICA/YWRkU2xvd0Nhc2VAQXRvbWljU3RyaW5n
QFdURkBAQ0E/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMkBQQVZTdHJpbmdJbXBs
QDJAQFoKICAgICAgICAgP2NhY2hlRE9NU3RydWN0dXJlQFdlYkNvcmVAQFlBUEFWU3RydWN0dXJl
QEpTQ0BAUEFWSlNET01HbG9iYWxPYmplY3RAMUBQQVYyM0BQQlVDbGFzc0luZm9AM0BAWgorICAg
ICAgICA/Y2FjaGVkUmVzb3VyY2VMb2FkZXJARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWQ2FjaGVk
UmVzb3VyY2VMb2FkZXJAMkBYWgogICAgICAgICA/Y3JlYXRlQEhUTUxDb250ZW50RWxlbWVudEBX
ZWJDb3JlQEBTQT9BVj8kUGFzc1JlZlB0ckBWSFRNTENvbnRlbnRFbGVtZW50QFdlYkNvcmVAQEBX
VEZAQFBBVkRvY3VtZW50QDJAQFoKICAgICAgICAgP2NyZWF0ZUBSYW5nZUBXZWJDb3JlQEBTQT9B
Vj8kUGFzc1JlZlB0ckBWUmFuZ2VAV2ViQ29yZUBAQFdURkBAVj8kUGFzc1JlZlB0ckBWRG9jdW1l
bnRAV2ViQ29yZUBAQDRAVj8kUGFzc1JlZlB0ckBWTm9kZUBXZWJDb3JlQEBANEBIMUhAWgogICAg
ICAgICA/Y3JlYXRlQFNoYWRvd1Jvb3RAV2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVlNoYWRv
d1Jvb3RAV2ViQ29yZUBAQFdURkBAUEFWRWxlbWVudEAyQEFBSEBaCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144899</attachid>
            <date>2012-05-30 12:51:44 -0700</date>
            <delta_ts>2012-10-05 16:25:30 -0700</delta_ts>
            <desc>Fix gtk</desc>
            <filename>refcachedresource5.txt</filename>
            <type>text/plain</type>
            <size>20789</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDExODU2
MykKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA1
LTI1ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVXBkYXRl
IHN5bWJvbHMgZm9yIERvY3VtZW50OjpjYWNoZWRSZXNvdXJjZUxvYWRlcigpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3ODcKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDUtMjUgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2Vr
QGdtYWlsLmNvbT4KIAogICAgICAgICBjb25maWd1cmUuYWMgaGFzIGR1cGxpY2F0ZWQgQUNfTVNH
X1JFU1VMVChbJGVuYWJsZV9zYW5kYm94XSkgYW5kIG5vdGhpbmcgZm9yIHNlYW1sZXNzIGlmcmFt
ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMTg1NjMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQ5OSw2ICsxNDk5LDcg
QEAKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYmIKIF9fWk5L
N1dlYkNvcmU4RG9jdW1lbnQxNGdldEVsZW1lbnRCeUlkRVJLTjNXVEYxMkF0b21pY1N0cmluZ0UK
IF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxNmRhc2hib2FyZFJlZ2lvbnNFdgorX19aTks3V2ViQ29y
ZThEb2N1bWVudDIwY2FjaGVkUmVzb3VyY2VMb2FkZXJFdgogX19aTks3V2ViQ29yZThEb2N1bWVu
dDMxZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZ0VSS04zV1RGNlN0cmluZ0UKIF9fWk5L
N1dlYkNvcmU4RG9jdW1lbnQ0Ym9keUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50NHBhZ2VFdgpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDExODU2MykKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01ODIsNyArNTgyLDcgQEAKICAg
ICB2b2lkIHBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKGludCBwYWdlSW5kZXgsIEludFNpemUm
IHBhZ2VTaXplLCBpbnQmIG1hcmdpblRvcCwgaW50JiBtYXJnaW5SaWdodCwgaW50JiBtYXJnaW5C
b3R0b20sIGludCYgbWFyZ2luTGVmdCk7CiAKICAgICBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZv
ckFsbERvY3VtZW50cygpOyAvLyBGSVhNRTogVHJ5IHRvIHJlZHVjZSB0aGUgIyBvZiBjYWxscyB0
byB0aGlzIGZ1bmN0aW9uLgotICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJj
ZUxvYWRlcigpIHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuZ2V0KCk7IH0KKyAgICBD
YWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBjb25zdDsKIAogICAg
IHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKCk7CkBAIC0x
MjUyLDcgKzEyNTIsNyBAQAogICAgIFZlY3RvcjxPd25QdHI8Rm9udERhdGE+ID4gbV9jdXN0b21G
b250czsKIAogICAgIEZyYW1lKiBtX2ZyYW1lOwotICAgIE93blB0cjxDYWNoZWRSZXNvdXJjZUxv
YWRlcj4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlcjsKKyAgICBSZWZQdHI8Q2FjaGVkUmVzb3VyY2VM
b2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAgICAgUmVmUHRyPERvY3VtZW50UGFyc2Vy
PiBtX3BhcnNlcjsKICAgICBib29sIG1fd2VsbEZvcm1lZDsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCShyZXZpc2lvbiAxMTg1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTQsNyArNTE0LDEyIEBACiAKICAgICBtX21hcmtl
cnMgPSBhZG9wdFB0cihuZXcgRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyKTsKIAotICAgIG1fY2Fj
aGVkUmVzb3VyY2VMb2FkZXIgPSBhZG9wdFB0cihuZXcgQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhp
cykpOworICAgIGlmIChtX2ZyYW1lKQorICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyID0g
bV9mcmFtZS0+bG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCktPmNhY2hlZFJlc291cmNl
TG9hZGVyKCk7CisgICAgaWYgKCFtX2NhY2hlZFJlc291cmNlTG9hZGVyKQorICAgICAgICBtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyID0gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSgwKTsKKyAg
ICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5zZXREb2N1bWVudCh0aGlzKTsKKwogI2lmIEVOQUJM
RShMSU5LX1BSRVJFTkRFUikKICAgICBtX3ByZXJlbmRlcmVyID0gUHJlcmVuZGVyZXI6OmNyZWF0
ZSh0aGlzKTsKICNlbmRpZgpAQCAtNjI4LDYgKzYzMywxMSBAQAogICAgICAgICBtX21lZGlhUXVl
cnlNYXRjaGVyLT5kb2N1bWVudERlc3Ryb3llZCgpOwogCiAgICAgY2xlYXJTdHlsZVJlc29sdmVy
KCk7IC8vIFdlIG5lZWQgdG8gZGVzdG9yeSBDU1NGb250U2VsZWN0b3IgYmVmb3JlIGRlc3Ryb3lp
bmcgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci4KKworICAgIC8vIEl0J3MgcG9zc2libGUgZm9yIG11
bHRpcGxlIERvY3VtZW50cyB0byBlbmQgdXAgcmVmZXJlbmNpbmcgdGhlIHNhbWUgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIgKGUuZy4sIFNWR0ltYWdlcworICAgIC8vIGxvYWQgdGhlIGluaXRpYWwgZW1w
dHkgZG9jdW1lbnQgYW5kIHRoZSBTVkdEb2N1bWVudCB3aXRoIHRoZSBzYW1lIERvY3VtZW50TG9h
ZGVyKS4KKyAgICBpZiAobV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+ZG9jdW1lbnQoKSA9PSB0aGlz
KQorICAgICAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5zZXREb2N1bWVudCgwKTsKICAgICBt
X2NhY2hlZFJlc291cmNlTG9hZGVyLmNsZWFyKCk7CiAKICAgICAvLyBXZSBtdXN0IGNhbGwgY2xl
YXJSYXJlRGF0YSgpIGhlcmUgc2luY2UgYSBEb2N1bWVudCBjbGFzcyBpbmhlcml0cyBUcmVlU2Nv
cGUKQEAgLTU5NTcsNiArNTk2NywxNiBAQAogI2VuZGlmCiB9CiAKK0NhY2hlZFJlc291cmNlTG9h
ZGVyKiBEb2N1bWVudDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBjb25zdAoreworICAgIC8vIE5v
cm1hbGx5LCB3ZSBzaG91bGRuJ3QgYmUgYWNjZXNzaW5nIENhY2hlZFJlc291cmNlTG9hZGVyIHVu
bGVzcyB0aGlzIERvY3VtZW50IGlzIGFjdHVhbGx5IHRoZSBjb250ZXh0CisgICAgLy8gdGhlIENh
Y2hlZFJlc291cmNlTG9hZGVyIGlzIHVzaW5nLiBIb3dldmVyLCB3ZSBuZWVkIHRvIGRvIHNvbWUg
Y2xlYW51cCBpbiB0aGUgZGVzdHJ1Y3RvciAoaGVuY2UgdGhlCisgICAgLy8gbV9kZWxldGlvbkhh
c0JlZ3VuIGNoZWNrKSwgYW5kIHdlIG1heSBubyBsb25nZXIgYmUgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6Om1fZG9jdW1lbnQuIFRoaXMgY2FuIG9ubHkKKyAgICAvLyBoYXBwZW4gaW4gY2FzZXMgd2hl
cmUgd2UgY3JlYXRlIGEgbmV3IERvY3VtZW50IHdpdGhvdXQgYSBuZXcgRG9jdW1lbnRMb2FkZXIg
KGUuZy4sIFNWR0ltYWdlcykuCisgICAgQVNTRVJUKG1fZGVsZXRpb25IYXNCZWd1biB8fCBtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyLT5kb2N1bWVudCgpID09IHRoaXMpOworICAgIHJldHVybiBtX2Nh
Y2hlZFJlc291cmNlTG9hZGVyLmdldCgpOworfQorCiBEb2N1bWVudExvYWRlciogRG9jdW1lbnQ6
OmxvYWRlcigpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQpJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMTE4NTYzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsNTggQEAKKzIwMTItMDUtMTggIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBNYWtlIENhY2hlZFJlc291cmNlTG9hZGVyIFJlZkNvdW50ZWQg
YW5kIGhhdmUgYm90aCBEb2N1bWVudAorICAgICAgICBhbmQgRG9jdW1lbnRMb2FkZXIgaG9sZCBS
ZWZQdHJzLiBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvcgorICAgICAgICBjYWNoaW5nIG1haW4g
cmVzb3VyY2VzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9ODY3ODcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBObyBuZXcgdGVzdHMsIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcyBhdCB0aGlzIHRpbWUuCisK
KyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6IE9ubHkgY3JlYXRlIG91ciBvd24gQ2FjaGVkUmVz
b3VyY2VMb2FkZXIKKyAgICAgICAgICAgIGlmIHdlIHdlcmUgZ2l2ZW4gYSBudWxsIGZyYW1lLgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6Y2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDogVGhyb3VnaG91dCwgdXNlIG91ciBtX2NhY2hlZFJl
c291cmNlTG9hZGVyIGluc3RlYWQKKyAgICAgICAgICAgIG9mIHRoZSBEb2N1bWVudCdzIHBvaW50
ZXIuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOiBD
cmVhdGUgYSBDYWNoZWRSZXNvdXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyOjp+RG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OmlzTG9hZGluZ0luQVBJU2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXI6OnN1YnJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpnZXRT
dWJyZXNvdXJjZXMpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAg
ICAgKERvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwOiBSZW1vdmUgbV9kb2N1bWVudCwgc2luY2UgaXQgb25seSBleGlzdGVkIHRvIGtlZXAgYWxp
dmUgYW5kIGFjY2VzcyB0aGUgQ2FjaGVkUmVzb3VyY2VMb2FkZXIuCisgICAgICAgICAgICBJdCBj
YW4gbm93IGJlIGFjY2Vzc2VkIGZyb20gbV9kb2N1bWVudExvYWRlci4KKyAgICAgICAgKFdlYkNv
cmU6OlN1YnJlc291cmNlTG9hZGVyOjpTdWJyZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJD
b3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6flN1YnJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAqIGxv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoU3VicmVzb3VyY2VMb2FkZXIpOgor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6IEhhbmRsZSB0
aGUgcG9zc2liaWxpdHkgb2YgYSBudWxsIERvY3VtZW50IGluIHNldmVyYWwgcGxhY2VzLgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjp+Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlk
YXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnBy
aW50QWNjZXNzRGVuaWVkTWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6bG9hZERvbmUpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKTogQWRkIGNyZWF0ZSgpLCBtYWtlIGNvbnN0cnVjdG9yIHBy
aXZhdGUuCisgICAgICAgIChDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnNldERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpjbGVhckRvY3VtZW50TG9hZGVyKToKKwogMjAxMi0wNS0yNSAgU2lt
b24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWNoZSBhYnNv
bHV0ZSBjbGlwIHJlY3RzIG9uIFJlbmRlckxheWVyIGZvciBjb21wb3NpdGluZyBvdmVybGFwIHRl
c3RpbmcKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gMTE4NTYzKQorKysgU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKQEAgLTExMCw4ICsxMTEsOSBAQAogICAg
IHJldHVybiBvcHRpb25zOwogfQogCi1DYWNoZWRSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkK
K0NhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRl
ciogZG9jdW1lbnRMb2FkZXIpCisgICAgOiBtX2RvY3VtZW50KDApCisgICAgLCBtX2RvY3VtZW50
TG9hZGVyKGRvY3VtZW50TG9hZGVyKQogICAgICwgbV9yZXF1ZXN0Q291bnQoMCkKICAgICAsIG1f
Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyKHRoaXMsICZDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQpCiAgICAg
LCBtX2F1dG9Mb2FkSW1hZ2VzKHRydWUpCkBAIC0xMjEsNiArMTIzLDcgQEAKIAogQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6On5DYWNoZWRSZXNvdXJjZUxvYWRlcigpCiB7CisgICAgbV9kb2N1bWVudExv
YWRlciA9IDA7CiAgICAgbV9kb2N1bWVudCA9IDA7CiAKICAgICBjbGVhclByZWxvYWRzKCk7CkBA
IC0xNDYsNyArMTQ5LDcgQEAKIAogRnJhbWUqIENhY2hlZFJlc291cmNlTG9hZGVyOjpmcmFtZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZG9jdW1lbnQgPyBtX2RvY3VtZW50LT5mcmFtZSgpIDog
MDsKKyAgICByZXR1cm4gbV9kb2N1bWVudExvYWRlciA/IG1fZG9jdW1lbnRMb2FkZXItPmZyYW1l
KCkgOiAwOwogfQogCiBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC0y
OTAsNiArMjkzLDEwIEBACiAKIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3Qo
Q2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29uc3QgS1VSTCYgdXJsLCBib29sIGZvclByZWxv
YWQpCiB7CisgICAgLy8gRklYTUU6IFdoZW4gd2UgY2FuIGxvYWQgbWFpbiByZXNvdXJjZXMgdGhy
b3VnaCBDYWNoZWRSZXNvdXJjZUxvYWRlciwgd2UnbGwgbmVlZCB0byBhbGxvdyBmb3IgbnVsbCBk
b2N1bWVudCgpIGhlcmUuCisgICAgaWYgKCFkb2N1bWVudCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICBpZiAoIWRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXko
dXJsKSkgewogICAgICAgICBpZiAoIWZvclByZWxvYWQpCiAgICAgICAgICAgICBGcmFtZUxvYWRl
cjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGRvY3VtZW50KCktPmZyYW1lKCksIHVybC5zdHJpbmco
KSk7CkBAIC01NjQsNyArNTcxLDcgQEAKICAgICB9CiAKICAgICAvLyBEdXJpbmcgdGhlIGluaXRp
YWwgbG9hZCwgYXZvaWQgbG9hZGluZyB0aGUgc2FtZSByZXNvdXJjZSBtdWx0aXBsZSB0aW1lcyBm
b3IgYSBzaW5nbGUgZG9jdW1lbnQsIGV2ZW4gaWYgdGhlIGNhY2hlIHBvbGljaWVzIHdvdWxkIHRl
bGwgdXMgdG8uCi0gICAgaWYgKCFkb2N1bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpICYmIG1f
dmFsaWRhdGVkVVJMcy5jb250YWlucyhleGlzdGluZ1Jlc291cmNlLT51cmwoKSkpCisgICAgaWYg
KGRvY3VtZW50KCkgJiYgIWRvY3VtZW50KCktPmxvYWRFdmVudEZpbmlzaGVkKCkgJiYgbV92YWxp
ZGF0ZWRVUkxzLmNvbnRhaW5zKGV4aXN0aW5nUmVzb3VyY2UtPnVybCgpKSkKICAgICAgICAgcmV0
dXJuIFVzZTsKIAogICAgIC8vIENhY2hlUG9saWN5UmVsb2FkIGFsd2F5cyByZWxvYWRzCkBAIC02
MTAsNyArNjE3LDcgQEAKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0g
ICAgaWYgKG1fZG9jdW1lbnQtPnVybCgpLmlzTnVsbCgpKQorICAgIGlmICghbV9kb2N1bWVudCB8
fCBtX2RvY3VtZW50LT51cmwoKS5pc051bGwoKSkKICAgICAgICAgbWVzc2FnZSA9ICJVbnNhZmUg
YXR0ZW1wdCB0byBsb2FkIFVSTCAiICsgdXJsLnN0cmluZygpICsgJy4nOwogICAgIGVsc2UKICAg
ICAgICAgbWVzc2FnZSA9ICJVbnNhZmUgYXR0ZW1wdCB0byBsb2FkIFVSTCAiICsgdXJsLnN0cmlu
ZygpICsgIiBmcm9tIGZyYW1lIHdpdGggVVJMICIgKyBtX2RvY3VtZW50LT51cmwoKS5zdHJpbmco
KSArICIuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiI7CkBAIC02
NTgsNyArNjY1LDggQEAKIAogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZERvbmUoKQog
ewotICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdChtX2RvY3VtZW50KTsKKyAgICBSZWZQdHI8
RG9jdW1lbnRMb2FkZXI+IHByb3RlY3REb2N1bWVudExvYWRlcihtX2RvY3VtZW50TG9hZGVyKTsK
KyAgICBSZWZQdHI8RG9jdW1lbnQ+IHByb3RlY3REb2N1bWVudChtX2RvY3VtZW50KTsKICAgICBp
ZiAoZnJhbWUoKSkKICAgICAgICAgZnJhbWUoKS0+bG9hZGVyKCktPmxvYWREb25lKCk7CiAgICAg
cGVyZm9ybVBvc3RMb2FkQWN0aW9ucygpOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHJldmlzaW9uIDExODU2MykKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSwxOCArNDksMjYgQEAKIGNsYXNzIENhY2hlZFRleHRUcmFjazsKIGNs
YXNzIENhY2hlZFhTTFN0eWxlU2hlZXQ7CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIERvY3VtZW50
TG9hZGVyOwogY2xhc3MgRnJhbWU7CiBjbGFzcyBJbWFnZUxvYWRlcjsKIGNsYXNzIEtVUkw7CiAK
LS8vIFRoZSBDYWNoZWRSZXNvdXJjZUxvYWRlciBtYW5hZ2VzIHRoZSBsb2FkaW5nIG9mIHNjcmlw
dHMvaW1hZ2VzL3N0eWxlc2hlZXRzIGZvciBhIHNpbmdsZSBkb2N1bWVudC4KLWNsYXNzIENhY2hl
ZFJlc291cmNlTG9hZGVyIHsKKy8vIFRoZSBDYWNoZWRSZXNvdXJjZUxvYWRlciBwcm92aWRlcyBh
IHBlci1jb250ZXh0IGludGVyZmFjZSB0byB0aGUgTWVtb3J5Q2FjaGUKKy8vIGFuZCBlbmZvcmNl
cyBhIGJ1bmNoIG9mIHNlY3VyaXR5IGNoZWNrcyBhbmQgcnVsZXMgZm9yIHJlc291cmNlIHJldmFs
aWRhdGlvbi4KKy8vIEl0cyBsaWZldGltZSBpcyByb3VnaGx5IHBlci1Eb2N1bWVudExvYWRlciwg
aW4gdGhhdCBpdCBpcyBnZW5lcmFsbHkgY3JlYXRlZAorLy8gaW4gdGhlIERvY3VtZW50TG9hZGVy
IGNvbnN0cnVjdG9yIGFuZCBsb3NlcyBpdHMgYWJpbGl0eSB0byBnZW5lcmF0ZSBuZXR3b3JrCisv
LyByZXF1ZXN0cyB3aGVuIHRoZSBEb2N1bWVudExvYWRlciBpcyBkZXN0cm95ZWQuIERvY3VtZW50
cyBhbHNvIGhvbGQgYSAKKy8vIFJlZlB0cjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gZm9yIHRoZWly
IGxpZmV0aW1lIChhbmQgd2lsbCBjcmVhdGUgb25lIGlmIHRoZXkKKy8vIGFyZSBpbml0aWFsaXpl
ZCB3aXRob3V0IGEgRnJhbWUpLCBzbyBhIERvY3VtZW50IGNhbiBrZWVwIGEgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIKKy8vIGFsaXZlIHBhc3QgZGV0YWNoIGlmIHNjcmlwdHMgc3RpbGwgcmVmZXJlbmNl
IHRoZSBEb2N1bWVudC4KK2NsYXNzIENhY2hlZFJlc291cmNlTG9hZGVyIDogcHVibGljIFJlZkNv
dW50ZWQ8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
YWNoZWRSZXNvdXJjZUxvYWRlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogZnJpZW5kIGNs
YXNzIEltYWdlTG9hZGVyOwogZnJpZW5kIGNsYXNzIFJlc291cmNlQ2FjaGVWYWxpZGF0aW9uU3Vw
cHJlc3NvcjsKIAogcHVibGljOgotICAgIENhY2hlZFJlc291cmNlTG9hZGVyKERvY3VtZW50Kik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IGNyZWF0ZShEb2N1
bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYWNoZWRS
ZXNvdXJjZUxvYWRlcihkb2N1bWVudExvYWRlcikpOyB9CiAgICAgfkNhY2hlZFJlc291cmNlTG9h
ZGVyKCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gcmVxdWVzdElt
YWdlKFJlc291cmNlUmVxdWVzdCYpOwpAQCAtMTAwLDggKzEwOCwxMCBAQAogICAgIAogICAgIENh
Y2hlUG9saWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7CiAgICAgCi0gICAgRnJhbWUqIGZyYW1lKCkg
Y29uc3Q7IC8vIENhbiBiZSBOVUxMCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3QgeyBy
ZXR1cm4gbV9kb2N1bWVudDsgfQorICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0OyAvLyBDYW4gYmUg
bnVsbAorICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jdW1lbnQ7
IH0gLy8gQ2FuIGJlIG51bGwKKyAgICB2b2lkIHNldERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVu
dCkgeyBtX2RvY3VtZW50ID0gZG9jdW1lbnQ7IH0KKyAgICB2b2lkIGNsZWFyRG9jdW1lbnRMb2Fk
ZXIoKSB7IG1fZG9jdW1lbnRMb2FkZXIgPSAwOyB9CiAKICAgICB2b2lkIHJlbW92ZUNhY2hlZFJl
c291cmNlKENhY2hlZFJlc291cmNlKikgY29uc3Q7CiAgICAgdm9pZCBsb2FkRG9uZSgpOwpAQCAt
MTE5LDYgKzEyOSw3IEBACiAgICAgYm9vbCBjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBl
LCBjb25zdCBLVVJMJiwgYm9vbCBmb3JQcmVsb2FkID0gZmFsc2UpOwogICAgIAogcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciopOwogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGVkUmVzb3VyY2U6OlR5cGUsIFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgY2hhcnNl
dCwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiwgUmVzb3VyY2VMb2FkUHJpb3JpdHkgPSBS
ZXNvdXJjZUxvYWRQcmlvcml0eVVucmVzb2x2ZWQsIGJvb2wgaXNQcmVsb2FkID0gZmFsc2UpOwog
ICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiByZXZhbGlkYXRlUmVzb3Vy
Y2UoQ2FjaGVkUmVzb3VyY2UqLCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJik7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+
IGxvYWRSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6VHlwZSwgUmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3RyaW5nJiBjaGFyc2V0LCBSZXNvdXJjZUxvYWRQcmlvcml0eSwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJik7CkBAIC0xMzYsNiArMTQ3LDcgQEAKICAgICBIYXNoU2V0PFN0cmluZz4g
bV92YWxpZGF0ZWRVUkxzOwogICAgIG11dGFibGUgRG9jdW1lbnRSZXNvdXJjZU1hcCBtX2RvY3Vt
ZW50UmVzb3VyY2VzOwogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OworICAgIERvY3VtZW50TG9h
ZGVyKiBtX2RvY3VtZW50TG9hZGVyOwogICAgIAogICAgIGludCBtX3JlcXVlc3RDb3VudDsKICAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiAx
MTg1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTEsNiArOTEsOCBAQAogICAgICAgICBSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QoKTsKICAgICAgICAgdm9pZCBzZXRSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwog
CisgICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuZ2V0KCk7IH0KKwogICAgICAgICBj
b25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3N1
YnN0aXR1dGVEYXRhOyB9CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgdGhlIHNhbWUgYXMg
cmVxdWVzdFVSTCgpLiBXZSBzaG91bGQgcmVtb3ZlIG9uZSBvZiB0aGVtLgpAQCAtMjY1LDYgKzI2
Nyw3IEBACiAgICAgICAgIHZvaWQgc3Vic3RpdHV0ZVJlc291cmNlRGVsaXZlcnlUaW1lckZpcmVk
KFRpbWVyPERvY3VtZW50TG9hZGVyPiopOwogICAgICAgICAgICAgICAgIAogICAgICAgICBGcmFt
ZSogbV9mcmFtZTsKKyAgICAgICAgUmVmUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPiBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyOwogCiAgICAgICAgIFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IG1f
bWFpblJlc291cmNlTG9hZGVyOwogICAgICAgICBSZXNvdXJjZUxvYWRlclNldCBtX3N1YnJlc291
cmNlTG9hZGVyczsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAkocmV2aXNpb24gMTE4NTYzKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQAogRG9jdW1lbnRMb2FkZXI6
OkRvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxLCBjb25zdCBTdWJzdGl0
dXRlRGF0YSYgc3Vic3RpdHV0ZURhdGEpCiAgICAgOiBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxv
YWQodHJ1ZSkKICAgICAsIG1fZnJhbWUoMCkKKyAgICAsIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIo
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fd3JpdGVyKG1fZnJh
bWUpCiAgICAgLCBtX29yaWdpbmFsUmVxdWVzdChyZXEpCiAgICAgLCBtX3N1YnN0aXR1dGVEYXRh
KHN1YnN0aXR1dGVEYXRhKQpAQCAtMTE0LDYgKzExNSw3IEBACiAgICAgICAgIG1faWNvbkxvYWRE
ZWNpc2lvbkNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgaWYgKG1faWNvbkRhdGFDYWxsYmFj
aykKICAgICAgICAgbV9pY29uRGF0YUNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CisgICAgbV9jYWNo
ZWRSZXNvdXJjZUxvYWRlci0+Y2xlYXJEb2N1bWVudExvYWRlcigpOwogfQogCiBQYXNzUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdApA
QCAtNDU0LDcgKzQ1Niw3IEBACiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpOwogICAgICAgICBpZiAoKG1fbWFpblJlc291cmNlTG9hZGVyIHx8ICFtX2ZyYW1lLT5k
b2N1bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpKSAmJiBpc0xvYWRpbmcoKSkKICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwotICAgICAgICBpZiAoZG9jLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LT5yZXF1ZXN0Q291bnQoKSkKKyAgICAgICAgaWYgKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJl
cXVlc3RDb3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChEb2N1
bWVudFBhcnNlciogcGFyc2VyID0gZG9jLT5wYXJzZXIoKSkKICAgICAgICAgICAgIGlmIChwYXJz
ZXItPnByb2Nlc3NpbmdEYXRhKCkpCkBAIC01NjAsNyArNTYyLDcgQEAKICAgICBpZiAoIWlzQ29t
bWl0dGVkKCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIENhY2hlZFJlc291cmNlKiBy
ZXNvdXJjZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNh
Y2hlZFJlc291cmNlKHVybCk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbV9jYWNo
ZWRSZXNvdXJjZUxvYWRlci0+Y2FjaGVkUmVzb3VyY2UodXJsKTsKICAgICBpZiAoIXJlc291cmNl
IHx8ICFyZXNvdXJjZS0+aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmVSZXNvdXJj
ZUZvclVSTCh1cmwpOwogCkBAIC01ODEsOSArNTgzLDcgQEAKICAgICBpZiAoIWlzQ29tbWl0dGVk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUt
PmRvY3VtZW50KCk7Ci0KLSAgICBjb25zdCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRS
ZXNvdXJjZU1hcCYgYWxsUmVzb3VyY2VzID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVy
KCktPmFsbENhY2hlZFJlc291cmNlcygpOworICAgIGNvbnN0IENhY2hlZFJlc291cmNlTG9hZGVy
OjpEb2N1bWVudFJlc291cmNlTWFwJiBhbGxSZXNvdXJjZXMgPSBtX2NhY2hlZFJlc291cmNlTG9h
ZGVyLT5hbGxDYWNoZWRSZXNvdXJjZXMoKTsKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9j
dW1lbnRSZXNvdXJjZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYWxsUmVzb3VyY2VzLmVuZCgp
OwogICAgIGZvciAoQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50UmVzb3VyY2VNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gYWxsUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkg
ewogICAgICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBzdWJyZXNvdXJjZSA9IHRoaXMtPnN1
YnJlc291cmNlKEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+c2Vjb25kLT51cmwoKSkpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lv
biAxMTg1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw2IEBACiBTdWJyZXNvdXJjZUxvYWRlcjo6U3Vi
cmVzb3VyY2VMb2FkZXIoRnJhbWUqIGZyYW1lLCBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IFJlc291cmNlTG9hZGVy
KGZyYW1lLCBvcHRpb25zKQogICAgICwgbV9yZXNvdXJjZShyZXNvdXJjZSkKLSAgICAsIG1fZG9j
dW1lbnQoZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgLCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50
KGZhbHNlKQogICAgICwgbV9zdGF0ZShVbmluaXRpYWxpemVkKQogICAgICwgbV9yZXF1ZXN0Q291
bnRUcmFja2VyKGFkb3B0UHRyKG5ldyBSZXF1ZXN0Q291bnRUcmFja2VyKGZyYW1lLT5kb2N1bWVu
dCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLCByZXNvdXJjZSkpKQpAQCAtNzQsNyArNzMsNiBA
QAogU3VicmVzb3VyY2VMb2FkZXI6On5TdWJyZXNvdXJjZUxvYWRlcigpCiB7CiAgICAgQVNTRVJU
KG1fc3RhdGUgIT0gSW5pdGlhbGl6ZWQpOwotICAgIEFTU0VSVCghbV9kb2N1bWVudCk7CiAgICAg
QVNTRVJUKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOwogI2lmbmRlZiBOREVCVUcKICAgICBzdWJy
ZXNvdXJjZUxvYWRlckNvdW50ZXIuZGVjcmVtZW50KCk7CkBAIC0xNDcsNyArMTQ1LDcgQEAKICAg
ICAKICAgICBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpOwogICAgIGlmICghcHJldmlvdXNVUkwuaXNOdWxsKCkgJiYgIW5ld1JlcXVl
c3QuaXNOdWxsKCkgJiYgcHJldmlvdXNVUkwgIT0gbmV3UmVxdWVzdC51cmwoKSkgewotICAgICAg
ICBpZiAoIW1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNhblJlcXVlc3QobV9y
ZXNvdXJjZS0+dHlwZSgpLCBuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICBpZiAoIW1fZG9j
dW1lbnRMb2FkZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNhblJlcXVlc3QobV9yZXNvdXJj
ZS0+dHlwZSgpLCBuZXdSZXF1ZXN0LnVybCgpKSkgewogICAgICAgICAgICAgY2FuY2VsKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMxNCwxMyArMzEyLDEyIEBACiAgICAg
QVNTRVJUKCFyZWFjaGVkVGVybWluYWxTdGF0ZSgpKTsKICAgICBpZiAobV9zdGF0ZSAhPSBVbmlu
aXRpYWxpemVkKSB7CiAgICAgICAgIG1fcmVxdWVzdENvdW50VHJhY2tlci5jbGVhcigpOwotICAg
ICAgICBtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5sb2FkRG9uZSgpOworICAg
ICAgICBtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5sb2FkRG9uZSgp
OwogICAgICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgbV9yZXNvdXJjZS0+c3RvcExvYWRpbmcoKTsKICAgICAgICAgbV9kb2N1bWVu
dExvYWRlci0+cmVtb3ZlU3VicmVzb3VyY2VMb2FkZXIodGhpcyk7CiAgICAgfQotICAgIG1fZG9j
dW1lbnQgPSAwOwogICAgIFJlc291cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCk7CiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5oCShyZXZpc2lv
biAxMTg1NjMpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNiBAQAogICAgIH07CiAKICAgICBDYWNoZWRSZXNv
dXJjZSogbV9yZXNvdXJjZTsKLSAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAg
Ym9vbCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50OwogICAgIFN1YnJlc291cmNlTG9hZGVyU3Rh
dGUgbV9zdGF0ZTsKICAgICBPd25QdHI8UmVxdWVzdENvdW50VHJhY2tlcj4gbV9yZXF1ZXN0Q291
bnRUcmFja2VyOwpJbmRleDogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCShyZXZpc2lvbiAxMTg1NjMp
CisrKyBTb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDAsNiArMTAwLDcgQEAKIF9aTks3V2ViQ29yZTVGcmFtZThzZXR0aW5nc0V2OwogX1pOSzdXZWJD
b3JlNkpTTm9kZTIxcHVzaEV2ZW50SGFuZGxlclNjb3BlRVBOM0pTQzlFeGVjU3RhdGVFUE5TMV8x
NFNjb3BlQ2hhaW5Ob2RlRTsKIF9aTks3V2ViQ29yZTdFbGVtZW50NnNoYWRvd0V2OworX1pOSzdX
ZWJDb3JlOERvY3VtZW50MjBjYWNoZWRSZXNvdXJjZUxvYWRlckV2OwogX1pOSzdXZWJDb3JlOERv
Y3VtZW50NHBhZ2VFdjsKIF9aTks3V2ViQ29yZThEb2N1bWVudDhzZXR0aW5nc0V2OwogX1pOSzdX
ZWJDb3JlOERvY3VtZW50NHZpZXdFdjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDExODU2MykK
KysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEy
IEBACisyMDEyLTA1LTI1ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgVXBkYXRlIHN5bWJvbHMgZm9yIERvY3VtZW50OjpjYWNoZWRSZXNvdXJjZUxvYWRlcigp
LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3ODcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHdpbi9X
ZWJLaXQyLmRlZjoKKwogMjAxMi0wNS0yNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3
NDE4CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCShyZXZpc2lvbiAxMTg1NjMpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYJKHdvcmtpbmcgY29weSkKQEAgLTE2MSw2ICsxNjEs
NyBAQAogICAgICAgICA/YWRkQEF0b21pY1N0cmluZ0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZT
dHJpbmdJbXBsQFdURkBAQDJAUEJFQFoKICAgICAgICAgP2FkZFNsb3dDYXNlQEF0b21pY1N0cmlu
Z0BXVEZAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDJAUEFWU3RyaW5nSW1w
bEAyQEBaCiAgICAgICAgID9jYWNoZURPTVN0cnVjdHVyZUBXZWJDb3JlQEBZQVBBVlN0cnVjdHVy
ZUBKU0NAQFBBVkpTRE9NR2xvYmFsT2JqZWN0QDFAUEFWMjNAUEJVQ2xhc3NJbmZvQDNAQFoKKyAg
ICAgICAgP2NhY2hlZFJlc291cmNlTG9hZGVyQERvY3VtZW50QFdlYkNvcmVAQFFCRVBBVkNhY2hl
ZFJlc291cmNlTG9hZGVyQDJAWFoKICAgICAgICAgP2NyZWF0ZUBIVE1MQ29udGVudEVsZW1lbnRA
V2ViQ29yZUBAU0E/QVY/JFBhc3NSZWZQdHJAVkhUTUxDb250ZW50RWxlbWVudEBXZWJDb3JlQEBA
V1RGQEBQQVZEb2N1bWVudEAyQEBaCiAgICAgICAgID9jcmVhdGVAUmFuZ2VAV2ViQ29yZUBAU0E/
QVY/JFBhc3NSZWZQdHJAVlJhbmdlQFdlYkNvcmVAQEBXVEZAQFY/JFBhc3NSZWZQdHJAVkRvY3Vt
ZW50QFdlYkNvcmVAQEA0QFY/JFBhc3NSZWZQdHJAVk5vZGVAV2ViQ29yZUBAQDRASDFIQFoKICAg
ICAgICAgP2NyZWF0ZUBTaGFkb3dSb290QFdlYkNvcmVAQFNBP0FWPyRQYXNzUmVmUHRyQFZTaGFk
b3dSb290QFdlYkNvcmVAQEBXVEZAQFBBVkVsZW1lbnRAMkBBQUhAWgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167410</attachid>
            <date>2012-10-05 16:25:30 -0700</date>
            <delta_ts>2012-10-09 14:58:22 -0700</delta_ts>
            <desc>Merge to trunk</desc>
            <filename>crl.txt</filename>
            <type>text/plain</type>
            <size>17158</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkocmV2
aXNpb24gMTMwNTY2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNiBAQAogU3VicmVzb3VyY2VMb2FkZXI6
OlN1YnJlc291cmNlTG9hZGVyKEZyYW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiAgICAgOiBSZXNvdXJjZUxv
YWRlcihmcmFtZSwgb3B0aW9ucykKICAgICAsIG1fcmVzb3VyY2UocmVzb3VyY2UpCi0gICAgLCBt
X2RvY3VtZW50KGZyYW1lLT5kb2N1bWVudCgpKQogICAgICwgbV9sb2FkaW5nTXVsdGlwYXJ0Q29u
dGVudChmYWxzZSkKICAgICAsIG1fc3RhdGUoVW5pbml0aWFsaXplZCkKICAgICAsIG1fcmVxdWVz
dENvdW50VHJhY2tlcihhZG9wdFB0cihuZXcgUmVxdWVzdENvdW50VHJhY2tlcihmcmFtZS0+ZG9j
dW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSwgcmVzb3VyY2UpKSkKQEAgLTc1LDcgKzc0
LDYgQEAKIFN1YnJlc291cmNlTG9hZGVyOjp+U3VicmVzb3VyY2VMb2FkZXIoKQogewogICAgIEFT
U0VSVChtX3N0YXRlICE9IEluaXRpYWxpemVkKTsKLSAgICBBU1NFUlQoIW1fZG9jdW1lbnQpOwog
ICAgIEFTU0VSVChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKTsKICNpZm5kZWYgTkRFQlVHCiAgICAg
c3VicmVzb3VyY2VMb2FkZXJDb3VudGVyLmRlY3JlbWVudCgpOwpAQCAtMTQwLDcgKzEzOCw3IEBA
CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29y
ZU1lbW9yeVR5cGVzOjpMb2FkZXIpOwogICAgIFJlc291cmNlTG9hZGVyOjpyZXBvcnRNZW1vcnlV
c2FnZShtZW1vcnlPYmplY3RJbmZvKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3Jlc291cmNlKTsK
LSAgICBpbmZvLmFkZE1lbWJlcihtX2RvY3VtZW50KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2Rv
Y3VtZW50TG9hZGVyKTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3JlcXVlc3RDb3VudFRyYWNrZXIp
OwogfQogCkBAIC0xNjcsOCArMTY1LDggQEAKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcjo6d2ls
bFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGlmICghcHJl
dmlvdXNVUkwuaXNOdWxsKCkgJiYgIW5ld1JlcXVlc3QuaXNOdWxsKCkgJiYgcHJldmlvdXNVUkwg
IT0gbmV3UmVxdWVzdC51cmwoKSkgewotICAgICAgICBpZiAobV9kb2N1bWVudC0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS0+Y2FuUmVxdWVzdChtX3Jlc291cmNlLT50eXBlKCksIG5ld1JlcXVlc3Qu
dXJsKCkpKSB7Ci0gICAgICAgICAgICBpZiAobV9yZXNvdXJjZS0+dHlwZSgpICE9IENhY2hlZFJl
c291cmNlOjpJbWFnZVJlc291cmNlIHx8ICFtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpLT5zaG91bGREZWZlckltYWdlTG9hZChuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICBp
ZiAobV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FuUmVxdWVzdCht
X3Jlc291cmNlLT50eXBlKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7CisgICAgICAgICAgICBpZiAo
bV9yZXNvdXJjZS0+dHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlIHx8ICFt
X2RvY3VtZW50TG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zaG91bGREZWZlckltYWdl
TG9hZChuZXdSZXF1ZXN0LnVybCgpKSkgewogICAgICAgICAgICAgICAgIG1fcmVzb3VyY2UtPndp
bGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0zMzgsMTMgKzMzNiwxMiBAQAogICAgIEFT
U0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7CiAgICAgaWYgKG1fc3RhdGUgIT0gVW5pbml0
aWFsaXplZCkgewogICAgICAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIuY2xlYXIoKTsKLSAgICAg
ICAgbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+bG9hZERvbmUoKTsKKyAgICAg
ICAgbV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+bG9hZERvbmUoKTsK
ICAgICAgICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIG1fcmVzb3VyY2UtPnN0b3BMb2FkaW5nKCk7CiAgICAgICAgIG1fZG9jdW1lbnRM
b2FkZXItPnJlbW92ZVN1YnJlc291cmNlTG9hZGVyKHRoaXMpOwogICAgIH0KLSAgICBtX2RvY3Vt
ZW50ID0gMDsKICAgICBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpOwogfQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaAkocmV2aXNpb24gMTMwNTY2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDE4ICs0OSwyNiBA
QAogY2xhc3MgQ2FjaGVkVGV4dFRyYWNrOwogY2xhc3MgQ2FjaGVkWFNMU3R5bGVTaGVldDsKIGNs
YXNzIERvY3VtZW50OworY2xhc3MgRG9jdW1lbnRMb2FkZXI7CiBjbGFzcyBGcmFtZTsKIGNsYXNz
IEltYWdlTG9hZGVyOwogY2xhc3MgS1VSTDsKIAotLy8gVGhlIENhY2hlZFJlc291cmNlTG9hZGVy
IG1hbmFnZXMgdGhlIGxvYWRpbmcgb2Ygc2NyaXB0cy9pbWFnZXMvc3R5bGVzaGVldHMgZm9yIGEg
c2luZ2xlIGRvY3VtZW50LgotY2xhc3MgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgeworLy8gVGhlIENh
Y2hlZFJlc291cmNlTG9hZGVyIHByb3ZpZGVzIGEgcGVyLWNvbnRleHQgaW50ZXJmYWNlIHRvIHRo
ZSBNZW1vcnlDYWNoZQorLy8gYW5kIGVuZm9yY2VzIGEgYnVuY2ggb2Ygc2VjdXJpdHkgY2hlY2tz
IGFuZCBydWxlcyBmb3IgcmVzb3VyY2UgcmV2YWxpZGF0aW9uLgorLy8gSXRzIGxpZmV0aW1lIGlz
IHJvdWdobHkgcGVyLURvY3VtZW50TG9hZGVyLCBpbiB0aGF0IGl0IGlzIGdlbmVyYWxseSBjcmVh
dGVkCisvLyBpbiB0aGUgRG9jdW1lbnRMb2FkZXIgY29uc3RydWN0b3IgYW5kIGxvc2VzIGl0cyBh
YmlsaXR5IHRvIGdlbmVyYXRlIG5ldHdvcmsKKy8vIHJlcXVlc3RzIHdoZW4gdGhlIERvY3VtZW50
TG9hZGVyIGlzIGRlc3Ryb3llZC4gRG9jdW1lbnRzIGFsc28gaG9sZCBhIAorLy8gUmVmUHRyPENh
Y2hlZFJlc291cmNlTG9hZGVyPiBmb3IgdGhlaXIgbGlmZXRpbWUgKGFuZCB3aWxsIGNyZWF0ZSBv
bmUgaWYgdGhleQorLy8gYXJlIGluaXRpYWxpemVkIHdpdGhvdXQgYSBGcmFtZSksIHNvIGEgRG9j
dW1lbnQgY2FuIGtlZXAgYSBDYWNoZWRSZXNvdXJjZUxvYWRlcgorLy8gYWxpdmUgcGFzdCBkZXRh
Y2ggaWYgc2NyaXB0cyBzdGlsbCByZWZlcmVuY2UgdGhlIERvY3VtZW50LgorY2xhc3MgQ2FjaGVk
UmVzb3VyY2VMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxDYWNoZWRSZXNvdXJjZUxvYWRlcj4g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENhY2hlZFJlc291cmNlTG9hZGVyKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBmcmllbmQgY2xhc3MgSW1hZ2VMb2FkZXI7CiBmcmllbmQgY2xh
c3MgUmVzb3VyY2VDYWNoZVZhbGlkYXRpb25TdXBwcmVzc29yOwogCiBwdWJsaWM6Ci0gICAgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnQqKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWNo
ZWRSZXNvdXJjZUxvYWRlcj4gY3JlYXRlKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikg
eyByZXR1cm4gYWRvcHRSZWYobmV3IENhY2hlZFJlc291cmNlTG9hZGVyKGRvY3VtZW50TG9hZGVy
KSk7IH0KICAgICB+Q2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKIAogICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZEltYWdlPiByZXF1ZXN0SW1hZ2UoUmVzb3VyY2VSZXF1ZXN0Jik7CkBAIC0x
MDQsOCArMTEyLDEwIEBACiAgICAgCiAgICAgQ2FjaGVQb2xpY3kgY2FjaGVQb2xpY3koKSBjb25z
dDsKICAgICAKLSAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsgLy8gQ2FuIGJlIE5VTEwKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2RvY3VtZW50OyB9CisgICAgRnJh
bWUqIGZyYW1lKCkgY29uc3Q7IC8vIENhbiBiZSBudWxsCisgICAgRG9jdW1lbnQqIGRvY3VtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9kb2N1bWVudDsgfSAvLyBDYW4gYmUgbnVsbAorICAgIHZvaWQg
c2V0RG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KSB7IG1fZG9jdW1lbnQgPSBkb2N1bWVudDsg
fQorICAgIHZvaWQgY2xlYXJEb2N1bWVudExvYWRlcigpIHsgbV9kb2N1bWVudExvYWRlciA9IDA7
IH0KIAogICAgIHZvaWQgcmVtb3ZlQ2FjaGVkUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKSBjb25z
dDsKICAgICB2b2lkIGxvYWREb25lKCk7CkBAIC0xMjYsNiArMTM2LDggQEAKICAgICB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJpdmF0ZToKKyAg
ICBleHBsaWNpdCBDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudExvYWRlciopOworCiAgICAg
ZW51bSBEZWZlck9wdGlvbiB7IE5vRGVmZXIsIERlZmVycmVkQnlDbGllbnQgfTsKICAgICBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVxdWVzdFJlc291cmNlKENhY2hlZFJl
c291cmNlOjpUeXBlLCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIGNoYXJzZXQsIGNv
bnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYsIFJlc291cmNlTG9hZFByaW9yaXR5ID0gUmVzb3Vy
Y2VMb2FkUHJpb3JpdHlVbnJlc29sdmVkLCBib29sIGlzUHJlbG9hZCA9IGZhbHNlLCBEZWZlck9w
dGlvbiA9IE5vRGVmZXIpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNl
PiByZXZhbGlkYXRlUmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2UqKTsKQEAgLTE0Nyw2ICsxNTksNyBA
QAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZhbGlkYXRlZFVSTHM7CiAgICAgbXV0YWJsZSBEb2N1
bWVudFJlc291cmNlTWFwIG1fZG9jdW1lbnRSZXNvdXJjZXM7CiAgICAgRG9jdW1lbnQqIG1fZG9j
dW1lbnQ7CisgICAgRG9jdW1lbnRMb2FkZXIqIG1fZG9jdW1lbnRMb2FkZXI7CiAgICAgCiAgICAg
aW50IG1fcmVxdWVzdENvdW50OwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCShyZXZpc2lvbiAxMzA1NjYp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAiQ29udGVudFNlY3Vy
aXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQu
aCIKKyNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgpAQCAt
MTEyLDggKzExMyw5IEBACiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKLUNhY2hlZFJlc291cmNl
TG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBt
X2RvY3VtZW50KGRvY3VtZW50KQorQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNl
TG9hZGVyKERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcikKKyAgICA6IG1fZG9jdW1lbnQo
MCkKKyAgICAsIG1fZG9jdW1lbnRMb2FkZXIoZG9jdW1lbnRMb2FkZXIpCiAgICAgLCBtX3JlcXVl
c3RDb3VudCgwKQogICAgICwgbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXIo
dGhpcywgJkNhY2hlZFJlc291cmNlTG9hZGVyOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3Vy
Y2VzVGltZXJGaXJlZCkKICAgICAsIG1fYXV0b0xvYWRJbWFnZXModHJ1ZSkKQEAgLTEyNCw2ICsx
MjYsNyBAQAogCiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6fkNhY2hlZFJlc291cmNlTG9hZGVyKCkK
IHsKKyAgICBtX2RvY3VtZW50TG9hZGVyID0gMDsKICAgICBtX2RvY3VtZW50ID0gMDsKIAogICAg
IGNsZWFyUHJlbG9hZHMoKTsKQEAgLTE0OSw3ICsxNTIsNyBAQAogCiBGcmFtZSogQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OmZyYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kb2N1bWVudCA/IG1f
ZG9jdW1lbnQtPmZyYW1lKCkgOiAwOworICAgIHJldHVybiBtX2RvY3VtZW50TG9hZGVyID8gbV9k
b2N1bWVudExvYWRlci0+ZnJhbWUoKSA6IDA7CiB9CiAKIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZEltYWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCkKQEAgLTI5MCw2ICsyOTMsMTAgQEAKIAogYm9vbCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6Y2FuUmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJM
JiB1cmwsIGJvb2wgZm9yUHJlbG9hZCkKIHsKKyAgICAvLyBGSVhNRTogV2hlbiB3ZSBjYW4gbG9h
ZCBtYWluIHJlc291cmNlcyB0aHJvdWdoIENhY2hlZFJlc291cmNlTG9hZGVyLCB3ZSdsbCBuZWVk
IHRvIGFsbG93IGZvciBudWxsIGRvY3VtZW50KCkgaGVyZS4KKyAgICBpZiAoIWRvY3VtZW50KCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7CiAgICAgICAgIGlmICghZm9yUHJlbG9hZCkKICAg
ICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZG9jdW1lbnQoKS0+
ZnJhbWUoKSwgdXJsLnN0cmluZygpKTsKQEAgLTU1Niw3ICs1NjMsNyBAQAogICAgIH0KIAogICAg
IC8vIER1cmluZyB0aGUgaW5pdGlhbCBsb2FkLCBhdm9pZCBsb2FkaW5nIHRoZSBzYW1lIHJlc291
cmNlIG11bHRpcGxlIHRpbWVzIGZvciBhIHNpbmdsZSBkb2N1bWVudCwgZXZlbiBpZiB0aGUgY2Fj
aGUgcG9saWNpZXMgd291bGQgdGVsbCB1cyB0by4KLSAgICBpZiAoIWRvY3VtZW50KCktPmxvYWRF
dmVudEZpbmlzaGVkKCkgJiYgbV92YWxpZGF0ZWRVUkxzLmNvbnRhaW5zKGV4aXN0aW5nUmVzb3Vy
Y2UtPnVybCgpKSkKKyAgICBpZiAoZG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+bG9hZEV2ZW50
RmluaXNoZWQoKSAmJiBtX3ZhbGlkYXRlZFVSTHMuY29udGFpbnMoZXhpc3RpbmdSZXNvdXJjZS0+
dXJsKCkpKQogICAgICAgICByZXR1cm4gVXNlOwogCiAgICAgLy8gQ2FjaGVQb2xpY3lSZWxvYWQg
YWx3YXlzIHJlbG9hZHMKQEAgLTYwMiw3ICs2MDksNyBAQAogICAgICAgICByZXR1cm47CiAKICAg
ICBTdHJpbmcgbWVzc2FnZTsKLSAgICBpZiAobV9kb2N1bWVudC0+dXJsKCkuaXNOdWxsKCkpCisg
ICAgaWYgKCFtX2RvY3VtZW50IHx8IG1fZG9jdW1lbnQtPnVybCgpLmlzTnVsbCgpKQogICAgICAg
ICBtZXNzYWdlID0gIlVuc2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJMICIgKyB1cmwuc3RyaW5nKCkg
KyAnLic7CiAgICAgZWxzZQogICAgICAgICBtZXNzYWdlID0gIlVuc2FmZSBhdHRlbXB0IHRvIGxv
YWQgVVJMICIgKyB1cmwuc3RyaW5nKCkgKyAiIGZyb20gZnJhbWUgd2l0aCBVUkwgIiArIG1fZG9j
dW1lbnQtPnVybCgpLnN0cmluZygpICsgIi4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBt
dXN0IG1hdGNoLlxuIjsKQEAgLTY3NCw3ICs2ODEsOCBAQAogCiB2b2lkIENhY2hlZFJlc291cmNl
TG9hZGVyOjpsb2FkRG9uZSgpCiB7Ci0gICAgUmVmUHRyPERvY3VtZW50PiBwcm90ZWN0KG1fZG9j
dW1lbnQpOworICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdERvY3VtZW50TG9hZGVy
KG1fZG9jdW1lbnRMb2FkZXIpOworICAgIFJlZlB0cjxEb2N1bWVudD4gcHJvdGVjdERvY3VtZW50
KG1fZG9jdW1lbnQpOwogICAgIGlmIChmcmFtZSgpKQogICAgICAgICBmcmFtZSgpLT5sb2FkZXIo
KS0+bG9hZERvbmUoKTsKICAgICBwZXJmb3JtUG9zdExvYWRBY3Rpb25zKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gMTMwNTY2KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk1LDcgKzk1LDYgQEAKICAgICB9OwogCiAgICAgQ2FjaGVkUmVzb3VyY2UqIG1fcmVz
b3VyY2U7Ci0gICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIGJvb2wgbV9sb2Fk
aW5nTXVsdGlwYXJ0Q29udGVudDsKICAgICBTdWJyZXNvdXJjZUxvYWRlclN0YXRlIG1fc3RhdGU7
CiAgICAgT3duUHRyPFJlcXVlc3RDb3VudFRyYWNrZXI+IG1fcmVxdWVzdENvdW50VHJhY2tlcjsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24g
MTMwNTY2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODcsNiArODcsNyBAQAogRG9jdW1lbnRMb2FkZXI6OkRvY3VtZW50TG9h
ZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxLCBjb25zdCBTdWJzdGl0dXRlRGF0YSYgc3Vi
c3RpdHV0ZURhdGEpCiAgICAgOiBtX2RlZmVyTWFpblJlc291cmNlRGF0YUxvYWQodHJ1ZSkKICAg
ICAsIG1fZnJhbWUoMCkKKyAgICAsIG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1fd3JpdGVyKG1fZnJhbWUpCiAgICAgLCBt
X29yaWdpbmFsUmVxdWVzdChyZXEpCiAgICAgLCBtX3N1YnN0aXR1dGVEYXRhKHN1YnN0aXR1dGVE
YXRhKQpAQCAtMTE4LDYgKzExOSw3IEBACiAgICAgICAgIG1faWNvbkxvYWREZWNpc2lvbkNhbGxi
YWNrLT5pbnZhbGlkYXRlKCk7CiAgICAgaWYgKG1faWNvbkRhdGFDYWxsYmFjaykKICAgICAgICAg
bV9pY29uRGF0YUNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7CisgICAgbV9jYWNoZWRSZXNvdXJjZUxv
YWRlci0+Y2xlYXJEb2N1bWVudExvYWRlcigpOwogfQogCiBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdApAQCAtNDg4LDcgKzQ5
MCw3IEBACiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAg
ICAgICBpZiAoKG1fbWFpblJlc291cmNlTG9hZGVyIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5s
b2FkRXZlbnRGaW5pc2hlZCgpKSAmJiBpc0xvYWRpbmcoKSkKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICBpZiAoZG9jLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0Q291
bnQoKSkKKyAgICAgICAgaWYgKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RDb3VudCgp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChEb2N1bWVudFBhcnNlciog
cGFyc2VyID0gZG9jLT5wYXJzZXIoKSkKICAgICAgICAgICAgIGlmIChwYXJzZXItPnByb2Nlc3Np
bmdEYXRhKCkpCkBAIC01OTQsNyArNTk2LDcgQEAKICAgICBpZiAoIWlzQ29tbWl0dGVkKCkpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIAotICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNhY2hlZFJlc291cmNl
KHVybCk7CisgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gbV9jYWNoZWRSZXNvdXJjZUxv
YWRlci0+Y2FjaGVkUmVzb3VyY2UodXJsKTsKICAgICBpZiAoIXJlc291cmNlIHx8ICFyZXNvdXJj
ZS0+aXNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuIGFyY2hpdmVSZXNvdXJjZUZvclVSTCh1cmwp
OwogCkBAIC02MTUsOSArNjE3LDcgQEAKICAgICBpZiAoIWlzQ29tbWl0dGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3VtZW50KCk7
Ci0KLSAgICBjb25zdCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRSZXNvdXJjZU1hcCYg
YWxsUmVzb3VyY2VzID0gZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmFsbENhY2hl
ZFJlc291cmNlcygpOworICAgIGNvbnN0IENhY2hlZFJlc291cmNlTG9hZGVyOjpEb2N1bWVudFJl
c291cmNlTWFwJiBhbGxSZXNvdXJjZXMgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5hbGxDYWNo
ZWRSZXNvdXJjZXMoKTsKICAgICBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6RG9jdW1lbnRSZXNvdXJj
ZU1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gYWxsUmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAo
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkRvY3VtZW50UmVzb3VyY2VNYXA6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gYWxsUmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBS
ZWZQdHI8QXJjaGl2ZVJlc291cmNlPiBzdWJyZXNvdXJjZSA9IHRoaXMtPnN1YnJlc291cmNlKEtV
UkwoUGFyc2VkVVJMU3RyaW5nLCBpdC0+c2Vjb25kLT51cmwoKSkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDEzMDU2NikKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1
Miw3IEBACiAjZW5kaWYKICAgICBjbGFzcyBBcmNoaXZlUmVzb3VyY2U7CiAgICAgY2xhc3MgQXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbjsKKyAgICBjbGFzcyBDYWNoZWRSZXNvdXJjZUxvYWRlcjsK
ICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFzcyBGcmFtZUxvYWRlcjsKICAgICBjbGFzcyBNYWlu
UmVzb3VyY2VMb2FkZXI7CkBAIC05MSw2ICs5Miw4IEBACiAgICAgICAgIFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCgpOwogICAgICAgICB2b2lkIHNldFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1
ZXN0Jik7CiAKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9h
ZGVyKCkgY29uc3QgeyByZXR1cm4gbV9jYWNoZWRSZXNvdXJjZUxvYWRlci5nZXQoKTsgfQorCiAg
ICAgICAgIGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdWJzdGl0dXRlRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fc3Vic3RpdHV0ZURhdGE7IH0KIAogICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyB0aGUg
c2FtZSBhcyByZXF1ZXN0VVJMKCkuIFdlIHNob3VsZCByZW1vdmUgb25lIG9mIHRoZW0uCkBAIC0y
NjcsNiArMjcwLDcgQEAKICAgICAgICAgdm9pZCBzdWJzdGl0dXRlUmVzb3VyY2VEZWxpdmVyeVRp
bWVyRmlyZWQoVGltZXI8RG9jdW1lbnRMb2FkZXI+Kik7CiAgICAgICAgICAgICAgICAgCiAgICAg
ICAgIEZyYW1lKiBtX2ZyYW1lOworICAgICAgICBSZWZQdHI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+
IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAKICAgICAgICAgUmVmUHRyPE1haW5SZXNvdXJjZUxv
YWRlcj4gbV9tYWluUmVzb3VyY2VMb2FkZXI7CiAgICAgICAgIFJlc291cmNlTG9hZGVyU2V0IG1f
c3VicmVzb3VyY2VMb2FkZXJzOwpJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMwNTY2KQorKysg
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTggQEAK
KzIwMTItMTAtMDUgIE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAg
ICBNYWtlIENhY2hlZFJlc291cmNlTG9hZGVyIFJlZkNvdW50ZWQgYW5kIGhhdmUgYm90aCBEb2N1
bWVudAorICAgICAgICBhbmQgRG9jdW1lbnRMb2FkZXIgaG9sZCBSZWZQdHJzLiBUaGlzIGlzIGlu
IHByZXBhcmF0aW9uIGZvcgorICAgICAgICBjYWNoaW5nIG1haW4gcmVzb3VyY2VzLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODY3ODcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5v
IGZ1bmN0aW9uYWxpdHkgY2hhbmdlcyBhdCB0aGlzIHRpbWUuCisKKyAgICAgICAgKiBXZWJDb3Jl
LmV4cC5pbjoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpE
b2N1bWVudCk6IE9ubHkgY3JlYXRlIG91ciBvd24gQ2FjaGVkUmVzb3VyY2VMb2FkZXIKKyAgICAg
ICAgICAgIGlmIHdlIHdlcmUgZ2l2ZW4gYSBudWxsIGZyYW1lLgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2FjaGVk
UmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcDogVGhyb3VnaG91dCwgdXNlIG91ciBtX2NhY2hlZFJlc291cmNlTG9hZGVyIGluc3Rl
YWQKKyAgICAgICAgICAgIG9mIHRoZSBEb2N1bWVudCdzIHBvaW50ZXIuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6RG9jdW1lbnRMb2FkZXIpOiBDcmVhdGUgYSBDYWNoZWRSZXNv
dXJjZUxvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjp+RG9jdW1lbnRM
b2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZ0luQVBJ
U2Vuc2UpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnN1YnJlc291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpnZXRTdWJyZXNvdXJjZXMpOgorICAg
ICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXI6OmNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKERvY3VtZW50TG9hZGVy
KToKKyAgICAgICAgKiBsb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwOiBSZW1vdmUgbV9kb2N1
bWVudCwgc2luY2UgaXQgb25seSBleGlzdGVkIHRvIGtlZXAgYWxpdmUgYW5kIGFjY2VzcyB0aGUg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuCisgICAgICAgICAgICBJdCBjYW4gbm93IGJlIGFjY2Vzc2Vk
IGZyb20gbV9kb2N1bWVudExvYWRlci4KKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9h
ZGVyOjpTdWJyZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxv
YWRlcjo6flN1YnJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VM
b2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5oOgorICAgICAgICAoU3VicmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6IEhhbmRsZSB0aGUgcG9zc2liaWxpdHkgb2Yg
YSBudWxsIERvY3VtZW50IGluIHNldmVyYWwgcGxhY2VzLgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjp+Q2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByaW50QWNjZXNzRGVuaWVkTWVz
c2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZERvbmUp
OgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y3Jl
YXRlKTogQWRkIGNyZWF0ZSgpLCBtYWtlIGNvbnN0cnVjdG9yIHByaXZhdGUuCisgICAgICAgIChD
YWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6ZG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnNldERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpj
bGVhckRvY3VtZW50TG9hZGVyKToKKwogMjAxMi0xMC0wNSAgVGltIEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBbY2ddIEdyYXBoaWNzQ29udGV4dENHIHNob3Vs
ZCBhc2sgQ0cgd2hldGhlciB0aGUgc2hhZG93IG9mZnNldCB3b3JrYXJvdW5kIGlzIHJlcXVpcmVk
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gMTMwNTY2KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNTQsNyArMTI1NCw3IEBA
CiAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9kb21XaW5kb3c7
CiAKLSAgICBPd25QdHI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2Fk
ZXI7CisgICAgUmVmUHRyPENhY2hlZFJlc291cmNlTG9hZGVyPiBtX2NhY2hlZFJlc291cmNlTG9h
ZGVyOwogICAgIFJlZlB0cjxEb2N1bWVudFBhcnNlcj4gbV9wYXJzZXI7CiAgICAgUmVmUHRyPENv
bnRleHRGZWF0dXJlcz4gbV9jb250ZXh0RmVhdHVyZXM7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAkocmV2aXNpb24gMTMwNTY2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI5LDcgKzUyOSwxMiBAQAogCiAgICAgbV9tYXJrZXJz
ID0gYWRvcHRQdHIobmV3IERvY3VtZW50TWFya2VyQ29udHJvbGxlcik7CiAKLSAgICBtX2NhY2hl
ZFJlc291cmNlTG9hZGVyID0gYWRvcHRQdHIobmV3IENhY2hlZFJlc291cmNlTG9hZGVyKHRoaXMp
KTsKKyAgICBpZiAobV9mcmFtZSkKKyAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlciA9IG1f
ZnJhbWUtPmxvYWRlcigpLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5jYWNoZWRSZXNvdXJjZUxv
YWRlcigpOworICAgIGlmICghbV9jYWNoZWRSZXNvdXJjZUxvYWRlcikKKyAgICAgICAgbV9jYWNo
ZWRSZXNvdXJjZUxvYWRlciA9IENhY2hlZFJlc291cmNlTG9hZGVyOjpjcmVhdGUoMCk7CisgICAg
bV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+c2V0RG9jdW1lbnQodGhpcyk7CisKICNpZiBFTkFCTEUo
TElOS19QUkVSRU5ERVIpCiAgICAgbV9wcmVyZW5kZXJlciA9IFByZXJlbmRlcmVyOjpjcmVhdGUo
dGhpcyk7CiAjZW5kaWYKQEAgLTY1MSw2ICs2NTYsMTEgQEAKICAgICAgICAgbV9tZWRpYVF1ZXJ5
TWF0Y2hlci0+ZG9jdW1lbnREZXN0cm95ZWQoKTsKIAogICAgIGNsZWFyU3R5bGVSZXNvbHZlcigp
OyAvLyBXZSBuZWVkIHRvIGRlc3RvcnkgQ1NTRm9udFNlbGVjdG9yIGJlZm9yZSBkZXN0cm95aW5n
IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXIuCisKKyAgICAvLyBJdCdzIHBvc3NpYmxlIGZvciBtdWx0
aXBsZSBEb2N1bWVudHMgdG8gZW5kIHVwIHJlZmVyZW5jaW5nIHRoZSBzYW1lIENhY2hlZFJlc291
cmNlTG9hZGVyIChlLmcuLCBTVkdJbWFnZXMKKyAgICAvLyBsb2FkIHRoZSBpbml0aWFsIGVtcHR5
IGRvY3VtZW50IGFuZCB0aGUgU1ZHRG9jdW1lbnQgd2l0aCB0aGUgc2FtZSBEb2N1bWVudExvYWRl
cikuCisgICAgaWYgKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPmRvY3VtZW50KCkgPT0gdGhpcykK
KyAgICAgICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlci0+c2V0RG9jdW1lbnQoMCk7CiAgICAgbV9j
YWNoZWRSZXNvdXJjZUxvYWRlci5jbGVhcigpOwogCiAgICAgLy8gV2UgbXVzdCBjYWxsIGNsZWFy
UmFyZURhdGEoKSBoZXJlIHNpbmNlIGEgRG9jdW1lbnQgY2xhc3MgaW5oZXJpdHMgVHJlZVNjb3Bl
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>