<?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>101110</bug_id>
          
          <creation_ts>2012-11-02 15:07:46 -0700</creation_ts>
          <short_desc>[V8] IntrusiveDOMWrapperMap should be usable for more than just Nodes</short_desc>
          <delta_ts>2012-11-07 19:06:18 -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>
          <dependson>101388</dependson>
    
    <dependson>101413</dependson>
    
    <dependson>101422</dependson>
    
    <dependson>101430</dependson>
    
    <dependson>101493</dependson>
    
    <dependson>101494</dependson>
    
    <dependson>101520</dependson>
    
    <dependson>101523</dependson>
    
    <dependson>101525</dependson>
          <blocked>101121</blocked>
    
    <blocked>101279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>757647</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-02 15:07:46 -0700</bug_when>
    <thetext>[V8] IntrusiveDOMWrapperMap should be usable for more than just Nodes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757659</commentid>
    <comment_count>1</comment_count>
      <attachid>172153</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-02 15:15:46 -0700</bug_when>
    <thetext>Created attachment 172153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>757675</commentid>
    <comment_count>2</comment_count>
      <attachid>172153</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-02 15:29:20 -0700</bug_when>
    <thetext>Comment on attachment 172153
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758772</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-05 12:11:41 -0800</bug_when>
    <thetext>*** Bug 101121 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758781</commentid>
    <comment_count>4</comment_count>
      <attachid>172376</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-05 12:25:46 -0800</bug_when>
    <thetext>Created attachment 172376
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758788</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-05 12:32:33 -0800</bug_when>
    <thetext>Attachment 172376 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/V8/V8TestInterface.h:61:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/V8/V8TestMediaQueryListListener.h:56:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/V8/V8TestEventTarget.h:59:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/V8/V8TestActiveDOMObject.h:58:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/V8/V8TestObj.h:62:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/v8/DOMDataStore.h:99:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebCore/bindings/scripts/test/V8/V8TestCustomNamedGetter.h:57:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/V8/V8TestNamedConstructor.h:63:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/V8/V8TestEventConstructor.h:58:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/V8/V8Float64Array.h:58:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/V8/V8TestException.h:56:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Source/WebCore/bindings/scripts/test/V8/V8TestSerializedScriptValueInterface.h:59:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
Total errors found: 12 in 22 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758806</commentid>
    <comment_count>6</comment_count>
      <attachid>172376</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-05 12:50:05 -0800</bug_when>
    <thetext>Comment on attachment 172376
Patch

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

super cool!

&gt; Source/WebCore/ChangeLog:9
&gt; +        to be useable for more than just nodes. After this patch, any object

Typo: usable

&gt; Source/WebCore/bindings/v8/DOMDataStore.cpp:59
&gt; +    if (!isolate)
&gt; +        isolate = v8::Isolate::GetCurrent();
&gt;      V8PerIsolateData* data = V8PerIsolateData::from(isolate);

You can use V8PerIsolateData::current(isolate = 0)

