<?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>90619</bug_id>
          
          <creation_ts>2012-07-05 10:14:04 -0700</creation_ts>
          <short_desc>Code refactoring: move mimeTypeFromUTITree to a separate file.</short_desc>
          <delta_ts>2012-07-05 13:19:37 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yongjun Zhang">yongjun_zhang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yongjun_zhang</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>663604</commentid>
    <comment_count>0</comment_count>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2012-07-05 10:14:04 -0700</bug_when>
    <thetext>We should UTI handling code to a separate file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663615</commentid>
    <comment_count>1</comment_count>
      <attachid>150954</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2012-07-05 10:30:06 -0700</bug_when>
    <thetext>Created attachment 150954
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663619</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-05 10:32:57 -0700</bug_when>
    <thetext>Attachment 150954 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/network/mac/UTIUtilities.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663623</commentid>
    <comment_count>3</comment_count>
      <attachid>150958</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2012-07-05 10:35:46 -0700</bug_when>
    <thetext>Created attachment 150958
Patch, fix style violation in UTIUtilities.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663682</commentid>
    <comment_count>4</comment_count>
      <attachid>150958</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2012-07-05 12:36:02 -0700</bug_when>
    <thetext>Comment on attachment 150958
Patch, fix style violation in UTIUtilities.h.

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

r=me with the clause 3 license fixes.  (The WebCore Xcode project items are just nits I noticed, but can be checked in with this commit, or separately.)

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:7958
&gt; -		333F704F0FB49CA2008E12A6 /* Notification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Notification.h; path =Modules/notifications/Notification.h; sourceTree = &quot;&lt;group&gt;&quot;; };
&gt; +		333F704F0FB49CA2008E12A6 /* Notification.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Notification.h; path = Modules/notifications/Notification.h; sourceTree = &quot;&lt;group&gt;&quot;; };

NOTE: Drive-by fix that happened when editing the Xcode project file.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:28176
&gt; -				A8CCBB4C151F833B00AB7CE9 /* WorkerContextWebDatabase.cpp in Sources */, F34742E01343631F00531BC2 /* WorkerDebuggerAgent.cpp in Sources */,
&gt; +				A8CCBB4C151F833B00AB7CE9 /* WorkerContextWebDatabase.cpp in Sources */,
&gt; +				F34742E01343631F00531BC2 /* WorkerDebuggerAgent.cpp in Sources */,

NOTE: Drive-by fix that happened when editing the Xcode project file.

&gt; Source/WebCore/platform/network/mac/UTIUtilities.h:15
&gt; + * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; + *     its contributors may be used to endorse or promote products derived
&gt; + *     from this software without specific prior written permission. 

This is the old Apple license.  The one in Source/WebCore/LICENSE-APPLE doesn&apos;t include clause 3 anymore.  Please remove clause 3.

&gt; Source/WebCore/platform/network/mac/UTIUtilities.mm:15
&gt; + * 3.  Neither the name of Apple Computer, Inc. (&quot;Apple&quot;) nor the names of
&gt; + *     its contributors may be used to endorse or promote products derived
&gt; + *     from this software without specific prior written permission. 

Ditto re: removing clause 3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663689</commentid>
    <comment_count>5</comment_count>
      <attachid>150973</attachid>
    <who name="Yongjun Zhang">yongjun_zhang</who>
    <bug_when>2012-07-05 12:47:26 -0700</bug_when>
    <thetext>Created attachment 150973
Address review comments on previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663701</commentid>
    <comment_count>6</comment_count>
      <attachid>150973</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-05 13:19:25 -0700</bug_when>
    <thetext>Comment on attachment 150973
Address review comments on previous patch.

Clearing flags on attachment: 150973

Committed r121923: &lt;http://trac.webkit.org/changeset/121923&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>663702</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-05 13:19:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150954</attachid>
            <date>2012-07-05 10:30:06 -0700</date>
            <delta_ts>2012-07-05 10:35:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>oss_uti_refactor.patch</filename>
            <type>text/plain</type>
            <size>15931</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA3LTA1ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSByZWZhY3Rv
