From f8401274f4ddc34cb83fb54967c6d1e4071ed2e0 Mon Sep 17 00:00:00 2001
From: wanghongjun <1445693971@qq,com>
Date: Thu, 28 Mar 2024 17:17:19 +0800
Subject: [PATCH] =?UTF-8?q?=E8=B4=AD=E7=89=A9=E8=BD=A6=E5=8A=9F=E8=83=BD?=
=?UTF-8?q?=EF=BC=8C=E8=AE=A2=E5=8D=95=E6=8F=90=E4=BA=A4=E5=8A=9F=E8=83=BD?=
=?UTF-8?q?=EF=BC=8C=E6=96=87=E5=8C=96=E6=95=B0=E6=8D=AE=E4=BA=A4=E6=98=93?=
=?UTF-8?q?=E5=8D=8F=E8=AE=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
api/goods.js | 28 ++
api/user.js | 41 ++
components/empty-cart/index.vue | 79 +++
pages.json | 28 +-
pages/goods/detail.vue | 8 +-
pages/goods/payment/orderPayment.vue | 678 +++++++++++++++++++-------
pages/goods/payment/verifyPayment.vue | 263 ++++++++++
pages/help/purchase.vue | 167 +++++++
pages/login/components/WhPopup.vue | 4 +
pages/user/index.vue | 35 +-
pages/user/mycertinfo/mycertinfo.vue | 4 +-
pages/user/mycertinfo/orgverify.vue | 2 +-
pages/user/shopcart/index.vue | 543 +++++++++++++++++++++
static/tabbar/cart_empty.jpg | Bin 0 -> 10853 bytes
14 files changed, 1679 insertions(+), 201 deletions(-)
create mode 100644 components/empty-cart/index.vue
create mode 100644 pages/goods/payment/verifyPayment.vue
create mode 100644 pages/help/purchase.vue
create mode 100644 pages/user/shopcart/index.vue
create mode 100644 static/tabbar/cart_empty.jpg
diff --git a/api/goods.js b/api/goods.js
index f1fadbf..b1754c3 100644
--- a/api/goods.js
+++ b/api/goods.js
@@ -15,6 +15,11 @@ const api = {
paymentListUrl: "Paymentlist/certiaudit/listIndet",
certificationPay: "PayCallBack/order/certificationPay",
rankingList: "AgencyAddress/ranking/queryList",
+ orderPaymentList: "AgencyAddress/order/queryRrder",
+ userOrderpay: "slb/pay/order/userOrderpay",
+ marketleader: "AgencyAddress/ranking/insertCount",
+ addClient: "AgencyAddress/signInfo/insertEntrustingPartyInfo",
+ addClickmarket: "AgencyAddress/signInfo/insertEntrustingPartyInfo",
}
// 商品列表
@@ -93,3 +98,26 @@ export const getRankingList = (param) => {
return request.get(api.rankingList + paramStr,{})
}
+// 缴费订单列表
+export const orderPaymentList = (data) => {
+ return request.post(api.orderPaymentList,data)
+}
+
+// 订单确认支付
+export const userOrderpay = (data) => {
+ return request.post(api.userOrderpay,data)
+}
+// 排行榜销售量
+export const marketleader = (data) => {
+ return request.post(api.marketleader,data)
+}
+// 添加委托方统计数据
+export const addClient = (data) => {
+ return request.post(api.addClient,data)
+}
+// 交易信息数据统计销售量
+export const addClickmarket = (data) => {
+ return request.post(api.addClickmarket,data)
+}
+
+
diff --git a/api/user.js b/api/user.js
index ecaab10..4cc6510 100644
--- a/api/user.js
+++ b/api/user.js
@@ -10,6 +10,14 @@ const api = {
oplogs: "slb/userself/v1/account/operation",
//重置密码
resetpwd:'slb/userself/v1/account/reset-pwd',
+ // 购物车
+ shop_cart: "tes/api/goods/getShoppingCar",
+ // 购物车
+ del_shop_cart: "AgencyAddress/order/delShoppingCa",
+ // 去结算
+ create_order: "AgencyAddress/order/createOrder",
+ // 发票管理
+ bill_manage: "AgencyAddress/order/getTicket",
}
// 当前登录的用户信息
@@ -45,4 +53,37 @@ export const oplogs = (param, option) => {
// 重置用户密码
export const resetpass = (data,option) =>{
return request.post(api.resetpwd,data,option)
+}
+
+// 获取购物车列表
+export function getShopCart(data){
+ return request.post(api.shop_cart,data)
+}
+
+// 删除购物车
+export function delShopCart(param){
+ let paramArr = [];
+ for (let key in param) {
+ paramArr.push(key + '=' + param[key])
+ }
+ let paramStr = '?' + paramArr.join('&')
+ return request.post(api.del_shop_cart + paramStr)
+}
+
+// 删除购物车
+export function createOrder(param){
+ let paramArr = [];
+ for (let key in param) {
+ paramArr.push(key + '=' + param[key])
+ }
+ let paramStr = '?' + paramArr.join('&')
+ return request.post(api.create_order + paramStr)
+}
+
+// 发票管理
+export function getBillManage(data){
+ let option={header:{
+ "Content-Type":"application/x-www-form-urlencoded;charset=UTF-8"
+ }}
+ return request.post(api.bill_manage,data,option)
}
\ No newline at end of file
diff --git a/components/empty-cart/index.vue b/components/empty-cart/index.vue
new file mode 100644
index 0000000..c44fe14
--- /dev/null
+++ b/components/empty-cart/index.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+ {{ tips }}
+
+
+
+
+
+
+
diff --git a/pages.json b/pages.json
index 18d9235..ef59b57 100644
--- a/pages.json
+++ b/pages.json
@@ -55,12 +55,6 @@
"enablePullDownRefresh" : false
}
},
- {
- "path": "pages/cart/index",
- "style": {
- "navigationBarTitleText": "购物车"
- }
- },
{
"path": "pages/user/index",
"style": {
@@ -350,7 +344,7 @@
"navigationBarTitleText" : "公共数据专区",
"navigationBarTextStyle": "white",
"navigationBarBackgroundColor": "#1c223b",
- "enablePullDownRefresh" : false
+ "enablePullDownRefresh" : true
}
},
{
@@ -360,7 +354,7 @@
"navigationBarTitleText" : "数据超市",
"navigationBarTextStyle": "white",
"navigationBarBackgroundColor": "#1c223b",
- "enablePullDownRefresh" : false
+ "enablePullDownRefresh" : true
}
},
{
@@ -370,7 +364,7 @@
"navigationBarTitleText" : "文化资源数据",
"navigationBarTextStyle": "white",
"navigationBarBackgroundColor": "#1c223b",
- "enablePullDownRefresh" : false
+ "enablePullDownRefresh" : true
}
},
{
@@ -380,7 +374,7 @@
"navigationBarTitleText" : "文化数字内容",
"navigationBarTextStyle": "white",
"navigationBarBackgroundColor": "#1c223b",
- "enablePullDownRefresh" : false
+ "enablePullDownRefresh" : true
}
},
{
@@ -388,7 +382,17 @@
"style" :
{
"navigationBarTitleText" : "购物车",
- "enablePullDownRefresh" : false
+ "enablePullDownRefresh" : true,
+ "navigationBarTextStyle": "white",
+ "navigationBarBackgroundColor": "#1c223b"
+ }
+ },
+ {
+ "path" : "pages/goods/payment/verifyPayment",
+ "style" :
+ {
+ "navigationBarTitleText" : "认证订单结算",
+ "enablePullDownRefresh" : true
}
},
{
@@ -396,7 +400,7 @@
"style" :
{
"navigationBarTitleText" : "订单结算",
- "enablePullDownRefresh" : false
+ "enablePullDownRefresh" : true
}
},
{
diff --git a/pages/goods/detail.vue b/pages/goods/detail.vue
index 57210df..8b764b2 100644
--- a/pages/goods/detail.vue
+++ b/pages/goods/detail.vue
@@ -250,7 +250,6 @@
shopyear_show: false, // 输入购买年限显示
talprice_show: false, // 合计显示
purchase_show: false, // 立即购买显示
- shopyear_num: '', // 立即购买显示
shopcart_str: '加入购物车',
new_total: 0, // 标的数量
addprice: 0, // 合计金额
@@ -378,7 +377,7 @@
} else {
if (app.ears_of === 2) {
- let shopyear_num = app.shopyear_num
+ let shopyear_num = app.use_years
if (shopyear_num === 0 || shopyear_num === '') {
app.$error('购买年限只能输入整数')
} else {
@@ -409,7 +408,7 @@
let param = {
goods_isli : app.goods.goods_islicode,
user_isli : uni.getStorageSync("isliCode"),
- use_years : 0,
+ use_years : app.use_years,
}
if (app.ears_of === 3) {
param.use_years = 1
@@ -482,8 +481,7 @@
if (res.resultCode === "00000000") {
// 跳转至付款界面
-
- this.$navTo('pages/goods/payment', { batchcode:res.data.batchcode, img: app.goods.img, time: new Date().getTime() })
+ this.$navTo('pages/goods/payment/orderPayment', { batchcode:res.data.batchcode, img: app.goods.img, time: new Date().getTime() })
} else {
app.$error(res.errMsg);
}
diff --git a/pages/goods/payment/orderPayment.vue b/pages/goods/payment/orderPayment.vue
index 2d518e2..a1b080d 100644
--- a/pages/goods/payment/orderPayment.vue
+++ b/pages/goods/payment/orderPayment.vue
@@ -8,256 +8,582 @@
- 认证缴费订单
+ 标的清单
- 订单号
- 姓名
- 订单金额
+ 缩略图
+ 标的名称
+ 委托关联编码
+ 付费类型
+ 交易方式
+ 委托方
+ 单价
+ 购买年限
+ 小计
+ 交易佣金
+ 合计
- {{ item.pay_no }}
-
- 认证缴费订单
+
+
- {{ item.address }}
+ {{ item.buy_username }}
+ {{ item.buy_islicode }}
+ {{ item.price_type}}
+ {{ item.goods_entrust }}
+ {{ item.order_detail[0].entrust_name }}
+ {{ item.price }}
+ {{ item.transaction_count }}
+ {{ item.small_count }}
+ ¥{{ item.order_detail[0].service_charge }}
+ {{ item.money }}
+
+
+
+
+ 我已阅读并同意 《文化数据交易协议》
+
+
+
+
+
+
+
- 请扫码支付!
-
+
+ 温馨提示 请使用 网银、支付宝 App扫码支付
+
+ 支付成功!
+ 支付失败!
+
+
\ No newline at end of file
diff --git a/pages/goods/payment/verifyPayment.vue b/pages/goods/payment/verifyPayment.vue
new file mode 100644
index 0000000..2d518e2
--- /dev/null
+++ b/pages/goods/payment/verifyPayment.vue
@@ -0,0 +1,263 @@
+
+
+
+
+ 选择支付方式
+
+
+
+
+
+ 认证缴费订单
+
+
+
+
+ 订单号
+ 姓名
+ 订单金额
+
+
+ {{ item.pay_no }}
+
+ 认证缴费订单
+
+ {{ item.address }}
+
+
+
+
+
+
+
+
+ 请扫码支付!
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/help/purchase.vue b/pages/help/purchase.vue
new file mode 100644
index 0000000..baaacab
--- /dev/null
+++ b/pages/help/purchase.vue
@@ -0,0 +1,167 @@
+
+
+
+ 文化数据交易协议
+
+ 本协议是被授权方/买方签订的交易(转让/授权)协议,对被授权方/买方购买/被授权授权方/卖方交易标的的行为作出规定。如果被授权方/买方通过全国文化大数据交易中心(以下简称“平台”)购买/被授权交易标的的,视为接受本协议的条款。依据《中华人民共和国著作权法》《中华人民共和国民法典》等有关法律法规和《国家文化大数据交易规则(试行)》及其他相关配套规定,现就文化大数据交易相关事宜达成如下协议,以咨共同遵守。
+
+
+ 本协议中的部分条款仅针对特定的交易类别和交易方式(即转让或授权)适用,详见本协议具体条款标注说明,未作特定标注说明的适用于所有情形。
+
+ 一、转让/授权范围
+ 1.1 转让情形适用
+
+ (1)转让范围包括但不限于复制权、发行权、出租权、展览权、表演权、放映权、广播权、信息网络传播权、摄制权、改编权、翻译权、汇编权、应当由著作权人享有的使用作品的其他权利的单个、组合或全部权利转让。
+
+
+ (2)转让分单一转让和批量转让。授权方/卖方采用哪种转让方式以平台最终展示的标的详情信息为准。
+
+ 1.2授权情形适用
+
+ (1)授权方授权的一定时间和区域内包括但不限于复制权、发行权、出租权、展览权、表演权、放映权、广播权、信息网络传播权、摄制权、改编权、翻译权、汇编权、应当由著作权人享有的使用作品的其他权利及其他的单个、组合或全部权利授权。
+
+ (2)授权方式包括:
+ 授权数量划分:授权分单一授权和批量授权。
+ 按授权权益类型划分:授权分交易标的财产权的单一权益、组合权益与全部权益的授权。
+ 按授权时限划分:阶段性授权、永久性授权。
+ 按授权性质划分:普通授权、排他授权、独占授权。
+
+ (3)您可以选择使用上述授权方式进行交易,也可以同时使用上述几种组合授权方式,具体授权方式以平台最终展示的标的详情信息为准。当以单个或组合权利授权时,被授权方不得使用未获得授权的其他权利。未经授权方书面同意,被授权方无权将授权权利转授权第三方。
+
+ 二、交易方式及交易标的
+
+ 2.1以授权方/卖方自主报价、被授权方/买方点选成交为主;同时当交易主体有指定匹配需求时,交易机构提供服务商评估价和撮合成交为辅的交易方式。
+
+
+ 2.2
+ 被授权方/买方通过平台点选交易标的,并支付成功的,视为被授权方/买方已经对交易标的及其价格进行了尽调且予以认可,是被授权方/买方意愿的真实表示。被授权方/买方应承担操作及购买/被授权交易标的所带来的一切权利义务及风险,平台不对被授权方/买方的操作行为做任何承诺以及承担任何责任。
+
+
+ 三、标的价款与费用
+
+ 3.1 转让/授权标的价款以点击支付为准,您同意并认可交易价款先行支付至平台结算账户,使用平台系统统一结算。
+
+
+ 3.2 交易标的转让/授权中涉及的交易佣金、服务佣金,按照《国家文化大数据交易规则(试行)》及相关配套规定、相关收费标准及平台发布的管理规定等要求执行。
+
+
+ 3.3 交易标的转让/授权中涉及的有关税费,按照国家有关法律规定缴纳。
+
+ 四、标的交割
+
+ 被授权方/买方付款完成后可下载相关数据,7个自然日内未下载完毕则系统默认交易成功并进行结算。
+
+ 五、承诺与保证
+
+ 5.1 授权方/卖方承诺并保证您系文化数据中作品的权利人,享有该作品著作权权利或者您已获得处分文化数据所需的授权,有权处分或行使作品的相关权利而无需其他作品权利人同意。您承诺作品不存在抄袭、剽窃他人作品或侵犯任何其他第三人知识产权、智力成果及合法权益的情形。您所授权/转让的作品不存在可能被第三人主张权利的瑕疵。
+
+
+ 5.2 被授权方/买方承诺并保证您的资金为合法、安全的自有资金,不存在不诚实经营、诈骗客户资金等违法经营行为所得或盗窃、受贿、侵占挪用公司财产、毒品犯罪、黑社会性质的组织犯罪、恐怖活动犯罪、走私犯罪、贪污贿赂犯罪、破坏金融管理秩序犯罪、金融诈骗犯罪等行为所得资金,不存在洗钱行为来掩饰其资金非法来源,获取不法收益的行为。不涉及与洗钱相关的大额现金交易、可疑交易、恐怖融资交易。
+
+
+ 5.3 您承诺并保证有签订和履行本协议全部义务所必需的所有合法权利以及所有内部和外部的批准、授权和许可,具备签订和履行本协议的能力与资质。包括但不限于法律及公司章程规定的股东会、董事会批准,您提交的文件、资料等均是真实、全面和有效的。
+
+
+ 5.4 您确认并承诺对交易各项内容均予以充分知晓和理解,本次交易属于交易双方真实意思表示,并经双方审慎决策完成本次交易。
+
+
+ 5.5您承诺并保证所有合作机构及其下属公司、关联公司的法定代表人、实际控制人及高管人员不得为平台约定不得从事的业务进行站台、背书,或进行业务关联。
+
+
+ 5.6被授权方/买方承诺并保证不得以淫秽、诋毁性或其他非法形式或违反任何适用法规或行业规范的形式使用交易标的的内容。
+
+ 六、保密条款
+
+ 6.1各方应当在对讨论、签订、履行本协议过程中所获悉的属于对方的无法从公开渠道获取的文件及资料(包括但不限于商业秘密、公司计划、运营活动、财务信息、技术信息、经营信息、数据信息、交易标的信息以及其他商业秘密等)予以保密。未经对方同意,另一方不得超出本协议约定的目的和范围使用上述信息,不得向任何第三方泄漏上述信息。
+
+
+ 6.2 除本协议规定之工作所需外,未经对方事先书面同意,任何一方不得擅自使用、复制对方的商标、标志、商业信息、技术及其他资料。
+
+
+ 6.3 本保密条款不因双方协议的终止而无效。在协议终止后,本保密条款对各方仍具有约束力。
+
+ 七、违约责任
+
+ 7.1 因授权方/卖方作品权利存在瑕疵或者授权方/卖方处分权利存在瑕疵,导致被授权方/买方无法正常行使被授权或使用权利的,被授权方/买方有权解除本协议,并要求授权方/卖方赔偿因第三方索赔导致被授权方/买方支出的诉讼仲裁成本、向第三方支付的赔偿等全部损失。
+
+
+ 7.2 任何一方有其他违反本协议情形的,应赔偿守约方全部损失,该损失包括但不限于对守约方所造成的直接损失、可得利益损失、守约方支付给第三方的赔偿费用/违约金/罚款、调查取证费用/公证费、诉讼费用、律师费用以及因此而支付的其他合理费用。
+
+
+ 7.3在协议生效后,交易双方应按时履行付款义务或交割义务,非特殊情况不得随意撤销交易。任一方不按约履行付款义务或交割义务或随意撤销交易,另一方有权要求违约方赔偿全部损失。该损失包括但不限于对守约方所造成的直接损失、可得利益损失、守约方支付给第三方的赔偿费用/违约金/罚款、调查取证费用/公证费、诉讼费用、律师费用以及因此而支付的其他合理费用。
+
+ 八、争议解决
+
+ 本协议的签署地点为中华人民共和国深圳市福田区,因本协议以及本协议项下订单/附件/补充协议等(如有)引起或有关的任何争议,由协议各方协商解决,也可由有关部门调解。协商或调解不成的,任何一方可向深圳市福田区人民法院诉讼解决。
+
+ 九、协议生效
+ 9.1本协议自您勾选确认后生效。
+
+ 9.2本协议生效,即表示您主动接受本协议的各项约定,并愿意就违反本协议约定承担相应的法律责任。现有的协议约定也不能保证完全符合未来发展的需求。因此,平台发布的文化大数据交易规则及相关配套规定、管理制度及相关声明均为本协议的补充约定,与本协议不可分割且具有同等法律效力,经平台公布即生效。如您使用平台服务或参与文化大数据交易活动,视为被授权方/买方同意上述补充约定。
+
+
+ 9.3您须知本协议中任何条款被废止、无效或因任何理由不可执行,不影响任何其它条款的有效性和可执行性。
+
+
+ 9.4平台保留在法律框架下对本协议的解释权和修订权。
+
+
+ 特别提示:您在进行交易之前,请您务必审慎阅读并充分理解本协议各条款内容,特别是涉及免除或者限制责任的条款、对权利进行限制的条款、争议解决条款等。其中,免除或者限制责任条款将以加粗、加下划线等形式提示您注意,您应重点阅读。
+
+
+ 如您自主选择进行交易的,即视为您已充分理解本协议,完全同意本协议各项内容,并同意作为本协议的一方当事人接受本协议及相关协议和规则的约束。
+
+
+ (以下无正文)
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pages/login/components/WhPopup.vue b/pages/login/components/WhPopup.vue
index daa4680..ed5048d 100644
--- a/pages/login/components/WhPopup.vue
+++ b/pages/login/components/WhPopup.vue
@@ -17,6 +17,8 @@
+
+
@@ -36,6 +38,7 @@
import commission from '@/pages/help/commission'
import business from '@/pages/help/business'
import escapeclause from '@/pages/help/escapeclause'
+ import purchase from '@/pages/help/purchase'
export default {
components: {
@@ -45,6 +48,7 @@
commission,
business,
escapeclause,
+ purchase,
},
props: {
diff --git a/pages/user/index.vue b/pages/user/index.vue
index c511112..01c9dfe 100644
--- a/pages/user/index.vue
+++ b/pages/user/index.vue
@@ -10,12 +10,12 @@
- {{ userInfo.username }}
+
{{ userInfo.cellPhone }} ({{ userInfo.username }})
-
- {{userInfo.userType}}
+
+ {{userInfo.userType}}
@@ -68,10 +68,17 @@
-
+
发票管理
+
+
+
+
+
+ 购物车
+
@@ -109,11 +116,13 @@
import * as UserApi from '@/api/user'
import * as OrderApi from '@/api/order'
import { checkLogin } from '@/core/app'
+ import uniIcons from '../../uni_modules/uni-icons/components/uni-icons/uni-icons'
export default {
components: {
- AvatarImage
+ AvatarImage,
+ uniIcons,
},
data() {
return {
@@ -254,6 +263,22 @@
}
return true
},
+ // 买入订单
+ shopCart(){
+ if (this.validateVerify()) {
+ this.$navTo('pages/user/shopcart/index')
+ } else {
+ this.$error('未完成机构认证,请前往认证后查看')
+ }
+ },
+ // 发票管理
+ billManage(){
+ if (this.validateVerify()) {
+ this.$navTo('pages/user/billManage/index')
+ } else {
+ this.$error('未完成机构认证,请前往认证后查看')
+ }
+ },
// 跳转到登录页
handleLogin() {
diff --git a/pages/user/mycertinfo/mycertinfo.vue b/pages/user/mycertinfo/mycertinfo.vue
index 63bc7cb..2c24a1d 100644
--- a/pages/user/mycertinfo/mycertinfo.vue
+++ b/pages/user/mycertinfo/mycertinfo.vue
@@ -64,7 +64,7 @@
//机构认证
orgverify(){
if (this.institutionsStr === '待缴费') {
- this.$navTo("/pages/goods/payment/orderPayment")
+ this.$navTo("/pages/goods/payment/verifyPayment")
} else {
this.$navTo("pages/user/mycertinfo/orgverify")
}
@@ -72,7 +72,7 @@
//个人认证
personverify(){
if (this.peopleStr === '待缴费') {
- this.$navTo("/pages/goods/payment/orderPayment")
+ this.$navTo("/pages/goods/payment/verifyPayment")
} else {
this.$navTo("pages/user/mycertinfo/personverify")
}
diff --git a/pages/user/mycertinfo/orgverify.vue b/pages/user/mycertinfo/orgverify.vue
index fcab039..591b043 100644
--- a/pages/user/mycertinfo/orgverify.vue
+++ b/pages/user/mycertinfo/orgverify.vue
@@ -1161,7 +1161,7 @@ export default {
},
jumpUrl() {
if (this.fee > 0) {
- uni.reLaunch({url: "/pages/goods/payment/orderPayment"})
+ uni.reLaunch({url: "/pages/goods/payment/verifyPayment"})
} else {
uni.reLaunch({url: "/pages/user/index"})
}
diff --git a/pages/user/shopcart/index.vue b/pages/user/shopcart/index.vue
new file mode 100644
index 0000000..be758d9
--- /dev/null
+++ b/pages/user/shopcart/index.vue
@@ -0,0 +1,543 @@
+
+
+
+
+
+
+
+
+ 委托方:{{item.username}}
+
+
+
+
+
+
+
+
+ {{ item.detail.goods_name }}
+ 交易方式:{{ item.detail.goods_entrust?'转让':'授权' }}
+ 购买年限:{{ item.use_years }}年
+ 单价:¥{{ item.goods_price }}
+
+
+
+
+
+
+
+
+ 去首页逛逛
+
+
+
+
+
+
+
+
+
+
+
diff --git a/static/tabbar/cart_empty.jpg b/static/tabbar/cart_empty.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..7c46d3875ae16b0c4ed5a05108886d9ec3705e7c
GIT binary patch
literal 10853
zcmbt)Wl&sAxAou-!6i6@4H8@j*C7yeaCdhn5Q4i88XzzbU~u;k90m*S5d4AQ1QIOy
z^1gMyTlcN|^X~q$yHB6htGjlcvuo}Cv-0N~;DwqpL>YjB0sx@=ZGb=P0ENH3|C{{_
z|3Nrwe7zK?O<Lty-$agTvF(HXJjpA&+YtK1K^|m-2gEfF+c`TJi?zOs`-zln^w)3)A12!-%4%Clz^uZ#_w{`$=)oB!JGD|Qz>!$wD1{_)peVRM8PcO6SHtwyYd
z^h0=(UP~0&!m!R?y8`_);9uW@o?08gHdOPq4>nYT%DE$av!DLG4;uoSe-BLAc`a8{
zlHbcshHef>S%&OBYAQWlya@}|?^-M*8Mv@mHPLfV2F+tnNTm5XiXSOC69P+_SCPya
z^~|(Vt~iySro2YkABg
zD5un?GnkxjbjiM8a)zr}GIXdht;oI`lMNwcScgO1+>ChT{Ax~mE-X|x*OW9)&q^FW
ze!tN~+&hO=EiPD3i7U0}F@x^=IZlRyHoBM8L$Ul#1Y_N|#JR>g+^+dg3wPm;1~mUd@9flqm_+)gN=EF085${nQul|CGg^+2p|>1GgZxU)_D7qs;<5
zWP}LBPOZbd2AoACj*OitxJWDN%(Q~n&I{eNn>gR?V`Px~7*tmaR4FeB*R|USG&5_i
zR2b9`_RoW+-emb0=+1k`$n7oc6|^&_m`2(oL#c<%^Q~H&O#(dK5MeOwbq!35mjVNs
zWyj`F*|`=v7n;%IxglMny4eNr{vEc*==K%N
zP6eyU&knDe=;6(E+su?Sz-#^8*1UTABe}JFcc^CsPMaH-d&vxP?vR^jy-YgO+XxoP
z8m(Lj6QX{_)(j*C@r-XGv&$
zkcOG~XSC%RIe1Nx@h{lX`X@~zKFR8d7$40%5A%wI_J1fKph_g>wP0c60G(J4UJC8;)efsN%_-{mlD9{v;cbET^Qu5x#H)
zeN$^(P#&tQi`=?BXm>UV5b7<5Nfhg6CcS5}uKY)q$E7f*C`;*tJI%5d(KTBj#8M=Y
z?!zpt<-Q5e!8sJgzc-LQJfilK;b=|7smym@j?D@ip&2Q#tzZIHw?Pno`6Q~;bqA$&
zOsBW2ao>Cw?OsYjnmkMjW<6yIF{X-&O!ZEPp%r@fa`hXgFJ11PIP*<=q$2FAZR^Af
zH#eYt!JK`9|dnq+#c+)MU1O9XO=)(
zHV}&Uty+O!7H`O0t=LqR55kBbw7d&~x@pmy=lpvpIghbCx?Df)x%far$v^#_KlUay
zo+|*sMhJ5mpY@+oE2&;{j(eFi=C~oy-w3S8t)jlLzUk$6?zSiWeQ1|~M=7;?$PBO#
zq9Rbk?j(_J>UmInkhoFeu%NFT>c5)~O@`QHo2=EH8LWZ2Vn53xwRLZKBNnDLiD+|5
zD$^XsMiHmlaW}Ue!_d-|$M#+kcS&Dm#(e19HXUB_38B}2?8$0PYpqu75ky9#B%dQk
z_S~EdA!RScD^%WD+Uhj=iSsiCjtQb`tM0rrhKwu=%-;GexJutOs^N=Jk`n|kHqMDS
zocEPYwam_Eh+nx`s%poc<=r`yt6xD?Xy_VtD$)74|LN
zzKmvykk|FYW&v(ZD?W6A(<&YvrYm&y6pfFmqYVp%>i(wqhVyS!HpiN
zH?CN7dA7wDwr+@@ax%4dcg|BnDUg|4B4X$0!lb(8#G1EgYniS@+U=VHp?YPw7XT_3
zp3v5*<>`#1+A*J+RS@5gMv-ImHVUV0(4OIz-9M4-K(?2F<)qA+fa?&_oa^iGh-iuQ
zo8W5Y@exUNd`#``>}nUj7aBU@pX_K5t7~?Ai4Gi`D?41%31%TUGcIa9uKNqnH?d>i
zlE5%b@4Cp2u9Pi1vN3}q+bEx9k3_V9R3!|%5mw4b2EmtS&O^+bs*9`1Io+XHTaT~F
zZGQx~b$oiDip093WWb
z7Kf%L`JTDyH6wl)nW*__w2tBXDuF#20cU5nP9iR=;tV??EDV}EYkOm*0XLT2-8~b~
z)l=lrYpQrr$0-D;!?WuX$O)J??S-19!sIpeihT0f#C5gGlwi
z94^Syseih1>-D}JxJ)yDcj;t?hC;EURPU#u^FlYg0ghRrj2}`)ti{k6!9>=;F`s2i67Lk7lCX
za_i2gr#Hz=iDFZbM5&Uf|VM#C;MgQrQO
z+NrlWA_HRI8d$5AwJ@dxyJL@0OgB_v?;sIzLIc4wJ$K>G$R(<09bkGoSrkZ;OqYG<
zfXL2LFJht}2#^!}IHFQtdtn@+q8`vyV0irOVD|ZJs=_S0yP7METDEKv!G9fz`Q^(9
zi88Ogx3f94Cl^m=Ot~$|fkp{tG?#$`+yZaAuvAi>gd}X^xXv7YvTJ*$*e<9hGLTG!
ztJ<7D##FD5$(cjo3Hs6HhN%vQlj&V0p5+5MP>!*wgQ?-9a;xtez!<|{ge>uSdJXtw
z?ctg_ID2W*;`_wacwVsM(3+Hw7FFk5Z&{mV^7AGgw|LxbR92{7H3r^}Rx4RnS6qK^
zgG$~iJL#7);y&WHB)2V1VFAo{({mEcnD_v+Mdo{{-l2uh>WU7=RGn&7%wpGzA)RPN
z)#o8jD^G;e@Zt=tLbjL9gsPa3<;+nYv`cAlkvN#>D?{XikIbY!ljpkv3C-eQ!uGx&
zzD;#ZtYlz~{ATv!a{G@P)a~vqz4DW@{3PWp^n__pEVp50k{U`ER@$y9+O+lsYY0rg8w^p_03@v+lB{e*A+Xb$bFY+Tlm=L8x{9u%?5dzWM@olo3B3Dt3IwO
zuigro$TC3=b=g0QoSTVYJQq$xWu0%>pWJcl6>$kWs_5$;Y`tTK%{_V}9reNM1xW*}TMTI&aOO?v=-8
zXqz*VhdgYqfSGx0_LbH+w%WpBT)-7!)aNV5r{uz+F(4zWQ9%y&2lR>;6PZx}Sy_b+
zq7K=x9img(Dm;XHt_(wP+zlEugipu;r`yd(s}j}xy?kph^yRIQeEABle63mYa1G$i
z@o%3Sdwy`K)Vn*s%}%pXwv%;}RCXU>(%FbxU!+m?X`Q!en1)nJjkY^xV@)bnPBXh6#{cxh0VZE+sQEE^1s)WDN
z&THR2g^&+IAG~9@V15UM5FMmv&7MHGC5gO_1{%^PK%X-dY^5mVnD=`YS_h%&n#@LL`-8WMz8HGpstm?
z3b+E$@gW$~7jz8vuNO$~T(k~sT$gqfz{U3F&;6X!?_`0gzaCvDs06>YTNx!1vS!n>
zmL}|bszoNjvV6WF_r1pFMSiC&KKbf=ZCG^M=gWqdJ4rNFyQ@-vY)ClyzD4b-{7r(7
z6<}wHy->=zG?t)3;ATpiu++6W9p5vS(eKTjMO%Qgx8=ARfA4%k~fw
z93SCkN*!%e#2lGL1L^dl@Y7)`Y~3!!7+Q1CD?GfEB4`A4{u{`_4$
zrX_X%)4^P>Rb+#BTkTgux=MDwi8wJ$SK|CivUO1it&G5HA+_{z7Wx?)=0*?#Yvf+a
z{WeTAuzdS5XCv+r4DoI5Kka64r|^Ac%5t}3#UCED?0j?KVJMN-ugB6!iS=6Ocb|@;
zQ^1;1po@W+NXG8Qb=vOJOc}MBoQx6N0Z-|*N{|QZnrjc260inZ1`K~^SdhZ
zKY*yorxAywwe9g)f|mn<#QAq9+W8u$t**m*gu~UcB$DFAFAlU>aMZt|Bd}?Q*{*KXHjWCZ
z-TpZjBRYK3X&RY;`tx^b3W>gz&fQ~V$2i&c(RRmS&9DTtDkq@}m<)8R!Se=ZyNg?c
z5ovE33eEc*QnjBUTU+quQ3p|T71r4DIHYa8PLYH)^&(3O%=1uUobm45yj~#7k9AiI
zqJy+E+rdh2E$W-9gk>2zo*fEpBzen&Ld1FAteO|7(}uJCcyBW#7zrxUc|R0ien`wg
zhUyqZ`3HcjTxnkNg(tmvOX$w;?hk;`H9@(K^@ZTc8DXbst%#>?9G366wQzYZSt%Q
zx^iz$c2$?*8w{dpk_O{MZKk0SRAHv@x1Uh62W#RD5-pUACWg1fy>X?AYc8PYoIIi6
zCPiXxn!~vo$#lot*=~PK*BU*sU;9HE8+E4;vT{C<56Rw-m)!j3pRCBY%Zv=`t?j^<
zRBJWYOA3#VoApq=cf`8)PLV$S7dxkE;*R*b^~bXVoxlItoVjy3z0CGtG43cCa|1k&
zLqjS9xbTJqR7iuX^!LB
zymsqIw+Xl%?Wib!IBAgOGHLpJ?JN_ztWv)v&^0B273DNih2Fh?T|#r{XZ4igNvM=N
zGis(;f2DBYrm)m2MlnB9`s?s3O_`0#ET@0U*ocDOhRgk~bWk~KeT-awK1xDctL_qc
zc3r@`1h(RQvh{j0MS4%aGv9hkT$$W_YhuA5Ix*LBoBKCdM8mM2KaW1R_&f`B87y`N
z^oNOEV-!7P#7S+XREvv6Rn-FVD5YK(=atMf-Zg77`n{*lpSWOJkYmYXVY7N=g+}P}
ztl(+UqSyWf{|_MU2L8k;Y3C9P@E55MJ~b7a-w1Cir+S~dVYqYwJ2@+?wtk`bwyJ1^
zqW!bwsV>Lm&cO|tx|58Z=I3XR+Yr|ay3vT*?(&3Bl042Je%dz#lfHD%C;T~?RCD5L
z-ty&}c^|GPhl>2nppUN}h;t&q<+btXZ5NTw8;J!QUNza})=Q=;6jm%r;NN@LdrFD~
zi{yF$mc3ho{;*k{ZGhl!meB=Kj7O!{ZvivEQh{_y@qYjuGe$CXI)4C}-(+qrE;1jy
z`tI3-(Vk^vpB{bw0M7fi*?;Ux%V=#-o{{rhqRH%n>kVKN%2nfqcUvS@ukrDf*Ls(^
znvtc-CmIHzJN8@TkE(UH(lS>kY{xd<;Z6#}INZ50i80-N*Z8-K5@v6Iz&hw(ssP9t4UW?7STuU6JK#Je@@=BCIF4owN&|
zZRj?p+Cpn=L=H|-ZKwm9a6Zw6t24jz#C~ip3B|v~d+U+^n16RQBmE|Z>-^Vo_1wsU
z>Zf#G4R@Ud1k`~G-!lbh4<#H8SC!y;5IwH{)V|l*csFTinxaPh-AdK)B-9+W?h7d+o2&y0*&Js(jPDek
zqx5S822uC4Vd;%fwojI`a03qFcpwgmfOQGIPqpGWIjIZ}I{E
z96z;e4=91OAd5vrs
zTa00<48t@Fd-2txRxdC>w@Aj1b!Q0)nOzf9@ipLVMx<-2!VOmsd}_JB)c0VQ+C{eY
z>5=MQ=wC@N|EpKB;yV
zqH$`rRoAVx8f|3erRu;W@q|L2{SbzFWRPP8mylWFL5S$$Q*>=@PcQhEi(1(grs}dW
zVj--Z=Kz-wN*l1n9;>&mlYeTN_)W^q)Pr#Zy~6}{ry_R_VOHry;-%-ZT%a`Sh-)0&
z%b_OEpp%WT;JU;LBK>I<-%$m}rrE`3H>ad^+@(#;QP;q{RguYJeH^w-_C^*gt8i_M
z4N;g8R#E3hy56kY0m%M!XWP5GhKKO5DzU-Ky8hob_6u#rv3O+%)2lpI%THa6&W`a0
z=M3!X$?L}X%P80en50jI=!XLvH^<8Dd~qUg%&nc)oZ{F55GZO)OMUhhpO$|`8B6od
z{sCOXUrWw^4IOk>A8~PCZ_MmyXsvQP+bA&Nq2(V)6x6>!1A76z?vgiEwFmjWeb^aw
zcTTSjzS~o^;U?DEU;=O(roD{$mSGYheyxJGXZ-WgFjQ7X?}ODZ1Is@E{>J}gJs>^V
zr%``}-SXB9{s*wl@E=6tK0iK+{{cX^{{T|#`yPJ7pZuDS+dZEC`2(1!e|Xn-F4H$%
z+$poGbcDs(LO8!S+?HAjf|+&e`>8i;%)8`Zwkf(?zh=4~6k8TpHqysVY6*5{HmhvL
zLd7rYM1L$Ev^gO6o)C2hZnBk>;@KzzAqn3Nlt73U}R-WJg;PJkfU~*rC(S`!FiQ8J%ZgLFl70P~}
zZDbvpT9E*>6Tsk}t+!rX95~>ysCRhfERxd9LO5Smw<}7*twwr@XbxK^A)>vcx~fgv
zlZk?9_|6-VV>f})5I}?qC?1iA#AJ^D5Wy-=sEtN;K+KuI$jFR}R=nl4Rk8NppP+vi
zQ5AGr$Z<3`IpPqs^6QsFqP~I10Nt2^oboYB&TK4nWI*
zNCVKu*}u>nc1(+EbS$>fDc6U>XOxYda*Us(>MHD_eG66+F}(ZfxAZCO`FG_xJFQr0
zkGn^zUxaWZ42gF4x$fuf!AH($6UP3TOi3v>ql4({>jSDe(FM}586(7LP|#7a8N=nU
z(&VnOS^Cl6(#h)%p?$sZF!MhsF4&MLm03x;;9%$Mxuw%CF*9XxOV&lFcLgOetD$uZ
zg~nICJ2Pr5v7<)#nvJT>aW`HRfbybZ
zHT>(~Bt|T0!z8&CjM&)NcGJ|@pWAwa+o#+17YE~efSL6=qzl&;LjL-TJR+!@ehsH(
zN${YDLN7d9@DSJ(YK4rK=k4N~F5g-)9?R>A(9m&ByB#h4U3HPv1zm+TIJFS
zo+kZjRG~H<#pg=PmoQ?eyqg#`?@Z`uI3bf5pEHUg^|JD6o!FwqH+yf263{+MMvzZH$Dk&4
zP+~3c5N$)iQFV9D{Lj)=je_J}1z??%?Nvxd&@u8Vd@%#P!43;w!OaqXVSc}?xj3hK5MJpE
zckjcU{=JhU`V@=z2N0Y12e91o2e6k<_`PB=uu$l>kU71=sTJ~D)jdN^yt=DtNF=~;
zc_A(WF>QYNASI)I(_E2jEX~%4+5sm+#K3a1eGz<>{hGsfM{5j%UClxbVs5eINzwPz
zOa>clV(B)@*-oF*cCk~am{qcscM1?`3FlC1x85pqSP+llcvb=<9|KurH6{yp=6znod|AD++4IJ?#IVGe=nP-}ibWh)ut1?p$tQ&N%
z*Qj0a?-j9A<30W~Bp}d`PDwE}|90BAqb0&2*!ciK?(dU6wNY~x7{E1Vkev?Gr@gLs
zDA-#FU2pVCw}0hEE22rWL{V5EmONwcr9AIlP2SSj{#}AgwUz|={;L{=cxV+cp01uU
zarD5>k#S6e7D4?tocTAHp3KyY)BG*6q3G2O)$NM)Az*S0$u^-@zEgX%{g|5zQq2KA|@LTA2%~_L&C@K;@QJ-!6YM(ph38IDqo#@k@Lr!9@}dF^YuPw
zJaSfIBVl71$Hni^uTa+YF873E4kc2~2>iBR$yXy%2NNmpJXPY;o?h&wqH!(p7^c5!
z>DQ+d^I%GPH3m$Sp+-DCvR}U;V;#B+FJB9lJO1fAM(WgVad-77
z#e@v>kZqp|YfslSc>OYZ>|0Iun5K~x>^JVZi_s-6x%YgQKYpsD#@NS_L?d`ZA(eRQ
z);FQc#^>o(9IYC5wJ!X6NCFyyX!mkxq&oq#<;Oi@E`R<>Efl_VG7=6fpWG7;FM)&)
zC$vWb76$VaO_l_H?*({dTl?eH*in~^oz{iEPO`q8%vqLjXN655x;XH#iP3qA&?oh0
z+((#R5kDSkB5)R^3z{yuYLwgCbXR~RK_1}mc?agECv~Uv`E>So(vvN^L8l=E<9K#a6?l$
zkT-57uCaDGOGxR5ULFIMckVivC1q*--o^$JDvXpIV2(G>7LaT5K*9X>Phv3kJ#{GW
z_F@~G0dN)Uo2Ske@RE&-OTQn-#yz^ZU3Cm=I^tVN*RgT=iCEb1mj?239mjZ}6?)dqSa6%||m{
z13Yp>DC-MH1LDgo`C}D93c|KcyIm)7AjFIuSxwsUae3_rzi&S&gkV=JqTMcq
zT&m&i0+LNKLT+h|5O99{-O$ju7`I|%1#y%%S|JLH`~#K*qe4MVN8g-J#WrDW?ZpFW
z3OUWP!k
zWwe^yrfO}MYI^x_Z|RiXg_Rr_8RMRDla)|$Qf9;4*M)a!9h9cW~_;F7hioYLxRv#4gdTH%6Y>Zq{5
zzMOO9T_x#DFQSLzl;)%iUI2@f~@e-R}V)he*
zMh?(8*R3!2MxsD%ET6Dkgdm8#CGUw7?9}I6#O7Xme_#y~j4x|Ff>M*_sI#TH5gZ
z)WL|0xD6+>;JED+L513EZTAqh>r#!eW-!NILSH+b&xN20)q04m6^~R-V4u4aiI}kg
zfzbCkh}i+I?C}_JxC)Topq}7vkGk~Li$4G^aiXDVRQlCXPNxL7l&co!hx6H{kECMi
zvmjmK%$ZH`xHKlBYy7ewNv6JNM&C$yhehkOElWvKsk%JW&nD>#CklrxoyO5cyxW;7
z@Y@W_h=pqVGvrHh5ga^=X$tPG_n$w!Sh&1ta0DYaR@6wUPyLNIyPy5ySwxu^Q+2DGuI
zX$|Y24{%F2EX+w-#h+Ww=KPke${wMZPhIMtVrUm1Im)fWL`0k3RSmDguR-HPN2{lX
z!eChf4ItzfayyoY8Y0FB9CYG-dcqF(uH}Wz*Rti#XMU*DwQ|c)LtG8swl5QfAIQxc
zDVAsmIlJnXJkNYrMw;EX*XYGOufC)i`0oVZa#Y=C^A|yY8DrPT3+|@wzn&mCL-o{X
zb2Hu{z}hG;-rgDlECgVn=m9?dJFoc$zzPRk0xmIgM+6B%{!^$P@Rx4;==LC$X?zCq
z^Zx^o?NH_+a;P-k&DW5f8hy3$X7xwN!lIlOCsHX*4;NY>roqmW1sUK3y>UyL76-;C
zW^>YW{;NW1V-I0T$F}wLV@jV5x3go)3YSB789+m=LHS!P{OfzlVfCX2GX7#Q3>q#1
zcy32Ch%M~iMUgMFV2K4g!P1;hFoF(!L}7@xn#_`^w+{x&!!M11^77{~z^JG(-RZ
literal 0
HcmV?d00001