3、令牌绑定协议与标准:RFC 8471、8472、8473
聊完了令牌绑定的核心思想,咱们得看看落地的东西。说白了,光有理论不行,得有人把它写成标准,大家才能照着做。IETF 在这方面做了三件套:RFC 8471、8472 和 8473。我个人习惯把这仨称为「绑定三兄弟」,各司其职。
你想想看,一个协议要跑起来,至少得解决三个问题:怎么协商、怎么传输、怎么跟底层绑定。这三份 RFC 正好对应了这三件事。我在项目中遇到过不少团队,只看了其中一份就开始动手,结果后面发现协议栈对不上,又回头补课。嗯,这里要注意,三份得一起看。
3.1 RFC 8471:Token Binding Protocol — 核心协议
这份是总纲。它定义了令牌绑定的消息格式和握手流程。说白了,就是客户端和服务端怎么互相告诉对方「我要用令牌绑定」,以及怎么交换那个关键的绑定密钥。
核心数据结构就两个:
- Token Binding ID:由导出的密钥材料(Exported Key Material, EKM)和参数组成。EKM 是从 TLS 会话里导出来的,保证了唯一性。
- Token Binding Message:包含协议版本、Key 参数、签名等。客户端和服务端各发一条,完成双向绑定。
我记得第一次看这个结构时,觉得挺简洁的。但实际写代码时发现,签名算法的选择是个坑。RFC 8471 支持多种算法,但不同浏览器实现不一样。我曾经在对接一个老版本 Chrome 时,发现它只支持 RSASSA-PSS,而服务端默认配的是 ECDSA。结果握手一直失败,查了半天日志才找到原因。
关键点:RFC 8471 定义了两种绑定模式:有提供者模式(Provided Token Binding)和被请求模式(Referred Token Binding)。前者是客户端主动提供绑定,后者是服务端要求客户端绑定。实际场景中,大部分用的是前者。
来看一个简化的消息交换流程:
客户端 服务端
| |
|--- TokenBinding.ClientHello -------->|
| | (包含支持的Key参数列表)
| |
|<-- TokenBinding.ServerHello ---------|
| | (选定Key参数)
| |
|--- TokenBinding.ClientFinished ---->|
| | (包含Token Binding ID和签名)
| |
|<-- TokenBinding.ServerFinished ------|
| | (包含Token Binding ID和签名)
| |
|-------- 后续应用数据(带绑定令牌)----->|
我的经验:握手阶段一定要做超时控制。我曾经见过一个实现,客户端发了 ClientHello 后一直等 ServerHello,结果服务端挂了,连接就卡死了。建议超时设为 5 秒,超时后直接降级为无绑定模式。
3.2 RFC 8472:Token Binding over HTTP — 传输层适配
这份标准解决的是:令牌绑定信息怎么在 HTTP 请求里传递。你想想看,浏览器发请求时,总得有个地方放绑定信息吧?RFC 8472 定义了专门的 HTTP 头部:Sec-Token-Binding。
这个头部的格式是这样的:
Sec-Token-Binding: <base64url编码的Token Binding Message>
嗯,这里要注意,用的是 base64url 编码,不是普通的 base64。区别在于把 + 换成 -,/ 换成 _,而且去掉末尾的 =。我刚开始实现时直接用了标准 base64,结果服务端解析一直报错,后来才发现是编码问题。这种细节,文档里一句话带过,踩坑了才知道疼。
RFC 8472 还定义了绑定引用(Token Binding Reference)的概念。什么意思呢?就是服务端可以在响应里返回一个引用 ID,客户端后续请求带上这个 ID,服务端就知道用的是哪个绑定。这避免了每次请求都传完整的绑定消息,节省带宽。
避坑指南:我曾经在一个高并发场景下,发现服务端保存的绑定引用 ID 过期了,但客户端还在用。结果所有请求都被拒绝。后来加了引用 ID 的续期机制,每次成功验证后都延长有效期。建议引用 ID 的 TTL 不要超过 5 分钟,并且要有续期逻辑。
来看一个完整的 HTTP 请求示例:
POST /api/transfer HTTP/1.1
Host: bank.example.com
Sec-Token-Binding: AEsCBgJYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBAgRYAQIGAlgBA