<?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>128117</bug_id>
          
          <creation_ts>2014-02-03 12:46:29 -0800</creation_ts>
          <short_desc>Manage MediaQuery and MediaQueryExp classes through std::unique_ptr instead of OwnPtr</short_desc>
          <delta_ts>2014-02-04 09:55:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>975971</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-03 12:46:29 -0800</bug_when>
    <thetext>Manage MediaQuery and MediaQueryExp classes through std::unique_ptr instead of OwnPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975973</commentid>
    <comment_count>1</comment_count>
      <attachid>223011</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-03 12:47:24 -0800</bug_when>
    <thetext>Created attachment 223011
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976069</commentid>
    <comment_count>2</comment_count>
      <attachid>223011</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-02-03 15:52:42 -0800</bug_when>
    <thetext>Comment on attachment 223011
Patch

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

&gt; Source/WebCore/css/CSSGrammar.y.in:522
&gt; -            $$ = MediaQueryExp::create(emptyString(), nullptr).leakPtr();
&gt; +            $$ = std::make_unique&lt;MediaQueryExp&gt;(emptyString(), nullptr).release();

Elsewhere in this file we just use new for this sort of thing. Not sure how we decide when to do make_unique/release vs. new.

&gt; Source/WebCore/css/CSSGrammar.y.in:543
&gt; +        $$ = new Vector&lt;std::unique_ptr&lt;MediaQueryExp&gt;&gt;;

Here’s an example where we are using new (see comment above).

&gt; Source/WebCore/css/MediaList.cpp:252
&gt; +    const Vector&lt;std::unique_ptr&lt;MediaQuery&gt;&gt;&amp; queries = m_mediaQueries-&gt;queryVector();

I suggest &quot;auto&amp;&quot; here instead of &quot;const Vector&lt;std::unique_ptr&lt;MediaQuery&gt;&gt;&amp;&quot;.

&gt; Source/WebCore/css/MediaList.cpp:321
&gt; +    const Vector&lt;std::unique_ptr&lt;MediaQuery&gt;&gt;&amp; mediaQueries = mediaQuerySet-&gt;queryVector();

I suggest &quot;auto&amp;&quot; here instead of &quot;const Vector&lt;std::unique_ptr&lt;MediaQuery&gt;&gt;&amp;&quot;.

&gt; Source/WebCore/css/MediaList.cpp:331
&gt; +            const Vector&lt;std::unique_ptr&lt;MediaQueryExp&gt;&gt;&amp; expressions = query-&gt;expressions();

I suggest &quot;auto&amp;&quot; here instead of &quot;const Vector&lt;std::unique_ptr&lt;MediaQueryExp&gt;&gt;&amp;&quot;.

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:137
&gt; +    const Vector&lt;std::unique_ptr&lt;MediaQuery&gt;&gt;&amp; queries = querySet-&gt;queryVector();

auto&amp; would be better here

&gt; Source/WebCore/css/MediaQueryEvaluator.cpp:150
&gt; +            const Vector&lt;std::unique_ptr&lt;MediaQueryExp&gt;&gt;&amp; expressions = query-&gt;expressions();

auto&amp; would be better here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976395</commentid>
    <comment_count>3</comment_count>
      <attachid>223011</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-04 09:41:52 -0800</bug_when>
    <thetext>Comment on attachment 223011
Patch

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

&gt;&gt; Source/WebCore/css/CSSGrammar.y.in:522
&gt;&gt; +            $$ = std::make_unique&lt;MediaQueryExp&gt;(emptyString(), nullptr).release();
&gt; 
&gt; Elsewhere in this file we just use new for this sort of thing. Not sure how we decide when to do make_unique/release vs. new.

I&apos;ll revert to using &apos;new&apos; until more rigid guidelines are established for such cases (and will adjust accordingly at that point, if necessary).

&gt;&gt; Source/WebCore/css/MediaList.cpp:252
&gt;&gt; +    const Vector&lt;std::unique_ptr&lt;MediaQuery&gt;&gt;&amp; queries = m_mediaQueries-&gt;queryVector();
&gt; 
&gt; I suggest &quot;auto&amp;&quot; here instead of &quot;const Vector&lt;std::unique_ptr&lt;MediaQuery&gt;&gt;&amp;&quot;.

OK, m_mediaQueries-&gt;queryVector() does note, to some degree, what type the method call returns.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976405</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-04 09:55:23 -0800</bug_when>
    <thetext>Committed r163385: &lt;http://trac.webkit.org/changeset/163385&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223011</attachid>
            <date>2014-02-03 12:47:24 -0800</date>
            <delta_ts>2014-02-04 09:41:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128117-20140203214723.patch</filename>
            <type>text/plain</type>
            <size>21442</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFlMGE1MDViY2JjOWJi
