<?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>45604</bug_id>
          
          <creation_ts>2010-09-11 17:55:51 -0700</creation_ts>
          <short_desc>Add callback mechanism for the getting the source of a frame</short_desc>
          <delta_ts>2010-09-11 18:18:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>277802</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-11 17:55:51 -0700</bug_when>
    <thetext>Add callback mechanism for the getting the source of a frame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277803</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-11 17:56:43 -0700</bug_when>
    <thetext>&lt;rdar://problem/8364681&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277804</commentid>
    <comment_count>2</comment_count>
      <attachid>67321</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-11 18:02:18 -0700</bug_when>
    <thetext>Created attachment 67321
Patch

In addition to this approach, we may want the ability to tell WebKit to open up a new WKView with  the source thus avoiding two potential copies of the source over the wire.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277805</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-11 18:03:22 -0700</bug_when>
    <thetext>Attachment 67321 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/UIProcess/API/C/WKPage.cpp:260:  WKPageGetSourceForFrame_b is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Total errors found: 1 in 15 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>277807</commentid>
    <comment_count>4</comment_count>
      <attachid>67321</attachid>
    <who name="">mitz</who>
    <bug_when>2010-09-11 18:13:16 -0700</bug_when>
    <thetext>Comment on attachment 67321
Patch

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

&gt; WebKit2/UIProcess/WebPageProxy.cpp:1177
&gt; +    Vector&lt;RefPtr&lt;FrameSourceCallback&gt; &gt; frameSourceCallbacks;
&gt; +    copyValuesToVector(m_frameSourceCallbacks, frameSourceCallbacks);
&gt; +    m_frameSourceCallbacks.clear();
&gt; +    for (size_t i = 0, size = frameSourceCallbacks.size(); i &lt; size; ++i)
&gt; +        frameSourceCallbacks[i]-&gt;invalidate();
&gt; +
Consider factoring common code out of processDidExit() and close().

&gt; WebKit2/UIProcess/WebPageProxy.h:82
&gt;  typedef GenericCallback&lt;WKStringRef, WTF::StringImpl*&gt; RenderTreeExternalRepresentationCallback;
&gt;  typedef GenericCallback&lt;WKStringRef, WTF::StringImpl*&gt; ScriptReturnValueCallback;
&gt; +typedef GenericCallback&lt;WKStringRef, WTF::StringImpl*&gt; FrameSourceCallback;
&gt;  
Maybe keep these sorted?

&gt; WebKit2/UIProcess/WebPageProxy.h:243
&gt;  
&gt;      void didReceiveEvent(WebEvent::Type);
&gt; +
&gt;      void didRunJavaScriptInMainFrame(const WTF::String&amp;, uint64_t);
Why the new newline?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277809</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-11 18:16:15 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 67321 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=67321&amp;action=prettypatch
&gt; 
&gt; &gt; WebKit2/UIProcess/WebPageProxy.cpp:1177
&gt; &gt; +    Vector&lt;RefPtr&lt;FrameSourceCallback&gt; &gt; frameSourceCallbacks;
&gt; &gt; +    copyValuesToVector(m_frameSourceCallbacks, frameSourceCallbacks);
&gt; &gt; +    m_frameSourceCallbacks.clear();
&gt; &gt; +    for (size_t i = 0, size = frameSourceCallbacks.size(); i &lt; size; ++i)
&gt; &gt; +        frameSourceCallbacks[i]-&gt;invalidate();
&gt; &gt; +
&gt; Consider factoring common code out of processDidExit() and close().

Considered, but not doing it in this patch.

&gt; &gt; WebKit2/UIProcess/WebPageProxy.h:82
&gt; &gt;  typedef GenericCallback&lt;WKStringRef, WTF::StringImpl*&gt; RenderTreeExternalRepresentationCallback;
&gt; &gt;  typedef GenericCallback&lt;WKStringRef, WTF::StringImpl*&gt; ScriptReturnValueCallback;
&gt; &gt; +typedef GenericCallback&lt;WKStringRef, WTF::StringImpl*&gt; FrameSourceCallback;
&gt; &gt;  
&gt; Maybe keep these sorted?

Ok.

&gt; 
&gt; &gt; WebKit2/UIProcess/WebPageProxy.h:243
&gt; &gt;  
&gt; &gt;      void didReceiveEvent(WebEvent::Type);
&gt; &gt; +
&gt; &gt;      void didRunJavaScriptInMainFrame(const WTF::String&amp;, uint64_t);
&gt; Why the new newline?

Paragraphing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>277810</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-11 18:18:08 -0700</bug_when>
    <thetext>Fixed in r67311.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>67321</attachid>
            <date>2010-09-11 18:02:18 -0700</date>
            <delta_ts>2010-09-11 18:13:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>source.diff</filename>
            <type>text/plain</type>
            <size>22119</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NzMxMCkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDktMTEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgY2Fs
