<?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>73917</bug_id>
          
          <creation_ts>2011-12-06 06:08:11 -0800</creation_ts>
          <short_desc>[Qt][WK2] fast/forms/access-key-for-all-elements.html fails</short_desc>
          <delta_ts>2012-09-13 09:07:39 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>71854</blocked>
    
    <blocked>87008</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Csaba Osztrogonác">ossy</reporter>
          <assigned_to name="Lauro Moura Maranhao Neto">lauro.neto</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>code.vineet</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>lauro.neto</cc>
    
    <cc>marcelo.lira</cc>
    
    <cc>menard</cc>
    
    <cc>ossy</cc>
    
    <cc>vestbo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>515860</commentid>
    <comment_count>0</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-12-06 06:08:11 -0800</bug_when>
    <thetext>fast/forms/access-key-for-all-elements.html 
introduced in r100805 and it fails on Qt-WK2

--- /ramdisk/qt-linux-32-release-webkit2/build/layout-test-results/fast/forms/access-key-for-all-elements-expected.txt 
+++ /ramdisk/qt-linux-32-release-webkit2/build/layout-test-results/fast/forms/access-key-for-all-elements-actual.txt 
@@ -6,602 +6,602 @@
 Check for A tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for ABBR tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for ACRONYM tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for ADDRESS tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for APPLET tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for AREA tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for ARTICLE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for ASIDE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for AUDIO tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for B tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for BASE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for BASEFONT tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for BDO tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for BGSOUND tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for BIG tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for BLOCKQUOTE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for BODY tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for BR tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for CANVAS tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for CAPTION tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for CENTER tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for CITE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for CODE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for COL tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for COLGROUP tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for COMMAND tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for DATALIST tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for DD tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for DEL tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for DETAILS tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for DFN tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for DIR tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for DIV tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for DL tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for DT tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for EM tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for EMBED tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for FIELDSET tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for FIGCAPTION tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for FIGURE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for FONT tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for FOOTER tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for FORM tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for FRAME tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for FRAMESET tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for H1 tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for H2 tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for H3 tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for H4 tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for H5 tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for H6 tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for HEAD tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for HEADER tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for HGROUP tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for HR tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for HTML tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for I tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for IFRAME tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for IMG tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for INS tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for KBD tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for KEYGEN tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for LABEL tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for LAYER tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for LI tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for LINK tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for LISTING tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for MAP tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for MARK tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for MARQUEE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for MENU tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for META tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for METER tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for NAV tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for NOBR tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for NOEMBED tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for NOFRAMES tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for NOLAYER tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for NOSCRIPT tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for OBJECT tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for OL tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for OUTPUT tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for P tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for PARAM tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for PLAINTEXT tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for PRE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for PROGRESS tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for Q tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for RP tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for RT tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for RUBY tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for S tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for SAMP tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for SCRIPT tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for SECTION tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for SMALL tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for SOURCE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for SPAN tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for STRIKE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for STRONG tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for STYLE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for SUB tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for SUMMARY tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for SUP tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for TABLE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for TBODY tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for TD tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for TFOOT tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for TH tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for THEAD tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for TITLE tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for TR tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for TRACK tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for TT tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for U tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for UL tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for VAR tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for VIDEO tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for WBR tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 Check for XMP tag
 PASS testElement.accessKey is defined.
 PASS testElement.accessKey =&apos;k&apos;; testElement.accessKey == &apos;k&apos; is true
-PASS pressKey(testElement.accessKey);[clicked, focused] is [true, false]
+FAIL pressKey(testElement.accessKey);[clicked, focused] should be true,false. Was false,false.
 
 PASS successfullyParsed is true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515863</commentid>
    <comment_count>1</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-12-06 06:14:53 -0800</bug_when>
    <thetext>I skipped it: http://trac.webkit.org/changeset/102129</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539129</commentid>
    <comment_count>2</comment_count>
      <attachid>123218</attachid>
    <who name="Lauro Moura Maranhao Neto">lauro.neto</who>
    <bug_when>2012-01-19 16:05:40 -0800</bug_when>
    <thetext>Created attachment 123218
Implement user agent string

Acces key tests were failing due to hardcoded Mac OS X in the user agent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540544</commentid>
    <comment_count>3</comment_count>
      <attachid>123218</attachid>
    <who name="Tor Arne Vestbø">vestbo</who>
    <bug_when>2012-01-23 07:52:24 -0800</bug_when>
    <thetext>Comment on attachment 123218
Implement user agent string

This is copy-paste from QWebPage::userAgentForUrl. Please refactor into one shared implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631903</commentid>
    <comment_count>4</comment_count>
      <attachid>143616</attachid>
    <who name="Lauro Moura Maranhao Neto">lauro.neto</who>
    <bug_when>2012-05-23 12:29:33 -0700</bug_when>
    <thetext>Created attachment 143616
Add shared user agent implementation for Qt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632008</commentid>
    <comment_count>5</comment_count>
      <attachid>143616</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-05-23 13:50:33 -0700</bug_when>
    <thetext>Comment on attachment 143616
Add shared user agent implementation for Qt

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

&gt; Source/WebCore/platform/qt/UserAgentQt.cpp:19
&gt; + * Copyright (C) 2007 Apple Inc.  All rights reserved.
&gt; + * Copyright (C) 2006, 2007 Apple Inc.  All rights reserved.
&gt; + * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
&gt; + * Copyright (C) 2010 Sencha, Inc. All rights reserved.
&gt; + *
&gt; + * Redistribution and use in source and binary forms, with or without
&gt; + * modification, are permitted provided that the following conditions
&gt; + * are met:
&gt; + * 1. Redistributions of source code must retain the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer.
&gt; + * 2. Redistributions in binary form must reproduce the above copyright
&gt; + *    notice, this list of conditions and the following disclaimer in the
&gt; + *    documentation and/or other materials provided with the distribution.
&gt; + *
&gt; + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS&apos;&apos; AND ANY
&gt; + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
&gt; + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
&gt; + * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR

This code comes from qwebpage.cpp, where the copyright notice says Nokia, Staikos and Apple. The license is LGPL 2. The file you&apos;re adding has a different set of authors and also a different license. Why is that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632058</commentid>
    <comment_count>6</comment_count>
      <attachid>143652</attachid>
    <who name="Lauro Moura Maranhao Neto">lauro.neto</who>
    <bug_when>2012-05-23 14:25:43 -0700</bug_when>
    <thetext>Created attachment 143652
Add shared user agent implementation for Qt. Fixed copyright.

Using the qwebpage copyright on the newly created files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>633622</commentid>
    <comment_count>7</comment_count>
      <attachid>143652</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-05-25 00:01:44 -0700</bug_when>
    <thetext>Comment on attachment 143652
Add shared user agent implementation for Qt. Fixed copyright.

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

&gt; Source/WebCore/platform/qt/UserAgentQt.cpp:29
&gt; +#include &lt;WebCore/SystemInfo.h&gt;

This doesn&apos;t look correct... Why did you add the prefix?

&gt; Source/WebCore/platform/qt/UserAgentQt.cpp:31
&gt; +#include &lt;WebKitVersion.h&gt;

This I think is the main issue that&apos;s left with this patch/approach and I don&apos;t see a good way around it. It&apos;s a layer violation to call WebKit from within WebCore and in fact it&apos;s going to break the force_static_libs_as_shared build.

It doesn&apos;t quite feel right to move the WebKit version stuff also into WebCore, making me think that perhaps we need another static library for code that&apos;s shared between WebKit1 and WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>634624</commentid>
    <comment_count>8</comment_count>
      <attachid>143652</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-05-26 01:57:12 -0700</bug_when>
    <thetext>Comment on attachment 143652
Add shared user agent implementation for Qt. Fixed copyright.

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

&gt; Source/WebCore/platform/qt/UserAgentQt.cpp:160
&gt; +        // TODO: using macros from WebKit1 until WebKit2 Qt port versioning is sorted out.

We use FIXME not TODO :-)

&gt; Source/WebCore/platform/qt/UserAgentQt.h:28
&gt; +    static String standardUserAgent(const String &amp;applicationNameForUserAgent);

defaultUserAgentString makes more sense. The &quot;user agent&quot; is actually the embedding application.

defaultUserAgentString(const String&amp; userAgentName)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638436</commentid>
    <comment_count>9</comment_count>
      <attachid>145097</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-05-31 08:17:52 -0700</bug_when>
    <thetext>Created attachment 145097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638438</commentid>
    <comment_count>10</comment_count>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-05-31 08:19:38 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 143652 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=143652&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/qt/UserAgentQt.cpp:160
&gt; &gt; +        // TODO: using macros from WebKit1 until WebKit2 Qt port versioning is sorted out.
&gt; 
&gt; We use FIXME not TODO :-)
&gt; 
&gt; &gt; Source/WebCore/platform/qt/UserAgentQt.h:28
&gt; &gt; +    static String standardUserAgent(const String &amp;applicationNameForUserAgent);
&gt; 
&gt; defaultUserAgentString makes more sense. The &quot;user agent&quot; is actually the embedding application.
&gt; 
&gt; defaultUserAgentString(const String&amp; userAgentName)

(/me on behalf of Lauro, who is in on his holidays)
Kenneth, I left UserAgentQt::standardUserAgent as it was because it follows the naming on WebPageProxy::standardUserAgent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638459</commentid>
    <comment_count>11</comment_count>
      <attachid>145097</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-31 08:43:07 -0700</bug_when>
    <thetext>Comment on attachment 145097
Patch

Attachment 145097 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12866255</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638484</commentid>
    <comment_count>12</comment_count>
      <attachid>145097</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-31 09:09:28 -0700</bug_when>
    <thetext>Comment on attachment 145097
Patch

Attachment 145097 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12873001</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638510</commentid>
    <comment_count>13</comment_count>
      <attachid>145108</attachid>
    <who name="Marcelo Lira">marcelo.lira</who>
    <bug_when>2012-05-31 09:50:56 -0700</bug_when>
    <thetext>Created attachment 145108
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>659234</commentid>
    <comment_count>14</comment_count>
      <attachid>145108</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-06-27 23:07:16 -0700</bug_when>
    <thetext>Comment on attachment 145108
Patch

My comment remains about the incorrect layering, so r-.

What if we moved the WebKit version parsing and also this user agent code to the WebKit2 static library and used it from WebKit1?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719441</commentid>
    <comment_count>15</comment_count>
      <attachid>163865</attachid>
    <who name="Lauro Moura Maranhao Neto">lauro.neto</who>
    <bug_when>2012-09-13 07:29:05 -0700</bug_when>
    <thetext>Created attachment 163865
Patch

Updated the patch by passing the version as argument to the useragent function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719533</commentid>
    <comment_count>16</comment_count>
      <attachid>163865</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-09-13 08:33:38 -0700</bug_when>
    <thetext>Comment on attachment 163865
Patch

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

&gt; Source/WebCore/platform/qt/UserAgentQt.cpp:74
&gt; +#ifdef Q_WS_MAC
&gt; +            &quot;Macintosh; &quot;
&gt; +#elif defined Q_WS_QWS
&gt; +            &quot;QtEmbedded; &quot;
&gt; +#elif defined Q_WS_WIN
&gt; +            // Nothing.
&gt; +#elif defined Q_WS_X11
&gt; +            &quot;X11; &quot;
&gt; +#else
&gt; +            &quot;Unknown; &quot;
&gt; +#endif

As a side-note, those Q_WS_* defines don&apos;t work anymore :)

&gt; Source/WebCore/platform/qt/UserAgentQt.cpp:155
&gt; +#ifdef Q_OS_AIX
&gt; +            &quot;AIX&quot;
&gt; +#elif defined Q_OS_WIN32
&gt; +            windowsVersionForUAString()
&gt; +#elif defined Q_OS_DARWIN
&gt; +#ifdef __i386__ || __x86_64__
&gt; +            &quot;Intel Mac OS X&quot;
&gt; +#else
&gt; +            &quot;PPC Mac OS X&quot;
&gt; +#endif
&gt; +
&gt; +#elif defined Q_OS_BSDI
&gt; +            &quot;BSD&quot;
&gt; +#elif defined Q_OS_BSD4
&gt; +            &quot;BSD Four&quot;
&gt; +#elif defined Q_OS_CYGWIN
&gt; +            &quot;Cygwin&quot;
&gt; +#elif defined Q_OS_DGUX
&gt; +            &quot;DG/UX&quot;
&gt; +#elif defined Q_OS_DYNIX
&gt; +            &quot;DYNIX/ptx&quot;
&gt; +#elif defined Q_OS_FREEBSD
&gt; +            &quot;FreeBSD&quot;
&gt; +#elif defined Q_OS_HPUX
&gt; +            &quot;HP-UX&quot;
&gt; +#elif defined Q_OS_HURD
&gt; +            &quot;GNU Hurd&quot;
&gt; +#elif defined Q_OS_IRIX
&gt; +            &quot;SGI Irix&quot;
&gt; +#elif defined Q_OS_LINUX
&gt; +
&gt; +#if defined(__x86_64__)
&gt; +            &quot;Linux x86_64&quot;
&gt; +#elif defined(__i386__)
&gt; +            &quot;Linux i686&quot;
&gt; +#else
&gt; +            &quot;Linux&quot;
&gt; +#endif
&gt; +
&gt; +#elif defined Q_OS_LYNX
&gt; +            &quot;LynxOS&quot;
&gt; +#elif defined Q_OS_NETBSD
&gt; +            &quot;NetBSD&quot;
&gt; +#elif defined Q_OS_OS2
&gt; +            &quot;OS/2&quot;
&gt; +#elif defined Q_OS_OPENBSD
&gt; +            &quot;OpenBSD&quot;
&gt; +#elif defined Q_OS_OS2EMX
&gt; +            &quot;OS/2&quot;
&gt; +#elif defined Q_OS_OSF
&gt; +            &quot;HP Tru64 UNIX&quot;
&gt; +#elif defined Q_OS_QNX6
&gt; +            &quot;QNX RTP Six&quot;
&gt; +#elif defined Q_OS_QNX
&gt; +            &quot;QNX&quot;
&gt; +#elif defined Q_OS_RELIANT
&gt; +            &quot;Reliant UNIX&quot;
&gt; +#elif defined Q_OS_SCO
&gt; +            &quot;SCO OpenServer&quot;
&gt; +#elif defined Q_OS_SOLARIS
&gt; +            &quot;Sun Solaris&quot;
&gt; +#elif defined Q_OS_ULTRIX
&gt; +            &quot;DEC Ultrix&quot;
&gt; +#elif defined Q_OS_UNIX
&gt; +            &quot;UNIX BSD/SYSV system&quot;
&gt; +#elif defined Q_OS_UNIXWARE
&gt; +            &quot;UnixWare Seven, Open UNIX Eight&quot;
&gt; +#else
&gt; +            &quot;Unknown&quot;
&gt; +#endif

We can also probably clean up this list, some of those OSes are definitely not supported anymore by Qt.

&gt; Source/WebCore/platform/qt/UserAgentQt.cpp:161
&gt; +        QString version = QString(QLatin1String(&quot;%1.%2&quot;)).arg(QString::number(webkitMajorVersion),
&gt; +                                                               QString::number(webkitMinorVersion));

This is also worth cleaing up in a separate patch, maybe using StringBuilder instead of QString(QLatin1String()).arg() just to insert a dot between two QStrings :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719568</commentid>
    <comment_count>17</comment_count>
      <attachid>163865</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 09:07:31 -0700</bug_when>
    <thetext>Comment on attachment 163865
Patch

Clearing flags on attachment: 163865

Committed r128472: &lt;http://trac.webkit.org/changeset/128472&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719569</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 09:07:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123218</attachid>
            <date>2012-01-19 16:05:40 -0800</date>
            <delta_ts>2012-05-23 12:29:21 -0700</delta_ts>
            <desc>Implement user agent string</desc>
            <filename>bug-73917-20120119210539.patch</filename>
            <type>text/plain</type>
            <size>8822</size>
            <attacher name="Lauro Moura Maranhao Neto">lauro.neto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYmVjNjBlOTM0YWY4MTNh
OTdjZmJiMDg5ODJjODBkMDhjMzAzNmY1YS4uYjllMDc0MWQ2YWY0NmU3NjM0MjNiMzNiYzdhZTdh
OWZlYWU4NWIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTE5ICBMYXVy
byBOZXRvICA8bGF1cm8ubmV0b0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBm
YXN0L2Zvcm1zL2FjY2Vzcy1rZXktZm9yLWFsbC1lbGVtZW50cy5odG1sIGZhaWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzkxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB1c2VyIGFn
ZW50IGZvciBRdCBXSzIgcG9ydC4gTGVmdCBhIEZJWE1FCisgICAgICAgIGR1ZSB0byB1c2FnZSBv
ZiBRdCBXSzEgdmVyc2lvbiBmdW5jdGlvbiB3aGlsZSBRdCBXSzIgdmVyc2lvbmluZworICAgICAg
ICBpcyBzb3J0ZWQgb3V0LgorCisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCk6
CisKIDIwMTItMDEtMTkgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtHVEtdIFdlYktpdDIgR1RLKyBBUEkgcHVibGljIGhlYWRlcnMgYXJlIG5v
dCBpbnN0YWxsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQ
YWdlUHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5
UXQuY3BwCmluZGV4IGFjOWZkZTQxOGIwYzQyZjlmNGRlYzg3YTMzMGIxYTllMWE0ZTVmMTQuLjg2
NjdhMmY0MDEwMjVjZTE0MGQ2MjY5NDMzMmFjOTg1MDAxODA1N2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcApAQCAtMzIsOCArMzIsMTQgQEAK
ICNpbmNsdWRlICJxcXVpY2tuZXR3b3JrcmVwbHlfcC5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgPFF0Q29yZS9R
Q29yZUFwcGxpY2F0aW9uPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2lmIGRlZmluZWQgUV9PU19XSU4zMgorI2luY2x1
ZGUgPFdlYkNvcmUvU3lzdGVtSW5mby5oPgorI2VuZGlmIC8vIFFfT1NfV0lOMzIKKyNpbmNsdWRl
IDxXZWJLaXRWZXJzaW9uLmg+CisKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQx
LDggKzQ3LDEzOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogU3RyaW5nIFdlYlBhZ2VQcm94eTo6
c3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnQpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBoYXJkIGNvZGVkLgotICAg
IHJldHVybiAiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfNikgQXBw
bGVXZWJLaXQvNTMxLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMC4zIFNhZmFyaS81
MzEuNCI7CisgICAgc3RhdGljIFFTdHJpbmcgdWE7CisKKyAgICBpZiAodWEuaXNOdWxsKCkpIHsK
KyAgICAgICAgLy8gU3RhdGljIGZpZWxkcy4KKyAgICAgICAgLy8gJTEgUGxhdGZvcm0uCisgICAg
ICAgIC8vICUyIFNlY3VyaXR5IHN0cmVuZ3RoLgorICAgICAgICAvLyAlMyBPcGVyYXRpbmcgc3lz
dGVtLgorICAgICAgICAvLyAlNCBXZWJLaXQgdmVyc2lvbgorICAgICAgICAvLyAlNSBXZWJLaXQg
dmVyc2lvbiAoZnJvbnQgZW5kKQorICAgICAgICAvLyBSdW50aW1lLWRlZmluZWQgZmllbGRzCisg
ICAgICAgIC8vICU5OSBBcHBsaWNhdGlvbiBuYW1lL3ZlcnNpb24KKyAgICAgICAgdWEgPSBRTGF0
aW4xU3RyaW5nKCJNb3ppbGxhLzUuMCAoJTElMiUzKSBBcHBsZVdlYktpdC8lNCAoS0hUTUwsIGxp
a2UgR2Vja28pICU5OSBTYWZhcmkvJTUiKTsKKworICAgICAgICAvLyBQbGF0Zm9ybS4KKyAgICAg
ICAgdWEgPSB1YS5hcmcoUUxhdGluMVN0cmluZygKKyNpZmRlZiBRX1dTX01BQworICAgICAgICAg
ICAgIk1hY2ludG9zaDsgIgorI2VsaWYgZGVmaW5lZCBRX1dTX1FXUworICAgICAgICAgICAgIlF0
RW1iZWRkZWQ7ICIKKyNlbGlmIGRlZmluZWQgUV9XU19XSU4KKyAgICAgICAgICAgIC8vIE5vdGhp
bmcuCisjZWxpZiBkZWZpbmVkIFFfV1NfWDExCisgICAgICAgICAgICAiWDExOyAiCisjZWxzZQor
ICAgICAgICAgICAgIlVua25vd247ICIKKyNlbmRpZgorICAgICAgICApKTsKKworICAgICAgICAv
LyBTZWN1cml0eSBzdHJlbmd0aC4KKyAgICAgICAgUVN0cmluZyBzZWN1cml0eVN0cmVuZ3RoOwor
I2lmIGRlZmluZWQoUVRfTk9fT1BFTlNTTCkKKyAgICAgICAgc2VjdXJpdHlTdHJlbmd0aCA9IFFM
YXRpbjFTdHJpbmcoIk47ICIpOworI2VuZGlmCisgICAgICAgIHVhID0gdWEuYXJnKHNlY3VyaXR5
U3RyZW5ndGgpOworCisgICAgICAgIC8vIE9wZXJhdGluZyBzeXN0ZW0uCisgICAgICAgIHVhID0g
dWEuYXJnKFFMYXRpbjFTdHJpbmcoCisjaWZkZWYgUV9PU19BSVgKKyAgICAgICAgICAgICJBSVgi
CisjZWxpZiBkZWZpbmVkIFFfT1NfV0lOMzIKKyAgICAgICAgICAgIHdpbmRvd3NWZXJzaW9uRm9y
VUFTdHJpbmcoKQorI2VsaWYgZGVmaW5lZCBRX09TX0RBUldJTgorI2lmZGVmIF9faTM4Nl9fIHx8
IF9feDg2XzY0X18KKyAgICAgICAgICAgICJJbnRlbCBNYWMgT1MgWCIKKyNlbHNlCisgICAgICAg
ICAgICAiUFBDIE1hYyBPUyBYIgorI2VuZGlmCisKKyNlbGlmIGRlZmluZWQgUV9PU19CU0RJCisg
ICAgICAgICAgICAiQlNEIgorI2VsaWYgZGVmaW5lZCBRX09TX0JTRDQKKyAgICAgICAgICAgICJC
U0QgRm91ciIKKyNlbGlmIGRlZmluZWQgUV9PU19DWUdXSU4KKyAgICAgICAgICAgICJDeWd3aW4i
CisjZWxpZiBkZWZpbmVkIFFfT1NfREdVWAorICAgICAgICAgICAgIkRHL1VYIgorI2VsaWYgZGVm
aW5lZCBRX09TX0RZTklYCisgICAgICAgICAgICAiRFlOSVgvcHR4IgorI2VsaWYgZGVmaW5lZCBR
X09TX0ZSRUVCU0QKKyAgICAgICAgICAgICJGcmVlQlNEIgorI2VsaWYgZGVmaW5lZCBRX09TX0hQ
VVgKKyAgICAgICAgICAgICJIUC1VWCIKKyNlbGlmIGRlZmluZWQgUV9PU19IVVJECisgICAgICAg
ICAgICAiR05VIEh1cmQiCisjZWxpZiBkZWZpbmVkIFFfT1NfSVJJWAorICAgICAgICAgICAgIlNH
SSBJcml4IgorI2VsaWYgZGVmaW5lZCBRX09TX0xJTlVYCisKKyNpZiBkZWZpbmVkKF9feDg2XzY0
X18pCisgICAgICAgICAgICAiTGludXggeDg2XzY0IgorI2VsaWYgZGVmaW5lZChfX2kzODZfXykK
KyAgICAgICAgICAgICJMaW51eCBpNjg2IgorI2Vsc2UKKyAgICAgICAgICAgICJMaW51eCIKKyNl
bmRpZgorCisjZWxpZiBkZWZpbmVkIFFfT1NfTFlOWAorICAgICAgICAgICAgIkx5bnhPUyIKKyNl
bGlmIGRlZmluZWQgUV9PU19ORVRCU0QKKyAgICAgICAgICAgICJOZXRCU0QiCisjZWxpZiBkZWZp
bmVkIFFfT1NfT1MyCisgICAgICAgICAgICAiT1MvMiIKKyNlbGlmIGRlZmluZWQgUV9PU19PUEVO
QlNECisgICAgICAgICAgICAiT3BlbkJTRCIKKyNlbGlmIGRlZmluZWQgUV9PU19PUzJFTVgKKyAg
ICAgICAgICAgICJPUy8yIgorI2VsaWYgZGVmaW5lZCBRX09TX09TRgorICAgICAgICAgICAgIkhQ
IFRydTY0IFVOSVgiCisjZWxpZiBkZWZpbmVkIFFfT1NfUU5YNgorICAgICAgICAgICAgIlFOWCBS
VFAgU2l4IgorI2VsaWYgZGVmaW5lZCBRX09TX1FOWAorICAgICAgICAgICAgIlFOWCIKKyNlbGlm
IGRlZmluZWQgUV9PU19SRUxJQU5UCisgICAgICAgICAgICAiUmVsaWFudCBVTklYIgorI2VsaWYg
ZGVmaW5lZCBRX09TX1NDTworICAgICAgICAgICAgIlNDTyBPcGVuU2VydmVyIgorI2VsaWYgZGVm
aW5lZCBRX09TX1NPTEFSSVMKKyAgICAgICAgICAgICJTdW4gU29sYXJpcyIKKyNlbGlmIGRlZmlu
ZWQgUV9PU19VTFRSSVgKKyAgICAgICAgICAgICJERUMgVWx0cml4IgorI2VsaWYgZGVmaW5lZCBR
X09TX1VOSVgKKyAgICAgICAgICAgICJVTklYIEJTRC9TWVNWIHN5c3RlbSIKKyNlbGlmIGRlZmlu
ZWQgUV9PU19VTklYV0FSRQorICAgICAgICAgICAgIlVuaXhXYXJlIFNldmVuLCBPcGVuIFVOSVgg
RWlnaHQiCisjZWxzZQorICAgICAgICAgICAgIlVua25vd24iCisjZW5kaWYKKyAgICAgICAgKSk7
CisKKyAgICAgICAgLy8gV2ViS2l0IHZlcnNpb24uCisgICAgICAgIC8vIEZJWE1FOiBtYWNyb3Mg
ZnJvbSBXZWJLaXQxLgorICAgICAgICBRU3RyaW5nIHZlcnNpb24gPSBRU3RyaW5nKFFMYXRpbjFT
dHJpbmcoIiUxLiUyKyIpKS5hcmcoUVN0cmluZzo6bnVtYmVyKFdFQktJVF9NQUpPUl9WRVJTSU9O
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFFTdHJpbmc6Om51bWJlcihXRUJLSVRfTUlOT1JfVkVSU0lPTikpOworICAgICAg
ICB1YSA9IHVhLmFyZyh2ZXJzaW9uLCB2ZXJzaW9uKTsKKyAgICB9CisKKyAgICBRU3RyaW5nIGFw
cE5hbWU7CisgICAgaWYgKGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudC5pc0VtcHR5KCkpCisg
ICAgICAgIGFwcE5hbWUgPSBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbk5hbWUoKTsKKyAg
ICBlbHNlCisgICAgICAgIGFwcE5hbWUgPSBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ7CisK
KyAgICBpZiAoIWFwcE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgIFFTdHJpbmcgYXBwVmVyID0g
UUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25WZXJzaW9uKCk7CisgICAgICAgIGlmICghYXBw
VmVyLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIGFwcE5hbWUuYXBwZW5kKFFMYXRpbjFDaGFyKCcv
JykgKyBhcHBWZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFF0IHZlcnNpb24uCisgICAg
ICAgIGFwcE5hbWUgPSBRTGF0aW4xU3RyaW5nKCJRdC8iKSArIFFMYXRpbjFTdHJpbmcocVZlcnNp
b24oKSk7CisgICAgfQorCisgICAgcmV0dXJuIHVhLmFyZyhhcHBOYW1lKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTcxZjIyYjMwY2JjOTUxYmU4ZWViNmM5OGIzOWM1OTc4YzBi
NGZjOS4uMzE0MTIzNzFlMzgwOWU5Y2M1NmYwZmRmZGY4MWZiMzczZTgxYmNjOCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE2IEBACisyMDEyLTAxLTE5ICBMYXVybyBOZXRvICA8bGF1cm8ubmV0b0BvcGVuYm9z
c2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBmYXN0L2Zvcm1zL2FjY2Vzcy1rZXktZm9yLWFs
bC1lbGVtZW50cy5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MzkxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFJlbW92ZWQgdGVzdHMgdXNpbmcgYWNjZXNzIGtleSBmcm9tIHNraXAgbGlz
dHMgYXMKKyAgICAgICAgYXMgaXQgd2FzIHRoZSBoYXJkY29kZWQgTWFjIE9TIFggaW4gdGhlIHVz
ZXIgYWdlbnQgdGhhdAorICAgICAgICBtYWRlIHRoZSB0ZXN0cyBmYWlsIG9uIG90aGVyIHN5c3Rl
bXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC13azIvU2tpcHBlZDoKKwogMjAxMi0wMS0xOSAg
RGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NjQ0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC13azIvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LXdrMi9Ta2lw
cGVkCmluZGV4IDYwNDIxMjg1MzVkZmViNTIwMzkxMzE2MmFkYzE5ZDU3Nzk2NDg1MTMuLmU5NDE5
OGQwYjcyYTViNTA0MzZjYjVjNGM4YWVmNDc3Yjg4NmQxMTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL3F0LXdrMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
LXdrMi9Ta2lwcGVkCkBAIC0zMCw4ICszMCw2IEBACiAKICMgV2ViS2l0VGVzdFJ1bm5lciBuZWVk
cyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBldmVudFNlbmRlcgogIyA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTk0PgotZWRpdGluZy9pbnB1dC9vcHRpb24tcGFnZS11
cC1kb3duLmh0bWwKLWVkaXRpbmcvaW5wdXQvc2Nyb2xsLXZpZXdwb3J0LXBhZ2UtdXAtZG93bi5o
dG1sCiBlZGl0aW5nL2luc2VydGluZy90eXBpbmctdGFiLWRlc2lnbm1vZGUtZm9ybXMuaHRtbAog
ZWRpdGluZy9pbnNlcnRpbmcvdHlwaW5nLXRhYi1kZXNpZ25tb2RlLmh0bWwKIGVkaXRpbmcvcGFz
dGVib2FyZC9jb3B5LXN0YW5kYWxvbmUtaW1hZ2UtY3Jhc2guaHRtbApAQCAtNDMsMTIgKzQxLDEw
IEBAIGVkaXRpbmcvc2VsZWN0aW9uL2RvdWJsZWNsaWNrLXdoaXRlc3BhY2UtY3Jhc2guaHRtbAog
ZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS1pbWctY3Jhc2guaHRtbAog
ZWRpdGluZy9zZWxlY3Rpb24vZG91YmxlY2xpY2std2hpdGVzcGFjZS5odG1sCiBlZGl0aW5nL3Nl
bGVjdGlvbi9lbXB0eS1jZWxsLXJpZ2h0LWNsaWNrLmh0bWwKLWVkaXRpbmcvc2VsZWN0aW9uL21v
dmUtYmVnaW4tZW5kLmh0bWwKIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1vdXQtb2YtZWRpdGFi
bGUuaHRtbAogZmFzdC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCiBmYXN0L2R5
bmFtaWMvbGF5ZXItaGl0LXRlc3QtY3Jhc2guaHRtbAogZmFzdC9lbmNvZGluZy9tYWlsdG8tYWx3
YXlzLXV0Zi04Lmh0bWwKLWZhc3QvZXZlbnRzL2FjY2Vzcy1rZXktc2VsZi1kZXN0cnVjdC5odG1s
CiBmYXN0L2V2ZW50cy9jb250ZXh0LW5vLWRlc2VsZWN0Lmh0bWwKIGZhc3QvZXZlbnRzL2NvbnRl
eHQtb25tb3VzZWRvd24tZXZlbnQuaHRtbAogZmFzdC9ldmVudHMvY29udGV4dG1lbnUtc2Nyb2xs
ZWQtcGFnZS13aXRoLWZyYW1lLmh0bWwKQEAgLTY2LDEyICs2Miw5IEBAIGZhc3QvZXZlbnRzL3Nj
cm9sbC1pbi1zY2FsZWQtcGFnZS13aXRoLW92ZXJmbG93LWhpZGRlbi5odG1sCiBmYXN0L2V2ZW50
cy9zZWxlY3RzdGFydC1wcmV2ZW50LXNlbGVjdGlvbi1vbi1yaWdodC1jbGljay5odG1sCiBmYXN0
L2V2ZW50cy93aGVlbGV2ZW50LWluLWhvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCiBm
YXN0L2V2ZW50cy93aGVlbGV2ZW50LWluLXZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAot
ZmFzdC9mb3Jtcy9hY2Nlc3Mta2V5Lmh0bWwKIGZhc3QvZm9ybXMvZm9jdXMtY2hhbmdlLW9uLWtl
eXByZXNzLmh0bWwKLWZhc3QvZm9ybXMvZm9jdXMtc2VsZWN0aW9uLXRleHRhcmVhLmh0bWwKIGZh
c3QvZm9ybXMvaW50ZXJhY3RpdmUtdmFsaWRhdGlvbi1hdHRhY2gtYXNzZXJ0aW9uLmh0bWwKIGZh
c3QvZm9ybXMvbGVnZW5kLWFjY2Vzcy1rZXkuaHRtbAotZmFzdC9mb3Jtcy9zZWxlY3QtYWNjZXNz
a2V5Lmh0bWwKIGZhc3QvbG9hZGVyL3BvbGljeS1kZWxlZ2F0ZS1hY3Rpb24taGl0LXRlc3Qtem9v
bWVkLmh0bWwKIAogc3ZnL2N1c3RvbS9tb3VzZS1tb3ZlLW9uLXN2Zy1jb250YWluZXIueGh0bWwK
QEAgLTM2NiwxMCArMzU5LDYgQEAgZmFzdC9tdWx0aWNvbC9wYWdpbmF0aW9uLWgtdmVydGljYWwt
cmwuaHRtbAogZmFzdC9tdWx0aWNvbC9wYWdpbmF0aW9uLXYtaG9yaXpvbnRhbC1idC5odG1sCiBm
YXN0L211bHRpY29sL3BhZ2luYXRpb24tdi12ZXJ0aWNhbC1sci5odG1sCiAKLSMgW1F0XVtXSzJd
IGZhc3QvZm9ybXMvYWNjZXNzLWtleS1mb3ItYWxsLWVsZW1lbnRzLmh0bWwgZmFpbHMKLSMgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczOTE3Ci1mYXN0L2Zvcm1zL2Fj
Y2Vzcy1rZXktZm9yLWFsbC1lbGVtZW50cy5odG1sCi0KICMgW1F0XVtXSzJdIFJFR1JFU1NJT04o
MTAyMjI4KTogbG90IG9mIHRlc3QgZmFpbHVyZXMgYWZ0ZXIgZW5hYmxlZCBwYWdlIGNhY2hlCiAj
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzk5OQogZmFzdC9mb3Jt
cy9zdGF0ZS1yZXN0b3JlLXJhZGlvLWdyb3VwLmh0bWwKQEAgLTM5OSw3ICszODgsNiBAQCBlZGl0
aW5nL3RleHQtaXRlcmF0b3IvZmluZFN0cmluZy1zZWxlY3Rpb24tZGlzYWJsZWQuaHRtbAogCiAj
IEZhaWxpbmcgdGVzdHMgb24gcXQtd2syIGFmdGVyIHVuc2tpcHBpbmcgcXQtNS4wL1NraXBwZWQg
dGVzdHMsIG5lZWQgbW9yZSBpbnZlc3RpZ2F0aW9uCiBmYXN0L2Jsb2NrL2Jhc2ljLzAyMC5odG1s
Ci1mYXN0L2RvbS9hY2Nlc3Mta2V5LWlmcmFtZS5odG1sCiBmYXN0L2Zvcm1zL2Jhc2ljLXNlbGVj
dHMuaHRtbAogZmFzdC9oaXN0b3J5L3Zpc2l0ZWQtbGluay1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwK
IGZhc3QvbGF5ZXJzL2xheWVyLXZpc2liaWxpdHktc3VibGF5ZXIuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143616</attachid>
            <date>2012-05-23 12:29:33 -0700</date>
            <delta_ts>2012-05-23 14:25:34 -0700</delta_ts>
            <desc>Add shared user agent implementation for Qt</desc>
            <filename>bug-73917-20120523162933.patch</filename>
            <type>text/plain</type>
            <size>22310</size>
            <attacher name="Lauro Moura Maranhao Neto">lauro.neto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmM3N2IyNDg1MWM5Y2Jh
MzlkOTYwNGNiNDYxMWI4MGUxMjdkZDUxMS4uMTFlYTQwZmRlN2M1ZGJiODM5YjI5NjVhYTkyZDBi
YWJkNWUxNWRiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA1LTIzICBMYXVy
byBOZXRvICA8bGF1cm8ubmV0b0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBm
YXN0L2Zvcm1zL2FjY2Vzcy1rZXktZm9yLWFsbC1lbGVtZW50cy5odG1sIGZhaWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzkxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2Vzcy1rZXkgdGVzdHMg
d2VyZSBmYWlsaW5nIGR1ZSB0byBoYXJkY29kZWQgTWFjIE9TIFggaW4gdGhlCisgICAgICAgIFF0
IFdLMiB1c2VyIGFnZW50IHN0cmluZy4gVGhpcyBjb21taXQgbW92ZXMgdGhlIFdLMSBpbXBsZW1l
bnRhdGlvbgorICAgICAgICB0byBhIHNoYXJlZCBvbmUgdG8gYmUgdXNlZCBieSBib3RoIHZlcnNp
b25zLgorCisgICAgICAgIEFkZHMgdGhlIHNoYXJlZCB1c2VyIGFnZW50IGltcGxlbWVudGF0aW9u
LgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Vc2VyQWdl
bnRRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyQWdlbnRRdDo6c3RhbmRhcmRVc2VyQWdlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Vz
ZXJBZ2VudFF0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChVc2VyQWdl
bnRRdCk6CisKIDIwMTItMDUtMjMgIEFuZHJlaSBCdWN1ciAgPGFidWN1ckBhZG9iZS5jb20+CiAK
ICAgICAgICAgW0NTU1JlZ2lvbnNdSW1wbGVtZW50IE5hbWVkRmxvdzo6bmFtZSBhdHRyaWJ1dGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9x
dC9DaGFuZ2VMb2cKaW5kZXggNDY5ZGJlZmE4MTExZjQ1NGJmZmM3ODIzNzk0YWE2ZDZiNGJjMDMx
Ni4uZWI0MjNkNjJmZGEwZTJhMjM3NjlhYmUxYjc4MzU1YjI2MzcwODk2ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wNS0yMyAgTGF1cm8gTmV0byAgPGxhdXJvLm5ldG9A
b3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gZmFzdC9mb3Jtcy9hY2Nlc3Mta2V5
LWZvci1hbGwtZWxlbWVudHMuaHRtbCBmYWlscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM5MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBY2Nlc3Mta2V5IHRlc3RzIHdlcmUgZmFpbGluZyBkdWUgdG8g
aGFyZGNvZGVkIE1hYyBPUyBYIGluIHRoZQorICAgICAgICBRdCBXSzIgdXNlciBhZ2VudCBzdHJp
bmcuIFRoaXMgY29tbWl0IG1vdmVzIHRoZSBXSzEgaW1wbGVtZW50YXRpb24KKyAgICAgICAgdG8g
YSBzaGFyZWQgb25lIHRvIGJlIHVzZWQgYnkgYm90aCB2ZXJzaW9ucy4KKworICAgICAgICBDaGFu
Z2UgUVdlYlBhZ2UgdG8gdXNlIHRoZSBzaGFyZWQgdXNlciBhZ2VudCBpbXBsZW1lbnRhdGlvbi4K
KworICAgICAgICAqIEFwaS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6dXNlckFn
ZW50Rm9yVXJsKToKKwogMjAxMi0wNS0yMSAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhv
ICA8Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIE1vdmUgc2V0RWRpdGlu
Z0JlaGF2aW9yKCkgZnJvbSBsYXlvdXRUZXN0Q29udHJvbGxlciB0byB3aW5kb3cuaW50ZXJuYWxz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKaW5kZXggODllOTc3ZjRlZGE1MzdmZDkxZTI5OGI1NzNmMDkxODU2ZTg0NzU2My4u
ZTRiMTdmZmVmNGI5OTVkN2EyZDgwMGIzZGYxYzk1ZTc1OWMxYWY2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDIwIEBACisyMDEyLTA1LTIzICBMYXVybyBOZXRvICA8bGF1cm8ubmV0b0BvcGVuYm9z
c2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBmYXN0L2Zvcm1zL2FjY2Vzcy1rZXktZm9yLWFs
bC1lbGVtZW50cy5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MzkxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFjY2Vzcy1rZXkgdGVzdHMgd2VyZSBmYWlsaW5nIGR1ZSB0byBoYXJkY29k
ZWQgTWFjIE9TIFggaW4gdGhlCisgICAgICAgIFF0IFdLMiB1c2VyIGFnZW50IHN0cmluZy4gVGhp
cyBjb21taXQgbW92ZXMgdGhlIFdLMSBpbXBsZW1lbnRhdGlvbgorICAgICAgICB0byBhIHNoYXJl
ZCBvbmUgdG8gYmUgdXNlZCBieSBib3RoIHZlcnNpb25zLgorCisgICAgICAgIFVzZSB0aGUgc2hh
cmVkIGltcGxlbWVudGF0aW9uIGluc3RlYWQgb2YgaGFyZGNvZGluZyB0aGUgdXNlciBhZ2VudC4g
QWxzbworICAgICAgICBjaGFuZ2VkIGhlYWRlciBpbmNsdWRlIG9yZGVyIHRvIGZvbGxvdyB0aGUg
cHJvcGVyIHN0eWxlLgorCisgICAgICAgICogVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCk6CisK
IDIwMTItMDUtMjMgIE1pY2hhZWwgQnLDvG5pbmcgIDxtaWNoYWVsLmJydW5pbmdAbm9raWEuY29t
PgogCiAgICAgICAgIFtRdF1bV0syXSBTbWFsbCByZWZhY3RvcmluZyBXZWJQYWdlOjpjb25maXJt
Q29tcG9zaXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291
cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCAyYmVlOGE2NmYwZTZlNGY4YWI1NzZhZjkzNWRk
NTY2NmU1MmUxNzZmLi4xOTE0YjQzMDliMDdjNmRmZTdlMWFjOThiNWMxMzNlNDU2Y2JlMGE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkKQEAgLTIzNTgsNiArMjM1OCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRm
b3JtL3F0L1FXZWJQYWdlQ2xpZW50LmggXAogICAgIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXQu
aCBcCiAgICAgcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdE1vYmlsZS5oIFwKKyAgICBwbGF0Zm9y
bS9xdC9Vc2VyQWdlbnRRdC5oIFwKICAgICBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oIFwKICAg
ICBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5oIFwKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXIuaCBc
CkBAIC0yOTAwLDYgKzI5MDEsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9xdC9SdW5M
b29wUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9TaGFyZWRCdWZmZXJRdC5jcHAgXAogICAgIHBs
YXRmb3JtL3F0L1RoaXJkUGFydHlDb29raWVzUXQuY3BwIFwKKyAgICBwbGF0Zm9ybS9xdC9Vc2Vy
QWdlbnRRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDYWNoZVF0LmNwcCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udEN1c3RvbVBsYXRmb3JtRGF0YVF0LmNwcCBc
CiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR2x5cGhQYWdlVHJlZU5vZGVRdC5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVXNlckFnZW50UXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVXNlckFnZW50UXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2MTU5
NWFhOGFhMTVkYTJkZjQ2MTNjMTBjZDY2OTBjZTAyODc4NTUKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Vc2VyQWdlbnRRdC5jcHAKQEAgLTAsMCArMSwxOTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDEwIFNlbmNoYSwgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIlVzZXJBZ2VudFF0LmgiCisKKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorCisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaWYgZGVmaW5lZCBRX09TX1dJTjMyCisj
aW5jbHVkZSA8V2ViQ29yZS9TeXN0ZW1JbmZvLmg+CisjZW5kaWYgLy8gUV9PU19XSU4zMgorI2lu
Y2x1ZGUgPFdlYktpdFZlcnNpb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvKiEKKyAg
ICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgdXNlciBhZ2VudCBmb3IgSFRUUCByZXF1
ZXN0cyBpcyBuZWVkZWQuIAorCisgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRoZSBm
b2xsb3dpbmcgdmFsdWU6CisKKyAgICAiTW96aWxsYS81LjAgKCVQbGF0Zm9ybSUlU2VjdXJpdHkl
JVN1YnBsYXRmb3JtJSkgQXBwbGVXZWJLaXQvJVdlYktpdFZlcnNpb24lIChLSFRNTCwgbGlrZSBH
ZWNrbykgJUFwcFZlcnNpb24gU2FmYXJpLyVXZWJLaXRWZXJzaW9uJSIKKworICAgIEluIHRoaXMg
c3RyaW5nIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSByZXBsYWNlZCB0aGUgZmlyc3QgdGltZSB0
aGUgZnVuY3Rpb24gaXMgY2FsbGVkOgorICAgIFxsaXN0CisgICAgXGxpICVQbGF0Zm9ybSUgZXhw
YW5kcyB0byB0aGUgd2luZG93aW5nIHN5c3RlbSBmb2xsb3dlZCBieSAiOyAiIGlmIGl0IGlzIG5v
dCBXaW5kb3dzIChlLmcuICJYMTE7ICIpLgorICAgIFxsaSAlU2VjdXJpdHklIGV4cGFuZHMgdG8g
Ik47ICIgaWYgU1NMIGlzIGRpc2FibGVkLgorICAgIFxsaSAlU3VicGxhdGZvcm0lIGV4cGFuZHMg
dG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gdmVyc2lvbiAoZS5nLiAiV2luZG93cyBOVCA2LjEiIG9y
ICJJbnRlbCBNYWMgT1MgWCAxMC41IikuCisgICAgXGxpICVXZWJLaXRWZXJzaW9uJSBpcyB0aGUg
dmVyc2lvbiBvZiBXZWJLaXQgdGhlIGFwcGxpY2F0aW9uIHdhcyBjb21waWxlZCBhZ2FpbnN0Lgor
ICAgIC9lbmRsaXN0CisKKyAgICBUaGUgZm9sbG93aW5nIHZhbHVlIGlzIHJlcGxhY2VkIGVhY2gg
dGltZSB0aGUgZnVuY2l0b24gaXMgY2FsbGVkCisgICAgXGxpc3QKKyAgICBcbGkgJUFwcFZlcnNp
b24lIGV4cGFuZHMgdG8gUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25OYW1lKCkvUUNvcmVB
cHBsaWNhdGlvbjo6YXBwbGljYXRpb25WZXJzaW9uKCkgaWYgdGhleSdyZSBzZXQ7IG90aGVyd2lz
ZSBkZWZhdWx0aW5nIHRvIFF0IGFuZCB0aGUgY3VycmVudCBRdCB2ZXJzaW9uLgorICAgIFxlbmRs
aXN0CisqLworU3RyaW5nIFVzZXJBZ2VudFF0OjpzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBTdHJp
bmcgJmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCkKK3sKKyAgICBzdGF0aWMgUVN0cmluZyB1
YTsKKworICAgIGlmICh1YS5pc051bGwoKSkgeworCisgICAgICAgIHVhID0gUUxhdGluMVN0cmlu
ZygiTW96aWxsYS81LjAgKCUxJTIlMykgQXBwbGVXZWJLaXQvJTQgKEtIVE1MLCBsaWtlIEdlY2tv
KSAlOTkgU2FmYXJpLyU1Iik7CisKKyAgICAgICAgLy8gUGxhdGZvcm0uCisgICAgICAgIHVhID0g
dWEuYXJnKFFMYXRpbjFTdHJpbmcoCisjaWZkZWYgUV9XU19NQUMKKyAgICAgICAgICAgICJNYWNp
bnRvc2g7ICIKKyNlbGlmIGRlZmluZWQgUV9XU19RV1MKKyAgICAgICAgICAgICJRdEVtYmVkZGVk
OyAiCisjZWxpZiBkZWZpbmVkIFFfV1NfV0lOCisgICAgICAgICAgICAvLyBOb3RoaW5nLgorI2Vs
aWYgZGVmaW5lZCBRX1dTX1gxMQorICAgICAgICAgICAgIlgxMTsgIgorI2Vsc2UKKyAgICAgICAg
ICAgICJVbmtub3duOyAiCisjZW5kaWYKKyAgICAgICAgKSk7CisKKyAgICAgICAgLy8gU2VjdXJp
dHkgc3RyZW5ndGguCisgICAgICAgIFFTdHJpbmcgc2VjdXJpdHlTdHJlbmd0aDsKKyNpZiBkZWZp
bmVkKFFUX05PX09QRU5TU0wpCisgICAgICAgIHNlY3VyaXR5U3RyZW5ndGggPSBRTGF0aW4xU3Ry
aW5nKCJOOyAiKTsKKyNlbmRpZgorICAgICAgICB1YSA9IHVhLmFyZyhzZWN1cml0eVN0cmVuZ3Ro
KTsKKworICAgICAgICAvLyBPcGVyYXRpbmcgc3lzdGVtLgorICAgICAgICB1YSA9IHVhLmFyZyhR
TGF0aW4xU3RyaW5nKAorI2lmZGVmIFFfT1NfQUlYCisgICAgICAgICAgICAiQUlYIgorI2VsaWYg
ZGVmaW5lZCBRX09TX1dJTjMyCisgICAgICAgICAgICB3aW5kb3dzVmVyc2lvbkZvclVBU3RyaW5n
KCkKKyNlbGlmIGRlZmluZWQgUV9PU19EQVJXSU4KKyNpZmRlZiBfX2kzODZfXyB8fCBfX3g4Nl82
NF9fCisgICAgICAgICAgICAiSW50ZWwgTWFjIE9TIFgiCisjZWxzZQorICAgICAgICAgICAgIlBQ
QyBNYWMgT1MgWCIKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkIFFfT1NfQlNESQorICAgICAgICAg
ICAgIkJTRCIKKyNlbGlmIGRlZmluZWQgUV9PU19CU0Q0CisgICAgICAgICAgICAiQlNEIEZvdXIi
CisjZWxpZiBkZWZpbmVkIFFfT1NfQ1lHV0lOCisgICAgICAgICAgICAiQ3lnd2luIgorI2VsaWYg
ZGVmaW5lZCBRX09TX0RHVVgKKyAgICAgICAgICAgICJERy9VWCIKKyNlbGlmIGRlZmluZWQgUV9P
U19EWU5JWAorICAgICAgICAgICAgIkRZTklYL3B0eCIKKyNlbGlmIGRlZmluZWQgUV9PU19GUkVF
QlNECisgICAgICAgICAgICAiRnJlZUJTRCIKKyNlbGlmIGRlZmluZWQgUV9PU19IUFVYCisgICAg
ICAgICAgICAiSFAtVVgiCisjZWxpZiBkZWZpbmVkIFFfT1NfSFVSRAorICAgICAgICAgICAgIkdO
VSBIdXJkIgorI2VsaWYgZGVmaW5lZCBRX09TX0lSSVgKKyAgICAgICAgICAgICJTR0kgSXJpeCIK
KyNlbGlmIGRlZmluZWQgUV9PU19MSU5VWAorCisjaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorICAg
ICAgICAgICAgIkxpbnV4IHg4Nl82NCIKKyNlbGlmIGRlZmluZWQoX19pMzg2X18pCisgICAgICAg
ICAgICAiTGludXggaTY4NiIKKyNlbHNlCisgICAgICAgICAgICAiTGludXgiCisjZW5kaWYKKwor
I2VsaWYgZGVmaW5lZCBRX09TX0xZTlgKKyAgICAgICAgICAgICJMeW54T1MiCisjZWxpZiBkZWZp
bmVkIFFfT1NfTkVUQlNECisgICAgICAgICAgICAiTmV0QlNEIgorI2VsaWYgZGVmaW5lZCBRX09T
X09TMgorICAgICAgICAgICAgIk9TLzIiCisjZWxpZiBkZWZpbmVkIFFfT1NfT1BFTkJTRAorICAg
ICAgICAgICAgIk9wZW5CU0QiCisjZWxpZiBkZWZpbmVkIFFfT1NfT1MyRU1YCisgICAgICAgICAg
ICAiT1MvMiIKKyNlbGlmIGRlZmluZWQgUV9PU19PU0YKKyAgICAgICAgICAgICJIUCBUcnU2NCBV
TklYIgorI2VsaWYgZGVmaW5lZCBRX09TX1FOWDYKKyAgICAgICAgICAgICJRTlggUlRQIFNpeCIK
KyNlbGlmIGRlZmluZWQgUV9PU19RTlgKKyAgICAgICAgICAgICJRTlgiCisjZWxpZiBkZWZpbmVk
IFFfT1NfUkVMSUFOVAorICAgICAgICAgICAgIlJlbGlhbnQgVU5JWCIKKyNlbGlmIGRlZmluZWQg
UV9PU19TQ08KKyAgICAgICAgICAgICJTQ08gT3BlblNlcnZlciIKKyNlbGlmIGRlZmluZWQgUV9P
U19TT0xBUklTCisgICAgICAgICAgICAiU3VuIFNvbGFyaXMiCisjZWxpZiBkZWZpbmVkIFFfT1Nf
VUxUUklYCisgICAgICAgICAgICAiREVDIFVsdHJpeCIKKyNlbGlmIGRlZmluZWQgUV9PU19VTklY
CisgICAgICAgICAgICAiVU5JWCBCU0QvU1lTViBzeXN0ZW0iCisjZWxpZiBkZWZpbmVkIFFfT1Nf
VU5JWFdBUkUKKyAgICAgICAgICAgICJVbml4V2FyZSBTZXZlbiwgT3BlbiBVTklYIEVpZ2h0Igor
I2Vsc2UKKyAgICAgICAgICAgICJVbmtub3duIgorI2VuZGlmCisgICAgICAgICkpOworCisgICAg
ICAgIC8vIFdlYktpdCB2ZXJzaW9uLgorICAgICAgICAvLyBUT0RPOiB1c2luZyBtYWNyb3MgZnJv
bSBXZWJLaXQxIHVudGlsIFdlYktpdDIgUXQgcG9ydCB2ZXJzaW9uaW5nIGlzIHNvcnRlZCBvdXQu
CisgICAgICAgIFFTdHJpbmcgdmVyc2lvbiA9IFFTdHJpbmcoUUxhdGluMVN0cmluZygiJTEuJTIr
IikpLmFyZyhRU3RyaW5nOjpudW1iZXIoV0VCS0lUX01BSk9SX1ZFUlNJT04pLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0
cmluZzo6bnVtYmVyKFdFQktJVF9NSU5PUl9WRVJTSU9OKSk7CisgICAgICAgIHVhID0gdWEuYXJn
KHZlcnNpb24sIHZlcnNpb24pOworICAgIH0KKworICAgIFFTdHJpbmcgYXBwTmFtZTsKKyAgICBp
ZiAoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50LmlzRW1wdHkoKSkKKyAgICAgICAgYXBwTmFt
ZSA9IFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uTmFtZSgpOworICAgIGVsc2UKKyAgICAg
ICAgYXBwTmFtZSA9IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKKworICAgIGlmICghYXBw
TmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgUVN0cmluZyBhcHBWZXIgPSBRQ29yZUFwcGxpY2F0
aW9uOjphcHBsaWNhdGlvblZlcnNpb24oKTsKKyAgICAgICAgaWYgKCFhcHBWZXIuaXNFbXB0eSgp
KQorICAgICAgICAgICAgYXBwTmFtZS5hcHBlbmQoUUxhdGluMUNoYXIoJy8nKSArIGFwcFZlcik7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUXQgdmVyc2lvbi4KKyAgICAgICAgYXBwTmFtZSA9
IFFMYXRpbjFTdHJpbmcoIlF0LyIpICsgUUxhdGluMVN0cmluZyhxVmVyc2lvbigpKTsKKyAgICB9
CisKKyAgICByZXR1cm4gdWEuYXJnKGFwcE5hbWUpOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Vc2VyQWdlbnRRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvVXNlckFnZW50UXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDAwYTE5YTBkZDQ2Yjg4NWFiNGEx
ODk2ODE1MTZjOGUwMGZjZTNiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvVXNlckFnZW50UXQuaApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBVc2VyQWdlbnRRdF9oCisjZGVmaW5lIFVzZXJBZ2VudFF0X2gKKworI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFVz
ZXJBZ2VudFF0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgU3RyaW5nIHN0YW5kYXJkVXNlckFnZW50
KGNvbnN0IFN0cmluZyAmYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KTsKK307CisKK30KKwor
I2VuZGlmIC8vIFVzZXJBZ2VudFF0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCAy
ZTMzMGFjZmZjZWZiNWRiYjZmOWI0MWIzYjJlN2EwNmYxY2UzNTFjLi4wMmRmYWFmZDViMDg4OWMy
ZjE0YjRiMjhkMDIxNGIwZTE1MjA1NTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBA
IC0xMTMsNiArMTEzLDcgQEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAjZW5kaWYgLy8gUV9P
U19XSU4zMgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlVzZXJBZ2VudFF0
LmgiCiAjaW5jbHVkZSAiVXRpbHNRdC5oIgogI2luY2x1ZGUgIldlYkV2ZW50Q29udmVyc2lvbi5o
IgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCkBAIC0zNzUzLDE1OCArMzc1NCw3IEBAIFFX
ZWJQbHVnaW5GYWN0b3J5ICpRV2ViUGFnZTo6cGx1Z2luRmFjdG9yeSgpIGNvbnN0CiAqLwogUVN0
cmluZyBRV2ViUGFnZTo6dXNlckFnZW50Rm9yVXJsKGNvbnN0IFFVcmwmKSBjb25zdAogewotICAg
IC8vIHNwbGl0dGluZyB0aGUgc3RyaW5nIGluIHRocmVlIGFuZCB1c2VyIFFTdHJpbmdCdWlsZGVy
IGlzIGJldHRlciB0aGFuIHVzaW5nIFFTdHJpbmc6OmFyZygpCi0gICAgc3RhdGljIFFTdHJpbmcg
Zmlyc3RQYXJ0OwotICAgIHN0YXRpYyBRU3RyaW5nIHNlY29uZFBhcnQ7Ci0gICAgc3RhdGljIFFT
dHJpbmcgdGhpcmRQYXJ0OwotCi0gICAgaWYgKGZpcnN0UGFydC5pc051bGwoKSB8fCBzZWNvbmRQ
YXJ0LmlzTnVsbCgpIHx8IHRoaXJkUGFydC5pc051bGwoKSkgewotICAgICAgICBRU3RyaW5nIGZp
cnN0UGFydFRlbXA7Ci0gICAgICAgIGZpcnN0UGFydFRlbXAucmVzZXJ2ZSgxNTApOwotICAgICAg
ICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIk1vemlsbGEvNS4wICgiCi0K
LSAgICAvLyBQbGF0Zm9ybQotI2lmZGVmIFFfV1NfTUFDCi0gICAgICAgICJNYWNpbnRvc2g7ICIK
LSNlbGlmIGRlZmluZWQgUV9XU19RV1MKLSAgICAgICAgIlF0RW1iZWRkZWQ7ICIKLSNlbGlmIGRl
ZmluZWQgUV9XU19XSU4KLSAgICAgICAgLy8gTm90aGluZwotI2VsaWYgZGVmaW5lZCBRX1dTX1gx
MQotICAgICAgICAiWDExOyAiCi0jZWxzZQotICAgICAgICAiVW5rbm93bjsgIgotI2VuZGlmCi0g
ICAgKTsKLQotI2lmIGRlZmluZWQoUVRfTk9fT1BFTlNTTCkKLSAgICAgICAgLy8gTm8gU1NMIHN1
cHBvcnQKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJOOyAi
KTsKLSNlbmRpZgotCi0gICAgICAgIC8vIE9wZXJhdGluZyBzeXN0ZW0KLSNpZmRlZiBRX09TX0FJ
WAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkFJWCIpOwot
I2VsaWYgZGVmaW5lZCBRX09TX1dJTjMyCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gd2luZG93
c1ZlcnNpb25Gb3JVQVN0cmluZygpOwotI2VsaWYgZGVmaW5lZCBRX09TX0RBUldJTgotI2lmZGVm
IF9faTM4Nl9fIHx8IF9feDg2XzY0X18KLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5n
Ojpmcm9tTGF0aW4xKCJJbnRlbCBNYWMgT1MgWCIpOwotI2Vsc2UKLSAgICAgICAgZmlyc3RQYXJ0
VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJQUEMgTWFjIE9TIFgiKTsKLSNlbmRpZgotCi0j
ZWxpZiBkZWZpbmVkIFFfT1NfQlNESQotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6
OmZyb21MYXRpbjEoIkJTRCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX0JTRDQKLSAgICAgICAgZmly
c3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJCU0QgRm91ciIpOwotI2VsaWYgZGVm
aW5lZCBRX09TX0NZR1dJTgotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21M
YXRpbjEoIkN5Z3dpbiIpOwotI2VsaWYgZGVmaW5lZCBRX09TX0RHVVgKLSAgICAgICAgZmlyc3RQ
YXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJERy9VWCIpOwotI2VsaWYgZGVmaW5lZCBR
X09TX0RZTklYCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgi
RFlOSVgvcHR4Iik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfRlJFRUJTRAotICAgICAgICBmaXJzdFBh
cnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkZyZWVCU0QiKTsKLSNlbGlmIGRlZmluZWQg
UV9PU19IUFVYCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgi
SFAtVVgiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19IVVJECi0gICAgICAgIGZpcnN0UGFydFRlbXAg
Kz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiR05VIEh1cmQiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19J
UklYCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiU0dJIEly
aXgiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19MSU5VWAotCi0jaWYgZGVmaW5lZChfX3g4Nl82NF9f
KQotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkxpbnV4IHg4
Nl82NCIpOwotI2VsaWYgZGVmaW5lZChfX2kzODZfXykKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCAr
PSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJMaW51eCBpNjg2Iik7Ci0jZWxzZQotICAgICAgICBmaXJz
dFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkxpbnV4Iik7Ci0jZW5kaWYKLQotI2Vs
aWYgZGVmaW5lZCBRX09TX0xZTlgKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpm
cm9tTGF0aW4xKCJMeW54T1MiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19ORVRCU0QKLSAgICAgICAg
Zmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJOZXRCU0QiKTsKLSNlbGlmIGRl
ZmluZWQgUV9PU19PUzIKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0
aW4xKCJPUy8yIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfT1BFTkJTRAotICAgICAgICBmaXJzdFBh
cnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIk9wZW5CU0QiKTsKLSNlbGlmIGRlZmluZWQg
UV9PU19PUzJFTVgKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4x
KCJPUy8yIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfT1NGCi0gICAgICAgIGZpcnN0UGFydFRlbXAg
Kz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiSFAgVHJ1NjQgVU5JWCIpOwotI2VsaWYgZGVmaW5lZCBR
X09TX1FOWDYKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJR
TlggUlRQIFNpeCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX1FOWAotICAgICAgICBmaXJzdFBhcnRU
ZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIlFOWCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX1JF
TElBTlQKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJSZWxp
YW50IFVOSVgiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19TQ08KLSAgICAgICAgZmlyc3RQYXJ0VGVt
cCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJTQ08gT3BlblNlcnZlciIpOwotI2VsaWYgZGVmaW5l
ZCBRX09TX1NPTEFSSVMKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0
aW4xKCJTdW4gU29sYXJpcyIpOwotI2VsaWYgZGVmaW5lZCBRX09TX1VMVFJJWAotICAgICAgICBm
aXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkRFQyBVbHRyaXgiKTsKLSNlbGlm
IGRlZmluZWQgUV9PU19VTklYCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJv
bUxhdGluMSgiVU5JWCBCU0QvU1lTViBzeXN0ZW0iKTsKLSNlbGlmIGRlZmluZWQgUV9PU19VTklY
V0FSRQotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIlVuaXhX
YXJlIFNldmVuLCBPcGVuIFVOSVggRWlnaHQiKTsKLSNlbHNlCi0gICAgICAgIGZpcnN0UGFydFRl
bXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiVW5rbm93biIpOwotI2VuZGlmCi0KLSNpZiBVU0Uo
UVRfTU9CSUxJVFlfU1lTVEVNSU5GTykKLSAgICAgICAgLy8gYWRkaW5nIE1vZGVsIE51bWJlcgot
ICAgICAgICBRdE1vYmlsaXR5OjpRU3lzdGVtRGV2aWNlSW5mbyBzeXN0ZW1EZXZpY2VJbmZvOwot
Ci0gICAgICAgIFFTdHJpbmcgbW9kZWwgPSBzeXN0ZW1EZXZpY2VJbmZvLm1vZGVsKCk7Ci0gICAg
ICAgIGlmICghbW9kZWwuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAoIWZpcnN0UGFydFRl
bXAuZW5kc1dpdGgoIjsgIikpCi0gICAgICAgICAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3Ry
aW5nOjpmcm9tTGF0aW4xKCI7ICIpOwotICAgICAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBzeXN0
ZW1EZXZpY2VJbmZvLm1vZGVsKCk7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBmaXJzdFBh
cnRUZW1wLnNxdWVlemUoKTsKLSAgICAgICAgZmlyc3RQYXJ0ID0gZmlyc3RQYXJ0VGVtcDsKLQot
ICAgICAgICBRU3RyaW5nIHNlY29uZFBhcnRUZW1wOwotICAgICAgICBzZWNvbmRQYXJ0VGVtcC5y
ZXNlcnZlKDE1MCk7Ci0gICAgICAgIHNlY29uZFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRp
bjEoIikgIik7Ci0KLSAgICAgICAgLy8gd2Via2l0L3F0IHZlcnNpb24KLSAgICAgICAgc2Vjb25k
UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiQXBwbGVXZWJLaXQvIik7Ci0gICAgICAg
IHNlY29uZFBhcnRUZW1wICs9IHFXZWJLaXRWZXJzaW9uKCk7Ci0gICAgICAgIHNlY29uZFBhcnRU
ZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIiAoS0hUTUwsIGxpa2UgR2Vja28pICIpOwotCi0K
LSAgICAgICAgLy8gQXBwbGljYXRpb24gbmFtZSBzcGxpdCB0aGUgdGhpcmQgcGFydAotICAgICAg
ICBzZWNvbmRQYXJ0VGVtcC5zcXVlZXplKCk7Ci0gICAgICAgIHNlY29uZFBhcnQgPSBzZWNvbmRQ
YXJ0VGVtcDsKLQotICAgICAgICBRU3RyaW5nIHRoaXJkUGFydFRlbXA7Ci0gICAgICAgIHRoaXJk
UGFydFRlbXAucmVzZXJ2ZSgxNTApOwotICAgICAgICB0aGlyZFBhcnRUZW1wICs9IFFMYXRpbjFT
dHJpbmcoIiBTYWZhcmkvIik7Ci0gICAgICAgIHRoaXJkUGFydFRlbXAgKz0gcVdlYktpdFZlcnNp
b24oKTsKLSAgICAgICAgdGhpcmRQYXJ0VGVtcC5zcXVlZXplKCk7Ci0gICAgICAgIHRoaXJkUGFy
dCA9IHRoaXJkUGFydFRlbXA7Ci0gICAgICAgIFFfQVNTRVJUKCFmaXJzdFBhcnQuaXNOdWxsKCkp
OwotICAgICAgICBRX0FTU0VSVCghc2Vjb25kUGFydC5pc051bGwoKSk7Ci0gICAgICAgIFFfQVNT
RVJUKCF0aGlyZFBhcnQuaXNOdWxsKCkpOwotICAgIH0KLQotICAgIC8vIEFwcGxpY2F0aW9uIG5h
bWUvdmVyc2lvbgotICAgIFFTdHJpbmcgYXBwTmFtZSA9IFFDb3JlQXBwbGljYXRpb246OmFwcGxp
Y2F0aW9uTmFtZSgpOwotICAgIGlmICghYXBwTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgUVN0
cmluZyBhcHBWZXIgPSBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvblZlcnNpb24oKTsKLSAg
ICAgICAgaWYgKCFhcHBWZXIuaXNFbXB0eSgpKQotICAgICAgICAgICAgYXBwTmFtZS5hcHBlbmQo
UUxhdGluMUNoYXIoJy8nKSArIGFwcFZlcik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUXQg
dmVyc2lvbgotICAgICAgICBhcHBOYW1lID0gUVN0cmluZzo6ZnJvbUxhdGluMSgiUXQvIikgKyBR
U3RyaW5nOjpmcm9tTGF0aW4xKHFWZXJzaW9uKCkpOwotICAgIH0KLQotICAgIHJldHVybiBmaXJz
dFBhcnQgKyBzZWNvbmRQYXJ0ICsgYXBwTmFtZSArIHRoaXJkUGFydDsKKyAgICByZXR1cm4gVXNl
ckFnZW50UXQ6OnN0YW5kYXJkVXNlckFnZW50KCIiKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcAppbmRleCBhZTNjNGFhYjY3YWQxMzM4
YzU3ZTEwYWU3YzlmMGI2ZGU0MzQyZmNjLi44M2FkNjQwNzMyZWFjY2RjY2M4ZjE0ZTY1OTM0NTIy
ZTgyNmEzZjI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUGFn
ZVByb3h5UXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJv
eHlRdC5jcHAKQEAgLTI5LDkgKzI5LDEwIEBACiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2lu
Y2x1ZGUgIlF0TmV0d29ya1JlcGx5RGF0YS5oIgogI2luY2x1ZGUgIlF0UGFnZUNsaWVudC5oIgot
I2luY2x1ZGUgInFxdWlja25ldHdvcmtyZXBseV9wLmgiCisjaW5jbHVkZSAiVXNlckFnZW50UXQu
aCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJv
eHkuaCIKKyNpbmNsdWRlICJxcXVpY2tuZXR3b3JrcmVwbHlfcC5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCkBAIC00
MSw4ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBTdHJpbmcgV2ViUGFnZVByb3h5Ojpz
dGFuZGFyZFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2Vu
dCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIGhhcmQgY29kZWQuCi0gICAg
cmV0dXJuICJNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF82KSBBcHBs
ZVdlYktpdC81MzEuNCAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wLjMgU2FmYXJpLzUz
MS40IjsKKyAgICByZXR1cm4gVXNlckFnZW50UXQ6OnN0YW5kYXJkVXNlckFnZW50KGFwcGxpY2F0
aW9uTmFtZUZvclVzZXJBZ2VudCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50
U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFN0cmluZz4mKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDAw
ODBkN2YwMzU4YTY5MjViZGRhODJiNDIxODJkOWE5ZGExZTgxY2MuLmExZjEyYTAzMGViZjYwODQ2
YzIwYTI5ZjhmOWI1MWZmNGM4YTAzZmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNS0y
MyAgTGF1cm8gTmV0byAgPGxhdXJvLm5ldG9Ab3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRd
W1dLMl0gZmFzdC9mb3Jtcy9hY2Nlc3Mta2V5LWZvci1hbGwtZWxlbWVudHMuaHRtbCBmYWlscwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM5MTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2Nlc3Mta2V5
IHRlc3RzIHdlcmUgZmFpbGluZyBkdWUgdG8gaGFyZGNvZGVkIE1hYyBPUyBYIGluIHRoZQorICAg
ICAgICBRdCBXSzIgdXNlciBhZ2VudCBzdHJpbmcuIFRoaXMgY29tbWl0IG1vdmVzIHRoZSBXSzEg
aW1wbGVtZW50YXRpb24KKyAgICAgICAgdG8gYSBzaGFyZWQgb25lIHRvIGJlIHVzZWQgYnkgYm90
aCB2ZXJzaW9ucy4KKworICAgICAgICBVbnNraXAgbm93IHBhc3NpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS9xdC01LjAtd2syL1NraXBwZWQ6CisKIDIwMTItMDUtMjMgIFN0ZXZlIEJs
b2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAgICAgIEFkZCBjcmFzaGluZyBleHBl
Y3RhdGlvbiBmb3IgbWVkaWEvdmlkZW8tc3JjLWludmFsaWQtcmVtb3ZlLmh0bWwKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LTUuMC13azIvU2tpcHBlZCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0LTUuMC13azIvU2tpcHBlZAppbmRleCBlZmZjOTdiMThmMTdlY2YzZDVmOTI1
YWQyYTU5NzljYTkyNmI4ZWIxLi5jYWM3MDM5MTc0ZTZkNjIxOWU0Mjg5OGEwNTJhMTg4ZTkxZTQy
Y2FhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC01LjAtd2syL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtNS4wLXdrMi9Ta2lwcGVkCkBAIC00OCw3ICs0
OCw2IEBAIGVkaXRpbmcvc2VsZWN0aW9uL3NlbGVjdC1vdXQtb2YtZWRpdGFibGUuaHRtbAogZmFz
dC9kb20vdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCiBmYXN0L2R5bmFtaWMvbGF5ZXIt
aGl0LXRlc3QtY3Jhc2guaHRtbAogZmFzdC9lbmNvZGluZy9tYWlsdG8tYWx3YXlzLXV0Zi04Lmh0
bWwKLWZhc3QvZXZlbnRzL2FjY2Vzcy1rZXktc2VsZi1kZXN0cnVjdC5odG1sCiBmYXN0L2V2ZW50
cy9jb250ZXh0LW5vLWRlc2VsZWN0Lmh0bWwKIGZhc3QvZXZlbnRzL2NvbnRleHQtb25tb3VzZWRv
d24tZXZlbnQuaHRtbAogZmFzdC9ldmVudHMvY29udGV4dG1lbnUtc2Nyb2xsZWQtcGFnZS13aXRo
LWZyYW1lLmh0bWwKQEAgLTY0LDEyICs2Myw5IEBAIGZhc3QvZXZlbnRzL3Njcm9sbC1pbi1zY2Fs
ZWQtcGFnZS13aXRoLW92ZXJmbG93LWhpZGRlbi5odG1sCiBmYXN0L2V2ZW50cy9zZWxlY3RzdGFy
dC1wcmV2ZW50LXNlbGVjdGlvbi1vbi1yaWdodC1jbGljay5odG1sCiBmYXN0L2V2ZW50cy93aGVl
bGV2ZW50LWluLWhvcml6b250YWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCiBmYXN0L2V2ZW50cy93
aGVlbGV2ZW50LWluLXZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAotZmFzdC9mb3Jtcy9h
Y2Nlc3Mta2V5Lmh0bWwKIGZhc3QvZm9ybXMvZm9jdXMtY2hhbmdlLW9uLWtleXByZXNzLmh0bWwK
LWZhc3QvZm9ybXMvZm9jdXMtc2VsZWN0aW9uLXRleHRhcmVhLmh0bWwKIGZhc3QvZm9ybXMvaW50
ZXJhY3RpdmUtdmFsaWRhdGlvbi1hdHRhY2gtYXNzZXJ0aW9uLmh0bWwKIGZhc3QvZm9ybXMvbGVn
ZW5kLWFjY2Vzcy1rZXkuaHRtbAotZmFzdC9mb3Jtcy9zZWxlY3QtYWNjZXNza2V5Lmh0bWwKIGZh
c3QvbG9hZGVyL3BvbGljeS1kZWxlZ2F0ZS1hY3Rpb24taGl0LXRlc3Qtem9vbWVkLmh0bWwKIAog
c3ZnL2N1c3RvbS91c2UtZXZlbnRzLWNyYXNoLnN2ZwpAQCAtMjAxLDEwICsxOTcsNiBAQCBzdmcv
YXMtb2JqZWN0L3N2Zy1lbWJlZGRlZC1pbi1odG1sLWluLWlmcmFtZS5odG1sCiAjIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MDkzNQogZmFzdC90cmFuc2Zvcm1zL3Nj
cm9sbEludG9WaWV3LXRyYW5zZm9ybWVkLmh0bWwKIAotIyBbUXRdW1dLMl0gZmFzdC9mb3Jtcy9h
Y2Nlc3Mta2V5LWZvci1hbGwtZWxlbWVudHMuaHRtbCBmYWlscwotIyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM5MTcKLWZhc3QvZm9ybXMvYWNjZXNzLWtleS1mb3It
YWxsLWVsZW1lbnRzLmh0bWwKLQogIyBbUXRdW1dLMl0gY3NzMy91bmljb2RlLWJpZGktaXNvbGF0
ZS1haGFyb24tZmFpbGluZy5odG1sIGZhaWxzCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NDUwNQogY3NzMy91bmljb2RlLWJpZGktaXNvbGF0ZS1haGFyb24tZmFp
bGluZy5odG1sCkBAIC0yMjAsNyArMjEyLDYgQEAgc3ZnL2N1c3RvbS9nZXRzY3JlZW5jdG0taW4t
c2Nyb2xsYWJsZS1kaXYtYXJlYS54aHRtbAogIyBGYWlsaW5nIHRlc3RzIG9uIHF0LXdrMiBhZnRl
ciB1bnNraXBwaW5nIHF0LTUuMC9Ta2lwcGVkIHRlc3RzLCBuZWVkIG1vcmUgaW52ZXN0aWdhdGlv
bgogZWRpdGluZy9zZWxlY3Rpb24vY2xpY2staW4tbWFyZ2lucy1pbnNpZGUtZWRpdGFibGUtZGl2
Lmh0bWwKIGZhc3QvYmxvY2svYmFzaWMvMDIwLmh0bWwKLWZhc3QvZG9tL2FjY2Vzcy1rZXktaWZy
YW1lLmh0bWwKIGZhc3QvaGlzdG9yeS92aXNpdGVkLWxpbmstYmFja2dyb3VuZC1jb2xvci5odG1s
CiBmYXN0L2xheWVycy9sYXllci12aXNpYmlsaXR5LXN1YmxheWVyLmh0bWwKIGZhc3QvbGF5ZXJz
L2xheWVyLXZpc2liaWxpdHkuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>143652</attachid>
            <date>2012-05-23 14:25:43 -0700</date>
            <delta_ts>2012-09-13 07:28:51 -0700</delta_ts>
            <desc>Add shared user agent implementation for Qt. Fixed copyright.</desc>
            <filename>bug-73917-20120523182543.patch</filename>
            <type>text/plain</type>
            <size>21745</size>
            <attacher name="Lauro Moura Maranhao Neto">lauro.neto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE4MjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE5NTEwZDA0ODIyMmFi