cmluZzogbW92ZSBtaW1lVHlwZUZyb21VVElUcmVlIHRvIGEgc2VwYXJhdGUgZmlsZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjE5CisKKyAgICAg
ICAgV2Ugc2hvdWxkIG1vdmUgVVRJIGhhbmRsaW5nIHJlbGF0ZWQgY29kZSB0byBhIHNlcGFyYXRl
IGZpbGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tOiBBZGRlZC4gIG1v
dmUgbWltZVR5cGVGcm9tVVRJVHJlZSB0byBVVElVdGlsaXRpZXMubW0uCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBlRnJvbVVUSVRyZWUpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbTogaW5jbHVkZSBVVElV
dGlsaXRpZXMuaCB0byB1c2UgbWltZVR5cGVGcm9tVVRJVHJlZS4KKyAgICAgICAgKFdlYkNvcmUp
OgorCiAyMDEyLTA3LTA1ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUgc2VhcmNoIGZpZWxkIHRvIHRoZSBib3R0b20g
b2YgdGhlIHBhZ2UuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjE5MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY2OSw2
ICs2NjksOCBAQAogCQkxRjNDM0JFQTEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjNDM0JF
ODEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5jcHAgKi87IH07CiAJCTFGM0MzQkVC
MTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjNDM0JFOTEzNUNBRjNDMDBCOEMxQUMgLyogTWVk
aWFDb250cm9scy5oICovOyB9OwogCQkxRjNGMTk1MzE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJl
ZUxpc3RBcmVuYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUYzRjE5NTIxNDk5Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVMaXN0QXJlbmEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxRkFGQkYxODE1QTVG
QTZFMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUZBRkJGMTcxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxp
dGllcy5tbSAqLzsgfTsKKwkJMUZBRkJGMTkxNUE1RkE3NDAwMDgzQTIwIC8qIFVUSVV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUZBRkJG
MTYxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5oICovOyB9OwogCQkyMEQ2MjkyNjEy
NTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI0MTI1MzY5MEIwMDA4
MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICovOyB9OwogCQkyMEQ2MjkyNzEy
NTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2MjkyNTEyNTM2OTBCMDAwODE1
NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi87IH07CiAJCTIyNzc3NzYwMTM0NURF
QTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAv
KiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzY1NCw2ICs3NjU2LDggQEAKIAkJMUYzQzNCRTgxMzVD
QUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFGM0MzQkU5MTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUYzRjE5NTIxNDk5Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVMaXN0
QXJlbmEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUE9ERnJlZUxpc3RBcmVu
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRkFGQkYxNjE1QTVGQTUyMDAwODNB
MjAgLyogVVRJVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVU
SVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRkFGQkYxNzE1QTVG
QTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVVRJVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRDYyOTI1MTI1
MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
OTUxLDcgKzc5NTUsNyBAQAogCQkzMzE0QUNFOTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRp
b25CYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXhjZXB0
aW9uQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0VBMTA4OTIw
ODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFeGNlcHRpb25CYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5pZGw7IHBhdGggPSBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzMzRjcw
NEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb24uaDsgcGF0aCA9TW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA0RjBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5oOyBwYXRoID0gTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzUwM0M5OTEwMTc5
QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBmaWxlRW5jb2Rpbmcg
PSA0OyBuYW1lID0gTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHBhdGggPSBNb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMzNTAzQzlGMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vdGlmaWNhdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQ0EwMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlm
aWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vdGlmaWNhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0MjcsNiArMTU0MzEsOCBAQAog
CQkJCTUxNEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSAqLywK
IAkJCQk1MTRDNzY0OTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICov
LAogCQkJCTUxNEM3NjRCMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlTWFjLm1t
ICovLAorCQkJCTFGQUZCRjE2MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCAqLywK
KwkJCQkxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tICovLAogCQkJ
CTM3RjgxOEZCMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UuaCAqLywKIAkJ
CQkzN0Y4MThGQzBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNlLm1tICovLAog
CQkJKTsKQEAgLTI1MTcyLDYgKzI1MTc4LDcgQEAKIAkJCQk1MDk4N0MyNzE1N0Q2NzZEMDBCREE4
MzUgLyogQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEYz
MkJCMUIxNEZBODVFODAwRjZDMUEzIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg4MkRBMjMxNTkzODQ4RDAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuaCBp
biBIZWFkZXJzICovLAorCQkJCTFGQUZCRjE5MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjgxNjUsNyArMjgxNzIsOCBAQAogCQkJCTJFNDM0NjQ4
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3MTJBNjExMTUwMDkwQ0UwMDQ4QUYxMCAvKiBXb3JrZXJDb250ZXh0SW5kZXhlZERhdGFiYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3RjhFNjY1MTUxRDRBNEIwMEQyRDE4MSAvKiBXb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBOENDQkI0QzE1
MUY4MzNCMDBBQjdDRTkgLyogV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLCBGMzQ3NDJFMDEzNDM2MzFGMDA1MzFCQzIgLyogV29ya2VyRGVidWdnZXJBZ2VudC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBOENDQkI0QzE1MUY4MzNCMDBBQjdDRTkgLyogV29ya2VyQ29u
dGV4dFdlYkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYzNDc0MkUwMTM0MzYzMUYw
MDUzMUJDMiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEz
RTI2NDMwMTQ3NDg5OTEwMDVBODU4OCAvKiBXb3JrZXJFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUYzNkUwN0E0MTM1OEE4QkUwMEFBQ0JDOSAvKiBXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFNDM0NjRDMEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXJMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4MjI1LDYgKzI4MjMzLDcg
QEAKIAkJCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTA5ODdDMjYxNTdENjc2RDAwQkRBODM1IC8qIEN1
c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4MkRBMjAx
NTkzODQ2QTAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MUZBRkJGMTgxNUE1RkE2RTAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJ
VXRpbGl0aWVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9VVElVdGlsaXRpZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBVVElVdGlsaXRpZXNfaAorI2RlZmluZSBVVElVdGlsaXRpZXNfaAorCisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICBSZXRhaW5QdHI8
Q0ZTdHJpbmdSZWY+IG1pbWVUeXBlRnJvbVVUSVRyZWUoQ0ZTdHJpbmdSZWYgdXRpKTsKK30KKwor
I2VuZGlmIC8vIFVUSVV0aWxpdGllc19oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCShyZXZpc2lvbiAwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlVU
SVV0aWxpdGllcy5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorI2ltcG9ydCAiU29mdExpbmtpbmcu
aCIKKyNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KKwor
U09GVF9MSU5LX0ZSQU1FV09SSyhNb2JpbGVDb3JlU2VydmljZXMpCisKK1NPRlRfTElOSyhNb2Jp
bGVDb3JlU2VydmljZXMsIFVUVHlwZUNvcHlEZWNsYXJhdGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmLCAo
Q0ZTdHJpbmdSZWYgaW5VVEkpLCAoaW5VVEkpKQorU09GVF9MSU5LKE1vYmlsZUNvcmVTZXJ2aWNl
cywgVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcywgQ0ZTdHJpbmdSZWYsIChDRlN0cmlu
Z1JlZiBpblVUSSwgQ0ZTdHJpbmdSZWYgaW5UYWdDbGFzcyksIChpblVUSSwgaW5UYWdDbGFzcykp
CisKK1NPRlRfTElOS19DT05TVEFOVChNb2JpbGVDb3JlU2VydmljZXMsIGtVVFR5cGVDb25mb3Jt
c1RvS2V5LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19DT05TVEFOVChNb2JpbGVDb3JlU2Vydmlj
ZXMsIGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU3RyaW5nUmVmKQorCisjZGVmaW5lIGtVVFRhZ0Ns
YXNzTUlNRVR5cGUgZ2V0a1VUVGFnQ2xhc3NNSU1FVHlwZSgpCisjZGVmaW5lIGtVVFR5cGVDb25m
b3Jtc1RvS2V5IGdldGtVVFR5cGVDb25mb3Jtc1RvS2V5KCkKKyNlbmRpZgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1JldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGVGcm9tVVRJVHJlZShD
RlN0cmluZ1JlZiB1dGkpCit7CisgICAgLy8gQ2hlY2sgaWYgdGhpcyBVVEkgaGFzIGEgTUlNRSB0
eXBlLgorICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgVVRUeXBl
Q29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKKyAg
ICBpZiAobWltZVR5cGUpCisgICAgICAgIHJldHVybiBtaW1lVHlwZS5nZXQoKTsKKworICAgIC8v
IElmIG5vdCwgd2FsayB0aGUgYW5jZXN0b3J5IG9mIHRoaXMgVVRJIHZpYSBpdHMgIkNvbmZvcm1z
VG8iIHRhZ3MgYW5kIHJldHVybiB0aGUgZmlyc3QgTUlNRSB0eXBlIHdlIGZpbmQuCisgICAgUmV0
YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGVjbChBZG9wdENGLCBVVFR5cGVDb3B5RGVjbGFyYXRp
b24odXRpKSk7CisgICAgaWYgKCFkZWNsKQorICAgICAgICByZXR1cm4gbmlsOworICAgIENGVHlw
ZVJlZiB2YWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKGRlY2wuZ2V0KCksIGtVVFR5cGVDb25m
b3Jtc1RvS2V5KTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gbmlsOworICAgIENG
VHlwZUlEIHR5cGVJRCA9IENGR2V0VHlwZUlEKHZhbHVlKTsKKworICAgIGlmICh0eXBlSUQgPT0g
Q0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICAgICAgcmV0dXJuIG1pbWVUeXBlRnJvbVVUSVRyZWUo
KENGU3RyaW5nUmVmKXZhbHVlKTsKKworICAgIGlmICh0eXBlSUQgPT0gQ0ZBcnJheUdldFR5cGVJ
RCgpKSB7CisgICAgICAgIENGQXJyYXlSZWYgbmV3VHlwZXMgPSAoQ0ZBcnJheVJlZil2YWx1ZTsK
KyAgICAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlHZXRDb3VudChuZXdUeXBlcyk7CisgICAg
ICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgQ0ZUeXBl
UmVmIG9iamVjdCA9IENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobmV3VHlwZXMsIGkpOworICAgICAg
ICBpZiAoQ0ZHZXRUeXBlSUQob2JqZWN0KSAhPSBDRlN0cmluZ0dldFR5cGVJRCgpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWlt
ZVR5cGUgPSBtaW1lVHlwZUZyb21VVElUcmVlKChDRlN0cmluZ1JlZilvYmplY3QpKQorICAgICAg
ICAgICAgcmV0dXJuIG1pbWVUeXBlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG5p
bDsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2Vi
Q29yZVVSTFJlc3BvbnNlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbQkocmV2aXNpb24gMTIxOTA5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVz
cG9uc2UuaCIKIAogI2ltcG9ydCAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2ltcG9ydCAiVVRJVXRp
bGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1wb3J0IDx3
dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtNDQ3LDQxICs0
NDgsNiBAQCBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGNyZWF0ZUV4dGVuc2lvblRvCiAgICAgcmV0
dXJuIENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3Qgdm9pZCoq
KSZrZXlzLCAoY29uc3Qgdm9pZCoqKSZ2YWx1ZXMsIHNpemVvZihrZXlzKS9zaXplb2YoQ0ZTdHJp
bmdSZWYpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFy
eVZhbHVlQ2FsbEJhY2tzKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWlt
ZVR5cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZiB1dGkpCi17Ci0gICAgLy8gQ2hlY2sgaWYgdGhp
cyBVVEkgaGFzIGEgTUlNRSB0eXBlLgotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5
cGUoQWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGksIGtVVFRhZ0Ns
YXNzTUlNRVR5cGUpKTsKLSAgICBpZiAobWltZVR5cGUpCi0gICAgICAgIHJldHVybiBtaW1lVHlw
ZS5nZXQoKTsKLSAgICAKLSAgICAvLyBJZiBub3QsIHdhbGsgdGhlIGFuY2VzdG9yeSBvZiB0aGlz
IFVUSSB2aWEgaXRzICJDb25mb3Jtc1RvIiB0YWdzIGFuZCByZXR1cm4gdGhlIGZpcnN0IE1JTUUg
dHlwZSB3ZSBmaW5kLgotICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGRlY2woQWRvcHRD
RiwgVVRUeXBlQ29weURlY2xhcmF0aW9uKHV0aSkpOwotICAgIGlmICghZGVjbCkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICBDRlR5cGVSZWYgdmFsdWUgPSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShk
ZWNsLmdldCgpLCBrVVRUeXBlQ29uZm9ybXNUb0tleSk7Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICBDRlR5cGVJRCB0eXBlSUQgPSBDRkdldFR5cGVJRCh2YWx1ZSk7
Ci0gICAgCi0gICAgaWYgKHR5cGVJRCA9PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICBy
ZXR1cm4gbWltZVR5cGVGcm9tVVRJVHJlZSgoQ0ZTdHJpbmdSZWYpdmFsdWUpOwotCi0gICAgaWYg
KHR5cGVJRCA9PSBDRkFycmF5R2V0VHlwZUlEKCkpIHsKLSAgICAgICAgQ0ZBcnJheVJlZiBuZXdU
eXBlcyA9IChDRkFycmF5UmVmKXZhbHVlOwotICAgICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJh
eUdldENvdW50KG5ld1R5cGVzKTsKLSAgICAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291
bnQ7ICsraSkgewotICAgICAgICAgICAgQ0ZUeXBlUmVmIG9iamVjdCA9IENGQXJyYXlHZXRWYWx1
ZUF0SW5kZXgobmV3VHlwZXMsIGkpOwotICAgICAgICAgICAgaWYgKENGR2V0VHlwZUlEKG9iamVj
dCkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLQot
ICAgICAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBtaW1lVHlw
ZUZyb21VVElUcmVlKChDRlN0cmluZ1JlZilvYmplY3QpKQotICAgICAgICAgICAgICAgIHJldHVy
biBtaW1lVHlwZTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICByZXR1cm4gbmlsOwotfQot
CiB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3NhcnkoQ0ZVUkxSZXNwb25zZVJlZiBjZlJlc3Bv
bnNlKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gcmVzdWx0ID0gd2tHZXRDRlVSTFJl
c3BvbnNlTUlNRVR5cGUoY2ZSZXNwb25zZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150958</attachid>
            <date>2012-07-05 10:35:46 -0700</date>
            <delta_ts>2012-07-05 12:47:26 -0700</delta_ts>
            <desc>Patch, fix style violation in UTIUtilities.h.</desc>
            <filename>oss_uti_refactor.patch</filename>
            <type>text/plain</type>
            <size>15927</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA3LTA1ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSByZWZhY3Rv