ZDlhMDVhZjgwMWVhZGExZjA5ZGJkMzg0ZS4uOWVjMDk3OGNiYjNmY2MxNDk3MzJmNzU1Mzk2Njg4
Y2ZhYTA4NTE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE0LTAyLTAzICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNYW5hZ2UgTWVkaWFR
dWVyeSBhbmQgTWVkaWFRdWVyeUV4cCBjbGFzc2VzIHRocm91Z2ggc3RkOjp1bmlxdWVfcHRyIGlu
c3RlYWQgb2YgT3duUHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjgxMTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSZXBsYWNlIHVzZXMgb2YgT3duUHRyIGZvciB0aGUgTWVkaWFRdWVyeSBhbmQgTWVk
aWFRdWVyeUV4cCBjbGFzc2VzIHdpdGggc3RkOjp1bmlxdWVfcHRyLgorCisgICAgICAgICogY3Nz
L0NTU0dyYW1tYXIueS5pbjoKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5KToKKyAgICAgICAgKiBjc3MvQ1NT
UGFyc2VyLmg6CisgICAgICAgICogY3NzL01lZGlhTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVF1ZXJ5U2V0OjpwYXJzZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5U2V0
OjphZGQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVNldDo6cmVtb3ZlKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OmFkZE1lZGlhUXVlcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFMaXN0OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydE1lZGlhUXVl
cnlXYXJuaW5nSWZOZWVkZWQpOgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuaDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUXVlcnlTZXQ6OnF1ZXJ5VmVjdG9yKToKKyAgICAgICAgKiBjc3MvTWVk
aWFRdWVyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpNZWRpYVF1ZXJ5KToK
KyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVy
eTo6ZXhwcmVzc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6Y29weSk6Cisg
ICAgICAgICogY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbCk6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlFeHAu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeUV4cDo6TWVkaWFRdWVyeUV4cCk6Cisg
ICAgICAgICogY3NzL01lZGlhUXVlcnlFeHAuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVl
cnlFeHA6OmNvcHkpOgorCiAyMDE0LTAyLTAzICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxl
LmNvbT4KIAogICAgICAgICBDVFRFOiBSZW5kZXJTVkdHcmFkaWVudFN0b3AgYWx3YXlzIGhhcyBh
IFNWR1N0b3BFbGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueS5pbiBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkuaW4KaW5kZXggZWIxMWJl
M2E4ZTU1MDRiYjM4OWJiMGJiNzU3ODUwYTEwYWRlYmJjYy4uOTNkZWI5MWY0OTIxNmJkZWI3ZWI1
YTc5NzRmZjM1YWU2NjdkNTI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCkBAIC0y
MTQsNyArMjE0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ1NTVG9rZW5BU3RyaW5nKGludCB5
eXR5cGUpCiAldHlwZSA8bWVkaWFRdWVyeUV4cD4gbWVkaWFfcXVlcnlfZXhwCiAlZGVzdHJ1Y3Rv
ciB7IGRlbGV0ZSAkJDsgfSBtZWRpYV9xdWVyeV9leHAKIAotJXVuaW9uIHsgVmVjdG9yPE93blB0
cjxNZWRpYVF1ZXJ5RXhwPj4qIG1lZGlhUXVlcnlFeHBMaXN0OyB9CisldW5pb24geyBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPE1lZGlhUXVlcnlFeHA+PiogbWVkaWFRdWVyeUV4cExpc3Q7IH0KICV0
eXBlIDxtZWRpYVF1ZXJ5RXhwTGlzdD4gbWVkaWFfcXVlcnlfZXhwX2xpc3QgbWF5YmVfYW5kX21l
ZGlhX3F1ZXJ5X2V4cF9saXN0CiAlZGVzdHJ1Y3RvciB7IGRlbGV0ZSAkJDsgfSBtZWRpYV9xdWVy
eV9leHBfbGlzdCBtYXliZV9hbmRfbWVkaWFfcXVlcnlfZXhwX2xpc3QKIApAQCAtMzM5LDcgKzMz
OSw3IEBAIHdlYmtpdF92YWx1ZToKICAgICB9CiA7CiAKLXdlYmtpdF9tZWRpYXF1ZXJ5OiBXRUJL
SVRfTUVESUFRVUVSWV9TWU0gV0hJVEVTUEFDRSBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeSAnfScg
eyBwYXJzZXItPm1fbWVkaWFRdWVyeSA9IGFkb3B0UHRyKCQ0KTsgfSA7Cit3ZWJraXRfbWVkaWFx
dWVyeTogV0VCS0lUX01FRElBUVVFUllfU1lNIFdISVRFU1BBQ0UgbWF5YmVfc3BhY2UgbWVkaWFf
cXVlcnkgJ30nIHsgcGFyc2VyLT5tX21lZGlhUXVlcnkgPSBzdGQ6Om1vdmUoc3RkOjp1bmlxdWVf
cHRyPE1lZGlhUXVlcnk+KCQ0KSk7IH0gOwogCiB3ZWJraXRfc2VsZWN0b3I6CiAgICAgV0VCS0lU
X1NFTEVDVE9SX1NZTSAneycgbWF5YmVfc3BhY2Ugc2VsZWN0b3JfbGlzdCAnfScgewpAQCAtNTE5
LDI4ICs1MTksMjggQEAgbWVkaWFfcXVlcnlfZXhwOgogICAgICAgICAvLyBDcmVhdGUgZW1wdHkg
bWVkaWEgcXVlcnkgZXhwcmVzc2lvbiBhbmQgY29udGludWUgcGFyc2luZyBtZWRpYSBxdWVyeS4K
ICAgICAgICAgT3duUHRyPENTU1BhcnNlclZhbHVlTGlzdD4gbWVkaWFWYWx1ZSA9IGFkb3B0UHRy
KCQ3KTsKICAgICAgICAgaWYgKCQxICE9IE1lZGlhUXVlcnk6Ok5vbmUpCi0gICAgICAgICAgICAk
JCA9IE1lZGlhUXVlcnlFeHA6OmNyZWF0ZShlbXB0eVN0cmluZygpLCBudWxscHRyKS5sZWFrUHRy
KCk7CisgICAgICAgICAgICAkJCA9IHN0ZDo6bWFrZV91bmlxdWU8TWVkaWFRdWVyeUV4cD4oZW1w
dHlTdHJpbmcoKSwgbnVsbHB0cikucmVsZWFzZSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAg
ICAgICQ1Lmxvd2VyKCk7Ci0gICAgICAgICAgICAkJCA9IE1lZGlhUXVlcnlFeHA6OmNyZWF0ZSgk
NSwgbWVkaWFWYWx1ZS5nZXQoKSkubGVha1B0cigpOworICAgICAgICAgICAgJCQgPSBzdGQ6Om1h
a2VfdW5pcXVlPE1lZGlhUXVlcnlFeHA+KCQ1LCBtZWRpYVZhbHVlLmdldCgpKS5yZWxlYXNlKCk7
CiAgICAgICAgIH0KICAgICB9CiAgICAgOwogCiBtZWRpYV9xdWVyeV9leHBfbGlzdDoKICAgICBt
ZWRpYV9xdWVyeV9leHAgewotICAgICAgICAkJCA9IG5ldyBWZWN0b3I8T3duUHRyPE1lZGlhUXVl
cnlFeHA+PjsKLSAgICAgICAgJCQtPmFwcGVuZChhZG9wdFB0cigkMSkpOworICAgICAgICAkJCA9
IG5ldyBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUXVlcnlFeHA+PjsKKyAgICAgICAgJCQt
PmFwcGVuZChzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFRdWVyeUV4cD4oJDEpKTsKICAgICB9CiAgICAg
fCBtZWRpYV9xdWVyeV9leHBfbGlzdCBtYXliZV9zcGFjZSBNRURJQV9BTkQgbWF5YmVfc3BhY2Ug
bWVkaWFfcXVlcnlfZXhwIHsKICAgICAgICAgJCQgPSAkMTsKLSAgICAgICAgJCQtPmFwcGVuZChh
ZG9wdFB0cigkNSkpOworICAgICAgICAkJC0+YXBwZW5kKHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVF1
ZXJ5RXhwPigkNSkpOwogICAgIH0KICAgICA7CiAKIG1heWJlX2FuZF9tZWRpYV9xdWVyeV9leHBf
bGlzdDoKICAgICAvKmVtcHR5Ki8gewotICAgICAgICAkJCA9IG5ldyBWZWN0b3I8T3duUHRyPE1l
ZGlhUXVlcnlFeHA+PjsKKyAgICAgICAgJCQgPSBuZXcgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVF1ZXJ5RXhwPj47CiAgICAgfQogICAgIHwgTUVESUFfQU5EIG1heWJlX3NwYWNlIG1lZGlh
X3F1ZXJ5X2V4cF9saXN0IHsKICAgICAgICAgJCQgPSAkMzsKQEAgLTU2MSwxMiArNTYxLDEyIEBA
IG1heWJlX21lZGlhX3Jlc3RyaWN0b3I6CiAKIG1lZGlhX3F1ZXJ5OgogICAgIG1lZGlhX3F1ZXJ5
X2V4cF9saXN0IHsKLSAgICAgICAgJCQgPSBuZXcgTWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpOb25l
LCAiYWxsIiwgYWRvcHRQdHIoJDEpKTsKKyAgICAgICAgJCQgPSBuZXcgTWVkaWFRdWVyeShNZWRp
YVF1ZXJ5OjpOb25lLCAiYWxsIiwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8TWVkaWFRdWVyeUV4cD4+PigkMSkpOwogICAgIH0KICAgICB8CiAgICAgbWF5YmVfbWVkaWFf
cmVzdHJpY3RvciBtYXliZV9zcGFjZSBJREVOVCBtYXliZV9zcGFjZSBtYXliZV9hbmRfbWVkaWFf
cXVlcnlfZXhwX2xpc3QgewogICAgICAgICAkMy5sb3dlcigpOwotICAgICAgICAkJCA9IG5ldyBN
ZWRpYVF1ZXJ5KCQxLCAkMywgYWRvcHRQdHIoJDUpKTsKKyAgICAgICAgJCQgPSBuZXcgTWVkaWFR
dWVyeSgkMSwgJDMsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlh
UXVlcnlFeHA+Pj4oJDUpKTsKICAgICB9CiAgICAgOwogCkBAIC01NzUsMTQgKzU3NSwxNCBAQCBt
YXliZV9tZWRpYV9saXN0OiAvKiBlbXB0eSAqLyB7ICQkID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRl
KCkubGVha1JlZigpOyB9IHwgbWVkaQogbWVkaWFfbGlzdDoKICAgICBtZWRpYV9xdWVyeSB7CiAg
ICAgICAgICQkID0gTWVkaWFRdWVyeVNldDo6Y3JlYXRlKCkubGVha1JlZigpOwotICAgICAgICAk
JC0+YWRkTWVkaWFRdWVyeShhZG9wdFB0cigkMSkpOworICAgICAgICAkJC0+YWRkTWVkaWFRdWVy
eShzdGQ6OnVuaXF1ZV9wdHI8TWVkaWFRdWVyeT4oJDEpKTsKICAgICAgICAgcGFyc2VyLT51cGRh
dGVMYXN0TWVkaWFMaW5lKCQkKTsKICAgICB9CiAgICAgfCBtZWRpYV9saXN0ICcsJyBtYXliZV9z
cGFjZSBtZWRpYV9xdWVyeSB7CiAgICAgICAgICQkID0gJDE7Ci0gICAgICAgIE93blB0cjxNZWRp
YVF1ZXJ5PiBtZWRpYVF1ZXJ5ID0gYWRvcHRQdHIoJDQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TWVkaWFRdWVyeT4gbWVkaWFRdWVyeSgkNCk7CiAgICAgICAgIGlmICgkJCkgewotICAgICAg
ICAgICAgJCQtPmFkZE1lZGlhUXVlcnkobWVkaWFRdWVyeS5yZWxlYXNlKCkpOworICAgICAgICAg
ICAgJCQtPmFkZE1lZGlhUXVlcnkoc3RkOjptb3ZlKG1lZGlhUXVlcnkpKTsKICAgICAgICAgICAg
IHBhcnNlci0+dXBkYXRlTGFzdE1lZGlhTGluZSgkJCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDgzN2QwYTJlMGE0MDgwNzVlYWI1ZDdjZDgyYzJiNjJl
OGU5MWJhNGIuLjgwMzdiMTZjOWY1MjI3MWM5YjUwNTYyM2Q0MmZhYmRjMDZiMTU5MWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xNDUzLDcgKzE0NTMsNyBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VEZWNsYXJhdGlvbihNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBkZWNsYXJhdGlvbiwg
Y29uc3QgU3RyaQogICAgIHJldHVybiBvazsKIH0KIAotUGFzc093blB0cjxNZWRpYVF1ZXJ5PiBD
U1NQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeShjb25zdCBTdHJpbmcmIHN0cmluZykKK3N0ZDo6dW5p
cXVlX3B0cjxNZWRpYVF1ZXJ5PiBDU1NQYXJzZXI6OnBhcnNlTWVkaWFRdWVyeShjb25zdCBTdHJp
bmcmIHN0cmluZykKIHsKICAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CkBAIC0xNDY1LDcgKzE0NjUsNyBAQCBQYXNzT3duUHRyPE1lZGlhUXVlcnk+IENT
U1BhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHNldHVw
UGFyc2VyKCJALXdlYmtpdC1tZWRpYXF1ZXJ5ICIsIHN0cmluZywgIn0gIik7CiAgICAgY3NzeXlw
YXJzZSh0aGlzKTsKIAotICAgIHJldHVybiBtX21lZGlhUXVlcnkucmVsZWFzZSgpOworICAgIHJl
dHVybiBzdGQ6Om1vdmUobV9tZWRpYVF1ZXJ5KTsKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIGZp
bHRlclByb3BlcnRpZXMoYm9vbCBpbXBvcnRhbnQsIGNvbnN0IENTU1BhcnNlcjo6UGFyc2VkUHJv
cGVydHlWZWN0b3ImIGlucHV0LCBWZWN0b3I8Q1NTUHJvcGVydHksIDI1Nj4mIG91dHB1dCwgc2l6
ZV90JiB1bnVzZWRFbnRyaWVzLCBzdGQ6OmJpdHNldDxudW1DU1NQcm9wZXJ0aWVzPiYgc2VlblBy
b3BlcnRpZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggYzdmZDI2NGUwMjFjNjY3MjE4ODU1
YjBjYmU2ODdiYzQ2NmI2MTAwNS4uMDdkYTIyOWYxOTRmNmEwNjE5OWY3MjMyY2UwMjYyMDMyZmJh
MTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtOTQsNyArOTQsNyBAQCBwdWJsaWM6CiAg
ICAgUGFzc1JlZlB0cjxDU1NQcmltaXRpdmVWYWx1ZT4gcGFyc2VWYWxpZFByaW1pdGl2ZShDU1NW
YWx1ZUlEIGlkZW50LCBDU1NQYXJzZXJWYWx1ZSopOwogICAgIGJvb2wgcGFyc2VEZWNsYXJhdGlv
bihNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiwgY29uc3QgU3RyaW5nJiwgUGFzc1JlZlB0cjxDU1NS
dWxlU291cmNlRGF0YT4sIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpOwog
ICAgIHN0YXRpYyBQYXNzUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gcGFyc2VJbmxpbmVT
dHlsZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqKTsKLSAgICBQYXNzT3duUHRy
PE1lZGlhUXVlcnk+IHBhcnNlTWVkaWFRdWVyeShjb25zdCBTdHJpbmcmKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8TWVkaWFRdWVyeT4gcGFyc2VNZWRpYVF1ZXJ5KGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgdm9pZCBhZGRQcm9wZXJ0eVdpdGhQcmVmaXhpbmdWYXJpYW50KENTU1Byb3BlcnR5SUQsIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+LCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNl
KTsKICAgICB2b2lkIGFkZFByb3BlcnR5KENTU1Byb3BlcnR5SUQsIFBhc3NSZWZQdHI8Q1NTVmFs
dWU+LCBib29sIGltcG9ydGFudCwgYm9vbCBpbXBsaWNpdCA9IGZhbHNlKTsKQEAgLTM0MCw3ICsz
NDAsNyBAQCBwdWJsaWM6CiAgICAgU3R5bGVTaGVldENvbnRlbnRzKiBtX3N0eWxlU2hlZXQ7CiAg
ICAgUmVmUHRyPFN0eWxlUnVsZUJhc2U+IG1fcnVsZTsKICAgICBSZWZQdHI8U3R5bGVLZXlmcmFt
ZT4gbV9rZXlmcmFtZTsKLSAgICBPd25QdHI8TWVkaWFRdWVyeT4gbV9tZWRpYVF1ZXJ5OworICAg
IHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVF1ZXJ5PiBtX21lZGlhUXVlcnk7CiAgICAgT3duUHRyPENT
U1BhcnNlclZhbHVlTGlzdD4gbV92YWx1ZUxpc3Q7CiAjaWYgRU5BQkxFKENTUzNfQ09ORElUSU9O
QUxfUlVMRVMpCiAgICAgYm9vbCBtX3N1cHBvcnRzQ29uZGl0aW9uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFM
aXN0LmNwcAppbmRleCAyMGY5MjhkNGY0YTM5YjI3ZDlmMDY1MzNiYjZjYzUxMjRlZDU0ZGYzLi40
YjNiNmU0MGE5MmRjZjlhNDFiYzViNGJjNjg5MDNjYTA3ZDAxNGRhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFMaXN0LmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIGJvb2wgTWVkaWFRdWVyeVNldDo6cGFyc2Uo
Y29uc3QgU3RyaW5nJiBtZWRpYVN0cmluZykKIHsKICAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0
cmljdE1vZGUpOwogICAgIAotICAgIFZlY3RvcjxPd25QdHI8TWVkaWFRdWVyeT4+IHJlc3VsdDsK
KyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUXVlcnk+PiByZXN1bHQ7CiAgICAgVmVj
dG9yPFN0cmluZz4gbGlzdDsKICAgICBtZWRpYVN0cmluZy5zcGxpdCgnLCcsIGxpc3QpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsaXN0LnNpemUoKTsgKytpKSB7CkBAIC0xMzUsMTYg
KzEzNSwxNiBAQCBib29sIE1lZGlhUXVlcnlTZXQ6OnBhcnNlKGNvbnN0IFN0cmluZyYgbWVkaWFT
dHJpbmcpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KLSAgICAgICAgT3duUHRyPE1lZGlhUXVlcnk+IG1lZGlhUXVlcnkgPSBw
YXJzZXIucGFyc2VNZWRpYVF1ZXJ5KG1lZGl1bSk7CisgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxN
ZWRpYVF1ZXJ5PiBtZWRpYVF1ZXJ5ID0gcGFyc2VyLnBhcnNlTWVkaWFRdWVyeShtZWRpdW0pOwog
ICAgICAgICBpZiAoIW1lZGlhUXVlcnkpIHsKICAgICAgICAgICAgIGlmICghbV9mYWxsYmFja1Rv
RGVzY3JpcHRvcikKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBT
dHJpbmcgbWVkaWFEZXNjcmlwdG9yID0gcGFyc2VNZWRpYURlc2NyaXB0b3IobWVkaXVtKTsKICAg
ICAgICAgICAgIGlmIChtZWRpYURlc2NyaXB0b3IuaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgICAgICBtZWRpYVF1ZXJ5ID0gYWRvcHRQdHIobmV3IE1lZGlhUXVl
cnkoTWVkaWFRdWVyeTo6Tm9uZSwgbWVkaWFEZXNjcmlwdG9yLCBudWxscHRyKSk7CisgICAgICAg
ICAgICBtZWRpYVF1ZXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVF1ZXJ5PihNZWRpYVF1ZXJ5
OjpOb25lLCBtZWRpYURlc2NyaXB0b3IsIG51bGxwdHIpOwogICAgICAgICB9Ci0gICAgICAgIHJl
c3VsdC5hcHBlbmQobWVkaWFRdWVyeS5yZWxlYXNlKCkpOworICAgICAgICByZXN1bHQuYXBwZW5k
KHN0ZDo6bW92ZShtZWRpYVF1ZXJ5KSk7CiAgICAgfQogICAgIC8vICIsLCwsIiBmYWxscyBzdHJh
aWdodCB0aHJvdWdoLCBidXQgaXMgbm90IHZhbGlkIHVubGVzcyBmYWxsYmFjawogICAgIGlmICgh
bV9mYWxsYmFja1RvRGVzY3JpcHRvciAmJiBsaXN0LmlzRW1wdHkoKSkgewpAQCAtMTUyLDcgKzE1
Miw3IEBAIGJvb2wgTWVkaWFRdWVyeVNldDo6cGFyc2UoY29uc3QgU3RyaW5nJiBtZWRpYVN0cmlu
ZykKICAgICAgICAgaWYgKCFzdHJpcHBlZE1lZGlhU3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0gICAgbV9xdWVyaWVzLnN3YXAocmVzdWx0KTsKKyAg
ICBtX3F1ZXJpZXMgPSBzdGQ6Om1vdmUocmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtMTYwLDE2ICsxNjAsMTYgQEAgYm9vbCBNZWRpYVF1ZXJ5U2V0OjphZGQoY29uc3QgU3RyaW5n
JiBxdWVyeVN0cmluZykKIHsKICAgICBDU1NQYXJzZXIgcGFyc2VyKENTU1N0cmljdE1vZGUpOwog
Ci0gICAgT3duUHRyPE1lZGlhUXVlcnk+IHBhcnNlZFF1ZXJ5ID0gcGFyc2VyLnBhcnNlTWVkaWFR
dWVyeShxdWVyeVN0cmluZyk7CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUXVlcnk+IHBhcnNl
ZFF1ZXJ5ID0gcGFyc2VyLnBhcnNlTWVkaWFRdWVyeShxdWVyeVN0cmluZyk7CiAgICAgaWYgKCFw
YXJzZWRRdWVyeSAmJiBtX2ZhbGxiYWNrVG9EZXNjcmlwdG9yKSB7CiAgICAgICAgIFN0cmluZyBt
ZWRpdW0gPSBwYXJzZU1lZGlhRGVzY3JpcHRvcihxdWVyeVN0cmluZyk7CiAgICAgICAgIGlmICgh
bWVkaXVtLmlzTnVsbCgpKQotICAgICAgICAgICAgcGFyc2VkUXVlcnkgPSBhZG9wdFB0cihuZXcg
TWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpOb25lLCBtZWRpdW0sIG51bGxwdHIpKTsKKyAgICAgICAg
ICAgIHBhcnNlZFF1ZXJ5ID0gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVF1ZXJ5PihNZWRpYVF1ZXJ5
OjpOb25lLCBtZWRpdW0sIG51bGxwdHIpOwogICAgIH0KICAgICBpZiAoIXBhcnNlZFF1ZXJ5KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3F1ZXJpZXMuYXBwZW5kKHBhcnNlZFF1ZXJ5
LnJlbGVhc2UoKSk7CisgICAgbV9xdWVyaWVzLmFwcGVuZChzdGQ6Om1vdmUocGFyc2VkUXVlcnkp
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMTc3LDExICsxNzcsMTEgQEAgYm9vbCBNZWRp
YVF1ZXJ5U2V0OjpyZW1vdmUoY29uc3QgU3RyaW5nJiBxdWVyeVN0cmluZ1RvUmVtb3ZlKQogewog
ICAgIENTU1BhcnNlciBwYXJzZXIoQ1NTU3RyaWN0TW9kZSk7CiAKLSAgICBPd25QdHI8TWVkaWFR
dWVyeT4gcGFyc2VkUXVlcnkgPSBwYXJzZXIucGFyc2VNZWRpYVF1ZXJ5KHF1ZXJ5U3RyaW5nVG9S
ZW1vdmUpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVF1ZXJ5PiBwYXJzZWRRdWVyeSA9IHBh
cnNlci5wYXJzZU1lZGlhUXVlcnkocXVlcnlTdHJpbmdUb1JlbW92ZSk7CiAgICAgaWYgKCFwYXJz
ZWRRdWVyeSAmJiBtX2ZhbGxiYWNrVG9EZXNjcmlwdG9yKSB7CiAgICAgICAgIFN0cmluZyBtZWRp
dW0gPSBwYXJzZU1lZGlhRGVzY3JpcHRvcihxdWVyeVN0cmluZ1RvUmVtb3ZlKTsKICAgICAgICAg
aWYgKCFtZWRpdW0uaXNOdWxsKCkpCi0gICAgICAgICAgICBwYXJzZWRRdWVyeSA9IGFkb3B0UHRy
KG5ldyBNZWRpYVF1ZXJ5KE1lZGlhUXVlcnk6Ok5vbmUsIG1lZGl1bSwgbnVsbHB0cikpOworICAg
ICAgICAgICAgcGFyc2VkUXVlcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUXVlcnk+KE1lZGlh
UXVlcnk6Ok5vbmUsIG1lZGl1bSwgbnVsbHB0cik7CiAgICAgfQogICAgIGlmICghcGFyc2VkUXVl
cnkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE5Niw5ICsxOTYsOSBAQCBib29sIE1lZGlh
UXVlcnlTZXQ6OnJlbW92ZShjb25zdCBTdHJpbmcmIHF1ZXJ5U3RyaW5nVG9SZW1vdmUpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1lZGlhUXVlcnlTZXQ6OmFkZE1lZGlhUXVlcnkoUGFz
c093blB0cjxNZWRpYVF1ZXJ5PiBtZWRpYVF1ZXJ5KQordm9pZCBNZWRpYVF1ZXJ5U2V0OjphZGRN
ZWRpYVF1ZXJ5KHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVF1ZXJ5PiBtZWRpYVF1ZXJ5KQogewotICAg
IG1fcXVlcmllcy5hcHBlbmQobWVkaWFRdWVyeSk7CisgICAgbV9xdWVyaWVzLmFwcGVuZChzdGQ6
Om1vdmUobWVkaWFRdWVyeSkpOwogfQogCiBTdHJpbmcgTWVkaWFRdWVyeVNldDo6bWVkaWFUZXh0
KCkgY29uc3QKQEAgLTI0OSw3ICsyNDksNyBAQCB2b2lkIE1lZGlhTGlzdDo6c2V0TWVkaWFUZXh0
KGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiBTdHJpbmcgTWVkaWFM
aXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewotICAgIGNvbnN0IFZlY3RvcjxPd25Q
dHI8TWVkaWFRdWVyeT4+JiBxdWVyaWVzID0gbV9tZWRpYVF1ZXJpZXMtPnF1ZXJ5VmVjdG9yKCk7
CisgICAgY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVF1ZXJ5Pj4mIHF1ZXJpZXMg
PSBtX21lZGlhUXVlcmllcy0+cXVlcnlWZWN0b3IoKTsKICAgICBpZiAoaW5kZXggPCBxdWVyaWVz
LnNpemUoKSkKICAgICAgICAgcmV0dXJuIHF1ZXJpZXNbaW5kZXhdLT5jc3NUZXh0KCk7CiAgICAg
cmV0dXJuIFN0cmluZygpOwpAQCAtMzE4LDcgKzMxOCw3IEBAIHZvaWQgcmVwb3J0TWVkaWFRdWVy
eVdhcm5pbmdJZk5lZWRlZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IE1lZGlhUXVlcnlTZXQq
IG1lCiAgICAgaWYgKCFtZWRpYVF1ZXJ5U2V0IHx8ICFkb2N1bWVudCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgY29uc3QgVmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5Pj4mIG1lZGlhUXVlcmllcyA9
IG1lZGlhUXVlcnlTZXQtPnF1ZXJ5VmVjdG9yKCk7CisgICAgY29uc3QgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVF1ZXJ5Pj4mIG1lZGlhUXVlcmllcyA9IG1lZGlhUXVlcnlTZXQtPnF1ZXJ5
VmVjdG9yKCk7CiAgICAgY29uc3Qgc2l6ZV90IHF1ZXJ5Q291bnQgPSBtZWRpYVF1ZXJpZXMuc2l6
ZSgpOwogCiAgICAgaWYgKCFxdWVyeUNvdW50KQpAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgcmVw
b3J0TWVkaWFRdWVyeVdhcm5pbmdJZk5lZWRlZChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IE1l
ZGlhUXVlcnlTZXQqIG1lCiAgICAgICAgIGNvbnN0IE1lZGlhUXVlcnkqIHF1ZXJ5ID0gbWVkaWFR
dWVyaWVzW2ldLmdldCgpOwogICAgICAgICBTdHJpbmcgbWVkaWFUeXBlID0gcXVlcnktPm1lZGlh
VHlwZSgpOwogICAgICAgICBpZiAoIXF1ZXJ5LT5pZ25vcmVkKCkgJiYgIWVxdWFsSWdub3JpbmdD
YXNlKG1lZGlhVHlwZSwgInByaW50IikpIHsKLSAgICAgICAgICAgIGNvbnN0IFZlY3RvcjxPd25Q
dHI8TWVkaWFRdWVyeUV4cD4+JiBleHByZXNzaW9ucyA9IHF1ZXJ5LT5leHByZXNzaW9ucygpOwor
ICAgICAgICAgICAgY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVF1ZXJ5RXhwPj4m
IGV4cHJlc3Npb25zID0gcXVlcnktPmV4cHJlc3Npb25zKCk7CiAgICAgICAgICAgICBmb3IgKHNp
emVfdCBqID0gMDsgaiA8IGV4cHJlc3Npb25zLnNpemUoKTsgKytqKSB7CiAgICAgICAgICAgICAg
ICAgY29uc3QgTWVkaWFRdWVyeUV4cCogZXhwID0gZXhwcmVzc2lvbnMuYXQoaikuZ2V0KCk7CiAg
ICAgICAgICAgICAgICAgaWYgKGV4cC0+bWVkaWFGZWF0dXJlKCkgPT0gTWVkaWFGZWF0dXJlTmFt
ZXM6OnJlc29sdXRpb25NZWRpYUZlYXR1cmUgfHwgZXhwLT5tZWRpYUZlYXR1cmUoKSA9PSBNZWRp
YUZlYXR1cmVOYW1lczo6bWF4X3Jlc29sdXRpb25NZWRpYUZlYXR1cmUgfHwgZXhwLT5tZWRpYUZl
YXR1cmUoKSA9PSBNZWRpYUZlYXR1cmVOYW1lczo6bWluX3Jlc29sdXRpb25NZWRpYUZlYXR1cmUp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9NZWRpYUxpc3QuaAppbmRleCA3NDk3NmRmNDhmYWFmODUzYjI2MTMxOTNjNzA3
YTIyNTM1YmE4YzgwLi4xYmM3ZmIwZWYxMGFjZDUyNTdhZjVkODYzZDlhZGNhZDRkMGYyNjExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhTGlzdC5oCkBAIC0yMiw2ICsyMiw3IEBACiAjZGVmaW5lIE1lZGlhTGlz
dF9oCiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTYsOSArNTcsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBhZGQoY29uc3QgU3RyaW5nJik7CiAgICAgYm9vbCByZW1vdmUoY29uc3QgU3RyaW5nJik7CiAK
LSAgICB2b2lkIGFkZE1lZGlhUXVlcnkoUGFzc093blB0cjxNZWRpYVF1ZXJ5Pik7CisgICAgdm9p
ZCBhZGRNZWRpYVF1ZXJ5KHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVF1ZXJ5Pik7CiAKLSAgICBjb25z
dCBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnk+PiYgcXVlcnlWZWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX3F1ZXJpZXM7IH0KKyAgICBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUXVl
cnk+PiYgcXVlcnlWZWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3F1ZXJpZXM7IH0KICAgICAKICAg
ICBpbnQgbGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CiAgICAgdm9pZCBz
ZXRMYXN0TGluZShpbnQgbGFzdExpbmUpIHsgbV9sYXN0TGluZSA9IGxhc3RMaW5lOyB9CkBAIC03
NCw3ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdW5zaWduZWQgbV9mYWxsYmFja1RvRGVz
Y3JpcHRvciA6IDE7IC8vIHRydWUgaWYgZmFpbGVkIG1lZGlhIHF1ZXJ5IHBhcnNpbmcgc2hvdWxk
IGZhbGxiYWNrIHRvIG1lZGlhIGRlc2NyaXB0aW9uIHBhcnNpbmcuCiAgICAgc2lnbmVkIG1fbGFz
dExpbmUgOiAzMTsKLSAgICBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnk+PiBtX3F1ZXJpZXM7Cisg
ICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVF1ZXJ5Pj4gbV9xdWVyaWVzOwogfTsKIAog
Y2xhc3MgTWVkaWFMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8TWVkaWFMaXN0PiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFRdWVyeS5jcHAKaW5kZXggMzkzMDRkOGY4MzhlOGU5MDhlZDA4NzM3YjgyOGY2ZTdl
YzcyZDQ0ZS4uYWQ1OGJmY2RjNjM2NzE1YzIyMmZjZmFiZGU2OGM0MTRjZTQ5ZTVkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5LmNwcApAQCAtNzIsMTggKzcyLDE4IEBAIFN0cmluZyBNZWRpYVF1
ZXJ5OjpzZXJpYWxpemUoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKIH0K
IAotTWVkaWFRdWVyeTo6TWVkaWFRdWVyeShSZXN0cmljdG9yIHIsIGNvbnN0IFN0cmluZyYgbWVk
aWFUeXBlLCBQYXNzT3duUHRyPEV4cHJlc3Npb25WZWN0b3I+IGV4cHJzKQorTWVkaWFRdWVyeTo6
TWVkaWFRdWVyeShSZXN0cmljdG9yIHIsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCBzdGQ6OnVu
aXF1ZV9wdHI8RXhwcmVzc2lvblZlY3Rvcj4gZXhwcnMpCiAgICAgOiBtX3Jlc3RyaWN0b3IocikK
ICAgICAsIG1fbWVkaWFUeXBlKG1lZGlhVHlwZS5sb3dlcigpKQotICAgICwgbV9leHByZXNzaW9u
cyhleHBycykKKyAgICAsIG1fZXhwcmVzc2lvbnMoc3RkOjptb3ZlKGV4cHJzKSkKICAgICAsIG1f
aWdub3JlZChmYWxzZSkKIHsKICAgICBpZiAoIW1fZXhwcmVzc2lvbnMpIHsKLSAgICAgICAgbV9l
eHByZXNzaW9ucyA9IGFkb3B0UHRyKG5ldyBFeHByZXNzaW9uVmVjdG9yKTsKKyAgICAgICAgbV9l
eHByZXNzaW9ucyA9IHN0ZDo6bWFrZV91bmlxdWU8RXhwcmVzc2lvblZlY3Rvcj4oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIHN0ZDo6c29ydChtX2V4cHJlc3Npb25zLT5iZWdpbigp
LCBtX2V4cHJlc3Npb25zLT5lbmQoKSwgW10oY29uc3QgT3duUHRyPE1lZGlhUXVlcnlFeHA+JiBh
LCBjb25zdCBPd25QdHI8TWVkaWFRdWVyeUV4cD4mIGIpIHsKKyAgICBzdGQ6OnNvcnQobV9leHBy
ZXNzaW9ucy0+YmVnaW4oKSwgbV9leHByZXNzaW9ucy0+ZW5kKCksIFtdKGNvbnN0IHN0ZDo6dW5p
cXVlX3B0cjxNZWRpYVF1ZXJ5RXhwPiYgYSwgY29uc3Qgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUXVl
cnlFeHA+JiBiKSB7CiAgICAgICAgIHJldHVybiBjb2RlUG9pbnRDb21wYXJlKGEtPnNlcmlhbGl6
ZSgpLCBiLT5zZXJpYWxpemUoKSkgPCAwOwogICAgIH0pOwogCkBAIC0xMDUsMTIgKzEwNSwxMiBA
QCBNZWRpYVF1ZXJ5OjpNZWRpYVF1ZXJ5KFJlc3RyaWN0b3IgciwgY29uc3QgU3RyaW5nJiBtZWRp
YVR5cGUsIFBhc3NPd25QdHI8RXhwcmVzcwogTWVkaWFRdWVyeTo6TWVkaWFRdWVyeShjb25zdCBN
ZWRpYVF1ZXJ5JiBvKQogICAgIDogbV9yZXN0cmljdG9yKG8ubV9yZXN0cmljdG9yKQogICAgICwg
bV9tZWRpYVR5cGUoby5tX21lZGlhVHlwZSkKLSAgICAsIG1fZXhwcmVzc2lvbnMoYWRvcHRQdHIo
bmV3IEV4cHJlc3Npb25WZWN0b3Ioby5tX2V4cHJlc3Npb25zLT5zaXplKCkpKSkKKyAgICAsIG1f
ZXhwcmVzc2lvbnMoc3RkOjptYWtlX3VuaXF1ZTxFeHByZXNzaW9uVmVjdG9yPihvLm1fZXhwcmVz
c2lvbnMtPnNpemUoKSkpCiAgICAgLCBtX2lnbm9yZWQoby5tX2lnbm9yZWQpCiAgICAgLCBtX3Nl
cmlhbGl6YXRpb25DYWNoZShvLm1fc2VyaWFsaXphdGlvbkNhY2hlKQogewogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2V4cHJlc3Npb25zLT5zaXplKCk7ICsraSkKLSAgICAgICAgKCpt
X2V4cHJlc3Npb25zKVtpXSA9IG8ubV9leHByZXNzaW9ucy0+YXQoaSktPmNvcHkoKTsKKyAgICAg
ICAgKCptX2V4cHJlc3Npb25zKVtpXSA9IHN0ZDo6bW92ZShvLm1fZXhwcmVzc2lvbnMtPmF0KGkp
LT5jb3B5KCkpOwogfQogCiBNZWRpYVF1ZXJ5Ojp+TWVkaWFRdWVyeSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlh
UXVlcnkuaAppbmRleCBjZWE3ZDIwMDc2NGJkZjUyZTc0Y2NjNWY5OTA0MDJlM2RiMzNhZDdhLi45
N2ZhNzQyOGUzMzM1NzcwZmMyMWRjNjk2NTliOWYxMDNiOWE1ZDE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5LmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZm5kZWYgTWVkaWFRdWVyeV9oCiAjZGVmaW5l
IE1lZGlhUXVlcnlfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxt
ZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0hhc2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTQ0LDI2ICs0NCwy
NSBAQCBwdWJsaWM6CiAgICAgICAgIE9ubHksIE5vdCwgTm9uZQogICAgIH07CiAKLSAgICB0eXBl
ZGVmIFZlY3RvcjxPd25QdHI8TWVkaWFRdWVyeUV4cD4+IEV4cHJlc3Npb25WZWN0b3I7CisgICAg
dHlwZWRlZiBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUXVlcnlFeHA+PiBFeHByZXNzaW9u
VmVjdG9yOwogCi0gICAgTWVkaWFRdWVyeShSZXN0cmljdG9yLCBjb25zdCBTdHJpbmcmIG1lZGlh
VHlwZSwgUGFzc093blB0cjxWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+Pj4gZXhwcnMpOwor
ICAgIE1lZGlhUXVlcnkoUmVzdHJpY3RvciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUXVlcnlFeHA+Pj4gZXhwcnMp
OworICAgIE1lZGlhUXVlcnkoY29uc3QgTWVkaWFRdWVyeSYpOwogICAgIH5NZWRpYVF1ZXJ5KCk7
CiAKICAgICBSZXN0cmljdG9yIHJlc3RyaWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0
b3I7IH0KLSAgICBjb25zdCBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+PiYgZXhwcmVzc2lv
bnMoKSBjb25zdCB7IHJldHVybiAqbV9leHByZXNzaW9uczsgfQorICAgIGNvbnN0IFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8TWVkaWFRdWVyeUV4cD4+JiBleHByZXNzaW9ucygpIGNvbnN0IHsgcmV0
dXJuICptX2V4cHJlc3Npb25zOyB9CiAgICAgU3RyaW5nIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbWVkaWFUeXBlOyB9CiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhUXVlcnkm
IG90aGVyKSBjb25zdDsKICAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OwogICAgIGJvb2wgaWdu
b3JlZCgpIGNvbnN0IHsgcmV0dXJuIG1faWdub3JlZDsgfQogCi0gICAgUGFzc093blB0cjxNZWRp
YVF1ZXJ5PiBjb3B5KCkgY29uc3QgeyByZXR1cm4gYWRvcHRQdHIobmV3IE1lZGlhUXVlcnkoKnRo
aXMpKTsgfQorICAgIHN0ZDo6dW5pcXVlX3B0cjxNZWRpYVF1ZXJ5PiBjb3B5KCkgY29uc3QgeyBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxNZWRpYVF1ZXJ5PigqdGhpcyk7IH0KIAogIHByaXZhdGU6
Ci0gICAgTWVkaWFRdWVyeShjb25zdCBNZWRpYVF1ZXJ5Jik7Ci0KICAgICBSZXN0cmljdG9yIG1f
cmVzdHJpY3RvcjsKICAgICBTdHJpbmcgbV9tZWRpYVR5cGU7Ci0gICAgT3duUHRyPEV4cHJlc3Np
b25WZWN0b3I+IG1fZXhwcmVzc2lvbnM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEV4cHJlc3Npb25W
ZWN0b3I+IG1fZXhwcmVzc2lvbnM7CiAgICAgYm9vbCBtX2lnbm9yZWQ7CiAgICAgU3RyaW5nIG1f
c2VyaWFsaXphdGlvbkNhY2hlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeUV2YWx1YXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAKaW5kZXggZDM5NTYxNTVlNGQ3ZWQyZTNkNmRlZWM0ZDZjZTQ5NGFiNmMwNWZlYi4u
M2NlZjQ2NTA0NTljYTQ5MDM5MTc3MjUwNmE4NzViOWRkMTA3ZWNmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIGJvb2wg
TWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChjb25zdCBNZWRpYVF1ZXJ5U2V0KiBxdWVyeVNldCwg
U3R5bGVSZXNvbHZlciogc3R5CiAgICAgaWYgKCFxdWVyeVNldCkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAKLSAgICBjb25zdCBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnk+PiYgcXVlcmllcyA9IHF1
ZXJ5U2V0LT5xdWVyeVZlY3RvcigpOworICAgIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
TWVkaWFRdWVyeT4+JiBxdWVyaWVzID0gcXVlcnlTZXQtPnF1ZXJ5VmVjdG9yKCk7CiAgICAgaWYg
KCFxdWVyaWVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7IC8vIGVtcHR5IHF1ZXJ5IGxp
c3QgZXZhbHVhdGVzIHRvIHRydWUKIApAQCAtMTQ3LDcgKzE0Nyw3IEBAIGJvb2wgTWVkaWFRdWVy
eUV2YWx1YXRvcjo6ZXZhbChjb25zdCBNZWRpYVF1ZXJ5U2V0KiBxdWVyeVNldCwgU3R5bGVSZXNv
bHZlciogc3R5CiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAobWVkaWFUeXBl
TWF0Y2gocXVlcnktPm1lZGlhVHlwZSgpKSkgewotICAgICAgICAgICAgY29uc3QgVmVjdG9yPE93
blB0cjxNZWRpYVF1ZXJ5RXhwPj4mIGV4cHJlc3Npb25zID0gcXVlcnktPmV4cHJlc3Npb25zKCk7
CisgICAgICAgICAgICBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE1lZGlhUXVlcnlFeHA+
PiYgZXhwcmVzc2lvbnMgPSBxdWVyeS0+ZXhwcmVzc2lvbnMoKTsKICAgICAgICAgICAgIC8vIGl0
ZXJhdGUgdGhyb3VnaCBleHByZXNzaW9ucywgc3RvcCBpZiBhbnkgb2YgdGhlbSBldmFsIHRvIGZh
bHNlCiAgICAgICAgICAgICAvLyAoQU5EIHNlbWFudGljcykKICAgICAgICAgICAgIHNpemVfdCBq
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmNwcAppbmRleCBlOWNmMWUwMDg2OTU3
ZWEyMzgxNmNhZGE4ZWNlNzcyOWU1ZDJkM2JhLi4yZjZkNWVjZWI2ZmJkNWE2MWNlNTljZjhiNjUx
NTY1MjMzODg1YTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwCkBAIC0xNTQs
NyArMTU0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGZlYXR1cmVXaXRob3V0VmFsdWUoY29uc3Qg
QXRvbWljU3RyaW5nJiBtZWRpYUZlYXR1cmUpCiAgICAgICAgIHx8IG1lZGlhRmVhdHVyZSA9PSBN
ZWRpYUZlYXR1cmVOYW1lczo6cmVzb2x1dGlvbk1lZGlhRmVhdHVyZTsKIH0KIAotaW5saW5lIE1l
ZGlhUXVlcnlFeHA6Ok1lZGlhUXVlcnlFeHAoY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYUZlYXR1
cmUsIENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVMaXN0KQorTWVkaWFRdWVyeUV4cDo6TWVkaWFR
dWVyeUV4cChjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSwgQ1NTUGFyc2VyVmFsdWVM
aXN0KiB2YWx1ZUxpc3QpCiAgICAgOiBtX21lZGlhRmVhdHVyZShtZWRpYUZlYXR1cmUpCiAgICAg
LCBtX3ZhbHVlKDApCiAgICAgLCBtX2lzVmFsaWQoZmFsc2UpCkBAIC0yMjIsMTEgKzIyMiw2IEBA
IGlubGluZSBNZWRpYVF1ZXJ5RXhwOjpNZWRpYVF1ZXJ5RXhwKGNvbnN0IEF0b21pY1N0cmluZyYg
bWVkaWFGZWF0dXJlLCBDU1NQYXJzZXJWCiAgICAgICAgIG1faXNWYWxpZCA9IHRydWU7CiB9CiAK
LVBhc3NPd25QdHI8TWVkaWFRdWVyeUV4cD4gTWVkaWFRdWVyeUV4cDo6Y3JlYXRlKGNvbnN0IEF0
b21pY1N0cmluZyYgbWVkaWFGZWF0dXJlLCBDU1NQYXJzZXJWYWx1ZUxpc3QqIHZhbHVlcykKLXsK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IE1lZGlhUXVlcnlFeHAobWVkaWFGZWF0dXJlLCB2YWx1
ZXMpKTsKLX0KLQogTWVkaWFRdWVyeUV4cDo6fk1lZGlhUXVlcnlFeHAoKQogewogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaCBiL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5RXhwLmgKaW5kZXggZmQ1NDNjMDQxYjc1NDY1NDg2ZTMyOTMwY2Q3NDA3
ZGJiMjY3YzQ1Yy4uNDZiYzhiYjNhMDRmYjkzNmY2ZTgwZmU3MmM1MTliN2Q5YjJhYzQ3YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFeHAuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5oCkBAIC0zMSw3ICszMSw3IEBACiAKICNpbmNsdWRl
ICJDU1NWYWx1ZS5oIgogI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCi0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCkBAIC00MSw3ICs0MSw3
IEBAIGNsYXNzIENTU1BhcnNlclZhbHVlTGlzdDsKIGNsYXNzIE1lZGlhUXVlcnlFeHAgewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRy
PE1lZGlhUXVlcnlFeHA+IGNyZWF0ZShjb25zdCBBdG9taWNTdHJpbmcmIG1lZGlhRmVhdHVyZSwg
Q1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZXMpOworICAgIE1lZGlhUXVlcnlFeHAoY29uc3QgQXRv
bWljU3RyaW5nJiBtZWRpYUZlYXR1cmUsIENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVzKTsKICAg
ICB+TWVkaWFRdWVyeUV4cCgpOwogCiAgICAgQXRvbWljU3RyaW5nIG1lZGlhRmVhdHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbWVkaWFGZWF0dXJlOyB9CkBAIC03MCwxMSArNzAsOSBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcgc2VyaWFsaXplKCkgY29uc3Q7CiAKLSAgICBQYXNzT3duUHRyPE1lZGlh
UXVlcnlFeHA+IGNvcHkoKSBjb25zdCB7IHJldHVybiBhZG9wdFB0cihuZXcgTWVkaWFRdWVyeUV4
cCgqdGhpcykpOyB9CisgICAgc3RkOjp1bmlxdWVfcHRyPE1lZGlhUXVlcnlFeHA+IGNvcHkoKSBj
b25zdCB7IHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPE1lZGlhUXVlcnlFeHA+KCp0aGlzKTsgfQog
CiBwcml2YXRlOgotICAgIE1lZGlhUXVlcnlFeHAoY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYUZl
YXR1cmUsIENTU1BhcnNlclZhbHVlTGlzdCogdmFsdWVzKTsKLQogICAgIEF0b21pY1N0cmluZyBt
X21lZGlhRmVhdHVyZTsKICAgICBSZWZQdHI8Q1NTVmFsdWU+IG1fdmFsdWU7CiAgICAgYm9vbCBt
X2lzVmFsaWQ7Cg==
</data>
<flag name="review"
          id="247029"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>