MmVhOGM5NjhhMjg5OWIxMmI4YTFlNmU0Ni4uZmQwNDFjOTBlMzJmMTI2OTkxZmY0NzYwN2NjMTRj
NTBlZTM2M2FmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA1LTIzICBMYXVy
byBOZXRvICA8bGF1cm8ubmV0b0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBm
YXN0L2Zvcm1zL2FjY2Vzcy1rZXktZm9yLWFsbC1lbGVtZW50cy5odG1sIGZhaWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzkxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2Vzcy1rZXkgdGVzdHMg
d2VyZSBmYWlsaW5nIGR1ZSB0byBoYXJkY29kZWQgTWFjIE9TIFggaW4gdGhlCisgICAgICAgIFF0
IFdLMiB1c2VyIGFnZW50IHN0cmluZy4gVGhpcyBjb21taXQgbW92ZXMgdGhlIFdLMSBpbXBsZW1l
bnRhdGlvbgorICAgICAgICB0byBhIHNoYXJlZCBvbmUgdG8gYmUgdXNlZCBieSBib3RoIHZlcnNp
b25zLgorCisgICAgICAgIEFkZHMgdGhlIHNoYXJlZCB1c2VyIGFnZW50IGltcGxlbWVudGF0aW9u
LgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Vc2VyQWdl
bnRRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyQWdlbnRRdDo6c3RhbmRhcmRVc2VyQWdlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Vz
ZXJBZ2VudFF0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChVc2VyQWdl
bnRRdCk6CisKIDIwMTItMDUtMjMgIEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIEltcGxlbWVudCBET000IERPTUVycm9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDQ2
OWRiZWZhODExMWY0NTRiZmZjNzgyMzc5NGFhNmQ2YjRiYzAzMTYuLmViNDIzZDYyZmRhMGUyYTIz
NzY5YWJlMWI3ODM1NWIyNjM3MDg5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTItMDUtMjMgIExhdXJvIE5ldG8gIDxsYXVyby5uZXRvQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgW1F0XVtXSzJdIGZhc3QvZm9ybXMvYWNjZXNzLWtleS1mb3ItYWxsLWVsZW1lbnRzLmh0
bWwgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczOTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWNjZXNzLWtleSB0ZXN0cyB3ZXJlIGZhaWxpbmcgZHVlIHRvIGhhcmRjb2RlZCBNYWMgT1MgWCBp
biB0aGUKKyAgICAgICAgUXQgV0syIHVzZXIgYWdlbnQgc3RyaW5nLiBUaGlzIGNvbW1pdCBtb3Zl
cyB0aGUgV0sxIGltcGxlbWVudGF0aW9uCisgICAgICAgIHRvIGEgc2hhcmVkIG9uZSB0byBiZSB1
c2VkIGJ5IGJvdGggdmVyc2lvbnMuCisKKyAgICAgICAgQ2hhbmdlIFFXZWJQYWdlIHRvIHVzZSB0
aGUgc2hhcmVkIHVzZXIgYWdlbnQgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBBcGkvcXdl
YnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybCk6CisKIDIwMTIt
MDUtMjEgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3Bl
bmJvc3NhLm9yZz4KIAogICAgICAgICBNb3ZlIHNldEVkaXRpbmdCZWhhdmlvcigpIGZyb20gbGF5
b3V0VGVzdENvbnRyb2xsZXIgdG8gd2luZG93LmludGVybmFscwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDRlODE5
NzNhYzNhYTFjZjhlODJlZWE2MmQzZDkyNTRlOTZjY2IxZDcuLjlmYmM0MjY4NDgxM2M5YWE5OTJk
OThhZDc2YWEyZjEwYjUzODkzYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0w
NS0yMyAgTGF1cm8gTmV0byAgPGxhdXJvLm5ldG9Ab3BlbmJvc3NhLm9yZz4KKworICAgICAgICBb
UXRdW1dLMl0gZmFzdC9mb3Jtcy9hY2Nlc3Mta2V5LWZvci1hbGwtZWxlbWVudHMuaHRtbCBmYWls
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM5MTcK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2Nlc3Mt
a2V5IHRlc3RzIHdlcmUgZmFpbGluZyBkdWUgdG8gaGFyZGNvZGVkIE1hYyBPUyBYIGluIHRoZQor
ICAgICAgICBRdCBXSzIgdXNlciBhZ2VudCBzdHJpbmcuIFRoaXMgY29tbWl0IG1vdmVzIHRoZSBX
SzEgaW1wbGVtZW50YXRpb24KKyAgICAgICAgdG8gYSBzaGFyZWQgb25lIHRvIGJlIHVzZWQgYnkg
Ym90aCB2ZXJzaW9ucy4KKworICAgICAgICBVc2UgdGhlIHNoYXJlZCBpbXBsZW1lbnRhdGlvbiBp
bnN0ZWFkIG9mIGhhcmRjb2RpbmcgdGhlIHVzZXIgYWdlbnQuIEFsc28KKyAgICAgICAgY2hhbmdl
ZCBoZWFkZXIgaW5jbHVkZSBvcmRlciB0byBmb2xsb3cgdGhlIHByb3BlciBzdHlsZS4KKworICAg
ICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6c3RhbmRhcmRVc2VyQWdlbnQpOgorCiAyMDEyLTA1LTIzICBEaW51IEph
Y29iICA8ZGludS5qYWNvYkBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXazJdIEFzc2VydGlv
biBmYWlsdXJlIHdoZW4gc2VsZWN0aW5nIGFuIG9wdGlvbiBpbiBzZWxlY3QgbGlzdCB3aXRoIHNp
emUgYXR0cmlidXRlIGdyZWF0ZXIgdGhhbiBvbmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDVhODBhZTFkNjA5
YTMyZjk2OWI4NGMyNzI5NDMxOGUxMTA2MDQ2NDYuLjY4NDllNWI3NWIyM2VmMzk0YWU5YWI2ZWM4
M2VhMWJlMmE0ZWMzOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysr
IGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtMjM2MCw2ICsyMzYwLDcgQEAgSEVBREVS
UyArPSBcCiAgICAgcGxhdGZvcm0vcXQvUVdlYlBhZ2VDbGllbnQuaCBcCiAgICAgcGxhdGZvcm0v
cXQvUmVuZGVyVGhlbWVRdC5oIFwKICAgICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0TW9iaWxl
LmggXAorICAgIHBsYXRmb3JtL3F0L1VzZXJBZ2VudFF0LmggXAogICAgIHBsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmggXAogICAgIHBsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggXAogICAgIHBsYXRm
b3JtL1Njcm9sbGJhci5oIFwKQEAgLTI5MDIsNiArMjkwMyw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IHBsYXRmb3JtL3F0L1J1bkxvb3BRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1NoYXJlZEJ1ZmZl
clF0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvVGhpcmRQYXJ0eUNvb2tpZXNRdC5jcHAgXAorICAg
IHBsYXRmb3JtL3F0L1VzZXJBZ2VudFF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
Rm9udENhY2hlUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q3VzdG9tUGxh
dGZvcm1EYXRhUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HbHlwaFBhZ2VUcmVl
Tm9kZVF0LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Vc2Vy
QWdlbnRRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Vc2VyQWdlbnRRdC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYjM2YzJhNGMxY2Y2ODZjNWJiM2FiZTg2ZjM5NGEyMGE1ZjU0ZWJjNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1VzZXJBZ2VudFF0LmNw
cApAQCAtMCwwICsxLDE4NCBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIw
MTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KKyAgICBDb3B5
cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJVc2VyQWdlbnRRdC5oIgorCisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKworI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2lmIGRlZmluZWQgUV9PU19XSU4zMgorI2lu
Y2x1ZGUgPFdlYkNvcmUvU3lzdGVtSW5mby5oPgorI2VuZGlmIC8vIFFfT1NfV0lOMzIKKyNpbmNs
dWRlIDxXZWJLaXRWZXJzaW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyohCisgICAg
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIHVzZXIgYWdlbnQgZm9yIEhUVFAgcmVxdWVz
dHMgaXMgbmVlZGVkLiAKKworICAgIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyB0aGUgZm9s
bG93aW5nIHZhbHVlOgorCisgICAgIk1vemlsbGEvNS4wICglUGxhdGZvcm0lJVNlY3VyaXR5JSVT
dWJwbGF0Zm9ybSUpIEFwcGxlV2ViS2l0LyVXZWJLaXRWZXJzaW9uJSAoS0hUTUwsIGxpa2UgR2Vj
a28pICVBcHBWZXJzaW9uIFNhZmFyaS8lV2ViS2l0VmVyc2lvbiUiCisKKyAgICBJbiB0aGlzIHN0
cmluZyB0aGUgZm9sbG93aW5nIHZhbHVlcyBhcmUgcmVwbGFjZWQgdGhlIGZpcnN0IHRpbWUgdGhl
IGZ1bmN0aW9uIGlzIGNhbGxlZDoKKyAgICBcbGlzdAorICAgIFxsaSAlUGxhdGZvcm0lIGV4cGFu
ZHMgdG8gdGhlIHdpbmRvd2luZyBzeXN0ZW0gZm9sbG93ZWQgYnkgIjsgIiBpZiBpdCBpcyBub3Qg
V2luZG93cyAoZS5nLiAiWDExOyAiKS4KKyAgICBcbGkgJVNlY3VyaXR5JSBleHBhbmRzIHRvICJO
OyAiIGlmIFNTTCBpcyBkaXNhYmxlZC4KKyAgICBcbGkgJVN1YnBsYXRmb3JtJSBleHBhbmRzIHRv
IHRoZSBvcGVyYXRpbmcgc3lzdGVtIHZlcnNpb24gKGUuZy4gIldpbmRvd3MgTlQgNi4xIiBvciAi
SW50ZWwgTWFjIE9TIFggMTAuNSIpLgorICAgIFxsaSAlV2ViS2l0VmVyc2lvbiUgaXMgdGhlIHZl
cnNpb24gb2YgV2ViS2l0IHRoZSBhcHBsaWNhdGlvbiB3YXMgY29tcGlsZWQgYWdhaW5zdC4KKyAg
ICAvZW5kbGlzdAorCisgICAgVGhlIGZvbGxvd2luZyB2YWx1ZSBpcyByZXBsYWNlZCBlYWNoIHRp
bWUgdGhlIGZ1bmNpdG9uIGlzIGNhbGxlZAorICAgIFxsaXN0CisgICAgXGxpICVBcHBWZXJzaW9u
JSBleHBhbmRzIHRvIFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uTmFtZSgpL1FDb3JlQXBw
bGljYXRpb246OmFwcGxpY2F0aW9uVmVyc2lvbigpIGlmIHRoZXkncmUgc2V0OyBvdGhlcndpc2Ug
ZGVmYXVsdGluZyB0byBRdCBhbmQgdGhlIGN1cnJlbnQgUXQgdmVyc2lvbi4KKyAgICBcZW5kbGlz
dAorKi8KK1N0cmluZyBVc2VyQWdlbnRRdDo6c3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5n
ICZhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpCit7CisgICAgc3RhdGljIFFTdHJpbmcgdWE7
CisKKyAgICBpZiAodWEuaXNOdWxsKCkpIHsKKworICAgICAgICB1YSA9IFFMYXRpbjFTdHJpbmco
Ik1vemlsbGEvNS4wICglMSUyJTMpIEFwcGxlV2ViS2l0LyU0IChLSFRNTCwgbGlrZSBHZWNrbykg
JTk5IFNhZmFyaS8lNSIpOworCisgICAgICAgIC8vIFBsYXRmb3JtLgorICAgICAgICB1YSA9IHVh
LmFyZyhRTGF0aW4xU3RyaW5nKAorI2lmZGVmIFFfV1NfTUFDCisgICAgICAgICAgICAiTWFjaW50
b3NoOyAiCisjZWxpZiBkZWZpbmVkIFFfV1NfUVdTCisgICAgICAgICAgICAiUXRFbWJlZGRlZDsg
IgorI2VsaWYgZGVmaW5lZCBRX1dTX1dJTgorICAgICAgICAgICAgLy8gTm90aGluZy4KKyNlbGlm
IGRlZmluZWQgUV9XU19YMTEKKyAgICAgICAgICAgICJYMTE7ICIKKyNlbHNlCisgICAgICAgICAg
ICAiVW5rbm93bjsgIgorI2VuZGlmCisgICAgICAgICkpOworCisgICAgICAgIC8vIFNlY3VyaXR5
IHN0cmVuZ3RoLgorICAgICAgICBRU3RyaW5nIHNlY3VyaXR5U3RyZW5ndGg7CisjaWYgZGVmaW5l
ZChRVF9OT19PUEVOU1NMKQorICAgICAgICBzZWN1cml0eVN0cmVuZ3RoID0gUUxhdGluMVN0cmlu
ZygiTjsgIik7CisjZW5kaWYKKyAgICAgICAgdWEgPSB1YS5hcmcoc2VjdXJpdHlTdHJlbmd0aCk7
CisKKyAgICAgICAgLy8gT3BlcmF0aW5nIHN5c3RlbS4KKyAgICAgICAgdWEgPSB1YS5hcmcoUUxh
dGluMVN0cmluZygKKyNpZmRlZiBRX09TX0FJWAorICAgICAgICAgICAgIkFJWCIKKyNlbGlmIGRl
ZmluZWQgUV9PU19XSU4zMgorICAgICAgICAgICAgd2luZG93c1ZlcnNpb25Gb3JVQVN0cmluZygp
CisjZWxpZiBkZWZpbmVkIFFfT1NfREFSV0lOCisjaWZkZWYgX19pMzg2X18gfHwgX194ODZfNjRf
XworICAgICAgICAgICAgIkludGVsIE1hYyBPUyBYIgorI2Vsc2UKKyAgICAgICAgICAgICJQUEMg
TWFjIE9TIFgiCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZCBRX09TX0JTREkKKyAgICAgICAgICAg
ICJCU0QiCisjZWxpZiBkZWZpbmVkIFFfT1NfQlNENAorICAgICAgICAgICAgIkJTRCBGb3VyIgor
I2VsaWYgZGVmaW5lZCBRX09TX0NZR1dJTgorICAgICAgICAgICAgIkN5Z3dpbiIKKyNlbGlmIGRl
ZmluZWQgUV9PU19ER1VYCisgICAgICAgICAgICAiREcvVVgiCisjZWxpZiBkZWZpbmVkIFFfT1Nf
RFlOSVgKKyAgICAgICAgICAgICJEWU5JWC9wdHgiCisjZWxpZiBkZWZpbmVkIFFfT1NfRlJFRUJT
RAorICAgICAgICAgICAgIkZyZWVCU0QiCisjZWxpZiBkZWZpbmVkIFFfT1NfSFBVWAorICAgICAg
ICAgICAgIkhQLVVYIgorI2VsaWYgZGVmaW5lZCBRX09TX0hVUkQKKyAgICAgICAgICAgICJHTlUg
SHVyZCIKKyNlbGlmIGRlZmluZWQgUV9PU19JUklYCisgICAgICAgICAgICAiU0dJIElyaXgiCisj
ZWxpZiBkZWZpbmVkIFFfT1NfTElOVVgKKworI2lmIGRlZmluZWQoX194ODZfNjRfXykKKyAgICAg
ICAgICAgICJMaW51eCB4ODZfNjQiCisjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICAgICAg
ICAgIkxpbnV4IGk2ODYiCisjZWxzZQorICAgICAgICAgICAgIkxpbnV4IgorI2VuZGlmCisKKyNl
bGlmIGRlZmluZWQgUV9PU19MWU5YCisgICAgICAgICAgICAiTHlueE9TIgorI2VsaWYgZGVmaW5l
ZCBRX09TX05FVEJTRAorICAgICAgICAgICAgIk5ldEJTRCIKKyNlbGlmIGRlZmluZWQgUV9PU19P
UzIKKyAgICAgICAgICAgICJPUy8yIgorI2VsaWYgZGVmaW5lZCBRX09TX09QRU5CU0QKKyAgICAg
ICAgICAgICJPcGVuQlNEIgorI2VsaWYgZGVmaW5lZCBRX09TX09TMkVNWAorICAgICAgICAgICAg
Ik9TLzIiCisjZWxpZiBkZWZpbmVkIFFfT1NfT1NGCisgICAgICAgICAgICAiSFAgVHJ1NjQgVU5J
WCIKKyNlbGlmIGRlZmluZWQgUV9PU19RTlg2CisgICAgICAgICAgICAiUU5YIFJUUCBTaXgiCisj
ZWxpZiBkZWZpbmVkIFFfT1NfUU5YCisgICAgICAgICAgICAiUU5YIgorI2VsaWYgZGVmaW5lZCBR
X09TX1JFTElBTlQKKyAgICAgICAgICAgICJSZWxpYW50IFVOSVgiCisjZWxpZiBkZWZpbmVkIFFf
T1NfU0NPCisgICAgICAgICAgICAiU0NPIE9wZW5TZXJ2ZXIiCisjZWxpZiBkZWZpbmVkIFFfT1Nf
U09MQVJJUworICAgICAgICAgICAgIlN1biBTb2xhcmlzIgorI2VsaWYgZGVmaW5lZCBRX09TX1VM
VFJJWAorICAgICAgICAgICAgIkRFQyBVbHRyaXgiCisjZWxpZiBkZWZpbmVkIFFfT1NfVU5JWAor
ICAgICAgICAgICAgIlVOSVggQlNEL1NZU1Ygc3lzdGVtIgorI2VsaWYgZGVmaW5lZCBRX09TX1VO
SVhXQVJFCisgICAgICAgICAgICAiVW5peFdhcmUgU2V2ZW4sIE9wZW4gVU5JWCBFaWdodCIKKyNl
bHNlCisgICAgICAgICAgICAiVW5rbm93biIKKyNlbmRpZgorICAgICAgICApKTsKKworICAgICAg
ICAvLyBXZWJLaXQgdmVyc2lvbi4KKyAgICAgICAgLy8gVE9ETzogdXNpbmcgbWFjcm9zIGZyb20g
V2ViS2l0MSB1bnRpbCBXZWJLaXQyIFF0IHBvcnQgdmVyc2lvbmluZyBpcyBzb3J0ZWQgb3V0Lgor
ICAgICAgICBRU3RyaW5nIHZlcnNpb24gPSBRU3RyaW5nKFFMYXRpbjFTdHJpbmcoIiUxLiUyKyIp
KS5hcmcoUVN0cmluZzo6bnVtYmVyKFdFQktJVF9NQUpPUl9WRVJTSU9OKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJp
bmc6Om51bWJlcihXRUJLSVRfTUlOT1JfVkVSU0lPTikpOworICAgICAgICB1YSA9IHVhLmFyZyh2
ZXJzaW9uLCB2ZXJzaW9uKTsKKyAgICB9CisKKyAgICBRU3RyaW5nIGFwcE5hbWU7CisgICAgaWYg
KGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudC5pc0VtcHR5KCkpCisgICAgICAgIGFwcE5hbWUg
PSBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbk5hbWUoKTsKKyAgICBlbHNlCisgICAgICAg
IGFwcE5hbWUgPSBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ7CisKKyAgICBpZiAoIWFwcE5h
bWUuaXNFbXB0eSgpKSB7CisgICAgICAgIFFTdHJpbmcgYXBwVmVyID0gUUNvcmVBcHBsaWNhdGlv
bjo6YXBwbGljYXRpb25WZXJzaW9uKCk7CisgICAgICAgIGlmICghYXBwVmVyLmlzRW1wdHkoKSkK
KyAgICAgICAgICAgIGFwcE5hbWUuYXBwZW5kKFFMYXRpbjFDaGFyKCcvJykgKyBhcHBWZXIpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFF0IHZlcnNpb24uCisgICAgICAgIGFwcE5hbWUgPSBR
TGF0aW4xU3RyaW5nKCJRdC8iKSArIFFMYXRpbjFTdHJpbmcocVZlcnNpb24oKSk7CisgICAgfQor
CisgICAgcmV0dXJuIHVhLmFyZyhhcHBOYW1lKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vcXQvVXNlckFnZW50UXQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1VzZXJBZ2VudFF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDIzNmNjNjhhYzE3M2Q3ZjMwNzcxZTRi
OGZiNWQ2N2Q5YTk1ODVlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1VzZXJBZ2VudFF0LmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAgICBDb3B5cmlnaHQg
KEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2Us
IG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAg
ICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0
aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUg
dG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8K
KyNpZm5kZWYgVXNlckFnZW50UXRfaAorI2RlZmluZSBVc2VyQWdlbnRRdF9oCisKKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBV
c2VyQWdlbnRRdCB7CitwdWJsaWM6CisgICAgc3RhdGljIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcgJmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCk7Cit9OworCit9CisK
KyNlbmRpZiAvLyBVc2VyQWdlbnRRdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0Fw
aS9xd2VicGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKaW5kZXgg
MmUzMzBhY2ZmY2VmYjVkYmI2ZjliNDFiM2IyZTdhMDZmMWNlMzUxYy4uYzQ5OGE0ZWIxN2JmNWFl
MzM0YjdhZGE2MWU2Mjk1YzJiMTkyODk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcApA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSwgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMg
SW5jLgogICAgIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCiAKQEAgLTExMyw2ICsxMTMs
NyBAQAogI2luY2x1ZGUgIlN5c3RlbUluZm8uaCIKICNlbmRpZiAvLyBRX09TX1dJTjMyCiAjaW5j
bHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiVXNlckFnZW50UXQuaCIKICNpbmNsdWRl
ICJVdGlsc1F0LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnRDb252ZXJzaW9uLmgiCiAjaW5jbHVkZSAi
V2luZG93RmVhdHVyZXMuaCIKQEAgLTM3NTMsMTU4ICszNzU0LDcgQEAgUVdlYlBsdWdpbkZhY3Rv
cnkgKlFXZWJQYWdlOjpwbHVnaW5GYWN0b3J5KCkgY29uc3QKICovCiBRU3RyaW5nIFFXZWJQYWdl
Ojp1c2VyQWdlbnRGb3JVcmwoY29uc3QgUVVybCYpIGNvbnN0CiB7Ci0gICAgLy8gc3BsaXR0aW5n
IHRoZSBzdHJpbmcgaW4gdGhyZWUgYW5kIHVzZXIgUVN0cmluZ0J1aWxkZXIgaXMgYmV0dGVyIHRo
YW4gdXNpbmcgUVN0cmluZzo6YXJnKCkKLSAgICBzdGF0aWMgUVN0cmluZyBmaXJzdFBhcnQ7Ci0g
ICAgc3RhdGljIFFTdHJpbmcgc2Vjb25kUGFydDsKLSAgICBzdGF0aWMgUVN0cmluZyB0aGlyZFBh
cnQ7Ci0KLSAgICBpZiAoZmlyc3RQYXJ0LmlzTnVsbCgpIHx8IHNlY29uZFBhcnQuaXNOdWxsKCkg
fHwgdGhpcmRQYXJ0LmlzTnVsbCgpKSB7Ci0gICAgICAgIFFTdHJpbmcgZmlyc3RQYXJ0VGVtcDsK
LSAgICAgICAgZmlyc3RQYXJ0VGVtcC5yZXNlcnZlKDE1MCk7Ci0gICAgICAgIGZpcnN0UGFydFRl
bXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiTW96aWxsYS81LjAgKCIKLQotICAgIC8vIFBsYXRm
b3JtCi0jaWZkZWYgUV9XU19NQUMKLSAgICAgICAgIk1hY2ludG9zaDsgIgotI2VsaWYgZGVmaW5l
ZCBRX1dTX1FXUwotICAgICAgICAiUXRFbWJlZGRlZDsgIgotI2VsaWYgZGVmaW5lZCBRX1dTX1dJ
TgotICAgICAgICAvLyBOb3RoaW5nCi0jZWxpZiBkZWZpbmVkIFFfV1NfWDExCi0gICAgICAgICJY
MTE7ICIKLSNlbHNlCi0gICAgICAgICJVbmtub3duOyAiCi0jZW5kaWYKLSAgICApOwotCi0jaWYg
ZGVmaW5lZChRVF9OT19PUEVOU1NMKQotICAgICAgICAvLyBObyBTU0wgc3VwcG9ydAotICAgICAg
ICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIk47ICIpOwotI2VuZGlmCi0K
LSAgICAgICAgLy8gT3BlcmF0aW5nIHN5c3RlbQotI2lmZGVmIFFfT1NfQUlYCi0gICAgICAgIGZp
cnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiQUlYIik7Ci0jZWxpZiBkZWZpbmVk
IFFfT1NfV0lOMzIKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSB3aW5kb3dzVmVyc2lvbkZvclVB
U3RyaW5nKCk7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfREFSV0lOCi0jaWZkZWYgX19pMzg2X18gfHwg
X194ODZfNjRfXwotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEo
IkludGVsIE1hYyBPUyBYIik7Ci0jZWxzZQotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJp
bmc6OmZyb21MYXRpbjEoIlBQQyBNYWMgT1MgWCIpOwotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQg
UV9PU19CU0RJCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgi
QlNEIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfQlNENAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9
IFFTdHJpbmc6OmZyb21MYXRpbjEoIkJTRCBGb3VyIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfQ1lH
V0lOCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiQ3lnd2lu
Iik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfREdVWAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFT
dHJpbmc6OmZyb21MYXRpbjEoIkRHL1VYIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfRFlOSVgKLSAg
ICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJEWU5JWC9wdHgiKTsK
LSNlbGlmIGRlZmluZWQgUV9PU19GUkVFQlNECi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0
cmluZzo6ZnJvbUxhdGluMSgiRnJlZUJTRCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX0hQVVgKLSAg
ICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJIUC1VWCIpOwotI2Vs
aWYgZGVmaW5lZCBRX09TX0hVUkQKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpm
cm9tTGF0aW4xKCJHTlUgSHVyZCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX0lSSVgKLSAgICAgICAg
Zmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJTR0kgSXJpeCIpOwotI2VsaWYg
ZGVmaW5lZCBRX09TX0xJTlVYCi0KLSNpZiBkZWZpbmVkKF9feDg2XzY0X18pCi0gICAgICAgIGZp
cnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiTGludXggeDg2XzY0Iik7Ci0jZWxp
ZiBkZWZpbmVkKF9faTM4Nl9fKQotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZy
b21MYXRpbjEoIkxpbnV4IGk2ODYiKTsKLSNlbHNlCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0g
UVN0cmluZzo6ZnJvbUxhdGluMSgiTGludXgiKTsKLSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkIFFf
T1NfTFlOWAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkx5
bnhPUyIpOwotI2VsaWYgZGVmaW5lZCBRX09TX05FVEJTRAotICAgICAgICBmaXJzdFBhcnRUZW1w
ICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIk5ldEJTRCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX09T
MgotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIk9TLzIiKTsK
LSNlbGlmIGRlZmluZWQgUV9PU19PUEVOQlNECi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0
cmluZzo6ZnJvbUxhdGluMSgiT3BlbkJTRCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX09TMkVNWAot
ICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIk9TLzIiKTsKLSNl
bGlmIGRlZmluZWQgUV9PU19PU0YKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpm
cm9tTGF0aW4xKCJIUCBUcnU2NCBVTklYIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfUU5YNgotICAg
ICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIlFOWCBSVFAgU2l4Iik7
Ci0jZWxpZiBkZWZpbmVkIFFfT1NfUU5YCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmlu
Zzo6ZnJvbUxhdGluMSgiUU5YIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfUkVMSUFOVAotICAgICAg
ICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIlJlbGlhbnQgVU5JWCIpOwot
I2VsaWYgZGVmaW5lZCBRX09TX1NDTwotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6
OmZyb21MYXRpbjEoIlNDTyBPcGVuU2VydmVyIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfU09MQVJJ
UwotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIlN1biBTb2xh
cmlzIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfVUxUUklYCi0gICAgICAgIGZpcnN0UGFydFRlbXAg
Kz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiREVDIFVsdHJpeCIpOwotI2VsaWYgZGVmaW5lZCBRX09T
X1VOSVgKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJVTklY
IEJTRC9TWVNWIHN5c3RlbSIpOwotI2VsaWYgZGVmaW5lZCBRX09TX1VOSVhXQVJFCi0gICAgICAg
IGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiVW5peFdhcmUgU2V2ZW4sIE9w
ZW4gVU5JWCBFaWdodCIpOwotI2Vsc2UKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5n
Ojpmcm9tTGF0aW4xKCJVbmtub3duIik7Ci0jZW5kaWYKLQotI2lmIFVTRShRVF9NT0JJTElUWV9T
WVNURU1JTkZPKQotICAgICAgICAvLyBhZGRpbmcgTW9kZWwgTnVtYmVyCi0gICAgICAgIFF0TW9i
aWxpdHk6OlFTeXN0ZW1EZXZpY2VJbmZvIHN5c3RlbURldmljZUluZm87Ci0KLSAgICAgICAgUVN0
cmluZyBtb2RlbCA9IHN5c3RlbURldmljZUluZm8ubW9kZWwoKTsKLSAgICAgICAgaWYgKCFtb2Rl
bC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmICghZmlyc3RQYXJ0VGVtcC5lbmRzV2l0aCgi
OyAiKSkKLSAgICAgICAgICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRp
bjEoIjsgIik7Ci0gICAgICAgICAgICBmaXJzdFBhcnRUZW1wICs9IHN5c3RlbURldmljZUluZm8u
bW9kZWwoKTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGZpcnN0UGFydFRlbXAuc3F1ZWV6
ZSgpOwotICAgICAgICBmaXJzdFBhcnQgPSBmaXJzdFBhcnRUZW1wOwotCi0gICAgICAgIFFTdHJp
bmcgc2Vjb25kUGFydFRlbXA7Ci0gICAgICAgIHNlY29uZFBhcnRUZW1wLnJlc2VydmUoMTUwKTsK
LSAgICAgICAgc2Vjb25kUGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiKSAiKTsKLQot
ICAgICAgICAvLyB3ZWJraXQvcXQgdmVyc2lvbgotICAgICAgICBzZWNvbmRQYXJ0VGVtcCArPSBR
U3RyaW5nOjpmcm9tTGF0aW4xKCJBcHBsZVdlYktpdC8iKTsKLSAgICAgICAgc2Vjb25kUGFydFRl
bXAgKz0gcVdlYktpdFZlcnNpb24oKTsKLSAgICAgICAgc2Vjb25kUGFydFRlbXAgKz0gUVN0cmlu
Zzo6ZnJvbUxhdGluMSgiIChLSFRNTCwgbGlrZSBHZWNrbykgIik7Ci0KLQotICAgICAgICAvLyBB
cHBsaWNhdGlvbiBuYW1lIHNwbGl0IHRoZSB0aGlyZCBwYXJ0Ci0gICAgICAgIHNlY29uZFBhcnRU
ZW1wLnNxdWVlemUoKTsKLSAgICAgICAgc2Vjb25kUGFydCA9IHNlY29uZFBhcnRUZW1wOwotCi0g
ICAgICAgIFFTdHJpbmcgdGhpcmRQYXJ0VGVtcDsKLSAgICAgICAgdGhpcmRQYXJ0VGVtcC5yZXNl
cnZlKDE1MCk7Ci0gICAgICAgIHRoaXJkUGFydFRlbXAgKz0gUUxhdGluMVN0cmluZygiIFNhZmFy
aS8iKTsKLSAgICAgICAgdGhpcmRQYXJ0VGVtcCArPSBxV2ViS2l0VmVyc2lvbigpOwotICAgICAg
ICB0aGlyZFBhcnRUZW1wLnNxdWVlemUoKTsKLSAgICAgICAgdGhpcmRQYXJ0ID0gdGhpcmRQYXJ0
VGVtcDsKLSAgICAgICAgUV9BU1NFUlQoIWZpcnN0UGFydC5pc051bGwoKSk7Ci0gICAgICAgIFFf
QVNTRVJUKCFzZWNvbmRQYXJ0LmlzTnVsbCgpKTsKLSAgICAgICAgUV9BU1NFUlQoIXRoaXJkUGFy
dC5pc051bGwoKSk7Ci0gICAgfQotCi0gICAgLy8gQXBwbGljYXRpb24gbmFtZS92ZXJzaW9uCi0g
ICAgUVN0cmluZyBhcHBOYW1lID0gUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25OYW1lKCk7
Ci0gICAgaWYgKCFhcHBOYW1lLmlzRW1wdHkoKSkgewotICAgICAgICBRU3RyaW5nIGFwcFZlciA9
IFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uVmVyc2lvbigpOwotICAgICAgICBpZiAoIWFw
cFZlci5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhcHBOYW1lLmFwcGVuZChRTGF0aW4xQ2hhcign
LycpICsgYXBwVmVyKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBRdCB2ZXJzaW9uCi0gICAg
ICAgIGFwcE5hbWUgPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJRdC8iKSArIFFTdHJpbmc6OmZyb21M
YXRpbjEocVZlcnNpb24oKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZpcnN0UGFydCArIHNlY29u
ZFBhcnQgKyBhcHBOYW1lICsgdGhpcmRQYXJ0OworICAgIHJldHVybiBVc2VyQWdlbnRRdDo6c3Rh
bmRhcmRVc2VyQWdlbnQoIiIpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvV2ViUGFnZVByb3h5UXQuY3BwCmluZGV4IGFlM2M0YWFiNjdhZDEzMzhjNTdlMTBhZTdjOWYw
YjZkZTQzNDJmY2MuLmZkNTVkM2JiZTZjMWNjOTY3ZTVhODg3N2U4MTcxOTYzZWZhNzY1MjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcApAQCAt
MSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjksOSArMzAs
MTAgQEAKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUXROZXR3b3JrUmVwbHlE
YXRhLmgiCiAjaW5jbHVkZSAiUXRQYWdlQ2xpZW50LmgiCi0jaW5jbHVkZSAicXF1aWNrbmV0d29y
a3JlcGx5X3AuaCIKKyNpbmNsdWRlICJVc2VyQWdlbnRRdC5oIgogI2luY2x1ZGUgIldlYlBhZ2VN
ZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgorI2luY2x1ZGUgInFxdWlj
a25ldHdvcmtyZXBseV9wLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAKQEAgLTQxLDggKzQzLDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIFN0cmluZyBXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KGNvbnN0
IFN0cmluZyYgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KQogewotICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBub3QgYmUgaGFyZCBjb2RlZC4KLSAgICByZXR1cm4gIk1vemlsbGEvNS4wIChN
YWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzYpIEFwcGxlV2ViS2l0LzUzMS40IChLSFRNTCwg
bGlrZSBHZWNrbykgVmVyc2lvbi80LjAuMyBTYWZhcmkvNTMxLjQiOworICAgIHJldHVybiBVc2Vy
QWdlbnRRdDo6c3RhbmRhcmRVc2VyQWdlbnQoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVSZWNlbnRTZWFyY2hlcyhjb25zdCBTdHJpbmcm
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTk4ZTJhNDNjNDEyOGZkYTljZDA4YmQx
YTMwOWIyMTQ1YTNkYjE5My4uYTkyOTE0YmJmMzUxN2M4OGVkYWZmNDNmNTM0YzVlMWFhNDA2ZDA4
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA1LTIzICBMYXVybyBOZXRvICA8bGF1cm8u
bmV0b0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBmYXN0L2Zvcm1zL2FjY2Vz
cy1rZXktZm9yLWFsbC1lbGVtZW50cy5odG1sIGZhaWxzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzkxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2Vzcy1rZXkgdGVzdHMgd2VyZSBmYWlsaW5nIGR1
ZSB0byBoYXJkY29kZWQgTWFjIE9TIFggaW4gdGhlCisgICAgICAgIFF0IFdLMiB1c2VyIGFnZW50
IHN0cmluZy4gVGhpcyBjb21taXQgbW92ZXMgdGhlIFdLMSBpbXBsZW1lbnRhdGlvbgorICAgICAg
ICB0byBhIHNoYXJlZCBvbmUgdG8gYmUgdXNlZCBieSBib3RoIHZlcnNpb25zLgorCisgICAgICAg
IFVuc2tpcCBub3cgcGFzc2luZyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3JtL3F0LTUuMC13
azIvU2tpcHBlZDoKKwogMjAxMi0wNS0yMyAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTigxMTc5MTgpIC0gNCB3ZWJnbC90ZXgtaW9tYWdlLWFu
ZC1zdWItaW1hZ2UtMmQtd2l0aC1pbWFnZSB0ZXN0cyBmYWlsaW5nIG9uIE1hYyBib3RzLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtNS4wLXdrMi9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQtNS4wLXdrMi9Ta2lwcGVkCmluZGV4IGVmZmM5N2IxOGYxN2VjZjNk
NWY5MjVhZDJhNTk3OWNhOTI2YjhlYjEuLmNhYzcwMzkxNzRlNmQ2MjE5ZTQyODk4YTA1MmExODhl
OTFlNDJjYWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LTUuMC13azIvU2tp
cHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC01LjAtd2syL1NraXBwZWQKQEAgLTQ4
LDcgKzQ4LDYgQEAgZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW91dC1vZi1lZGl0YWJsZS5odG1s
CiBmYXN0L2RvbS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKIGZhc3QvZHluYW1pYy9s
YXllci1oaXQtdGVzdC1jcmFzaC5odG1sCiBmYXN0L2VuY29kaW5nL21haWx0by1hbHdheXMtdXRm
LTguaHRtbAotZmFzdC9ldmVudHMvYWNjZXNzLWtleS1zZWxmLWRlc3RydWN0Lmh0bWwKIGZhc3Qv
ZXZlbnRzL2NvbnRleHQtbm8tZGVzZWxlY3QuaHRtbAogZmFzdC9ldmVudHMvY29udGV4dC1vbm1v
dXNlZG93bi1ldmVudC5odG1sCiBmYXN0L2V2ZW50cy9jb250ZXh0bWVudS1zY3JvbGxlZC1wYWdl
LXdpdGgtZnJhbWUuaHRtbApAQCAtNjQsMTIgKzYzLDkgQEAgZmFzdC9ldmVudHMvc2Nyb2xsLWlu
LXNjYWxlZC1wYWdlLXdpdGgtb3ZlcmZsb3ctaGlkZGVuLmh0bWwKIGZhc3QvZXZlbnRzL3NlbGVj
dHN0YXJ0LXByZXZlbnQtc2VsZWN0aW9uLW9uLXJpZ2h0LWNsaWNrLmh0bWwKIGZhc3QvZXZlbnRz
L3doZWVsZXZlbnQtaW4taG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKIGZhc3QvZXZl
bnRzL3doZWVsZXZlbnQtaW4tdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCi1mYXN0L2Zv
cm1zL2FjY2Vzcy1rZXkuaHRtbAogZmFzdC9mb3Jtcy9mb2N1cy1jaGFuZ2Utb24ta2V5cHJlc3Mu
aHRtbAotZmFzdC9mb3Jtcy9mb2N1cy1zZWxlY3Rpb24tdGV4dGFyZWEuaHRtbAogZmFzdC9mb3Jt
cy9pbnRlcmFjdGl2ZS12YWxpZGF0aW9uLWF0dGFjaC1hc3NlcnRpb24uaHRtbAogZmFzdC9mb3Jt
cy9sZWdlbmQtYWNjZXNzLWtleS5odG1sCi1mYXN0L2Zvcm1zL3NlbGVjdC1hY2Nlc3NrZXkuaHRt
bAogZmFzdC9sb2FkZXIvcG9saWN5LWRlbGVnYXRlLWFjdGlvbi1oaXQtdGVzdC16b29tZWQuaHRt
bAogCiBzdmcvY3VzdG9tL3VzZS1ldmVudHMtY3Jhc2guc3ZnCkBAIC0yMDEsMTAgKzE5Nyw2IEBA
IHN2Zy9hcy1vYmplY3Qvc3ZnLWVtYmVkZGVkLWluLWh0bWwtaW4taWZyYW1lLmh0bWwKICMgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwOTM1CiBmYXN0L3RyYW5zZm9y
bXMvc2Nyb2xsSW50b1ZpZXctdHJhbnNmb3JtZWQuaHRtbAogCi0jIFtRdF1bV0syXSBmYXN0L2Zv
cm1zL2FjY2Vzcy1rZXktZm9yLWFsbC1lbGVtZW50cy5odG1sIGZhaWxzCi0jIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzkxNwotZmFzdC9mb3Jtcy9hY2Nlc3Mta2V5
LWZvci1hbGwtZWxlbWVudHMuaHRtbAotCiAjIFtRdF1bV0syXSBjc3MzL3VuaWNvZGUtYmlkaS1p
c29sYXRlLWFoYXJvbi1mYWlsaW5nLmh0bWwgZmFpbHMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc0NTA1CiBjc3MzL3VuaWNvZGUtYmlkaS1pc29sYXRlLWFoYXJv
bi1mYWlsaW5nLmh0bWwKQEAgLTIyMCw3ICsyMTIsNiBAQCBzdmcvY3VzdG9tL2dldHNjcmVlbmN0
bS1pbi1zY3JvbGxhYmxlLWRpdi1hcmVhLnhodG1sCiAjIEZhaWxpbmcgdGVzdHMgb24gcXQtd2sy
IGFmdGVyIHVuc2tpcHBpbmcgcXQtNS4wL1NraXBwZWQgdGVzdHMsIG5lZWQgbW9yZSBpbnZlc3Rp
Z2F0aW9uCiBlZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJs
ZS1kaXYuaHRtbAogZmFzdC9ibG9jay9iYXNpYy8wMjAuaHRtbAotZmFzdC9kb20vYWNjZXNzLWtl
eS1pZnJhbWUuaHRtbAogZmFzdC9oaXN0b3J5L3Zpc2l0ZWQtbGluay1iYWNrZ3JvdW5kLWNvbG9y
Lmh0bWwKIGZhc3QvbGF5ZXJzL2xheWVyLXZpc2liaWxpdHktc3VibGF5ZXIuaHRtbAogZmFzdC9s
YXllcnMvbGF5ZXItdmlzaWJpbGl0eS5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145097</attachid>
            <date>2012-05-31 08:17:52 -0700</date>
            <delta_ts>2012-05-31 09:50:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73917-20120531121751.patch</filename>
            <type>text/plain</type>
            <size>14376</size>
            <attacher name="Marcelo Lira">marcelo.lira</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTA2YjRhNGE5MGY3ZGQ0