cmluZzogbW92ZSBtaW1lVHlwZUZyb21VVElUcmVlIHRvIGEgc2VwYXJhdGUgZmlsZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjE5CisKKyAgICAg
ICAgV2Ugc2hvdWxkIG1vdmUgVVRJIGhhbmRsaW5nIHJlbGF0ZWQgY29kZSB0byBhIHNlcGFyYXRl
IGZpbGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tOiBBZGRlZC4gIG1v
dmUgbWltZVR5cGVGcm9tVVRJVHJlZSB0byBVVElVdGlsaXRpZXMubW0uCisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBlRnJvbVVUSVRyZWUpOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5tbTogaW5jbHVkZSBVVElV
dGlsaXRpZXMuaCB0byB1c2UgbWltZVR5cGVGcm9tVVRJVHJlZS4KKyAgICAgICAgKFdlYkNvcmUp
OgorCiAyMDEyLTA3LTA1ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUgc2VhcmNoIGZpZWxkIHRvIHRoZSBib3R0b20g
b2YgdGhlIHBhZ2UuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjE5MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY2OSw2
ICs2NjksOCBAQAogCQkxRjNDM0JFQTEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjNDM0JF
ODEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5jcHAgKi87IH07CiAJCTFGM0MzQkVC
MTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjNDM0JFOTEzNUNBRjNDMDBCOEMxQUMgLyogTWVk
aWFDb250cm9scy5oICovOyB9OwogCQkxRjNGMTk1MzE0OTlDQTc2MDBBNUFFQTcgLyogUE9ERnJl
ZUxpc3RBcmVuYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUYzRjE5NTIxNDk5Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVMaXN0QXJlbmEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxRkFGQkYxODE1QTVG
QTZFMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUZBRkJGMTcxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxp
dGllcy5tbSAqLzsgfTsKKwkJMUZBRkJGMTkxNUE1RkE3NDAwMDgzQTIwIC8qIFVUSVV0aWxpdGll
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUZBRkJG
MTYxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5oICovOyB9OwogCQkyMEQ2MjkyNjEy
NTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIwRDYyOTI0MTI1MzY5MEIwMDA4
MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICovOyB9OwogCQkyMEQ2MjkyNzEy
NTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2MjkyNTEyNTM2OTBCMDAwODE1
NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi87IH07CiAJCTIyNzc3NzYwMTM0NURF
QTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAv
KiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzY1NCw2ICs3NjU2LDggQEAKIAkJMUYzQzNCRTgxMzVD
QUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9scy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFGM0MzQkU5MTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJvbHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUYzRjE5NTIxNDk5Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVMaXN0
QXJlbmEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUE9ERnJlZUxpc3RBcmVu
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRkFGQkYxNjE1QTVGQTUyMDAwODNB
MjAgLyogVVRJVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVU
SVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRkFGQkYxNzE1QTVG
QTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVVRJVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIwRDYyOTI1MTI1
MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyNzc3NzVGMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0
b3JGcm9udGVuZENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5z
cGVjdG9yRnJvbnRlbmRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
OTUxLDcgKzc5NTUsNyBAQAogCQkzMzE0QUNFOTEwODkyMDg2MDAwRjBFNTYgLyogSlNFeGNlcHRp
b25CYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXhjZXB0
aW9uQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzMTRBQ0VBMTA4OTIw
ODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNFeGNlcHRpb25CYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRpb24uaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5pZGw7IHBhdGggPSBNb2R1bGVzL25vdGlmaWNhdGlv
bnMvTm90aWZpY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMzMzRjcw
NEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb24uaDsgcGF0aCA9TW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMzNGNzA0RjBG
QjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5oOyBwYXRoID0gTW9kdWxlcy9ub3RpZmljYXRpb25zL05v
dGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMzUwM0M5OTEwMTc5
QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBmaWxlRW5jb2Rpbmcg
PSA0OyBuYW1lID0gTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHBhdGggPSBNb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTMzNTAzQzlGMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vdGlmaWNhdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQ0EwMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlm
aWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05vdGlmaWNhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0MjcsNiArMTU0MzEsOCBAQAog
CQkJCTUxNEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZU1hYy5tbSAqLywK
IAkJCQk1MTRDNzY0OTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICov
LAogCQkJCTUxNEM3NjRCMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJjZVJlc3BvbnNlTWFjLm1t
ICovLAorCQkJCTFGQUZCRjE2MTVBNUZBNTIwMDA4M0EyMCAvKiBVVElVdGlsaXRpZXMuaCAqLywK
KwkJCQkxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tICovLAogCQkJ
CTM3RjgxOEZCMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJMUmVzcG9uc2UuaCAqLywKIAkJ
CQkzN0Y4MThGQzBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVSTFJlc3BvbnNlLm1tICovLAog
CQkJKTsKQEAgLTI1MTcyLDYgKzI1MTc4LDcgQEAKIAkJCQk1MDk4N0MyNzE1N0Q2NzZEMDBCREE4
MzUgLyogQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEYz
MkJCMUIxNEZBODVFODAwRjZDMUEzIC8qIE1lbW9yeUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTg4MkRBMjMxNTkzODQ4RDAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuaCBp
biBIZWFkZXJzICovLAorCQkJCTFGQUZCRjE5MTVBNUZBNzQwMDA4M0EyMCAvKiBVVElVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjgxNjUsNyArMjgxNzIsOCBAQAogCQkJCTJFNDM0NjQ4
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJDb250ZXh0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3MTJBNjExMTUwMDkwQ0UwMDQ4QUYxMCAvKiBXb3JrZXJDb250ZXh0SW5kZXhlZERhdGFiYXNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3RjhFNjY1MTUxRDRBNEIwMEQyRDE4MSAvKiBXb3Jr
ZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlBOENDQkI0QzE1
MUY4MzNCMDBBQjdDRTkgLyogV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLCBGMzQ3NDJFMDEzNDM2MzFGMDA1MzFCQzIgLyogV29ya2VyRGVidWdnZXJBZ2VudC5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBOENDQkI0QzE1MUY4MzNCMDBBQjdDRTkgLyogV29ya2VyQ29u
dGV4dFdlYkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYzNDc0MkUwMTM0MzYzMUYw
MDUzMUJDMiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUEz
RTI2NDMwMTQ3NDg5OTEwMDVBODU4OCAvKiBXb3JrZXJFdmVudFF1ZXVlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUYzNkUwN0E0MTM1OEE4QkUwMEFBQ0JDOSAvKiBXb3JrZXJJbnNwZWN0b3JDb250
cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFNDM0NjRDMEY1NDZBODIwMEIwRjFCQSAv
KiBXb3JrZXJMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4MjI1LDYgKzI4MjMzLDcg
QEAKIAkJCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4dEFsdGVybmF0aXZlV2l0aFJh
bmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTA5ODdDMjYxNTdENjc2RDAwQkRBODM1IC8qIEN1
c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTg4MkRBMjAx
NTkzODQ2QTAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MUZBRkJGMTgxNUE1RkE2RTAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJ
VXRpbGl0aWVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9VVElVdGlsaXRpZXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBVVElVdGlsaXRpZXNfaAorI2RlZmluZSBVVElVdGlsaXRpZXNfaAorCisjaW1wb3J0
IDx3dGYvUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK1JldGFpblB0cjxDRlN0
cmluZ1JlZj4gbWltZVR5cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZiB1dGkpOworfQorCisjZW5k
aWYgLy8gVVRJVXRpbGl0aWVzX2gKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1VUSVV0aWxpdGllcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0JKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMubW0JKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiVVRJVXRp
bGl0aWVzLmgiCisKKyNpZiBQTEFURk9STShJT1MpCisjaW1wb3J0ICJTb2Z0TGlua2luZy5oIgor
I2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorCitTT0ZU
X0xJTktfRlJBTUVXT1JLKE1vYmlsZUNvcmVTZXJ2aWNlcykKKworU09GVF9MSU5LKE1vYmlsZUNv
cmVTZXJ2aWNlcywgVVRUeXBlQ29weURlY2xhcmF0aW9uLCBDRkRpY3Rpb25hcnlSZWYsIChDRlN0
cmluZ1JlZiBpblVUSSksIChpblVUSSkpCitTT0ZUX0xJTksoTW9iaWxlQ29yZVNlcnZpY2VzLCBV
VFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzLCBDRlN0cmluZ1JlZiwgKENGU3RyaW5nUmVm
IGluVVRJLCBDRlN0cmluZ1JlZiBpblRhZ0NsYXNzKSwgKGluVVRJLCBpblRhZ0NsYXNzKSkKKwor
U09GVF9MSU5LX0NPTlNUQU5UKE1vYmlsZUNvcmVTZXJ2aWNlcywga1VUVHlwZUNvbmZvcm1zVG9L
ZXksIENGU3RyaW5nUmVmKQorU09GVF9MSU5LX0NPTlNUQU5UKE1vYmlsZUNvcmVTZXJ2aWNlcywg
a1VUVGFnQ2xhc3NNSU1FVHlwZSwgQ0ZTdHJpbmdSZWYpCisKKyNkZWZpbmUga1VUVGFnQ2xhc3NN
SU1FVHlwZSBnZXRrVVRUYWdDbGFzc01JTUVUeXBlKCkKKyNkZWZpbmUga1VUVHlwZUNvbmZvcm1z
VG9LZXkgZ2V0a1VUVHlwZUNvbmZvcm1zVG9LZXkoKQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZUZyb21VVElUcmVlKENGU3Ry
aW5nUmVmIHV0aSkKK3sKKyAgICAvLyBDaGVjayBpZiB0aGlzIFVUSSBoYXMgYSBNSU1FIHR5cGUu
CisgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZShBZG9wdENGLCBVVFR5cGVDb3B5
UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aSwga1VUVGFnQ2xhc3NNSU1FVHlwZSkpOworICAgIGlm
IChtaW1lVHlwZSkKKyAgICAgICAgcmV0dXJuIG1pbWVUeXBlLmdldCgpOworCisgICAgLy8gSWYg
bm90LCB3YWxrIHRoZSBhbmNlc3Rvcnkgb2YgdGhpcyBVVEkgdmlhIGl0cyAiQ29uZm9ybXNUbyIg
dGFncyBhbmQgcmV0dXJuIHRoZSBmaXJzdCBNSU1FIHR5cGUgd2UgZmluZC4KKyAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBkZWNsKEFkb3B0Q0YsIFVUVHlwZUNvcHlEZWNsYXJhdGlvbih1
dGkpKTsKKyAgICBpZiAoIWRlY2wpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgQ0ZUeXBlUmVm
IHZhbHVlID0gQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVjbC5nZXQoKSwga1VUVHlwZUNvbmZvcm1z
VG9LZXkpOworICAgIGlmICghdmFsdWUpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgQ0ZUeXBl
SUQgdHlwZUlEID0gQ0ZHZXRUeXBlSUQodmFsdWUpOworCisgICAgaWYgKHR5cGVJRCA9PSBDRlN0
cmluZ0dldFR5cGVJRCgpKQorICAgICAgICByZXR1cm4gbWltZVR5cGVGcm9tVVRJVHJlZSgoQ0ZT
dHJpbmdSZWYpdmFsdWUpOworCisgICAgaWYgKHR5cGVJRCA9PSBDRkFycmF5R2V0VHlwZUlEKCkp
IHsKKyAgICAgICAgQ0ZBcnJheVJlZiBuZXdUeXBlcyA9IChDRkFycmF5UmVmKXZhbHVlOworICAg
ICAgICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KG5ld1R5cGVzKTsKKyAgICAgICAg
Zm9yIChDRkluZGV4IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBDRlR5cGVSZWYg
b2JqZWN0ID0gQ0ZBcnJheUdldFZhbHVlQXRJbmRleChuZXdUeXBlcywgaSk7CisgICAgICAgIGlm
IChDRkdldFR5cGVJRChvYmplY3QpICE9IENGU3RyaW5nR2V0VHlwZUlEKCkpCisgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlw
ZSA9IG1pbWVUeXBlRnJvbVVUSVRyZWUoKENGU3RyaW5nUmVmKW9iamVjdCkpCisgICAgICAgICAg
ICByZXR1cm4gbWltZVR5cGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbmlsOwor
fQorCit9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3Jl
VVJMUmVzcG9uc2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCShyZXZpc2lvbiAxMjE5MDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9XZWJDb3JlVVJMUmVzcG9uc2UubW0JKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpbXBvcnQgIldlYkNvcmVVUkxSZXNwb25z
ZS5oIgogCiAjaW1wb3J0ICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisjaW1wb3J0ICJVVElVdGlsaXRp
ZXMuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKICNpbXBvcnQgPHd0Zi9B
c3NlcnRpb25zLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CkBAIC00NDcsNDEgKzQ0OCw2
IEBAIHN0YXRpYyBDRkRpY3Rpb25hcnlSZWYgY3JlYXRlRXh0ZW5zaW9uVG8KICAgICByZXR1cm4g
Q0ZEaWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCB2b2lkKiopJmtl
eXMsIChjb25zdCB2b2lkKiopJnZhbHVlcywgc2l6ZW9mKGtleXMpL3NpemVvZihDRlN0cmluZ1Jl
ZiksICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywgJmtDRlR5cGVEaWN0aW9uYXJ5VmFs
dWVDYWxsQmFja3MpOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlw
ZUZyb21VVElUcmVlKENGU3RyaW5nUmVmIHV0aSkKLXsKLSAgICAvLyBDaGVjayBpZiB0aGlzIFVU
SSBoYXMgYSBNSU1FIHR5cGUuCi0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZShB
ZG9wdENGLCBVVFR5cGVDb3B5UHJlZmVycmVkVGFnV2l0aENsYXNzKHV0aSwga1VUVGFnQ2xhc3NN
SU1FVHlwZSkpOwotICAgIGlmIChtaW1lVHlwZSkKLSAgICAgICAgcmV0dXJuIG1pbWVUeXBlLmdl
dCgpOwotICAgIAotICAgIC8vIElmIG5vdCwgd2FsayB0aGUgYW5jZXN0b3J5IG9mIHRoaXMgVVRJ
IHZpYSBpdHMgIkNvbmZvcm1zVG8iIHRhZ3MgYW5kIHJldHVybiB0aGUgZmlyc3QgTUlNRSB0eXBl
IHdlIGZpbmQuCi0gICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGVjbChBZG9wdENGLCBV
VFR5cGVDb3B5RGVjbGFyYXRpb24odXRpKSk7Ci0gICAgaWYgKCFkZWNsKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIENGVHlwZVJlZiB2YWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVlKGRlY2wu
Z2V0KCksIGtVVFR5cGVDb25mb3Jtc1RvS2V5KTsKLSAgICBpZiAoIXZhbHVlKQotICAgICAgICBy
ZXR1cm4gbmlsOwotICAgIENGVHlwZUlEIHR5cGVJRCA9IENGR2V0VHlwZUlEKHZhbHVlKTsKLSAg
ICAKLSAgICBpZiAodHlwZUlEID09IENGU3RyaW5nR2V0VHlwZUlEKCkpCi0gICAgICAgIHJldHVy
biBtaW1lVHlwZUZyb21VVElUcmVlKChDRlN0cmluZ1JlZil2YWx1ZSk7Ci0KLSAgICBpZiAodHlw
ZUlEID09IENGQXJyYXlHZXRUeXBlSUQoKSkgewotICAgICAgICBDRkFycmF5UmVmIG5ld1R5cGVz
ID0gKENGQXJyYXlSZWYpdmFsdWU7Ci0gICAgICAgIENGSW5kZXggY291bnQgPSBDRkFycmF5R2V0
Q291bnQobmV3VHlwZXMpOwotICAgICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBjb3VudDsg
KytpKSB7Ci0gICAgICAgICAgICBDRlR5cGVSZWYgb2JqZWN0ID0gQ0ZBcnJheUdldFZhbHVlQXRJ
bmRleChuZXdUeXBlcywgaSk7Ci0gICAgICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQob2JqZWN0KSAh
PSBDRlN0cmluZ0dldFR5cGVJRCgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAg
ICAgICAgICBpZiAoUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZSA9IG1pbWVUeXBlRnJv
bVVUSVRyZWUoKENGU3RyaW5nUmVmKW9iamVjdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1p
bWVUeXBlOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHJldHVybiBuaWw7Ci19Ci0KIHZv
aWQgYWRqdXN0TUlNRVR5cGVJZk5lY2Vzc2FyeShDRlVSTFJlc3BvbnNlUmVmIGNmUmVzcG9uc2Up
CiB7CiAgICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiByZXN1bHQgPSB3a0dldENGVVJMUmVzcG9u
c2VNSU1FVHlwZShjZlJlc3BvbnNlKTsK
</data>
<flag name="review"
          id="159324"
          type_id="1"
          status="+"
          setter="ddkilzer"
    />
    <flag name="commit-queue"
          id="159344"
          type_id="3"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>150973</attachid>
            <date>2012-07-05 12:47:26 -0700</date>
            <delta_ts>2012-07-05 13:19:24 -0700</delta_ts>
            <desc>Address review comments on previous patch.</desc>
            <filename>oss_uti_refactor.patch</filename>
            <type>text/plain</type>
            <size>15613</size>
            <attacher name="Yongjun Zhang">yongjun_zhang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMTkxMSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEyLTA3LTA1ICBZb25nanVu