&gt; Source/WebCore/bindings/v8/DOMDataStore.cpp:75
&gt; +{

You can add ASSERT(m_type == MainWorld).

&gt; Source/WebCore/bindings/v8/DOMDataStore.cpp:81
&gt; +    // Note: |object| might not be equal to |key|, e.g., if ScriptWrappable isn&apos;t a left-most base class.

Nit: This comment could be put on the above line.

&gt; Source/WebCore/bindings/v8/DOMDataStore.h:67
&gt; +        if (wrapperIsStoredInObject(object))
&gt; +            return getWrapperFromObject(object);
&gt; +        return m_hashMap.get(object);

How about killing wrapperIsStoredInObject() and writing the code like this?

v8::Handle&lt;v8::Object&gt; wrapper = getWrapperFromObject(object);
if (!wrapper.IsEmpty())
    return wrapper;
return m_hashMap.get(object);

&gt; Source/WebCore/bindings/v8/DOMDataStore.h:81
&gt;  protected:

private: ?

&gt; Source/WebCore/bindings/v8/DOMDataStore.h:83
&gt; +    inline bool wrapperIsStoredInObject(void*) const { return false; }
&gt; +    inline bool wrapperIsStoredInObject(ScriptWrappable*) const { return m_type == MainWorld; }

As mentioned above, I think you can remove these methods.

&gt; Source/WebCore/bindings/v8/DOMDataStore.h:86
&gt; +    inline v8::Handle&lt;v8::Object&gt; getWrapperFromObject(ScriptWrappable* key) const { return key-&gt;wrapper(); }

You can add ASSERT(m_type == MainWorld).

&gt; Source/WebCore/bindings/v8/DOMDataStore.h:89
&gt; +    inline bool storeWrapperInObject(void*, v8::Persistent&lt;v8::Object&gt;) { return false; }
&gt; +    inline bool storeWrapperInObject(ScriptWrappable* key, v8::Persistent&lt;v8::Object&gt; wrapper)

setWrapperInObject() would be better. (c.f. getWrapperFromObject())

&gt; Source/WebCore/bindings/v8/DOMDataStore.h:101
&gt;      Type m_type;

m_worldType might be better. You can also rename Type to WorldType.

&gt; Source/WebCore/bindings/v8/DOMDataStore.h:102
&gt; +    DOMWrapperHashMap&lt;void&gt; m_hashMap;

m_wrapperMap might be better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758809</commentid>
    <comment_count>7</comment_count>
      <attachid>172376</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-05 13:00:45 -0800</bug_when>
    <thetext>Comment on attachment 172376
Patch

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

&gt; Source/WebCore/bindings/v8/DOMDataStore.h:58
&gt;      explicit DOMDataStore(Type);
&gt;      ~DOMDataStore();

I think we should add a little blurb to the top of this function which says that callers need to be careful to always call these functions with specific types.  Explain that we&apos;re depending on the compiler&apos;s type system to dispatch to the right function, and that if we&apos;ve lost our type (say void*) we&apos;ll end up down the hash-map path always, even if we should be going down the ScriptWrappable path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758830</commentid>
    <comment_count>8</comment_count>
      <attachid>172376</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-05 13:35:28 -0800</bug_when>
    <thetext>Comment on attachment 172376
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/DOMDataStore.cpp:75
&gt;&gt; +{
&gt; 
&gt; You can add ASSERT(m_type == MainWorld).

Yes, expect that this function is static.  :)

&gt;&gt; Source/WebCore/bindings/v8/DOMDataStore.h:58
&gt;&gt;      ~DOMDataStore();
&gt; 
&gt; I think we should add a little blurb to the top of this function which says that callers need to be careful to always call these functions with specific types.  Explain that we&apos;re depending on the compiler&apos;s type system to dispatch to the right function, and that if we&apos;ve lost our type (say void*) we&apos;ll end up down the hash-map path always, even if we should be going down the ScriptWrappable path.

Done.

&gt;&gt; Source/WebCore/bindings/v8/DOMDataStore.h:67
&gt;&gt; +        return m_hashMap.get(object);
&gt; 
&gt; How about killing wrapperIsStoredInObject() and writing the code like this?
&gt; 
&gt; v8::Handle&lt;v8::Object&gt; wrapper = getWrapperFromObject(object);
&gt; if (!wrapper.IsEmpty())
&gt;     return wrapper;
&gt; return m_hashMap.get(object);

I wasn&apos;t sure whether the compiler would be smart enough to optimize that away in the non-ScriptWrappable case.  It might think that creating an empty handle has side effects.

&gt;&gt; Source/WebCore/bindings/v8/DOMDataStore.h:101
&gt;&gt;      Type m_type;
&gt; 
&gt; m_worldType might be better. You can also rename Type to WorldType.

It can also be &quot;Worker&quot;, which isn&apos;t really a world type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758833</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-05 13:37:34 -0800</bug_when>
    <thetext>I&apos;ve made all other changes locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758843</commentid>
    <comment_count>10</comment_count>
      <attachid>172396</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-05 13:48:35 -0800</bug_when>
    <thetext>Created attachment 172396
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758891</commentid>
    <comment_count>11</comment_count>
      <attachid>172396</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-05 14:16:03 -0800</bug_when>
    <thetext>Comment on attachment 172396
Patch for landing

Clearing flags on attachment: 172396

Committed r133526: &lt;http://trac.webkit.org/changeset/133526&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>758892</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-05 14:16:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759977</commentid>
    <comment_count>13</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-06 13:07:25 -0800</bug_when>
    <thetext>I&apos;m pretty sure this patch caused a 15% memory regression.

http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/intl2/report.html?rev=166240&amp;graph=ws_single_peak_r&amp;history=100

Regression range: http://trac.webkit.org/log/?verbose=on&amp;rev=133531&amp;stop_rev=133523

http://trac.webkit.org/changeset/133529 has already been rolled out. I don&apos;t see any other patches in that range other than this one that could possibly be it.

Rollout?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>759982</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-11-06 13:13:21 -0800</bug_when>
    <thetext>How can we repro that regression locally?  This set of changes should be causing memory progressions, but it&apos;s possible something was missed here...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760000</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-06 13:34:52 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 101388</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760027</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 14:02:35 -0800</bug_when>
    <thetext>&gt; This set of changes should be causing memory progressions, but it&apos;s possible something was missed here...

The only think I can think of is if somehow the overloading isn&apos;t working the way we think it is.  However, it&apos;s not clear how that could be without showing up on a performance or correctness test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760031</commentid>
    <comment_count>17</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 14:08:56 -0800</bug_when>
    <thetext>Something is very wrong with DOM performance:

http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/dom_perf/report.html?history=150&amp;rev=-1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760033</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 14:09:47 -0800</bug_when>
    <thetext>I bet it is the V8 roll:

http://src.chromium.org/viewvc/chrome?view=rev&amp;revision=166220</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760041</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 14:17:12 -0800</bug_when>
    <thetext>The V8 roll is being reverted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760067</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 14:45:07 -0800</bug_when>
    <thetext>As far as I can tell, this stat isn&apos;t important.  It&apos;s just the working set size for the render process.  If the time and total commit charge don&apos;t change, what does it matter that the working set size has changed?  The stat is even marked as not important in perf_test.cc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760069</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 14:47:46 -0800</bug_when>
    <thetext>I couldn&apos;t find anyone who could answer my questions authoritatively, but my guess is that we track this stat to help us diagnose regressions in &quot;times&quot;.  Notice that we don&apos;t have expectations set for this value in http://src.chromium.org/viewvc/chrome/trunk/src/tools/perf_expectations/perf_expectations.json either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760070</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 14:48:25 -0800</bug_when>
    <thetext>As far as I can tell, this is a non-problem.  Maybe I&apos;m misunderstanding the significance of this chart?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760100</commentid>
    <comment_count>23</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-06 15:16:40 -0800</bug_when>
    <thetext>I thought working set == amount of physical memory used on Windows, which is exactly what we care about WRT memory usage. A cursory Google search seems to back up that theory. Maybe my understanding is wrong though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760116</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 15:31:05 -0800</bug_when>
    <thetext>The chart went back down when the patch was rolled out: http://build.chromium.org/f/chromium/perf/chromium-rel-win7-webkit/intl2/report.html?history=150&amp;rev=-1&amp;graph=ws_single_peak_r</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760118</commentid>
    <comment_count>25</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-06 15:33:28 -0800</bug_when>
    <thetext>lol whoops. nevermind. i misread it and thought that patch had been processed in the previous run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760128</commentid>
    <comment_count>26</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-11-06 15:47:18 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; lol whoops. nevermind. i misread it and thought that patch had been processed in the previous run.

omg. ignore me. it is this patch that caused the regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760164</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-06 16:14:03 -0800</bug_when>
    <thetext>I&apos;m going to re-land the easy parts of this change to reduce the size of the diff that could have caused the graph to move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760950</commentid>
    <comment_count>28</comment_count>
      <attachid>172855</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 12:00:31 -0800</bug_when>
    <thetext>Created attachment 172855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760961</commentid>
    <comment_count>29</comment_count>
      <attachid>172855</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-11-07 12:18:34 -0800</bug_when>
    <thetext>Comment on attachment 172855
Patch

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

&gt; Source/WebCore/bindings/v8/DOMDataStore.h:63
&gt; -    inline v8::Handle&lt;v8::Object&gt; get(Node* object) const
&gt; +    inline v8::Handle&lt;v8::Object&gt; get(ScriptWrappable* object) const

I&apos;m pretty sure it will work, but if something in your original patch is the culprit of the regression, I might want to suspect this part (just an intuition).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760984</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 12:50:55 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 172855 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172855&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/DOMDataStore.h:63
&gt; &gt; -    inline v8::Handle&lt;v8::Object&gt; get(Node* object) const
&gt; &gt; +    inline v8::Handle&lt;v8::Object&gt; get(ScriptWrappable* object) const
&gt; 
&gt; I&apos;m pretty sure it will work, but if something in your original patch is the culprit of the regression, I might want to suspect this part (just an intuition).

Yeah.  The only other thing that is left is changing from OwnPtr to holding the Map directly (and can&apos;t see how that would make a difference).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761075</commentid>
    <comment_count>31</comment_count>
      <attachid>172876</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 14:51:03 -0800</bug_when>
    <thetext>Created attachment 172876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761076</commentid>
    <comment_count>32</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 14:52:14 -0800</bug_when>
    <thetext>I changed this patch to be more similar to the original one because we need to delay the static_cast to ScriptWrappable* until after we decide to use the inline wrapper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761090</commentid>
    <comment_count>33</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 15:11:47 -0800</bug_when>
    <thetext>Committed r133810: &lt;http://trac.webkit.org/changeset/133810&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761149</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 16:16:04 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 101520</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761223</commentid>
    <comment_count>35</comment_count>
      <attachid>172902</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-07 17:46:17 -0800</bug_when>
    <thetext>Created attachment 172902
Hopefully final patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761279</commentid>
    <comment_count>36</comment_count>
      <attachid>172902</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 19:06:09 -0800</bug_when>
    <thetext>Comment on attachment 172902
Hopefully final patch

Clearing flags on attachment: 172902

Committed r133837: &lt;http://trac.webkit.org/changeset/133837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761280</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-07 19:06:18 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172153</attachid>
            <date>2012-11-02 15:15:46 -0700</date>
            <delta_ts>2012-11-05 12:25:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101110-20121102151449.patch</filename>
            <type>text/plain</type>
            <size>16073</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzMzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTAwMDAyMWFkMGI0Zjk2
NzkzYTM2ZjkzZmE3YzY4NjU0ZWNjNDEwZC4uMmNjZWRhNGY4OTc3NDQ4YTliNGU4YzVhOGRhYzFj
YWIwMTJkYjJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY0IEBACiAyMDEyLTExLTAyICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgW1Y4XSBJbnRydXNpdmVET01X
cmFwcGVyTWFwIHNob3VsZCBiZSB1c2FibGUgZm9yIG1vcmUgdGhhbiBqdXN0IE5vZGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDExMTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGNo
YW5nZXMgdGhlIEtleVR5cGUgZm9yIEludHJ1c2l2ZURPTVdyYXBwZXJNYXAgdG8KKyAgICAgICAg
U2NyaXB0V3JhcHBhYmxlIHNvIHRoYXQgd2UgY2FuIHN0b3JlIG90aGVyIHN1YmNsYXNzZXMgb2YK
KyAgICAgICAgU2NyaXB0V3JhcHBhYmxlIGluIEludHJ1c2l2ZURPTVdyYXBwZXJNYXAuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdl
bmVyYXRlQ29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZU5hbWVkQ29uc3Ry
dWN0b3JDYWxsYmFjayk6CisgICAgICAgIChHZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzKToKKyAgICAg
ICAgKEdldERvbU1hcEZ1bmN0aW9uKToKKyAgICAgICAgICAgIC0gVGhlIGNvZGUgZ2VuZXJhdG9y
IG5vdyBnb2VzIHRocm91Z2ggYSBzaW5nbGUgZnVuY3Rpb24gdG8gc3RvcmUKKyAgICAgICAgICAg
ICAgSmF2YVNjcmlwdCB3cmFwcGVycyBmb3IgRE9NIG9iamVjdHMgYW5kIG5vZGVzLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdE5vZGU6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0Tm9kZTo6d3JhcFNsb3cpOgorICAgICAgICAgICAgLSBVcGRhdGUgcnVuLWJpbmRp
bmdzLXRlc3RzLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpET01EYXRhU3RvcmU6On5ET01EYXRhU3RvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
RGF0YVN0b3JlOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvRE9N
RGF0YVN0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OnNjcmlwdFdyYXBw
YWJsZU1hcCk6CisgICAgICAgIChET01EYXRhU3RvcmUpOgorICAgICAgICAgICAgLSBSZW5hbWUg
dGhlIG1hcCB0byBpbmRpY2F0ZSB0aGF0IGl0IGNhbiBiZSB1c2VkIGZvciBtb3JlIHRoYW4KKyAg
ICAgICAgICAgICAgbm9kZXMuCisgICAgICAgICogYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3Jh
cHBlck1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6SW50cnVzaXZlRE9NV3JhcHBlck1hcDo6d2Vh
a0NhbGxiYWNrKToKKyAgICAgICAgICAgIC0gV2UgY2FuJ3QgY2FsbCBkZXJlZiBkaXJlY3RseSBv
biBLZXlUeXBlIGFueW1vcmUgYmVjYXVzZQorICAgICAgICAgICAgICBTY3JpcHRXcmFwcGFibGUg
aXMgbm90IG5lY2Vzc2FyaWxpdHkgUmVmQ291bnRlZC4gSW5zdGVhZCwgd2UKKyAgICAgICAgICAg
ICAgaW5kaXJlY3QgdGhyb3VnaCB0aGUgV3JhcHBlclR5cGVJbmZvIHN0cnVjdCBzbyB0aGF0IHdl
IGNhbiBjYWxsCisgICAgICAgICAgICAgIGRlcmVmIHdpdGggdGhlIHJpZ2h0IHN0YXRpYyB0eXBl
LiAoV2UgdXNlIHRoZSBzYW1lIHRlY2huaXF1ZSB3aGVuCisgICAgICAgICAgICAgIHRoZXNlIG9i
amVjdHMgYXJlIHN0b3JlZCBpbiBET01XcmFwcGVySGFzaE1hcC4pCisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhET01NYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0U2NyaXB0V3JhcHBhYmxl
TWFwKToKKyAgICAgICAgICAgIC0gUmVuYW1pbmcuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhE
T01NYXAuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9N
V3JhcHBlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmg6CisgICAg
ICAgIChWOERPTVdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpnZXRD
YWNoZWRXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c2V0V3JhcHBl
ckNsYXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6c3RvcmVXcmFwcGVySW5N
YXApOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01P
YmplY3QpOgorICAgICAgICAgICAgLSBSYXRoZXIgZGV0ZXJtaW5pbmcgd2hpY2ggd3JhcHBlciBj
bGFzcyBJRCBhbmQgd2hpY2ggd3JhcHBlciBtYXAKKyAgICAgICAgICAgICAgdG8gdXNlIGJhc2Vk
IG9uIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBlbnRyeSBwb2ludCwgd2UgdXNlIEMrKworICAg
ICAgICAgICAgICBvdmVybG9hZGluZyBydWxlcyB0byBwaWNrIHRoZSByaWdodCBtYXAgYmFzZWQg
b24gdGhlIERPTSBvYmplY3QncworICAgICAgICAgICAgICBiYXNlIGNsYXNzZXMuIFRoaXMgd2ls
bCBob3BlZnVsbHkgbGV0IHVzIGF2b2lkIGNyZWF0aW5nIGEKKyAgICAgICAgICAgICAgW1Njcmlw
dFdyYXBwYWJsZV0gSURMIGF0dHJpYnV0ZS4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6djhI
VE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAgICAgICAtIFVwZGF0
ZSBhIG1hbnVhbCBjYWxsIHNpdGUgdG8gY2FsbCB0aGUgbW9yZSBnZW5lcmFsIGZ1bmN0aW9uLgor
CisyMDEyLTExLTAyICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAg
W1Y4XSBHZW5lcmFsaXplIE5vZGVXcmFwcGVyTWFwIHRvIGJlIGFibGUgdG8gaGFuZGxlIG90aGVy
IHNvcnRzIG9mIGtleXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwMDk3MwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDZmOTk1Y2I4NGM0OGI2ODNhNWRhOTM2NDNkNGNlMDcx
MjE5YTQ3Y2YuLmE0MGIyZGIxMGViNDI4MzhkMjBkMGQxZjFjMGI3N2NhYjJlMGFhYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBt
CkBAIC0xOTQyLDExICsxOTQyLDEwIEBAIEVORAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICAgICAgZ290byBmYWlsO1xuIik7CiAgICAgfQogCi0gICAgbXkgJERPTU9iamVjdCA9IEdl
dERvbU1hcE5hbWUoJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSk7CiAgICAgcHVzaChAaW1wbENv
bnRlbnQsIDw8RU5EKTsKIAogICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVy
LCAmaW5mbywgaW1wbC5nZXQoKSk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3Ik
e0RPTU9iamVjdH0oaW1wbC5yZWxlYXNlKCksIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
KyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLnJlbGVhc2Uo
KSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIHJldHVybiB3cmFwcGVyOwogRU5E
CiAKQEAgLTIxMzQsMTEgKzIxMzMsMTAgQEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBnb3RvIGZhaWw7XG4iKTsKICAgICB9CiAKLSAgICBteSAkRE9NT2JqZWN0ID0g
R2V0RG9tTWFwTmFtZSgkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1lKTsKICAgICBwdXNoKEBpbXBs
Q29udGVudCwgPDxFTkQpOwogCiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBw
ZXIsICZWOCR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6aW5mbywgaW1wbC5nZXQoKSk7Ci0g
ICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3Ike0RPTU9iamVjdH0oaW1wbC5yZWxlYXNl
KCksIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpT
V3JhcHBlckZvckRPTU9iamVjdChpbXBsLnJlbGVhc2UoKSwgd3JhcHBlciwgYXJncy5HZXRJc29s
YXRlKCkpOwogICAgIHJldHVybiB3cmFwcGVyOwogRU5ECiAKQEAgLTM0MDIsNyArMzQwMCw2IEBA
IHN1YiBHZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzCiAgICAgbXkgJGNsYXNzTmFtZSA9IHNoaWZ0Owog
ICAgIG15ICRuYXRpdmVUeXBlID0gc2hpZnQ7CiAKLSAgICBteSAkZG9tTWFwTmFtZSA9IEdldERv
bU1hcE5hbWUoJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAgICAgbXkgJHdyYXBTbG93QXJn
dW1lbnRUeXBlID0gR2V0UGFzc1JlZlB0clR5cGUoJG5hdGl2ZVR5cGUpOwogICAgIG15ICRiYXNl
VHlwZSA9IEJhc2VJbnRlcmZhY2VOYW1lKCRkYXRhTm9kZSk7CiAKQEAgLTM0NjMsNyArMzQ2MCw3
IEBAIEVORAogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJDb250ZXh0
UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3Ike2Rv
bU1hcE5hbWV9KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRP
TU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExp
ZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwogICAgIHJl
dHVybiB3cmFwcGVyOwpAQCAtMzQ3NywxNiArMzQ3NCw4IEBAIHN1YiBHZXREb21NYXBGdW5jdGlv
bgogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAgICAgbXkgJGdldElzb2xhdGUgPSBz
aGlmdDsKIAotICAgIHJldHVybiAiZ2V0IiAuIEdldERvbU1hcE5hbWUoJGRhdGFOb2RlLCAkaW50
ZXJmYWNlTmFtZSkgLiAiTWFwKCIgLiAkZ2V0SXNvbGF0ZSAuICIpIjsKLX0KLQotc3ViIEdldERv
bU1hcE5hbWUKLXsKLSAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKLSAgICBteSAkdHlwZSA9IHNo
aWZ0OwotCi0gICAgcmV0dXJuICJET01Ob2RlIiBpZiBJc05vZGVTdWJUeXBlKCRkYXRhTm9kZSk7
Ci0gICAgcmV0dXJuICJET01PYmplY3QiOworICAgIHJldHVybiAiZ2V0U2NyaXB0V3JhcHBhYmxl
TWFwKCRnZXRJc29sYXRlKSIgaWYgSXNOb2RlU3ViVHlwZSgkZGF0YU5vZGUpOworICAgIHJldHVy
biAiZ2V0RE9NT2JqZWN0TWFwKCRnZXRJc29sYXRlKSI7CiB9CiAKIHN1YiBHZXROYXRpdmVUeXBl
Rm9yQ29udmVyc2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAppbmRleCBhNWRlNGI2M2E3NDlmNTk4ODZhNzU0NGI5
YzIxZjJkNTljM2NmMTYwLi4xM2ViYzY1YWU0YmU4ZGY5YTJiNWUyYjllYjI2MmExZDhjM2NmZDBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE5vZGUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFRlc3ROb2RlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKIAog
ICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQo
KSk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01Ob2RlKGltcGwucmVsZWFz
ZSgpLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjpzZXRK
U1dyYXBwZXJGb3JET01PYmplY3QoaW1wbC5yZWxlYXNlKCksIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMTM1LDcgKzEzNSw3IEBAIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0Tm9kZTo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0
Tm9kZT4gaW1wbCwgdjg6OkhhbmRsCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwotICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpT
V3JhcHBlckZvckRPTU5vZGUoaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFw
cGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVw
ZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7
CiAgICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01EYXRhU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmNwcAppbmRleCBiNGY5ZGFmN2RiNzJhODM3NjMwMGYyODYyZDA1NTc0ZDNlODk0ZTcw
Li5kZTk0MTk5MTVkOWJkYjMzNDFjY2Y1MDlmYzNiYzQxYWMwMDM0ZTNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKQEAgLTQzLDEzICs0MywxMyBAQCBE
T01EYXRhU3RvcmU6OkRPTURhdGFTdG9yZShUeXBlIHR5cGUpCiAgICAgOiBtX3R5cGUodHlwZSkK
IHsKICAgICBpZiAodHlwZSA9PSBNYWluV29ybGQpCi0gICAgICAgIG1fZG9tTm9kZU1hcCA9IGFk
b3B0UHRyKG5ldyBJbnRydXNpdmVET01XcmFwcGVyTWFwPE5vZGU+KTsKKyAgICAgICAgbV9zY3Jp
cHRXcmFwcGFibGVNYXAgPSBhZG9wdFB0cihuZXcgSW50cnVzaXZlRE9NV3JhcHBlck1hcDxTY3Jp
cHRXcmFwcGFibGU+KTsKICAgICBlbHNlIHsKICAgICAgICAgQVNTRVJUKHR5cGUgPT0gSXNvbGF0
ZWRXb3JsZCB8fCB0eXBlID09IFdvcmtlcik7CiAgICAgICAgIC8vIEZJWE1FOiBJbiBwcmluY2lw
bGUsIHdlIHNob3VsZG4ndCBuZWVkIHRvIGNyZWF0ZSB0aGlzCiAgICAgICAgIC8vIHdyYXBwZXIg
bWFwIGZvciB3b3JrZXJzIGJlY2F1c2UgdGhlcmUgYXJlIG5vIE5vZGVzIG9uCiAgICAgICAgIC8v
IHdvcmtlciB0aHJlYWRzLgotICAgICAgICBtX2RvbU5vZGVNYXAgPSBhZG9wdFB0cihuZXcgRE9N
V3JhcHBlckhhc2hNYXA8Tm9kZT4pOworICAgICAgICBtX3NjcmlwdFdyYXBwYWJsZU1hcCA9IGFk
b3B0UHRyKG5ldyBET01XcmFwcGVySGFzaE1hcDxTY3JpcHRXcmFwcGFibGU+KTsKICAgICB9CiAg
ICAgbV9kb21PYmplY3RNYXAgPSBhZG9wdFB0cihuZXcgRE9NV3JhcHBlckhhc2hNYXA8dm9pZD4p
OwogCkBAIC02Miw4ICs2Miw3IEBAIERPTURhdGFTdG9yZTo6fkRPTURhdGFTdG9yZSgpCiAKICAg
ICBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnVucmVnaXN0ZXJET01EYXRhU3RvcmUodGhp
cyk7CiAKLSAgICBpZiAobV90eXBlID09IElzb2xhdGVkV29ybGQpCi0gICAgICAgIG1fZG9tTm9k
ZU1hcC0+Y2xlYXIoKTsKKyAgICBtX3NjcmlwdFdyYXBwYWJsZU1hcC0+Y2xlYXIoKTsKICAgICBt
X2RvbU9iamVjdE1hcC0+Y2xlYXIoKTsKIH0KIApAQCAtODIsNyArODEsNyBAQCBET01EYXRhU3Rv
cmUqIERPTURhdGFTdG9yZTo6Y3VycmVudCh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHZvaWQgRE9N
RGF0YVN0b3JlOjpyZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmpl
Y3RJbmZvKSBjb25zdAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdElu
Zm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6QmluZGluZyk7Ci0gICAgaW5mby5hZGRNZW1i
ZXIobV9kb21Ob2RlTWFwKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3NjcmlwdFdyYXBwYWJsZU1h
cCk7CiAgICAgaW5mby5hZGRNZW1iZXIobV9kb21PYmplY3RNYXApOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCmluZGV4IGYwY2M3MDg1MjAwNWMwMzYzNGJk
MzAxZTFkMTQ4OWEwOGE1MWViNjguLmViOTJhMWQzMjYwMGUwZDQ1MjUyNzg5YWEwNmYyYzRjNWQz
MTZjYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9y
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oCkBAIC01
OSwxNCArNTksMTQgQEAgcHVibGljOgogCiAgICAgc3RhdGljIERPTURhdGFTdG9yZSogY3VycmVu
dCh2ODo6SXNvbGF0ZSopOwogCi0gICAgRE9NV3JhcHBlck1hcDxOb2RlPiYgZG9tTm9kZU1hcCgp
IHsgcmV0dXJuICptX2RvbU5vZGVNYXA7IH0KKyAgICBET01XcmFwcGVyTWFwPFNjcmlwdFdyYXBw
YWJsZT4mIHNjcmlwdFdyYXBwYWJsZU1hcCgpIHsgcmV0dXJuICptX3NjcmlwdFdyYXBwYWJsZU1h
cDsgfQogICAgIERPTVdyYXBwZXJNYXA8dm9pZD4mIGRvbU9iamVjdE1hcCgpIHsgcmV0dXJuICpt
X2RvbU9iamVjdE1hcDsgfQogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmpl
Y3RJbmZvKikgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBUeXBlIG1fdHlwZTsKLSAgICBPd25Q
dHI8RE9NV3JhcHBlck1hcDxOb2RlPiA+IG1fZG9tTm9kZU1hcDsKKyAgICBPd25QdHI8RE9NV3Jh
cHBlck1hcDxTY3JpcHRXcmFwcGFibGU+ID4gbV9zY3JpcHRXcmFwcGFibGVNYXA7CiAgICAgT3du
UHRyPERPTVdyYXBwZXJNYXA8dm9pZD4gPiBtX2RvbU9iamVjdE1hcDsKIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0ludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0ludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaAppbmRl
eCBmNjUxMjQzNGIzMTViOWMyYWUyNzdlOTcwZmRmMWE5MWZmNDBkMjQ3Li5lYjkyNjc3MWNiYmEw
NjBmNjZkNmVmODJlOTg0YzNmMjJkZDNjNDEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFwcGVyTWFwLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBlck1hcC5oCkBAIC0zMiw2ICszMiw3IEBACiAj
ZGVmaW5lIEludHJ1c2l2ZURPTVdyYXBwZXJNYXBfaAogCiAjaW5jbHVkZSAiRE9NV3JhcHBlck1h
cC5oIgorI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTY1LDExICs2NiwxNSBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgS2V5VHlwZSoga2V5
ID0gc3RhdGljX2Nhc3Q8S2V5VHlwZSo+KGNvbnRleHQpOwogICAgICAgICBBU1NFUlQodmFsdWUt
PklzT2JqZWN0KCkpOwotICAgICAgICBBU1NFUlQoa2V5LT53cmFwcGVyKCkgPT0gdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZh
bHVlKTsKKyAgICAgICAgQVNTRVJUKGtleS0+d3JhcHBlcigpID09IHdyYXBwZXIpOworICAgICAg
ICB2b2lkKiBvYmplY3QgPSB0b05hdGl2ZSh3cmFwcGVyKTsKKyAgICAgICAgLy8gTm90ZTogb2Jq
ZWN0IG1pZ2h0IG5vdCBiZSBlcXVhbCB0byBrZXksIGUuZy4sIGlmIFNjcmlwdFdyYXBwYWJsZSBp
c24ndCBhIGxlZnQtbW9zdCBiYXNlIGNsYXNzLgorICAgICAgICBXcmFwcGVyVHlwZUluZm8qIHR5
cGUgPSBWOERPTVdyYXBwZXI6OmRvbVdyYXBwZXJUeXBlKHdyYXBwZXIpOwogCiAgICAgICAgIGtl
eS0+Y2xlYXJXcmFwcGVyKCk7CiAgICAgICAgIHZhbHVlLkRpc3Bvc2UoKTsKLSAgICAgICAga2V5
LT5kZXJlZigpOworICAgICAgICB0eXBlLT5kZXJlZk9iamVjdChvYmplY3QpOwogICAgIH0KIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAppbmRleCAzNDMzN2UwOTZm
ZTQxNGUxYjc2ZjcyYTYwODZjMGYwN2ZhN2QyZjFhLi5iNGIwODA5ZDUwZmEwMGVkZjVhN2VkMjNh
YzhkZWE0MjA2MDhmM2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3Bw
CkBAIC0zOCwxMSArMzgsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ET01XcmFwcGVy
TWFwPE5vZGU+JiBnZXRET01Ob2RlTWFwKHY4OjpJc29sYXRlKiBpc29sYXRlKQorRE9NV3JhcHBl
ck1hcDxTY3JpcHRXcmFwcGFibGU+JiBnZXRTY3JpcHRXcmFwcGFibGVNYXAodjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7CiAgICAgaWYgKCFpc29sYXRlKQogICAgICAgICBpc29sYXRlID0gdjg6Oklz
b2xhdGU6OkdldEN1cnJlbnQoKTsKLSAgICByZXR1cm4gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlz
b2xhdGUpLT5kb21Ob2RlTWFwKCk7CisgICAgcmV0dXJuIERPTURhdGFTdG9yZTo6Y3VycmVudChp
c29sYXRlKS0+c2NyaXB0V3JhcHBhYmxlTWFwKCk7CiB9CiAKIERPTVdyYXBwZXJNYXA8dm9pZD4m
IGdldERPTU9iamVjdE1hcCh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTU1hcC5oCmluZGV4IGQ4YzdkMjg5ZTAzYWEyMWQyMTYzNzgxY2JiNWVlYWRhNDUz
NTZjNmEuLjlkMzA0NTQ2MGVjMmM1Y2VhYWQ0MmQ2NjQ1MGJkNzg3NDcwMTA2M2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaApAQCAtNDIsNyArNDIsNyBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLURPTVdyYXBwZXJNYXA8Tm9kZT4mIGdldERPTU5vZGVNYXAodjg6Oklz
b2xhdGUqID0gMCk7CitET01XcmFwcGVyTWFwPFNjcmlwdFdyYXBwYWJsZT4mIGdldFNjcmlwdFdy
YXBwYWJsZU1hcCh2ODo6SXNvbGF0ZSogPSAwKTsKIERPTVdyYXBwZXJNYXA8dm9pZD4mIGdldERP
TU9iamVjdE1hcCh2ODo6SXNvbGF0ZSogPSAwKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggNzgzY2Fi
ZjU2ZjQ1OWQ5ODAyYTBkM2QyOTljYmU4ZTFhMWYxN2NhNi4uYWFjOTVkYmVlMmEzYzIwNWJlMWMw
MzE1MjQwOTJkOWMxZjM1YmI0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuY3BwCkBAIC02OCwxNSArNjgsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9y
RE9NTm9kZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3Jh
cHBlciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4gd3JhcHBlckhhbmRsZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3Jh
cHBlcik7Ci0gICAgQVNTRVJUKG1heWJlRE9NV3JhcHBlcih3cmFwcGVySGFuZGxlKSk7Ci0gICAg
d3JhcHBlckhhbmRsZS5TZXRXcmFwcGVyQ2xhc3NJZCh2OERPTU5vZGVDbGFzc0lkKTsKLSAgICBn
ZXRET01Ob2RlTWFwKGlzb2xhdGUpLnNldChub2RlLmxlYWtSZWYoKSwgd3JhcHBlckhhbmRsZSk7
Ci0gICAgcmV0dXJuIHdyYXBwZXJIYW5kbGU7Ci19Ci0KIHZvaWQgVjhET01XcmFwcGVyOjpzZXRO
YW1lZEhpZGRlblJlZmVyZW5jZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHBhcmVudCwgY29uc3Qg
Y2hhciogbmFtZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNoaWxkKQogewogICAgIEFTU0VSVChu
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmgKaW5kZXggNzIx
ZDI5NWE3N2E5YjRlNTgyNmFmMDBmNGNhNDRmMDFmNGRlZTM5NC4uZTNjNGY3NmIyZGI4YzkwNjJk
YjM0NTQyZDExNGU2YjRmNTJjMjM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhE
T01XcmFwcGVyLmgKQEAgLTk2LDcgKzk2LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiBzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoUGFzc1JlZlB0cjxUPiwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqID0gMCk7Ci0gICAgICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBzZXRKU1dyYXBwZXJGb3JET01Ob2RlKFBhc3NSZWZQdHI8
Tm9kZT4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiA9IDApOwogCiAgICAg
ICAgIHN0YXRpYyBib29sIGlzVmFsaWRET01PYmplY3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsK
IApAQCAtMTIxLDggKzEyMCwyNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5vZGUtPndyYXBwZXIoKTsKIAogICAgICAgICAgICAgRE9NRGF0YVN0b3JlKiBz
dG9yZSA9IGNvbnRleHQtPndvcmxkKCktPmRvbURhdGFTdG9yZSgpOwotICAgICAgICAgICAgRE9N
V3JhcHBlck1hcDxOb2RlPiYgZG9tTm9kZU1hcCA9IHN0b3JlLT5kb21Ob2RlTWFwKCk7Ci0gICAg
ICAgICAgICByZXR1cm4gZG9tTm9kZU1hcC5nZXQobm9kZSk7CisgICAgICAgICAgICByZXR1cm4g
c3RvcmUtPnNjcmlwdFdyYXBwYWJsZU1hcCgpLmdldChub2RlKTsKKyAgICAgICAgfQorICAgIHBy
aXZhdGU6CisgICAgICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJDbGFzcyh2b2lkKiwgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKKyAgICAgICAgeworICAgICAgICAgICAgd3Jh
cHBlci5TZXRXcmFwcGVyQ2xhc3NJZCh2OERPTU9iamVjdENsYXNzSWQpOworICAgICAgICB9CisK
KyAgICAgICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckNsYXNzKE5vZGUqLCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVyKQorICAgICAgICB7CisgICAgICAgICAgICB3cmFwcGVyLlNl
dFdyYXBwZXJDbGFzc0lkKHY4RE9NTm9kZUNsYXNzSWQpOworICAgICAgICB9CisKKyAgICAgICAg
c3RhdGljIHZvaWQgc3RvcmVXcmFwcGVySW5NYXAodm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgZ2V0RE9NT2JqZWN0TWFwKGlzb2xhdGUpLnNldChvYmplY3QsIHdyYXBwZXIp
OworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIHZvaWQgc3RvcmVXcmFwcGVySW5NYXAoU2Ny
aXB0V3JhcHBhYmxlKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQorICAgICAgICB7CisgICAgICAgICAgICBnZXRTY3JpcHRX
cmFwcGFibGVNYXAoaXNvbGF0ZSkuc2V0KG9iamVjdCwgd3JhcHBlcik7CiAgICAgICAgIH0KICAg
ICB9OwogCkBAIC0xMzEsOCArMTQ5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHsKICAg
ICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcik7CiAgICAgICAgIEFTU0VSVChtYXliZURP
TVdyYXBwZXIod3JhcHBlckhhbmRsZSkpOwotICAgICAgICB3cmFwcGVySGFuZGxlLlNldFdyYXBw
ZXJDbGFzc0lkKHY4RE9NT2JqZWN0Q2xhc3NJZCk7Ci0gICAgICAgIGdldERPTU9iamVjdE1hcChp
c29sYXRlKS5zZXQob2JqZWN0LmxlYWtSZWYoKSwgd3JhcHBlckhhbmRsZSk7CisgICAgICAgIHNl
dFdyYXBwZXJDbGFzcyhvYmplY3QuZ2V0KCksIHdyYXBwZXJIYW5kbGUpOworICAgICAgICBzdG9y
ZVdyYXBwZXJJbk1hcChvYmplY3QubGVha1JlZigpLCB3cmFwcGVySGFuZGxlLCBpc29sYXRlKTsK
ICAgICAgICAgcmV0dXJuIHdyYXBwZXJIYW5kbGU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxl
bWVudENvbnN0cnVjdG9yLmNwcAppbmRleCAyNTZjOWQzN2U0MTFjZmU3MGE2ZTM2Mzc4MmEzNjYz
YTA0NDUzZDNmLi41OGE3YWY0OTJlMjkwNWZhZWE3MGNmNGViNDM3YTI2ZjFlZGRkMjUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVt
ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmcKICAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW1hZ2Ug
PSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKGRvY3VtZW50LCBvcHRp
b25hbFdpZHRoLCBvcHRpb25hbEhlaWdodCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIo
d3JhcHBlciwgJlY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjppbmZvLCBpbWFnZS5nZXQo
KSk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01Ob2RlKGltYWdlLnJlbGVh
c2UoKSwgd3JhcHBlcik7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmpl
Y3QoaW1hZ2UucmVsZWFzZSgpLCB3cmFwcGVyKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172376</attachid>
            <date>2012-11-05 12:25:46 -0800</date>
            <delta_ts>2012-11-05 13:48:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101110-20121105122400.patch</filename>
            <type>text/plain</type>
            <size>48723</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFkYzEyZTgyMjkwYTlj
NTc1YzgwN2U1YzBhOTRkMGJjOWNmMTRmNS4uMjRkM2YwZmY1NGIxYzI2ZWExNWEwOGEwODQ3MGVl
Nzc1NTc3ZWM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAxMi0xMS0wNSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFtWOF0gSW50cnVzaXZlRE9N
V3JhcHBlck1hcCBzaG91bGQgYmUgdXNhYmxlIGZvciBtb3JlIHRoYW4ganVzdCBOb2RlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMTEwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBn
ZW5lcmFsaXplcyBvdXIgc3VwcG9ydCBmb3Igc3RvcmluZyB3cmFwcGVycyBpbiBET00gb2JqZWN0
cworICAgICAgICB0byBiZSB1c2VhYmxlIGZvciBtb3JlIHRoYW4ganVzdCBub2Rlcy4gQWZ0ZXIg
dGhpcyBwYXRjaCwgYW55IG9iamVjdAorICAgICAgICB3aXRoIGEgU2NyaXB0V3JhcHBhYmxlIGJh
c2UgY2xhc3Mgd2lsbCBoYXZlIGl0cyB3cmFwcGVyIHN0b3JlZCBpbmxpbmUKKyAgICAgICAgaW4g
dGhlIG9iamVjdCBpbiB0aGUgbWFpbiB3b3JsZC4KKworICAgICAgICBUbyBhY2hpZXZlIHRoaXMg
Z29hbCwgdGhpcyBwYXRjaCBoaWRlcyB0aGUgZGV0YWlscyBvZiBob3cgd2UgbWFwIGZyb20KKyAg
ICAgICAgb2JqZWN0cyB0byB3cmFwcGVycyBpbnNpZGUgRE9NRGF0YVN0b3JlIGFuZCB0aGVuIHJl
bW92ZXMgdGhlCisgICAgICAgIEludHJ1c2l2ZURPTVdyYXBwZXJNYXAgY2xhc3MgZW50aXJlbHku
IFRoaXMgYXBwcm9hY2ggbGV0cyB1cyByZW1vdmUgdGhlCisgICAgICAgIERPTVdyYXBwZXJNYXAg
YmFzZSBjbGFzcyBhbmQgbWFrZSBhbGwgb2YgdGhlc2UgZnVuY3Rpb25zIG5vbi12aXJ0dWFsLgor
CisgICAgICAgICogVXNlVjguY21ha2U6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAgICAgLSBSZW1vdmUgZGVsZXRlZCBmaWxlcy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAg
KEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9y
Q2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2spOgor
ICAgICAgICAoR2VuZXJhdGVUb1Y4Q29udmVydGVycyk6CisgICAgICAgICAgICAtIFJhdGhlciB0
aGFuIGdyYWJiaW5nIGF0IHRoZSBET01XcmFwcGVyTWFwIGRpcmVjdGx5LCB3ZSBub3cgYXNrCisg
ICAgICAgICAgICAgIHRoZSBET01EYXRhU3RvcmUgdG8gZG8gdGhpcyB3b3JrIGZvciB1cy4KKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RmxvYXQ2NEFycmF5Ojp3cmFwKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RBY3RpdmVET01PYmplY3Q6OndyYXApOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OndyYXApOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RFdmVudENvbnN0cnVjdG9yOjp3cmFwKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2
ZW50VGFyZ2V0Ojp3cmFwKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0RXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246OndyYXAp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6d3JhcCk6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OndyYXApOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmg6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjp3cmFwKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOFRlc3ROb2RlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4VGVzdE5vZGU6OndyYXBTbG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
OjpyZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjp3
cmFwKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OndyYXApOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RP
TURhdGFTdG9yZS5jcHA6CisgICAgICAgICAgICAtIFVwZGF0ZWQgcnVuLWJpbmRpbmdzLXRlc3Qg
cmVzdWx0cy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6RE9NRGF0YVN0b3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6fkRPTURhdGFTdG9yZSk6CisgICAgICAg
ICAgICAtIFNpbXBsaWZ5IGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIG5vdyB0aGF0IHRoZXJl
IGlzIG9ubHkgb25lCisgICAgICAgICAgICAgIGhhc2ggbWFwLgorICAgICAgICAoV2ViQ29yZTo6
RE9NRGF0YVN0b3JlOjpjdXJyZW50KToKKyAgICAgICAgICAgIC0gTm93IHRoYXQgVjhET01NYXAu
Y3BwIGRvZXNuJ3QgaGFuZGxlIHRoZSBudWxsIGlzb2xhdGUgY2FzZSwgd2UKKyAgICAgICAgICAg
ICAgbmVlZCB0byBoYW5kbGUgaXQgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9y
ZTo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAgICAgLSBTaW1wbGZpZWQgbm93IHRoYXQg
dGhlcmUgaXMgb25seSBvbmUgd3JhcHBlciBtYXAuCisgICAgICAgIChXZWJDb3JlOjpET01EYXRh
U3RvcmU6OndlYWtDYWxsYmFjayk6CisgICAgICAgICAgICAtIE1vdmVkIGZyb20gSW50cnVzaXZl
RE9NV3JhcHBlck1hcC5oCisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpE
T01EYXRhU3RvcmU6OnNldCk6CisgICAgICAgICAgICAtIFRoZXNlIGZ1bmN0aW9ucyBub3cgaGFu
ZGxlIHRoZSBpbnRydXNpdmUgY2FzZSB3aXRoIGEgYnJhbmNoCisgICAgICAgICAgICAgIHJhdGhl
ciB0aGFuIHdpdGggYSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwuIEluIG1hbnkgY2FzZXMsIHRoZQor
ICAgICAgICAgICAgICBicmFuY2ggY2FuIGJlIG9wdGltaXplZCBhd2F5IGJ5IHRoZSBjb21waWxl
ciB3aGVuIHRoZSBvdmVybG9hZGVkCisgICAgICAgICAgICAgIGlubGluZSBmdW5jdGlvbnMgYXJl
IGlubGluZWQuCisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OndyYXBwZXJJc1N0b3Jl
ZEluT2JqZWN0KToKKyAgICAgICAgICAgIC0gT3ZlcmxvYWRlZCBmdW5jdGlvbnMgdG8gZGV0ZXJt
aW5lIHdoZXRoZXIgdG8gc3RvcmUgdGhlIHdyYXBwZXIKKyAgICAgICAgICAgICAgaW5zaWRlIHRo
ZSBvYmplY3Qgb3IgaW4gdGhlIGhhc2htYXAuCisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3Rv
cmU6OmdldFdyYXBwZXJGcm9tT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9y
ZTo6c3RvcmVXcmFwcGVySW5PYmplY3QpOgorICAgICAgICAgICAgLSBPdmVybG9hZGVkIGZ1bmN0
aW9ucyB0byBnZXQvc2V0IHRoZSB3cmFwcGVyIGZyb20gaW5zaWRlIHRoZQorICAgICAgICAgICAg
ICBvYmplY3QgaXRzZWxmLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJIYXNoTWFwOjpnZXQpOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NV3JhcHBlckhhc2hNYXA6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFw
cGVySGFzaE1hcDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlckhhc2hNYXA6
OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJIYXNoTWFw
OjpyZW1vdmUpOgorICAgICAgICAgICAgLSBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vIGxvbmdlciB2
aXJ0dWFsLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L0ludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ldXRlckJp
bmRpbmcpOgorICAgICAgICAgICAgLSBXZSBuZWVkIHRvIGtlZXAgdGhlIHR5cGUgaW5mb3JtYXRp
b24gc2xpZ2h0bHkgbG9uZ2VyIHNvIHRoYXQgd2UKKyAgICAgICAgICAgICAgbG9vayBpbiB0aGUg
cmlnaHQgd3JhcHBlciBtYXAuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuY3BwOiBS
ZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NTWFwLmg6IFJlbW92ZWQuCisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Z2V0Q2FjaGVkV3JhcHBlcik6
CisgICAgICAgICAgICAtIERlZmVyIHRoaXMgd29yayB0byB0aGUgc3RvcmUuCisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdyYXBwZXI6OnNldFdyYXBwZXJDbGFzcyk6CisgICAgICAgICAgICAtIEFu
IG92ZXJsb2FkZWQgZnVuY3Rpb24gdG8gc2V0IHRoZSByaWdodCB3cmFwcGVyIGNsYXNzLgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QpOgor
ICAgICAgICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBnZW5lcmFsIGVub3VnaCB0byBoYW5k
bGUgZXZlciBraW5kIG9mIG9iamVjdC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJv
bGxlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6CisgICAgICAg
ICogYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6djhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayk6CisgICAg
ICAgICAgICAtIENhbGwgdGhlIG1vcmUgZ2VuZXJhbCBmdW5jdGlvbiAoaW5zdGVhZCBvZiB0aGUg
bm93LWRlbGV0ZWQgc3BlY2lhbGl6ZWQgZnVuY3Rpb24pLgorCiAyMDEyLTExLTA1ICBLZW50YXJv
IEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgYSBjb21tZW50IGFi
b3V0IGEgcmV0dXJuIHZhbHVlIG9mIElEQktleTo6dG9WOCgpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDYyNmVjNTczZGRjZTM1ZjZkMTBkMDU4YjM5NGJjN2FkMTQyNWU4ZjcuLjA5MGIx
OTAzOGZkNWM5NWNiZTdkYmFhMWUzZmJhNTFhN2YwYWNhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTEtMDUgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBbVjhdIEludHJ1c2l2ZURPTVdyYXBwZXJNYXAgc2hvdWxk
IGJlIHVzYWJsZSBmb3IgbW9yZSB0aGFuIGp1c3QgTm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTExMAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYlNjcmlwdENvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAgICAgLSBSZW1vdmUgdW5uZWVkZWQgaW5jbHVkZSBvZiBkZWxldGVkIGZpbGUu
CisKIDIwMTItMTEtMDUgIE1pZ3VlbCBHYXJjaWEgIDxtaWd1ZWxnQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbQ2hyb21pdW1dIERpc2FibGUgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIgb24gQW5k
cm9pZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UgYi9Tb3VyY2UvV2Vi
Q29yZS9Vc2VWOC5jbWFrZQppbmRleCBiNjM1OGY3Yzc2NWZkYmRkYWQxNWZlNDgwYThkZDMwM2E1
NTc3Y2U4Li43ZGUwOTRjNjA2MTY1ZDc4ZmZhNDIwN2U4YmYyOGIwNGMxMDk0ZDUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VW
OC5jbWFrZQpAQCAtNDgsNyArNDgsNiBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAg
ICBiaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9u
LmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAsCi0gICAgYmluZGlu
Z3MvdjgvVjhET01NYXAuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAK
ICAgICBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhFdmVu
dExpc3RlbmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDE4MjA1NDk5NmU2YWFlY2JmZmFkMWFj
ZmJhYmUzMGNhOWIxNmU1YzIuLjZkNTQzYWMwNjkyYzlmYWE2N2E0MDczMzVlMjU2ZGQ3MTY5YzE0
MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTIyMzMsNyArMjIzMyw2IEBACiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvRGF0ZUV4dGVuc2lvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9J
REJCaW5kaW5nVXRpbGl0aWVzLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSURCQmlu
ZGluZ1V0aWxpdGllcy5oJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9JbnRydXNpdmVET01X
cmFwcGVyTWFwLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJh
bWUuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L05QT2JqZWN0V3JhcHBlci5jcHAnLApAQCAtMjMw
Miw4ICsyMzAxLDYgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERlcGVuZGVudFJldGFp
bmVkLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAn
LAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5oJywKLSAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9WOERPTU1hcC5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdz
L3Y4L1Y4RE9NTWFwLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hl
bGwuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCA2Zjk5
NWNiODRjNDhiNjgzYTVkYTkzNjQzZDRjZTA3MTIxOWE0N2NmLi4yZDlmOTEyZTJiNzgzMDlhM2Qx
ODQ5OThlODBhNWYyZmE0YzA2NzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtNTAyLDggKzUwMiw3IEBAIEVORAogdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiAke2NsYXNzTmFtZX06OndyYXAoJHtuYXRpdmVUeXBlfSogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogewogRU5ECi0gICAgbXkgJGRvbU1hcEZ1bmN0aW9uID0gR2V0RG9tTWFwRnVuY3Rp
b24oJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSwgImlzb2xhdGUiKTsKLSAgICBteSAkZ2V0Q2Fj
aGVkV3JhcHBlciA9IElzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSA/ICJWOERPTVdyYXBwZXI6Omdl
dENhY2hlZFdyYXBwZXIoaW1wbCkiIDogIiR7ZG9tTWFwRnVuY3Rpb259LmdldChpbXBsKSI7Cisg
ICAgbXkgJGdldENhY2hlZFdyYXBwZXIgPSBJc05vZGVTdWJUeXBlKCRkYXRhTm9kZSkgPyAiVjhE
T01XcmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKGltcGwpIiA6ICJET01EYXRhU3RvcmU6OmN1cnJl
bnQoaXNvbGF0ZSktPmdldChpbXBsKSI7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQp
OwogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSAkZ2V0Q2FjaGVkV3Jh
cHBlcjsKICAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKQEAgLTEwMzcsOCArMTAzNiw3
IEBAIEVORAogICAgICAgICAjIENoZWNrIGZvciBhIHdyYXBwZXIgaW4gdGhlIHdyYXBwZXIgY2Fj
aGUuIElmIHRoZXJlIGlzIG9uZSwgd2Uga25vdyB0aGF0IGEgaGlkZGVuIHJlZmVyZW5jZSBoYXMg
YWxyZWFkeQogICAgICAgICAjIGJlZW4gY3JlYXRlZC4gSWYgd2UgZG9uJ3QgZmluZCBhIHdyYXBw
ZXIsIHdlIGNyZWF0ZSBib3RoIGEgd3JhcHBlciBhbmQgYSBoaWRkZW4gcmVmZXJlbmNlLgogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIFJlZlB0cjwkcmV0dXJuVHlwZT4gcmVz
dWx0ID0gJHtnZXR0ZXJTdHJpbmd9O1xuIik7Ci0gICAgICAgIG15ICRkb21NYXBGdW5jdGlvbiA9
IEdldERvbU1hcEZ1bmN0aW9uKCRkYXRhTm9kZSwgJGludGVyZmFjZU5hbWUsICJpbmZvLkdldElz
b2xhdGUoKSIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB3cmFwcGVyID0gcmVzdWx0LmdldCgpID8gJHtkb21NYXBGdW5jdGlvbn0u
Z2V0KHJlc3VsdC5nZXQoKSkgOiB2OFVuZGVmaW5lZCgpO1xuIik7CisgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSByZXN1
bHQuZ2V0KCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlu
Zm8uR2V0SXNvbGF0ZSgpKS0+Z2V0KHJlc3VsdC5nZXQoKSkpIDogdjhVbmRlZmluZWQoKTtcbiIp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmICh3cmFwcGVyLklzRW1w
dHkoKSkge1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHdy
YXBwZXIgPSB0b1Y4KHJlc3VsdC5nZXQoKSwgaW5mby5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRl
KCkpO1xuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIGlmICgh
d3JhcHBlci5Jc0VtcHR5KCkpXG4iKTsKQEAgLTE5NDIsMTEgKzE5NDAsMTAgQEAgRU5ECiAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBnb3RvIGZhaWw7XG4iKTsKICAgICB9CiAK
LSAgICBteSAkRE9NT2JqZWN0ID0gR2V0RG9tTWFwTmFtZSgkZGF0YU5vZGUsICRpbXBsQ2xhc3NO
YW1lKTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCiAgICAgVjhET01XcmFwcGVy
OjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZpbmZvLCBpbXBsLmdldCgpKTsKLSAgICBWOERPTVdy
YXBwZXI6OnNldEpTV3JhcHBlckZvciR7RE9NT2JqZWN0fShpbXBsLnJlbGVhc2UoKSwgd3JhcHBl
ciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9y
RE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAg
ICAgcmV0dXJuIHdyYXBwZXI7CiBFTkQKIApAQCAtMjEzNCwxMSArMjEzMSwxMCBAQCBFTkQKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGdvdG8gZmFpbDtcbiIpOwogICAgIH0K
IAotICAgIG15ICRET01PYmplY3QgPSBHZXREb21NYXBOYW1lKCRkYXRhTm9kZSwgJGltcGxDbGFz
c05hbWUpOwogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAKICAgICBWOERPTVdyYXBw
ZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJlY4JHtpbXBsQ2xhc3NOYW1lfUNvbnN0cnVjdG9y
OjppbmZvLCBpbXBsLmdldCgpKTsKLSAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvciR7
RE9NT2JqZWN0fShpbXBsLnJlbGVhc2UoKSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOwor
ICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgp
LCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiBFTkQK
IApAQCAtMzQwMiw3ICszMzk4LDYgQEAgc3ViIEdlbmVyYXRlVG9WOENvbnZlcnRlcnMKICAgICBt
eSAkY2xhc3NOYW1lID0gc2hpZnQ7CiAgICAgbXkgJG5hdGl2ZVR5cGUgPSBzaGlmdDsKIAotICAg
IG15ICRkb21NYXBOYW1lID0gR2V0RG9tTWFwTmFtZSgkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1l
KTsKICAgICBteSAkd3JhcFNsb3dBcmd1bWVudFR5cGUgPSBHZXRQYXNzUmVmUHRyVHlwZSgkbmF0
aXZlVHlwZSk7CiAgICAgbXkgJGJhc2VUeXBlID0gQmFzZUludGVyZmFjZU5hbWUoJGRhdGFOb2Rl
KTsKIApAQCAtMzQ2Myw3ICszNDU4LDcgQEAgRU5ECiAgICAgICAgIHJldHVybiB3cmFwcGVyOwog
CiAgICAgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwot
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBw
ZXI6OnNldEpTV3JhcHBlckZvciR7ZG9tTWFwTmFtZX0oaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7
CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwog
ICAgIGlmICghaGFzRGVwZW5kZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFy
a0luZGVwZW5kZW50KCk7CiAgICAgcmV0dXJuIHdyYXBwZXI7CkBAIC0zNDcxLDI0ICszNDY2LDYg
QEAgRU5ECiBFTkQKIH0KIAotc3ViIEdldERvbU1hcEZ1bmN0aW9uCi17Ci0gICAgbXkgJGRhdGFO
b2RlID0gc2hpZnQ7Ci0gICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKLSAgICBteSAkZ2V0
SXNvbGF0ZSA9IHNoaWZ0OwotCi0gICAgcmV0dXJuICJnZXQiIC4gR2V0RG9tTWFwTmFtZSgkZGF0
YU5vZGUsICRpbnRlcmZhY2VOYW1lKSAuICJNYXAoIiAuICRnZXRJc29sYXRlIC4gIikiOwotfQot
Ci1zdWIgR2V0RG9tTWFwTmFtZQotewotICAgIG15ICRkYXRhTm9kZSA9IHNoaWZ0OwotICAgIG15
ICR0eXBlID0gc2hpZnQ7Ci0KLSAgICByZXR1cm4gIkRPTU5vZGUiIGlmIElzTm9kZVN1YlR5cGUo
JGRhdGFOb2RlKTsKLSAgICByZXR1cm4gIkRPTU9iamVjdCI7Ci19Ci0KIHN1YiBHZXROYXRpdmVU
eXBlRm9yQ29udmVyc2lvbnMKIHsKICAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJh
eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFy
cmF5LmgKaW5kZXggYWZiMDEzNDRlYmUxZWVhM2M3YjUwMjY4N2RkNjkyNWNkNjk5OWEyMC4uYmUw
MWIxYzA2ZGVmMzQxYWU4ZDg4ZjYyZWE5NzJiZDlmOGJkODQwZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgK
QEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOEZs
b2F0NjRBcnJheTo6d3JhcChGbG9hdDY0QXJyYXkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKGlzb2xhdGUpLmdl
dChpbXBsKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0
YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7CiAgICAgICAgIGlmICghd3JhcHBl
ci5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gVjhG
bG9hdDY0QXJyYXk6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggN2JhZWFjY2E5NzczM2E3Y2IwZmRiZGNj
NzIzNTVhN2M5YTAzNjViZS4uMTkyMzgxMGFiMDQ5ZTJhMzQxNmIzNDM2ZDhjOTRiNjJmZmViMGE2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEFjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaApAQCAtNTUsNyArNTUsNyBAQCBwcml2
YXRlOgogCiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6d3Jh
cChUZXN0QWN0aXZlRE9NT2JqZWN0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcChpc29sYXRlKS5nZXQoaW1wbCk7
CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6
Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIFY4VGVzdEFjdGl2
ZURPTU9iamVjdDo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RD
dXN0b21OYW1lZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKaW5kZXggZWEzMzRiMGU0Y2M5M2EzY2QxODQ0
ZjM1ZjI5ZmJjNWQ5NDcxNDNjZS4uOGM4OWMwYTI5ZGRhNTQ3ZjYxYjcyMjUxMjg1MWE1YWRiZWRl
NzVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKQEAgLTU0LDcgKzU0LDcg
QEAgcHJpdmF0ZToKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RDdXN0b21OYW1lZEdl
dHRlcjo6d3JhcChUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKGlzb2xhdGUp
LmdldChpbXBsKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9N
RGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7CiAgICAgICAgIGlmICghd3Jh
cHBlci5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4g
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAppbmRleCA5OTYxMjgwZjBl
ZjM3MjNmNWFiMmMyNDk5ODQ0NTg3MmI4NWFkYzdiLi42MjlhNWI1NWU5Yjc2NmM4ZGZjYzMxY2Ni
MmQ1MTM3OTUyMDczYjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKQEAgLTU1
LDcgKzU1LDcgQEAgcHJpdmF0ZToKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RFdmVu
dENvbnN0cnVjdG9yOjp3cmFwKFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0g
ICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcChp
c29sYXRlKS5nZXQoaW1wbCk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpOwogICAgICAgICBp
ZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAg
cmV0dXJuIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oCmluZGV4IGY5YjFmN2FmMTZmZTgw
OGQ1YWFmMDRjNjlkYjE3MTlhYzRlMDFiOTEuLjliNjhlMzRlMWZmMWFmYjFmYmNjN2Y1YmY0ZjQ5
NjEwZmUzMmEyNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oCkBAIC01Niw3ICs1Niw3IEBAIHBy
aXZhdGU6CiAKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRUYXJnZXQ6OndyYXAo
VGVzdEV2ZW50VGFyZ2V0KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcChpc29sYXRlKS5nZXQoaW1wbCk7CisgICAg
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVu
dChpc29sYXRlKS0+Z2V0KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQog
ICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIFY4VGVzdEV2ZW50VGFyZ2V0
Ojp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlv
bi5oCmluZGV4IDk5YWZlOGIxNjM5YjJiN2E1ZDJiMzBiMjhlZDI5MmM3ZTRmNjkzNzcuLjcxYjk0
NzhkM2ZlOTVlMDc4NTNmNTIxMTAwYjc3ODdkNDE4NDI0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgK
QEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRl
c3RFeGNlcHRpb246OndyYXAoVGVzdEV4Y2VwdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRET01PYmplY3RNYXAoaXNvbGF0ZSku
Z2V0KGltcGwpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01E
YXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsKTsKICAgICAgICAgaWYgKCF3cmFw
cGVyLklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiBW
OFRlc3RFeGNlcHRpb246OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0SW50ZXJmYWNlLmgKaW5kZXggODdjYTBiOGFkYzU0N2QyYjdlOTUwMWU4MjBhZmFkMzNm
ZTlkMzU0Zi4uNzVmZDExZmYyNmMzMTU3OTBkNmQzY2FkMDVkMDM2Yzg0MWQ3YzA4OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVy
ZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RJbnRlcmZhY2UuaApAQCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogCiB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IFY4VGVzdEludGVyZmFjZTo6d3JhcChUZXN0SW50ZXJmYWNlKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVj
dE1hcChpc29sYXRlKS5nZXQoaW1wbCk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpOwogICAg
ICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7
CiAgICAgcmV0dXJuIFY4VGVzdEludGVyZmFjZTo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5o
CmluZGV4IGY4ODU5ODA0NmNlODU4YWUyNDk3MTI3ZTkyN2I0ZDQ2YmNjZGMzNjUuLjdiYTRhNTY0
MTZjZWIzZjY4NzM1ZTRhYWRjOTgyZTA1NzlhNTUyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApAQCAtNTMsNyArNTMsNyBAQCBwcml2YXRlOgogCiB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OndyYXAoVGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICAgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKGlzb2xhdGUpLmdldChpbXBs
KTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0b3Jl
OjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7CiAgICAgICAgIGlmICghd3JhcHBlci5Jc0Vt
cHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCmluZGV4IDk5NTk5ZTYyNWIyMGMy
NDVlNzkwZDE1NDFmOWMwZWIwZjBkMTk1MjMuLmIwZjM0NzFjODk3M2QwYTkxZDFlMTY0NmI4NmRl
NTRkYzQzYjNhNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaApAQCAtNjAsNyAr
NjAsNyBAQCBwcml2YXRlOgogCiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE5hbWVkQ29u
c3RydWN0b3I6OndyYXAoVGVzdE5hbWVkQ29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKGlzb2xh
dGUpLmdldChpbXBsKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
RE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7CiAgICAgICAgIGlmICgh
d3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1
cm4gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0
LCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROb2RlLmNwcAppbmRleCBhNWRlNGI2M2E3NDlmNTk4ODZhNzU0NGI5YzIx
ZjJkNTljM2NmMTYwLi4xM2ViYzY1YWU0YmU4ZGY5YTJiNWUyYjllYjI2MmExZDhjM2NmZDBiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5vZGUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRl
c3ROb2RlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKIAogICAg
IFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7
Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01Ob2RlKGltcGwucmVsZWFzZSgp
LCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dy
YXBwZXJGb3JET01PYmplY3QoaW1wbC5yZWxlYXNlKCksIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApAQCAtMTM1LDcgKzEzNSw3IEBAIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0Tm9kZTo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0Tm9k
ZT4gaW1wbCwgdjg6OkhhbmRsCiAgICAgICAgIHJldHVybiB3cmFwcGVyOwogCiAgICAgaW5zdGFs
bFBlckNvbnRleHRQcm9wZXJ0aWVzKHdyYXBwZXIsIGltcGwuZ2V0KCkpOwotICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpTV3Jh
cHBlckZvckRPTU5vZGUoaW1wbCwgd3JhcHBlciwgaXNvbGF0ZSk7CisgICAgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVy
Rm9yRE9NT2JqZWN0KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOwogICAgIGlmICghaGFzRGVwZW5k
ZW50TGlmZXRpbWUpCiAgICAgICAgIHdyYXBwZXJIYW5kbGUuTWFya0luZGVwZW5kZW50KCk7CiAg
ICAgcmV0dXJuIHdyYXBwZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDJkYzczNjYxOGEyYjk2MWQ4OTJhZTFk
MDlmYmZiODM1ZWY3OGIyZGIuLjI1YjZiNGI5ZGRjMjU2ZWQ1NWViMWU3YzMxZDA3YmUzN2FhZmYz
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiByZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmlu
Zz4KICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnJlYWRPbmx5VGVzdE9iakF0dHIuX2dldCIp
OwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CiAgICAgUmVmUHRyPFRlc3RPYmo+IHJlc3VsdCA9IGltcC0+cmVhZE9ubHlUZXN0T2JqQXR0cigp
OwotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gcmVzdWx0LmdldCgpID8gZ2V0
RE9NT2JqZWN0TWFwKGluZm8uR2V0SXNvbGF0ZSgpKS5nZXQocmVzdWx0LmdldCgpKSA6IHY4VW5k
ZWZpbmVkKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSByZXN1bHQuZ2V0
KCkgPyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oRE9NRGF0YVN0b3JlOjpjdXJyZW50KGluZm8uR2V0
SXNvbGF0ZSgpKS0+Z2V0KHJlc3VsdC5nZXQoKSkpIDogdjhVbmRlZmluZWQoKTsKICAgICBpZiAo
d3JhcHBlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgd3JhcHBlciA9IHRvVjgocmVzdWx0LmdldCgp
LCBpbmZvLkhvbGRlcigpLCBpbmZvLkdldElzb2xhdGUoKSk7CiAgICAgICAgIGlmICghd3JhcHBl
ci5Jc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmgKaW5kZXggNjIxZTI5N2FmMzk5OWYwMzhlZDlmZGMxNzBiZTg5NmI3
YWQ2YjJjZi4uOTQzODk1MmM4ODIyZTkzZTg3M2Y2Zjg5MDcwODIzMDQxODJkM2JmYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmou
aApAQCAtNTksNyArNTksNyBAQCBwcml2YXRlOgogCiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4
VGVzdE9iajo6d3JhcChUZXN0T2JqKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcChpc29sYXRlKS5nZXQoaW1wbCk7
CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6
Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIFY4VGVzdE9iajo6
d3JhcFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAppbmRleCA2M2MyMjJh
MGIwYzE2ZGU5ZTllNzQyM2E1ZDU2ZTEwN2IwMTgwNDUwLi4zOTcwMTY4NTBkYjVlYmU4ZjM1ZGY0
OWY3MjRkODZkYjJjOTU2NDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCkBAIC01Niw3ICs1Niw3IEBAIHByaXZhdGU6CiAKIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
Ojp3cmFwKFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsK
LSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFw
KGlzb2xhdGUpLmdldChpbXBsKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
cGVyID0gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7CiAgICAgICAg
IGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAg
ICByZXR1cm4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjp3cmFwU2xvdyhp
bXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTURhdGFTdG9yZS5jcHAKaW5kZXggYjRmOWRhZjdkYjcyYTgzNzYzMDBmMjg2MmQwNTU3
NGQzZTg5NGU3MC4uYzQ5NWJiNTk2ZTRjZGE0N2UxMjE2ZGI3ZmIxYTRlMWRiNTM4ZjE1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCkBAIC0zMSw4ICsz
MSw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgiCiAK
LSNpbmNsdWRlICJET01XcmFwcGVyTWFwLmgiCi0jaW5jbHVkZSAiSW50cnVzaXZlRE9NV3JhcHBl
ck1hcC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJ
bnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgpAQCAtNDIsMTcg
KzQwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogRE9NRGF0YVN0b3JlOjpET01EYXRhU3RvcmUo
VHlwZSB0eXBlKQogICAgIDogbV90eXBlKHR5cGUpCiB7Ci0gICAgaWYgKHR5cGUgPT0gTWFpbldv
cmxkKQotICAgICAgICBtX2RvbU5vZGVNYXAgPSBhZG9wdFB0cihuZXcgSW50cnVzaXZlRE9NV3Jh
cHBlck1hcDxOb2RlPik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIEFTU0VSVCh0eXBlID09IElzb2xh
dGVkV29ybGQgfHwgdHlwZSA9PSBXb3JrZXIpOwotICAgICAgICAvLyBGSVhNRTogSW4gcHJpbmNp
cGxlLCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBjcmVhdGUgdGhpcwotICAgICAgICAvLyB3cmFwcGVy
IG1hcCBmb3Igd29ya2VycyBiZWNhdXNlIHRoZXJlIGFyZSBubyBOb2RlcyBvbgotICAgICAgICAv
LyB3b3JrZXIgdGhyZWFkcy4KLSAgICAgICAgbV9kb21Ob2RlTWFwID0gYWRvcHRQdHIobmV3IERP
TVdyYXBwZXJIYXNoTWFwPE5vZGU+KTsKLSAgICB9Ci0gICAgbV9kb21PYmplY3RNYXAgPSBhZG9w
dFB0cihuZXcgRE9NV3JhcHBlckhhc2hNYXA8dm9pZD4pOwotCiAgICAgVjhQZXJJc29sYXRlRGF0
YTo6Y3VycmVudCgpLT5yZWdpc3RlckRPTURhdGFTdG9yZSh0aGlzKTsKIH0KIApAQCAtNjEsMTUg
KzQ4LDE0IEBAIERPTURhdGFTdG9yZTo6fkRPTURhdGFTdG9yZSgpCiAgICAgQVNTRVJUKG1fdHlw
ZSAhPSBNYWluV29ybGQpOyAvLyBXZSBuZXZlciBhY3R1YWxseSBkZXN0cnVjdCB0aGUgbWFpbiB3
b3JsZCdzIERPTURhdGFTdG9yZS4KIAogICAgIFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+
dW5yZWdpc3RlckRPTURhdGFTdG9yZSh0aGlzKTsKLQotICAgIGlmIChtX3R5cGUgPT0gSXNvbGF0
ZWRXb3JsZCkKLSAgICAgICAgbV9kb21Ob2RlTWFwLT5jbGVhcigpOwotICAgIG1fZG9tT2JqZWN0
TWFwLT5jbGVhcigpOworICAgIG1faGFzaE1hcC5jbGVhcigpOwogfQogCiBET01EYXRhU3RvcmUq
IERPTURhdGFTdG9yZTo6Y3VycmVudCh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKERPTURhdGFTdG9yZSwgZGVmYXVsdFN0b3JlLCAoTWFpbldvcmxkKSk7
CisgICAgaWYgKCFpc29sYXRlKQorICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1
cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKTsKICAgICBpZiAoVU5MSUtFTFkoISFkYXRhLT5kb21EYXRhU3RvcmUoKSkp
CiAgICAgICAgIHJldHVybiBkYXRhLT5kb21EYXRhU3RvcmUoKTsKQEAgLTgyLDggKzY4LDIzIEBA
IERPTURhdGFTdG9yZSogRE9NRGF0YVN0b3JlOjpjdXJyZW50KHY4OjpJc29sYXRlKiBpc29sYXRl
KQogdm9pZCBET01EYXRhU3RvcmU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVt
b3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpCaW5kaW5nKTsKLSAgICBp
bmZvLmFkZE1lbWJlcihtX2RvbU5vZGVNYXApOwotICAgIGluZm8uYWRkTWVtYmVyKG1fZG9tT2Jq
ZWN0TWFwKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX2hhc2hNYXApOworfQorCit2b2lkIERPTURh
dGFTdG9yZTo6d2Vha0NhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUsIHZv
aWQqIGNvbnRleHQpCit7CisgICAgU2NyaXB0V3JhcHBhYmxlKiBrZXkgPSBzdGF0aWNfY2FzdDxT
Y3JpcHRXcmFwcGFibGUqPihjb250ZXh0KTsKKyAgICBBU1NFUlQodmFsdWUtPklzT2JqZWN0KCkp
OworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7CisgICAgQVNTRVJUKGtleS0+d3JhcHBlcigpID09
IHdyYXBwZXIpOworICAgIHZvaWQqIG9iamVjdCA9IHRvTmF0aXZlKHdyYXBwZXIpOworICAgIC8v
IE5vdGU6IHxvYmplY3R8IG1pZ2h0IG5vdCBiZSBlcXVhbCB0byB8a2V5fCwgZS5nLiwgaWYgU2Ny
aXB0V3JhcHBhYmxlIGlzbid0IGEgbGVmdC1tb3N0IGJhc2UgY2xhc3MuCisgICAgV3JhcHBlclR5
cGVJbmZvKiB0eXBlID0gdG9XcmFwcGVyVHlwZUluZm8od3JhcHBlcik7CisKKyAgICBrZXktPmNs
ZWFyV3JhcHBlcigpOworICAgIHZhbHVlLkRpc3Bvc2UoKTsKKyAgICB2YWx1ZS5DbGVhcigpOwor
ICAgIHR5cGUtPmRlcmVmT2JqZWN0KG9iamVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggZjBjYzcw
ODUyMDA1YzAzNjM0YmQzMDFlMWQxNDg5YTA4YTUxZWI2OC4uMTJhOTY0YTc3Zjk4N2ViNTI0M2Q3
YTBlYmU2MzA2NDJlMGNlOTE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvRE9NRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmgKQEAgLTU3LDE3ICs1Nyw0OSBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRE9NRGF0
YVN0b3JlKFR5cGUpOwogICAgIH5ET01EYXRhU3RvcmUoKTsKIAotICAgIHN0YXRpYyBET01EYXRh
U3RvcmUqIGN1cnJlbnQodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgRE9NRGF0YVN0b3JlKiBj
dXJyZW50KHY4OjpJc29sYXRlKiA9IDApOwogCi0gICAgRE9NV3JhcHBlck1hcDxOb2RlPiYgZG9t
Tm9kZU1hcCgpIHsgcmV0dXJuICptX2RvbU5vZGVNYXA7IH0KLSAgICBET01XcmFwcGVyTWFwPHZv
aWQ+JiBkb21PYmplY3RNYXAoKSB7IHJldHVybiAqbV9kb21PYmplY3RNYXA7IH0KKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgorICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldChU
KiBvYmplY3QpIGNvbnN0CisgICAgeworICAgICAgICBpZiAod3JhcHBlcklzU3RvcmVkSW5PYmpl
Y3Qob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBnZXRXcmFwcGVyRnJvbU9iamVjdChvYmpl
Y3QpOworICAgICAgICByZXR1cm4gbV9oYXNoTWFwLmdldChvYmplY3QpOworICAgIH0KKworICAg
IC8vIFRha2VzIG93bmVyc2hpcCBvZiB8b2JqZWN0fCBhbmQgfHdyYXBwZXJ8LgorICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CisgICAgaW5saW5lIHZvaWQgc2V0KFQqIG9iamVjdCwgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKKyAgICB7CisgICAgICAgIGlmIChzdG9yZVdyYXBw
ZXJJbk9iamVjdChvYmplY3QsIHdyYXBwZXIpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBtX2hhc2hNYXAuc2V0KG9iamVjdCwgd3JhcHBlcik7CisgICAgfQogCiAgICAgdm9pZCByZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKIHByb3RlY3RlZDoKKyAg
ICBpbmxpbmUgYm9vbCB3cmFwcGVySXNTdG9yZWRJbk9iamVjdCh2b2lkKikgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICBpbmxpbmUgYm9vbCB3cmFwcGVySXNTdG9yZWRJbk9iamVjdChTY3Jp
cHRXcmFwcGFibGUqKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTWFpbldvcmxkOyB9CisKKyAg
ICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXRXcmFwcGVyRnJvbU9iamVjdCh2b2lk
KiBvYmplY3QpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KCk7IH0KKyAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXRX
cmFwcGVyRnJvbU9iamVjdChTY3JpcHRXcmFwcGFibGUqIGtleSkgY29uc3QgeyByZXR1cm4ga2V5
LT53cmFwcGVyKCk7IH0KKworICAgIGlubGluZSBib29sIHN0b3JlV3JhcHBlckluT2JqZWN0KHZv
aWQqLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBp
bmxpbmUgYm9vbCBzdG9yZVdyYXBwZXJJbk9iamVjdChTY3JpcHRXcmFwcGFibGUqIGtleSwgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKKyAgICB7CisgICAgICAgIGlmIChtX3R5
cGUgIT0gTWFpbldvcmxkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBBU1NF
UlQoa2V5LT53cmFwcGVyKCkuSXNFbXB0eSgpKTsKKyAgICAgICAga2V5LT5zZXRXcmFwcGVyKHdy
YXBwZXIpOworICAgICAgICB3cmFwcGVyLk1ha2VXZWFrKGtleSwgd2Vha0NhbGxiYWNrKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNr
KHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gdmFsdWUsIHZvaWQqIGNvbnRleHQpOworCiAgICAg
VHlwZSBtX3R5cGU7Ci0gICAgT3duUHRyPERPTVdyYXBwZXJNYXA8Tm9kZT4gPiBtX2RvbU5vZGVN
YXA7Ci0gICAgT3duUHRyPERPTVdyYXBwZXJNYXA8dm9pZD4gPiBtX2RvbU9iamVjdE1hcDsKKyAg
ICBET01XcmFwcGVySGFzaE1hcDx2b2lkPiBtX2hhc2hNYXA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFw
cGVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyTWFwLmgKaW5k
ZXggYjRjMjVkOWU0YTQ5ZmMyMDQ2OWNmNzFjMjZlMzFmZmRkNGNhMDZlOS4uZjM5YzhkODJlZGJk
MTAyN2QwMjk0Y2VmNzA0MDg4NWFkNzg4NGUyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NV3JhcHBlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L0RPTVdyYXBwZXJNYXAuaApAQCAtMzksMjIgKzM5LDggQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBET01EYXRhU3RvcmU7Ci0KLXRlbXBsYXRlPGNsYXNzIEtleVR5cGU+Ci1j
bGFzcyBET01XcmFwcGVyTWFwIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5ET01XcmFwcGVyTWFw
KCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGdldChLZXlU
eXBlKikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXQoS2V5VHlwZSosIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyKCkgPSAwOwotCi0gICAg
dmlydHVhbCB2b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdCA9
IDA7Ci19OwotCiB0ZW1wbGF0ZTxjbGFzcyBLZXlUeXBlPgotY2xhc3MgRE9NV3JhcHBlckhhc2hN
YXAgOiBwdWJsaWMgRE9NV3JhcHBlck1hcDxLZXlUeXBlPiB7CitjbGFzcyBET01XcmFwcGVySGFz
aE1hcCB7CiBwdWJsaWM6CiAgICAgdHlwZWRlZiBIYXNoTWFwPEtleVR5cGUqLCB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0PiA+IE1hcFR5cGU7CiAKQEAgLTYzLDEyICs0OSwxMiBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
Z2V0KEtleVR5cGUqIGtleSkgT1ZFUlJJREUKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
PiBnZXQoS2V5VHlwZSoga2V5KSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWFwLmdl
dChrZXkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBzZXQoS2V5VHlwZSoga2V5LCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKSBPVkVSUklERQorICAgIHZvaWQgc2V0KEtl
eVR5cGUqIGtleSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKICAgICB7CiAg
ICAgICAgIEFTU0VSVCghbV9tYXAuY29udGFpbnMoa2V5KSk7CiAgICAgICAgIEFTU0VSVChzdGF0
aWNfY2FzdDxLZXlUeXBlKj4odG9OYXRpdmUod3JhcHBlcikpID09IGtleSk7CkBAIC03Niw3ICs2
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9tYXAuc2V0KGtleSwgd3JhcHBlcik7CiAgICAgfQog
Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyKCkgT1ZFUlJJREUKKyAgICB2b2lkIGNsZWFyKCkKICAg
ICB7CiAgICAgICAgIGZvciAodHlwZW5hbWUgTWFwVHlwZTo6aXRlcmF0b3IgaXQgPSBtX21hcC5i
ZWdpbigpOyBpdCAhPSBtX21hcC5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IGl0LT52YWx1ZTsKQEAgLTg3LDEzICs3MywxMyBA
QCBwdWJsaWM6CiAgICAgICAgIG1fbWFwLmNsZWFyKCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0IE9WRVJSSURFCisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdAogICAgIHsKICAgICAgICAgTWVtb3J5Q2xhc3NJ
bmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpCaW5k
aW5nKTsKICAgICAgICAgaW5mby5hZGRNZW1iZXIobV9tYXApOwogICAgIH0KIAotICAgIHZpcnR1
YWwgdm9pZCByZW1vdmUoS2V5VHlwZSoga2V5LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3
cmFwcGVyKQorICAgIHZvaWQgcmVtb3ZlKEtleVR5cGUqIGtleSwgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gd3JhcHBlcikKICAgICB7CiAgICAgICAgIHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJh
dG9yIGl0ID0gbV9tYXAuZmluZChrZXkpOwogICAgICAgICBBU1NFUlQoaXQgIT0gbV9tYXAuZW5k
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldv
cmxkLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaAppbmRl
eCA2OGVlNmU5Y2Y1NDRlNmEzNDY0Zjg2ZjFjNDAyMTA0YjY4MjgwZmM5Li41ZGYzMDU4MTVkMjRm
YmQ0NjhjOGYxMDMyOTdhYzU4YjlkYTIyYjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9ET01XcmFwcGVyV29ybGQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01XcmFwcGVyV29ybGQuaApAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiRE9N
RGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbmNsdWRlICJWOERP
TU1hcC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFwcGVyTWFwLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9JbnRydXNpdmVET01XcmFwcGVyTWFwLmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDEyMjQ2YjY3NTE2OWIxYzNkMDNkNmM2NDMzZmRiZDA1N2M2YmEyYTkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBlck1hcC5oCisrKyAvZGV2L251bGwKQEAg
LTEsODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICog
bWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLSNpZm5kZWYgSW50cnVzaXZlRE9NV3JhcHBlck1hcF9oCi0jZGVmaW5lIElu
dHJ1c2l2ZURPTVdyYXBwZXJNYXBfaAotCi0jaW5jbHVkZSAiRE9NV3JhcHBlck1hcC5oIgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXRlbXBsYXRlPGNsYXNzIEtleVR5cGU+Ci1jbGFzcyBJbnRy
dXNpdmVET01XcmFwcGVyTWFwIDogcHVibGljIERPTVdyYXBwZXJNYXA8S2V5VHlwZT4gewotcHVi
bGljOgotICAgIHZpcnR1YWwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gZ2V0KEtleVR5cGUq
IGtleSkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIHJldHVybiBrZXktPndyYXBwZXIoKTsKLSAg
ICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0KEtleVR5cGUqIGtleSwgdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gd3JhcHBlcikgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAgIEFTU0VSVChrZXkg
JiYga2V5LT53cmFwcGVyKCkuSXNFbXB0eSgpKTsKLSAgICAgICAga2V5LT5zZXRXcmFwcGVyKHdy
YXBwZXIpOwotICAgICAgICB3cmFwcGVyLk1ha2VXZWFrKGtleSwgd2Vha0NhbGxiYWNrKTsKLSAg
ICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHJlcG9ydE1l
bW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0IE9WRVJS
SURFCi0gICAgewotICAgICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkJpbmRpbmcpOwotICAgICAgICBVTlVTRURfUEFS
QU0oaW5mbyk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFj
ayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHZhbHVlLCB2b2lkKiBjb250ZXh0KQotICAgIHsK
LSAgICAgICAgS2V5VHlwZSoga2V5ID0gc3RhdGljX2Nhc3Q8S2V5VHlwZSo+KGNvbnRleHQpOwot
ICAgICAgICBBU1NFUlQodmFsdWUtPklzT2JqZWN0KCkpOwotICAgICAgICBBU1NFUlQoa2V5LT53
cmFwcGVyKCkgPT0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKTsKLQot
ICAgICAgICBrZXktPmNsZWFyV3JhcHBlcigpOwotICAgICAgICB2YWx1ZS5EaXNwb3NlKCk7Ci0g
ICAgICAgIHZhbHVlLkNsZWFyKCk7Ci0gICAgICAgIGtleS0+ZGVyZWYoKTsKLSAgICB9Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwCmluZGV4IGM4NDBmMjI4MWQ3NTc0NTE4MWRiMmRl
ZTI0YjRmMDY0MDAxOGYzMmMuLmZmNTdjM2NlMjRjZWZiNzI1MWZhMjM4ZGYzZWY4MzhjZTAwMjFk
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAK
QEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlICJW
OEFycmF5QnVmZmVyVmlldy5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4
RE9NTWFwLmgiCiAjaW5jbHVkZSAiVjhOb2RlLmgiCiAjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUlu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5k
ZXggMGY2MDQyMTI4NzUyZTQxN2FhNDE0YWVjMTkxN2RiZTcwZGRjMWI1OS4uZDEyZDA4NTNkNDQ3
ZmQ2MzE3ZjU2MDI0NjYwODJjOThhNzc1ZjgwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yMjA2LDEzICsyMjA2
LDE0IEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKCkKIHsK
IH0KIAotc3RhdGljIHZvaWQgbmV1dGVyQmluZGluZyh2b2lkKiBkb21PYmplY3QpIAordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK2lubGluZSB2b2lkIG5ldXRlckJpbmRpbmcoVCogb2JqZWN0KSAKIHsK
ICAgICBWZWN0b3I8RE9NRGF0YVN0b3JlKj4mIGFsbFN0b3JlcyA9IFY4UGVySXNvbGF0ZURhdGE6
OmN1cnJlbnQoKS0+YWxsU3RvcmVzKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbGxT
dG9yZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmog
PSBhbGxTdG9yZXNbaV0tPmRvbU9iamVjdE1hcCgpLmdldChkb21PYmplY3QpOwotICAgICAgICBp
ZiAoIW9iai5Jc0VtcHR5KCkpCi0gICAgICAgICAgICBvYmotPlNldEluZGV4ZWRQcm9wZXJ0aWVz
VG9FeHRlcm5hbEFycmF5RGF0YSgwLCB2ODo6a0V4dGVybmFsQnl0ZUFycmF5LCAwKTsKKyAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYWxsU3RvcmVzW2ldLT5nZXQob2Jq
ZWN0KTsKKyAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgICAgIHdyYXBw
ZXItPlNldEluZGV4ZWRQcm9wZXJ0aWVzVG9FeHRlcm5hbEFycmF5RGF0YSgwLCB2ODo6a0V4dGVy
bmFsQnl0ZUFycmF5LCAwKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NTWFwLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQzMzdlMDk2ZmU0MTRl
MWI3NmY3MmE2MDg2YzBmMDdmYTdkMmYxYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1
ZGUgIlY4RE9NTWFwLmgiCi0KLSNpbmNsdWRlICJET01EYXRhU3RvcmUuaCIKLSNpbmNsdWRlICJW
OEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOE5vZGUuaCIKLSNpbmNsdWRlIDx3dGYvTWFpblRocmVh
ZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURPTVdyYXBwZXJNYXA8Tm9kZT4mIGdldERP
TU5vZGVNYXAodjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAgaWYgKCFpc29sYXRlKQotICAg
ICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKLSAgICByZXR1cm4gRE9N
RGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5kb21Ob2RlTWFwKCk7Ci19Ci0KLURPTVdyYXBw
ZXJNYXA8dm9pZD4mIGdldERPTU9iamVjdE1hcCh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsKLSAg
ICBpZiAoIWlzb2xhdGUpCi0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVu
dCgpOwotICAgIHJldHVybiBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmRvbU9iamVj
dE1hcCgpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhET01NYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhjN2QyODllMDNh
YTIxZDIxNjM3ODFjYmI1ZWVhZGE0NTM1NmM2YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTU1hcC5o
CisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVjhET01NYXBfaAotI2RlZmlu
ZSBWOERPTU1hcF9oCi0KLSNpbmNsdWRlICJET01XcmFwcGVyTWFwLmgiCi0jaW5jbHVkZSAiTm9k
ZS5oIgotI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJbnN0cnVtZW50YXRpb24uaCIKLSNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
Ci0jaW5jbHVkZSA8djguaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ET01XcmFwcGVyTWFw
PE5vZGU+JiBnZXRET01Ob2RlTWFwKHY4OjpJc29sYXRlKiA9IDApOwotRE9NV3JhcHBlck1hcDx2
b2lkPiYgZ2V0RE9NT2JqZWN0TWFwKHY4OjpJc29sYXRlKiA9IDApOwotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBWOERPTU1hcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCmluZGV4IDRkMzdmYzkzY2EzYjM0Nzk1NjAw
NjY3MzIyYmRiNzNiYmVlMmM5MDguLjAyYjM0N2RjMjdiN2U2YWI5MDMzMmJhMmNkN2RhZTk2NjM2
NDU5ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93
U2hlbGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hl
bGwuY3BwCkBAIC01MSw3ICs1MSw2IEBACiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgog
I2luY2x1ZGUgIlY4QmluZGluZy5oIgogI2luY2x1ZGUgIlY4Q29sbGVjdGlvbi5oIgotI2luY2x1
ZGUgIlY4RE9NTWFwLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKICNpbmNsdWRlICJWOERv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiVjhHQ0NvbnRyb2xsZXIuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDc4M2NhYmY1NmY0NTlkOTgwMmEwZDNk
Mjk5Y2JlOGUxYTFmMTdjYTYuLmFhYzk1ZGJlZTJhM2MyMDViZTFjMDMxNTI0MDkyZDljMWYzNWJi
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAt
NjgsMTUgKzY4LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU5vZGUoUGFzc1JlZlB0
cjxOb2RlPiBub2RlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIsIHY4OjpJc29sYXRl
KiBpc29sYXRlKQotewotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5k
bGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdyYXBwZXIpOwotICAgIEFTU0VS
VChtYXliZURPTVdyYXBwZXIod3JhcHBlckhhbmRsZSkpOwotICAgIHdyYXBwZXJIYW5kbGUuU2V0
V3JhcHBlckNsYXNzSWQodjhET01Ob2RlQ2xhc3NJZCk7Ci0gICAgZ2V0RE9NTm9kZU1hcChpc29s
YXRlKS5zZXQobm9kZS5sZWFrUmVmKCksIHdyYXBwZXJIYW5kbGUpOwotICAgIHJldHVybiB3cmFw
cGVySGFuZGxlOwotfQotCiB2b2lkIFY4RE9NV3JhcHBlcjo6c2V0TmFtZWRIaWRkZW5SZWZlcmVu
Y2Uodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBwYXJlbnQsIGNvbnN0IGNoYXIqIG5hbWUsIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjaGlsZCkKIHsKICAgICBBU1NFUlQobmFtZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCmluZGV4IDcyMWQyOTVhNzdhOWI0ZTU4MjZh
ZjAwZjRjYTQ0ZjAxZjRkZWUzOTQuLmQ1MDE0YzE5Njc0NTY3YTkwMDZkNTNkMTMzN2Q4Y2I3NGE3
YmQxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oCkBAIC0z
Nyw3ICszNyw2IEBACiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIk5vZGVGaWx0ZXIuaCIK
ICNpbmNsdWRlICJWOEN1c3RvbVhQYXRoTlNSZXNvbHZlci5oIgotI2luY2x1ZGUgIlY4RE9NTWFw
LmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVz
LmgiCiAjaW5jbHVkZSAiV3JhcHBlclR5cGVJbmZvLmgiCkBAIC05Niw3ICs5NSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogICAgICAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gc2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0
KFBhc3NSZWZQdHI8VD4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKiA9IDAp
OwotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gc2V0SlNXcmFwcGVy
Rm9yRE9NTm9kZShQYXNzUmVmUHRyPE5vZGU+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6
SXNvbGF0ZSogPSAwKTsKIAogICAgICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRE9NT2JqZWN0KHY4
OjpIYW5kbGU8djg6OlZhbHVlPik7CiAKQEAgLTEyMSw4ICsxMTksMTcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgICAgIHJldHVybiBub2RlLT53cmFwcGVyKCk7CiAKICAgICAg
ICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBjb250ZXh0LT53b3JsZCgpLT5kb21EYXRhU3Rv
cmUoKTsKLSAgICAgICAgICAgIERPTVdyYXBwZXJNYXA8Tm9kZT4mIGRvbU5vZGVNYXAgPSBzdG9y
ZS0+ZG9tTm9kZU1hcCgpOwotICAgICAgICAgICAgcmV0dXJuIGRvbU5vZGVNYXAuZ2V0KG5vZGUp
OworICAgICAgICAgICAgcmV0dXJuIHN0b3JlLT5nZXQobm9kZSk7CisgICAgICAgIH0KKyAgICBw
cml2YXRlOgorICAgICAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVyQ2xhc3Modm9pZCosIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdy
YXBwZXIuU2V0V3JhcHBlckNsYXNzSWQodjhET01PYmplY3RDbGFzc0lkKTsKKyAgICAgICAgfQor
CisgICAgICAgIHN0YXRpYyB2b2lkIHNldFdyYXBwZXJDbGFzcyhOb2RlKiwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKKyAgICAgICAgeworICAgICAgICAgICAgd3JhcHBlci5T
ZXRXcmFwcGVyQ2xhc3NJZCh2OERPTU5vZGVDbGFzc0lkKTsKICAgICAgICAgfQogICAgIH07CiAK
QEAgLTEzMSw4ICsxMzgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgewogICAgICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKICAgICAgICAgQVNTRVJUKG1heWJlRE9NV3JhcHBl
cih3cmFwcGVySGFuZGxlKSk7Ci0gICAgICAgIHdyYXBwZXJIYW5kbGUuU2V0V3JhcHBlckNsYXNz
SWQodjhET01PYmplY3RDbGFzc0lkKTsKLSAgICAgICAgZ2V0RE9NT2JqZWN0TWFwKGlzb2xhdGUp
LnNldChvYmplY3QubGVha1JlZigpLCB3cmFwcGVySGFuZGxlKTsKKyAgICAgICAgc2V0V3JhcHBl
ckNsYXNzKG9iamVjdC5nZXQoKSwgd3JhcHBlckhhbmRsZSk7CisgICAgICAgIERPTURhdGFTdG9y
ZTo6Y3VycmVudChpc29sYXRlKS0+c2V0KG9iamVjdC5sZWFrUmVmKCksIHdyYXBwZXJIYW5kbGUp
OwogICAgICAgICByZXR1cm4gd3JhcHBlckhhbmRsZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAppbmRleCA3YTY3OTMwNWFkZDJkMTA5
MWJkZWFlNTU2MDc4YmZkNzgxYmMzNjVjLi4zMzdlYTc2N2EzODQwZDgwNTRlOTk3NGRlMjkxNmYz
ZDNmNmU5ZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0NvbnRyb2xs
ZXIuY3BwCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiRE9NSW1wbGVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0j
aW5jbHVkZSAiSW50cnVzaXZlRE9NV3JhcHBlck1hcC5oIgogI2luY2x1ZGUgIk1lbW9yeVVzYWdl
U3VwcG9ydC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVkZSAiUmV0YWluZWRE
T01JbmZvLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCmluZGV4
IDE0NzM5MDM5ZDYwMzdlYzkzNmE4NDhhNGQ3NjEzNDFjOTA2ZDVhYjIuLmY3NWYxNGY3ODhhM2Jm
NWRlMjExODg0OTExN2Q4ODc1ZTJjMDJiNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4TlBPYmplY3QuY3BwCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiSFRNTFBsdWdJbkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJOUFY4T2JqZWN0LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
Ci0jaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOEhUTUxBcHBsZXRFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiVjhIVE1MRW1iZWRFbGVtZW50LmgiCiAjaW5jbHVkZSAiVjhIVE1MT2JqZWN0
RWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2Vy
Q29udGV4dEV4ZWN1dGlvblByb3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dv
cmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAKaW5kZXggOTlhYTA5ZWJiNmExMWZiZTdjZjVl
NTJhOTllMWVlNzdjMzFlZjhiOC4uMTVjNWU5MDBiZjVlNGY2YTc5OWM5MmZiYzI4ODVhMjE2MTNh
Y2VmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyQ29udGV4
dEV4ZWN1dGlvblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3Jr
ZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCkBAIC00Myw3ICs0Myw2IEBACiAjaW5jbHVkZSAi
U2hhcmVkV29ya2VyLmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1
ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4RE9NTWFwLmgiCiAjaW5jbHVkZSAiVjhET01X
aW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgIlY4RGVkaWNhdGVkV29ya2VyQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlY4R0NDb250cm9sbGVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDViYWNiNWFkOWJlMWRkN2I2
YjgxYWY0OGNmZTk2MTU2YmZhNGY0MTEuLjYyOGY1MWI2MGQ5NTY0ZTI0OWIxNTdmYTczOWY4YmI3
ZTBlZWNiNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiU2NyaXB0
Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCi0jaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOFdvcmtlckNv
bnRleHQuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29u
dGV4dEV4ZWN1dGlvblByb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNw
cAppbmRleCAyNTZjOWQzN2U0MTFjZmU3MGE2ZTM2Mzc4MmEzNjYzYTA0NDUzZDNmLi41OGE3YWY0
OTJlMjkwNWZhZWE3MGNmNGViNDM3YTI2ZjFlZGRkMjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1l
bnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2OEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmcKICAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4gaW1hZ2UgPSBIVE1MSW1hZ2VFbGVtZW50
OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKGRvY3VtZW50LCBvcHRpb25hbFdpZHRoLCBvcHRpb25h
bEhlaWdodCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xk
ZXIoKTsKICAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJlY4SFRNTElt
YWdlRWxlbWVudENvbnN0cnVjdG9yOjppbmZvLCBpbWFnZS5nZXQoKSk7Ci0gICAgVjhET01XcmFw
cGVyOjpzZXRKU1dyYXBwZXJGb3JET01Ob2RlKGltYWdlLnJlbGVhc2UoKSwgd3JhcHBlcik7Cisg
ICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QoaW1hZ2UucmVsZWFzZSgp
LCB3cmFwcGVyKTsKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCBjZGZmNzVhYjFj
ZWM3YzE0ZTU3NjM2NTJjZDkyMjdlZjQ2ODRiMTVkLi4yOTg0ODA0NTY5YjQ3NGMxY2UxZjQzZDZj
NDAzNzcwNjI2YjI1ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzIsOSArMzIsNiBAQAogI2luY2x1ZGUgIldlYlNj
cmlwdENvbnRyb2xsZXIuaCIKIAogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOERPTU1hcC5oIgotI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172396</attachid>
            <date>2012-11-05 13:48:35 -0800</date>
            <delta_ts>2012-11-07 12:00:25 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-101110-20121105134650.patch</filename>
            <type>text/plain</type>
            <size>49351</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTFkYzEyZTgyMjkwYTlj
NTc1YzgwN2U1YzBhOTRkMGJjOWNmMTRmNS4uNTM2YjMxZTdiYWVjZjM3ZWFlYTFhNWRkODQxMGFi
Yzk3NGRjYjkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOCBAQAorMjAxMi0xMS0wNSAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFtWOF0gSW50cnVzaXZlRE9N
V3JhcHBlck1hcCBzaG91bGQgYmUgdXNhYmxlIGZvciBtb3JlIHRoYW4ganVzdCBOb2RlcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxMTEwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VudGFybyBIYXJhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZ2Vu
ZXJhbGl6ZXMgb3VyIHN1cHBvcnQgZm9yIHN0b3Jpbmcgd3JhcHBlcnMgaW4gRE9NIG9iamVjdHMK
KyAgICAgICAgdG8gYmUgdXNhYmxlIGZvciBtb3JlIHRoYW4ganVzdCBub2Rlcy4gQWZ0ZXIgdGhp
cyBwYXRjaCwgYW55IG9iamVjdAorICAgICAgICB3aXRoIGEgU2NyaXB0V3JhcHBhYmxlIGJhc2Ug
Y2xhc3Mgd2lsbCBoYXZlIGl0cyB3cmFwcGVyIHN0b3JlZCBpbmxpbmUKKyAgICAgICAgaW4gdGhl
IG9iamVjdCBpbiB0aGUgbWFpbiB3b3JsZC4KKworICAgICAgICBUbyBhY2hpZXZlIHRoaXMgZ29h
bCwgdGhpcyBwYXRjaCBoaWRlcyB0aGUgZGV0YWlscyBvZiBob3cgd2UgbWFwIGZyb20KKyAgICAg
ICAgb2JqZWN0cyB0byB3cmFwcGVycyBpbnNpZGUgRE9NRGF0YVN0b3JlIGFuZCB0aGVuIHJlbW92
ZXMgdGhlCisgICAgICAgIEludHJ1c2l2ZURPTVdyYXBwZXJNYXAgY2xhc3MgZW50aXJlbHkuIFRo
aXMgYXBwcm9hY2ggbGV0cyB1cyByZW1vdmUgdGhlCisgICAgICAgIERPTVdyYXBwZXJNYXAgYmFz
ZSBjbGFzcyBhbmQgbWFrZSBhbGwgb2YgdGhlc2UgZnVuY3Rpb25zIG5vbi12aXJ0dWFsLgorCisg
ICAgICAgICogVXNlVjguY21ha2U6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAg
ICAgLSBSZW1vdmUgZGVsZXRlZCBmaWxlcy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAgKEdl
bmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yQ2Fs
bGJhY2spOgorICAgICAgICAoR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAg
ICAgICAoR2VuZXJhdGVUb1Y4Q29udmVydGVycyk6CisgICAgICAgICAgICAtIFJhdGhlciB0aGFu
IGdyYWJiaW5nIGF0IHRoZSBET01XcmFwcGVyTWFwIGRpcmVjdGx5LCB3ZSBub3cgYXNrCisgICAg
ICAgICAgICAgIHRoZSBET01EYXRhU3RvcmUgdG8gZG8gdGhpcyB3b3JrIGZvciB1cy4KKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4RmxvYXQ2NEFycmF5Ojp3cmFwKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpW
OFRlc3RBY3RpdmVET01PYmplY3Q6OndyYXApOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6VjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OndyYXApOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFRl
c3RFdmVudENvbnN0cnVjdG9yOjp3cmFwKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50
VGFyZ2V0Ojp3cmFwKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXhjZXB0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246OndyYXApOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6d3JhcCk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OndyYXApOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjp3cmFwKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3ROb2RlOjpjb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6
OlY4VGVzdE5vZGU6OndyYXBTbG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpy
ZWFkT25seVRlc3RPYmpBdHRyQXR0ckdldHRlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE9iai5oOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjp3cmFw
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6OndyYXApOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURh
dGFTdG9yZS5jcHA6CisgICAgICAgICAgICAtIFVwZGF0ZWQgcnVuLWJpbmRpbmdzLXRlc3QgcmVz
dWx0cy4KKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6RE9NRGF0YVN0b3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6fkRPTURhdGFTdG9yZSk6CisgICAgICAgICAg
ICAtIFNpbXBsaWZ5IGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIG5vdyB0aGF0IHRoZXJlIGlz
IG9ubHkgb25lCisgICAgICAgICAgICAgIGhhc2ggbWFwLgorICAgICAgICAoV2ViQ29yZTo6RE9N
RGF0YVN0b3JlOjpjdXJyZW50KToKKyAgICAgICAgICAgIC0gTm93IHRoYXQgVjhET01NYXAuY3Bw
IGRvZXNuJ3QgaGFuZGxlIHRoZSBudWxsIGlzb2xhdGUgY2FzZSwgd2UKKyAgICAgICAgICAgICAg
bmVlZCB0byBoYW5kbGUgaXQgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6
cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAgICAgLSBTaW1wbGZpZWQgbm93IHRoYXQgdGhl
cmUgaXMgb25seSBvbmUgd3JhcHBlciBtYXAuCisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3Rv
cmU6OndlYWtDYWxsYmFjayk6CisgICAgICAgICAgICAtIE1vdmVkIGZyb20gSW50cnVzaXZlRE9N
V3JhcHBlck1hcC5oCisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmg6CisgICAg
ICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpET01E
YXRhU3RvcmU6OnNldCk6CisgICAgICAgICAgICAtIFRoZXNlIGZ1bmN0aW9ucyBub3cgaGFuZGxl
IHRoZSBpbnRydXNpdmUgY2FzZSB3aXRoIGEgYnJhbmNoCisgICAgICAgICAgICAgIHJhdGhlciB0
aGFuIHdpdGggYSB2aXJ0dWFsIGZ1bmN0aW9uIGNhbGwuIEluIG1hbnkgY2FzZXMsIHRoZQorICAg
ICAgICAgICAgICBicmFuY2ggY2FuIGJlIG9wdGltaXplZCBhd2F5IGJ5IHRoZSBjb21waWxlciB3
aGVuIHRoZSBvdmVybG9hZGVkCisgICAgICAgICAgICAgIGlubGluZSBmdW5jdGlvbnMgYXJlIGlu
bGluZWQuCisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OndyYXBwZXJJc1N0b3JlZElu
T2JqZWN0KToKKyAgICAgICAgICAgIC0gT3ZlcmxvYWRlZCBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5l
IHdoZXRoZXIgdG8gc3RvcmUgdGhlIHdyYXBwZXIKKyAgICAgICAgICAgICAgaW5zaWRlIHRoZSBv
YmplY3Qgb3IgaW4gdGhlIGhhc2htYXAuCisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6
OmdldFdyYXBwZXJGcm9tT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6
c3RvcmVXcmFwcGVySW5PYmplY3QpOgorICAgICAgICAgICAgLSBPdmVybG9hZGVkIGZ1bmN0aW9u
cyB0byBnZXQvc2V0IHRoZSB3cmFwcGVyIGZyb20gaW5zaWRlIHRoZQorICAgICAgICAgICAgICBv
YmplY3QgaXRzZWxmLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJIYXNoTWFwOjpnZXQpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV3JhcHBlckhhc2hNYXA6OnNldCk6CisgICAgICAgIChXZWJDb3JlOjpET01XcmFwcGVy
SGFzaE1hcDo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV3JhcHBlckhhc2hNYXA6OnJl
cG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdyYXBwZXJIYXNoTWFwOjpy
ZW1vdmUpOgorICAgICAgICAgICAgLSBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vIGxvbmdlciB2aXJ0
dWFsLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTVdyYXBwZXJXb3JsZC5oOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L0ludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBiaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvdjgv
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ldXRlckJpbmRp
bmcpOgorICAgICAgICAgICAgLSBXZSBuZWVkIHRvIGtlZXAgdGhlIHR5cGUgaW5mb3JtYXRpb24g
c2xpZ2h0bHkgbG9uZ2VyIHNvIHRoYXQgd2UKKyAgICAgICAgICAgICAgbG9vayBpbiB0aGUgcmln
aHQgd3JhcHBlciBtYXAuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01NYXAuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NTWFwLmg6IFJlbW92ZWQuCisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhET01XcmFwcGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Z2V0Q2FjaGVkV3JhcHBlcik6Cisg
ICAgICAgICAgICAtIERlZmVyIHRoaXMgd29yayB0byB0aGUgc3RvcmUuCisgICAgICAgIChXZWJD
b3JlOjpWOERPTVdyYXBwZXI6OnNldFdyYXBwZXJDbGFzcyk6CisgICAgICAgICAgICAtIEFuIG92
ZXJsb2FkZWQgZnVuY3Rpb24gdG8gc2V0IHRoZSByaWdodCB3cmFwcGVyIGNsYXNzLgorICAgICAg
ICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3QpOgorICAg
ICAgICAgICAgLSBUaGlzIGZ1bmN0aW9uIGlzIG5vdyBnZW5lcmFsIGVub3VnaCB0byBoYW5kbGUg
ZXZlciBraW5kIG9mIG9iamVjdC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJvbGxl
ci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6CisgICAgICAgICog
YmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcDoKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6djhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayk6CisgICAgICAg
ICAgICAtIENhbGwgdGhlIG1vcmUgZ2VuZXJhbCBmdW5jdGlvbiAoaW5zdGVhZCBvZiB0aGUgbm93
LWRlbGV0ZWQgc3BlY2lhbGl6ZWQgZnVuY3Rpb24pLgorCiAyMDEyLTExLTA1ICBLZW50YXJvIEhh
cmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgYSBjb21tZW50IGFib3V0
IGEgcmV0dXJuIHZhbHVlIG9mIElEQktleTo6dG9WOCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDYyNmVjNTczZGRjZTM1ZjZkMTBkMDU4YjM5NGJjN2FkMTQyNWU4ZjcuLjNiNDlhYTU3
YmU0MDBjNTI4MDZjODBjNzJkYzhjMmMwNWFkYzAxYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMTEtMDUgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBbVjhdIEludHJ1c2l2ZURPTVdyYXBwZXJNYXAgc2hvdWxkIGJl
IHVzYWJsZSBmb3IgbW9yZSB0aGFuIGp1c3QgTm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTExMAorCisgICAgICAgIFJldmlld2VkIGJ5IEtl
bnRhcm8gSGFyYS4KKworICAgICAgICAqIHNyYy9XZWJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgICAgIC0gUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUgb2YgZGVsZXRlZCBmaWxlLgorCiAy
MDEyLTExLTA1ICBNaWd1ZWwgR2FyY2lhICA8bWlndWVsZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgW0Nocm9taXVtXSBEaXNhYmxlIHJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIG9uIEFuZHJvaWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlIGIvU291cmNlL1dlYkNvcmUv
VXNlVjguY21ha2UKaW5kZXggYjYzNThmN2M3NjVmZGJkZGFkMTVmZTQ4MGE4ZGQzMDNhNTU3N2Nl
OC4uN2RlMDk0YzYwNjE2NWQ3OGZmYTQyMDdlOGJmMjhiMDRjMTA5NGQ1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvVXNlVjguY21h
a2UKQEAgLTQ4LDcgKzQ4LDYgQEAgTElTVChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5jcHAK
ICAgICBiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwLAotICAgIGJpbmRpbmdzL3Y4
L1Y4RE9NTWFwLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCiAgICAg
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4RXZlbnRMaXN0
ZW5lci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxODIwNTQ5OTZlNmFhZWNiZmZhZDFhY2ZiYWJl
MzBjYTliMTZlNWMyLi42ZDU0M2FjMDY5MmM5ZmFhNjdhNDA3MzM1ZTI1NmRkNzE2OWMxNDI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0yMjMzLDcgKzIyMzMsNiBAQAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L0RhdGVFeHRlbnNpb24uaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSURCQmlu
ZGluZ1V0aWxpdGllcy5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdV
dGlsaXRpZXMuaCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBl
ck1hcC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5oJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9OUE9iamVjdFdyYXBwZXIuY3BwJywKQEAgLTIzMDIsOCAr
MjMwMSw2IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhEZXBlbmRlbnRSZXRhaW5lZC5o
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwJywKICAg
ICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaCcsCi0gICAgICAgICAg
ICAnYmluZGluZ3MvdjgvVjhET01NYXAuY3BwJywKLSAgICAgICAgICAgICdiaW5kaW5ncy92OC9W
OERPTU1hcC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5oJywKICAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggNmY5OTVjYjg0
YzQ4YjY4M2E1ZGE5MzY0M2Q0Y2UwNzEyMTlhNDdjZi4uMmQ5ZjkxMmUyYjc4MzA5YTNkMTg0OTk4
ZTgwYTVmMmZhNGMwNjcyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTUwMiw4ICs1MDIsNyBAQCBFTkQKIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gJHtjbGFzc05hbWV9Ojp3cmFwKCR7bmF0aXZlVHlwZX0qIGltcGwsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKIHsKIEVORAotICAgIG15ICRkb21NYXBGdW5jdGlvbiA9IEdldERvbU1hcEZ1bmN0aW9uKCRk
YXRhTm9kZSwgJGludGVyZmFjZU5hbWUsICJpc29sYXRlIik7Ci0gICAgbXkgJGdldENhY2hlZFdy
YXBwZXIgPSBJc05vZGVTdWJUeXBlKCRkYXRhTm9kZSkgPyAiVjhET01XcmFwcGVyOjpnZXRDYWNo
ZWRXcmFwcGVyKGltcGwpIiA6ICIke2RvbU1hcEZ1bmN0aW9ufS5nZXQoaW1wbCkiOworICAgIG15
ICRnZXRDYWNoZWRXcmFwcGVyID0gSXNOb2RlU3ViVHlwZSgkZGF0YU5vZGUpID8gIlY4RE9NV3Jh
cHBlcjo6Z2V0Q2FjaGVkV3JhcHBlcihpbXBsKSIgOiAiRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlz
b2xhdGUpLT5nZXQoaW1wbCkiOwogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsIDw8RU5EKTsKICAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gJGdldENhY2hlZFdyYXBwZXI7
CiAgICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCkBAIC0xMDM3LDggKzEwMzYsNyBAQCBF
TkQKICAgICAgICAgIyBDaGVjayBmb3IgYSB3cmFwcGVyIGluIHRoZSB3cmFwcGVyIGNhY2hlLiBJ
ZiB0aGVyZSBpcyBvbmUsIHdlIGtub3cgdGhhdCBhIGhpZGRlbiByZWZlcmVuY2UgaGFzIGFscmVh
ZHkKICAgICAgICAgIyBiZWVuIGNyZWF0ZWQuIElmIHdlIGRvbid0IGZpbmQgYSB3cmFwcGVyLCB3
ZSBjcmVhdGUgYm90aCBhIHdyYXBwZXIgYW5kIGEgaGlkZGVuIHJlZmVyZW5jZS4KICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBSZWZQdHI8JHJldHVyblR5cGU+IHJlc3VsdCA9
ICR7Z2V0dGVyU3RyaW5nfTtcbiIpOwotICAgICAgICBteSAkZG9tTWFwRnVuY3Rpb24gPSBHZXRE
b21NYXBGdW5jdGlvbigkZGF0YU5vZGUsICRpbnRlcmZhY2VOYW1lLCAiaW5mby5HZXRJc29sYXRl
KCkiKTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gd3JhcHBlciA9IHJlc3VsdC5nZXQoKSA/ICR7ZG9tTWFwRnVuY3Rpb259LmdldChy
ZXN1bHQuZ2V0KCkpIDogdjhVbmRlZmluZWQoKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gcmVzdWx0Lmdl
dCgpID8gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KERPTURhdGFTdG9yZTo6Y3VycmVudChpbmZvLkdl
dElzb2xhdGUoKSktPmdldChyZXN1bHQuZ2V0KCkpKSA6IHY4VW5kZWZpbmVkKCk7XG4iKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkp
IHtcbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICB3cmFwcGVy
ID0gdG9WOChyZXN1bHQuZ2V0KCksIGluZm8uSG9sZGVyKCksIGluZm8uR2V0SXNvbGF0ZSgpKTtc
biIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgICAgICBpZiAoIXdyYXBw
ZXIuSXNFbXB0eSgpKVxuIik7CkBAIC0xOTQyLDExICsxOTQwLDEwIEBAIEVORAogICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgZ290byBmYWlsO1xuIik7CiAgICAgfQogCi0gICAg
bXkgJERPTU9iamVjdCA9IEdldERvbU1hcE5hbWUoJGRhdGFOb2RlLCAkaW1wbENsYXNzTmFtZSk7
CiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAogICAgIFY4RE9NV3JhcHBlcjo6c2V0
RE9NV3JhcHBlcih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7Ci0gICAgVjhET01XcmFwcGVy
OjpzZXRKU1dyYXBwZXJGb3Ike0RPTU9iamVjdH0oaW1wbC5yZWxlYXNlKCksIHdyYXBwZXIsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9i
amVjdChpbXBsLnJlbGVhc2UoKSwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIHJl
dHVybiB3cmFwcGVyOwogRU5ECiAKQEAgLTIxMzQsMTEgKzIxMzEsMTAgQEAgRU5ECiAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBnb3RvIGZhaWw7XG4iKTsKICAgICB9CiAKLSAg
ICBteSAkRE9NT2JqZWN0ID0gR2V0RG9tTWFwTmFtZSgkZGF0YU5vZGUsICRpbXBsQ2xhc3NOYW1l
KTsKICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogCiAgICAgVjhET01XcmFwcGVyOjpz
ZXRET01XcmFwcGVyKHdyYXBwZXIsICZWOCR7aW1wbENsYXNzTmFtZX1Db25zdHJ1Y3Rvcjo6aW5m
bywgaW1wbC5nZXQoKSk7Ci0gICAgVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3Ike0RPTU9i
amVjdH0oaW1wbC5yZWxlYXNlKCksIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBW
OERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLnJlbGVhc2UoKSwgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIHJldHVybiB3cmFwcGVyOwogRU5ECiAKQEAg
LTM0MDIsNyArMzM5OCw2IEBAIHN1YiBHZW5lcmF0ZVRvVjhDb252ZXJ0ZXJzCiAgICAgbXkgJGNs
YXNzTmFtZSA9IHNoaWZ0OwogICAgIG15ICRuYXRpdmVUeXBlID0gc2hpZnQ7CiAKLSAgICBteSAk
ZG9tTWFwTmFtZSA9IEdldERvbU1hcE5hbWUoJGRhdGFOb2RlLCAkaW50ZXJmYWNlTmFtZSk7CiAg
ICAgbXkgJHdyYXBTbG93QXJndW1lbnRUeXBlID0gR2V0UGFzc1JlZlB0clR5cGUoJG5hdGl2ZVR5
cGUpOwogICAgIG15ICRiYXNlVHlwZSA9IEJhc2VJbnRlcmZhY2VOYW1lKCRkYXRhTm9kZSk7CiAK
QEAgLTM0NjMsNyArMzQ1OCw3IEBAIEVORAogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAg
IGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKLSAgICB2
ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpz
ZXRKU1dyYXBwZXJGb3Ike2RvbU1hcE5hbWV9KGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOworICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6
OnNldEpTV3JhcHBlckZvckRPTU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBp
ZiAoIWhhc0RlcGVuZGVudExpZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRl
cGVuZGVudCgpOwogICAgIHJldHVybiB3cmFwcGVyOwpAQCAtMzQ3MSwyNCArMzQ2Niw2IEBAIEVO
RAogRU5ECiB9CiAKLXN1YiBHZXREb21NYXBGdW5jdGlvbgotewotICAgIG15ICRkYXRhTm9kZSA9
IHNoaWZ0OwotICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7Ci0gICAgbXkgJGdldElzb2xh
dGUgPSBzaGlmdDsKLQotICAgIHJldHVybiAiZ2V0IiAuIEdldERvbU1hcE5hbWUoJGRhdGFOb2Rl
LCAkaW50ZXJmYWNlTmFtZSkgLiAiTWFwKCIgLiAkZ2V0SXNvbGF0ZSAuICIpIjsKLX0KLQotc3Vi
IEdldERvbU1hcE5hbWUKLXsKLSAgICBteSAkZGF0YU5vZGUgPSBzaGlmdDsKLSAgICBteSAkdHlw
ZSA9IHNoaWZ0OwotCi0gICAgcmV0dXJuICJET01Ob2RlIiBpZiBJc05vZGVTdWJUeXBlKCRkYXRh
Tm9kZSk7Ci0gICAgcmV0dXJuICJET01PYmplY3QiOwotfQotCiBzdWIgR2V0TmF0aXZlVHlwZUZv
ckNvbnZlcnNpb25zCiB7CiAgICAgbXkgJGRhdGFOb2RlID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5o
CmluZGV4IGFmYjAxMzQ0ZWJlMWVlYTNjN2I1MDI2ODdkZDY5MjVjZDY5OTlhMjAuLmJlMDFiMWMw
NmRlZjM0MWFlOGQ4OGY2MmVhOTcyYmQ5ZjhiZDg0MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oCkBAIC01
NSw3ICs1NSw3IEBAIHByaXZhdGU6CiAKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhGbG9hdDY0
QXJyYXk6OndyYXAoRmxvYXQ2NEFycmF5KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcChpc29sYXRlKS5nZXQoaW1w
bCk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9y
ZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIFY4RmxvYXQ2
NEFycmF5Ojp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2
ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEFjdGl2ZURPTU9iamVjdC5oCmluZGV4IDdiYWVhY2NhOTc3MzNhN2NiMGZkYmRjYzcyMzU1
YTdjOWEwMzY1YmUuLjE5MjM4MTBhYjA0OWUyYTM0MTZiMzQzNmQ4Yzk0YjYyZmZlYjBhNjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RB
Y3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKQEAgLTU1LDcgKzU1LDcgQEAgcHJpdmF0ZToK
IAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OndyYXAoVGVz
dEFjdGl2ZURPTU9iamVjdCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBnZXRET01PYmplY3RNYXAoaXNvbGF0ZSkuZ2V0KGltcGwpOworICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJl
bnQoaXNvbGF0ZSktPmdldChpbXBsKTsKICAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiBWOFRlc3RBY3RpdmVET01P
YmplY3Q6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RDdXN0b21OYW1lZEdldHRlci5oCmluZGV4IGVhMzM0YjBlNGNjOTNhM2NkMTg0NGYzNWYy
OWZiYzVkOTQ3MTQzY2UuLjhjODljMGEyOWRkYTU0N2Y2MWI3MjI1MTI4NTFhNWFkYmVkZTc1ZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RDdXN0b21OYW1lZEdldHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oCkBAIC01NCw3ICs1NCw3IEBAIHBy
aXZhdGU6CiAKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6
OndyYXAoVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcChpc29sYXRlKS5nZXQo
aW1wbCk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFT
dG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIu
SXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIFY4VGVz
dEN1c3RvbU5hbWVkR2V0dGVyOjp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggOTk2MTI4MGYwZWYzNzIz
ZjVhYjJjMjQ5OTg0NDU4NzJiODVhZGM3Yi4uNjI5YTViNTVlOWI3NjZjOGRmY2MzMWNjYjJkNTEz
Nzk1MjA3M2I5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC01NSw3ICs1
NSw3IEBAIHByaXZhdGU6CiAKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvcjo6d3JhcChUZXN0RXZlbnRDb25zdHJ1Y3RvciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRET01PYmplY3RNYXAoaXNvbGF0
ZSkuZ2V0KGltcGwpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBE
T01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsKTsKICAgICAgICAgaWYgKCF3
cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVy
biBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQs
IGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaAppbmRleCBmOWIxZjdhZjE2ZmU4MDhkNWFh
ZjA0YzY5ZGIxNzE5YWM0ZTAxYjkxLi45YjY4ZTM0ZTFmZjFhZmIxZmJjYzdmNWJmNGY0OTYxMGZl
MzJhMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRl
OgogCiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdEV2ZW50VGFyZ2V0Ojp3cmFwKFRlc3RF
dmVudFRhcmdldCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXBwZXIgPSBnZXRET01PYmplY3RNYXAoaXNvbGF0ZSkuZ2V0KGltcGwpOworICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNv
bGF0ZSktPmdldChpbXBsKTsKICAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAg
ICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiBWOFRlc3RFdmVudFRhcmdldDo6d3Jh
cFNsb3coaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaApp
bmRleCA5OWFmZThiMTYzOWIyYjdhNWQyYjMwYjI4ZWQyOTJjN2U0ZjY5Mzc3Li43MWI5NDc4ZDNm
ZTk1ZTA3ODUzZjUyMTEwMGI3Nzg3ZDQxODQyNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCkBAIC01
Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0RXhj
ZXB0aW9uOjp3cmFwKFRlc3RFeGNlcHRpb24qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICAgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gZ2V0RE9NT2JqZWN0TWFwKGlzb2xhdGUpLmdldChp
bXBsKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gRE9NRGF0YVN0
b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5nZXQoaW1wbCk7CiAgICAgICAgIGlmICghd3JhcHBlci5J
c0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICByZXR1cm4gVjhUZXN0
RXhjZXB0aW9uOjp3cmFwU2xvdyhpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdElu
dGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEludGVyZmFjZS5oCmluZGV4IDg3Y2EwYjhhZGM1NDdkMmI3ZTk1MDFlODIwYWZhZDMzZmU5ZDM1
NGYuLjc1ZmQxMWZmMjZjMzE1NzkwZDZkM2NhZDA1ZDAzNmM4NDFkN2MwODkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmgKQEAgLTU4LDcgKzU4LDcgQEAgcHJpdmF0ZToKIAogdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBWOFRlc3RJbnRlcmZhY2U6OndyYXAoVGVzdEludGVyZmFjZSogaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewot
ICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBnZXRET01PYmplY3RNYXAo
aXNvbGF0ZSkuZ2V0KGltcGwpOworICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBw
ZXIgPSBET01EYXRhU3RvcmU6OmN1cnJlbnQoaXNvbGF0ZSktPmdldChpbXBsKTsKICAgICAgICAg
aWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAg
IHJldHVybiBWOFRlc3RJbnRlcmZhY2U6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwg
aXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAppbmRl
eCBmODg1OTgwNDZjZTg1OGFlMjQ5NzEyN2U5MjdiNGQ0NmJjY2RjMzY1Li43YmE0YTU2NDE2Y2Vi
M2Y2ODczNWU0YWFkYzk4MmUwNTc5YTU1MmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToKIAogdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjp3cmFwKFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9u
Q29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcChpc29sYXRlKS5nZXQoaW1wbCk7Cisg
ICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURhdGFTdG9yZTo6Y3Vy
cmVudChpc29sYXRlKS0+Z2V0KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgp
KQogICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIFY4VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXI6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0TmFtZWRDb25zdHJ1Y3Rvci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAppbmRleCA5OTU5OWU2MjViMjBjMjQ1ZTc5
MGQxNTQxZjljMGViMGYwZDE5NTIzLi5iMGYzNDcxYzg5NzNkMGE5MWQxZTE2NDZiODZkZTU0ZGM0
M2IzYTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKQEAgLTYwLDcgKzYwLDcg
QEAgcHJpdmF0ZToKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3ROYW1lZENvbnN0cnVj
dG9yOjp3cmFwKFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcChpc29sYXRlKS5n
ZXQoaW1wbCk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IERPTURh
dGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBw
ZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0dXJuIFY4
VGVzdE5hbWVkQ29uc3RydWN0b3I6OndyYXBTbG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNv
bGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Tm9kZS5jcHAKaW5kZXggYTVkZTRiNjNhNzQ5ZjU5ODg2YTc1NDRiOWMyMWYyZDU5
YzNjZjE2MC4uMTNlYmM2NWFlNGJlOGRmOWEyYjVlMmI5ZWIyNjJhMWQ4YzNjZmQwYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RO
b2RlLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhUZXN0Tm9k
ZTo6Y29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9sZGVyKCk7CiAKICAgICBWOERP
TVdyYXBwZXI6OnNldERPTVdyYXBwZXIod3JhcHBlciwgJmluZm8sIGltcGwuZ2V0KCkpOwotICAg
IFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZShpbXBsLnJlbGVhc2UoKSwgd3Jh
cHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVy
Rm9yRE9NT2JqZWN0KGltcGwucmVsZWFzZSgpLCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7
CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IFY4VGVzdE5vZGU6OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdE5vZGU+IGlt
cGwsIHY4OjpIYW5kbAogICAgICAgICByZXR1cm4gd3JhcHBlcjsKIAogICAgIGluc3RhbGxQZXJD
b250ZXh0UHJvcGVydGllcyh3cmFwcGVyLCBpbXBsLmdldCgpKTsKLSAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PiB3cmFwcGVySGFuZGxlID0gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJG
b3JET01Ob2RlKGltcGwsIHdyYXBwZXIsIGlzb2xhdGUpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXJIYW5kbGUgPSBWOERPTVdyYXBwZXI6OnNldEpTV3JhcHBlckZvckRP
TU9iamVjdChpbXBsLCB3cmFwcGVyLCBpc29sYXRlKTsKICAgICBpZiAoIWhhc0RlcGVuZGVudExp
ZmV0aW1lKQogICAgICAgICB3cmFwcGVySGFuZGxlLk1hcmtJbmRlcGVuZGVudCgpOwogICAgIHJl
dHVybiB3cmFwcGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCAyZGM3MzY2MThhMmI5NjFkODkyYWUxZDA5ZmJm
YjgzNWVmNzhiMmRiLi4yNWI2YjRiOWRkYzI1NmVkNTVlYjFlN2MzMWQwN2JlMzdhYWZmMzQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T2JqLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gcmVhZE9ubHlUZXN0T2JqQXR0ckF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAg
ICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5yZWFkT25seVRlc3RPYmpBdHRyLl9nZXQiKTsKICAg
ICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwogICAg
IFJlZlB0cjxUZXN0T2JqPiByZXN1bHQgPSBpbXAtPnJlYWRPbmx5VGVzdE9iakF0dHIoKTsKLSAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd3JhcHBlciA9IHJlc3VsdC5nZXQoKSA/IGdldERPTU9i
amVjdE1hcChpbmZvLkdldElzb2xhdGUoKSkuZ2V0KHJlc3VsdC5nZXQoKSkgOiB2OFVuZGVmaW5l
ZCgpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gcmVzdWx0LmdldCgpID8g
djg6OkhhbmRsZTx2ODo6VmFsdWU+KERPTURhdGFTdG9yZTo6Y3VycmVudChpbmZvLkdldElzb2xh
dGUoKSktPmdldChyZXN1bHQuZ2V0KCkpKSA6IHY4VW5kZWZpbmVkKCk7CiAgICAgaWYgKHdyYXBw
ZXIuSXNFbXB0eSgpKSB7CiAgICAgICAgIHdyYXBwZXIgPSB0b1Y4KHJlc3VsdC5nZXQoKSwgaW5m
by5Ib2xkZXIoKSwgaW5mby5HZXRJc29sYXRlKCkpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNF
bXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5oCmluZGV4IDYyMWUyOTdhZjM5OTlmMDM4ZWQ5ZmRjMTcwYmU4OTZiN2FkNmIy
Y2YuLjk0Mzg5NTJjODgyMmU5M2U4NzNmNmY4OTA3MDgyMzA0MTgyZDNiZmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKQEAg
LTU5LDcgKzU5LDcgQEAgcHJpdmF0ZToKIAogdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBWOFRlc3RP
Ymo6OndyYXAoVGVzdE9iaiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgICAgICB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSBnZXRET01PYmplY3RNYXAoaXNvbGF0ZSkuZ2V0KGltcGwpOworICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBET01EYXRhU3RvcmU6OmN1cnJl
bnQoaXNvbGF0ZSktPmdldChpbXBsKTsKICAgICAgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkK
ICAgICAgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIHJldHVybiBWOFRlc3RPYmo6OndyYXBT
bG93KGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKaW5kZXggNjNjMjIyYTBiMGMx
NmRlOWU5ZTc0MjNhNWQ1NmUxMDdiMDE4MDQ1MC4uMzk3MDE2ODUwZGI1ZWJlOGYzNWRmNDlmNzI0
ZDg2ZGIyYzk1NjQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UuaApAQCAtNTYsNyArNTYsNyBAQCBwcml2YXRlOgogCiB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6d3Jh
cChUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiBpbXBsLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAg
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGdldERPTU9iamVjdE1hcChpc29s
YXRlKS5nZXQoaW1wbCk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9
IERPTURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+Z2V0KGltcGwpOwogICAgICAgICBpZiAo
IXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgcmV0
dXJuIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6d3JhcFNsb3coaW1wbCwg
Y3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9E
T01EYXRhU3RvcmUuY3BwCmluZGV4IGI0ZjlkYWY3ZGI3MmE4Mzc2MzAwZjI4NjJkMDU1NzRkM2U4
OTRlNzAuLmFlMzU5YmFkMWRmYzJlMjVkNmUzMWZmNGM0MDg4YmVmODE0MjUzNmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcApAQCAtMzEsOCArMzEsNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTURhdGFTdG9yZS5oIgogCi0jaW5j
bHVkZSAiRE9NV3JhcHBlck1hcC5oIgotI2luY2x1ZGUgIkludHJ1c2l2ZURPTVdyYXBwZXJNYXAu
aCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1
bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KQEAgLTQyLDE3ICs0MCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIERPTURhdGFTdG9yZTo6RE9NRGF0YVN0b3JlKFR5cGUg
dHlwZSkKICAgICA6IG1fdHlwZSh0eXBlKQogewotICAgIGlmICh0eXBlID09IE1haW5Xb3JsZCkK
LSAgICAgICAgbV9kb21Ob2RlTWFwID0gYWRvcHRQdHIobmV3IEludHJ1c2l2ZURPTVdyYXBwZXJN
YXA8Tm9kZT4pOwotICAgIGVsc2UgewotICAgICAgICBBU1NFUlQodHlwZSA9PSBJc29sYXRlZFdv
cmxkIHx8IHR5cGUgPT0gV29ya2VyKTsKLSAgICAgICAgLy8gRklYTUU6IEluIHByaW5jaXBsZSwg
d2Ugc2hvdWxkbid0IG5lZWQgdG8gY3JlYXRlIHRoaXMKLSAgICAgICAgLy8gd3JhcHBlciBtYXAg
Zm9yIHdvcmtlcnMgYmVjYXVzZSB0aGVyZSBhcmUgbm8gTm9kZXMgb24KLSAgICAgICAgLy8gd29y
a2VyIHRocmVhZHMuCi0gICAgICAgIG1fZG9tTm9kZU1hcCA9IGFkb3B0UHRyKG5ldyBET01XcmFw
cGVySGFzaE1hcDxOb2RlPik7Ci0gICAgfQotICAgIG1fZG9tT2JqZWN0TWFwID0gYWRvcHRQdHIo
bmV3IERPTVdyYXBwZXJIYXNoTWFwPHZvaWQ+KTsKLQogICAgIFY4UGVySXNvbGF0ZURhdGE6OmN1
cnJlbnQoKS0+cmVnaXN0ZXJET01EYXRhU3RvcmUodGhpcyk7CiB9CiAKQEAgLTYxLDE2ICs0OCwx
MyBAQCBET01EYXRhU3RvcmU6On5ET01EYXRhU3RvcmUoKQogICAgIEFTU0VSVChtX3R5cGUgIT0g
TWFpbldvcmxkKTsgLy8gV2UgbmV2ZXIgYWN0dWFsbHkgZGVzdHJ1Y3QgdGhlIG1haW4gd29ybGQn
cyBET01EYXRhU3RvcmUuCiAKICAgICBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnVucmVn
aXN0ZXJET01EYXRhU3RvcmUodGhpcyk7Ci0KLSAgICBpZiAobV90eXBlID09IElzb2xhdGVkV29y
bGQpCi0gICAgICAgIG1fZG9tTm9kZU1hcC0+Y2xlYXIoKTsKLSAgICBtX2RvbU9iamVjdE1hcC0+
Y2xlYXIoKTsKKyAgICBtX3dyYXBwZXJNYXAuY2xlYXIoKTsKIH0KIAogRE9NRGF0YVN0b3JlKiBE
T01EYXRhU3RvcmU6OmN1cnJlbnQodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChET01EYXRhU3RvcmUsIGRlZmF1bHRTdG9yZSwgKE1haW5Xb3JsZCkpOwot
ICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpOworICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBpc29sYXRlID8gVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKSA6IFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsKICAgICBp
ZiAoVU5MSUtFTFkoISFkYXRhLT5kb21EYXRhU3RvcmUoKSkpCiAgICAgICAgIHJldHVybiBkYXRh
LT5kb21EYXRhU3RvcmUoKTsKICAgICBWOERPTVdpbmRvd1NoZWxsKiBjb250ZXh0ID0gVjhET01X
aW5kb3dTaGVsbDo6Z2V0RW50ZXJlZCgpOwpAQCAtODIsOCArNjYsMjMgQEAgRE9NRGF0YVN0b3Jl
KiBET01EYXRhU3RvcmU6OmN1cnJlbnQodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB2b2lkIERPTURh
dGFTdG9yZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0
SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZv
LCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkJpbmRpbmcpOwotICAgIGluZm8uYWRkTWVtYmVy
KG1fZG9tTm9kZU1hcCk7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9kb21PYmplY3RNYXApOworICAg
IGluZm8uYWRkTWVtYmVyKG1fd3JhcHBlck1hcCk7Cit9CisKK3ZvaWQgRE9NRGF0YVN0b3JlOjp3
ZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogY29udGV4
dCkKK3sKKyAgICBTY3JpcHRXcmFwcGFibGUqIGtleSA9IHN0YXRpY19jYXN0PFNjcmlwdFdyYXBw
YWJsZSo+KGNvbnRleHQpOworICAgIEFTU0VSVCh2YWx1ZS0+SXNPYmplY3QoKSk7CisgICAgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmpl
Y3Q+OjpDYXN0KHZhbHVlKTsKKyAgICBBU1NFUlQoa2V5LT53cmFwcGVyKCkgPT0gd3JhcHBlcik7
CisgICAgLy8gTm90ZTogfG9iamVjdHwgbWlnaHQgbm90IGJlIGVxdWFsIHRvIHxrZXl8LCBlLmcu
LCBpZiBTY3JpcHRXcmFwcGFibGUgaXNuJ3QgYSBsZWZ0LW1vc3QgYmFzZSBjbGFzcy4KKyAgICB2
b2lkKiBvYmplY3QgPSB0b05hdGl2ZSh3cmFwcGVyKTsKKyAgICBXcmFwcGVyVHlwZUluZm8qIHR5
cGUgPSB0b1dyYXBwZXJUeXBlSW5mbyh3cmFwcGVyKTsKKworICAgIGtleS0+Y2xlYXJXcmFwcGVy
KCk7CisgICAgdmFsdWUuRGlzcG9zZSgpOworICAgIHZhbHVlLkNsZWFyKCk7CisgICAgdHlwZS0+
ZGVyZWZPYmplY3Qob2JqZWN0KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaAppbmRleCBmMGNjNzA4NTIwMDVjMDM2
MzRiZDMwMWUxZDE0ODlhMDhhNTFlYjY4Li44ODUzNWYxNzEzNTRjYzQ2NmJmNzEwMzEyYTJmZTE0
NDEwNDM1ZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRh
U3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaApA
QCAtNTcsMTcgKzU3LDYwIEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBET01EYXRhU3RvcmUoVHlw
ZSk7CiAgICAgfkRPTURhdGFTdG9yZSgpOwogCi0gICAgc3RhdGljIERPTURhdGFTdG9yZSogY3Vy
cmVudCh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyBET01EYXRhU3RvcmUqIGN1cnJlbnQodjg6
Oklzb2xhdGUqID0gMCk7CiAKLSAgICBET01XcmFwcGVyTWFwPE5vZGU+JiBkb21Ob2RlTWFwKCkg
eyByZXR1cm4gKm1fZG9tTm9kZU1hcDsgfQotICAgIERPTVdyYXBwZXJNYXA8dm9pZD4mIGRvbU9i
amVjdE1hcCgpIHsgcmV0dXJuICptX2RvbU9iamVjdE1hcDsgfQorICAgIC8vIENhbGxlcnMgbmVl
ZCB0byBiZSBjYXJlZnVsIHdoZW4gY2FsbGluZyBnZXQoKSBhbmQgc2V0KCkgdGhhdCB0aGV5IHVz
ZQorICAgIC8vIHRoZSBjb3JyZWN0IGNvbXBpbGUtdGltZSB0eXBlLiBXZSB1c2UgdGhlIGNvbXBp
bGUtdGltZSB0eXBlIHRvIGRlY2lkZQorICAgIC8vIHdoZXRoZXIgdGhlIHdyYXBwZXIgaXMgc3Rv
cmVkIGluIGEgaGFzaG1hcCBvciB3aGV0aGVyIHRoZSB3cmFwcGVyIGlzCisgICAgLy8gc3RvcmVk
IGlubGluZSBpbiB0aGUgb2JqZWN0LiBJZiBjYWxsZXJzIHVzZSB0aGUgd3JvbmcgdHlwZSwgd2Un
bGwgZWl0aGVyCisgICAgLy8gc3RvcmUgdGhlIHdyYXBwZXIgaW4gdGhlIHdyb25nIHBsYWNlIG9y
IGxvb2sgZm9yIGl0IGluIHRoZSB3cm9uZyBwbGFjZS4KKworICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+CisgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0KFQqIG9iamVjdCkgY29u
c3QKKyAgICB7CisgICAgICAgIGlmICh3cmFwcGVySXNTdG9yZWRJbk9iamVjdChvYmplY3QpKQor
ICAgICAgICAgICAgcmV0dXJuIGdldFdyYXBwZXJGcm9tT2JqZWN0KG9iamVjdCk7CisgICAgICAg
IHJldHVybiBtX3dyYXBwZXJNYXAuZ2V0KG9iamVjdCk7CisgICAgfQorCisgICAgLy8gVGFrZXMg
b3duZXJzaGlwIG9mIHxvYmplY3R8IGFuZCB8d3JhcHBlcnwuCisgICAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KKyAgICBpbmxpbmUgdm9pZCBzZXQoVCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVyKQorICAgIHsKKyAgICAgICAgaWYgKHNldFdyYXBwZXJJbk9iamVjdChv
YmplY3QsIHdyYXBwZXIpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3dyYXBwZXJN
YXAuc2V0KG9iamVjdCwgd3JhcHBlcik7CisgICAgfQogCiAgICAgdm9pZCByZXBvcnRNZW1vcnlV
c2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CiAKLXByb3RlY3RlZDoKK3ByaXZhdGU6Cisg
ICAgaW5saW5lIGJvb2wgd3JhcHBlcklzU3RvcmVkSW5PYmplY3Qodm9pZCopIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgaW5saW5lIGJvb2wgd3JhcHBlcklzU3RvcmVkSW5PYmplY3QoU2Ny
aXB0V3JhcHBhYmxlKikgY29uc3QgeyByZXR1cm4gbV90eXBlID09IE1haW5Xb3JsZDsgfQorCisg
ICAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0V3JhcHBlckZyb21PYmplY3Qodm9p
ZCogb2JqZWN0KSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PigpOyB9CisgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0
V3JhcHBlckZyb21PYmplY3QoU2NyaXB0V3JhcHBhYmxlKiBrZXkpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQobV90eXBlID09IE1haW5Xb3JsZCk7CisgICAgICAgIHJldHVybiBrZXktPndy
YXBwZXIoKTsKKyAgICB9CisKKyAgICBpbmxpbmUgYm9vbCBzZXRXcmFwcGVySW5PYmplY3Qodm9p
ZCosIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+KSB7IHJldHVybiBmYWxzZTsgfQorICAgIGlu
bGluZSBib29sIHNldFdyYXBwZXJJbk9iamVjdChTY3JpcHRXcmFwcGFibGUqIGtleSwgdjg6OlBl
cnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKKyAgICB7CisgICAgICAgIGlmIChtX3R5cGUg
IT0gTWFpbldvcmxkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBBU1NFUlQo
a2V5LT53cmFwcGVyKCkuSXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKG1fd3JhcHBlck1hcC5n
ZXQodG9OYXRpdmUod3JhcHBlcikpLklzRW1wdHkoKSk7CisgICAgICAgIGtleS0+c2V0V3JhcHBl
cih3cmFwcGVyKTsKKyAgICAgICAgd3JhcHBlci5NYWtlV2VhayhrZXksIHdlYWtDYWxsYmFjayk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxs
YmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKiBjb250ZXh0KTsKKwogICAgIFR5
cGUgbV90eXBlOwotICAgIE93blB0cjxET01XcmFwcGVyTWFwPE5vZGU+ID4gbV9kb21Ob2RlTWFw
OwotICAgIE93blB0cjxET01XcmFwcGVyTWFwPHZvaWQ+ID4gbV9kb21PYmplY3RNYXA7CisgICAg
RE9NV3JhcHBlckhhc2hNYXA8dm9pZD4gbV93cmFwcGVyTWFwOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3Jh
cHBlck1hcC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlck1hcC5oCmlu
ZGV4IGI0YzI1ZDllNGE0OWZjMjA0NjljZjcxYzI2ZTMxZmZkZDRjYTA2ZTkuLmYzOWM4ZDgyZWRi
ZDEwMjdkMDI5NGNlZjcwNDA4ODVhZDc4ODRlMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01XcmFwcGVyTWFwLmgKQEAgLTM5LDIyICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotY2xhc3MgRE9NRGF0YVN0b3JlOwotCi10ZW1wbGF0ZTxjbGFzcyBLZXlUeXBlPgot
Y2xhc3MgRE9NV3JhcHBlck1hcCB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+RE9NV3JhcHBlck1h
cCgpIHsgfQotCi0gICAgdmlydHVhbCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiBnZXQoS2V5
VHlwZSopID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0KEtleVR5cGUqLCB2ODo6UGVyc2lzdGVu
dDx2ODo6T2JqZWN0PikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Qg
PSAwOwotfTsKLQogdGVtcGxhdGU8Y2xhc3MgS2V5VHlwZT4KLWNsYXNzIERPTVdyYXBwZXJIYXNo
TWFwIDogcHVibGljIERPTVdyYXBwZXJNYXA8S2V5VHlwZT4geworY2xhc3MgRE9NV3JhcHBlckhh
c2hNYXAgewogcHVibGljOgogICAgIHR5cGVkZWYgSGFzaE1hcDxLZXlUeXBlKiwgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gPiBNYXBUeXBlOwogCkBAIC02MywxMiArNDksMTIgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+
IGdldChLZXlUeXBlKiBrZXkpIE9WRVJSSURFCisgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVj
dD4gZ2V0KEtleVR5cGUqIGtleSkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX21hcC5n
ZXQoa2V5KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0KEtleVR5cGUqIGtleSwgdjg6
OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikgT1ZFUlJJREUKKyAgICB2b2lkIHNldChL
ZXlUeXBlKiBrZXksIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewog
ICAgICAgICBBU1NFUlQoIW1fbWFwLmNvbnRhaW5zKGtleSkpOwogICAgICAgICBBU1NFUlQoc3Rh
dGljX2Nhc3Q8S2V5VHlwZSo+KHRvTmF0aXZlKHdyYXBwZXIpKSA9PSBrZXkpOwpAQCAtNzYsNyAr
NjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbWFwLnNldChrZXksIHdyYXBwZXIpOwogICAgIH0K
IAotICAgIHZpcnR1YWwgdm9pZCBjbGVhcigpIE9WRVJSSURFCisgICAgdm9pZCBjbGVhcigpCiAg
ICAgewogICAgICAgICBmb3IgKHR5cGVuYW1lIE1hcFR5cGU6Oml0ZXJhdG9yIGl0ID0gbV9tYXAu
YmVnaW4oKTsgaXQgIT0gbV9tYXAuZW5kKCk7ICsraXQpIHsKICAgICAgICAgICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBpdC0+dmFsdWU7CkBAIC04NywxMyArNzMsMTMg
QEAgcHVibGljOgogICAgICAgICBtX21hcC5jbGVhcigpOwogICAgIH0KIAotICAgIHZpcnR1YWwg
dm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZv
KSBjb25zdCBPVkVSUklERQorICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0
SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICB7CiAgICAgICAgIE1lbW9yeUNsYXNz
SW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdlYkNvcmVNZW1vcnlUeXBlczo6Qmlu
ZGluZyk7CiAgICAgICAgIGluZm8uYWRkTWVtYmVyKG1fbWFwKTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgcmVtb3ZlKEtleVR5cGUqIGtleSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4g
d3JhcHBlcikKKyAgICB2b2lkIHJlbW92ZShLZXlUeXBlKiBrZXksIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXIpCiAgICAgewogICAgICAgICB0eXBlbmFtZSBNYXBUeXBlOjppdGVy
YXRvciBpdCA9IG1fbWFwLmZpbmQoa2V5KTsKICAgICAgICAgQVNTRVJUKGl0ICE9IG1fbWFwLmVu
ZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTVdyYXBwZXJX
b3JsZC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKaW5k
ZXggNjhlZTZlOWNmNTQ0ZTZhMzQ2NGY4NmYxYzQwMjEwNGI2ODI4MGZjOS4uNWRmMzA1ODE1ZDI0
ZmJkNDY4YzhmMTAzMjk3YWM1OGI5ZGEyMmIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NV3JhcHBlcldvcmxkLmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkRP
TURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW5jbHVkZSAiVjhE
T01NYXAuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBlck1hcC5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSW50cnVzaXZlRE9NV3JhcHBlck1hcC5oCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxMjI0NmI2NzUxNjliMWMzZDAzZDZjNjQzM2ZkYmQwNTdjNmJhMmE5Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L0ludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaAorKysgL2Rldi9udWxsCkBA
IC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIEludHJ1c2l2ZURPTVdyYXBwZXJNYXBfaAotI2RlZmluZSBJ
bnRydXNpdmVET01XcmFwcGVyTWFwX2gKLQotI2luY2x1ZGUgIkRPTVdyYXBwZXJNYXAuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi10ZW1wbGF0ZTxjbGFzcyBLZXlUeXBlPgotY2xhc3MgSW50
cnVzaXZlRE9NV3JhcHBlck1hcCA6IHB1YmxpYyBET01XcmFwcGVyTWFwPEtleVR5cGU+IHsKLXB1
YmxpYzoKLSAgICB2aXJ0dWFsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IGdldChLZXlUeXBl
KiBrZXkpIE9WRVJSSURFCi0gICAgewotICAgICAgICByZXR1cm4ga2V5LT53cmFwcGVyKCk7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCB2b2lkIHNldChLZXlUeXBlKiBrZXksIHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+IHdyYXBwZXIpIE9WRVJSSURFCi0gICAgewotICAgICAgICBBU1NFUlQoa2V5
ICYmIGtleS0+d3JhcHBlcigpLklzRW1wdHkoKSk7Ci0gICAgICAgIGtleS0+c2V0V3JhcHBlcih3
cmFwcGVyKTsKLSAgICAgICAgd3JhcHBlci5NYWtlV2VhayhrZXksIHdlYWtDYWxsYmFjayk7Ci0g
ICAgfQotCi0gICAgdmlydHVhbCB2b2lkIGNsZWFyKCkgT1ZFUlJJREUKLSAgICB7Ci0gICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRN
ZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25zdCBPVkVS
UklERQotICAgIHsKLSAgICAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5m
bywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpCaW5kaW5nKTsKLSAgICAgICAgVU5VU0VEX1BB
UkFNKGluZm8pOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgdm9pZCB3ZWFrQ2FsbGJh
Y2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogY29udGV4dCkKLSAgICB7
Ci0gICAgICAgIEtleVR5cGUqIGtleSA9IHN0YXRpY19jYXN0PEtleVR5cGUqPihjb250ZXh0KTsK
LSAgICAgICAgQVNTRVJUKHZhbHVlLT5Jc09iamVjdCgpKTsKLSAgICAgICAgQVNTRVJUKGtleS0+
d3JhcHBlcigpID09IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSk7Ci0K
LSAgICAgICAga2V5LT5jbGVhcldyYXBwZXIoKTsKLSAgICAgICAgdmFsdWUuRGlzcG9zZSgpOwot
ICAgICAgICB2YWx1ZS5DbGVhcigpOwotICAgICAgICBrZXktPmRlcmVmKCk7Ci0gICAgfQotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcAppbmRleCBjODQwZjIyODFkNzU3NDUxODFkYjJk
ZWUyNGI0ZjA2NDAwMThmMzJjLi5mZjU3YzNjZTI0Y2VmYjcyNTFmYTIzOGRmM2VmODM4Y2UwMDIx
ZDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3Bw
CkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAi
VjhBcnJheUJ1ZmZlclZpZXcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJW
OERPTU1hcC5oIgogI2luY2x1ZGUgIlY4Tm9kZS5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1vcnlJ
bnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJXcmFwcGVyVHlwZUluZm8uaCIKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmlu
ZGV4IDBmNjA0MjEyODc1MmU0MTdhYTQxNGFlYzE5MTdkYmU3MGRkYzFiNTkuLmQxMmQwODUzZDQ0
N2ZkNjMxN2Y1NjAyNDY2MDgyYzk4YTc3NWY4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjIwNiwxMyArMjIw
NiwxNCBAQCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSgpCiB7
CiB9CiAKLXN0YXRpYyB2b2lkIG5ldXRlckJpbmRpbmcodm9pZCogZG9tT2JqZWN0KSAKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBuZXV0ZXJCaW5kaW5nKFQqIG9iamVjdCkgCiB7
CiAgICAgVmVjdG9yPERPTURhdGFTdG9yZSo+JiBhbGxTdG9yZXMgPSBWOFBlcklzb2xhdGVEYXRh
OjpjdXJyZW50KCktPmFsbFN0b3JlcygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWxs
U3RvcmVzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2Jq
ID0gYWxsU3RvcmVzW2ldLT5kb21PYmplY3RNYXAoKS5nZXQoZG9tT2JqZWN0KTsKLSAgICAgICAg
aWYgKCFvYmouSXNFbXB0eSgpKQotICAgICAgICAgICAgb2JqLT5TZXRJbmRleGVkUHJvcGVydGll
c1RvRXh0ZXJuYWxBcnJheURhdGEoMCwgdjg6OmtFeHRlcm5hbEJ5dGVBcnJheSwgMCk7CisgICAg
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFsbFN0b3Jlc1tpXS0+Z2V0KG9i
amVjdCk7CisgICAgICAgIGlmICghd3JhcHBlci5Jc0VtcHR5KCkpCisgICAgICAgICAgICB3cmFw
cGVyLT5TZXRJbmRleGVkUHJvcGVydGllc1RvRXh0ZXJuYWxBcnJheURhdGEoMCwgdjg6OmtFeHRl
cm5hbEJ5dGVBcnJheSwgMCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOERPTU1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OERPTU1hcC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0MzM3ZTA5NmZlNDE0
ZTFiNzZmNzJhNjA4NmMwZjA3ZmE3ZDJmMWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0g
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0g
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJWOERPTU1hcC5oIgotCi0jaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgiCi0jaW5jbHVkZSAi
VjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhOb2RlLmgiCi0jaW5jbHVkZSA8d3RmL01haW5UaHJl
YWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1ET01XcmFwcGVyTWFwPE5vZGU+JiBnZXRE
T01Ob2RlTWFwKHY4OjpJc29sYXRlKiBpc29sYXRlKQotewotICAgIGlmICghaXNvbGF0ZSkKLSAg
ICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7Ci0gICAgcmV0dXJuIERP
TURhdGFTdG9yZTo6Y3VycmVudChpc29sYXRlKS0+ZG9tTm9kZU1hcCgpOwotfQotCi1ET01XcmFw
cGVyTWFwPHZvaWQ+JiBnZXRET01PYmplY3RNYXAodjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0g
ICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJl
bnQoKTsKLSAgICByZXR1cm4gRE9NRGF0YVN0b3JlOjpjdXJyZW50KGlzb2xhdGUpLT5kb21PYmpl
Y3RNYXAoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4RE9NTWFwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4YzdkMjg5ZTAz
YWEyMWQyMTYzNzgxY2JiNWVlYWRhNDUzNTZjNmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAu
aAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFY4RE9NTWFwX2gKLSNkZWZp
bmUgVjhET01NYXBfaAotCi0jaW5jbHVkZSAiRE9NV3JhcHBlck1hcC5oIgotI2luY2x1ZGUgIk5v
ZGUuaCIKLSNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCi0jaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5o
PgotI2luY2x1ZGUgPHY4Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotRE9NV3JhcHBlck1h
cDxOb2RlPiYgZ2V0RE9NTm9kZU1hcCh2ODo6SXNvbGF0ZSogPSAwKTsKLURPTVdyYXBwZXJNYXA8
dm9pZD4mIGdldERPTU9iamVjdE1hcCh2ODo6SXNvbGF0ZSogPSAwKTsKLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVjhET01NYXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRleCA0ZDM3ZmM5M2NhM2IzNDc5NTYw
MDY2NzMyMmJkYjczYmJlZTJjOTA4Li4wMmIzNDdkYzI3YjdlNmFiOTAzMzJiYTJjZDdkYWU5NjYz
NjQ1OWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRv
d1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1No
ZWxsLmNwcApAQCAtNTEsNyArNTEsNiBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTZXQuaCIK
ICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOENvbGxlY3Rpb24uaCIKLSNpbmNs
dWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiVjhE
b2N1bWVudC5oIgogI2luY2x1ZGUgIlY4R0NDb250cm9sbGVyLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRleCA3ODNjYWJmNTZmNDU5ZDk4MDJhMGQz
ZDI5OWNiZThlMWExZjE3Y2E2Li5hYWM5NWRiZWUyYTNjMjA1YmUxYzAzMTUyNDA5MmQ5YzFmMzVi
YjQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAg
LTY4LDE1ICs2OCw2IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OlBlcnNpc3RlbnQ8
djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01Ob2RlKFBhc3NSZWZQ
dHI8Tm9kZT4gbm9kZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSkKLXsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVySGFu
ZGxlID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyh3cmFwcGVyKTsKLSAgICBBU1NF
UlQobWF5YmVET01XcmFwcGVyKHdyYXBwZXJIYW5kbGUpKTsKLSAgICB3cmFwcGVySGFuZGxlLlNl
dFdyYXBwZXJDbGFzc0lkKHY4RE9NTm9kZUNsYXNzSWQpOwotICAgIGdldERPTU5vZGVNYXAoaXNv
bGF0ZSkuc2V0KG5vZGUubGVha1JlZigpLCB3cmFwcGVySGFuZGxlKTsKLSAgICByZXR1cm4gd3Jh
cHBlckhhbmRsZTsKLX0KLQogdm9pZCBWOERPTVdyYXBwZXI6OnNldE5hbWVkSGlkZGVuUmVmZXJl
bmNlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcGFyZW50LCBjb25zdCBjaGFyKiBuYW1lLCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY2hpbGQpCiB7CiAgICAgQVNTRVJUKG5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAppbmRleCA3MjFkMjk1YTc3YTliNGU1ODI2
YWYwMGY0Y2E0NGYwMWY0ZGVlMzk0Li5kNTAxNGMxOTY3NDU2N2E5MDA2ZDUzZDEzMzdkOGNiNzRh
N2JkMWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBw
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAt
MzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJOb2RlRmlsdGVyLmgi
CiAjaW5jbHVkZSAiVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCIKLSNpbmNsdWRlICJWOERPTU1h
cC5oIgogI2luY2x1ZGUgIlY4RE9NV2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJWOFV0aWxpdGll
cy5oIgogI2luY2x1ZGUgIldyYXBwZXJUeXBlSW5mby5oIgpAQCAtOTYsNyArOTUsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KICAgICAgICAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHNldEpTV3JhcHBlckZvckRPTU9iamVj
dChQYXNzUmVmUHRyPFQ+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSogPSAw
KTsKLSAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHNldEpTV3JhcHBl
ckZvckRPTU5vZGUoUGFzc1JlZlB0cjxOb2RlPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6
Oklzb2xhdGUqID0gMCk7CiAKICAgICAgICAgc3RhdGljIGJvb2wgaXNWYWxpZERPTU9iamVjdCh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4pOwogCkBAIC0xMjEsOCArMTE5LDE3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS0+d3JhcHBlcigpOwogCiAgICAg
ICAgICAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gY29udGV4dC0+d29ybGQoKS0+ZG9tRGF0YVN0
b3JlKCk7Ci0gICAgICAgICAgICBET01XcmFwcGVyTWFwPE5vZGU+JiBkb21Ob2RlTWFwID0gc3Rv
cmUtPmRvbU5vZGVNYXAoKTsKLSAgICAgICAgICAgIHJldHVybiBkb21Ob2RlTWFwLmdldChub2Rl
KTsKKyAgICAgICAgICAgIHJldHVybiBzdG9yZS0+Z2V0KG5vZGUpOworICAgICAgICB9CisgICAg
cHJpdmF0ZToKKyAgICAgICAgc3RhdGljIHZvaWQgc2V0V3JhcHBlckNsYXNzKHZvaWQqLCB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQorICAgICAgICB7CisgICAgICAgICAgICB3
cmFwcGVyLlNldFdyYXBwZXJDbGFzc0lkKHY4RE9NT2JqZWN0Q2xhc3NJZCk7CisgICAgICAgIH0K
KworICAgICAgICBzdGF0aWMgdm9pZCBzZXRXcmFwcGVyQ2xhc3MoTm9kZSosIHY4OjpQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHdyYXBwZXIu
U2V0V3JhcHBlckNsYXNzSWQodjhET01Ob2RlQ2xhc3NJZCk7CiAgICAgICAgIH0KICAgICB9Owog
CkBAIC0xMzEsOCArMTM4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHsKICAgICAgICAg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlckhhbmRsZSA9IHY4OjpQZXJzaXN0ZW50
PHY4OjpPYmplY3Q+OjpOZXcod3JhcHBlcik7CiAgICAgICAgIEFTU0VSVChtYXliZURPTVdyYXBw
ZXIod3JhcHBlckhhbmRsZSkpOwotICAgICAgICB3cmFwcGVySGFuZGxlLlNldFdyYXBwZXJDbGFz
c0lkKHY4RE9NT2JqZWN0Q2xhc3NJZCk7Ci0gICAgICAgIGdldERPTU9iamVjdE1hcChpc29sYXRl
KS5zZXQob2JqZWN0LmxlYWtSZWYoKSwgd3JhcHBlckhhbmRsZSk7CisgICAgICAgIHNldFdyYXBw
ZXJDbGFzcyhvYmplY3QuZ2V0KCksIHdyYXBwZXJIYW5kbGUpOworICAgICAgICBET01EYXRhU3Rv
cmU6OmN1cnJlbnQoaXNvbGF0ZSktPnNldChvYmplY3QubGVha1JlZigpLCB3cmFwcGVySGFuZGxl
KTsKICAgICAgICAgcmV0dXJuIHdyYXBwZXJIYW5kbGU7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKaW5kZXggN2E2NzkzMDVhZGQyZDEw
OTFiZGVhZTU1NjA3OGJmZDc4MWJjMzY1Yy4uMzM3ZWE3NjdhMzg0MGQ4MDU0ZTk5NzRkZTI5MTZm
M2QzZjZlOWRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhHQ0Nv
bnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9s
bGVyLmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgot
I2luY2x1ZGUgIkludHJ1c2l2ZURPTVdyYXBwZXJNYXAuaCIKICNpbmNsdWRlICJNZW1vcnlVc2Fn
ZVN1cHBvcnQuaCIKICNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgogI2luY2x1ZGUgIlJldGFpbmVk
RE9NSW5mby5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9i
amVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAppbmRl
eCAxNDczOTAzOWQ2MDM3ZWM5MzZhODQ4YTRkNzYxMzQxYzkwNmQ1YWIyLi5mNzVmMTRmNzg4YTNi
ZjVkZTIxMTg4NDkxMTdkODg3NWUyYzAyYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOE5QT2JqZWN0LmNwcApAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUgIkhUTUxQbHVnSW5F
bGVtZW50LmgiCiAjaW5jbHVkZSAiTlBWOE9iamVjdC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5o
IgotI2luY2x1ZGUgIlY4RE9NTWFwLmgiCiAjaW5jbHVkZSAiVjhIVE1MQXBwbGV0RWxlbWVudC5o
IgogI2luY2x1ZGUgIlY4SFRNTEVtYmVkRWxlbWVudC5oIgogI2luY2x1ZGUgIlY4SFRNTE9iamVj
dEVsZW1lbnQuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtl
ckNvbnRleHRFeGVjdXRpb25Qcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9X
b3JrZXJDb250ZXh0RXhlY3V0aW9uUHJveHkuY3BwCmluZGV4IDk5YWEwOWViYjZhMTFmYmU3Y2Y1
ZTUyYTk5ZTFlZTc3YzMxZWY4YjguLjE1YzVlOTAwYmY1ZTRmNmE3OTljOTJmYmMyODg1YTIxNjEz
YWNlZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRl
eHRFeGVjdXRpb25Qcm94eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29y
a2VyQ29udGV4dEV4ZWN1dGlvblByb3h5LmNwcApAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUg
IlNoYXJlZFdvcmtlci5oIgogI2luY2x1ZGUgIlNoYXJlZFdvcmtlckNvbnRleHQuaCIKICNpbmNs
dWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOERPTU1hcC5oIgogI2luY2x1ZGUgIlY4RE9N
V2luZG93U2hlbGwuaCIKICNpbmNsdWRlICJWOERlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKICNp
bmNsdWRlICJWOEdDQ29udHJvbGxlci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA1YmFjYjVhZDliZTFkZDdi
NmI4MWFmNDhjZmU5NjE1NmJmYTRmNDExLi42MjhmNTFiNjBkOTU2NGUyNDliMTU3ZmE3MzlmOGJi
N2UwZWVjYjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIlNjcmlw
dENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJT
Y3JpcHRWYWx1ZS5oIgotI2luY2x1ZGUgIlY4RE9NTWFwLmgiCiAjaW5jbHVkZSAiVjhXb3JrZXJD
b250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUgIldvcmtlckNv
bnRleHRFeGVjdXRpb25Qcm94eS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggMjU2YzlkMzdlNDExY2ZlNzBhNmUzNjM3ODJhMzY2M2EwNDQ1M2QzZi4uNThhN2Fm
NDkyZTI5MDVmYWVhNzBjZjRlYjQzN2EyNmYxZWRkZDI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVt
ZW50Q29uc3RydWN0b3IuY3BwCkBAIC04MCw3ICs4MCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6
QXJnCiAgICAgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+IGltYWdlID0gSFRNTEltYWdlRWxlbWVu
dDo6Y3JlYXRlRm9ySlNDb25zdHJ1Y3Rvcihkb2N1bWVudCwgb3B0aW9uYWxXaWR0aCwgb3B0aW9u
YWxIZWlnaHQpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlciA9IGFyZ3MuSG9s
ZGVyKCk7CiAgICAgVjhET01XcmFwcGVyOjpzZXRET01XcmFwcGVyKHdyYXBwZXIsICZWOEhUTUxJ
bWFnZUVsZW1lbnRDb25zdHJ1Y3Rvcjo6aW5mbywgaW1hZ2UuZ2V0KCkpOwotICAgIFY4RE9NV3Jh
cHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NTm9kZShpbWFnZS5yZWxlYXNlKCksIHdyYXBwZXIpOwor
ICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yRE9NT2JqZWN0KGltYWdlLnJlbGVhc2Uo
KSwgd3JhcHBlcik7CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggY2RmZjc1YWIx
Y2VjN2MxNGU1NzYzNjUyY2Q5MjI3ZWY0Njg0YjE1ZC4uMjk4NDgwNDU2OWI0NzRjMWNlMWY0M2Q2
YzQwMzc3MDYyNmIyNWQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTMyLDkgKzMyLDYgQEAKICNpbmNsdWRlICJXZWJT
Y3JpcHRDb250cm9sbGVyLmgiCiAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCi0jaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhET01NYXAuaCIKLSNpbmNsdWRlIDxwdWJs
aWMvV2ViU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172855</attachid>
            <date>2012-11-07 12:00:31 -0800</date>
            <delta_ts>2012-11-07 14:50:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101110-20121107115842.patch</filename>
            <type>text/plain</type>
            <size>3329</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE5OGJiOWI0NjcyZjhl
N2YxMjc3ODg5NWE3YTlhNTE3MmVlY2U1ZC4uMzQ3NzI3ZmYzMWUyZTQzN2JmZGRjMDVmNDNlNTEz
NjIyODU5OTM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDEyLTExLTA3ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgW1Y4XSBJbnRydXNpdmVET01X
cmFwcGVyTWFwIHNob3VsZCBiZSB1c2FibGUgZm9yIG1vcmUgdGhhbiBqdXN0IE5vZGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDExMTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGdl
bmVyYWxpemVzIG91ciBzdXBwb3J0IGZvciBzdG9yaW5nIHdyYXBwZXJzIGluIERPTSBvYmplY3Rz
CisgICAgICAgIHRvIGJlIHVzYWJsZSBmb3IgbW9yZSB0aGFuIGp1c3Qgbm9kZXMuIEFmdGVyIHRo
aXMgcGF0Y2gsIGFueSBvYmplY3QKKyAgICAgICAgd2l0aCBhIFNjcmlwdFdyYXBwYWJsZSBiYXNl
IGNsYXNzIHdpbGwgaGF2ZSBpdHMgd3JhcHBlciBzdG9yZWQgaW5saW5lCisgICAgICAgIGluIHRo
ZSBvYmplY3QgaW4gdGhlIG1haW4gd29ybGQuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01E
YXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjp3ZWFrQ2FsbGJh
Y2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oOgorICAgICAgICAoV2Vi
Q29yZTo6RE9NRGF0YVN0b3JlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3Jl
OjpzZXQpOgorCisyMDEyLTExLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisK
ICAgICAgICAgW1Y4XSBET01XcmFwcGVyTWFwIGRvZXNuJ3QgbmVlZCB0byB1c2UgdmlydHVhbCBm
dW5jdGlvbnMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMTQ5NAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRh
U3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcApp
bmRleCAwOTc1YWEzZWRkZjE3OTQyODNjMzI3Yjk2OTkyZTk3MjlmZjVkZDliLi4wNDJhYjkwM2Nl
ZjRmY2Q2YmNmN2U4ZDMzNzY2MmE0N2QxNmU2MWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKQEAgLTcyLDE0ICs3MiwxNyBAQCB2b2lkIERPTURhdGFT
dG9yZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5m
bykgY29uc3QKIAogdm9pZCBET01EYXRhU3RvcmU6OndlYWtDYWxsYmFjayh2ODo6UGVyc2lzdGVu
dDx2ODo6VmFsdWU+IHZhbHVlLCB2b2lkKiBjb250ZXh0KQogewotICAgIE5vZGUqIG9iamVjdCA9
IHN0YXRpY19jYXN0PE5vZGUqPihjb250ZXh0KTsKKyAgICBTY3JpcHRXcmFwcGFibGUqIGtleSA9
IHN0YXRpY19jYXN0PFNjcmlwdFdyYXBwYWJsZSo+KGNvbnRleHQpOwogICAgIEFTU0VSVCh2YWx1
ZS0+SXNPYmplY3QoKSk7Ci0gICAgQVNTRVJUKG9iamVjdC0+d3JhcHBlcigpID09IHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVl
KTsKKyAgICBBU1NFUlQoa2V5LT53cmFwcGVyKCkgPT0gd3JhcHBlcik7CisgICAgV3JhcHBlclR5
cGVJbmZvKiBpbmZvID0gdG9XcmFwcGVyVHlwZUluZm8od3JhcHBlcik7CisgICAgdm9pZCogb2Jq
ZWN0ID0gdG9OYXRpdmUod3JhcHBlcik7CiAKLSAgICBvYmplY3QtPmNsZWFyV3JhcHBlcigpOwor
ICAgIGtleS0+Y2xlYXJXcmFwcGVyKCk7CiAgICAgdmFsdWUuRGlzcG9zZSgpOwogICAgIHZhbHVl
LkNsZWFyKCk7Ci0gICAgb2JqZWN0LT5kZXJlZigpOworICAgIGluZm8tPmRlcmVmT2JqZWN0KG9i
amVjdCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggOGI5YjMzMjkzYmJkOTU2MmFjMWI2YjdiYmM3ZjA2
NWQ2MmZmMDJkMC4uNzE4M2MyMWQ5MjJmZWI2ZmQ4MmM0MTk0YTMxYzNmYWUzNTQ5OTNjZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKQEAgLTYwLDcgKzYwLDcg
QEAgcHVibGljOgogICAgIHN0YXRpYyBET01EYXRhU3RvcmUqIGN1cnJlbnQodjg6Oklzb2xhdGUq
KTsKIAogICAgIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldCh2b2lkKiBvYmplY3Qp
IGNvbnN0IHsgcmV0dXJuIG1fZG9tT2JqZWN0TWFwLT5nZXQob2JqZWN0KTsgfQotICAgIGlubGlu
ZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldChOb2RlKiBvYmplY3QpIGNvbnN0CisgICAgaW5s
aW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0KFNjcmlwdFdyYXBwYWJsZSogb2JqZWN0KSBj
b25zdAogICAgIHsKICAgICAgICAgaWYgKG1fdHlwZSA9PSBNYWluV29ybGQpCiAgICAgICAgICAg
ICByZXR1cm4gb2JqZWN0LT53cmFwcGVyKCk7CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAg
ICB9CiAKICAgICBpbmxpbmUgdm9pZCBzZXQodm9pZCogb2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0PiB3cmFwcGVyKSB7IG1fZG9tT2JqZWN0TWFwLT5zZXQob2JqZWN0LCB3cmFwcGVy
KTsgfQotICAgIGlubGluZSB2b2lkIHNldChOb2RlKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4
OjpPYmplY3Q+IHdyYXBwZXIpCisgICAgaW5saW5lIHZvaWQgc2V0KFNjcmlwdFdyYXBwYWJsZSog
b2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQogICAgIHsKICAgICAg
ICAgaWYgKG1fdHlwZSA9PSBNYWluV29ybGQpIHsKICAgICAgICAgICAgIEFTU0VSVChvYmplY3Qt
PndyYXBwZXIoKS5Jc0VtcHR5KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172876</attachid>
            <date>2012-11-07 14:51:03 -0800</date>
            <delta_ts>2012-11-07 17:46:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101110-20121107144914.patch</filename>
            <type>text/plain</type>
            <size>4919</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNzY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGE5OGJiOWI0NjcyZjhl
N2YxMjc3ODg5NWE3YTlhNTE3MmVlY2U1ZC4uOWUzOGMyYjU0Y2ZiZWUyNmI5ODgyZGQ0OWY2MDE1
OTY3ZTg3YmI0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDEyLTExLTA3ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgW1Y4XSBJbnRydXNpdmVET01X
cmFwcGVyTWFwIHNob3VsZCBiZSB1c2FibGUgZm9yIG1vcmUgdGhhbiBqdXN0IE5vZGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDExMTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEuCisKKyAgICAgICAgVGhpcyBwYXRjaCBnZW5l
cmFsaXplcyBvdXIgc3VwcG9ydCBmb3Igc3RvcmluZyB3cmFwcGVycyBpbiBET00gb2JqZWN0cwor
ICAgICAgICB0byBiZSB1c2FibGUgZm9yIG1vcmUgdGhhbiBqdXN0IG5vZGVzLiBBZnRlciB0aGlz
IHBhdGNoLCBhbnkgb2JqZWN0CisgICAgICAgIHdpdGggYSBTY3JpcHRXcmFwcGFibGUgYmFzZSBj
bGFzcyB3aWxsIGhhdmUgaXRzIHdyYXBwZXIgc3RvcmVkIGlubGluZQorICAgICAgICBpbiB0aGUg
b2JqZWN0IGluIHRoZSBtYWluIHdvcmxkLgorCisgICAgICAgICogYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6d2Vha0NhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTURhdGFTdG9yZTo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6
c2V0KToKKworMjAxMi0xMS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAg
ICAgICAgIFtWOF0gRE9NV3JhcHBlck1hcCBkb2Vzbid0IG5lZWQgdG8gdXNlIHZpcnR1YWwgZnVu
Y3Rpb25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDE0OTQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKaW5k
ZXggMDk3NWFhM2VkZGYxNzk0MjgzYzMyN2I5Njk5MmU5NzI5ZmY1ZGQ5Yi4uOWIwZWY1OTJmNjdl
MzVkNDM3NmY3OWFhODEyOTM5M2VkNjc0YTUzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9ET01EYXRhU3RvcmUuY3BwCkBAIC03MiwxNCArNzIsMTggQEAgdm9pZCBET01EYXRhU3Rv
cmU6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8p
IGNvbnN0CiAKIHZvaWQgRE9NRGF0YVN0b3JlOjp3ZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8
djg6OlZhbHVlPiB2YWx1ZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBOb2RlKiBvYmplY3QgPSBz
dGF0aWNfY2FzdDxOb2RlKj4oY29udGV4dCk7CisgICAgU2NyaXB0V3JhcHBhYmxlKiBrZXkgPSBz
dGF0aWNfY2FzdDxTY3JpcHRXcmFwcGFibGUqPihjb250ZXh0KTsKICAgICBBU1NFUlQodmFsdWUt
PklzT2JqZWN0KCkpOwotICAgIEFTU0VSVChvYmplY3QtPndyYXBwZXIoKSA9PSB2ODo6UGVyc2lz
dGVudDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IHdyYXBwZXIgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7
CisgICAgQVNTRVJUKGtleS0+d3JhcHBlcigpID09IHdyYXBwZXIpOworICAgIC8vIE5vdGU6IHxv
YmplY3R8IG1pZ2h0IG5vdCBiZSBlcXVhbCB0byB8a2V5fCwgZS5nLiwgaWYgU2NyaXB0V3JhcHBh
YmxlIGlzbid0IGEgbGVmdC1tb3N0IGJhc2UgY2xhc3MuCisgICAgdm9pZCogb2JqZWN0ID0gdG9O
YXRpdmUod3JhcHBlcik7CisgICAgV3JhcHBlclR5cGVJbmZvKiBpbmZvID0gdG9XcmFwcGVyVHlw
ZUluZm8od3JhcHBlcik7CiAKLSAgICBvYmplY3QtPmNsZWFyV3JhcHBlcigpOworICAgIGtleS0+
Y2xlYXJXcmFwcGVyKCk7CiAgICAgdmFsdWUuRGlzcG9zZSgpOwogICAgIHZhbHVlLkNsZWFyKCk7
Ci0gICAgb2JqZWN0LT5kZXJlZigpOworICAgIGluZm8tPmRlcmVmT2JqZWN0KG9iamVjdCk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9N
RGF0YVN0b3JlLmgKaW5kZXggOGI5YjMzMjkzYmJkOTU2MmFjMWI2YjdiYmM3ZjA2NWQ2MmZmMDJk
MC4uMDY2ODdhOGZiYWZjMTk0NTQzYWIyNDMyNzU3YzcwN2MxOWNlOWMyNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKQEAgLTU5LDI5ICs1OSw1MiBAQCBwdWJs
aWM6CiAKICAgICBzdGF0aWMgRE9NRGF0YVN0b3JlKiBjdXJyZW50KHY4OjpJc29sYXRlKik7CiAK
LSAgICBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXQodm9pZCogb2JqZWN0KSBjb25z
dCB7IHJldHVybiBtX2RvbU9iamVjdE1hcC0+Z2V0KG9iamVjdCk7IH0KLSAgICBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXQoTm9kZSogb2JqZWN0KSBjb25zdAorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+CisgICAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0KFQqIG9i
amVjdCkgY29uc3QKICAgICB7Ci0gICAgICAgIGlmIChtX3R5cGUgPT0gTWFpbldvcmxkKQotICAg
ICAgICAgICAgcmV0dXJuIG9iamVjdC0+d3JhcHBlcigpOworICAgICAgICBpZiAod3JhcHBlcklz
U3RvcmVkSW5PYmplY3Qob2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybiBnZXRXcmFwcGVyRnJv
bU9iamVjdChvYmplY3QpOwogICAgICAgICByZXR1cm4gbV9kb21PYmplY3RNYXAtPmdldChvYmpl
Y3QpOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIHNldCh2b2lkKiBvYmplY3QsIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIpIHsgbV9kb21PYmplY3RNYXAtPnNldChvYmplY3Qs
IHdyYXBwZXIpOyB9Ci0gICAgaW5saW5lIHZvaWQgc2V0KE5vZGUqIG9iamVjdCwgdjg6OlBlcnNp
c3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAg
IGlubGluZSB2b2lkIHNldChUKiBvYmplY3QsIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdy
YXBwZXIpCiAgICAgewotICAgICAgICBpZiAobV90eXBlID09IE1haW5Xb3JsZCkgewotICAgICAg
ICAgICAgQVNTRVJUKG9iamVjdC0+d3JhcHBlcigpLklzRW1wdHkoKSk7Ci0gICAgICAgICAgICBv
YmplY3QtPnNldFdyYXBwZXIod3JhcHBlcik7Ci0gICAgICAgICAgICB3cmFwcGVyLk1ha2VXZWFr
KG9iamVjdCwgd2Vha0NhbGxiYWNrKTsKKyAgICAgICAgaWYgKHNldFdyYXBwZXJJbk9iamVjdChv
YmplY3QsIHdyYXBwZXIpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAgICAgICAg
IG1fZG9tT2JqZWN0TWFwLT5zZXQob2JqZWN0LCB3cmFwcGVyKTsKICAgICB9CiAKICAgICB2b2lk
IHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKIAogcHJvdGVjdGVk
OgorICAgIGJvb2wgd3JhcHBlcklzU3RvcmVkSW5PYmplY3Qodm9pZCopIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgYm9vbCB3cmFwcGVySXNTdG9yZWRJbk9iamVjdChTY3JpcHRXcmFwcGFi
bGUqKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0gTWFpbldvcmxkOyB9CisKKyAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGdldFdyYXBwZXJGcm9tT2JqZWN0KHZvaWQqKSBjb25zdAorICAgIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KCk7CisgICAgfQorCisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXRX
cmFwcGVyRnJvbU9iamVjdChTY3JpcHRXcmFwcGFibGUqIG9iamVjdCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gTWFpbldvcmxkKTsKKyAgICAgICAgcmV0dXJuIG9iamVj
dC0+d3JhcHBlcigpOworICAgIH0KKworICAgIGJvb2wgc2V0V3JhcHBlckluT2JqZWN0KHZvaWQq
LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29s
IHNldFdyYXBwZXJJbk9iamVjdChTY3JpcHRXcmFwcGFibGUqIG9iamVjdCwgdjg6OlBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKKyAgICB7CisgICAgICAgIGlmIChtX3R5cGUgIT0gTWFp
bldvcmxkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBBU1NFUlQob2JqZWN0
LT53cmFwcGVyKCkuSXNFbXB0eSgpKTsKKyAgICAgICAgQVNTRVJUKG1fZG9tT2JqZWN0TWFwLT5n
ZXQodG9OYXRpdmUod3JhcHBlcikpLklzRW1wdHkoKSk7CisgICAgICAgIG9iamVjdC0+c2V0V3Jh
cHBlcih3cmFwcGVyKTsKKyAgICAgICAgd3JhcHBlci5NYWtlV2VhayhvYmplY3QsIHdlYWtDYWxs
YmFjayk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIHN0YXRpYyB2b2lkIHdl
YWtDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+LCB2b2lkKiBjb250ZXh0KTsKIAog
ICAgIFR5cGUgbV90eXBlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172902</attachid>
            <date>2012-11-07 17:46:17 -0800</date>
            <delta_ts>2012-11-07 19:06:09 -0800</delta_ts>
            <desc>Hopefully final patch</desc>
            <filename>bug-101110-20121107174428.patch</filename>
            <type>text/plain</type>
            <size>3638</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzODI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZmOWRiZjgzYjcyYTBh
MTUzZjIwMmYwYjZmNjdhOTRjMzkwYWI0Yi4uZGQ5MDQxNjQ1YmVlZjViMTZjYTlmYWY5MTkzY2Uy
YTgxZGE4ODFiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDEyLTExLTA3ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgW1Y4XSBJbnRydXNpdmVET01X
cmFwcGVyTWFwIHNob3VsZCBiZSB1c2FibGUgZm9yIG1vcmUgdGhhbiBqdXN0IE5vZGVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDExMTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBLZW50YXJvIEhhcmEuCisKKyAgICAgICAgSG9wZWZ1bGx5IHRoZSBt
ZW1vcnkgaXNzdWVzIHdpdGggdGhpcyBwYXRjaCBoYXZlIGJlZW4gcmVzb2x2ZWQgYnkKKyAgICAg
ICAgZml4aW5nIGJ1ZyAxMDE1MjUuIFRoaXMgcGF0Y2ggcmUtbGFuZHMgdGhpcyBwYXRjaCBhZ2Fp
biwgaG9wZWZ1bGx5IGZvcgorICAgICAgICB0aGUgbGFzdCB0aW1lLgorCisgICAgICAgICogYmlu
ZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9y
ZTo6d2Vha0NhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9ET01EYXRhU3RvcmUuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTURhdGFTdG9yZTo6d3JhcHBlcklzU3RvcmVkSW5PYmplY3Qp
OgorICAgICAgICAoV2ViQ29yZTo6RE9NRGF0YVN0b3JlOjpnZXRXcmFwcGVyRnJvbU9iamVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpET01EYXRhU3RvcmU6OnNldFdyYXBwZXJJbk9iamVjdCk6CisK
KzIwMTItMTEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwogICAgICAgICBb
VjhdIERvbid0IGxlYWsgPGltZz4gZWxlbWVudHMgaW4gY29udGVudCBzY3JpcHRzCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE1MjUKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5jcHAKaW5kZXggMjM5OTQxNzI3NTBm
OWM5MzliNmI4MDM5MmQzZGM2ZjY5YTk3YzNhZC4uNTk3ZTMxNDM0M2ZjZDlmNmE4YzdlNDk0ZWI5
ZmRkMmM0YTQzMDNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9N
RGF0YVN0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9ET01EYXRhU3Rv
cmUuY3BwCkBAIC03MiwxNSArNzIsMTYgQEAgdm9pZCBET01EYXRhU3RvcmU6OnJlcG9ydE1lbW9y
eVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiAKIHZvaWQg
RE9NRGF0YVN0b3JlOjp3ZWFrQ2FsbGJhY2sodjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB2YWx1
ZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBOb2RlKiBvYmplY3QgPSBzdGF0aWNfY2FzdDxOb2Rl
Kj4oY29udGV4dCk7CisgICAgU2NyaXB0V3JhcHBhYmxlKiBrZXkgPSBzdGF0aWNfY2FzdDxTY3Jp
cHRXcmFwcGFibGUqPihjb250ZXh0KTsKICAgICBBU1NFUlQodmFsdWUtPklzT2JqZWN0KCkpOwog
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3Q+IHdyYXBwZXIgPSB2ODo6UGVyc2lzdGVudDx2
ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSk7Ci0gICAgQVNTRVJUKG9iamVjdC0+d3JhcHBlcigpID09
IHdyYXBwZXIpOwotICAgIEFTU0VSVChvYmplY3QgPSBzdGF0aWNfY2FzdDxOb2RlKj4odG9OYXRp
dmUod3JhcHBlcikpKTsKKyAgICBBU1NFUlQoa2V5LT53cmFwcGVyKCkgPT0gd3JhcHBlcik7Cisg
ICAgLy8gTm90ZTogfG9iamVjdHwgbWlnaHQgbm90IGJlIGVxdWFsIHRvIHxrZXl8LCBlLmcuLCBp
ZiBTY3JpcHRXcmFwcGFibGUgaXNuJ3QgYSBsZWZ0LW1vc3QgYmFzZSBjbGFzcy4KKyAgICB2b2lk
KiBvYmplY3QgPSB0b05hdGl2ZSh3cmFwcGVyKTsKICAgICBXcmFwcGVyVHlwZUluZm8qIGluZm8g
PSB0b1dyYXBwZXJUeXBlSW5mbyh3cmFwcGVyKTsKICAgICBBU1NFUlQoaW5mby0+ZGVyZWZPYmpl
Y3RGdW5jdGlvbik7CiAKLSAgICBvYmplY3QtPmNsZWFyV3JhcHBlcigpOworICAgIGtleS0+Y2xl
YXJXcmFwcGVyKCk7CiAgICAgdmFsdWUuRGlzcG9zZSgpOwogICAgIHZhbHVlLkNsZWFyKCk7CiAg
ICAgaW5mby0+ZGVyZWZPYmplY3Qob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
RE9NRGF0YVN0b3JlLmgKaW5kZXggNDU2YzBlMGY1N2Q1NTEwZjc3N2RhYmI5NTNlYTY2NWE0NTEx
ZGRlMS4uODY0NmRiNDNjZDU0MDEyMzk0NDkzYzIyYmQ4NTkwZWU1MWI2YmY0ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKQEAgLTc5LDcgKzc5LDcgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIGJvb2wgd3JhcHBlcklzU3RvcmVkSW5PYmplY3Qodm9pZCop
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCB3cmFwcGVySXNTdG9yZWRJbk9iamVj
dChOb2RlKikgY29uc3QgeyByZXR1cm4gbV90eXBlID09IE1haW5Xb3JsZDsgfQorICAgIGJvb2wg
d3JhcHBlcklzU3RvcmVkSW5PYmplY3QoU2NyaXB0V3JhcHBhYmxlKikgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IE1haW5Xb3JsZDsgfQogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnZXRX
cmFwcGVyRnJvbU9iamVjdCh2b2lkKikgY29uc3QKICAgICB7CkBAIC04NywxNCArODcsMTQgQEAg
cHJpdmF0ZToKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKICAgICB9
CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldFdyYXBwZXJGcm9tT2JqZWN0KE5vZGUq
IG9iamVjdCkgY29uc3QKKyAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldFdyYXBwZXJGcm9t
T2JqZWN0KFNjcmlwdFdyYXBwYWJsZSogb2JqZWN0KSBjb25zdAogICAgIHsKICAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBNYWluV29ybGQpOwogICAgICAgICByZXR1cm4gb2JqZWN0LT53cmFwcGVy
KCk7CiAgICAgfQogCiAgICAgYm9vbCBzZXRXcmFwcGVySW5PYmplY3Qodm9pZCosIHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+KSB7IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgc2V0V3JhcHBl
ckluT2JqZWN0KE5vZGUqIG9iamVjdCwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBl
cikKKyAgICBib29sIHNldFdyYXBwZXJJbk9iamVjdChTY3JpcHRXcmFwcGFibGUqIG9iamVjdCwg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlcikKICAgICB7CiAgICAgICAgIGlmICht
X3R5cGUgIT0gTWFpbldvcmxkKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>