YjY0OWZjOTA0MDY5MjZkYzRjNWFlYTkwYy4uYTAxZDVmNTM5YWE3MmRhMWU1MDU5NDdjYWI2YjMy
YmU0ZTJjM2I1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA1LTIzICBMYXVy
byBOZXRvICA8bGF1cm8ubmV0b0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBm
YXN0L2Zvcm1zL2FjY2Vzcy1rZXktZm9yLWFsbC1lbGVtZW50cy5odG1sIGZhaWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzkxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2Vzcy1rZXkgdGVzdHMg
d2VyZSBmYWlsaW5nIGR1ZSB0byBoYXJkY29kZWQgTWFjIE9TIFggaW4gdGhlCisgICAgICAgIFF0
IFdLMiB1c2VyIGFnZW50IHN0cmluZy4gVGhpcyBjb21taXQgbW92ZXMgdGhlIFdLMSBpbXBsZW1l
bnRhdGlvbgorICAgICAgICB0byBhIHNoYXJlZCBvbmUgdG8gYmUgdXNlZCBieSBib3RoIHZlcnNp
b25zLgorCisgICAgICAgIEFkZHMgdGhlIHNoYXJlZCB1c2VyIGFnZW50IGltcGxlbWVudGF0aW9u
LgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Vc2VyQWdl
bnRRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyQWdlbnRRdDo6c3RhbmRhcmRVc2VyQWdlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Vz
ZXJBZ2VudFF0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChVc2VyQWdl
bnRRdCk6CisKIDIwMTItMDUtMzEgIEV1Z2VuZSBLbHl1Y2huaWtvdiAgPGV1c3Rhcy5idWdAZ21h
aWwuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEZpeCBjaGVja2JveCBwb3NpdGlvbiBv
biBTZXR0aW5ncyBzY3JlZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDcwYzFmZjAxYTJiOGY3MjBjNjBk
MzY3NjkyZGI0MDZlZmQ2OTZlNTEuLmE3Y2E5ZDFmYTU0OTVlNzQwMWUzZDE1ODk1ZDViNmE2OTg3
ZGYzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDUtMjMgIExhdXJv
IE5ldG8gIDxsYXVyby5uZXRvQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIGZh
c3QvZm9ybXMvYWNjZXNzLWtleS1mb3ItYWxsLWVsZW1lbnRzLmh0bWwgZmFpbHMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczOTE3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZXNzLWtleSB0ZXN0cyB3
ZXJlIGZhaWxpbmcgZHVlIHRvIGhhcmRjb2RlZCBNYWMgT1MgWCBpbiB0aGUKKyAgICAgICAgUXQg
V0syIHVzZXIgYWdlbnQgc3RyaW5nLiBUaGlzIGNvbW1pdCBtb3ZlcyB0aGUgV0sxIGltcGxlbWVu
dGF0aW9uCisgICAgICAgIHRvIGEgc2hhcmVkIG9uZSB0byBiZSB1c2VkIGJ5IGJvdGggdmVyc2lv
bnMuCisKKyAgICAgICAgQ2hhbmdlIFFXZWJQYWdlIHRvIHVzZSB0aGUgc2hhcmVkIHVzZXIgYWdl
bnQgaW1wbGVtZW50YXRpb24uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAg
ICAoUVdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybCk6CisKIDIwMTItMDUtMzEgIFRvciBBcm5lIFZl
c3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gU2ltcGxp
ZnkgUVRfVkVSU0lPTl9DSEVDS1MgZm9yIFF0NSBieSBpbnRyb2R1Y2luZyBIQVZFKFFUNSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAxOTNkOWY2MWE1NmU3ZjI1ODYwYzc5MDQ2MTdlOTBkYTE1ZDlhZGRkLi5iZThl
N2Y5ZGI1Nzc0ODAwZjRlNGUxMmUwMmM3ODlkMDg1MzMxMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMTItMDUtMjMgIExhdXJvIE5ldG8gIDxsYXVyby5uZXRvQG9wZW5ib3NzYS5v
cmc+CisKKyAgICAgICAgW1F0XVtXSzJdIGZhc3QvZm9ybXMvYWNjZXNzLWtleS1mb3ItYWxsLWVs
ZW1lbnRzLmh0bWwgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTczOTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWNjZXNzLWtleSB0ZXN0cyB3ZXJlIGZhaWxpbmcgZHVlIHRvIGhhcmRjb2RlZCBN
YWMgT1MgWCBpbiB0aGUKKyAgICAgICAgUXQgV0syIHVzZXIgYWdlbnQgc3RyaW5nLiBUaGlzIGNv
bW1pdCBtb3ZlcyB0aGUgV0sxIGltcGxlbWVudGF0aW9uCisgICAgICAgIHRvIGEgc2hhcmVkIG9u
ZSB0byBiZSB1c2VkIGJ5IGJvdGggdmVyc2lvbnMuCisKKyAgICAgICAgVXNlIHRoZSBzaGFyZWQg
aW1wbGVtZW50YXRpb24gaW5zdGVhZCBvZiBoYXJkY29kaW5nIHRoZSB1c2VyIGFnZW50LiBBbHNv
CisgICAgICAgIGNoYW5nZWQgaGVhZGVyIGluY2x1ZGUgb3JkZXIgdG8gZm9sbG93IHRoZSBwcm9w
ZXIgc3R5bGUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KToKKwogMjAx
Mi0wNS0zMSAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAK
ICAgICAgICAgW1F0XSBTaW1wbGlmeSBRVF9WRVJTSU9OX0NIRUNLUyBmb3IgUXQ1IGJ5IGludHJv
ZHVjaW5nIEhBVkUoUVQ1KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBi
L1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggM2VlODVlNzkzNDQzMjFjNjQ1Yzc0N2Rh
ZjY4MzQ1ZTliZmNhM2M1OS4uZTE3OTY2MGUxZjRiMWMyNjA1MGVhMTIyNzk5Mzc2Mjk5ZjA3N2Uy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCkBAIC0yMzgwLDYgKzIzODAsNyBAQCBIRUFERVJTICs9IFwKICAgICBw
bGF0Zm9ybS9xdC9RV2ViUGFnZUNsaWVudC5oIFwKICAgICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVt
ZVF0LmggXAogICAgIHBsYXRmb3JtL3F0L1JlbmRlclRoZW1lUXRNb2JpbGUuaCBcCisgICAgcGxh
dGZvcm0vcXQvVXNlckFnZW50UXQuaCBcCiAgICAgcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBc
CiAgICAgcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuaCBcCiAgICAgcGxhdGZvcm0vU2Nyb2xsYmFy
LmggXApAQCAtMjkyMyw2ICsyOTI0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vcXQv
UnVuTG9vcFF0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvU2hhcmVkQnVmZmVyUXQuY3BwIFwKICAg
ICBwbGF0Zm9ybS9xdC9UaGlyZFBhcnR5Q29va2llc1F0LmNwcCBcCisgICAgcGxhdGZvcm0vcXQv
VXNlckFnZW50UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5j
cHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFRdC5j
cHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dseXBoUGFnZVRyZWVOb2RlUXQuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAppbmRleCA4ZmIzMTlkZDQyNGZmZGY5ZjU2ZTc1OGNm
OWI4MmZjYjFiZjZlMDc4Li4yMDg0ZWI5YTU3M2Y5MTc2YzEzNzcxMTRlMTA5OWFiNTJmMWZjYTM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAgICBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJz
aWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEyIE5va2lhIENv
cnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICAgIENvcHlyaWdodCAoQykg
MjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCiAgICAgQ29weXJpZ2h0IChDKSAy
MDA3IEFwcGxlIEluYy4KIApAQCAtMTEzLDYgKzExMyw3IEBACiAjaW5jbHVkZSAiU3lzdGVtSW5m
by5oIgogI2VuZGlmIC8vIFFfT1NfV0lOMzIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKKyNp
bmNsdWRlICJVc2VyQWdlbnRRdC5oIgogI2luY2x1ZGUgIlV0aWxzUXQuaCIKICNpbmNsdWRlICJX
ZWJFdmVudENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgpAQCAtMzc4
NCwxNTggKzM3ODUsNyBAQCBRV2ViUGx1Z2luRmFjdG9yeSAqUVdlYlBhZ2U6OnBsdWdpbkZhY3Rv
cnkoKSBjb25zdAogKi8KIFFTdHJpbmcgUVdlYlBhZ2U6OnVzZXJBZ2VudEZvclVybChjb25zdCBR
VXJsJikgY29uc3QKIHsKLSAgICAvLyBzcGxpdHRpbmcgdGhlIHN0cmluZyBpbiB0aHJlZSBhbmQg
dXNlciBRU3RyaW5nQnVpbGRlciBpcyBiZXR0ZXIgdGhhbiB1c2luZyBRU3RyaW5nOjphcmcoKQot
ICAgIHN0YXRpYyBRU3RyaW5nIGZpcnN0UGFydDsKLSAgICBzdGF0aWMgUVN0cmluZyBzZWNvbmRQ
YXJ0OwotICAgIHN0YXRpYyBRU3RyaW5nIHRoaXJkUGFydDsKLQotICAgIGlmIChmaXJzdFBhcnQu
aXNOdWxsKCkgfHwgc2Vjb25kUGFydC5pc051bGwoKSB8fCB0aGlyZFBhcnQuaXNOdWxsKCkpIHsK
LSAgICAgICAgUVN0cmluZyBmaXJzdFBhcnRUZW1wOwotICAgICAgICBmaXJzdFBhcnRUZW1wLnJl
c2VydmUoMTUwKTsKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4x
KCJNb3ppbGxhLzUuMCAoIgotCi0gICAgLy8gUGxhdGZvcm0KLSNpZmRlZiBRX1dTX01BQwotICAg
ICAgICAiTWFjaW50b3NoOyAiCi0jZWxpZiBkZWZpbmVkIFFfV1NfUVdTCi0gICAgICAgICJRdEVt
YmVkZGVkOyAiCi0jZWxpZiBkZWZpbmVkIFFfV1NfV0lOCi0gICAgICAgIC8vIE5vdGhpbmcKLSNl
bGlmIGRlZmluZWQgUV9XU19YMTEKLSAgICAgICAgIlgxMTsgIgotI2Vsc2UKLSAgICAgICAgIlVu
a25vd247ICIKLSNlbmRpZgotICAgICk7Ci0KLSNpZiBkZWZpbmVkKFFUX05PX09QRU5TU0wpCi0g
ICAgICAgIC8vIE5vIFNTTCBzdXBwb3J0Ci0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmlu
Zzo6ZnJvbUxhdGluMSgiTjsgIik7Ci0jZW5kaWYKLQotICAgICAgICAvLyBPcGVyYXRpbmcgc3lz
dGVtCi0jaWZkZWYgUV9PU19BSVgKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpm
cm9tTGF0aW4xKCJBSVgiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19XSU4zMgotICAgICAgICBmaXJz
dFBhcnRUZW1wICs9IHdpbmRvd3NWZXJzaW9uRm9yVUFTdHJpbmcoKTsKLSNlbGlmIGRlZmluZWQg
UV9PU19EQVJXSU4KLSNpZmRlZiBfX2kzODZfXyB8fCBfX3g4Nl82NF9fCi0gICAgICAgIGZpcnN0
UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiSW50ZWwgTWFjIE9TIFgiKTsKLSNlbHNl
Ci0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiUFBDIE1hYyBP
UyBYIik7Ci0jZW5kaWYKLQotI2VsaWYgZGVmaW5lZCBRX09TX0JTREkKLSAgICAgICAgZmlyc3RQ
YXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJCU0QiKTsKLSNlbGlmIGRlZmluZWQgUV9P
U19CU0Q0Ci0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiQlNE
IEZvdXIiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19DWUdXSU4KLSAgICAgICAgZmlyc3RQYXJ0VGVt
cCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJDeWd3aW4iKTsKLSNlbGlmIGRlZmluZWQgUV9PU19E
R1VYCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiREcvVVgi
KTsKLSNlbGlmIGRlZmluZWQgUV9PU19EWU5JWAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFT
dHJpbmc6OmZyb21MYXRpbjEoIkRZTklYL3B0eCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX0ZSRUVC
U0QKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJGcmVlQlNE
Iik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfSFBVWAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFT
dHJpbmc6OmZyb21MYXRpbjEoIkhQLVVYIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfSFVSRAotICAg
ICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkdOVSBIdXJkIik7Ci0j
ZWxpZiBkZWZpbmVkIFFfT1NfSVJJWAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6
OmZyb21MYXRpbjEoIlNHSSBJcml4Iik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfTElOVVgKLQotI2lm
IGRlZmluZWQoX194ODZfNjRfXykKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpm
cm9tTGF0aW4xKCJMaW51eCB4ODZfNjQiKTsKLSNlbGlmIGRlZmluZWQoX19pMzg2X18pCi0gICAg
ICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiTGludXggaTY4NiIpOwot
I2Vsc2UKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJMaW51
eCIpOwotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQgUV9PU19MWU5YCi0gICAgICAgIGZpcnN0UGFy
dFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiTHlueE9TIik7Ci0jZWxpZiBkZWZpbmVkIFFf
T1NfTkVUQlNECi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgi
TmV0QlNEIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfT1MyCi0gICAgICAgIGZpcnN0UGFydFRlbXAg
Kz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiT1MvMiIpOwotI2VsaWYgZGVmaW5lZCBRX09TX09QRU5C
U0QKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJPcGVuQlNE
Iik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfT1MyRU1YCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0g
UVN0cmluZzo6ZnJvbUxhdGluMSgiT1MvMiIpOwotI2VsaWYgZGVmaW5lZCBRX09TX09TRgotICAg
ICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkhQIFRydTY0IFVOSVgi
KTsKLSNlbGlmIGRlZmluZWQgUV9PU19RTlg2Ci0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0
cmluZzo6ZnJvbUxhdGluMSgiUU5YIFJUUCBTaXgiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19RTlgK
LSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJRTlgiKTsKLSNl
bGlmIGRlZmluZWQgUV9PU19SRUxJQU5UCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmlu
Zzo6ZnJvbUxhdGluMSgiUmVsaWFudCBVTklYIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfU0NPCi0g
ICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiU0NPIE9wZW5TZXJ2
ZXIiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19TT0xBUklTCi0gICAgICAgIGZpcnN0UGFydFRlbXAg
Kz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiU3VuIFNvbGFyaXMiKTsKLSNlbGlmIGRlZmluZWQgUV9P
U19VTFRSSVgKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJE
RUMgVWx0cml4Iik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfVU5JWAotICAgICAgICBmaXJzdFBhcnRU
ZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIlVOSVggQlNEL1NZU1Ygc3lzdGVtIik7Ci0jZWxp
ZiBkZWZpbmVkIFFfT1NfVU5JWFdBUkUKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5n
Ojpmcm9tTGF0aW4xKCJVbml4V2FyZSBTZXZlbiwgT3BlbiBVTklYIEVpZ2h0Iik7Ci0jZWxzZQot
ICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIlVua25vd24iKTsK
LSNlbmRpZgotCi0jaWYgVVNFKFFUX01PQklMSVRZX1NZU1RFTUlORk8pCi0gICAgICAgIC8vIGFk
ZGluZyBNb2RlbCBOdW1iZXIKLSAgICAgICAgUXRNb2JpbGl0eTo6UVN5c3RlbURldmljZUluZm8g
c3lzdGVtRGV2aWNlSW5mbzsKLQotICAgICAgICBRU3RyaW5nIG1vZGVsID0gc3lzdGVtRGV2aWNl
SW5mby5tb2RlbCgpOwotICAgICAgICBpZiAoIW1vZGVsLmlzRW1wdHkoKSkgewotICAgICAgICAg
ICAgaWYgKCFmaXJzdFBhcnRUZW1wLmVuZHNXaXRoKCI7ICIpKQotICAgICAgICAgICAgICAgIGZp
cnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiOyAiKTsKLSAgICAgICAgICAgIGZp
cnN0UGFydFRlbXAgKz0gc3lzdGVtRGV2aWNlSW5mby5tb2RlbCgpOwotICAgICAgICB9Ci0jZW5k
aWYKLSAgICAgICAgZmlyc3RQYXJ0VGVtcC5zcXVlZXplKCk7Ci0gICAgICAgIGZpcnN0UGFydCA9
IGZpcnN0UGFydFRlbXA7Ci0KLSAgICAgICAgUVN0cmluZyBzZWNvbmRQYXJ0VGVtcDsKLSAgICAg
ICAgc2Vjb25kUGFydFRlbXAucmVzZXJ2ZSgxNTApOwotICAgICAgICBzZWNvbmRQYXJ0VGVtcCAr
PSBRU3RyaW5nOjpmcm9tTGF0aW4xKCIpICIpOwotCi0gICAgICAgIC8vIHdlYmtpdC9xdCB2ZXJz
aW9uCi0gICAgICAgIHNlY29uZFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkFwcGxl
V2ViS2l0LyIpOwotICAgICAgICBzZWNvbmRQYXJ0VGVtcCArPSBxV2ViS2l0VmVyc2lvbigpOwot
ICAgICAgICBzZWNvbmRQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCIgKEtIVE1MLCBs
aWtlIEdlY2tvKSAiKTsKLQotCi0gICAgICAgIC8vIEFwcGxpY2F0aW9uIG5hbWUgc3BsaXQgdGhl
IHRoaXJkIHBhcnQKLSAgICAgICAgc2Vjb25kUGFydFRlbXAuc3F1ZWV6ZSgpOwotICAgICAgICBz
ZWNvbmRQYXJ0ID0gc2Vjb25kUGFydFRlbXA7Ci0KLSAgICAgICAgUVN0cmluZyB0aGlyZFBhcnRU
ZW1wOwotICAgICAgICB0aGlyZFBhcnRUZW1wLnJlc2VydmUoMTUwKTsKLSAgICAgICAgdGhpcmRQ
YXJ0VGVtcCArPSBRTGF0aW4xU3RyaW5nKCIgU2FmYXJpLyIpOwotICAgICAgICB0aGlyZFBhcnRU
ZW1wICs9IHFXZWJLaXRWZXJzaW9uKCk7Ci0gICAgICAgIHRoaXJkUGFydFRlbXAuc3F1ZWV6ZSgp
OwotICAgICAgICB0aGlyZFBhcnQgPSB0aGlyZFBhcnRUZW1wOwotICAgICAgICBRX0FTU0VSVCgh
Zmlyc3RQYXJ0LmlzTnVsbCgpKTsKLSAgICAgICAgUV9BU1NFUlQoIXNlY29uZFBhcnQuaXNOdWxs
KCkpOwotICAgICAgICBRX0FTU0VSVCghdGhpcmRQYXJ0LmlzTnVsbCgpKTsKLSAgICB9Ci0KLSAg
ICAvLyBBcHBsaWNhdGlvbiBuYW1lL3ZlcnNpb24KLSAgICBRU3RyaW5nIGFwcE5hbWUgPSBRQ29y
ZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvbk5hbWUoKTsKLSAgICBpZiAoIWFwcE5hbWUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIFFTdHJpbmcgYXBwVmVyID0gUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGlj
YXRpb25WZXJzaW9uKCk7Ci0gICAgICAgIGlmICghYXBwVmVyLmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgIGFwcE5hbWUuYXBwZW5kKFFMYXRpbjFDaGFyKCcvJykgKyBhcHBWZXIpOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIC8vIFF0IHZlcnNpb24KLSAgICAgICAgYXBwTmFtZSA9IFFTdHJpbmc6OmZy
b21MYXRpbjEoIlF0LyIpICsgUVN0cmluZzo6ZnJvbUxhdGluMShxVmVyc2lvbigpKTsKLSAgICB9
Ci0KLSAgICByZXR1cm4gZmlyc3RQYXJ0ICsgc2Vjb25kUGFydCArIGFwcE5hbWUgKyB0aGlyZFBh
cnQ7CisgICAgcmV0dXJuIFVzZXJBZ2VudFF0OjpzdGFuZGFyZFVzZXJBZ2VudCgiIik7CiB9CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAKaW5k
ZXggNWNhZmFkNTljNjg5YzM4MjQ2NGI4MDcxOTA0YjA1MjllNzVlNWJlYS4uNGEyZTdkOTg5Y2Fk
MzliZDk3ZDUxNDdiNWNjY2NkNTNkNTdjMTIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CkBAIC0yOSw5ICszMCwxMCBAQAogI2luY2x1ZGUgIlBhZ2VDbGll
bnQuaCIKICNpbmNsdWRlICJRdE5ldHdvcmtSZXBseURhdGEuaCIKICNpbmNsdWRlICJRdFBhZ2VD
bGllbnQuaCIKLSNpbmNsdWRlICJxcXVpY2tuZXR3b3JrcmVwbHlfcC5oIgorI2luY2x1ZGUgIlVz
ZXJBZ2VudFF0LmgiCiAjaW5jbHVkZSAiV2ViUGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Byb3h5LmgiCisjaW5jbHVkZSAicXF1aWNrbmV0d29ya3JlcGx5X3AuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KIApAQCAtNDEsOCArNDMsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogU3RyaW5nIFdlYlBh
Z2VQcm94eTo6c3RhbmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWVG
b3JVc2VyQWdlbnQpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBoYXJkIGNv
ZGVkLgotICAgIHJldHVybiAiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFgg
MTBfNikgQXBwbGVXZWJLaXQvNTMxLjQgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMC4z
IFNhZmFyaS81MzEuNCI7CisgICAgcmV0dXJuIFVzZXJBZ2VudFF0OjpzdGFuZGFyZFVzZXJBZ2Vu
dChhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiN2EzOTJhY2E4M2ZhNTA1MzIwZmRmZTA3OGIwOWU5MDY2OTBkYWNkLi4yNTE4YWYw
ZWVjMzM5MGIwMDQ0NjkxZGVkN2YwNzRmNDM4NTc0NjEzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTItMDUtMjMgIExhdXJvIE5ldG8gIDxsYXVyby5uZXRvQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgW1F0XVtXSzJdIGZhc3QvZm9ybXMvYWNjZXNzLWtleS1mb3ItYWxsLWVsZW1lbnRzLmh0
bWwgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczOTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWNjZXNzLWtleSB0ZXN0cyB3ZXJlIGZhaWxpbmcgZHVlIHRvIGhhcmRjb2RlZCBNYWMgT1MgWCBp
biB0aGUKKyAgICAgICAgUXQgV0syIHVzZXIgYWdlbnQgc3RyaW5nLiBUaGlzIGNvbW1pdCBtb3Zl
cyB0aGUgV0sxIGltcGxlbWVudGF0aW9uCisgICAgICAgIHRvIGEgc2hhcmVkIG9uZSB0byBiZSB1
c2VkIGJ5IGJvdGggdmVyc2lvbnMuCisKKyAgICAgICAgVW5za2lwIG5vdyBwYXNzaW5nIHRlc3Rz
LgorCisgICAgICAgICogcGxhdGZvcm0vcXQtNS4wLXdrMi9Ta2lwcGVkOgorCiAyMDEyLTA1LTMx
ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAg
ICAgICAgIFtFRkxdIEdhcmRlbmluZyBhZnRlciByMTE4OTg5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC01LjAtd2syL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC01LjAtd2syL1NraXBwZWQKaW5kZXggZjVhMTM3YmMzYjg4YjdlMzRmNmQxZmY2YmE2ZDY5NmQ3
MzE2YzRkYy4uZDM5OGE3NGU3ZDU2OTNmYjg2NTM4YjVlODkyNjE3ZjJjMTU3N2Q3NSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtNS4wLXdrMi9Ta2lwcGVkCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0LTUuMC13azIvU2tpcHBlZApAQCAtNDgsNyArNDgsNiBAQCBlZGl0
aW5nL3NlbGVjdGlvbi9zZWxlY3Qtb3V0LW9mLWVkaXRhYmxlLmh0bWwKIGZhc3QvZG9tL3ZlcnRp
Y2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAogZmFzdC9keW5hbWljL2xheWVyLWhpdC10ZXN0LWNy
YXNoLmh0bWwKIGZhc3QvZW5jb2RpbmcvbWFpbHRvLWFsd2F5cy11dGYtOC5odG1sCi1mYXN0L2V2
ZW50cy9hY2Nlc3Mta2V5LXNlbGYtZGVzdHJ1Y3QuaHRtbAogZmFzdC9ldmVudHMvY29udGV4dC1u
by1kZXNlbGVjdC5odG1sCiBmYXN0L2V2ZW50cy9jb250ZXh0LW9ubW91c2Vkb3duLWV2ZW50Lmh0
bWwKIGZhc3QvZXZlbnRzL2NvbnRleHRtZW51LXNjcm9sbGVkLXBhZ2Utd2l0aC1mcmFtZS5odG1s
CkBAIC02NCwxMiArNjMsOSBAQCBmYXN0L2V2ZW50cy9zY3JvbGwtaW4tc2NhbGVkLXBhZ2Utd2l0
aC1vdmVyZmxvdy1oaWRkZW4uaHRtbAogZmFzdC9ldmVudHMvc2VsZWN0c3RhcnQtcHJldmVudC1z
ZWxlY3Rpb24tb24tcmlnaHQtY2xpY2suaHRtbAogZmFzdC9ldmVudHMvd2hlZWxldmVudC1pbi1o
b3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAogZmFzdC9ldmVudHMvd2hlZWxldmVudC1p
bi12ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKLWZhc3QvZm9ybXMvYWNjZXNzLWtleS5o
dG1sCiBmYXN0L2Zvcm1zL2ZvY3VzLWNoYW5nZS1vbi1rZXlwcmVzcy5odG1sCi1mYXN0L2Zvcm1z
L2ZvY3VzLXNlbGVjdGlvbi10ZXh0YXJlYS5odG1sCiBmYXN0L2Zvcm1zL2ludGVyYWN0aXZlLXZh
bGlkYXRpb24tYXR0YWNoLWFzc2VydGlvbi5odG1sCiBmYXN0L2Zvcm1zL2xlZ2VuZC1hY2Nlc3Mt
a2V5Lmh0bWwKLWZhc3QvZm9ybXMvc2VsZWN0LWFjY2Vzc2tleS5odG1sCiBmYXN0L2xvYWRlci9w
b2xpY3ktZGVsZWdhdGUtYWN0aW9uLWhpdC10ZXN0LXpvb21lZC5odG1sCiAKIHN2Zy9jdXN0b20v
dXNlLWV2ZW50cy1jcmFzaC5zdmcKQEAgLTIxMCwxMCArMjA2LDYgQEAgc3ZnL2FzLW9iamVjdC9z
dmctZW1iZWRkZWQtaW4taHRtbC1pbi1pZnJhbWUuaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5MzUKIGZhc3QvdHJhbnNmb3Jtcy9zY3JvbGxJbnRvVmll
dy10cmFuc2Zvcm1lZC5odG1sCiAKLSMgW1F0XVtXSzJdIGZhc3QvZm9ybXMvYWNjZXNzLWtleS1m
b3ItYWxsLWVsZW1lbnRzLmh0bWwgZmFpbHMKLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczOTE3Ci1mYXN0L2Zvcm1zL2FjY2Vzcy1rZXktZm9yLWFsbC1lbGVtZW50
cy5odG1sCi0KICMgW1F0XVtXSzJdIGNzczMvdW5pY29kZS1iaWRpLWlzb2xhdGUtYWhhcm9uLWZh
aWxpbmcuaHRtbCBmYWlscwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQ1MDUKIGNzczMvdW5pY29kZS1iaWRpLWlzb2xhdGUtYWhhcm9uLWZhaWxpbmcuaHRtbApA
QCAtMjI5LDcgKzIyMSw2IEBAIHN2Zy9jdXN0b20vZ2V0c2NyZWVuY3RtLWluLXNjcm9sbGFibGUt
ZGl2LWFyZWEueGh0bWwKICMgRmFpbGluZyB0ZXN0cyBvbiBxdC13azIgYWZ0ZXIgdW5za2lwcGlu
ZyBxdC01LjAvU2tpcHBlZCB0ZXN0cywgbmVlZCBtb3JlIGludmVzdGlnYXRpb24KIGVkaXRpbmcv
c2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMtaW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sCiBmYXN0
L2Jsb2NrL2Jhc2ljLzAyMC5odG1sCi1mYXN0L2RvbS9hY2Nlc3Mta2V5LWlmcmFtZS5odG1sCiBm
YXN0L2hpc3RvcnkvdmlzaXRlZC1saW5rLWJhY2tncm91bmQtY29sb3IuaHRtbAogZmFzdC9sYXll
cnMvbGF5ZXItdmlzaWJpbGl0eS1zdWJsYXllci5odG1sCiBmYXN0L2xheWVycy9sYXllci12aXNp
YmlsaXR5Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145108</attachid>
            <date>2012-05-31 09:50:56 -0700</date>
            <delta_ts>2012-09-13 07:28:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73917-20120531135054.patch</filename>
            <type>text/plain</type>
            <size>21645</size>
            <attacher name="Marcelo Lira">marcelo.lira</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjUzYzcwOWM5YTg2YjFi