bGJhY2sgbWVjaGFuaXNtIGZvciB0aGUgZ2V0dGluZyB0aGUgc291cmNlIG9mIGEgZnJhbWUKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgzNjQ2ODE+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTYwNAorCisgICAgICAgICogU2hhcmVkL0NvcmVJUENT
dXBwb3J0L1dlYlBhZ2VNZXNzYWdlS2luZHMuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29yZUlQQ1N1
cHBvcnQvV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZSk6CisgICAg
ICAgIChjYWxsR2V0U291cmNlRm9yRnJhbWVCbG9ja0Jsb2NrQW5kRGlzcG9zZSk6CisgICAgICAg
IChXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZV9iKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tQYWdlLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OmdldFNvdXJjZUZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlk
R2V0U291cmNlRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nl
c3NEaWRFeGl0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
RnJhbWU6OnNvdXJjZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oOgorCiAyMDEwLTA5LTEwICBKZXN1cyBTYW5jaGV6LVBhbGVuY2lhIDxqZXN1cy5wYWxl
bmNpYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJ
bmRleDogV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZU1lc3NhZ2VLaW5kcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L1dlYlBhZ2VNZXNz
YWdlS2luZHMuaAkocmV2aXNpb24gNjczMDkpCisrKyBXZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3Vw
cG9ydC9XZWJQYWdlTWVzc2FnZUtpbmRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcg
QEAgZW51bSBLaW5kIHsKICAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24sCiAgICAgRGlkUmVt
b3ZlRWRpdENvbW1hbmQsCiAgICAgR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24s
CisgICAgR2V0U291cmNlRm9yRnJhbWUsCiAgICAgR29CYWNrLAogICAgIEdvRm9yd2FyZCwKICAg
ICBHb1RvQmFja0ZvcndhcmRJdGVtLApJbmRleDogV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBv
cnQvV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFy
ZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRzLmgJKHJldmlzaW9uIDY3
MzA5KQorKysgV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZVByb3h5TWVzc2Fn
ZUtpbmRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgZW51bSBLaW5kIHsKICAg
ICBEaWRGaXJzdExheW91dEZvckZyYW1lLAogICAgIERpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZvckZyYW1lLAogICAgIERpZEdldFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9u
LAorICAgIERpZEdldFNvdXJjZUZvckZyYW1lLAogICAgIERpZFJlY2VpdmVFdmVudCwKICAgICBE
aWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSwKICAgICBE
aWRSZWNlaXZlVGl0bGVGb3JGcmFtZSwKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cAkocmV2aXNpb24gNjczMDkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTAsNiArMTkwLDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpj
bG9zZSgpCiAgICAgICAgIHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2tz
W2ldLT5pbnZhbGlkYXRlKCk7CiAgICAgbV9yZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlv
bkNhbGxiYWNrcy5jbGVhcigpOwogCisgICAgVmVjdG9yPFJlZlB0cjxGcmFtZVNvdXJjZUNhbGxi
YWNrPiA+IGZyYW1lU291cmNlQ2FsbGJhY2tzOworICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX2Zy
YW1lU291cmNlQ2FsbGJhY2tzLCBmcmFtZVNvdXJjZUNhbGxiYWNrcyk7CisgICAgbV9mcmFtZVNv
dXJjZUNhbGxiYWNrcy5jbGVhcigpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZnJh
bWVTb3VyY2VDYWxsYmFja3Muc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBmcmFtZVNv
dXJjZUNhbGxiYWNrc1tpXS0+aW52YWxpZGF0ZSgpOworCiAgICAgVmVjdG9yPFdlYkVkaXRDb21t
YW5kUHJveHkqPiBlZGl0Q29tbWFuZFZlY3RvcjsKICAgICBjb3B5VG9WZWN0b3IobV9lZGl0Q29t
bWFuZFNldCwgZWRpdENvbW1hbmRWZWN0b3IpOwogICAgIG1fZWRpdENvbW1hbmRTZXQuY2xlYXIo
KTsKQEAgLTQ0Nyw2ICs0NTMsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdldFJlbmRlclRyZWVF
eHRlcm5hbAogICAgIHByb2Nlc3MoKS0+c2VuZChXZWJQYWdlTWVzc2FnZTo6R2V0UmVuZGVyVHJl
ZUV4dGVybmFsUmVwcmVzZW50YXRpb24sIG1fcGFnZUlELCBjYWxsYmFja0lEKTsKIH0KIAordm9p
ZCBXZWJQYWdlUHJveHk6OmdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBQ
YXNzUmVmUHRyPEZyYW1lU291cmNlQ2FsbGJhY2s+IHBycENhbGxiYWNrKQoreworICAgIFJlZlB0
cjxGcmFtZVNvdXJjZUNhbGxiYWNrPiBjYWxsYmFjayA9IHBycENhbGxiYWNrOworICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgIG1fZnJhbWVTb3Vy
Y2VDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLmdldCgpKTsKKyAgICBwcm9jZXNz
KCktPnNlbmQoV2ViUGFnZU1lc3NhZ2U6OkdldFNvdXJjZUZvckZyYW1lLCBtX3BhZ2VJRCwgQ29y
ZUlQQzo6SW4oZnJhbWUtPmZyYW1lSUQoKSwgY2FsbGJhY2tJRCkpOworfQorCiB2b2lkIFdlYlBh
Z2VQcm94eTo6cHJlZmVyZW5jZXNEaWRDaGFuZ2UoKQogewogICAgIGlmICghaXNWYWxpZCgpKQpA
QCAtNjQ4LDYgKzY2MiwxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Q29yCiAgICAgICAgICAgICBkaWRHZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbihy
ZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
KyAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRHZXRTb3VyY2VGb3JGcmFtZTog
eworICAgICAgICAgICAgU3RyaW5nIHJlc3VsdFN0cmluZzsKKyAgICAgICAgICAgIHVpbnQ2NF90
IGNhbGxiYWNrSUQ7CisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6
Ok91dChyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICBkaWRHZXRTb3VyY2VGb3JGcmFtZShyZXN1bHRTdHJpbmcsIGNhbGxiYWNr
SUQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBXZWJQYWdl
UHJveHlNZXNzYWdlOjpTZXRUb29sVGlwOiB7CiAgICAgICAgICAgICBTdHJpbmcgdG9vbFRpcDsK
ICAgICAgICAgICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUodG9vbFRpcCkpCkBAIC0xMDkwLDYg
KzExMTIsMTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEdldFJlbmRlclRyZWVFeHRlcgogICAg
IGNhbGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocmVzdWx0U3RyaW5nLmlt
cGwoKSk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRHZXRTb3VyY2VGb3JGcmFtZShjb25z
dCBTdHJpbmcmIHJlc3VsdFN0cmluZywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBSZWZQ
dHI8RnJhbWVTb3VyY2VDYWxsYmFjaz4gY2FsbGJhY2sgPSBtX2ZyYW1lU291cmNlQ2FsbGJhY2tz
LnRha2UoY2FsbGJhY2tJRCk7CisgICAgaWYgKCFjYWxsYmFjaykgeworICAgICAgICAvLyBGSVhN
RTogTG9nIGVycm9yIG9yIGFzc2VydC4KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNh
bGxiYWNrLT5wZXJmb3JtQ2FsbGJhY2tXaXRoUmV0dXJuVmFsdWUocmVzdWx0U3RyaW5nLmltcGwo
KSk7Cit9CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGlkQ2hhbmdlQWNjZWxlcmF0ZWRDb21wb3NpdGluZyhib29sIGNvbXBvc2l0aW5nKQog
ewpAQCAtMTEzNiw2ICsxMTY5LDEyIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkRXhp
dCgpCiAgICAgICAgIHJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2tzW2ld
LT5pbnZhbGlkYXRlKCk7CiAgICAgbV9yZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNh
bGxiYWNrcy5jbGVhcigpOwogCisgICAgVmVjdG9yPFJlZlB0cjxGcmFtZVNvdXJjZUNhbGxiYWNr
PiA+IGZyYW1lU291cmNlQ2FsbGJhY2tzOworICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX2ZyYW1l
U291cmNlQ2FsbGJhY2tzLCBmcmFtZVNvdXJjZUNhbGxiYWNrcyk7CisgICAgbV9mcmFtZVNvdXJj
ZUNhbGxiYWNrcy5jbGVhcigpOworICAgIGZvciAoc2l6ZV90IGkgPSAwLCBzaXplID0gZnJhbWVT
b3VyY2VDYWxsYmFja3Muc2l6ZSgpOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICBmcmFtZVNvdXJj
ZUNhbGxiYWNrc1tpXS0+aW52YWxpZGF0ZSgpOworCiAgICAgVmVjdG9yPFdlYkVkaXRDb21tYW5k
UHJveHkqPiBlZGl0Q29tbWFuZFZlY3RvcjsKICAgICBjb3B5VG9WZWN0b3IobV9lZGl0Q29tbWFu
ZFNldCwgZWRpdENvbW1hbmRWZWN0b3IpOwogICAgIG1fZWRpdENvbW1hbmRTZXQuY2xlYXIoKTsK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiA2NzMwOSkKKysrIFdlYktp
dDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3
IEBAIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogCiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxXS1N0cmluZ1JlZiwgV1RGOjpTdHJpbmdJbXBsKj4gUmVuZGVyVHJlZUV4dGVybmFsUmVw
cmVzZW50YXRpb25DYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPFdLU3RyaW5nUmVm
LCBXVEY6OlN0cmluZ0ltcGwqPiBTY3JpcHRSZXR1cm5WYWx1ZUNhbGxiYWNrOwordHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8V0tTdHJpbmdSZWYsIFdURjo6U3RyaW5nSW1wbCo+IEZyYW1lU291cmNl
Q2FsbGJhY2s7CiAKIGNsYXNzIFdlYlBhZ2VQcm94eSA6IHB1YmxpYyBBUElPYmplY3QgewogcHVi
bGljOgpAQCAtMTU1LDYgKzE1Niw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgcnVuSmF2YVNjcmlw
dEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3RyaW5nJiwgUGFzc1JlZlB0cjxTY3JpcHRSZXR1cm5W
YWx1ZUNhbGxiYWNrPik7CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRh
dGlvbihQYXNzUmVmUHRyPFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2s+
KTsKKyAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkZyYW1lUHJveHkqLCBQYXNzUmVmUHRy
PEZyYW1lU291cmNlQ2FsbGJhY2s+KTsKIAogICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lv
bihXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIFdlYkZyYW1lUHJveHkqLCB1aW50NjRfdCBsaXN0ZW5l
cklEKTsKIApAQCAtMjM3LDggKzIzOSwxMCBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Q3Vyc29y
KGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlRXZlbnQoV2Vi
RXZlbnQ6OlR5cGUpOworCiAgICAgdm9pZCBkaWRSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoY29u
c3QgV1RGOjpTdHJpbmcmLCB1aW50NjRfdCk7CiAgICAgdm9pZCBkaWRHZXRSZW5kZXJUcmVlRXh0
ZXJuYWxSZXByZXNlbnRhdGlvbihjb25zdCBXVEY6OlN0cmluZyYsIHVpbnQ2NF90KTsKKyAgICB2
b2lkIGRpZEdldFNvdXJjZUZvckZyYW1lKGNvbnN0IFN0cmluZyYsIHVpbnQ2NF90KTsKIAogI2lm
IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICB2b2lkIGRpZENoYW5nZUFjY2VsZXJh
dGVkQ29tcG9zaXRpbmcoYm9vbCBjb21wb3NpdGluZyk7CkBAIC0yNTcsNiArMjYxLDcgQEAgcHJp
dmF0ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZlB0cjxTY3JpcHRSZXR1cm5WYWx1ZUNh
bGxiYWNrPiA+IG1fc2NyaXB0UmV0dXJuVmFsdWVDYWxsYmFja3M7CiAgICAgSGFzaE1hcDx1aW50
NjRfdCwgUmVmUHRyPFJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uQ2FsbGJhY2s+ID4g
bV9yZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNlbnRhdGlvbkNhbGxiYWNrczsKKyAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZWZQdHI8RnJhbWVTb3VyY2VDYWxsYmFjaz4gPiBtX2ZyYW1lU291cmNlQ2Fs
bGJhY2tzOwogCiAgICAgSGFzaFNldDxXZWJFZGl0Q29tbWFuZFByb3h5Kj4gbV9lZGl0Q29tbWFu
ZFNldDsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiA2NzMw
OSkKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0MywzICsyNDMsMjIgQEAgdm9pZCBXS1BhZ2VSZW5kZXJUcmVlRXh0ZXJuYWxSZXByZXNl
bnRhdAogICAgIFdLUGFnZVJlbmRlclRyZWVFeHRlcm5hbFJlcHJlc2VudGF0aW9uKHBhZ2VSZWYs
IEJsb2NrX2NvcHkoYmxvY2spLCBjYWxsUmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb25C
bG9ja0FuZERpc3Bvc2UpOwogfQogI2VuZGlmCisKK3ZvaWQgV0tQYWdlR2V0U291cmNlRm9yRnJh
bWUoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWVSZWYsIHZvaWQgKmNvbnRleHQs
IFdLUGFnZUdldFNvdXJjZUZvckZyYW1lRnVuY3Rpb24gY2FsbGJhY2spCit7CisgICAgdG9XSyhw
YWdlUmVmKS0+Z2V0U291cmNlRm9yRnJhbWUodG9XSyhmcmFtZVJlZiksIEZyYW1lU291cmNlQ2Fs
bGJhY2s6OmNyZWF0ZShjb250ZXh0LCBjYWxsYmFjaykpOworfQorCisjaWZkZWYgX19CTE9DS1Nf
Xworc3RhdGljIHZvaWQgY2FsbEdldFNvdXJjZUZvckZyYW1lQmxvY2tCbG9ja0FuZERpc3Bvc2Uo
V0tTdHJpbmdSZWYgcmVzdWx0VmFsdWUsIFdLRXJyb3JSZWYgZXJyb3IsIHZvaWQqIGNvbnRleHQp
Cit7CisgICAgV0tQYWdlR2V0U291cmNlRm9yRnJhbWVCbG9jayBibG9jayA9IChXS1BhZ2VHZXRT
b3VyY2VGb3JGcmFtZUJsb2NrKWNvbnRleHQ7CisgICAgYmxvY2socmVzdWx0VmFsdWUsIGVycm9y
KTsKKyAgICBCbG9ja19yZWxlYXNlKGJsb2NrKTsKK30KKwordm9pZCBXS1BhZ2VHZXRTb3VyY2VG
b3JGcmFtZV9iKFdLUGFnZVJlZiBwYWdlUmVmLCBXS0ZyYW1lUmVmIGZyYW1lUmVmLCBXS1BhZ2VH
ZXRTb3VyY2VGb3JGcmFtZUJsb2NrIGJsb2NrKQoreworICAgIFdLUGFnZUdldFNvdXJjZUZvckZy
YW1lKHBhZ2VSZWYsIGZyYW1lUmVmLCBCbG9ja19jb3B5KGJsb2NrKSwgY2FsbEdldFNvdXJjZUZv
ckZyYW1lQmxvY2tCbG9ja0FuZERpc3Bvc2UpOworfQorI2VuZGlmCkluZGV4OiBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS1BhZ2UuaAkocmV2aXNpb24gNjczMDkpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjA3LDYgKzIwNywxMyBAQCB0eXBlZGVmIHZv
aWQgKF5XS1BhZ2VSdW5KYXZhU2NyaXB0QmxvY2spCiBXS19FWFBPUlQgdm9pZCBXS1BhZ2VSdW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVfYihXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgc2NyaXB0
LCBXS1BhZ2VSdW5KYXZhU2NyaXB0QmxvY2sgYmxvY2spOwogI2VuZGlmCiAKK3R5cGVkZWYgdm9p
ZCAoKldLUGFnZUdldFNvdXJjZUZvckZyYW1lRnVuY3Rpb24pKFdLU3RyaW5nUmVmLCBXS0Vycm9y
UmVmLCB2b2lkKik7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VHZXRTb3VyY2VGb3JGcmFtZShXS1Bh
Z2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgdm9pZCAqY29udGV4dCwgV0tQYWdlR2V0U291
cmNlRm9yRnJhbWVGdW5jdGlvbiBmdW5jdGlvbik7CisjaWZkZWYgX19CTE9DS1NfXwordHlwZWRl
ZiB2b2lkICheV0tQYWdlR2V0U291cmNlRm9yRnJhbWVCbG9jaykoV0tTdHJpbmdSZWYsIFdLRXJy
b3JSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tQYWdlR2V0U291cmNlRm9yRnJhbWVfYihXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tQYWdlR2V0U291cmNlRm9yRnJhbWVCbG9jayBi
bG9jayk7CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKSW5kZXg6IFdl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDY3MzA5KQorKysg
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNSwxMiArMzUsMTQgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0FuaW1hdGlvbkNvbnRyb2xsZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvQ2hyb21lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Eb2N1bWVudExvYWRl
ci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1BhZ2Uu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxGcmFtZU93bmVyRWxlbWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSlNDU1NTdHlsZURlY2xhcmF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9KU0Vs
ZW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
bmRlclRyZWVBc1RleHQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1RleHRSZXNvdXJjZURlY29kZXIu
aD4KIAogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVy
Lmg+CkBAIC0xODAsNiArMTgyLDI1IEBAIHZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbigKICAgICAobV9jb3JlRnJhbWUtPmxvYWRlcigpLT5wb2xpY3lDaGVja2VyKCktPipm
dW5jdGlvbikoYWN0aW9uKTsKIH0KIAorU3RyaW5nIFdlYkZyYW1lOjpzb3VyY2UoKSBjb25zdCAK
K3sKKyAgICBpZiAoIW1fY29yZUZyYW1lKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFk
b2N1bWVudCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIFRleHRSZXNvdXJjZURlY29k
ZXIqIGRlY29kZXIgPSBkb2N1bWVudC0+ZGVjb2RlcigpOworICAgIGlmICghZGVjb2RlcikKKyAg
ICAgICAgcmV0dXJuIFN0cmluZygpOworICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRl
ciA9IG1fY29yZUZyYW1lLT5sb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKTsKKyAgICBp
ZiAoIWRvY3VtZW50TG9hZGVyKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgUmVmUHRy
PFNoYXJlZEJ1ZmZlcj4gbWFpblJlc291cmNlRGF0YSA9IGRvY3VtZW50TG9hZGVyLT5tYWluUmVz
b3VyY2VEYXRhKCk7CisgICAgaWYgKCFtYWluUmVzb3VyY2VEYXRhKQorICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CisgICAgcmV0dXJuIGRlY29kZXItPmVuY29kaW5nKCkuZGVjb2RlKG1haW5SZXNv
dXJjZURhdGEtPmRhdGEoKSwgbWFpblJlc291cmNlRGF0YS0+c2l6ZSgpKTsKK30KKwogYm9vbCBX
ZWJGcmFtZTo6aXNNYWluRnJhbWUoKSBjb25zdAogewogICAgIGlmIChXZWJQYWdlKiBwID0gcGFn
ZSgpKQpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCShyZXZpc2lvbiA2
NzMwOSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY4LDYgKzY4LDggQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZVBvbGlj
eUxpc3RlbmVyKCk7CiAgICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3Qg
bGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uKTsKIAorICAgIFN0cmluZyBzb3VyY2Uo
KSBjb25zdDsKKwogICAgIC8vIFdLQnVuZGxlRnJhbWUgQVBJIGFuZCBTUEkgZnVuY3Rpb25zCiAg
ICAgYm9vbCBpc01haW5GcmFtZSgpIGNvbnN0OwogICAgIFdURjo6U3RyaW5nIG5hbWUoKSBjb25z
dDsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA2
NzMwOSkKKysrIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MTEsNiArNTExLDE0IEBAIHZvaWQgV2ViUGFnZTo6Z2V0UmVuZGVyVHJlZUV4
dGVybmFsUmVwcmUKICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmQo
V2ViUGFnZVByb3h5TWVzc2FnZTo6RGlkR2V0UmVuZGVyVHJlZUV4dGVybmFsUmVwcmVzZW50YXRp
b24sIG1fcGFnZUlELCBDb3JlSVBDOjpJbihyZXN1bHRTdHJpbmcsIGNhbGxiYWNrSUQpKTsKIH0K
IAordm9pZCBXZWJQYWdlOjpnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZSogZnJhbWUsIHVpbnQ2
NF90IGNhbGxiYWNrSUQpCit7CisgICAgU3RyaW5nIHJlc3VsdFN0cmluZzsKKyAgICBpZiAoZnJh
bWUpCisgICAgICAgcmVzdWx0U3RyaW5nID0gZnJhbWUtPnNvdXJjZSgpOworICAgIFdlYlByb2Nl
c3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpEaWRH
ZXRTb3VyY2VGb3JGcmFtZSwgbV9wYWdlSUQsIENvcmVJUEM6OkluKHJlc3VsdFN0cmluZywgY2Fs
bGJhY2tJRCkpOworfQorCiB2b2lkIFdlYlBhZ2U6OnByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0
IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlKQogewogICAgIFdlYlByZWZlcmVuY2VzU3RvcmU6
OnJlbW92ZVRlc3RSdW5uZXJPdmVycmlkZXMoKTsKQEAgLTczOCw2ICs3NDYsMTQgQEAgdm9pZCBX
ZWJQYWdlOjpkaWRSZWNlaXZlTWVzc2FnZShDb3JlSVBDOgogICAgICAgICAgICAgZ2V0UmVuZGVy
VHJlZUV4dGVybmFsUmVwcmVzZW50YXRpb24oY2FsbGJhY2tJRCk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJQYWdlTWVzc2FnZTo6R2V0U291cmNlRm9y
RnJhbWU6IHsKKyAgICAgICAgICAgIHVpbnQ2NF90IGZyYW1lSUQ7CisgICAgICAgICAgICB1aW50
NjRfdCBjYWxsYmFja0lEOworICAgICAgICAgICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3Jl
SVBDOjpPdXQoZnJhbWVJRCwgY2FsbGJhY2tJRCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIGdldFNvdXJjZUZvckZyYW1lKFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZy
YW1lKGZyYW1lSUQpLCBjYWxsYmFja0lEKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQogICAgICAgICBjYXNlIFdlYlBhZ2VNZXNzYWdlOjpDbG9zZTogewogICAgICAgICAgICAgY2xv
c2UoKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHJldmlzaW9uIDY3MzA5KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNiArMTUwLDggQEAgcHJpdmF0ZToKICAg
ICBzdGF0aWMgY29uc3QgY2hhciogaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgV2ViQ29yZTo6S2V5
Ym9hcmRFdmVudCopOwogICAgIGJvb2wgcGVyZm9ybURlZmF1bHRCZWhhdmlvckZvcktleUV2ZW50
KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmKTsKIAorICAgIFN0cmluZyBzb3VyY2VGb3JGcmFtZShX
ZWJGcmFtZSopOworCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKICAgICB2
b2lkIGxvYWRVUkwoY29uc3QgU3RyaW5nJik7CkBAIC0xNjksNiArMTcxLDcgQEAgcHJpdmF0ZToK
ICNlbmRpZgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKGNvbnN0IFdURjo6U3Ry
aW5nJiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRSZW5kZXJUcmVlRXh0ZXJu
YWxSZXByZXNlbnRhdGlvbih1aW50NjRfdCBjYWxsYmFja0lEKTsKKyAgICB2b2lkIGdldFNvdXJj
ZUZvckZyYW1lKFdlYkZyYW1lKiwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBwcmVm
ZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJik7CiAgICAgdm9pZCBw
bGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmKTsK
ICAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihXZWJGcmFtZSosIHVpbnQ2NF90IGxp
c3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pOwpJbmRleDogV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwko
cmV2aXNpb24gNjczMTApCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOCBAQAorMjAxMC0wOS0xMSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBj
YWxsYmFjayBtZWNoYW5pc20gZm9yIHRoZSBnZXR0aW5nIHRoZSBzb3VyY2Ugb2YgYSBmcmFtZQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vODM2NDY4MT4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NjA0CisKKyAgICAgICAgQWRkIGFiaWxpdHkgdG8g
ZHVtcCB0aGUgbWFpbiBmcmFtZSdzIHNvdXJjZSB0byB0aGUgY29uc29sZS4KKworICAgICAgICAq
IE1pbmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5oOgorICAgICAgICAqIE1p
bmlCcm93c2VyL21hYy9Ccm93c2VyV2luZG93Q29udHJvbGxlci5tOgorICAgICAgICAoLVtCcm93
c2VyV2luZG93Q29udHJvbGxlciBkdW1wU291cmNlVG9Db25zb2xlOl0pOgorICAgICAgICAqIE1p
bmlCcm93c2VyL21hYy9NYWluTWVudS54aWI6CisKIDIwMTAtMDktMTEgIEVyaWMgU2VpZGVsICA8
ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCkluZGV4
OiBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIuaAkocmV2aXNpb24gNjczMDkpCisrKyBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9t
YWMvQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTgsNCArNTgs
NiBAQCBAaW50ZXJmYWNlIEJyb3dzZXJXaW5kb3dDb250cm9sbGVyIDogTlNXCiAKIC0gKElCQWN0
aW9uKXRvZ2dsZVpvb21Nb2RlOihpZClzZW5kZXI7CiAKKy0gKElCQWN0aW9uKWR1bXBTb3VyY2VU
b0NvbnNvbGU6KGlkKXNlbmRlcjsKKwogQGVuZApJbmRleDogV2ViS2l0VG9vbHMvTWluaUJyb3dz
ZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLm0JKHJldmlzaW9uIDY3
MzA5KQorKysgV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL0Jyb3dzZXJXaW5kb3dDb250cm9s
bGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTIzNCw2ICsyMzQsMTUgQEAgLSAoSUJBY3Rpb24pdG9n
Z2xlWm9vbU1vZGU6KGlkKXNlbmRlcgogICAgIH0KIH0KIAorLSAoSUJBY3Rpb24pZHVtcFNvdXJj
ZVRvQ29uc29sZTooaWQpc2VuZGVyCit7CisgICAgV0tQYWdlR2V0U291cmNlRm9yRnJhbWVfYihf
d2ViVmlldy5wYWdlUmVmLCBXS1BhZ2VHZXRNYWluRnJhbWUoX3dlYlZpZXcucGFnZVJlZiksIF4o
V0tTdHJpbmdSZWYgcmVzdWx0LCBXS0Vycm9yUmVmIGVycm9yKSB7CisgICAgICAgIENGU3RyaW5n
UmVmIGNmUmVzdWx0ID0gV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwgcmVzdWx0KTsKKyAgICAgICAg
TE9HKEAiTWFpbiBmcmFtZSBzb3VyY2VcbiBcIiVAXCIiLCAoTlNTdHJpbmcgKiljZlJlc3VsdCk7
CisgICAgICAgIENGUmVsZWFzZShjZlJlc3VsdCk7CisgICAgfSk7Cit9CisKICNwcmFnbWEgbWFy
ayBMb2FkZXIgQ2xpZW50IENhbGxiYWNrcwogCiBzdGF0aWMgdm9pZCBkaWRTdGFydFByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2
b2lkICpjbGllbnRJbmZvKQpJbmRleDogV2ViS2l0VG9vbHMvTWluaUJyb3dzZXIvbWFjL01haW5N
ZW51LnhpYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9NaW5pQnJvd3Nlci9tYWMvTWFpbk1l
bnUueGliCShyZXZpc2lvbiA2NzMwOSkKKysrIFdlYktpdFRvb2xzL01pbmlCcm93c2VyL21hYy9N
YWluTWVudS54aWIJKHdvcmtpbmcgY29weSkKQEAgLTEyLDcgKzEyLDcgQEAKIAkJPC9vYmplY3Q+
CiAJCTxvYmplY3QgY2xhc3M9Ik5TTXV0YWJsZUFycmF5IiBrZXk9IklCRG9jdW1lbnQuRWRpdGVk
T2JqZWN0SURzIj4KIAkJCTxib29sIGtleT0iRW5jb2RlZFdpdGhYTUxDb2RlciI+WUVTPC9ib29s
PgotCQkJPGludGVnZXIgdmFsdWU9IjI5NiIvPgorCQkJPGludGVnZXIgdmFsdWU9IjUzNSIvPgog
CQk8L29iamVjdD4KIAkJPG9iamVjdCBjbGFzcz0iTlNBcnJheSIga2V5PSJJQkRvY3VtZW50LlBs
dWdpbkRlcGVuZGVuY2llcyI+CiAJCQk8Ym9vbCBrZXk9IkVuY29kZWRXaXRoWE1MQ29kZXIiPllF
UzwvYm9vbD4KQEAgLTk2OCw2ICs5NjgsMjQgQEAKIAkJCQkJCQkJCQk8L29iamVjdD4KIAkJCQkJ
CQkJCTwvb2JqZWN0PgogCQkJCQkJCQk8L29iamVjdD4KKwkJCQkJCQkJPG9iamVjdCBjbGFzcz0i
TlNNZW51SXRlbSIgaWQ9IjM3NzkwMjc1NSI+CisJCQkJCQkJCQk8cmVmZXJlbmNlIGtleT0iTlNN
ZW51IiByZWY9Ijg2NTIzMjI1OSIvPgorCQkJCQkJCQkJPGJvb2wga2V5PSJOU0lzRGlzYWJsZWQi
PllFUzwvYm9vbD4KKwkJCQkJCQkJCTxib29sIGtleT0iTlNJc1NlcGFyYXRvciI+WUVTPC9ib29s
PgorCQkJCQkJCQkJPHN0cmluZyBrZXk9Ik5TVGl0bGUiLz4KKwkJCQkJCQkJCTxzdHJpbmcga2V5
PSJOU0tleUVxdWl2Ii8+CisJCQkJCQkJCQk8aW50IGtleT0iTlNNbmVtb25pY0xvYyI+MjE0NzQ4
MzY0NzwvaW50PgorCQkJCQkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5TT25JbWFnZSIgcmVmPSIzNTQ2
NTk5MiIvPgorCQkJCQkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5TTWl4ZWRJbWFnZSIgcmVmPSI1MDI1
NTE2NjgiLz4KKwkJCQkJCQkJPC9vYmplY3Q+CisJCQkJCQkJCTxvYmplY3QgY2xhc3M9Ik5TTWVu
dUl0ZW0iIGlkPSIxOTE0Njk0MDQiPgorCQkJCQkJCQkJPHJlZmVyZW5jZSBrZXk9Ik5TTWVudSIg
cmVmPSI4NjUyMzIyNTkiLz4KKwkJCQkJCQkJCTxzdHJpbmcga2V5PSJOU1RpdGxlIj5EdW1wIFNv
dXJjZSBUbyBDb25zb2xlPC9zdHJpbmc+CisJCQkJCQkJCQk8c3RyaW5nIGtleT0iTlNLZXlFcXVp
diIvPgorCQkJCQkJCQkJPGludCBrZXk9Ik5TTW5lbW9uaWNMb2MiPjIxNDc0ODM2NDc8L2ludD4K
KwkJCQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU09uSW1hZ2UiIHJlZj0iMzU0NjU5OTIiLz4KKwkJ
CQkJCQkJCTxyZWZlcmVuY2Uga2V5PSJOU01peGVkSW1hZ2UiIHJlZj0iNTAyNTUxNjY4Ii8+CisJ
CQkJCQkJCTwvb2JqZWN0PgogCQkJCQkJCTwvb2JqZWN0PgogCQkJCQkJPC9vYmplY3Q+CiAJCQkJ
CTwvb2JqZWN0PgpAQCAtMTQ2NCw2ICsxNDgyLDE0IEBACiAJCQkJCTwvb2JqZWN0PgogCQkJCQk8
aW50IGtleT0iY29ubmVjdGlvbklEIj41NjQ8L2ludD4KIAkJCQk8L29iamVjdD4KKwkJCQk8b2Jq
ZWN0IGNsYXNzPSJJQkNvbm5lY3Rpb25SZWNvcmQiPgorCQkJCQk8b2JqZWN0IGNsYXNzPSJJQkFj
dGlvbkNvbm5lY3Rpb24iIGtleT0iY29ubmVjdGlvbiI+CisJCQkJCQk8c3RyaW5nIGtleT0ibGFi
ZWwiPmR1bXBTb3VyY2VUb0NvbnNvbGU6PC9zdHJpbmc+CisJCQkJCQk8cmVmZXJlbmNlIGtleT0i
c291cmNlIiByZWY9IjEwMTQiLz4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJkZXN0aW5hdGlvbiIg
cmVmPSIxOTE0Njk0MDQiLz4KKwkJCQkJPC9vYmplY3Q+CisJCQkJCTxpbnQga2V5PSJjb25uZWN0
aW9uSUQiPjU2NzwvaW50PgorCQkJCTwvb2JqZWN0PgogCQkJPC9vYmplY3Q+CiAJCQk8b2JqZWN0
IGNsYXNzPSJJQk11dGFibGVPcmRlcmVkU2V0IiBrZXk9Im9iamVjdFJlY29yZHMiPgogCQkJCTxv
YmplY3QgY2xhc3M9Ik5TQXJyYXkiIGtleT0ib3JkZXJlZE9iamVjdHMiPgpAQCAtMjEzNCw2ICsy
MTYwLDggQEAKIAkJCQkJCQk8cmVmZXJlbmNlIHJlZj0iMTAyNzEyNTgxMCIvPgogCQkJCQkJCTxy
ZWZlcmVuY2UgcmVmPSI4NjQ3MDIwODQiLz4KIAkJCQkJCQk8cmVmZXJlbmNlIHJlZj0iMjA4MzQz
MzY4Ii8+CisJCQkJCQkJPHJlZmVyZW5jZSByZWY9IjM3NzkwMjc1NSIvPgorCQkJCQkJCTxyZWZl
cmVuY2UgcmVmPSIxOTE0Njk0MDQiLz4KIAkJCQkJCTwvb2JqZWN0PgogCQkJCQkJPHJlZmVyZW5j
ZSBrZXk9InBhcmVudCIgcmVmPSI4MTY2Njg1MTEiLz4KIAkJCQkJPC9vYmplY3Q+CkBAIC0yMjI0
LDYgKzIyNTIsMTYgQEAKIAkJCQkJCTxyZWZlcmVuY2Uga2V5PSJvYmplY3QiIHJlZj0iMTM4NDQz
MTE2Ii8+CiAJCQkJCQk8cmVmZXJlbmNlIGtleT0icGFyZW50IiByZWY9IjQ2NjMxMDEzMCIvPgog
CQkJCQk8L29iamVjdD4KKwkJCQkJPG9iamVjdCBjbGFzcz0iSUJPYmplY3RSZWNvcmQiPgorCQkJ
CQkJPGludCBrZXk9Im9iamVjdElEIj41NjU8L2ludD4KKwkJCQkJCTxyZWZlcmVuY2Uga2V5PSJv
YmplY3QiIHJlZj0iMzc3OTAyNzU1Ii8+CisJCQkJCQk8cmVmZXJlbmNlIGtleT0icGFyZW50IiBy
ZWY9Ijg2NTIzMjI1OSIvPgorCQkJCQk8L29iamVjdD4KKwkJCQkJPG9iamVjdCBjbGFzcz0iSUJP
YmplY3RSZWNvcmQiPgorCQkJCQkJPGludCBrZXk9Im9iamVjdElEIj41NjY8L2ludD4KKwkJCQkJ
CTxyZWZlcmVuY2Uga2V5PSJvYmplY3QiIHJlZj0iMTkxNDY5NDA0Ii8+CisJCQkJCQk8cmVmZXJl
bmNlIGtleT0icGFyZW50IiByZWY9Ijg2NTIzMjI1OSIvPgorCQkJCQk8L29iamVjdD4KIAkJCQk8
L29iamVjdD4KIAkJCTwvb2JqZWN0PgogCQkJPG9iamVjdCBjbGFzcz0iTlNNdXRhYmxlRGljdGlv
bmFyeSIga2V5PSJmbGF0dGVuZWRQcm9wZXJ0aWVzIj4KQEAgLTIzOTksNiArMjQzNyw4IEBACiAJ
CQkJCTxzdHJpbmc+NTYuSUJQbHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+CiAJCQkJCTxzdHJpbmc+
NTYuSW1wb3J0ZWRGcm9tSUIyPC9zdHJpbmc+CiAJCQkJCTxzdHJpbmc+NTYyLklCUGx1Z2luRGVw
ZW5kZW5jeTwvc3RyaW5nPgorCQkJCQk8c3RyaW5nPjU2NS5JQlBsdWdpbkRlcGVuZGVuY3k8L3N0
cmluZz4KKwkJCQkJPHN0cmluZz41NjYuSUJQbHVnaW5EZXBlbmRlbmN5PC9zdHJpbmc+CiAJCQkJ
CTxzdHJpbmc+NTcuSUJFZGl0b3JXaW5kb3dMYXN0Q29udGVudFJlY3Q8L3N0cmluZz4KIAkJCQkJ
PHN0cmluZz41Ny5JQlBsdWdpbkRlcGVuZGVuY3k8L3N0cmluZz4KIAkJCQkJPHN0cmluZz41Ny5J
bXBvcnRlZEZyb21JQjI8L3N0cmluZz4KQEAgLTI1ODMsNyArMjYyMyw3IEBACiAJCQkJCTxzdHJp
bmc+Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW48L3N0cmluZz4KIAkJCQkJ
PGludGVnZXIgdmFsdWU9IjEiLz4KIAkJCQkJPHN0cmluZz5jb20uYXBwbGUuSW50ZXJmYWNlQnVp
bGRlci5Db2NvYVBsdWdpbjwvc3RyaW5nPgotCQkJCQk8c3RyaW5nPnt7ODY0LCA2OTh9LCB7MjQ2
LCAxMjN9fTwvc3RyaW5nPgorCQkJCQk8c3RyaW5nPnt7ODY0LCA2Njh9LCB7MjYwLCAxNTN9fTwv
c3RyaW5nPgogCQkJCQk8c3RyaW5nPmNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29hUGx1
Z2luPC9zdHJpbmc+CiAJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIuQ29j
b2FQbHVnaW48L3N0cmluZz4KIAkJCQkJPHN0cmluZz57ezExMTAsIDY3OH0sIHsxNTQsIDQzfX08
L3N0cmluZz4KQEAgLTI2MDMsNiArMjY0Myw4IEBACiAJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLklu
dGVyZmFjZUJ1aWxkZXIuQ29jb2FQbHVnaW48L3N0cmluZz4KIAkJCQkJPGludGVnZXIgdmFsdWU9
IjEiLz4KIAkJCQkJPHN0cmluZz5jb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlci5Db2NvYVBsdWdp
bjwvc3RyaW5nPgorCQkJCQk8c3RyaW5nPmNvbS5hcHBsZS5JbnRlcmZhY2VCdWlsZGVyLkNvY29h
UGx1Z2luPC9zdHJpbmc+CisJCQkJCTxzdHJpbmc+Y29tLmFwcGxlLkludGVyZmFjZUJ1aWxkZXIu
Q29jb2FQbHVnaW48L3N0cmluZz4KIAkJCQkJPHN0cmluZz57ezI4NiwgMTI5fSwgezI3NSwgMTgz
fX08L3N0cmluZz4KIAkJCQkJPHN0cmluZz5jb20uYXBwbGUuSW50ZXJmYWNlQnVpbGRlci5Db2Nv
YVBsdWdpbjwvc3RyaW5nPgogCQkJCQk8aW50ZWdlciB2YWx1ZT0iMSIvPgpAQCAtMjY1Myw3ICsy
Njk1LDcgQEAKIAkJCQk8L29iamVjdD4KIAkJCTwvb2JqZWN0PgogCQkJPG5pbCBrZXk9InNvdXJj
ZUlEIi8+Ci0JCQk8aW50IGtleT0ibWF4SUQiPjU2NDwvaW50PgorCQkJPGludCBrZXk9Im1heElE
Ij41Njc8L2ludD4KIAkJPC9vYmplY3Q+CiAJCTxvYmplY3QgY2xhc3M9IklCQ2xhc3NEZXNjcmli
ZXIiIGtleT0iSUJEb2N1bWVudC5DbGFzc2VzIj4KIAkJCTxvYmplY3QgY2xhc3M9Ik5TTXV0YWJs
ZUFycmF5IiBrZXk9InJlZmVyZW5jZWRQYXJ0aWFsQ2xhc3NEZXNjcmlwdGlvbnMiPgpAQCAtMjcz
MSw2ICsyNzczLDcgQEAKIAkJCQkJCTxib29sIGtleT0iRW5jb2RlZFdpdGhYTUxDb2RlciI+WUVT
PC9ib29sPgogCQkJCQkJPG9iamVjdCBjbGFzcz0iTlNBcnJheSIga2V5PSJkaWN0LnNvcnRlZEtl
eXMiPgogCQkJCQkJCTxib29sIGtleT0iRW5jb2RlZFdpdGhYTUxDb2RlciI+WUVTPC9ib29sPgor
CQkJCQkJCTxzdHJpbmc+ZHVtcFNvdXJjZVRvQ29uc29sZTo8L3N0cmluZz4KIAkJCQkJCQk8c3Ry
aW5nPmZldGNoOjwvc3RyaW5nPgogCQkJCQkJCTxzdHJpbmc+Zm9yY2VSZXBhaW50Ojwvc3RyaW5n
PgogCQkJCQkJCTxzdHJpbmc+Z29CYWNrOjwvc3RyaW5nPgpAQCAtMjc1NiwxMiArMjc5OSwxNCBA
QAogCQkJCQkJCTxzdHJpbmc+aWQ8L3N0cmluZz4KIAkJCQkJCQk8c3RyaW5nPmlkPC9zdHJpbmc+
CiAJCQkJCQkJPHN0cmluZz5pZDwvc3RyaW5nPgorCQkJCQkJCTxzdHJpbmc+aWQ8L3N0cmluZz4K
IAkJCQkJCTwvb2JqZWN0PgogCQkJCQk8L29iamVjdD4KIAkJCQkJPG9iamVjdCBjbGFzcz0iTlNN
dXRhYmxlRGljdGlvbmFyeSIga2V5PSJhY3Rpb25JbmZvc0J5TmFtZSI+CiAJCQkJCQk8Ym9vbCBr
ZXk9IkVuY29kZWRXaXRoWE1MQ29kZXIiPllFUzwvYm9vbD4KIAkJCQkJCTxvYmplY3QgY2xhc3M9
Ik5TQXJyYXkiIGtleT0iZGljdC5zb3J0ZWRLZXlzIj4KIAkJCQkJCQk8Ym9vbCBrZXk9IkVuY29k
ZWRXaXRoWE1MQ29kZXIiPllFUzwvYm9vbD4KKwkJCQkJCQk8c3RyaW5nPmR1bXBTb3VyY2VUb0Nv
bnNvbGU6PC9zdHJpbmc+CiAJCQkJCQkJPHN0cmluZz5mZXRjaDo8L3N0cmluZz4KIAkJCQkJCQk8
c3RyaW5nPmZvcmNlUmVwYWludDo8L3N0cmluZz4KIAkJCQkJCQk8c3RyaW5nPmdvQmFjazo8L3N0
cmluZz4KQEAgLTI3NzcsNiArMjgyMiwxMCBAQAogCQkJCQkJPG9iamVjdCBjbGFzcz0iTlNNdXRh
YmxlQXJyYXkiIGtleT0iZGljdC52YWx1ZXMiPgogCQkJCQkJCTxib29sIGtleT0iRW5jb2RlZFdp
dGhYTUxDb2RlciI+WUVTPC9ib29sPgogCQkJCQkJCTxvYmplY3QgY2xhc3M9IklCQWN0aW9uSW5m
byI+CisJCQkJCQkJCTxzdHJpbmcga2V5PSJuYW1lIj5kdW1wU291cmNlVG9Db25zb2xlOjwvc3Ry
aW5nPgorCQkJCQkJCQk8c3RyaW5nIGtleT0iY2FuZGlkYXRlQ2xhc3NOYW1lIj5pZDwvc3RyaW5n
PgorCQkJCQkJCTwvb2JqZWN0PgorCQkJCQkJCTxvYmplY3QgY2xhc3M9IklCQWN0aW9uSW5mbyI+
CiAJCQkJCQkJCTxzdHJpbmcga2V5PSJuYW1lIj5mZXRjaDo8L3N0cmluZz4KIAkJCQkJCQkJPHN0
cmluZyBrZXk9ImNhbmRpZGF0ZUNsYXNzTmFtZSI+aWQ8L3N0cmluZz4KIAkJCQkJCQk8L29iamVj
dD4K
</data>
<flag name="review"
          id="56592"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>