Angular_Domsanitizer
<h2><span style="font-size: 1.5em">背景</span></h2><p><span data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIycGxhdGZvcm0lMjIlM0ElMjJ0aG91Z2h0cyUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU3JTlCJUI0JUU2JThFJUE1JUU0JUJEJUJGJUU3JTk0JUE4JUU2JThFJUE1JUU1JThGJUEzJUU4JThFJUI3JUU1JThGJTk2JUU1JTg4JUIwdXJsJUVGJUJDJThDJUU3JUJCJTk5aWZyYW1lJUU3JTlBJTg0c3JjJUU4JUI1JThCJUU1JTgwJUJDJUU2JTk3JUI2JUVGJUJDJThDJUU2JThBJUE1JUU0JUJBJTg2JUU0JUI4JUFBUlJPUiUyMEVycm9yJTNBJTIwdW5zYWZlJTIwdmFsdWUlMjB1c2VkJTIwaW4lMjBhJTIwcmVzb3VyY2UlMjBVUkwlMjBjb250ZXh0LiVFNSVBNCVBNyVFNiVBNiU4MiVFNyU5QSU4NCVFNiU4NCU4RiVFNiU4MCU5RCVFNSVCMCVCMSVFNiU5OCVBRiVFOCVCNSU4NCVFNiVCQSU5MHVybCVFNCVCOCU4RCVFNSVBRSU4OSVFNSU4NSVBOCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTVEJTdE">项目中需要用iframe引用一个外部的url。</span><span data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIycGxhdGZvcm0lMjIlM0ElMjJ0aG91Z2h0cyUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU3JTlCJUI0JUU2JThFJUE1JUU0JUJEJUJGJUU3JTk0JUE4JUU2JThFJUE1JUU1JThGJUEzJUU4JThFJUI3JUU1JThGJTk2JUU1JTg4JUIwdXJsJUVGJUJDJThDJUU3JUJCJTk5aWZyYW1lJUU3JTlBJTg0c3JjJUU4JUI1JThCJUU1JTgwJUJDJUU2JTk3JUI2JUVGJUJDJThDJUU2JThBJUE1JUU0JUJBJTg2JUU0JUI4JUFBUlJPUiUyMEVycm9yJTNBJTIwdW5zYWZlJTIwdmFsdWUlMjB1c2VkJTIwaW4lMjBhJTIwcmVzb3VyY2UlMjBVUkwlMjBjb250ZXh0LiVFNSVBNCVBNyVFNiVBNiU4MiVFNyU5QSU4NCVFNiU4NCU4RiVFNiU4MCU5RCVFNSVCMCVCMSVFNiU5OCVBRiVFOCVCNSU4NCVFNiVCQSU5MHVybCVFNCVCOCU4RCVFNSVBRSU4OSVFNSU4NSVBOCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTVEJTdE">使用接口获取到url,给iframe的src赋值时,报了个ERROR Error: unsafe value used in a resource URL context.大概的意思就是资源url不安全</span></p>
<p><span data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIycGxhdGZvcm0lMjIlM0ElMjJ0aG91Z2h0cyUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU3JTlCJUI0JUU2JThFJUE1JUU0JUJEJUJGJUU3JTk0JUE4JUU2JThFJUE1JUU1JThGJUEzJUU4JThFJUI3JUU1JThGJTk2JUU1JTg4JUIwdXJsJUVGJUJDJThDJUU3JUJCJTk5aWZyYW1lJUU3JTlBJTg0c3JjJUU4JUI1JThCJUU1JTgwJUJDJUU2JTk3JUI2JUVGJUJDJThDJUU2JThBJUE1JUU0JUJBJTg2JUU0JUI4JUFBUlJPUiUyMEVycm9yJTNBJTIwdW5zYWZlJTIwdmFsdWUlMjB1c2VkJTIwaW4lMjBhJTIwcmVzb3VyY2UlMjBVUkwlMjBjb250ZXh0LiVFNSVBNCVBNyVFNiVBNiU4MiVFNyU5QSU4NCVFNiU4NCU4RiVFNiU4MCU5RCVFNSVCMCVCMSVFNiU5OCVBRiVFOCVCNSU4NCVFNiVCQSU5MHVybCVFNCVCOCU4RCVFNSVBRSU4OSVFNSU4NSVBOCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTVEJTdE"><img src="https://img2022.cnblogs.com/blog/2237503/202203/2237503-20220309105909080-872608017.png"></span></p>
<p> <span data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIycGxhdGZvcm0lMjIlM0ElMjJ0aG91Z2h0cyUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU3JTlCJUI0JUU2JThFJUE1JUU0JUJEJUJGJUU3JTk0JUE4JUU2JThFJUE1JUU1JThGJUEzJUU4JThFJUI3JUU1JThGJTk2JUU1JTg4JUIwdXJsJUVGJUJDJThDJUU3JUJCJTk5aWZyYW1lJUU3JTlBJTg0c3JjJUU4JUI1JThCJUU1JTgwJUJDJUU2JTk3JUI2JUVGJUJDJThDJUU2JThBJUE1JUU0JUJBJTg2JUU0JUI4JUFBUlJPUiUyMEVycm9yJTNBJTIwdW5zYWZlJTIwdmFsdWUlMjB1c2VkJTIwaW4lMjBhJTIwcmVzb3VyY2UlMjBVUkwlMjBjb250ZXh0LiVFNSVBNCVBNyVFNiVBNiU4MiVFNyU5QSU4NCVFNiU4NCU4RiVFNiU4MCU5RCVFNSVCMCVCMSVFNiU5OCVBRiVFOCVCNSU4NCVFNiVCQSU5MHVybCVFNCVCOCU4RCVFNSVBRSU4OSVFNSU4NSVBOCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTVEJTdE">网上搜索了下找到Angular提供的DomSanitizer</span></p>
<h2> Angular文档</h2>
<p><span style="color: rgba(136, 136, 136, 1)">调用任何 <span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-13327:1"><span style="background-color: rgba(255, 255, 255, 1); color: rgba(255, 0, 0, 1)"><code class="inline-code__ohze " data-slate-mark="true">bypassSecurityTrust...</code></span><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-13327:2" data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIycGxhdGZvcm0lMjIlM0ElMjJ0aG91Z2h0cyUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU4JUIwJTgzJUU3JTk0JUE4JUU0JUJCJUJCJUU0JUJEJTk1JTIwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkJBQ0tHUk9VTkRfJTIzRkZGRkZGJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQ09MT1JfJTIzNDQ0NDQ0JTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyYnlwYXNzU2VjdXJpdHlUcnVzdC4uLiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJDT0RFJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwQVBJJTIwJUU5JTgzJUJEJUU0JUJDJTlBJUU3JUE2JTgxJUU3JTk0JUE4JTIwQW5ndWxhciUyMCVFNSVBRiVCOSVFNCVCQyVBMCVFNSU4NSVBNSVFNyU5QSU4NCVFNSU4MCVCQyVFNyU5QSU4NCVFNSU4NiU4NSVFNyVCRCVBRSVFNSU4NyU4MCVFNSU4QyU5NiVFNiU5QyVCQSVFNSU4OCVCNiVFMyU4MCU4MiUyMCVFOCVBNiU4MSVFNSVCMCU4RiVFNSVCRiU4MyVFNyVCRiVCQyVFNyVCRiVCQyVFNyU5QSU4NCVFNiVBMyU4MCVFNiU5RiVBNSVFNSU5MiU4QyVFNSVBRSVBMSVFOCVBRSVBMSVFNiU4OSU4MCVFNiU5QyU4OSVFNyU5QSU4NCVFNSU4MCVCQyVFNSU5MiU4QyVFNSU4OCVCMCVFOCVBRiVBNSVFOCVCMCU4MyVFNyU5NCVBOCVFNyU5QSU4NCVFNCVCQiVBMyVFNyVBMCU4MSVFNiU4OSVBNyVFOCVBMSU4QyVFOCVCNyVBRiVFNSVCRSU4NCVFMyU4MCU4MiUyMCVFOCVBNiU4MSVFNyVBMSVBRSVFNCVCRiU5RCVFNCVCQiVCQiVFNCVCRCU5NSVFNCVCOCU4MCVFNCVCOCVBQSVFNyU5NCVBOCVFNiU4OCVCNyVFNiU5NSVCMCVFNiU4RCVBRSVFOSU4MyVCRCVFOSU5MiU4OCVFNSVBRiVCOSVFOCVCRiU5OSVFNCVCOCVBQSVFNSVBRSU4OSVFNSU4NSVBOCVFNCVCOCU4QSVFNCVCOCU4QiVFNiU5NiU4NyVFOCVCRiU5QiVFOCVBMSU4QyVFOCVCRiU4NyVFOSU4MCU4MiVFNSVCRCU5MyVFNyU5QSU4NCVFOCVCRCVBQyVFNCVCOSU4OSVFRiVCQyU4OGVzY2FwZSVFRiVCQyU4OSVFMyU4MCU4MiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJCQUNLR1JPVU5EXyUyM0ZGRkZGRiUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkNPTE9SXyUyMzQ0NDQ0NCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0Q="><span data-slate-mark="true"> <span style="background-color: rgba(255, 255, 255, 1)">API</span> 都会禁用 Angular 对传入的值的内置净化机制,也就是说只要调用了此API就会对传入的函数代码块的值进行严格的检查,包括路径、html标签、js代码等确定安全后方可以插入,而且插入方式不可以是插值法直接插入,必须是属性绑定的形式插入。要小心翼翼的检查和审计所有的值和到该调用的代码执行路径。 要确保任何一个用户数据都针对这个安全上下文进行过适当的转义(escape)。</span></span></span></span></p>
<p>DomSanitizer有助于防止跨站点脚本安全漏洞(XSS),通过清除值以便在不同的DOM上下文中安全使用。</p>
<p>比如,如果要在 <span style="color: rgba(255, 0, 0, 1)"><code><a ="someValue"></code></span> 的链接中绑定一个 URL,<span style="color: rgba(255, 0, 0, 1)"><code>someValue</code></span> 将会被净化, 以防范攻击者注入<span style="color: rgba(255, 0, 0, 1)"> <code>javascript:</code></span> 之类的 URL,并借此在网站上执行代码。</p>
<p>在特定场景下,可能要禁用净化机制,比如,如果应用程序真的需要生成具有动态值的 <span style="color: rgba(255, 0, 0, 1)"><code>javascript:</code></span> 链接。 用户可以通过使用 <span style="color: rgba(255, 0, 0, 1)"><code>bypassSecurityTrust...</code> </span>方法来构建出一个值,以绕过安全性检查,并在模板中绑定它。</p>
<p>这种场景其实非常罕见,必须特别小心,避免引入跨站脚本攻击(XSS)类的安全风险。</p>
<p>当使用 <span style="color: rgba(255, 0, 0, 1)"><code>bypassSecurityTrust...</code></span> 时,请尽量确保尽早调用该方法,并且让他尽可能接近值的来源,以便能更容易地验证使用它时有没有引入安全风险。</p>
<p>如果该值本身是安全的,则不需要绕过安全性检查,比如那些没有使用可疑协议的 URL 或者不包含危险代码的 HTML 片段。 净化器会确保值的安全性。</p>
<p>——翻译自Angular官网</p>
<p>通俗来讲:</p>
<p>就是在Angular中默认将所有输入值视为不受信任。当我们通过 property,attribute,样式,类绑定或插值等方式,将一个值从模板中插入到DOM中时,Angular 会自动帮我们清除和转义不受信任的值。</p>
<h2>XSS简介</h2>
<p>跨站脚本(Cross-site scripting,通常简称为XSS)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。</p>
<p>XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。 — 维基百科</p>
<h2>API</h2>
<h3><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25270">1. sanitize()</span></h3>
<p>为在给定的 SecurityContext 中使用而对 <span style="font-size: 14px" data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25271:1"><code class="inline-code__ohze " data-slate-mark="true"><span data-slate-content="true">value</span></code><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25271:2"><span data-slate-mark="true"><span data-slate-content="true"> 进行转义</span></span></span></span></p>
<div class="anchor-wrapper__wjip" data-is-disabled="false" data-type="paragraph">
<div class="wide-screen-container__39MF" data-is-widescreen="false" data-type="paragraph">
<div data-type="paragraph">
<p class="p__1x2j" data-key="5fe458feb9ed8c18043b29bd"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25272"><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25272:0"><span data-slate-mark="true"><span data-slate-content="true">如果这个值在这个上下文中是可信的,则该方法会解开所包含的安全值,并且直接使用它;否则,这个值就会根据给定的安全上下文净化成安全的,比如替换那些具有不安全协议(例如 <span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25272:1"><code class="inline-code__ohze " data-slate-mark="true"><span data-slate-content="true">javascript:</span></code><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25272:2"><span data-slate-mark="true"><span data-slate-content="true">)的 URL。 该实现负责确保在给定的上下文中可以绝对安全的使用该值。</span></span></span></span></span></span></span></span></p>
<p class="p__1x2j" data-key="5fe458feb9ed8c18043b29bd"><strong>2. <span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25273"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25273">bypassSecurityTrustHtml()</span></span></strong></p>
</div>
</div>
</div>
<div class="anchor-wrapper__wjip" data-is-disabled="false" data-type="paragraph">
<div class="wide-screen-container__39MF" data-is-widescreen="false" data-type="paragraph">
<div data-type="paragraph">
<p class="p__1x2j" data-key="5fe45962b9ed8c09b13b29c6"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274"><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274:0"><span data-slate-mark="true"><span data-slate-content="true">绕过安全检查,并信任给定的值是一个安全的 HTML。只有当要绑定的 HTML 是不安全内容(比如包含 <span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274:1"><code class="inline-code__ohze " data-slate-mark="true"><span data-slate-content="true"><script></span></code><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274:2"><span data-slate-mark="true"><span data-slate-content="true">)而且你确实希望运行这些代码时,才需要使用它。 净化器会确保安全 HTML 的完整性,因此在大多数场景下都不需要使用该方法。</span></span></span></span></span></span></span></span></p>
<p class="p__1x2j" data-key="5fe45962b9ed8c09b13b29c6"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274"><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274:0"><span data-slate-mark="true"><span data-slate-content="true"><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274:1"><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274:2"><span data-slate-mark="true"><span data-slate-content="true">代码示例:</span></span></span></span></span></span></span></span></p>
<p class="p__1x2j" data-key="5fe45962b9ed8c09b13b29c6"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274"><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274:0"><span data-slate-mark="true"><span data-slate-content="true"><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274:1"><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274:2"><span data-slate-mark="true"><span data-slate-content="true">TS:</span></span></span></span></span></span></span></span></p>
<div class="cnblogs_code">
<pre>import { Component,OnInit } from '@angular/core'<span style="color: rgba(0, 0, 0, 1)">;</span><span style="color: rgba(0, 0, 0, 1)">
import {DomSanitizer} from </span>"@angular/platform-browser"<span style="color: rgba(0, 0, 0, 1)">;
@Component({
selector: </span>'page-test'<span style="color: rgba(0, 0, 0, 1)">,
templateUrl: </span>'test.html'<span style="color: rgba(0, 0, 0, 1)">,
})
export class TestPage implements OnInit {
public htmling</span>="<div>很高<p>使得</p><a >蓝色</a></div>"<span style="color: rgba(0, 0, 0, 1)">;<br>
constructor( public dz:DomSanitizer ) { }
ngOnInit() {</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.aa=<span style="color: rgba(0, 0, 255, 1)">this</span>.dz.bypassSecurityTrustHtml(<span style="color: rgba(0, 0, 255, 1)">this</span>.htmling);<span style="color: rgba(0, 0, 0, 1)">
}<br>
assembleHTML(strHTML:any) {
</span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.dz.bypassSecurityTrustHtml(strHTML);
}
}</span></pre>
</div>
<p>HTML:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)">html 属性绑定方法</span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)"></span><span style="color: rgba(0, 0, 255, 1)">="assembleHTML(htmling)"</span><span style="color: rgba(0, 0, 255, 1)">></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)">html错误写法</span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>{{aa}}<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 128, 0, 1)"><!--</span><span style="color: rgba(0, 128, 0, 1)">html 属性绑定属性值</span><span style="color: rgba(0, 128, 0, 1)">--></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)"></span><span style="color: rgba(0, 0, 255, 1)">="aa"</span><span style="color: rgba(0, 0, 255, 1)">></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>结果:</p>
<p><img src="https://img2022.cnblogs.com/blog/2237503/202203/2237503-20220309143120123-2045687027.png"></p>
<p><strong>3. bypassSecurityTrustStyle()</strong></p>
</div>
</div>
</div>
<div class="anchor-wrapper__wjip" data-is-disabled="false" data-type="paragraph">
<div class="wide-screen-container__39MF" data-is-widescreen="false" data-type="paragraph">
<div data-type="paragraph">
<p class="p__1x2j" data-key="5fe459cbb9ed8c7a443b29d4"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25277">绕过安全检查,并信任给定的值是一个安全的样式(CSS)。</span></p>
<p class="p__1x2j" data-key="5fe45962b9ed8c09b13b29c6"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274">代码示例:</span></p>
<p class="p__1x2j" data-key="5fe45962b9ed8c09b13b29c6"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274">TS:</span></p>
<div class="cnblogs_code">
<pre>import { Component, OnInit } from '@angular/core'<span style="color: rgba(0, 0, 0, 1)">;</span><span style="color: rgba(0, 0, 0, 1)">
import {DomSanitizer} from </span>"@angular/platform-browser"<span style="color: rgba(0, 0, 0, 1)">;
@Component({
selector: </span>'page-test'<span style="color: rgba(0, 0, 0, 1)">,
templateUrl: </span>'test.html'<span style="color: rgba(0, 0, 0, 1)">,
})
export class TestPage implements OnInit {
public htmling</span>="height: 100px;background-color: red"<span style="color: rgba(0, 0, 0, 1)">;
constructor( public dz:DomSanitizer ) { }
ngOnInit() {</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.aa=<span style="color: rgba(0, 0, 255, 1)">this</span>.dz.bypassSecurityTrustStyle(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.htmling)
}
}</span></pre>
</div>
<p>HTML:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)"></span><span style="color: rgba(0, 0, 255, 1)">="aa"</span><span style="color: rgba(0, 0, 255, 1)">></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>结果:</p>
<p><img src="https://img2022.cnblogs.com/blog/2237503/202203/2237503-20220309143107437-853710108.png"></p>
<p><strong>4. <span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25304"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25304">bypassSecurityTrustScript()</span></span></strong></p>
</div>
</div>
</div>
<div class="anchor-wrapper__wjip" data-is-disabled="false" data-type="paragraph">
<div class="wide-screen-container__39MF" data-is-widescreen="false" data-type="paragraph">
<div data-type="paragraph">
<p class="p__1x2j" data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25307"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-28740">绕过安全检查,并信任给定的值是一个安全的JavaScript。</span></p>
<p class="p__1x2j" data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25307"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-28792"><strong>5. bypassSecurityTrustUrl()</strong></span></p>
</div>
</div>
</div>
<div class="anchor-wrapper__wjip" data-is-disabled="false" data-type="paragraph">
<div class="wide-screen-container__39MF" data-is-widescreen="false" data-type="paragraph">
<div data-type="paragraph">
<p class="p__1x2j" data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-28798"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29144"><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29144:0"><span data-slate-mark="true"><span data-slate-content="true">绕过安全检查,并信任给定的值是一个安全的样式 URL。也就是说该值可安全地用在链接或 <span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29144:1"><code class="inline-code__ohze " data-slate-mark="true"><span data-slate-content="true"><img src></span></code><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29144:2"><span data-slate-mark="true"><span data-slate-content="true"> 中。</span></span></span></span></span></span></span></span></p>
<p class="p__1x2j" data-key="5fe45962b9ed8c09b13b29c6"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274">代码示例:</span></p>
<p class="p__1x2j" data-key="5fe45962b9ed8c09b13b29c6"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274">TS:</span></p>
<div class="cnblogs_code">
<pre>import { Component, OnInit } from '@angular/core'<span style="color: rgba(0, 0, 0, 1)">;</span><span style="color: rgba(0, 0, 0, 1)">
import {DomSanitizer} from </span>"@angular/platform-browser"<span style="color: rgba(0, 0, 0, 1)">;
@Component({
selector: </span>'page-test'<span style="color: rgba(0, 0, 0, 1)">,
templateUrl: </span>'test.html'<span style="color: rgba(0, 0, 0, 1)">,
})
export class TestPage implements OnInit {
public htmling</span>="./assets/icon/1000.png"<span style="color: rgba(0, 0, 0, 1)">;
constructor(public dz:DomSanitizer ) { }
ngOnInit() {</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.aa=<span style="color: rgba(0, 0, 255, 1)">this</span>.dz.bypassSecurityTrustUrl(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.htmling)
}
}</span></pre>
</div>
<p>HTML:</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(0, 0, 255, 1)">></span> <span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">img </span><span style="color: rgba(255, 0, 0, 1)"></span><span style="color: rgba(0, 0, 255, 1)">="aa"</span><span style="color: rgba(0, 0, 255, 1)">></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p>结果:</p>
<p><img src="https://img2022.cnblogs.com/blog/2237503/202203/2237503-20220309143056118-1778087766.png"></p>
<p><strong>6. bypassSecurityTrustResourceUrl()</strong></p>
</div>
</div>
</div>
<div class="anchor-wrapper__wjip" data-is-disabled="false" data-type="paragraph">
<div class="wide-screen-container__39MF" data-is-widescreen="false" data-type="paragraph">
<div data-type="paragraph">
<p class="p__1x2j" data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29213"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29240"><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29240:0"><span data-slate-mark="true"><span data-slate-content="true">绕过安全检查,并信任给定的值是一个安全的资源 URL。也就是说该地址可以安全的用于加载可执行代码,比如 <span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29240:1"><code class="inline-code__ohze " data-slate-mark="true"><span data-slate-content="true"><script src></span></code><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29240:2"><span data-slate-mark="true"><span data-slate-content="true"> 或 <span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29240:3"><code class="inline-code__ohze " data-slate-mark="true"><span data-slate-content="true"><iframe src></span></code><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29240:4"><span data-slate-mark="true"><span data-slate-content="true">。</span></span></span></span></span></span></span></span></span></span></span></span></p>
<p class="p__1x2j" data-key="5fe45962b9ed8c09b13b29c6"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274">代码示例:</span></p>
<p class="p__1x2j" data-key="5fe45962b9ed8c09b13b29c6"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274">TS:</span></p>
<div class="cnblogs_code">
<pre>import { Component, OnInit } from '@angular/core'<span style="color: rgba(0, 0, 0, 1)">;</span><span style="color: rgba(0, 0, 0, 1)">
import {DomSanitizer} from </span>"@angular/platform-browser"<span style="color: rgba(0, 0, 0, 1)">;
@Component({
selector: </span>'page-test'<span style="color: rgba(0, 0, 0, 1)">,
templateUrl: </span>'test.html'<span style="color: rgba(0, 0, 0, 1)">,
})
export class TestPage implements OnInit {
public htmling</span>="https://segmentfault.com/"<span style="color: rgba(0, 0, 0, 1)">;
public aa:object;
constructor( public dz:DomSanitizer ) { }
ngOnInit() {</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.aa=<span style="color: rgba(0, 0, 255, 1)">this</span>.dz.bypassSecurityTrustResourceUrl(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.htmling)
}
}</span></pre>
</div>
<p>HTML:</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">iframe </span><span style="color: rgba(255, 0, 0, 1)"></span><span style="color: rgba(0, 0, 255, 1)">="aa"</span><span style="color: rgba(0, 0, 255, 1)">></</span><span style="color: rgba(128, 0, 0, 1)">iframe</span><span style="color: rgba(0, 0, 255, 1)">></span></pre>
</div>
<p class="p__1x2j" data-key="5fe45962b9ed8c09b13b29c6"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274">结果:</span></p>
<p class="p__1x2j" data-key="5fe45962b9ed8c09b13b29c6"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-25274"><img src="https://img2022.cnblogs.com/blog/2237503/202203/2237503-20220309143256846-677474158.png"></span></p>
<p><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29263"><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29263:0"><strong data-slate-mark="true"><span data-slate-content="true">警告:</span></strong><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29263:1"><span data-slate-mark="true"><span data-slate-content="true"> 使用不可信的用户数据调用此方法将会让你的应用暴露在 XSS 安全风险之下!</span></span></span></span></span></p>
</div>
</div>
</div>
<div class="anchor-wrapper__wjip" data-is-disabled="false" data-type="paragraph" data-slate-fragment="JTdCJTIyb2JqZWN0JTIyJTNBJTIyZG9jdW1lbnQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIycGxhdGZvcm0lMjIlM0ElMjJ0aG91Z2h0cyUyMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyb3JkZXJlZC1saXN0LXdyYXBwZXIlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJvcmRlcmVkLWxpc3QtaXRlbSUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMnNhbml0aXplKCklMjAlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNCVCOCVCQSVFNSU5QyVBOCVFNyVCQiU5OSVFNSVBRSU5QSVFNyU5QSU4NCUyMFNlY3VyaXR5Q29udGV4dCUyMCVFNCVCOCVBRCVFNCVCRCVCRiVFNyU5NCVBOCVFOCU4MCU4QyVFNSVBRiVCOSUyMCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJCQUNLR1JPVU5EXyUyM0ZGRkZGRiUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkNPTE9SXyUyMzQ0NDQ0NCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMnZhbHVlJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkNPREUlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlRTglQkYlOUIlRTglQTElOEMlRTglQkQlQUMlRTQlQjklODklMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQkFDS0dST1VORF8lMjNGRkZGRkYlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJDT0xPUl8lMjM0NDQ0NDQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU1JUE2JTgyJUU2JTlFJTlDJUU4JUJGJTk5JUU0JUI4JUFBJUU1JTgwJUJDJUU1JTlDJUE4JUU4JUJGJTk5JUU0JUI4JUFBJUU0JUI4JThBJUU0JUI4JThCJUU2JTk2JTg3JUU0JUI4JUFEJUU2JTk4JUFGJUU1JThGJUFGJUU0JUJGJUExJUU3JTlBJTg0JUVGJUJDJThDJUU1JTg4JTk5JUU4JUFGJUE1JUU2JTk2JUI5JUU2JUIzJTk1JUU0JUJDJTlBJUU4JUE3JUEzJUU1JUJDJTgwJUU2JTg5JTgwJUU1JThDJTg1JUU1JTkwJUFCJUU3JTlBJTg0JUU1JUFFJTg5JUU1JTg1JUE4JUU1JTgwJUJDJUVGJUJDJThDJUU1JUI5JUI2JUU0JUI4JTk0JUU3JTlCJUI0JUU2JThFJUE1JUU0JUJEJUJGJUU3JTk0JUE4JUU1JUFFJTgzJUVGJUJDJTlCJUU1JTkwJUE2JUU1JTg4JTk5JUVGJUJDJThDJUU4JUJGJTk5JUU0JUI4JUFBJUU1JTgwJUJDJUU1JUIwJUIxJUU0JUJDJTlBJUU2JUEwJUI5JUU2JThEJUFFJUU3JUJCJTk5JUU1JUFFJTlBJUU3JTlBJTg0JUU1JUFFJTg5JUU1JTg1JUE4JUU0JUI4JThBJUU0JUI4JThCJUU2JTk2JTg3JUU1JTg3JTgwJUU1JThDJTk2JUU2JTg4JTkwJUU1JUFFJTg5JUU1JTg1JUE4JUU3JTlBJTg0JUVGJUJDJThDJUU2JUFGJTk0JUU1JUE2JTgyJUU2JTlCJUJGJUU2JThEJUEyJUU5JTgyJUEzJUU0JUJBJTlCJUU1JTg1JUI3JUU2JTlDJTg5JUU0JUI4JThEJUU1JUFFJTg5JUU1JTg1JUE4JUU1JThEJThGJUU4JUFFJUFFJUVGJUJDJTg4JUU0JUJFJThCJUU1JUE2JTgyJTIwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkJBQ0tHUk9VTkRfJTIzRkZGRkZGJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQ09MT1JfJTIzNDQ0NDQ0JTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyamF2YXNjcmlwdCUzQSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJDT0RFJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUVGJUJDJTg5JUU3JTlBJTg0JTIwVVJMJUUzJTgwJTgyJTIwJUU4JUFGJUE1JUU1JUFFJTlFJUU3JThFJUIwJUU4JUI0JTlGJUU4JUI0JUEzJUU3JUExJUFFJUU0JUJGJTlEJUU1JTlDJUE4JUU3JUJCJTk5JUU1JUFFJTlBJUU3JTlBJTg0JUU0JUI4JThBJUU0JUI4JThCJUU2JTk2JTg3JUU0JUI4JUFEJUU1JThGJUFGJUU0JUJCJUE1JUU3JUJCJTlEJUU1JUFGJUI5JUU1JUFFJTg5JUU1JTg1JUE4JUU3JTlBJTg0JUU0JUJEJUJGJUU3JTk0JUE4JUU4JUFGJUE1JUU1JTgwJUJDJUUzJTgwJTgyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkJBQ0tHUk9VTkRfJTIzRkZGRkZGJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQ09MT1JfJTIzNDQ0NDQ0JTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMm9yZGVyZWQtbGlzdC13cmFwcGVyJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnN0YXJ0JTIyJTNBMiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyb3JkZXJlZC1saXN0LWl0ZW0lMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJieXBhc3NTZWN1cml0eVRydXN0SHRtbCgpJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTclQkIlOTUlRTglQkYlODclRTUlQUUlODklRTUlODUlQTglRTYlQTMlODAlRTYlOUYlQTUlRUYlQkMlOEMlRTUlQjklQjYlRTQlQkYlQTElRTQlQkIlQkIlRTclQkIlOTklRTUlQUUlOUElRTclOUElODQlRTUlODAlQkMlRTYlOTglQUYlRTQlQjglODAlRTQlQjglQUElRTUlQUUlODklRTUlODUlQTglRTclOUElODQlMjBIVE1MJUUzJTgwJTgyJUU1JThGJUFBJUU2JTlDJTg5JUU1JUJEJTkzJUU4JUE2JTgxJUU3JUJCJTkxJUU1JUFFJTlBJUU3JTlBJTg0JTIwSFRNTCUyMCVFNiU5OCVBRiVFNCVCOCU4RCVFNSVBRSU4OSVFNSU4NSVBOCVFNSU4NiU4NSVFNSVBRSVCOSVFRiVCQyU4OCVFNiVBRiU5NCVFNSVBNiU4MiVFNSU4QyU4NSVFNSU5MCVBQiUyMCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJCQUNLR1JPVU5EXyUyM0ZGRkZGRiUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkNPTE9SXyUyMzQ0NDQ0NCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUzQ3NjcmlwdCUzRSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJDT0RFJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUVGJUJDJTg5JUU4JTgwJThDJUU0JUI4JTk0JUU0JUJEJUEwJUU3JUExJUFFJUU1JUFFJTlFJUU1JUI4JThDJUU2JTlDJTlCJUU4JUJGJTkwJUU4JUExJThDJUU4JUJGJTk5JUU0JUJBJTlCJUU0JUJCJUEzJUU3JUEwJTgxJUU2JTk3JUI2JUVGJUJDJThDJUU2JTg5JThEJUU5JTlDJTgwJUU4JUE2JTgxJUU0JUJEJUJGJUU3JTk0JUE4JUU1JUFFJTgzJUUzJTgwJTgyJTIwJUU1JTg3JTgwJUU1JThDJTk2JUU1JTk5JUE4JUU0JUJDJTlBJUU3JUExJUFFJUU0JUJGJTlEJUU1JUFFJTg5JUU1JTg1JUE4JTIwSFRNTCUyMCVFNyU5QSU4NCVFNSVBRSU4QyVFNiU5NSVCNCVFNiU4MCVBNyVFRiVCQyU4QyVFNSU5QiVBMCVFNiVBRCVBNCVFNSU5QyVBOCVFNSVBNCVBNyVFNSVBNCU5QSVFNiU5NSVCMCVFNSU5QyVCQSVFNiU5OSVBRiVFNCVCOCU4QiVFOSU4MyVCRCVFNCVCOCU4RCVFOSU5QyU4MCVFOCVBNiU4MSVFNCVCRCVCRiVFNyU5NCVBOCVFOCVBRiVBNSVFNiU5NiVCOSVFNiVCMyU5NSVFMyU4MCU4MiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJCQUNLR1JPVU5EXyUyM0ZGRkZGRiUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkNPTE9SXyUyMzQ0NDQ0NCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTglQUQlQTYlRTUlOTElOEElRUYlQkMlOUElMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQk9MRCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCVFNCVCRCVCRiVFNyU5NCVBOCVFNCVCOCU4RCVFNSU4RiVBRiVFNCVCRiVBMSVFNyU5QSU4NCVFNyU5NCVBOCVFNiU4OCVCNyVFNiU5NSVCMCVFNiU4RCVBRSVFOCVCMCU4MyVFNyU5NCVBOCVFNiVBRCVBNCVFNiU5NiVCOSVFNiVCMyU5NSVFNSVCMCU4NiVFNCVCQyU5QSVFOCVBRSVBOSVFNCVCRCVBMCVFNyU5QSU4NCVFNSVCQSU5NCVFNyU5NCVBOCVFNiU5QSVCNCVFOSU5QyVCMiVFNSU5QyVBOCUyMFhTUyUyMCVFNSVBRSU4OSVFNSU4NSVBOCVFOSVBMyU4RSVFOSU5OSVBOSVFNCVCOSU4QiVFNCVCOCU4QiVFRiVCQyU4MSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJCQUNLR1JPVU5EXyUyM0ZGRkZGRiUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkNPTE9SXyUyMzQ0NDQ0NCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJvcmRlcmVkLWxpc3Qtd3JhcHBlciUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJzdGFydCUyMiUzQTMlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMm9yZGVyZWQtbGlzdC1pdGVtJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKCklMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFNyVCQiU5NSVFOCVCRiU4NyVFNSVBRSU4OSVFNSU4NSVBOCVFNiVBMyU4MCVFNiU5RiVBNSVFRiVCQyU4QyVFNSVCOSVCNiVFNCVCRiVBMSVFNCVCQiVCQiVFNyVCQiU5OSVFNSVBRSU5QSVFNyU5QSU4NCVFNSU4MCVCQyVFNiU5OCVBRiVFNCVCOCU4MCVFNCVCOCVBQSVFNSVBRSU4OSVFNSU4NSVBOCVFNyU5QSU4NCVFNiVBMCVCNyVFNSVCQyU4RiVFRiVCQyU4OENTUyVFRiVCQyU4OSVFMyU4MCU4MiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJCQUNLR1JPVU5EXyUyM0ZGRkZGRiUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkNPTE9SXyUyMzQ0NDQ0NCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTglQUQlQTYlRTUlOTElOEElRUYlQkMlOUElMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQk9MRCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCVFNCVCRCVCRiVFNyU5NCVBOCVFNCVCOCU4RCVFNSU4RiVBRiVFNCVCRiVBMSVFNyU5QSU4NCVFNyU5NCVBOCVFNiU4OCVCNyVFNiU5NSVCMCVFNiU4RCVBRSVFOCVCMCU4MyVFNyU5NCVBOCVFNiVBRCVBNCVFNiU5NiVCOSVFNiVCMyU5NSVFNSVCMCU4NiVFNCVCQyU5QSVFOCVBRSVBOSVFNCVCRCVBMCVFNyU5QSU4NCVFNSVCQSU5NCVFNyU5NCVBOCVFNiU5QSVCNCVFOSU5QyVCMiVFNSU5QyVBOCUyMFhTUyUyMCVFNSVBRSU4OSVFNSU4NSVBOCVFOSVBMyU4RSVFOSU5OSVBOSVFNCVCOSU4QiVFNCVCOCU4QiVFRiVCQyU4MSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJCQUNLR1JPVU5EXyUyM0ZGRkZGRiUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkNPTE9SXyUyMzQ0NDQ0NCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJvcmRlcmVkLWxpc3Qtd3JhcHBlciUyMiUyQyUyMmRhdGElMjIlM0ElN0IlMjJzdGFydCUyMiUzQTQlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMm9yZGVyZWQtbGlzdC1pdGVtJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyYnlwYXNzU2VjdXJpdHlUcnVzdFNjcmlwdCgpJTIwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTclQkIlOTUlRTglQkYlODclRTUlQUUlODklRTUlODUlQTglRTYlQTMlODAlRTYlOUYlQTUlRUYlQkMlOEMlRTUlQjklQjYlRTQlQkYlQTElRTQlQkIlQkIlRTclQkIlOTklRTUlQUUlOUElRTclOUElODQlRTUlODAlQkMlRTYlOTglQUYlRTQlQjglODAlRTQlQjglQUElRTUlQUUlODklRTUlODUlQTglRTclOUElODRKYXZhU2NyaXB0JUUzJTgwJTgyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkJBQ0tHUk9VTkRfJTIzRkZGRkZGJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQ09MT1JfJTIzNDQ0NDQ0JTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFOCVBRCVBNiVFNSU5MSU4QSVFRiVCQyU5QSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJCT0xEJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJUU0JUJEJUJGJUU3JTk0JUE4JUU0JUI4JThEJUU1JThGJUFGJUU0JUJGJUExJUU3JTlBJTg0JUU3JTk0JUE4JUU2JTg4JUI3JUU2JTk1JUIwJUU2JThEJUFFJUU4JUIwJTgzJUU3JTk0JUE4JUU2JUFEJUE0JUU2JTk2JUI5JUU2JUIzJTk1JUU1JUIwJTg2JUU0JUJDJTlBJUU4JUFFJUE5JUU0JUJEJUEwJUU3JTlBJTg0JUU1JUJBJTk0JUU3JTk0JUE4JUU2JTlBJUI0JUU5JTlDJUIyJUU1JTlDJUE4JTIwWFNTJTIwJUU1JUFFJTg5JUU1JTg1JUE4JUU5JUEzJThFJUU5JTk5JUE5JUU0JUI5JThCJUU0JUI4JThCJUVGJUJDJTgxJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkJBQ0tHUk9VTkRfJTIzRkZGRkZGJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQ09MT1JfJTIzNDQ0NDQ0JTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMm9yZGVyZWQtbGlzdC13cmFwcGVyJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnN0YXJ0JTIyJTNBNSU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyb3JkZXJlZC1saXN0LWl0ZW0lMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjJieXBhc3NTZWN1cml0eVRydXN0VXJsKCklMjAlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmlubGluZSUyMiUyQyUyMnR5cGUlMjIlM0ElMjJMSU5LJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiUyMnRpdGxlJTIyJTNBJTIyTGluayUyMHRvJTIwdGhpcyUyMGhlYWRpbmclMjIlMkMlMjJjbGFzc05hbWUlMjIlM0ElMjJoZWFkZXItbGluayUyMiUyQyUyMnVybCUyMiUzQSUyMmh0dHBzJTNBJTJGJTJGYW5ndWxhci5jbiUyRmFwaSUyRnBsYXRmb3JtLWJyb3dzZXIlMkZEb21TYW5pdGl6ZXIlMjNieXBhc3NzZWN1cml0eXRydXN0dXJsJTIyJTJDJTIybXV0YWJpbGl0eSUyMiUzQSUyMk1VVEFCTEUlMjIlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMmxpbmslMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIySVRBTElDJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTVEJTdEJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU3JUJCJTk1JUU4JUJGJTg3JUU1JUFFJTg5JUU1JTg1JUE4JUU2JUEzJTgwJUU2JTlGJUE1JUVGJUJDJThDJUU1JUI5JUI2JUU0JUJGJUExJUU0JUJCJUJCJUU3JUJCJTk5JUU1JUFFJTlBJUU3JTlBJTg0JUU1JTgwJUJDJUU2JTk4JUFGJUU0JUI4JTgwJUU0JUI4JUFBJUU1JUFFJTg5JUU1JTg1JUE4JUU3JTlBJTg0JUU2JUEwJUI3JUU1JUJDJThGJTIwVVJMJUUzJTgwJTgyJUU0JUI5JTlGJUU1JUIwJUIxJUU2JTk4JUFGJUU4JUFGJUI0JUU4JUFGJUE1JUU1JTgwJUJDJUU1JThGJUFGJUU1JUFFJTg5JUU1JTg1JUE4JUU1JTlDJUIwJUU3JTk0JUE4JUU1JTlDJUE4JUU5JTkzJUJFJUU2JThFJUE1JUU2JTg4JTk2JTIwJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkJBQ0tHUk9VTkRfJTIzRkZGRkZGJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQ09MT1JfJTIzNDQ0NDQ0JTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTNDaW1nJTIwc3JjJTNFJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkNPREUlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlRTQlQjglQUQlRTMlODAlODIlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQkFDS0dST1VORF8lMjNGRkZGRkYlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJDT0xPUl8lMjM0NDQ0NDQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIycGFyYWdyYXBoJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCUyQyUyMm5vZGVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIydGV4dCUyMiUyQyUyMmxlYXZlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUU4JUFEJUE2JUU1JTkxJThBJUVGJUJDJTlBJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkJPTEQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlMjAlRTQlQkQlQkYlRTclOTQlQTglRTQlQjglOEQlRTUlOEYlQUYlRTQlQkYlQTElRTclOUElODQlRTclOTQlQTglRTYlODglQjclRTYlOTUlQjAlRTYlOEQlQUUlRTglQjAlODMlRTclOTQlQTglRTYlQUQlQTQlRTYlOTYlQjklRTYlQjMlOTUlRTUlQjAlODYlRTQlQkMlOUElRTglQUUlQTklRTQlQkQlQTAlRTclOUElODQlRTUlQkElOTQlRTclOTQlQTglRTYlOUElQjQlRTklOUMlQjIlRTUlOUMlQTglMjBYU1MlMjAlRTUlQUUlODklRTUlODUlQTglRTklQTMlOEUlRTklOTklQTklRTQlQjklOEIlRTQlQjglOEIlRUYlQkMlODElMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQkFDS0dST1VORF8lMjNGRkZGRkYlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJDT0xPUl8lMjM0NDQ0NDQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTVEJTdEJTVEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIyYmxvY2slMjIlMkMlMjJ0eXBlJTIyJTNBJTIyb3JkZXJlZC1saXN0LXdyYXBwZXIlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTIyc3RhcnQlMjIlM0E2JTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJvcmRlcmVkLWxpc3QtaXRlbSUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgpJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlNUQlN0QlNUQlN0QlNUQlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJibG9jayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJwYXJhZ3JhcGglMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTJDJTIybm9kZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJ0ZXh0JTIyJTJDJTIybGVhdmVzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlRTclQkIlOTUlRTglQkYlODclRTUlQUUlODklRTUlODUlQTglRTYlQTMlODAlRTYlOUYlQTUlRUYlQkMlOEMlRTUlQjklQjYlRTQlQkYlQTElRTQlQkIlQkIlRTclQkIlOTklRTUlQUUlOUElRTclOUElODQlRTUlODAlQkMlRTYlOTglQUYlRTQlQjglODAlRTQlQjglQUElRTUlQUUlODklRTUlODUlQTglRTclOUElODQlRTglQjUlODQlRTYlQkElOTAlMjBVUkwlRTMlODAlODIlRTQlQjklOUYlRTUlQjAlQjElRTYlOTglQUYlRTglQUYlQjQlRTglQUYlQTUlRTUlOUMlQjAlRTUlOUQlODAlRTUlOEYlQUYlRTQlQkIlQTUlRTUlQUUlODklRTUlODUlQTglRTclOUElODQlRTclOTQlQTglRTQlQkElOEUlRTUlOEElQTAlRTglQkQlQkQlRTUlOEYlQUYlRTYlODklQTclRTglQTElOEMlRTQlQkIlQTMlRTclQTAlODElRUYlQkMlOEMlRTYlQUYlOTQlRTUlQTYlODIlMjAlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQkFDS0dST1VORF8lMjNGRkZGRkYlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJDT0xPUl8lMjM0NDQ0NDQlMjIlMkMlMjJkYXRhJTIyJTNBJTdCJTdEJTdEJTVEJTdEJTJDJTdCJTIyb2JqZWN0JTIyJTNBJTIybGVhZiUyMiUyQyUyMnRleHQlMjIlM0ElMjIlM0NzY3JpcHQlMjBzcmMlM0UlMjIlMkMlMjJtYXJrcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQ09ERSUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUyMCVFNiU4OCU5NiUyMCUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJCQUNLR1JPVU5EXyUyM0ZGRkZGRiUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkNPTE9SXyUyMzQ0NDQ0NCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlN0QlNUQlN0QlMkMlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiUzQ2lmcmFtZSUyMHNyYyUzRSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJDT0RFJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJUUzJTgwJTgyJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkJBQ0tHUk9VTkRfJTIzRkZGRkZGJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQ09MT1JfJTIzNDQ0NDQ0JTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmJsb2NrJTIyJTJDJTIydHlwZSUyMiUzQSUyMnBhcmFncmFwaCUyMiUyQyUyMmRhdGElMjIlM0ElN0IlN0QlMkMlMjJub2RlcyUyMiUzQSU1QiU3QiUyMm9iamVjdCUyMiUzQSUyMnRleHQlMjIlMkMlMjJsZWF2ZXMlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJsZWFmJTIyJTJDJTIydGV4dCUyMiUzQSUyMiVFOCVBRCVBNiVFNSU5MSU4QSVFRiVCQyU5QSUyMiUyQyUyMm1hcmtzJTIyJTNBJTVCJTdCJTIyb2JqZWN0JTIyJTNBJTIybWFyayUyMiUyQyUyMnR5cGUlMjIlM0ElMjJCT0xEJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMmxlYWYlMjIlMkMlMjJ0ZXh0JTIyJTNBJTIyJTIwJUU0JUJEJUJGJUU3JTk0JUE4JUU0JUI4JThEJUU1JThGJUFGJUU0JUJGJUExJUU3JTlBJTg0JUU3JTk0JUE4JUU2JTg4JUI3JUU2JTk1JUIwJUU2JThEJUFFJUU4JUIwJTgzJUU3JTk0JUE4JUU2JUFEJUE0JUU2JTk2JUI5JUU2JUIzJTk1JUU1JUIwJTg2JUU0JUJDJTlBJUU4JUFFJUE5JUU0JUJEJUEwJUU3JTlBJTg0JUU1JUJBJTk0JUU3JTk0JUE4JUU2JTlBJUI0JUU5JTlDJUIyJUU1JTlDJUE4JTIwWFNTJTIwJUU1JUFFJTg5JUU1JTg1JUE4JUU5JUEzJThFJUU5JTk5JUE5JUU0JUI5JThCJUU0JUI4JThCJUVGJUJDJTgxJTIyJTJDJTIybWFya3MlMjIlM0ElNUIlN0IlMjJvYmplY3QlMjIlM0ElMjJtYXJrJTIyJTJDJTIydHlwZSUyMiUzQSUyMkJBQ0tHUk9VTkRfJTIzRkZGRkZGJTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCUyQyU3QiUyMm9iamVjdCUyMiUzQSUyMm1hcmslMjIlMkMlMjJ0eXBlJTIyJTNBJTIyQ09MT1JfJTIzNDQ0NDQ0JTIyJTJDJTIyZGF0YSUyMiUzQSU3QiU3RCU3RCU1RCU3RCU1RCU3RCU1RCU3RCU1RCU3RA==">
<div class="wide-screen-container__39MF" data-is-widescreen="false" data-type="paragraph">
<div data-type="paragraph">
<p class="p__1x2j" data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29248"><span data-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29263"><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29263:0"><span data-slate-leaf="true" data-offset-key="e59f8b60-4421-11eb-8459-7db8aec8c74d-29263:1"><span data-slate-mark="true"><span data-slate-content="true">https://angular.cn/api/platform-browser/DomSanitizer#description</span></span></span></span></span></p>
</div>
</div>
</div><br><br>
来源:https://www.cnblogs.com/wxf1314/p/15984396.html
頁:
[1]