YmRkZGM5Yzc2ZjQ3ZDY4ZjA2MjJiZWFjMy4uMGEzOTQ1NTk1ZWVkYzdjNDRjOTc3NzYxZjRmODMy
ODc4ZTIyNDhlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA1LTIzICBMYXVy
byBOZXRvICA8bGF1cm8ubmV0b0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBm
YXN0L2Zvcm1zL2FjY2Vzcy1rZXktZm9yLWFsbC1lbGVtZW50cy5odG1sIGZhaWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzkxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2Vzcy1rZXkgdGVzdHMg
d2VyZSBmYWlsaW5nIGR1ZSB0byBoYXJkY29kZWQgTWFjIE9TIFggaW4gdGhlCisgICAgICAgIFF0
IFdLMiB1c2VyIGFnZW50IHN0cmluZy4gVGhpcyBjb21taXQgbW92ZXMgdGhlIFdLMSBpbXBsZW1l
bnRhdGlvbgorICAgICAgICB0byBhIHNoYXJlZCBvbmUgdG8gYmUgdXNlZCBieSBib3RoIHZlcnNp
b25zLgorCisgICAgICAgIEFkZHMgdGhlIHNoYXJlZCB1c2VyIGFnZW50IGltcGxlbWVudGF0aW9u
LgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Vc2VyQWdl
bnRRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyQWdlbnRRdDo6c3RhbmRhcmRVc2VyQWdlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Vz
ZXJBZ2VudFF0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChVc2VyQWdl
bnRRdCk6CisKIDIwMTItMDUtMzEgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6
QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBFbmFibGUgQ1NTX0lNQUdFX1NFVCBmbGFnCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCmluZGV4IDcwYzFmZjAxYTJiOGY3MjBjNjBkMzY3NjkyZGI0MDZlZmQ2OTZlNTEu
LmE3Y2E5ZDFmYTU0OTVlNzQwMWUzZDE1ODk1ZDViNmE2OTg3ZGYzMmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDUtMjMgIExhdXJvIE5ldG8gIDxsYXVyby5uZXRvQG9w
ZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIGZhc3QvZm9ybXMvYWNjZXNzLWtleS1m
b3ItYWxsLWVsZW1lbnRzLmh0bWwgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTczOTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWNjZXNzLWtleSB0ZXN0cyB3ZXJlIGZhaWxpbmcgZHVlIHRvIGhh
cmRjb2RlZCBNYWMgT1MgWCBpbiB0aGUKKyAgICAgICAgUXQgV0syIHVzZXIgYWdlbnQgc3RyaW5n
LiBUaGlzIGNvbW1pdCBtb3ZlcyB0aGUgV0sxIGltcGxlbWVudGF0aW9uCisgICAgICAgIHRvIGEg
c2hhcmVkIG9uZSB0byBiZSB1c2VkIGJ5IGJvdGggdmVyc2lvbnMuCisKKyAgICAgICAgQ2hhbmdl
IFFXZWJQYWdlIHRvIHVzZSB0aGUgc2hhcmVkIHVzZXIgYWdlbnQgaW1wbGVtZW50YXRpb24uCisK
KyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6OnVzZXJBZ2Vu
dEZvclVybCk6CisKIDIwMTItMDUtMzEgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0
Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gU2ltcGxpZnkgUVRfVkVSU0lPTl9DSEVDS1Mg
Zm9yIFF0NSBieSBpbnRyb2R1Y2luZyBIQVZFKFFUNSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAxOTNkOWY2MWE1
NmU3ZjI1ODYwYzc5MDQ2MTdlOTBkYTE1ZDlhZGRkLi5iZThlN2Y5ZGI1Nzc0ODAwZjRlNGUxMmUw
MmM3ODlkMDg1MzMxMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDUtMjMg
IExhdXJvIE5ldG8gIDxsYXVyby5uZXRvQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtX
SzJdIGZhc3QvZm9ybXMvYWNjZXNzLWtleS1mb3ItYWxsLWVsZW1lbnRzLmh0bWwgZmFpbHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczOTE3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZXNzLWtleSB0
ZXN0cyB3ZXJlIGZhaWxpbmcgZHVlIHRvIGhhcmRjb2RlZCBNYWMgT1MgWCBpbiB0aGUKKyAgICAg
ICAgUXQgV0syIHVzZXIgYWdlbnQgc3RyaW5nLiBUaGlzIGNvbW1pdCBtb3ZlcyB0aGUgV0sxIGlt
cGxlbWVudGF0aW9uCisgICAgICAgIHRvIGEgc2hhcmVkIG9uZSB0byBiZSB1c2VkIGJ5IGJvdGgg
dmVyc2lvbnMuCisKKyAgICAgICAgVXNlIHRoZSBzaGFyZWQgaW1wbGVtZW50YXRpb24gaW5zdGVh
ZCBvZiBoYXJkY29kaW5nIHRoZSB1c2VyIGFnZW50LiBBbHNvCisgICAgICAgIGNoYW5nZWQgaGVh
ZGVyIGluY2x1ZGUgb3JkZXIgdG8gZm9sbG93IHRoZSBwcm9wZXIgc3R5bGUuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KToKKwogMjAxMi0wNS0zMSAgVG9yIEFybmUgVmVz
dGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+CiAKICAgICAgICAgW1F0XSBTaW1wbGlm
eSBRVF9WRVJTSU9OX0NIRUNLUyBmb3IgUXQ1IGJ5IGludHJvZHVjaW5nIEhBVkUoUVQ1KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKaW5kZXggM2VlODVlNzkzNDQzMjFjNjQ1Yzc0N2RhZjY4MzQ1ZTliZmNhM2M1OS4uZTE3
OTY2MGUxZjRiMWMyNjA1MGVhMTIyNzk5Mzc2Mjk5ZjA3N2UyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCkBAIC0y
MzgwLDYgKzIzODAsNyBAQCBIRUFERVJTICs9IFwKICAgICBwbGF0Zm9ybS9xdC9RV2ViUGFnZUNs
aWVudC5oIFwKICAgICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmggXAogICAgIHBsYXRmb3Jt
L3F0L1JlbmRlclRoZW1lUXRNb2JpbGUuaCBcCisgICAgcGxhdGZvcm0vcXQvVXNlckFnZW50UXQu
aCBcCiAgICAgcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuaCBcCiAgICAgcGxhdGZvcm0vU2Nyb2xs
QW5pbWF0b3IuaCBcCiAgICAgcGxhdGZvcm0vU2Nyb2xsYmFyLmggXApAQCAtMjkyMyw2ICsyOTI0
LDcgQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vcXQvUnVuTG9vcFF0LmNwcCBcCiAgICAg
cGxhdGZvcm0vcXQvU2hhcmVkQnVmZmVyUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9UaGlyZFBh
cnR5Q29va2llc1F0LmNwcCBcCisgICAgcGxhdGZvcm0vcXQvVXNlckFnZW50UXQuY3BwIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q2FjaGVRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3F0L0ZvbnRDdXN0b21QbGF0Zm9ybURhdGFRdC5jcHAgXAogICAgIHBsYXRmb3JtL2dy
YXBoaWNzL3F0L0dseXBoUGFnZVRyZWVOb2RlUXQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1VzZXJBZ2VudFF0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3F0L1VzZXJBZ2VudFF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MzhiMmU3MzliNmJmMTVjMzhlNjg1
NzcyM2EyMTQ4ZTE0YmZkM2EzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vcXQvVXNlckFnZW50UXQuY3BwCkBAIC0wLDAgKzEsMTg0IEBACisvKgorICAgIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcg
U2VydmljZXMgSW5jLgorICAgIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAg
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIlVzZXJBZ2VudFF0LmgiCisKKyNpbmNsdWRlIDxR
Q29yZUFwcGxpY2F0aW9uPgorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisjaWYg
ZGVmaW5lZCBRX09TX1dJTjMyCisjaW5jbHVkZSA8V2ViQ29yZS9TeXN0ZW1JbmZvLmg+CisjZW5k
aWYgLy8gUV9PU19XSU4zMgorI2luY2x1ZGUgPFdlYktpdFZlcnNpb24uaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisvKiEKKyAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGEgdXNl
ciBhZ2VudCBmb3IgSFRUUCByZXF1ZXN0cyBpcyBuZWVkZWQuIAorCisgICAgVGhpcyBpbXBsZW1l
bnRhdGlvbiByZXR1cm5zIHRoZSBmb2xsb3dpbmcgdmFsdWU6CisKKyAgICAiTW96aWxsYS81LjAg
KCVQbGF0Zm9ybSUlU2VjdXJpdHklJVN1YnBsYXRmb3JtJSkgQXBwbGVXZWJLaXQvJVdlYktpdFZl
cnNpb24lIChLSFRNTCwgbGlrZSBHZWNrbykgJUFwcFZlcnNpb24gU2FmYXJpLyVXZWJLaXRWZXJz
aW9uJSIKKworICAgIEluIHRoaXMgc3RyaW5nIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSByZXBs
YWNlZCB0aGUgZmlyc3QgdGltZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkOgorICAgIFxsaXN0Cisg
ICAgXGxpICVQbGF0Zm9ybSUgZXhwYW5kcyB0byB0aGUgd2luZG93aW5nIHN5c3RlbSBmb2xsb3dl
ZCBieSAiOyAiIGlmIGl0IGlzIG5vdCBXaW5kb3dzIChlLmcuICJYMTE7ICIpLgorICAgIFxsaSAl
U2VjdXJpdHklIGV4cGFuZHMgdG8gIk47ICIgaWYgU1NMIGlzIGRpc2FibGVkLgorICAgIFxsaSAl
U3VicGxhdGZvcm0lIGV4cGFuZHMgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0gdmVyc2lvbiAoZS5n
LiAiV2luZG93cyBOVCA2LjEiIG9yICJJbnRlbCBNYWMgT1MgWCAxMC41IikuCisgICAgXGxpICVX
ZWJLaXRWZXJzaW9uJSBpcyB0aGUgdmVyc2lvbiBvZiBXZWJLaXQgdGhlIGFwcGxpY2F0aW9uIHdh
cyBjb21waWxlZCBhZ2FpbnN0LgorICAgIC9lbmRsaXN0CisKKyAgICBUaGUgZm9sbG93aW5nIHZh
bHVlIGlzIHJlcGxhY2VkIGVhY2ggdGltZSB0aGUgZnVuY2l0b24gaXMgY2FsbGVkCisgICAgXGxp
c3QKKyAgICBcbGkgJUFwcFZlcnNpb24lIGV4cGFuZHMgdG8gUUNvcmVBcHBsaWNhdGlvbjo6YXBw
bGljYXRpb25OYW1lKCkvUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25WZXJzaW9uKCkgaWYg
dGhleSdyZSBzZXQ7IG90aGVyd2lzZSBkZWZhdWx0aW5nIHRvIFF0IGFuZCB0aGUgY3VycmVudCBR
dCB2ZXJzaW9uLgorICAgIFxlbmRsaXN0CisqLworU3RyaW5nIFVzZXJBZ2VudFF0OjpzdGFuZGFy
ZFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCkKK3sK
KyAgICBzdGF0aWMgUVN0cmluZyB1YTsKKworICAgIGlmICh1YS5pc051bGwoKSkgeworCisgICAg
ICAgIHVhID0gUUxhdGluMVN0cmluZygiTW96aWxsYS81LjAgKCUxJTIlMykgQXBwbGVXZWJLaXQv
JTQgKEtIVE1MLCBsaWtlIEdlY2tvKSAlOTkgU2FmYXJpLyU1Iik7CisKKyAgICAgICAgLy8gUGxh
dGZvcm0uCisgICAgICAgIHVhID0gdWEuYXJnKFFMYXRpbjFTdHJpbmcoCisjaWZkZWYgUV9XU19N
QUMKKyAgICAgICAgICAgICJNYWNpbnRvc2g7ICIKKyNlbGlmIGRlZmluZWQgUV9XU19RV1MKKyAg
ICAgICAgICAgICJRdEVtYmVkZGVkOyAiCisjZWxpZiBkZWZpbmVkIFFfV1NfV0lOCisgICAgICAg
ICAgICAvLyBOb3RoaW5nLgorI2VsaWYgZGVmaW5lZCBRX1dTX1gxMQorICAgICAgICAgICAgIlgx
MTsgIgorI2Vsc2UKKyAgICAgICAgICAgICJVbmtub3duOyAiCisjZW5kaWYKKyAgICAgICAgKSk7
CisKKyAgICAgICAgLy8gU2VjdXJpdHkgc3RyZW5ndGguCisgICAgICAgIFFTdHJpbmcgc2VjdXJp
dHlTdHJlbmd0aDsKKyNpZiBkZWZpbmVkKFFUX05PX09QRU5TU0wpCisgICAgICAgIHNlY3VyaXR5
U3RyZW5ndGggPSBRTGF0aW4xU3RyaW5nKCJOOyAiKTsKKyNlbmRpZgorICAgICAgICB1YSA9IHVh
LmFyZyhzZWN1cml0eVN0cmVuZ3RoKTsKKworICAgICAgICAvLyBPcGVyYXRpbmcgc3lzdGVtLgor
ICAgICAgICB1YSA9IHVhLmFyZyhRTGF0aW4xU3RyaW5nKAorI2lmZGVmIFFfT1NfQUlYCisgICAg
ICAgICAgICAiQUlYIgorI2VsaWYgZGVmaW5lZCBRX09TX1dJTjMyCisgICAgICAgICAgICB3aW5k
b3dzVmVyc2lvbkZvclVBU3RyaW5nKCkKKyNlbGlmIGRlZmluZWQgUV9PU19EQVJXSU4KKyNpZmRl
ZiBfX2kzODZfXyB8fCBfX3g4Nl82NF9fCisgICAgICAgICAgICAiSW50ZWwgTWFjIE9TIFgiCisj
ZWxzZQorICAgICAgICAgICAgIlBQQyBNYWMgT1MgWCIKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVk
IFFfT1NfQlNESQorICAgICAgICAgICAgIkJTRCIKKyNlbGlmIGRlZmluZWQgUV9PU19CU0Q0Cisg
ICAgICAgICAgICAiQlNEIEZvdXIiCisjZWxpZiBkZWZpbmVkIFFfT1NfQ1lHV0lOCisgICAgICAg
ICAgICAiQ3lnd2luIgorI2VsaWYgZGVmaW5lZCBRX09TX0RHVVgKKyAgICAgICAgICAgICJERy9V
WCIKKyNlbGlmIGRlZmluZWQgUV9PU19EWU5JWAorICAgICAgICAgICAgIkRZTklYL3B0eCIKKyNl
bGlmIGRlZmluZWQgUV9PU19GUkVFQlNECisgICAgICAgICAgICAiRnJlZUJTRCIKKyNlbGlmIGRl
ZmluZWQgUV9PU19IUFVYCisgICAgICAgICAgICAiSFAtVVgiCisjZWxpZiBkZWZpbmVkIFFfT1Nf
SFVSRAorICAgICAgICAgICAgIkdOVSBIdXJkIgorI2VsaWYgZGVmaW5lZCBRX09TX0lSSVgKKyAg
ICAgICAgICAgICJTR0kgSXJpeCIKKyNlbGlmIGRlZmluZWQgUV9PU19MSU5VWAorCisjaWYgZGVm
aW5lZChfX3g4Nl82NF9fKQorICAgICAgICAgICAgIkxpbnV4IHg4Nl82NCIKKyNlbGlmIGRlZmlu
ZWQoX19pMzg2X18pCisgICAgICAgICAgICAiTGludXggaTY4NiIKKyNlbHNlCisgICAgICAgICAg
ICAiTGludXgiCisjZW5kaWYKKworI2VsaWYgZGVmaW5lZCBRX09TX0xZTlgKKyAgICAgICAgICAg
ICJMeW54T1MiCisjZWxpZiBkZWZpbmVkIFFfT1NfTkVUQlNECisgICAgICAgICAgICAiTmV0QlNE
IgorI2VsaWYgZGVmaW5lZCBRX09TX09TMgorICAgICAgICAgICAgIk9TLzIiCisjZWxpZiBkZWZp
bmVkIFFfT1NfT1BFTkJTRAorICAgICAgICAgICAgIk9wZW5CU0QiCisjZWxpZiBkZWZpbmVkIFFf
T1NfT1MyRU1YCisgICAgICAgICAgICAiT1MvMiIKKyNlbGlmIGRlZmluZWQgUV9PU19PU0YKKyAg
ICAgICAgICAgICJIUCBUcnU2NCBVTklYIgorI2VsaWYgZGVmaW5lZCBRX09TX1FOWDYKKyAgICAg
ICAgICAgICJRTlggUlRQIFNpeCIKKyNlbGlmIGRlZmluZWQgUV9PU19RTlgKKyAgICAgICAgICAg
ICJRTlgiCisjZWxpZiBkZWZpbmVkIFFfT1NfUkVMSUFOVAorICAgICAgICAgICAgIlJlbGlhbnQg
VU5JWCIKKyNlbGlmIGRlZmluZWQgUV9PU19TQ08KKyAgICAgICAgICAgICJTQ08gT3BlblNlcnZl
ciIKKyNlbGlmIGRlZmluZWQgUV9PU19TT0xBUklTCisgICAgICAgICAgICAiU3VuIFNvbGFyaXMi
CisjZWxpZiBkZWZpbmVkIFFfT1NfVUxUUklYCisgICAgICAgICAgICAiREVDIFVsdHJpeCIKKyNl
bGlmIGRlZmluZWQgUV9PU19VTklYCisgICAgICAgICAgICAiVU5JWCBCU0QvU1lTViBzeXN0ZW0i
CisjZWxpZiBkZWZpbmVkIFFfT1NfVU5JWFdBUkUKKyAgICAgICAgICAgICJVbml4V2FyZSBTZXZl
biwgT3BlbiBVTklYIEVpZ2h0IgorI2Vsc2UKKyAgICAgICAgICAgICJVbmtub3duIgorI2VuZGlm
CisgICAgICAgICkpOworCisgICAgICAgIC8vIFdlYktpdCB2ZXJzaW9uLgorICAgICAgICAvLyBU
T0RPOiB1c2luZyBtYWNyb3MgZnJvbSBXZWJLaXQxIHVudGlsIFdlYktpdDIgUXQgcG9ydCB2ZXJz
aW9uaW5nIGlzIHNvcnRlZCBvdXQuCisgICAgICAgIFFTdHJpbmcgdmVyc2lvbiA9IFFTdHJpbmco
UUxhdGluMVN0cmluZygiJTEuJTIrIikpLmFyZyhRU3RyaW5nOjpudW1iZXIoV0VCS0lUX01BSk9S
X1ZFUlNJT04pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUVN0cmluZzo6bnVtYmVyKFdFQktJVF9NSU5PUl9WRVJTSU9OKSk7
CisgICAgICAgIHVhID0gdWEuYXJnKHZlcnNpb24sIHZlcnNpb24pOworICAgIH0KKworICAgIFFT
dHJpbmcgYXBwTmFtZTsKKyAgICBpZiAoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50LmlzRW1w
dHkoKSkKKyAgICAgICAgYXBwTmFtZSA9IFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uTmFt
ZSgpOworICAgIGVsc2UKKyAgICAgICAgYXBwTmFtZSA9IGFwcGxpY2F0aW9uTmFtZUZvclVzZXJB
Z2VudDsKKworICAgIGlmICghYXBwTmFtZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgUVN0cmluZyBh
cHBWZXIgPSBRQ29yZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvblZlcnNpb24oKTsKKyAgICAgICAg
aWYgKCFhcHBWZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgYXBwTmFtZS5hcHBlbmQoUUxhdGlu
MUNoYXIoJy8nKSArIGFwcFZlcik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gUXQgdmVyc2lv
bi4KKyAgICAgICAgYXBwTmFtZSA9IFFMYXRpbjFTdHJpbmcoIlF0LyIpICsgUUxhdGluMVN0cmlu
ZyhxVmVyc2lvbigpKTsKKyAgICB9CisKKyAgICByZXR1cm4gdWEuYXJnKGFwcE5hbWUpOworfQor
Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Vc2VyQWdlbnRRdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVXNlckFnZW50UXQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
ZTgzNjBhMzI5ZGRlOGI4MTk2YTdmNGFkMGYzNzkxNTQ3YWVjZDBkCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvVXNlckFnZW50UXQuaApAQCAtMCwwICsxLDMz
IEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCisqLworI2lmbmRlZiBVc2VyQWdlbnRRdF9oCisjZGVmaW5lIFVz
ZXJBZ2VudFF0X2gKKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFVzZXJBZ2VudFF0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
U3RyaW5nIHN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOworfTsKKworfQorCisjZW5k
aWYgLy8gVXNlckFnZW50UXRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCmluZGV4IDhmYjMx
OWRkNDI0ZmZkZjlmNTZlNzU4Y2Y5YjgyZmNiMWJmNmUwNzguLjIwODRlYjlhNTczZjkxNzZjMTM3
NzExNGUxMDk5YWI1MmYxZmNhMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3
ZWJwYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTEs
NSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDksIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMp
CiAgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4K
ICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLgogCkBAIC0xMTMsNiArMTEzLDcgQEAK
ICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAjZW5kaWYgLy8gUV9PU19XSU4zMgogI2luY2x1ZGUg
IlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlVzZXJBZ2VudFF0LmgiCiAjaW5jbHVkZSAiVXRp
bHNRdC5oIgogI2luY2x1ZGUgIldlYkV2ZW50Q29udmVyc2lvbi5oIgogI2luY2x1ZGUgIldpbmRv
d0ZlYXR1cmVzLmgiCkBAIC0zNzg0LDE1OCArMzc4NSw3IEBAIFFXZWJQbHVnaW5GYWN0b3J5ICpR
V2ViUGFnZTo6cGx1Z2luRmFjdG9yeSgpIGNvbnN0CiAqLwogUVN0cmluZyBRV2ViUGFnZTo6dXNl
ckFnZW50Rm9yVXJsKGNvbnN0IFFVcmwmKSBjb25zdAogewotICAgIC8vIHNwbGl0dGluZyB0aGUg
c3RyaW5nIGluIHRocmVlIGFuZCB1c2VyIFFTdHJpbmdCdWlsZGVyIGlzIGJldHRlciB0aGFuIHVz
aW5nIFFTdHJpbmc6OmFyZygpCi0gICAgc3RhdGljIFFTdHJpbmcgZmlyc3RQYXJ0OwotICAgIHN0
YXRpYyBRU3RyaW5nIHNlY29uZFBhcnQ7Ci0gICAgc3RhdGljIFFTdHJpbmcgdGhpcmRQYXJ0Owot
Ci0gICAgaWYgKGZpcnN0UGFydC5pc051bGwoKSB8fCBzZWNvbmRQYXJ0LmlzTnVsbCgpIHx8IHRo
aXJkUGFydC5pc051bGwoKSkgewotICAgICAgICBRU3RyaW5nIGZpcnN0UGFydFRlbXA7Ci0gICAg
ICAgIGZpcnN0UGFydFRlbXAucmVzZXJ2ZSgxNTApOwotICAgICAgICBmaXJzdFBhcnRUZW1wICs9
IFFTdHJpbmc6OmZyb21MYXRpbjEoIk1vemlsbGEvNS4wICgiCi0KLSAgICAvLyBQbGF0Zm9ybQot
I2lmZGVmIFFfV1NfTUFDCi0gICAgICAgICJNYWNpbnRvc2g7ICIKLSNlbGlmIGRlZmluZWQgUV9X
U19RV1MKLSAgICAgICAgIlF0RW1iZWRkZWQ7ICIKLSNlbGlmIGRlZmluZWQgUV9XU19XSU4KLSAg
ICAgICAgLy8gTm90aGluZwotI2VsaWYgZGVmaW5lZCBRX1dTX1gxMQotICAgICAgICAiWDExOyAi
Ci0jZWxzZQotICAgICAgICAiVW5rbm93bjsgIgotI2VuZGlmCi0gICAgKTsKLQotI2lmIGRlZmlu
ZWQoUVRfTk9fT1BFTlNTTCkKLSAgICAgICAgLy8gTm8gU1NMIHN1cHBvcnQKLSAgICAgICAgZmly
c3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJOOyAiKTsKLSNlbmRpZgotCi0gICAg
ICAgIC8vIE9wZXJhdGluZyBzeXN0ZW0KLSNpZmRlZiBRX09TX0FJWAotICAgICAgICBmaXJzdFBh
cnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkFJWCIpOwotI2VsaWYgZGVmaW5lZCBRX09T
X1dJTjMyCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gd2luZG93c1ZlcnNpb25Gb3JVQVN0cmlu
ZygpOwotI2VsaWYgZGVmaW5lZCBRX09TX0RBUldJTgotI2lmZGVmIF9faTM4Nl9fIHx8IF9feDg2
XzY0X18KLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJJbnRl
bCBNYWMgT1MgWCIpOwotI2Vsc2UKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpm
cm9tTGF0aW4xKCJQUEMgTWFjIE9TIFgiKTsKLSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkIFFfT1Nf
QlNESQotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkJTRCIp
OwotI2VsaWYgZGVmaW5lZCBRX09TX0JTRDQKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3Ry
aW5nOjpmcm9tTGF0aW4xKCJCU0QgRm91ciIpOwotI2VsaWYgZGVmaW5lZCBRX09TX0NZR1dJTgot
ICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkN5Z3dpbiIpOwot
I2VsaWYgZGVmaW5lZCBRX09TX0RHVVgKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5n
Ojpmcm9tTGF0aW4xKCJERy9VWCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX0RZTklYCi0gICAgICAg
IGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiRFlOSVgvcHR4Iik7Ci0jZWxp
ZiBkZWZpbmVkIFFfT1NfRlJFRUJTRAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6
OmZyb21MYXRpbjEoIkZyZWVCU0QiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19IUFVYCi0gICAgICAg
IGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiSFAtVVgiKTsKLSNlbGlmIGRl
ZmluZWQgUV9PU19IVVJECi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxh
dGluMSgiR05VIEh1cmQiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19JUklYCi0gICAgICAgIGZpcnN0
UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiU0dJIElyaXgiKTsKLSNlbGlmIGRlZmlu
ZWQgUV9PU19MSU5VWAotCi0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKQotICAgICAgICBmaXJzdFBh
cnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkxpbnV4IHg4Nl82NCIpOwotI2VsaWYgZGVm
aW5lZChfX2kzODZfXykKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0
aW4xKCJMaW51eCBpNjg2Iik7Ci0jZWxzZQotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJp
bmc6OmZyb21MYXRpbjEoIkxpbnV4Iik7Ci0jZW5kaWYKLQotI2VsaWYgZGVmaW5lZCBRX09TX0xZ
TlgKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJMeW54T1Mi
KTsKLSNlbGlmIGRlZmluZWQgUV9PU19ORVRCU0QKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBR
U3RyaW5nOjpmcm9tTGF0aW4xKCJOZXRCU0QiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19PUzIKLSAg
ICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJPUy8yIik7Ci0jZWxp
ZiBkZWZpbmVkIFFfT1NfT1BFTkJTRAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6
OmZyb21MYXRpbjEoIk9wZW5CU0QiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19PUzJFTVgKLSAgICAg
ICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJPUy8yIik7Ci0jZWxpZiBk
ZWZpbmVkIFFfT1NfT1NGCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxh
dGluMSgiSFAgVHJ1NjQgVU5JWCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX1FOWDYKLSAgICAgICAg
Zmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJRTlggUlRQIFNpeCIpOwotI2Vs
aWYgZGVmaW5lZCBRX09TX1FOWAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZy
b21MYXRpbjEoIlFOWCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX1JFTElBTlQKLSAgICAgICAgZmly
c3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJSZWxpYW50IFVOSVgiKTsKLSNlbGlm
IGRlZmluZWQgUV9PU19TQ08KLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9t
TGF0aW4xKCJTQ08gT3BlblNlcnZlciIpOwotI2VsaWYgZGVmaW5lZCBRX09TX1NPTEFSSVMKLSAg
ICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJTdW4gU29sYXJpcyIp
OwotI2VsaWYgZGVmaW5lZCBRX09TX1VMVFJJWAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFT
dHJpbmc6OmZyb21MYXRpbjEoIkRFQyBVbHRyaXgiKTsKLSNlbGlmIGRlZmluZWQgUV9PU19VTklY
Ci0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiVU5JWCBCU0Qv
U1lTViBzeXN0ZW0iKTsKLSNlbGlmIGRlZmluZWQgUV9PU19VTklYV0FSRQotICAgICAgICBmaXJz
dFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIlVuaXhXYXJlIFNldmVuLCBPcGVuIFVO
SVggRWlnaHQiKTsKLSNlbHNlCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJv
bUxhdGluMSgiVW5rbm93biIpOwotI2VuZGlmCi0KLSNpZiBVU0UoUVRfTU9CSUxJVFlfU1lTVEVN
SU5GTykKLSAgICAgICAgLy8gYWRkaW5nIE1vZGVsIE51bWJlcgotICAgICAgICBRdE1vYmlsaXR5
OjpRU3lzdGVtRGV2aWNlSW5mbyBzeXN0ZW1EZXZpY2VJbmZvOwotCi0gICAgICAgIFFTdHJpbmcg
bW9kZWwgPSBzeXN0ZW1EZXZpY2VJbmZvLm1vZGVsKCk7Ci0gICAgICAgIGlmICghbW9kZWwuaXNF
bXB0eSgpKSB7Ci0gICAgICAgICAgICBpZiAoIWZpcnN0UGFydFRlbXAuZW5kc1dpdGgoIjsgIikp
Ci0gICAgICAgICAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCI7
ICIpOwotICAgICAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBzeXN0ZW1EZXZpY2VJbmZvLm1vZGVs
KCk7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBmaXJzdFBhcnRUZW1wLnNxdWVlemUoKTsK
LSAgICAgICAgZmlyc3RQYXJ0ID0gZmlyc3RQYXJ0VGVtcDsKLQotICAgICAgICBRU3RyaW5nIHNl
Y29uZFBhcnRUZW1wOwotICAgICAgICBzZWNvbmRQYXJ0VGVtcC5yZXNlcnZlKDE1MCk7Ci0gICAg
ICAgIHNlY29uZFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIikgIik7Ci0KLSAgICAg
ICAgLy8gd2Via2l0L3F0IHZlcnNpb24KLSAgICAgICAgc2Vjb25kUGFydFRlbXAgKz0gUVN0cmlu
Zzo6ZnJvbUxhdGluMSgiQXBwbGVXZWJLaXQvIik7Ci0gICAgICAgIHNlY29uZFBhcnRUZW1wICs9
IHFXZWJLaXRWZXJzaW9uKCk7Ci0gICAgICAgIHNlY29uZFBhcnRUZW1wICs9IFFTdHJpbmc6OmZy
b21MYXRpbjEoIiAoS0hUTUwsIGxpa2UgR2Vja28pICIpOwotCi0KLSAgICAgICAgLy8gQXBwbGlj
YXRpb24gbmFtZSBzcGxpdCB0aGUgdGhpcmQgcGFydAotICAgICAgICBzZWNvbmRQYXJ0VGVtcC5z
cXVlZXplKCk7Ci0gICAgICAgIHNlY29uZFBhcnQgPSBzZWNvbmRQYXJ0VGVtcDsKLQotICAgICAg
ICBRU3RyaW5nIHRoaXJkUGFydFRlbXA7Ci0gICAgICAgIHRoaXJkUGFydFRlbXAucmVzZXJ2ZSgx
NTApOwotICAgICAgICB0aGlyZFBhcnRUZW1wICs9IFFMYXRpbjFTdHJpbmcoIiBTYWZhcmkvIik7
Ci0gICAgICAgIHRoaXJkUGFydFRlbXAgKz0gcVdlYktpdFZlcnNpb24oKTsKLSAgICAgICAgdGhp
cmRQYXJ0VGVtcC5zcXVlZXplKCk7Ci0gICAgICAgIHRoaXJkUGFydCA9IHRoaXJkUGFydFRlbXA7
Ci0gICAgICAgIFFfQVNTRVJUKCFmaXJzdFBhcnQuaXNOdWxsKCkpOwotICAgICAgICBRX0FTU0VS
VCghc2Vjb25kUGFydC5pc051bGwoKSk7Ci0gICAgICAgIFFfQVNTRVJUKCF0aGlyZFBhcnQuaXNO
dWxsKCkpOwotICAgIH0KLQotICAgIC8vIEFwcGxpY2F0aW9uIG5hbWUvdmVyc2lvbgotICAgIFFT
dHJpbmcgYXBwTmFtZSA9IFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uTmFtZSgpOwotICAg
IGlmICghYXBwTmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgUVN0cmluZyBhcHBWZXIgPSBRQ29y
ZUFwcGxpY2F0aW9uOjphcHBsaWNhdGlvblZlcnNpb24oKTsKLSAgICAgICAgaWYgKCFhcHBWZXIu
aXNFbXB0eSgpKQotICAgICAgICAgICAgYXBwTmFtZS5hcHBlbmQoUUxhdGluMUNoYXIoJy8nKSAr
IGFwcFZlcik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUXQgdmVyc2lvbgotICAgICAgICBh
cHBOYW1lID0gUVN0cmluZzo6ZnJvbUxhdGluMSgiUXQvIikgKyBRU3RyaW5nOjpmcm9tTGF0aW4x
KHFWZXJzaW9uKCkpOwotICAgIH0KLQotICAgIHJldHVybiBmaXJzdFBhcnQgKyBzZWNvbmRQYXJ0
ICsgYXBwTmFtZSArIHRoaXJkUGFydDsKKyAgICByZXR1cm4gVXNlckFnZW50UXQ6OnN0YW5kYXJk
VXNlckFnZW50KCIiKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YlBhZ2VQcm94eVF0LmNwcAppbmRleCA1Y2FmYWQ1OWM2ODljMzgyNDY0YjgwNzE5MDRiMDUyOWU3
NWU1YmVhLi40YTJlN2Q5ODljYWQzOWJkOTdkNTE0N2I1Y2NjY2Q1M2Q1N2MxMjBiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAKQEAgLTEsNCAr
MSw1IEBACiAvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9v
ciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI5LDkgKzMwLDEwIEBA
CiAjaW5jbHVkZSAiUGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIlF0TmV0d29ya1JlcGx5RGF0YS5o
IgogI2luY2x1ZGUgIlF0UGFnZUNsaWVudC5oIgotI2luY2x1ZGUgInFxdWlja25ldHdvcmtyZXBs
eV9wLmgiCisjaW5jbHVkZSAiVXNlckFnZW50UXQuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKKyNpbmNsdWRlICJxcXVpY2tuZXR3
b3JrcmVwbHlfcC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCkBAIC00MSw4ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJL
aXQgewogCiBTdHJpbmcgV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCkKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQgbm90IGJlIGhhcmQgY29kZWQuCi0gICAgcmV0dXJuICJNb3ppbGxhLzUuMCAoTWFjaW50
b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF82KSBBcHBsZVdlYktpdC81MzEuNCAoS0hUTUwsIGxpa2Ug
R2Vja28pIFZlcnNpb24vNC4wLjMgU2FmYXJpLzUzMS40IjsKKyAgICByZXR1cm4gVXNlckFnZW50
UXQ6OnN0YW5kYXJkVXNlckFnZW50KGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzYXZlUmVjZW50U2VhcmNoZXMoY29uc3QgU3RyaW5nJiwgY29u
c3QgVmVjdG9yPFN0cmluZz4mKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRiZWIzNjUyMGNmOTQ0NmQzMWFiZDRjNjA3OTc1
ZGRkZWM5OTlmMmIuLjBhMjM2NDExOTk4YWEzNWJhZTI1Y2M2YTkxYjJiOTc2ZDUyNWIwYjcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wNS0yMyAgTGF1cm8gTmV0byAgPGxhdXJvLm5ldG9A
b3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gZmFzdC9mb3Jtcy9hY2Nlc3Mta2V5
LWZvci1hbGwtZWxlbWVudHMuaHRtbCBmYWlscworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM5MTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBY2Nlc3Mta2V5IHRlc3RzIHdlcmUgZmFpbGluZyBkdWUgdG8g
aGFyZGNvZGVkIE1hYyBPUyBYIGluIHRoZQorICAgICAgICBRdCBXSzIgdXNlciBhZ2VudCBzdHJp
bmcuIFRoaXMgY29tbWl0IG1vdmVzIHRoZSBXSzEgaW1wbGVtZW50YXRpb24KKyAgICAgICAgdG8g
YSBzaGFyZWQgb25lIHRvIGJlIHVzZWQgYnkgYm90aCB2ZXJzaW9ucy4KKworICAgICAgICBVbnNr
aXAgbm93IHBhc3NpbmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC01LjAtd2syL1Nr
aXBwZWQ6CisKIDIwMTItMDUtMzEgIFVsYW4gRGVnZW5iYWV2ICA8dWxhbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW3Y4XSBGaXggYnVnIHJlZmVyZW5jZSBpbiBhcnJheS1vdmVycmlkZS1zZXQu
aHRtbCB0ZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC01LjAtd2syL1Nr
aXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC01LjAtd2syL1NraXBwZWQKaW5kZXggZjVh
MTM3YmMzYjg4YjdlMzRmNmQxZmY2YmE2ZDY5NmQ3MzE2YzRkYy4uZDM5OGE3NGU3ZDU2OTNmYjg2
NTM4YjVlODkyNjE3ZjJjMTU3N2Q3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQtNS4wLXdrMi9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LTUuMC13azIv
U2tpcHBlZApAQCAtNDgsNyArNDgsNiBAQCBlZGl0aW5nL3NlbGVjdGlvbi9zZWxlY3Qtb3V0LW9m
LWVkaXRhYmxlLmh0bWwKIGZhc3QvZG9tL3ZlcnRpY2FsLXNjcm9sbGJhci1pbi1ydGwuaHRtbAog
ZmFzdC9keW5hbWljL2xheWVyLWhpdC10ZXN0LWNyYXNoLmh0bWwKIGZhc3QvZW5jb2RpbmcvbWFp
bHRvLWFsd2F5cy11dGYtOC5odG1sCi1mYXN0L2V2ZW50cy9hY2Nlc3Mta2V5LXNlbGYtZGVzdHJ1
Y3QuaHRtbAogZmFzdC9ldmVudHMvY29udGV4dC1uby1kZXNlbGVjdC5odG1sCiBmYXN0L2V2ZW50
cy9jb250ZXh0LW9ubW91c2Vkb3duLWV2ZW50Lmh0bWwKIGZhc3QvZXZlbnRzL2NvbnRleHRtZW51
LXNjcm9sbGVkLXBhZ2Utd2l0aC1mcmFtZS5odG1sCkBAIC02NCwxMiArNjMsOSBAQCBmYXN0L2V2
ZW50cy9zY3JvbGwtaW4tc2NhbGVkLXBhZ2Utd2l0aC1vdmVyZmxvdy1oaWRkZW4uaHRtbAogZmFz
dC9ldmVudHMvc2VsZWN0c3RhcnQtcHJldmVudC1zZWxlY3Rpb24tb24tcmlnaHQtY2xpY2suaHRt
bAogZmFzdC9ldmVudHMvd2hlZWxldmVudC1pbi1ob3Jpem9udGFsLXNjcm9sbGJhci1pbi1ydGwu
aHRtbAogZmFzdC9ldmVudHMvd2hlZWxldmVudC1pbi12ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRs
Lmh0bWwKLWZhc3QvZm9ybXMvYWNjZXNzLWtleS5odG1sCiBmYXN0L2Zvcm1zL2ZvY3VzLWNoYW5n
ZS1vbi1rZXlwcmVzcy5odG1sCi1mYXN0L2Zvcm1zL2ZvY3VzLXNlbGVjdGlvbi10ZXh0YXJlYS5o
dG1sCiBmYXN0L2Zvcm1zL2ludGVyYWN0aXZlLXZhbGlkYXRpb24tYXR0YWNoLWFzc2VydGlvbi5o
dG1sCiBmYXN0L2Zvcm1zL2xlZ2VuZC1hY2Nlc3Mta2V5Lmh0bWwKLWZhc3QvZm9ybXMvc2VsZWN0
LWFjY2Vzc2tleS5odG1sCiBmYXN0L2xvYWRlci9wb2xpY3ktZGVsZWdhdGUtYWN0aW9uLWhpdC10
ZXN0LXpvb21lZC5odG1sCiAKIHN2Zy9jdXN0b20vdXNlLWV2ZW50cy1jcmFzaC5zdmcKQEAgLTIx
MCwxMCArMjA2LDYgQEAgc3ZnL2FzLW9iamVjdC9zdmctZW1iZWRkZWQtaW4taHRtbC1pbi1pZnJh
bWUuaHRtbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA5MzUK
IGZhc3QvdHJhbnNmb3Jtcy9zY3JvbGxJbnRvVmlldy10cmFuc2Zvcm1lZC5odG1sCiAKLSMgW1F0
XVtXSzJdIGZhc3QvZm9ybXMvYWNjZXNzLWtleS1mb3ItYWxsLWVsZW1lbnRzLmh0bWwgZmFpbHMK
LSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczOTE3Ci1mYXN0L2Zv
cm1zL2FjY2Vzcy1rZXktZm9yLWFsbC1lbGVtZW50cy5odG1sCi0KICMgW1F0XVtXSzJdIGNzczMv
dW5pY29kZS1iaWRpLWlzb2xhdGUtYWhhcm9uLWZhaWxpbmcuaHRtbCBmYWlscwogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ1MDUKIGNzczMvdW5pY29kZS1iaWRp
LWlzb2xhdGUtYWhhcm9uLWZhaWxpbmcuaHRtbApAQCAtMjI5LDcgKzIyMSw2IEBAIHN2Zy9jdXN0
b20vZ2V0c2NyZWVuY3RtLWluLXNjcm9sbGFibGUtZGl2LWFyZWEueGh0bWwKICMgRmFpbGluZyB0
ZXN0cyBvbiBxdC13azIgYWZ0ZXIgdW5za2lwcGluZyBxdC01LjAvU2tpcHBlZCB0ZXN0cywgbmVl
ZCBtb3JlIGludmVzdGlnYXRpb24KIGVkaXRpbmcvc2VsZWN0aW9uL2NsaWNrLWluLW1hcmdpbnMt
aW5zaWRlLWVkaXRhYmxlLWRpdi5odG1sCiBmYXN0L2Jsb2NrL2Jhc2ljLzAyMC5odG1sCi1mYXN0
L2RvbS9hY2Nlc3Mta2V5LWlmcmFtZS5odG1sCiBmYXN0L2hpc3RvcnkvdmlzaXRlZC1saW5rLWJh
Y2tncm91bmQtY29sb3IuaHRtbAogZmFzdC9sYXllcnMvbGF5ZXItdmlzaWJpbGl0eS1zdWJsYXll
ci5odG1sCiBmYXN0L2xheWVycy9sYXllci12aXNpYmlsaXR5Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163865</attachid>
            <date>2012-09-13 07:29:05 -0700</date>
            <delta_ts>2012-09-13 09:07:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73917-20120913112842.patch</filename>
            <type>text/plain</type>
            <size>21679</size>
            <attacher name="Lauro Moura Maranhao Neto">lauro.neto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdiOWI5YmU4ZWU4NzRh