IFpoYW5nICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQ29kZSByZWZhY3Rv
cmluZzogbW92ZSBtaW1lVHlwZUZyb21VVElUcmVlIHRvIGEgc2VwYXJhdGUgZmlsZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwNjE5CisKKyAgICAg
ICAgV2Ugc2hvdWxkIG1vdmUgVVRJIGhhbmRsaW5nIHJlbGF0ZWQgY29kZSB0byBhIHNlcGFyYXRl
IGZpbGUuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgorCisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgVVRJVXRpbGl0aWVzLmgvVVRJ
VXRpbGl0aWVzLm1tIHRvIHhjb2RlIHByb2plY3QsIGFuZCBkcml2ZS1ieSBmaXgKKyAgICAgICAg
ICAgIHRoYXQgaGFwcGVuZWQgd2hlbiBlZGl0aW5nIHRoZSBYY29kZSBwcm9qZWN0IGZpbGUuCisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0
aWVzLm1tOiBBZGRlZC4gIG1vdmUgbWltZVR5cGVGcm9tVVRJVHJlZSB0byBVVElVdGlsaXRpZXMu
bW0uCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Om1pbWVUeXBlRnJvbVVU
SVRyZWUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25z
ZS5tbTogaW5jbHVkZSBVVElVdGlsaXRpZXMuaCB0byB1c2UgbWltZVR5cGVGcm9tVVRJVHJlZS4K
KyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTA3LTA1ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRt
YW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG1vdmUgc2VhcmNoIGZp
ZWxkIHRvIHRoZSBib3R0b20gb2YgdGhlIHBhZ2UuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjE5MDkpCisr
KyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTY2OSw2ICs2NjksOCBAQAogCQkxRjNDM0JFQTEzNUNBRjNDMDBCOEMxQUMg
LyogTWVkaWFDb250cm9scy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxRjNDM0JFODEzNUNBRjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5jcHAg
Ki87IH07CiAJCTFGM0MzQkVCMTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRpYUNvbnRyb2xzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRjNDM0JFOTEzNUNB
RjNDMDBCOEMxQUMgLyogTWVkaWFDb250cm9scy5oICovOyB9OwogCQkxRjNGMTk1MzE0OTlDQTc2
MDBBNUFFQTcgLyogUE9ERnJlZUxpc3RBcmVuYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUYzRjE5NTIxNDk5Q0E3NjAwQTVBRUE3IC8qIFBPREZyZWVM
aXN0QXJlbmEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkxRkFGQkYxODE1QTVGQTZFMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUZBRkJGMTcxNUE1RkE1MjAw
MDgzQTIwIC8qIFVUSVV0aWxpdGllcy5tbSAqLzsgfTsKKwkJMUZBRkJGMTkxNUE1RkE3NDAwMDgz
QTIwIC8qIFVUSVV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUZBRkJGMTYxNUE1RkE1MjAwMDgzQTIwIC8qIFVUSVV0aWxpdGllcy5oICov
OyB9OwogCQkyMEQ2MjkyNjEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIw
RDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICov
OyB9OwogCQkyMEQ2MjkyNzEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMEQ2
MjkyNTEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggKi87IH07
CiAJCTIyNzc3NzYwMTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNzc3NzVG
MTM0NURFQTkwMDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzY1NCw2ICs3NjU2LDgg
QEAKIAkJMUYzQzNCRTgxMzVDQUYzQzAwQjhDMUFDIC8qIE1lZGlhQ29udHJvbHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFDb250cm9scy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFGM0MzQkU5MTM1Q0FGM0MwMEI4QzFBQyAvKiBNZWRp
YUNvbnRyb2xzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29udHJv
bHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUYzRjE5NTIxNDk5Q0E3NjAwQTVB
RUE3IC8qIFBPREZyZWVMaXN0QXJlbmEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUE9ERnJlZUxpc3RBcmVuYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxRkFG
QkYxNjE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFVUSVV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRpbGl0aWVzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVRJVXRpbGl0aWVzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyMEQ2MjkyNDEyNTM2OTBCMDAwODE1NDMgLyogSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTIwRDYyOTI1MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTIyNzc3NzVGMTM0NURFQTkw
MDhFQTQ1NSAvKiBJbnNwZWN0b3JGcm9udGVuZENoYW5uZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC03OTUxLDcgKzc5NTUsNyBAQAogCQkzMzE0QUNFOTEwODkyMDg2MDAw
RjBFNTYgLyogSlNFeGNlcHRpb25CYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTRXhjZXB0aW9uQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMzMTRBQ0VBMTA4OTIwODYwMDBGMEU1NiAvKiBKU0V4Y2VwdGlvbkJhc2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFeGNlcHRpb25CYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMzM0Y3MDRFMEZCNDlDQTIwMDhFMTJBNiAvKiBOb3RpZmljYXRp
b24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5pZGw7IHBhdGggPSBN
b2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKLQkJMzMzRjcwNEYwRkI0OUNBMjAwOEUxMkE2IC8qIE5vdGlmaWNhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOb3RpZmljYXRpb24uaDsgcGF0aCA9TW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkzMzNGNzA0RjBGQjQ5Q0EyMDA4RTEyQTYgLyogTm90aWZpY2F0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IE5vdGlmaWNhdGlvbi5oOyBwYXRoID0gTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkzMzUwM0M5OTEwMTc5QTc0MDAzQjQ3RTEgLyogTm90aWZpY2F0aW9uQ2xpZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBmaWxlRW5jb2RpbmcgPSA0OyBuYW1lID0gTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHBhdGgg
PSBNb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQzlGMTAxNzlBRDcwMDNCNDdFMSAvKiBKU05vdGlmaWNh
dGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vdGlmaWNh
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMzNTAzQ0EwMTAxNzlBRDcw
MDNCNDdFMSAvKiBKU05vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU05vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0
MjcsNiArMTU0MzEsOCBAQAogCQkJCTUxNEM3NjQ3MENFOTIzNEUwMDdFRjNDRCAvKiBSZXNvdXJj
ZUhhbmRsZU1hYy5tbSAqLywKIAkJCQk1MTRDNzY0OTBDRTkyMzRFMDA3RUYzQ0QgLyogUmVzb3Vy
Y2VSZXF1ZXN0TWFjLm1tICovLAogCQkJCTUxNEM3NjRCMENFOTIzNEUwMDdFRjNDRCAvKiBSZXNv
dXJjZVJlc3BvbnNlTWFjLm1tICovLAorCQkJCTFGQUZCRjE2MTVBNUZBNTIwMDA4M0EyMCAvKiBV
VElVdGlsaXRpZXMuaCAqLywKKwkJCQkxRkFGQkYxNzE1QTVGQTUyMDAwODNBMjAgLyogVVRJVXRp
bGl0aWVzLm1tICovLAogCQkJCTM3RjgxOEZCMEQ2NTc2MDYwMDVFMUYwNSAvKiBXZWJDb3JlVVJM
UmVzcG9uc2UuaCAqLywKIAkJCQkzN0Y4MThGQzBENjU3NjA2MDA1RTFGMDUgLyogV2ViQ29yZVVS
TFJlc3BvbnNlLm1tICovLAogCQkJKTsKQEAgLTI1MTcyLDYgKzI1MTc4LDcgQEAKIAkJCQk1MDk4
N0MyNzE1N0Q2NzZEMDBCREE4MzUgLyogQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNEYzMkJCMUIxNEZBODVFODAwRjZDMUEzIC8qIE1lbW9yeUluc3RydW1l
bnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg4MkRBMjMxNTkzODQ4RDAwMDExNUVEIC8q
IENTU1RvU3R5bGVNYXAuaCBpbiBIZWFkZXJzICovLAorCQkJCTFGQUZCRjE5MTVBNUZBNzQwMDA4
M0EyMCAvKiBVVElVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjgxNjUsNyArMjgxNzIs
OCBAQAogCQkJCTJFNDM0NjQ4MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJDb250ZXh0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk3MTJBNjExMTUwMDkwQ0UwMDQ4QUYxMCAvKiBXb3JrZXJDb250
ZXh0SW5kZXhlZERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3RjhFNjY1MTUxRDRB
NEIwMEQyRDE4MSAvKiBXb3JrZXJDb250ZXh0Tm90aWZpY2F0aW9ucy5jcHAgaW4gU291cmNlcyAq
LywKLQkJCQlBOENDQkI0QzE1MUY4MzNCMDBBQjdDRTkgLyogV29ya2VyQ29udGV4dFdlYkRhdGFi
YXNlLmNwcCBpbiBTb3VyY2VzICovLCBGMzQ3NDJFMDEzNDM2MzFGMDA1MzFCQzIgLyogV29ya2Vy
RGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBOENDQkI0QzE1MUY4MzNCMDBB
QjdDRTkgLyogV29ya2VyQ29udGV4dFdlYkRhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUYzNDc0MkUwMTM0MzYzMUYwMDUzMUJDMiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUEzRTI2NDMwMTQ3NDg5OTEwMDVBODU4OCAvKiBXb3JrZXJFdmVudFF1
ZXVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUYzNkUwN0E0MTM1OEE4QkUwMEFBQ0JDOSAvKiBX
b3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJFNDM0NjRD
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJMb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI4MjI1LDYgKzI4MjMzLDcgQEAKIAkJCQlDRTdCMkRCNjE1ODZBQkFEMDA5OEIzRkEgLyogVGV4
dEFsdGVybmF0aXZlV2l0aFJhbmdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTA5ODdDMjYxNTdE
Njc2RDAwQkRBODM1IC8qIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTg4MkRBMjAxNTkzODQ2QTAwMDExNUVEIC8qIENTU1RvU3R5bGVNYXAuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMUZBRkJGMTgxNUE1RkE2RTAwMDgzQTIwIC8qIFVUSVV0aWxpdGll
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9tYWMvVVRJVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9VVElVdGlsaXRpZXMuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFVUSVV0aWxpdGllc19oCisjZGVmaW5lIFVU
SVV0aWxpdGllc19oCisKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworUmV0YWluUHRyPENGU3RyaW5nUmVmPiBtaW1lVHlwZUZyb21VVElUcmVlKENGU3Ry
aW5nUmVmIHV0aSk7Cit9CisKKyNlbmRpZiAvLyBVVElVdGlsaXRpZXNfaApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvVVRJVXRpbGl0aWVzLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0aWxpdGllcy5tbQko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1VUSVV0
aWxpdGllcy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIlVUSVV0aWxpdGllcy5oIgorCisjaWYgUExBVEZPUk0oSU9T
KQorI2ltcG9ydCAiU29mdExpbmtpbmcuaCIKKyNpbXBvcnQgPE1vYmlsZUNvcmVTZXJ2aWNlcy9N
b2JpbGVDb3JlU2VydmljZXMuaD4KKworU09GVF9MSU5LX0ZSQU1FV09SSyhNb2JpbGVDb3JlU2Vy
dmljZXMpCisKK1NPRlRfTElOSyhNb2JpbGVDb3JlU2VydmljZXMsIFVUVHlwZUNvcHlEZWNsYXJh
dGlvbiwgQ0ZEaWN0aW9uYXJ5UmVmLCAoQ0ZTdHJpbmdSZWYgaW5VVEkpLCAoaW5VVEkpKQorU09G
VF9MSU5LKE1vYmlsZUNvcmVTZXJ2aWNlcywgVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFz
cywgQ0ZTdHJpbmdSZWYsIChDRlN0cmluZ1JlZiBpblVUSSwgQ0ZTdHJpbmdSZWYgaW5UYWdDbGFz
cyksIChpblVUSSwgaW5UYWdDbGFzcykpCisKK1NPRlRfTElOS19DT05TVEFOVChNb2JpbGVDb3Jl
U2VydmljZXMsIGtVVFR5cGVDb25mb3Jtc1RvS2V5LCBDRlN0cmluZ1JlZikKK1NPRlRfTElOS19D
T05TVEFOVChNb2JpbGVDb3JlU2VydmljZXMsIGtVVFRhZ0NsYXNzTUlNRVR5cGUsIENGU3RyaW5n
UmVmKQorCisjZGVmaW5lIGtVVFRhZ0NsYXNzTUlNRVR5cGUgZ2V0a1VUVGFnQ2xhc3NNSU1FVHlw
ZSgpCisjZGVmaW5lIGtVVFR5cGVDb25mb3Jtc1RvS2V5IGdldGtVVFR5cGVDb25mb3Jtc1RvS2V5
KCkKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1JldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gbWltZVR5cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZiB1dGkpCit7CisgICAgLy8gQ2hlY2sg
aWYgdGhpcyBVVEkgaGFzIGEgTUlNRSB0eXBlLgorICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4g
bWltZVR5cGUoQWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJlZFRhZ1dpdGhDbGFzcyh1dGksIGtV
VFRhZ0NsYXNzTUlNRVR5cGUpKTsKKyAgICBpZiAobWltZVR5cGUpCisgICAgICAgIHJldHVybiBt
aW1lVHlwZS5nZXQoKTsKKworICAgIC8vIElmIG5vdCwgd2FsayB0aGUgYW5jZXN0b3J5IG9mIHRo
aXMgVVRJIHZpYSBpdHMgIkNvbmZvcm1zVG8iIHRhZ3MgYW5kIHJldHVybiB0aGUgZmlyc3QgTUlN
RSB0eXBlIHdlIGZpbmQuCisgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gZGVjbChBZG9w
dENGLCBVVFR5cGVDb3B5RGVjbGFyYXRpb24odXRpKSk7CisgICAgaWYgKCFkZWNsKQorICAgICAg
ICByZXR1cm4gbmlsOworICAgIENGVHlwZVJlZiB2YWx1ZSA9IENGRGljdGlvbmFyeUdldFZhbHVl
KGRlY2wuZ2V0KCksIGtVVFR5cGVDb25mb3Jtc1RvS2V5KTsKKyAgICBpZiAoIXZhbHVlKQorICAg
ICAgICByZXR1cm4gbmlsOworICAgIENGVHlwZUlEIHR5cGVJRCA9IENGR2V0VHlwZUlEKHZhbHVl
KTsKKworICAgIGlmICh0eXBlSUQgPT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKKyAgICAgICAgcmV0
dXJuIG1pbWVUeXBlRnJvbVVUSVRyZWUoKENGU3RyaW5nUmVmKXZhbHVlKTsKKworICAgIGlmICh0
eXBlSUQgPT0gQ0ZBcnJheUdldFR5cGVJRCgpKSB7CisgICAgICAgIENGQXJyYXlSZWYgbmV3VHlw
ZXMgPSAoQ0ZBcnJheVJlZil2YWx1ZTsKKyAgICAgICAgQ0ZJbmRleCBjb3VudCA9IENGQXJyYXlH
ZXRDb3VudChuZXdUeXBlcyk7CisgICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKKyAgICAgICAgQ0ZUeXBlUmVmIG9iamVjdCA9IENGQXJyYXlHZXRWYWx1ZUF0SW5k
ZXgobmV3VHlwZXMsIGkpOworICAgICAgICBpZiAoQ0ZHZXRUeXBlSUQob2JqZWN0KSAhPSBDRlN0
cmluZ0dldFR5cGVJRCgpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUgPSBtaW1lVHlwZUZyb21VVElUcmVlKChDRlN0
cmluZ1JlZilvYmplY3QpKQorICAgICAgICAgICAgcmV0dXJuIG1pbWVUeXBlOworICAgICAgICB9
CisgICAgfQorCisgICAgcmV0dXJuIG5pbDsKK30KKworfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9tYWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1dlYkNvcmVVUkxSZXNwb25zZS5t
bQkocmV2aXNpb24gMTIxOTA5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9t
YWMvV2ViQ29yZVVSTFJlc3BvbnNlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBA
CiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKIAogI2ltcG9ydCAiTUlNRVR5cGVSZWdp
c3RyeS5oIgorI2ltcG9ydCAiVVRJVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJXZWJDb3JlU3lzdGVt
SW50ZXJmYWNlLmgiCiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgpAQCAtNDQ3LDQxICs0NDgsNiBAQCBzdGF0aWMgQ0ZEaWN0aW9uYXJ5UmVmIGNy
ZWF0ZUV4dGVuc2lvblRvCiAgICAgcmV0dXJuIENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAoY29uc3Qgdm9pZCoqKSZrZXlzLCAoY29uc3Qgdm9pZCoqKSZ2YWx1ZXMsIHNp
emVvZihrZXlzKS9zaXplb2YoQ0ZTdHJpbmdSZWYpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxs
QmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKIH0KIAotc3RhdGljIFJl
dGFpblB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGVGcm9tVVRJVHJlZShDRlN0cmluZ1JlZiB1dGkp
Ci17Ci0gICAgLy8gQ2hlY2sgaWYgdGhpcyBVVEkgaGFzIGEgTUlNRSB0eXBlLgotICAgIFJldGFp
blB0cjxDRlN0cmluZ1JlZj4gbWltZVR5cGUoQWRvcHRDRiwgVVRUeXBlQ29weVByZWZlcnJlZFRh
Z1dpdGhDbGFzcyh1dGksIGtVVFRhZ0NsYXNzTUlNRVR5cGUpKTsKLSAgICBpZiAobWltZVR5cGUp
Ci0gICAgICAgIHJldHVybiBtaW1lVHlwZS5nZXQoKTsKLSAgICAKLSAgICAvLyBJZiBub3QsIHdh
bGsgdGhlIGFuY2VzdG9yeSBvZiB0aGlzIFVUSSB2aWEgaXRzICJDb25mb3Jtc1RvIiB0YWdzIGFu
ZCByZXR1cm4gdGhlIGZpcnN0IE1JTUUgdHlwZSB3ZSBmaW5kLgotICAgIFJldGFpblB0cjxDRkRp
Y3Rpb25hcnlSZWY+IGRlY2woQWRvcHRDRiwgVVRUeXBlQ29weURlY2xhcmF0aW9uKHV0aSkpOwot
ICAgIGlmICghZGVjbCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBDRlR5cGVSZWYgdmFsdWUg
PSBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkZWNsLmdldCgpLCBrVVRUeXBlQ29uZm9ybXNUb0tleSk7
Ci0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBDRlR5cGVJRCB0eXBl
SUQgPSBDRkdldFR5cGVJRCh2YWx1ZSk7Ci0gICAgCi0gICAgaWYgKHR5cGVJRCA9PSBDRlN0cmlu
Z0dldFR5cGVJRCgpKQotICAgICAgICByZXR1cm4gbWltZVR5cGVGcm9tVVRJVHJlZSgoQ0ZTdHJp
bmdSZWYpdmFsdWUpOwotCi0gICAgaWYgKHR5cGVJRCA9PSBDRkFycmF5R2V0VHlwZUlEKCkpIHsK
LSAgICAgICAgQ0ZBcnJheVJlZiBuZXdUeXBlcyA9IChDRkFycmF5UmVmKXZhbHVlOwotICAgICAg
ICBDRkluZGV4IGNvdW50ID0gQ0ZBcnJheUdldENvdW50KG5ld1R5cGVzKTsKLSAgICAgICAgZm9y
IChDRkluZGV4IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgQ0ZUeXBlUmVm
IG9iamVjdCA9IENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgobmV3VHlwZXMsIGkpOwotICAgICAgICAg
ICAgaWYgKENGR2V0VHlwZUlEKG9iamVjdCkgIT0gQ0ZTdHJpbmdHZXRUeXBlSUQoKSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgaWYgKFJldGFpblB0cjxDRlN0cmlu
Z1JlZj4gbWltZVR5cGUgPSBtaW1lVHlwZUZyb21VVElUcmVlKChDRlN0cmluZ1JlZilvYmplY3Qp
KQotICAgICAgICAgICAgICAgIHJldHVybiBtaW1lVHlwZTsKLSAgICAgICAgfQotICAgIH0KLSAg
ICAKLSAgICByZXR1cm4gbmlsOwotfQotCiB2b2lkIGFkanVzdE1JTUVUeXBlSWZOZWNlc3Nhcnko
Q0ZVUkxSZXNwb25zZVJlZiBjZlJlc3BvbnNlKQogewogICAgIFJldGFpblB0cjxDRlN0cmluZ1Jl
Zj4gcmVzdWx0ID0gd2tHZXRDRlVSTFJlc3BvbnNlTUlNRVR5cGUoY2ZSZXNwb25zZSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>