MTQ4ZWIzMzJmZDkyNzAyMDJmZjYxOTkzYy4uMzk0MTdkODRiZTVjMGIxNjJmMjIzMmViZjliNzZk
MTkwYjYyNmVkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA5LTExICBMYXVy
byBOZXRvICA8bGF1cm8ubmV0b0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFtRdF1bV0syXSBm
YXN0L2Zvcm1zL2FjY2Vzcy1rZXktZm9yLWFsbC1lbGVtZW50cy5odG1sIGZhaWxzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzkxNworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2Vzcy1rZXkgdGVzdHMg
d2VyZSBmYWlsaW5nIGR1ZSB0byBoYXJkY29kZWQgTWFjIE9TIFggaW4gdGhlCisgICAgICAgIFF0
IFdLMiB1c2VyIGFnZW50IHN0cmluZy4gVGhpcyBjb21taXQgbW92ZXMgdGhlIFdLMSBpbXBsZW1l
bnRhdGlvbgorICAgICAgICB0byBhIHNoYXJlZCBvbmUgdG8gYmUgdXNlZCBieSBib3RoIHZlcnNp
b25zLgorCisgICAgICAgIEFkZHMgdGhlIHNoYXJlZCB1c2VyIGFnZW50IGltcGxlbWVudGF0aW9u
LgorCisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9Vc2VyQWdl
bnRRdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpV
c2VyQWdlbnRRdDo6c3RhbmRhcmRVc2VyQWdlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Vz
ZXJBZ2VudFF0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChVc2VyQWdl
bnRRdCk6CisKIDIwMTItMDktMTIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21h
aWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMjgzMTggYW5kIHIx
MjgzMzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IGFkYzM5M2M2MDEyZWQ4MWM3NzhkYzI3NGJiNzMzZDE4
ZTllMjc2MjcuLjg2NDkzMDc0MjA0ZmE2NTBiZmY2NDQ0ZWU2NTBhMmRlMTJmMzAyMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDktMTEgIExhdXJvIE5ldG8gIDxsYXVy
by5uZXRvQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgW1F0XVtXSzJdIGZhc3QvZm9ybXMvYWNj
ZXNzLWtleS1mb3ItYWxsLWVsZW1lbnRzLmh0bWwgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczOTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWNjZXNzLWtleSB0ZXN0cyB3ZXJlIGZhaWxpbmcg
ZHVlIHRvIGhhcmRjb2RlZCBNYWMgT1MgWCBpbiB0aGUKKyAgICAgICAgUXQgV0syIHVzZXIgYWdl
bnQgc3RyaW5nLiBUaGlzIGNvbW1pdCBtb3ZlcyB0aGUgV0sxIGltcGxlbWVudGF0aW9uCisgICAg
ICAgIHRvIGEgc2hhcmVkIG9uZSB0byBiZSB1c2VkIGJ5IGJvdGggdmVyc2lvbnMuCisKKyAgICAg
ICAgQ2hhbmdlIFFXZWJQYWdlIHRvIHVzZSB0aGUgc2hhcmVkIHVzZXIgYWdlbnQgaW1wbGVtZW50
YXRpb24uCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoUVdlYlBhZ2U6
OnVzZXJBZ2VudEZvclVybCk6CisKIDIwMTItMDktMTIgIFJvbGFuZCBUYWthY3MgIDxydGFrYWNz
QGluZi51LXN6ZWdlZC5odT4KIAogICAgICAgICBbUXRdIFNlZ21lbnRhdGlvbiBmYXVsdCB3aGVu
IGNsb3NpbmcgUXRUZXN0QnJvd3NlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGNkMTAzMjgzNzAxZTY0NjhiM2Vi
NTE5YjE5YjYzNmI4NDU2ZWVjNzguLjI5ZjYwZDI2ZDA2Zjc4MjMzZTE0MDNiNTU2Y2MwMTBkNTkx
YzQ3MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOS0xMSAgTGF1cm8gTmV0
byAgPGxhdXJvLm5ldG9Ab3BlbmJvc3NhLm9yZz4KKworICAgICAgICBbUXRdW1dLMl0gZmFzdC9m
b3Jtcy9hY2Nlc3Mta2V5LWZvci1hbGwtZWxlbWVudHMuaHRtbCBmYWlscworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM5MTcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBY2Nlc3Mta2V5IHRlc3RzIHdlcmUg
ZmFpbGluZyBkdWUgdG8gaGFyZGNvZGVkIE1hYyBPUyBYIGluIHRoZQorICAgICAgICBRdCBXSzIg
dXNlciBhZ2VudCBzdHJpbmcuIFRoaXMgY29tbWl0IG1vdmVzIHRoZSBXSzEgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgdG8gYSBzaGFyZWQgb25lIHRvIGJlIHVzZWQgYnkgYm90aCB2ZXJzaW9ucy4K
KworICAgICAgICBVc2UgdGhlIHNoYXJlZCBpbXBsZW1lbnRhdGlvbiBpbnN0ZWFkIG9mIGhhcmRj
b2RpbmcgdGhlIHVzZXIgYWdlbnQuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvV2ViUGFnZVBy
b3h5UXQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFn
ZW50KToKKwogMjAxMi0wOS0xMSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTIyNzU1Mzc+IFJFR1JFU1NJT04ocjEyNzM4NCk6
IE5vbi1leGlzdGVudCBkaXJlY3RvcmllcyBhcmUgbm8gbG9uZ2VyIGNyZWF0ZWQgZm9yIHNhbmRi
b3ggcGF0aHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDg3MzI1NGVlOGJmOTRmZjNkMTc0MzJkOGYyNjhjMDky
ODE3NTQwYWIuLmI0ZjI5ZTQ5NDk4ZTNlNmEwMjZhNDBjYWZmNjdmNjc5ZmRiYTkxMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQpAQCAtMjIyNCw2ICsyMjI0LDcgQEAgSEVBREVSUyArPSBcCiAgICAgcGxhdGZvcm0v
cXQvUVdlYlBhZ2VDbGllbnQuaCBcCiAgICAgcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5oIFwK
ICAgICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0TW9iaWxlLmggXAorICAgIHBsYXRmb3JtL3F0
L1VzZXJBZ2VudFF0LmggXAogICAgIHBsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmggXAogICAgIHBs
YXRmb3JtL1Njcm9sbEFuaW1hdG9yLmggXAogICAgIHBsYXRmb3JtL1Njcm9sbGJhci5oIFwKQEAg
LTI3ODIsNiArMjc4Myw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL3F0L1J1bkxvb3BR
dC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1NoYXJlZEJ1ZmZlclF0LmNwcCBcCiAgICAgcGxhdGZv
cm0vcXQvVGhpcmRQYXJ0eUNvb2tpZXNRdC5jcHAgXAorICAgIHBsYXRmb3JtL3F0L1VzZXJBZ2Vu
dFF0LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvRm9udENhY2hlUXQuY3BwIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhUXQuY3BwIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HbHlwaFBhZ2VUcmVlTm9kZVF0LmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Vc2VyQWdlbnRRdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9Vc2VyQWdlbnRRdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWNlMDY0MDk3
YTU1YTAyNzQ2NDgyYjQ0NTk3ZWY1Y2U2YjdiYThiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1VzZXJBZ2VudFF0LmNwcApAQCAtMCwwICsxLDE4MyBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTIgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlr
b3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KKyAgICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUg
SW5jLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm
dWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyovCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJVc2VyQWdlbnRRdC5oIgor
CisjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KKworI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorI2lmIGRlZmluZWQgUV9PU19XSU4zMgorI2luY2x1ZGUgPFN5c3RlbUluZm8uaD4K
KyNlbmRpZiAvLyBRX09TX1dJTjMyCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLyohCisgICAg
VGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhIHVzZXIgYWdlbnQgZm9yIEhUVFAgcmVxdWVz
dHMgaXMgbmVlZGVkLgorCisgICAgVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIHRoZSBmb2xs
b3dpbmcgdmFsdWU6CisKKyAgICAiTW96aWxsYS81LjAgKCVQbGF0Zm9ybSUlU2VjdXJpdHklJVN1
YnBsYXRmb3JtJSkgQXBwbGVXZWJLaXQvJVdlYktpdFZlcnNpb24lIChLSFRNTCwgbGlrZSBHZWNr
bykgJUFwcFZlcnNpb24gU2FmYXJpLyVXZWJLaXRWZXJzaW9uJSIKKworICAgIEluIHRoaXMgc3Ry
aW5nIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSByZXBsYWNlZCB0aGUgZmlyc3QgdGltZSB0aGUg
ZnVuY3Rpb24gaXMgY2FsbGVkOgorICAgIFxsaXN0CisgICAgXGxpICVQbGF0Zm9ybSUgZXhwYW5k
cyB0byB0aGUgd2luZG93aW5nIHN5c3RlbSBmb2xsb3dlZCBieSAiOyAiIGlmIGl0IGlzIG5vdCBX
aW5kb3dzIChlLmcuICJYMTE7ICIpLgorICAgIFxsaSAlU2VjdXJpdHklIGV4cGFuZHMgdG8gIk47
ICIgaWYgU1NMIGlzIGRpc2FibGVkLgorICAgIFxsaSAlU3VicGxhdGZvcm0lIGV4cGFuZHMgdG8g
dGhlIG9wZXJhdGluZyBzeXN0ZW0gdmVyc2lvbiAoZS5nLiAiV2luZG93cyBOVCA2LjEiIG9yICJJ
bnRlbCBNYWMgT1MgWCAxMC41IikuCisgICAgXGxpICVXZWJLaXRWZXJzaW9uJSBpcyB0aGUgdmVy
c2lvbiBvZiBXZWJLaXQgdGhlIGFwcGxpY2F0aW9uIHdhcyBjb21waWxlZCBhZ2FpbnN0LgorICAg
IC9lbmRsaXN0CisKKyAgICBUaGUgZm9sbG93aW5nIHZhbHVlIGlzIHJlcGxhY2VkIGVhY2ggdGlt
ZSB0aGUgZnVuY2l0b24gaXMgY2FsbGVkCisgICAgXGxpc3QKKyAgICBcbGkgJUFwcFZlcnNpb24l
IGV4cGFuZHMgdG8gUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25OYW1lKCkvUUNvcmVBcHBs
aWNhdGlvbjo6YXBwbGljYXRpb25WZXJzaW9uKCkgaWYgdGhleSdyZSBzZXQ7IG90aGVyd2lzZSBk
ZWZhdWx0aW5nIHRvIFF0IGFuZCB0aGUgY3VycmVudCBRdCB2ZXJzaW9uLgorICAgIFxlbmRsaXN0
CisqLworU3RyaW5nIFVzZXJBZ2VudFF0OjpzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBTdHJpbmcg
JmFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCwgdW5zaWduZWQgaW50IHdlYmtpdE1ham9yVmVy
c2lvbiwgdW5zaWduZWQgaW50IHdlYmtpdE1pbm9yVmVyc2lvbikKK3sKKyAgICBzdGF0aWMgUVN0
cmluZyB1YTsKKworICAgIGlmICh1YS5pc051bGwoKSkgeworCisgICAgICAgIHVhID0gUUxhdGlu
MVN0cmluZygiTW96aWxsYS81LjAgKCUxJTIlMykgQXBwbGVXZWJLaXQvJTQgKEtIVE1MLCBsaWtl
IEdlY2tvKSAlOTkgU2FmYXJpLyU1Iik7CisKKyAgICAgICAgLy8gUGxhdGZvcm0uCisgICAgICAg
IHVhID0gdWEuYXJnKFFMYXRpbjFTdHJpbmcoCisjaWZkZWYgUV9XU19NQUMKKyAgICAgICAgICAg
ICJNYWNpbnRvc2g7ICIKKyNlbGlmIGRlZmluZWQgUV9XU19RV1MKKyAgICAgICAgICAgICJRdEVt
YmVkZGVkOyAiCisjZWxpZiBkZWZpbmVkIFFfV1NfV0lOCisgICAgICAgICAgICAvLyBOb3RoaW5n
LgorI2VsaWYgZGVmaW5lZCBRX1dTX1gxMQorICAgICAgICAgICAgIlgxMTsgIgorI2Vsc2UKKyAg
ICAgICAgICAgICJVbmtub3duOyAiCisjZW5kaWYKKyAgICAgICAgKSk7CisKKyAgICAgICAgLy8g
U2VjdXJpdHkgc3RyZW5ndGguCisgICAgICAgIFFTdHJpbmcgc2VjdXJpdHlTdHJlbmd0aDsKKyNp
ZiBkZWZpbmVkKFFUX05PX09QRU5TU0wpCisgICAgICAgIHNlY3VyaXR5U3RyZW5ndGggPSBRTGF0
aW4xU3RyaW5nKCJOOyAiKTsKKyNlbmRpZgorICAgICAgICB1YSA9IHVhLmFyZyhzZWN1cml0eVN0
cmVuZ3RoKTsKKworICAgICAgICAvLyBPcGVyYXRpbmcgc3lzdGVtLgorICAgICAgICB1YSA9IHVh
LmFyZyhRTGF0aW4xU3RyaW5nKAorI2lmZGVmIFFfT1NfQUlYCisgICAgICAgICAgICAiQUlYIgor
I2VsaWYgZGVmaW5lZCBRX09TX1dJTjMyCisgICAgICAgICAgICB3aW5kb3dzVmVyc2lvbkZvclVB
U3RyaW5nKCkKKyNlbGlmIGRlZmluZWQgUV9PU19EQVJXSU4KKyNpZmRlZiBfX2kzODZfXyB8fCBf
X3g4Nl82NF9fCisgICAgICAgICAgICAiSW50ZWwgTWFjIE9TIFgiCisjZWxzZQorICAgICAgICAg
ICAgIlBQQyBNYWMgT1MgWCIKKyNlbmRpZgorCisjZWxpZiBkZWZpbmVkIFFfT1NfQlNESQorICAg
ICAgICAgICAgIkJTRCIKKyNlbGlmIGRlZmluZWQgUV9PU19CU0Q0CisgICAgICAgICAgICAiQlNE
IEZvdXIiCisjZWxpZiBkZWZpbmVkIFFfT1NfQ1lHV0lOCisgICAgICAgICAgICAiQ3lnd2luIgor
I2VsaWYgZGVmaW5lZCBRX09TX0RHVVgKKyAgICAgICAgICAgICJERy9VWCIKKyNlbGlmIGRlZmlu
ZWQgUV9PU19EWU5JWAorICAgICAgICAgICAgIkRZTklYL3B0eCIKKyNlbGlmIGRlZmluZWQgUV9P
U19GUkVFQlNECisgICAgICAgICAgICAiRnJlZUJTRCIKKyNlbGlmIGRlZmluZWQgUV9PU19IUFVY
CisgICAgICAgICAgICAiSFAtVVgiCisjZWxpZiBkZWZpbmVkIFFfT1NfSFVSRAorICAgICAgICAg
ICAgIkdOVSBIdXJkIgorI2VsaWYgZGVmaW5lZCBRX09TX0lSSVgKKyAgICAgICAgICAgICJTR0kg
SXJpeCIKKyNlbGlmIGRlZmluZWQgUV9PU19MSU5VWAorCisjaWYgZGVmaW5lZChfX3g4Nl82NF9f
KQorICAgICAgICAgICAgIkxpbnV4IHg4Nl82NCIKKyNlbGlmIGRlZmluZWQoX19pMzg2X18pCisg
ICAgICAgICAgICAiTGludXggaTY4NiIKKyNlbHNlCisgICAgICAgICAgICAiTGludXgiCisjZW5k
aWYKKworI2VsaWYgZGVmaW5lZCBRX09TX0xZTlgKKyAgICAgICAgICAgICJMeW54T1MiCisjZWxp
ZiBkZWZpbmVkIFFfT1NfTkVUQlNECisgICAgICAgICAgICAiTmV0QlNEIgorI2VsaWYgZGVmaW5l
ZCBRX09TX09TMgorICAgICAgICAgICAgIk9TLzIiCisjZWxpZiBkZWZpbmVkIFFfT1NfT1BFTkJT
RAorICAgICAgICAgICAgIk9wZW5CU0QiCisjZWxpZiBkZWZpbmVkIFFfT1NfT1MyRU1YCisgICAg
ICAgICAgICAiT1MvMiIKKyNlbGlmIGRlZmluZWQgUV9PU19PU0YKKyAgICAgICAgICAgICJIUCBU
cnU2NCBVTklYIgorI2VsaWYgZGVmaW5lZCBRX09TX1FOWDYKKyAgICAgICAgICAgICJRTlggUlRQ
IFNpeCIKKyNlbGlmIGRlZmluZWQgUV9PU19RTlgKKyAgICAgICAgICAgICJRTlgiCisjZWxpZiBk
ZWZpbmVkIFFfT1NfUkVMSUFOVAorICAgICAgICAgICAgIlJlbGlhbnQgVU5JWCIKKyNlbGlmIGRl
ZmluZWQgUV9PU19TQ08KKyAgICAgICAgICAgICJTQ08gT3BlblNlcnZlciIKKyNlbGlmIGRlZmlu
ZWQgUV9PU19TT0xBUklTCisgICAgICAgICAgICAiU3VuIFNvbGFyaXMiCisjZWxpZiBkZWZpbmVk
IFFfT1NfVUxUUklYCisgICAgICAgICAgICAiREVDIFVsdHJpeCIKKyNlbGlmIGRlZmluZWQgUV9P
U19VTklYCisgICAgICAgICAgICAiVU5JWCBCU0QvU1lTViBzeXN0ZW0iCisjZWxpZiBkZWZpbmVk
IFFfT1NfVU5JWFdBUkUKKyAgICAgICAgICAgICJVbml4V2FyZSBTZXZlbiwgT3BlbiBVTklYIEVp
Z2h0IgorI2Vsc2UKKyAgICAgICAgICAgICJVbmtub3duIgorI2VuZGlmCisgICAgICAgICkpOwor
CisgICAgICAgIC8vIFdlYktpdCB2ZXJzaW9uLgorICAgICAgICAvLyBGSVhNRSAiKyIgaW4gdGhl
IHZlcnNpb24gc3RyaW5nPworICAgICAgICBRU3RyaW5nIHZlcnNpb24gPSBRU3RyaW5nKFFMYXRp
bjFTdHJpbmcoIiUxLiUyIikpLmFyZyhRU3RyaW5nOjpudW1iZXIod2Via2l0TWFqb3JWZXJzaW9u
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFFTdHJpbmc6Om51bWJlcih3ZWJraXRNaW5vclZlcnNpb24pKTsKKyAgICAgICAg
dWEgPSB1YS5hcmcodmVyc2lvbiwgdmVyc2lvbik7CisgICAgfQorCisgICAgUVN0cmluZyBhcHBO
YW1lOworICAgIGlmIChhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQuaXNFbXB0eSgpKQorICAg
ICAgICBhcHBOYW1lID0gUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25OYW1lKCk7CisgICAg
ZWxzZQorICAgICAgICBhcHBOYW1lID0gYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OworCisg
ICAgaWYgKCFhcHBOYW1lLmlzRW1wdHkoKSkgeworICAgICAgICBRU3RyaW5nIGFwcFZlciA9IFFD
b3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uVmVyc2lvbigpOworICAgICAgICBpZiAoIWFwcFZl
ci5pc0VtcHR5KCkpCisgICAgICAgICAgICBhcHBOYW1lLmFwcGVuZChRTGF0aW4xQ2hhcignLycp
ICsgYXBwVmVyKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBRdCB2ZXJzaW9uLgorICAgICAg
ICBhcHBOYW1lID0gUUxhdGluMVN0cmluZygiUXQvIikgKyBRTGF0aW4xU3RyaW5nKHFWZXJzaW9u
KCkpOworICAgIH0KKworICAgIHJldHVybiB1YS5hcmcoYXBwTmFtZSk7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1VzZXJBZ2VudFF0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9Vc2VyQWdlbnRRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ0YjRmNzhjNjU0
MWUyNTMxMWZhNTJiNTdmYjQ4MTYwNDIzMzA3MGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9Vc2VyQWdlbnRRdC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
ICAgQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisg
ICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyovCisjaWZuZGVmIFVzZXJBZ2VudFF0X2gKKyNkZWZpbmUgVXNlckFnZW50UXRf
aAorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgVXNlckFnZW50UXQgeworcHVibGljOgorICAgIHN0YXRpYyBTdHJpbmcgc3Rh
bmRhcmRVc2VyQWdlbnQoY29uc3QgU3RyaW5nICZhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQs
IHVuc2lnbmVkIGludCB3ZWJraXRNYWpvclZlcnNpb24sIHVuc2lnbmVkIGludCB3ZWJraXRNaW5v
clZlcnNpb24pOworfTsKKworfQorCisjZW5kaWYgLy8gVXNlckFnZW50UXRfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9xdC9B
cGkvcXdlYnBhZ2UuY3BwCmluZGV4IGUxYzA2NTE1YjAwOGFiNzZlNmFjYjhkMDhlOTNkNmVlNGM1
ZjkyZjAuLmU2OTdiZWJjOWNhODUyY2Y5MTYyMzVkNjFmNjgzZjE3NmI0ZWRjNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L3F0L0FwaS9xd2VicGFnZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICAgIENvcHlyaWdodCAo
QykgMjAwOCwgMjAwOSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTIgTm9raWEgQ29ycG9yYXRpb24g
YW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgICAgQ29weXJpZ2h0IChDKSAyMDA3IFN0YWlr
b3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KICAgICBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUg
SW5jLgogCkBAIC0xMTMsNyArMTEzLDkgQEAKICNpbmNsdWRlICJTeXN0ZW1JbmZvLmgiCiAjZW5k
aWYgLy8gUV9PU19XSU4zMgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgorI2luY2x1ZGUgIlVz
ZXJBZ2VudFF0LmgiCiAjaW5jbHVkZSAiV2ViRXZlbnRDb252ZXJzaW9uLmgiCisjaW5jbHVkZSAi
V2ViS2l0VmVyc2lvbi5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAi
V29ya2VyVGhyZWFkLmgiCiAKQEAgLTM3ODQsMTU4ICszNzg2LDcgQEAgUVdlYlBsdWdpbkZhY3Rv
cnkgKlFXZWJQYWdlOjpwbHVnaW5GYWN0b3J5KCkgY29uc3QKICovCiBRU3RyaW5nIFFXZWJQYWdl
Ojp1c2VyQWdlbnRGb3JVcmwoY29uc3QgUVVybCYpIGNvbnN0CiB7Ci0gICAgLy8gc3BsaXR0aW5n
IHRoZSBzdHJpbmcgaW4gdGhyZWUgYW5kIHVzZXIgUVN0cmluZ0J1aWxkZXIgaXMgYmV0dGVyIHRo
YW4gdXNpbmcgUVN0cmluZzo6YXJnKCkKLSAgICBzdGF0aWMgUVN0cmluZyBmaXJzdFBhcnQ7Ci0g
ICAgc3RhdGljIFFTdHJpbmcgc2Vjb25kUGFydDsKLSAgICBzdGF0aWMgUVN0cmluZyB0aGlyZFBh
cnQ7Ci0KLSAgICBpZiAoZmlyc3RQYXJ0LmlzTnVsbCgpIHx8IHNlY29uZFBhcnQuaXNOdWxsKCkg
fHwgdGhpcmRQYXJ0LmlzTnVsbCgpKSB7Ci0gICAgICAgIFFTdHJpbmcgZmlyc3RQYXJ0VGVtcDsK
LSAgICAgICAgZmlyc3RQYXJ0VGVtcC5yZXNlcnZlKDE1MCk7Ci0gICAgICAgIGZpcnN0UGFydFRl
bXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiTW96aWxsYS81LjAgKCIKLQotICAgIC8vIFBsYXRm
b3JtCi0jaWZkZWYgUV9XU19NQUMKLSAgICAgICAgIk1hY2ludG9zaDsgIgotI2VsaWYgZGVmaW5l
ZCBRX1dTX1FXUwotICAgICAgICAiUXRFbWJlZGRlZDsgIgotI2VsaWYgZGVmaW5lZCBRX1dTX1dJ
TgotICAgICAgICAvLyBOb3RoaW5nCi0jZWxpZiBkZWZpbmVkIFFfV1NfWDExCi0gICAgICAgICJY
MTE7ICIKLSNlbHNlCi0gICAgICAgICJVbmtub3duOyAiCi0jZW5kaWYKLSAgICApOwotCi0jaWYg
ZGVmaW5lZChRVF9OT19PUEVOU1NMKQotICAgICAgICAvLyBObyBTU0wgc3VwcG9ydAotICAgICAg
ICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIk47ICIpOwotI2VuZGlmCi0K
LSAgICAgICAgLy8gT3BlcmF0aW5nIHN5c3RlbQotI2lmZGVmIFFfT1NfQUlYCi0gICAgICAgIGZp
cnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiQUlYIik7Ci0jZWxpZiBkZWZpbmVk
IFFfT1NfV0lOMzIKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSB3aW5kb3dzVmVyc2lvbkZvclVB
U3RyaW5nKCk7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfREFSV0lOCi0jaWZkZWYgX19pMzg2X18gfHwg
X194ODZfNjRfXwotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEo
IkludGVsIE1hYyBPUyBYIik7Ci0jZWxzZQotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJp
bmc6OmZyb21MYXRpbjEoIlBQQyBNYWMgT1MgWCIpOwotI2VuZGlmCi0KLSNlbGlmIGRlZmluZWQg
UV9PU19CU0RJCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgi
QlNEIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfQlNENAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9
IFFTdHJpbmc6OmZyb21MYXRpbjEoIkJTRCBGb3VyIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfQ1lH
V0lOCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiQ3lnd2lu
Iik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfREdVWAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFT
dHJpbmc6OmZyb21MYXRpbjEoIkRHL1VYIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfRFlOSVgKLSAg
ICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJEWU5JWC9wdHgiKTsK
LSNlbGlmIGRlZmluZWQgUV9PU19GUkVFQlNECi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0
cmluZzo6ZnJvbUxhdGluMSgiRnJlZUJTRCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX0hQVVgKLSAg
ICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJIUC1VWCIpOwotI2Vs
aWYgZGVmaW5lZCBRX09TX0hVUkQKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpm
cm9tTGF0aW4xKCJHTlUgSHVyZCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX0lSSVgKLSAgICAgICAg
Zmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJTR0kgSXJpeCIpOwotI2VsaWYg
ZGVmaW5lZCBRX09TX0xJTlVYCi0KLSNpZiBkZWZpbmVkKF9feDg2XzY0X18pCi0gICAgICAgIGZp
cnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiTGludXggeDg2XzY0Iik7Ci0jZWxp
ZiBkZWZpbmVkKF9faTM4Nl9fKQotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZy
b21MYXRpbjEoIkxpbnV4IGk2ODYiKTsKLSNlbHNlCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0g
UVN0cmluZzo6ZnJvbUxhdGluMSgiTGludXgiKTsKLSNlbmRpZgotCi0jZWxpZiBkZWZpbmVkIFFf
T1NfTFlOWAotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIkx5
bnhPUyIpOwotI2VsaWYgZGVmaW5lZCBRX09TX05FVEJTRAotICAgICAgICBmaXJzdFBhcnRUZW1w
ICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIk5ldEJTRCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX09T
MgotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIk9TLzIiKTsK
LSNlbGlmIGRlZmluZWQgUV9PU19PUEVOQlNECi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0
cmluZzo6ZnJvbUxhdGluMSgiT3BlbkJTRCIpOwotI2VsaWYgZGVmaW5lZCBRX09TX09TMkVNWAot
ICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIk9TLzIiKTsKLSNl
bGlmIGRlZmluZWQgUV9PU19PU0YKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpm
cm9tTGF0aW4xKCJIUCBUcnU2NCBVTklYIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfUU5YNgotICAg
ICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIlFOWCBSVFAgU2l4Iik7
Ci0jZWxpZiBkZWZpbmVkIFFfT1NfUU5YCi0gICAgICAgIGZpcnN0UGFydFRlbXAgKz0gUVN0cmlu
Zzo6ZnJvbUxhdGluMSgiUU5YIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfUkVMSUFOVAotICAgICAg
ICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIlJlbGlhbnQgVU5JWCIpOwot
I2VsaWYgZGVmaW5lZCBRX09TX1NDTwotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6
OmZyb21MYXRpbjEoIlNDTyBPcGVuU2VydmVyIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfU09MQVJJ
UwotICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRpbjEoIlN1biBTb2xh
cmlzIik7Ci0jZWxpZiBkZWZpbmVkIFFfT1NfVUxUUklYCi0gICAgICAgIGZpcnN0UGFydFRlbXAg
Kz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiREVDIFVsdHJpeCIpOwotI2VsaWYgZGVmaW5lZCBRX09T
X1VOSVgKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJVTklY
IEJTRC9TWVNWIHN5c3RlbSIpOwotI2VsaWYgZGVmaW5lZCBRX09TX1VOSVhXQVJFCi0gICAgICAg
IGZpcnN0UGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiVW5peFdhcmUgU2V2ZW4sIE9w
ZW4gVU5JWCBFaWdodCIpOwotI2Vsc2UKLSAgICAgICAgZmlyc3RQYXJ0VGVtcCArPSBRU3RyaW5n
Ojpmcm9tTGF0aW4xKCJVbmtub3duIik7Ci0jZW5kaWYKLQotI2lmIFVTRShRVF9NT0JJTElUWV9T
WVNURU1JTkZPKQotICAgICAgICAvLyBhZGRpbmcgTW9kZWwgTnVtYmVyCi0gICAgICAgIFF0TW9i
aWxpdHk6OlFTeXN0ZW1EZXZpY2VJbmZvIHN5c3RlbURldmljZUluZm87Ci0KLSAgICAgICAgUVN0
cmluZyBtb2RlbCA9IHN5c3RlbURldmljZUluZm8ubW9kZWwoKTsKLSAgICAgICAgaWYgKCFtb2Rl
bC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGlmICghZmlyc3RQYXJ0VGVtcC5lbmRzV2l0aCgi
OyAiKSkKLSAgICAgICAgICAgICAgICBmaXJzdFBhcnRUZW1wICs9IFFTdHJpbmc6OmZyb21MYXRp
bjEoIjsgIik7Ci0gICAgICAgICAgICBmaXJzdFBhcnRUZW1wICs9IHN5c3RlbURldmljZUluZm8u
bW9kZWwoKTsKLSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGZpcnN0UGFydFRlbXAuc3F1ZWV6
ZSgpOwotICAgICAgICBmaXJzdFBhcnQgPSBmaXJzdFBhcnRUZW1wOwotCi0gICAgICAgIFFTdHJp
bmcgc2Vjb25kUGFydFRlbXA7Ci0gICAgICAgIHNlY29uZFBhcnRUZW1wLnJlc2VydmUoMTUwKTsK
LSAgICAgICAgc2Vjb25kUGFydFRlbXAgKz0gUVN0cmluZzo6ZnJvbUxhdGluMSgiKSAiKTsKLQot
ICAgICAgICAvLyB3ZWJraXQvcXQgdmVyc2lvbgotICAgICAgICBzZWNvbmRQYXJ0VGVtcCArPSBR
U3RyaW5nOjpmcm9tTGF0aW4xKCJBcHBsZVdlYktpdC8iKTsKLSAgICAgICAgc2Vjb25kUGFydFRl
bXAgKz0gcVdlYktpdFZlcnNpb24oKTsKLSAgICAgICAgc2Vjb25kUGFydFRlbXAgKz0gUVN0cmlu
Zzo6ZnJvbUxhdGluMSgiIChLSFRNTCwgbGlrZSBHZWNrbykgIik7Ci0KLQotICAgICAgICAvLyBB
cHBsaWNhdGlvbiBuYW1lIHNwbGl0IHRoZSB0aGlyZCBwYXJ0Ci0gICAgICAgIHNlY29uZFBhcnRU
ZW1wLnNxdWVlemUoKTsKLSAgICAgICAgc2Vjb25kUGFydCA9IHNlY29uZFBhcnRUZW1wOwotCi0g
ICAgICAgIFFTdHJpbmcgdGhpcmRQYXJ0VGVtcDsKLSAgICAgICAgdGhpcmRQYXJ0VGVtcC5yZXNl
cnZlKDE1MCk7Ci0gICAgICAgIHRoaXJkUGFydFRlbXAgKz0gUUxhdGluMVN0cmluZygiIFNhZmFy
aS8iKTsKLSAgICAgICAgdGhpcmRQYXJ0VGVtcCArPSBxV2ViS2l0VmVyc2lvbigpOwotICAgICAg
ICB0aGlyZFBhcnRUZW1wLnNxdWVlemUoKTsKLSAgICAgICAgdGhpcmRQYXJ0ID0gdGhpcmRQYXJ0
VGVtcDsKLSAgICAgICAgUV9BU1NFUlQoIWZpcnN0UGFydC5pc051bGwoKSk7Ci0gICAgICAgIFFf
QVNTRVJUKCFzZWNvbmRQYXJ0LmlzTnVsbCgpKTsKLSAgICAgICAgUV9BU1NFUlQoIXRoaXJkUGFy
dC5pc051bGwoKSk7Ci0gICAgfQotCi0gICAgLy8gQXBwbGljYXRpb24gbmFtZS92ZXJzaW9uCi0g
ICAgUVN0cmluZyBhcHBOYW1lID0gUUNvcmVBcHBsaWNhdGlvbjo6YXBwbGljYXRpb25OYW1lKCk7
Ci0gICAgaWYgKCFhcHBOYW1lLmlzRW1wdHkoKSkgewotICAgICAgICBRU3RyaW5nIGFwcFZlciA9
IFFDb3JlQXBwbGljYXRpb246OmFwcGxpY2F0aW9uVmVyc2lvbigpOwotICAgICAgICBpZiAoIWFw
cFZlci5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhcHBOYW1lLmFwcGVuZChRTGF0aW4xQ2hhcign
LycpICsgYXBwVmVyKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBRdCB2ZXJzaW9uCi0gICAg
ICAgIGFwcE5hbWUgPSBRU3RyaW5nOjpmcm9tTGF0aW4xKCJRdC8iKSArIFFTdHJpbmc6OmZyb21M
YXRpbjEocVZlcnNpb24oKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZpcnN0UGFydCArIHNlY29u
ZFBhcnQgKyBhcHBOYW1lICsgdGhpcmRQYXJ0OworICAgIHJldHVybiBVc2VyQWdlbnRRdDo6c3Rh
bmRhcmRVc2VyQWdlbnQoIiIsIFdFQktJVF9NQUpPUl9WRVJTSU9OLCBXRUJLSVRfTUlOT1JfVkVS
U0lPTik7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dl
YlBhZ2VQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJv
eHlRdC5jcHAKaW5kZXggNTU4ZDQ3ZDc1ODI4NDc4NTRlMGQwYmUwN2QwOWFiYjdjOGEyMjNkZi4u
ZWY2ZDU0NzdkMzM5MjY3ZDUzODY3ODk0MWQzODI3MzQwMmYwNjZjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwCkBAIC0xLDQgKzEsNSBAQAog
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1
YnNpZGlhcnkoLWllcykKICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNyw2ICsyOCw4IEBACiAjaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCiAKICNpbmNsdWRlICJQYWdlQ2xpZW50LmgiCisjaW5jbHVkZSAi
VXNlckFnZW50UXQuaCIKKyNpbmNsdWRlICJXZWJLaXRWZXJzaW9uLmgiCiAjaW5jbHVkZSAiV2Vi
UGFnZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9FZGl0b3IuaD4KQEAgLTQ0LDggKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IFN0cmluZyBXZWJQYWdlUHJveHk6OnN0YW5kYXJkVXNlckFnZW50KGNvbnN0IFN0cmluZyYgYXBw
bGljYXRpb25OYW1lRm9yVXNlckFnZW50KQogewotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBu
b3QgYmUgaGFyZCBjb2RlZC4KLSAgICByZXR1cm4gIk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IElu
dGVsIE1hYyBPUyBYIDEwXzYpIEFwcGxlV2ViS2l0LzUzMS40IChLSFRNTCwgbGlrZSBHZWNrbykg
VmVyc2lvbi80LjAuMyBTYWZhcmkvNTMxLjQiOworICAgIHJldHVybiBVc2VyQWdlbnRRdDo6c3Rh
bmRhcmRVc2VyQWdlbnQoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50LCBXRUJLSVRfTUFKT1Jf
VkVSU0lPTiwgV0VCS0lUX01JTk9SX1ZFUlNJT04pOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
c2F2ZVJlY2VudFNlYXJjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JikK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMWNhYjg3MzRiMzBmMTcxZjM2NWI5ZmE0ZjJmMTBkNDIxZjIxM2E1Li5lNmI4ZTI0
Y2Q5MmEyMzVlNjhlYjkxZTU2NGJhMmRiOGNmNWZkODA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTItMDktMTEgIExhdXJvIE5ldG8gIDxsYXVyby5uZXRvQG9wZW5ib3NzYS5vcmc+CisKKyAg
ICAgICAgW1F0XVtXSzJdIGZhc3QvZm9ybXMvYWNjZXNzLWtleS1mb3ItYWxsLWVsZW1lbnRzLmh0
bWwgZmFpbHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTczOTE3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWNjZXNzLWtleSB0ZXN0cyB3ZXJlIGZhaWxpbmcgZHVlIHRvIGhhcmRjb2RlZCBNYWMgT1MgWCBp
biB0aGUKKyAgICAgICAgUXQgV0syIHVzZXIgYWdlbnQgc3RyaW5nLiBUaGlzIGNvbW1pdCBtb3Zl
cyB0aGUgV0sxIGltcGxlbWVudGF0aW9uCisgICAgICAgIHRvIGEgc2hhcmVkIG9uZSB0byBiZSB1
c2VkIGJ5IGJvdGggdmVyc2lvbnMuCisKKyAgICAgICAgVW5za2lwIG5vdyBwYXNzaW5nIHRlc3Rz
LgorCisgICAgICAgICogcGxhdGZvcm0vcXQtNS4wLXdrMi9Ta2lwcGVkOgorCiAyMDEyLTA5LTEy
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTI4MzE4IGFuZCByMTI4MzMyLgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtNS4wLXdrMi9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQtNS4wLXdrMi9Ta2lwcGVkCmluZGV4IDJkNDQxNjgzNjE0MmI1OTYzNDNjMDEyNGY1
YjAyYmU5M2UwNTIyYTQuLmYyZjY5ZmM1YTM5YmZiMGRiMDQyOTI5N2JiNDRmMGUzZjdjZTgzZjkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LTUuMC13azIvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC01LjAtd2syL1NraXBwZWQKQEAgLTQ2LDcgKzQ2LDYg
QEAgZWRpdGluZy9zZWxlY3Rpb24vc2VsZWN0LW91dC1vZi1lZGl0YWJsZS5odG1sCiBmYXN0L2Rv
bS92ZXJ0aWNhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKIGZhc3QvZHluYW1pYy9sYXllci1oaXQt
dGVzdC1jcmFzaC5odG1sCiBmYXN0L2VuY29kaW5nL21haWx0by1hbHdheXMtdXRmLTguaHRtbAot
ZmFzdC9ldmVudHMvYWNjZXNzLWtleS1zZWxmLWRlc3RydWN0Lmh0bWwKIGZhc3QvZXZlbnRzL2Nv
bnRleHQtbm8tZGVzZWxlY3QuaHRtbAogZmFzdC9ldmVudHMvY29udGV4dC1vbm1vdXNlZG93bi1l
dmVudC5odG1sCiBmYXN0L2V2ZW50cy9jb250ZXh0bWVudS1zY3JvbGxlZC1wYWdlLXdpdGgtZnJh
bWUuaHRtbApAQCAtNjIsMTIgKzYxLDkgQEAgZmFzdC9ldmVudHMvc2Nyb2xsLWluLXNjYWxlZC1w
YWdlLXdpdGgtb3ZlcmZsb3ctaGlkZGVuLmh0bWwKIGZhc3QvZXZlbnRzL3NlbGVjdHN0YXJ0LXBy
ZXZlbnQtc2VsZWN0aW9uLW9uLXJpZ2h0LWNsaWNrLmh0bWwKIGZhc3QvZXZlbnRzL3doZWVsZXZl
bnQtaW4taG9yaXpvbnRhbC1zY3JvbGxiYXItaW4tcnRsLmh0bWwKIGZhc3QvZXZlbnRzL3doZWVs
ZXZlbnQtaW4tdmVydGljYWwtc2Nyb2xsYmFyLWluLXJ0bC5odG1sCi1mYXN0L2Zvcm1zL2FjY2Vz
cy1rZXkuaHRtbAogZmFzdC9mb3Jtcy9mb2N1cy1jaGFuZ2Utb24ta2V5cHJlc3MuaHRtbAotZmFz
dC9mb3Jtcy9mb2N1cy1zZWxlY3Rpb24tdGV4dGFyZWEuaHRtbAogZmFzdC9mb3Jtcy9pbnRlcmFj
dGl2ZS12YWxpZGF0aW9uLWF0dGFjaC1hc3NlcnRpb24uaHRtbAogZmFzdC9mb3Jtcy9sZWdlbmQt
YWNjZXNzLWtleS5odG1sCi1mYXN0L2Zvcm1zL3NlbGVjdC1hY2Nlc3NrZXkuaHRtbAogZmFzdC9s
b2FkZXIvcG9saWN5LWRlbGVnYXRlLWFjdGlvbi1oaXQtdGVzdC16b29tZWQuaHRtbAogCiBzdmcv
Y3VzdG9tL3VzZS1ldmVudHMtY3Jhc2guc3ZnCkBAIC0yMTEsMTAgKzIwNyw2IEBAIHN2Zy9hcy1v
YmplY3Qvc3ZnLWVtYmVkZGVkLWluLWh0bWwtaW4taWZyYW1lLmh0bWwKICMgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcwOTM1CiBmYXN0L3RyYW5zZm9ybXMvc2Nyb2xs
SW50b1ZpZXctdHJhbnNmb3JtZWQuaHRtbAogCi0jIFtRdF1bV0syXSBmYXN0L2Zvcm1zL2FjY2Vz
cy1rZXktZm9yLWFsbC1lbGVtZW50cy5odG1sIGZhaWxzCi0jIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MzkxNwotZmFzdC9mb3Jtcy9hY2Nlc3Mta2V5LWZvci1hbGwt
ZWxlbWVudHMuaHRtbAotCiAjIFtRdF1bV0syXSBjc3MzL3VuaWNvZGUtYmlkaS1pc29sYXRlLWFo
YXJvbi1mYWlsaW5nLmh0bWwgZmFpbHMKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc0NTA1CiBjc3MzL3VuaWNvZGUtYmlkaS1pc29sYXRlLWFoYXJvbi1mYWlsaW5n
Lmh0bWwKQEAgLTIzNSw3ICsyMjcsNiBAQCBzdmcvY3VzdG9tL2dldHNjcmVlbmN0bS1pbi1zY3Jv
bGxhYmxlLWRpdi1hcmVhLnhodG1sCiAjIEZhaWxpbmcgdGVzdHMgb24gcXQtd2syIGFmdGVyIHVu
c2tpcHBpbmcgcXQtNS4wL1NraXBwZWQgdGVzdHMsIG5lZWQgbW9yZSBpbnZlc3RpZ2F0aW9uCiBl
ZGl0aW5nL3NlbGVjdGlvbi9jbGljay1pbi1tYXJnaW5zLWluc2lkZS1lZGl0YWJsZS1kaXYuaHRt
bAogZmFzdC9ibG9jay9iYXNpYy8wMjAuaHRtbAotZmFzdC9kb20vYWNjZXNzLWtleS1pZnJhbWUu
aHRtbAogZmFzdC9oaXN0b3J5L3Zpc2l0ZWQtbGluay1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwKIGZh
c3QvbGF5ZXJzL2xheWVyLXZpc2liaWxpdHktc3VibGF5ZXIuaHRtbAogZmFzdC9sYXllcnMvbGF5
ZXItdmlzaWJpbGl0eS5odG1sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>