Restaurant Reservations - Version 2.1.0

Version Description

(2020-03-17) = - Added in options to set custom redirect pages for both pending and automatically-confirmed bookings - Added in a new option to allow people to cancel their reservations on your site - Added in the post ID as a column option in the admin bookings table - Added in the ability to send an admin notification for bookings that are automatically confirmed - Added in an option to include reCAPTCHA in your booking form - Added in a past bookings view to the admin bookings table - Fixed styling issue with the Contemporary and Columns layouts - Fixed issue where styling for Contemporary and Columns layouts was being applied to the admin create/edit booking form - Fixed issue causing JSON error when adding Gutenberg block to a page - Fixed issue with header bar not displaying in other languages - Fixed an issue with the plugin submenus that could cause debug warnings - Fixed an issue with the "view bookings" functionality that was causing it to show bookings from the same day of the month, but from other months - Added pagination to the "view bookings" functionality to fix issue that was limiting it to 10 reservations - Updated styling for the "view bookings" lightbox - Updated the TCPDF library to the newest version - Updates to the admin dashboard area - Removing unused files

Download this release

Release Info

Developer Rustaurius
Plugin Icon 128x128 Restaurant Reservations
Version 2.1.0
Comparing to
See all releases

Code changes from version 2.0.15 to 2.1.0

Files changed (158) hide show
  1. assets/css/admin.css +33 -2
  2. assets/css/booking-form.css +142 -9
  3. assets/css/columns.css +13 -17
  4. assets/css/contemporary.css +59 -8
  5. assets/css/dashboard-review-ask.css +61 -0
  6. assets/css/plugin-deactivation.css +68 -0
  7. assets/img/rtb-dashboard-banner.png +0 -0
  8. assets/img/rtb-icon.png +0 -0
  9. assets/js/admin.js +17 -0
  10. assets/js/booking-form.js +57 -3
  11. assets/js/columns.js +2 -8
  12. assets/js/contemporary.js +0 -26
  13. assets/js/dashboard-review-ask.js +64 -0
  14. assets/js/plugin-deactivation.js +53 -0
  15. assets/js/rtb-recaptcha.js +5 -0
  16. assets/js/stripe-payment.js +37 -0
  17. assets/js/stripe.js +3 -0
  18. includes/Ajax.class.php +129 -3
  19. includes/Booking.class.php +63 -5
  20. includes/Cron.class.php +24 -12
  21. includes/CustomPostTypes.class.php +27 -0
  22. includes/Dashboard.class.php +28 -10
  23. includes/DeactivationSurvey.class.php +84 -0
  24. includes/Editor.class.php +2 -2
  25. includes/Export.PDF.class.php +2 -1
  26. includes/InstallationWalkthrough.class.php +1 -1
  27. includes/Notification.Email.class.php +23 -3
  28. includes/Notification.SMS.class.php +149 -0
  29. includes/Notification.class.php +14 -0
  30. includes/Notifications.class.php +52 -5
  31. includes/Permissions.class.php +4 -3
  32. includes/Query.class.php +8 -1
  33. includes/ReviewAsk.class.php +98 -0
  34. includes/Settings.class.php +968 -120
  35. includes/WP_List_Table.BookingsTable.class.php +24 -3
  36. includes/template-functions.php +396 -37
  37. lib/simple-admin-pages/classes/AdminPageSection.class.php +5 -8
  38. lib/stripe/.coveralls.yml +4 -0
  39. lib/stripe/.gitignore +14 -0
  40. lib/stripe/.travis.yml +17 -0
  41. lib/stripe/CHANGELOG.md +364 -0
  42. lib/stripe/LICENSE +21 -0
  43. lib/stripe/README.md +129 -0
  44. lib/stripe/VERSION +1 -0
  45. lib/stripe/build.php +36 -0
  46. lib/stripe/composer.json +36 -0
  47. lib/stripe/data/ca-certificates.crt +3919 -0
  48. lib/stripe/data/test.png +0 -0
  49. lib/stripe/init.php +67 -0
  50. lib/stripe/lib/Account.php +131 -0
  51. lib/stripe/lib/AlipayAccount.php +13 -0
  52. lib/stripe/lib/ApiRequestor.php +244 -0
  53. lib/stripe/lib/ApiResource.php +205 -0
  54. lib/stripe/lib/ApiResponse.php +32 -0
  55. lib/stripe/lib/ApplicationFee.php +69 -0
  56. lib/stripe/lib/ApplicationFeeRefund.php +44 -0
  57. lib/stripe/lib/AttachedObject.php +31 -0
  58. lib/stripe/lib/Balance.php +26 -0
  59. lib/stripe/lib/BalanceTransaction.php +57 -0
  60. lib/stripe/lib/BankAccount.php +25 -0
  61. lib/stripe/lib/BitcoinReceiver.php +85 -0
  62. lib/stripe/lib/BitcoinTransaction.php +13 -0
  63. lib/stripe/lib/Card.php +13 -0
  64. lib/stripe/lib/Charge.php +184 -0
  65. lib/stripe/lib/Collection.php +87 -0
  66. lib/stripe/lib/CountrySpec.php +44 -0
  67. lib/stripe/lib/Coupon.php +77 -0
  68. lib/stripe/lib/Customer.php +190 -0
  69. lib/stripe/lib/Dispute.php +83 -0
  70. lib/stripe/lib/Error/Api.php +7 -0
  71. lib/stripe/lib/Error/ApiConnection.php +7 -0
  72. lib/stripe/lib/Error/Authentication.php +7 -0
  73. lib/stripe/lib/Error/Base.php +60 -0
  74. lib/stripe/lib/Error/Card.php +41 -0
  75. lib/stripe/lib/Error/InvalidRequest.php +23 -0
  76. lib/stripe/lib/Error/RateLimit.php +7 -0
  77. lib/stripe/lib/Event.php +43 -0
  78. lib/stripe/lib/ExternalAccount.php +89 -0
  79. lib/stripe/lib/FileUpload.php +61 -0
  80. lib/stripe/lib/HttpClient/ClientInterface.php +18 -0
  81. lib/stripe/lib/HttpClient/CurlClient.php +298 -0
  82. lib/stripe/lib/Invoice.php +92 -0
  83. lib/stripe/lib/InvoiceItem.php +77 -0
  84. lib/stripe/lib/JsonSerializable.php +18 -0
  85. lib/stripe/lib/Order.php +87 -0
  86. lib/stripe/lib/OrderReturn.php +33 -0
  87. lib/stripe/lib/Plan.php +77 -0
  88. lib/stripe/lib/Product.php +77 -0
  89. lib/stripe/lib/Recipient.php +92 -0
  90. lib/stripe/lib/Refund.php +79 -0
  91. lib/stripe/lib/SKU.php +77 -0
  92. lib/stripe/lib/SingletonApiResource.php +36 -0
  93. lib/stripe/lib/Stripe.php +100 -0
  94. lib/stripe/lib/StripeObject.php +293 -0
  95. lib/stripe/lib/Subscription.php +97 -0
  96. lib/stripe/lib/ThreeDSecure.php +25 -0
  97. lib/stripe/lib/Token.php +43 -0
  98. lib/stripe/lib/Transfer.php +115 -0
  99. lib/stripe/lib/TransferReversal.php +53 -0
  100. lib/stripe/lib/Util/AutoPagingIterator.php +61 -0
  101. lib/stripe/lib/Util/RequestOptions.php +79 -0
  102. lib/stripe/lib/Util/Set.php +44 -0
  103. lib/stripe/lib/Util/Util.php +140 -0
  104. lib/stripe/phpunit.no_autoload.xml +15 -0
  105. lib/stripe/phpunit.xml +15 -0
  106. lib/stripe/tests/AccountTest.php +300 -0
  107. lib/stripe/tests/ApiRequestorTest.php +43 -0
  108. lib/stripe/tests/ApplicationFeeRefundTest.php +18 -0
  109. lib/stripe/tests/ApplicationFeeTest.php +22 -0
  110. lib/stripe/tests/AuthenticationErrorTest.php +16 -0
  111. lib/stripe/tests/BalanceTest.php +15 -0
  112. lib/stripe/tests/BalanceTransactionTest.php +13 -0
  113. lib/stripe/tests/BankAccountTest.php +32 -0
  114. lib/stripe/tests/BitcoinReceiverTest.php +120 -0
  115. lib/stripe/tests/CardErrorTest.php +40 -0
  116. lib/stripe/tests/ChargeTest.php +204 -0
  117. lib/stripe/tests/CollectionTest.php +105 -0
  118. lib/stripe/tests/CountrySpecTest.php +31 -0
  119. lib/stripe/tests/CouponTest.php +29 -0
  120. lib/stripe/tests/CurlClientTest.php +92 -0
  121. lib/stripe/tests/CustomerTest.php +278 -0
  122. lib/stripe/tests/DiscountTest.php +31 -0
  123. lib/stripe/tests/DisputeTest.php +91 -0
  124. lib/stripe/tests/ErrorTest.php +61 -0
  125. lib/stripe/tests/ExternalAccountTest.php +30 -0
  126. lib/stripe/tests/FileUploadTest.php +44 -0
  127. lib/stripe/tests/InvalidRequestErrorTest.php +26 -0
  128. lib/stripe/tests/InvoiceTest.php +56 -0
  129. lib/stripe/tests/PlanTest.php +51 -0
  130. lib/stripe/tests/ProductTest.php +158 -0
  131. lib/stripe/tests/RateLimitErrorTest.php +22 -0
  132. lib/stripe/tests/RecipientTest.php +112 -0
  133. lib/stripe/tests/RefundTest.php +131 -0
  134. lib/stripe/tests/RequestOptionsTest.php +69 -0
  135. lib/stripe/tests/StripeObjectTest.php +108 -0
  136. lib/stripe/tests/SubscriptionTest.php +101 -0
  137. lib/stripe/tests/TestCase.php +224 -0
  138. lib/stripe/tests/ThreeDSecureTest.php +31 -0
  139. lib/stripe/tests/TokenTest.php +13 -0
  140. lib/stripe/tests/TransferReversalTest.php +15 -0
  141. lib/stripe/tests/TransferTest.php +110 -0
  142. lib/stripe/tests/UtilTest.php +45 -0
  143. lib/stripe/tests/bootstrap.no_autoload.php +4 -0
  144. lib/stripe/tests/bootstrap.php +3 -0
  145. lib/tcpdf/CHANGELOG.TXT +39 -0
  146. lib/tcpdf/LICENSE.TXT +2 -0
  147. lib/tcpdf/README.TXT +0 -115
  148. lib/tcpdf/README.md +84 -0
  149. lib/tcpdf/VERSION +1 -0
  150. lib/tcpdf/composer.json +45 -38
  151. lib/tcpdf/config/tcpdf_config.php +2 -2
  152. lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/AUTHORS +0 -54
  153. lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/BUGS +0 -3
  154. lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/LICENSE +0 -99
  155. lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/NEWS +0 -1373
  156. lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/README +0 -59
  157. lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/langcover.txt +0 -249
  158. lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/status.txt +0 -1141
assets/css/admin.css CHANGED
@@ -1,5 +1,9 @@
1
  /* CSS Stylesheet for the admin interface for Restaurant Reservations */
2
 
 
 
 
 
3
  .clearfix:before,
4
  .clearfix:after { /* thanks bootstrap */
5
  content: " ";
@@ -782,7 +786,8 @@ NEW DASHBOARD
782
  .rtb-dashboard-new-upgrade-banner {
783
  position: relative;
784
  float: left;
785
- width: 100%;
 
786
  height: 256px;
787
  background: url(../img/rtb-dashboard-banner.png) center no-repeat #1b0f49;
788
  }
@@ -911,7 +916,33 @@ NEW DASHBOARD
911
  }
912
  }
913
 
914
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
915
 
916
 
917
 
1
  /* CSS Stylesheet for the admin interface for Restaurant Reservations */
2
 
3
+ .rtb-hidden {
4
+ display: none;
5
+ }
6
+
7
  .clearfix:before,
8
  .clearfix:after { /* thanks bootstrap */
9
  content: " ";
786
  .rtb-dashboard-new-upgrade-banner {
787
  position: relative;
788
  float: left;
789
+ margin-left: -20px;
790
+ width: calc(100% + 20px);
791
  height: 256px;
792
  background: url(../img/rtb-dashboard-banner.png) center no-repeat #1b0f49;
793
  }
916
  }
917
  }
918
 
919
+ .rtb-ultimate-upgrade-dismiss {
920
+ position: absolute;
921
+ top: 0;
922
+ right: 1px;
923
+ border: none;
924
+ margin: 0;
925
+ padding: 9px;
926
+ background: 0 0;
927
+ color: #72777c;
928
+ cursor: pointer;
929
+ }
930
+ .rtb-ultimate-upgrade-dismiss:before {
931
+ background: 0 0;
932
+ color: #72777c;
933
+ content: "\f153";
934
+ display: block;
935
+ font: normal 16px/20px dashicons;
936
+ speak: none;
937
+ height: 20px;
938
+ text-align: center;
939
+ width: 20px;
940
+ -webkit-font-smoothing: antialiased;
941
+ }
942
+ .rtb-ultimate-notification {
943
+ width: calc(100% - 25px);
944
+ float: left;
945
+ }
946
 
947
 
948
 
assets/css/booking-form.css CHANGED
@@ -1,5 +1,8 @@
1
  /* Frontend CSS Stylesheet for Restaurant Reservations */
2
 
 
 
 
3
  .rtb-hidden {
4
  display: none;
5
  }
@@ -88,15 +91,6 @@
88
 
89
 
90
  /* ARRIVAL LIGHTBOX */
91
- .rtb-view-bookings-form-confirmation-div {
92
- position: fixed;
93
- top: 100px;
94
- z-index: 1000000;
95
- margin: 0 auto;
96
- background: #fff;
97
- width: 100%;
98
- max-width: 1080px;
99
- }
100
  .rtb-view-bookings-form-confirmation-background-div {
101
  position: fixed;
102
  top: 0;
@@ -105,4 +99,143 @@
105
  height: 100%;
106
  z-index: 999999;
107
  background: rgba(0,0,0,0.5);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  }
1
  /* Frontend CSS Stylesheet for Restaurant Reservations */
2
 
3
+ .rtb-clear {
4
+ clear: both;
5
+ }
6
  .rtb-hidden {
7
  display: none;
8
  }
91
 
92
 
93
  /* ARRIVAL LIGHTBOX */
 
 
 
 
 
 
 
 
 
94
  .rtb-view-bookings-form-confirmation-background-div {
95
  position: fixed;
96
  top: 0;
99
  height: 100%;
100
  z-index: 999999;
101
  background: rgba(0,0,0,0.5);
102
+ }
103
+ .rtb-view-bookings-form-confirmation-div {
104
+ position: fixed;
105
+ top: 200px;
106
+ width: 480px;
107
+ left: calc(50% - 240px);
108
+ z-index: 1000000;
109
+ margin: 0;
110
+ background: #fff;
111
+ font-size: 18px;
112
+ text-transform: uppercase;
113
+ font-weight: bold;
114
+ text-align: center;
115
+ }
116
+ .rtb-view-bookings-form-confirmation-div-inside {
117
+ position: relative;
118
+ float: left;
119
+ width: calc(100% - 6px);
120
+ height: calc(100% - 12px);
121
+ border: 3px solid #ddd;
122
+ margin: 3px;
123
+ }
124
+ .rtb-view-bookings-form-confirmation-div-title {
125
+ position: relative;
126
+ float: left;
127
+ width: 90%;
128
+ margin: 24px 5%;
129
+ color: #333;
130
+ }
131
+ .rtb-view-bookings-form-confirmation-accept {
132
+ position: relative;
133
+ float: left;
134
+ width: 32%;
135
+ margin: 24px 34% 0;
136
+ padding: 8px 0;
137
+ background: #444;
138
+ color: #fff;
139
+ cursor: pointer;
140
+ }
141
+ .rtb-view-bookings-form-confirmation-accept:hover {
142
+ background: #555;
143
+ }
144
+ .rtb-view-bookings-form-confirmation-decline {
145
+ position: relative;
146
+ float: left;
147
+ width: 32%;
148
+ margin: 8px 34% 24px;
149
+ padding: 8px 0;
150
+ background: #bbb;
151
+ color: #444;
152
+ cursor: pointer;
153
+ }
154
+ .rtb-view-bookings-form-confirmation-decline:hover {
155
+ background: #ccc;
156
+ }
157
+
158
+ #rtb-view-bookings-form-close {
159
+ position: absolute;
160
+ top: 0;
161
+ right: 0;
162
+ width: 24px;
163
+ height: 24px;
164
+ background: #ddd;
165
+ font-size: 15px;
166
+ cursor: pointer;
167
+ }
168
+
169
+ @media screen and (max-width: 568px) {
170
+ .rtb-view-bookings-form-confirmation-div {
171
+ top: 100px;
172
+ width: 300px;
173
+ left: calc(50% - 150px);
174
+ }
175
+ }
176
+
177
+
178
+ /*CANCEL LINK*/
179
+ .rtb-cancellation-toggle {
180
+ position: relative;
181
+ float: left;
182
+ padding: 10px 15px;
183
+ margin-bottom: 24px;
184
+ background: #444;
185
+ color: #fff;
186
+ border-radius: 3px;
187
+ cursor: pointer;
188
+ }
189
+ label[for="rtb-cancellation-email"],
190
+ input[name="rtb_cancellation_email"] {
191
+ float: left;
192
+ margin-top: 20px;
193
+ }
194
+ label[for="rtb-cancellation-email"] {
195
+ margin-right: 12px;
196
+ }
197
+ .rtb-cancel-button {
198
+ position: relative;
199
+ float: left;
200
+ padding: 10px 15px;
201
+ margin-top: 24px;
202
+ background: #444;
203
+ color: #fff;
204
+ border-radius: 3px;
205
+ cursor: pointer;
206
+ }
207
+
208
+ .rtb-bookings-results,
209
+ .rtb-cancel-booking-div {
210
+ position: relative;
211
+ float: left;
212
+ width: 100%;
213
+ margin-top: 16px;
214
+ }
215
+ .rtb-cancel-booking-div {
216
+ position: relative;
217
+ float: left;
218
+ width: calc(100% - 2px);
219
+ border: 1px solid #ddd;
220
+ }
221
+ .rtb-cancel-booking {
222
+ position: relative;
223
+ float: left;
224
+ width: 200px;
225
+ text-align: center;
226
+ padding: 10px 0;
227
+ background: #fe4e4e;
228
+ color: #fff;
229
+ cursor: pointer;
230
+ }
231
+ .rtb-cancel-booking:hover {
232
+ background: #ff6b6b;
233
+ color: #fff;
234
+ }
235
+ .rtb-booking-information {
236
+ position: relative;
237
+ float: left;
238
+ margin-left: 32px;
239
+ width: calc(100% - 232px);
240
+ padding: 10px 0;
241
  }
assets/css/columns.css CHANGED
@@ -1,9 +1,3 @@
1
- .rtb-booking-form,
2
- .rtb-booking-form form {
3
- position: relative;
4
- float: left;
5
- width: 100%;
6
- }
7
  .rtb-booking-form fieldset {
8
  border: 0 solid #ccc;
9
  margin: 0;
@@ -14,21 +8,17 @@
14
  float: left;
15
  margin-top: 32px;
16
  }
17
- .rtb-booking-form fieldset.reservation {
18
- width: 45%;
19
  margin-right: 5%;
20
  }
21
- .rtb-booking-form fieldset.contact {
22
- width: 50%;
23
  }
24
  @media screen and (max-width: 768px) {
25
- .rtb-booking-form fieldset.reservation {
26
- width: 100%;
27
- margin-right: 0;
28
- margin-bottom: 28px;
29
- }
30
- .rtb-booking-form fieldset.contact {
31
  width: 100%;
 
32
  }
33
  }
34
 
@@ -47,6 +37,7 @@
47
  text-align: center;
48
  color: #666;
49
  font-weight: bold;
 
50
  }
51
 
52
  .rtb-booking-form fieldset.optin {
@@ -80,6 +71,7 @@
80
  .rtb-booking-form form select,
81
  .rtb-booking-form form input {
82
  height: 48px;
 
83
  }
84
  .rtb-booking-form form input::webkit-input-placeholder,
85
  .rtb-booking-form form input:ms--input-placeholder,
@@ -99,19 +91,23 @@
99
  border: 1px solid #ddd;
100
  background: white;
101
  color: #888;
 
102
  }
103
  .rtb-booking-form .add-message a:hover {
104
  background: #aaa;
105
  border-color: #aaa;
106
  color: white;
 
107
  }
108
 
109
  .rtb-booking-form button {
 
110
  float: left;
111
- margin-top: 24px;
112
  cursor: pointer;
113
  display: block;
114
  align-items: stretch;
 
115
  }
116
 
117
  .rtb-booking-form fieldset.optin input[type="checkbox"] {
 
 
 
 
 
 
1
  .rtb-booking-form fieldset {
2
  border: 0 solid #ccc;
3
  margin: 0;
8
  float: left;
9
  margin-top: 32px;
10
  }
11
+ .rtb-booking-form fieldset {
12
+ width: 47.5%;
13
  margin-right: 5%;
14
  }
15
+ .rtb-booking-form fieldset:nth-of-type(2n+2) {
16
+ margin-right: 0;
17
  }
18
  @media screen and (max-width: 768px) {
19
+ .rtb-booking-form fieldset {
 
 
 
 
 
20
  width: 100%;
21
+ margin-right: 0 !important;
22
  }
23
  }
24
 
37
  text-align: center;
38
  color: #666;
39
  font-weight: bold;
40
+ margin-bottom: 0 !important
41
  }
42
 
43
  .rtb-booking-form fieldset.optin {
71
  .rtb-booking-form form select,
72
  .rtb-booking-form form input {
73
  height: 48px;
74
+ width: 100%;
75
  }
76
  .rtb-booking-form form input::webkit-input-placeholder,
77
  .rtb-booking-form form input:ms--input-placeholder,
91
  border: 1px solid #ddd;
92
  background: white;
93
  color: #888;
94
+ text-decoration: none;
95
  }
96
  .rtb-booking-form .add-message a:hover {
97
  background: #aaa;
98
  border-color: #aaa;
99
  color: white;
100
+ text-decoration: none;
101
  }
102
 
103
  .rtb-booking-form button {
104
+ clear: both;
105
  float: left;
106
+ margin-top: 36px;
107
  cursor: pointer;
108
  display: block;
109
  align-items: stretch;
110
+ text-decoration: none;
111
  }
112
 
113
  .rtb-booking-form fieldset.optin input[type="checkbox"] {
assets/css/contemporary.css CHANGED
@@ -44,15 +44,39 @@
44
  display: block;
45
  width: 300px;
46
  }
47
- .rtb-booking-form fieldset.reservation .rtb-text.time {
 
48
  left: -1px;
49
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  .rtb-booking-form fieldset.reservation .rtb-select {
51
  position: relative;
52
  float: left;
53
  display: block;
54
  width: 300px;
55
- left: -2px;
56
  }
57
 
58
  .rtb-booking-form form fieldset.reservation select,
@@ -120,12 +144,6 @@
120
  display: block;
121
  width: 300px;
122
  }
123
- .rtb-booking-form fieldset.contact .rtb-text.email {
124
- left: -1px;
125
- }
126
- .rtb-booking-form fieldset.contact .rtb-text.phone {
127
- left: -2px;
128
- }
129
 
130
  .rtb-booking-form form fieldset.contact select,
131
  .rtb-booking-form form fieldset.contact textarea,
@@ -145,10 +163,12 @@
145
  border: 2px solid #777;
146
  background: white;
147
  color: #777;
 
148
  }
149
  .rtb-booking-form .add-message a:hover {
150
  background: #777;
151
  color: white;
 
152
  }
153
 
154
  .rtb-booking-form form fieldset .rtb-textarea {
@@ -156,3 +176,34 @@
156
  position: relative;
157
  float: left;
158
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  display: block;
45
  width: 300px;
46
  }
47
+
48
+ .rtb-booking-form fieldset > div:nth-of-type(2) {
49
  left: -1px;
50
  }
51
+ .rtb-booking-form fieldset > div:nth-of-type(3) {
52
+ left: -2px;
53
+ }
54
+ .rtb-booking-form fieldset > div:nth-of-type(4) {
55
+ left: -3px;
56
+ }
57
+ .rtb-booking-form fieldset > div:nth-of-type(5) {
58
+ left: -4px;
59
+ }
60
+ .rtb-booking-form fieldset > div:nth-of-type(6) {
61
+ left: -5px;
62
+ }
63
+ .rtb-booking-form fieldset > div:nth-of-type(7) {
64
+ left: -6px;
65
+ }
66
+ .rtb-booking-form fieldset > div:nth-of-type(8) {
67
+ left: -7px;
68
+ }
69
+ .rtb-booking-form fieldset > div:nth-of-type(9) {
70
+ left: -8px;
71
+ }
72
+ .rtb-booking-form fieldset > div:nth-of-type(10) {
73
+ left: -9px;
74
+ }
75
  .rtb-booking-form fieldset.reservation .rtb-select {
76
  position: relative;
77
  float: left;
78
  display: block;
79
  width: 300px;
 
80
  }
81
 
82
  .rtb-booking-form form fieldset.reservation select,
144
  display: block;
145
  width: 300px;
146
  }
 
 
 
 
 
 
147
 
148
  .rtb-booking-form form fieldset.contact select,
149
  .rtb-booking-form form fieldset.contact textarea,
163
  border: 2px solid #777;
164
  background: white;
165
  color: #777;
166
+ text-decoration: none;
167
  }
168
  .rtb-booking-form .add-message a:hover {
169
  background: #777;
170
  color: white;
171
+ text-decoration: none;
172
  }
173
 
174
  .rtb-booking-form form fieldset .rtb-textarea {
176
  position: relative;
177
  float: left;
178
  }
179
+
180
+
181
+ .rtb-textarea {
182
+ margin-bottom: 24px;
183
+ }
184
+ .rtb-checkbox {
185
+ clear: both;
186
+ margin-bottom: 24px;
187
+ }
188
+ .rtb-booking-form fieldset select,
189
+ .rtb-booking-form fieldset input {
190
+ margin-top: 0 !important;
191
+ }
192
+
193
+
194
+ @media screen and (max-width: 900px) {
195
+ .rtb-booking-form fieldset > div {
196
+ clear: both;
197
+ }
198
+ .rtb-booking-form fieldset > div:nth-of-type(2),
199
+ .rtb-booking-form fieldset > div:nth-of-type(3),
200
+ .rtb-booking-form fieldset > div:nth-of-type(4),
201
+ .rtb-booking-form fieldset > div:nth-of-type(5),
202
+ .rtb-booking-form fieldset > div:nth-of-type(6),
203
+ .rtb-booking-form fieldset > div:nth-of-type(7),
204
+ .rtb-booking-form fieldset > div:nth-of-type(8),
205
+ .rtb-booking-form fieldset > div:nth-of-type(9),
206
+ .rtb-booking-form fieldset > div:nth-of-type(10) {}
207
+ left: 0;
208
+ }
209
+ }
assets/css/dashboard-review-ask.css ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .rtb-hidden {
2
+ display: none;
3
+ }
4
+ .rtb-clear {
5
+ clear: both;
6
+ }
7
+ .rtb-main-dashboard-review-ask {
8
+ border-left-color: #1b335f;
9
+ }
10
+ .rtb-review-ask-plugin-icon {
11
+ height: 100px;
12
+ width: 100px;
13
+ float: left;
14
+ margin: 12px 24px 16px 10px;
15
+ background-image: url(../img/rtb-icon.png);
16
+ background-size: contain;
17
+ }
18
+ .rtb-review-ask-text p {
19
+ padding: 10px 20px;
20
+ font-weight: 600;
21
+ font-size: 20px;
22
+ }
23
+ .rtb-review-ask-action {
24
+ width: 90px;
25
+ padding: 6px;
26
+ margin-right: 18px;
27
+ text-align: center;
28
+ float: left;
29
+ border-radius: 4px;
30
+ cursor: pointer;
31
+ }
32
+ .rtb-review-ask-white {
33
+ color: #999999;
34
+ border: 1px solid #bbbbbb;
35
+ }
36
+ .rtb-review-ask-green {
37
+ color: #ffffff;
38
+ background: #7CA3BF;
39
+ border: 1px solid #7CA3BF;
40
+ font-weight: 600;
41
+ }
42
+ .rtb-review-ask-green a {
43
+ color: #ffffff;
44
+ text-decoration: none;
45
+ }
46
+ .rtb-review-ask-feedback-form {
47
+ position: relative;
48
+ float: left;
49
+ }.rtb-review-ask-feedback-explanation textarea {
50
+ height: 70px;
51
+ width: 480px;
52
+ }
53
+ .rtb-review-ask-send-feedback {
54
+ margin: 10px 0px;
55
+ }
56
+
57
+
58
+ .rtb-review-ask-review-text span {
59
+ font-size: .8em;
60
+ font-weight: normal;
61
+ }
assets/css/plugin-deactivation.css ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .rtb-deactivate-survey-modal {
2
+ display: none;
3
+ table-layout: fixed;
4
+ position: fixed;
5
+ z-index: 9999;
6
+ width: 100%;
7
+ height: 100%;
8
+ text-align: center;
9
+ font-size: 14px;
10
+ top: 0;
11
+ left: 0;
12
+ background: rgba(0,0,0,0.8);
13
+ }
14
+ .rtb-deactivate-survey-wrap {
15
+ display: table-cell;
16
+ vertical-align: middle;
17
+ }
18
+ .rtb-deactivate-survey {
19
+ background-color: #fff;
20
+ max-width: 550px;
21
+ margin: 0 auto;
22
+ padding: 30px;
23
+ text-align: left;
24
+ }
25
+ .rtb-deactivate-survey .error {
26
+ display: block;
27
+ color: red;
28
+ margin: 0 0 10px 0;
29
+ }
30
+ .rtb-deactivate-survey-title {
31
+ display: block;
32
+ font-size: 18px;
33
+ font-weight: 700;
34
+ text-transform: uppercase;
35
+ border-bottom: 1px solid #ddd;
36
+ padding: 0 0 18px 0;
37
+ margin: 0 0 18px 0;
38
+ }
39
+ .rtb-deactivate-survey-title span {
40
+ color: #999;
41
+ margin-right: 10px;
42
+ }
43
+ .rtb-deactivate-survey-desc {
44
+ display: block;
45
+ font-weight: 600;
46
+ margin: 0 0 18px 0;
47
+ }
48
+ .rtb-deactivate-survey-option {
49
+ margin: 0 0 10px 0;
50
+ }
51
+ .rtb-deactivate-survey-option-input {
52
+ margin-right: 10px !important;
53
+ }
54
+ .rtb-deactivate-survey-option-details {
55
+ display: none;
56
+ width: 90%;
57
+ margin: 10px 0 0 30px;
58
+ }
59
+ .rtb-deactivate-survey-footer {
60
+ margin-top: 18px;
61
+ }
62
+ .rtb-deactivate-survey-deactivate {
63
+ float: right;
64
+ font-size: 13px;
65
+ color: #ccc;
66
+ text-decoration: none;
67
+ padding-top: 7px;
68
+ }
assets/img/rtb-dashboard-banner.png ADDED
Binary file
assets/img/rtb-icon.png ADDED
Binary file
assets/js/admin.js CHANGED
@@ -979,6 +979,7 @@ jQuery(document).ready(function($){
979
  $('#rtb-dash-mobile-menu-down-caret').toggle();
980
  return false;
981
  });
 
982
  $(function(){
983
  $(window).resize(function(){
984
  if($(window).width() > 800){
@@ -991,16 +992,32 @@ jQuery(document).ready(function($){
991
  }
992
  }).resize();
993
  });
 
994
  $('#rtb-dashboard-support-widget-box .rtb-dashboard-new-widget-box-top').click(function(){
995
  $('#rtb-dashboard-support-widget-box .rtb-dashboard-new-widget-box-bottom').toggle();
996
  $('#rtb-dash-mobile-support-up-caret').toggle();
997
  $('#rtb-dash-mobile-support-down-caret').toggle();
998
  });
 
999
  $('#rtb-dashboard-optional-table .rtb-dashboard-new-widget-box-top').click(function(){
1000
  $('#rtb-dashboard-optional-table .rtb-dashboard-new-widget-box-bottom').toggle();
1001
  $('#rtb-dash-optional-table-up-caret').toggle();
1002
  $('#rtb-dash-optional-table-down-caret').toggle();
1003
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1004
  });
1005
 
1006
  /*LOCK BOXES*/
979
  $('#rtb-dash-mobile-menu-down-caret').toggle();
980
  return false;
981
  });
982
+
983
  $(function(){
984
  $(window).resize(function(){
985
  if($(window).width() > 800){
992
  }
993
  }).resize();
994
  });
995
+
996
  $('#rtb-dashboard-support-widget-box .rtb-dashboard-new-widget-box-top').click(function(){
997
  $('#rtb-dashboard-support-widget-box .rtb-dashboard-new-widget-box-bottom').toggle();
998
  $('#rtb-dash-mobile-support-up-caret').toggle();
999
  $('#rtb-dash-mobile-support-down-caret').toggle();
1000
  });
1001
+
1002
  $('#rtb-dashboard-optional-table .rtb-dashboard-new-widget-box-top').click(function(){
1003
  $('#rtb-dashboard-optional-table .rtb-dashboard-new-widget-box-bottom').toggle();
1004
  $('#rtb-dash-optional-table-up-caret').toggle();
1005
  $('#rtb-dash-optional-table-down-caret').toggle();
1006
  });
1007
+
1008
+ $('.rtb-ultimate-upgrade-dismiss').on('click', function() {
1009
+ $('#rtb-dashboard-upgrade-box').addClass('rtb-hidden');
1010
+ $('#rtb-dashboard-show-upgrade-box-link').removeClass('rtb-hidden');
1011
+
1012
+ $.post( ajaxurl, 'action=rtb_hide_upgrade_box' );
1013
+ });
1014
+
1015
+ $('#rtb-dashboard-show-upgrade-box-link').on('click', function() {
1016
+ $('#rtb-dashboard-show-upgrade-box-link').addClass('rtb-hidden');
1017
+ $('#rtb-dashboard-upgrade-box').removeClass('rtb-hidden');
1018
+
1019
+ $.post( ajaxurl, 'action=rtb_display_upgrade_box' );
1020
+ });
1021
  });
1022
 
1023
  /*LOCK BOXES*/
assets/js/booking-form.js CHANGED
@@ -204,8 +204,8 @@ jQuery(document).ready(function ($) {
204
  return;
205
  }
206
 
207
- var additional_valid_times = jQuery.parseJSON( response );
208
- var all_valid_times = valid_times.concat( additional_valid_times );
209
  rtb_booking_form.timepicker.set( 'disable', all_valid_times );
210
  });
211
  }
@@ -422,6 +422,58 @@ jQuery(document).ready(function ($) {
422
  rtb_booking_form.init();
423
  });
424
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
425
  // Functions for the 'View Bookings' shortcode
426
  jQuery(document).ready(function ($) {
427
  jQuery('.rtb-view-bookings-form-date-selector').on('change', function() {
@@ -450,10 +502,12 @@ jQuery(document).ready(function ($) {
450
  jQuery('.rtb-view-bookings-form-confirmation-decline').on('click', function() {
451
  jQuery('.rtb-view-bookings-form-confirmation-div, .rtb-view-bookings-form-confirmation-background-div').addClass('rtb-hidden');
452
  });
453
-
454
  jQuery('.rtb-view-bookings-form-confirmation-background-div').on('click', function() {
455
  jQuery('.rtb-view-bookings-form-confirmation-div, .rtb-view-bookings-form-confirmation-background-div').addClass('rtb-hidden');
456
  });
 
 
 
457
  });
458
 
459
  function replaceUrlParam(url, paramName, paramValue)
204
  return;
205
  }
206
 
207
+ var additional_valid_times = jQuery.parseJSON( response );
208
+ var all_valid_times = valid_times.concat( additional_valid_times );
209
  rtb_booking_form.timepicker.set( 'disable', all_valid_times );
210
  });
211
  }
422
  rtb_booking_form.init();
423
  });
424
 
425
+ //Handle reservation cancellations
426
+ jQuery(document).ready(function() {
427
+ jQuery('.rtb-cancellation-toggle').on('click', function() {
428
+ jQuery('.rtb-cancellation-form, .rtb-booking-form-form').toggleClass('rtb-hidden');
429
+
430
+ if (jQuery('.rtb-cancellation-form').hasClass('rtb-hidden')) {
431
+ jQuery('.rtb-cancellation-toggle').html('Want to cancel your reservation?');
432
+ }
433
+ else {
434
+ jQuery('.rtb-cancellation-toggle').html('Make a reservation');
435
+ }
436
+ });
437
+
438
+ jQuery('.rtb-cancel-button').on('click', function() {
439
+ var booking_email = jQuery('input[name="rtb_cancellation_email"]').val();
440
+
441
+ var data = 'booking_email=' + booking_email + '&action=rtb_find_reservations';
442
+ jQuery.post(ajaxurl, data, function(response) { console.log(response);
443
+
444
+ if (response.success) {
445
+ var booking_html = '';
446
+
447
+ jQuery(response.data.bookings).each(function( index, val) {
448
+ booking_html += '<div class="rtb-cancel-booking-div">';
449
+ booking_html += '<div class="rtb-cancel-booking" data-bookingid="' + val.ID + '" data-bookingemail="' + val.email + '">Cancel</div>';
450
+ booking_html += '<div class="rtb-booking-information">' + val.datetime + ' - ' + val.party + ' guest' + (val.party > 1 ? 's' : '') + '</div>'
451
+ booking_html += '</div>';
452
+ });
453
+
454
+ jQuery('.rtb-bookings-results').html(booking_html);
455
+
456
+ cancellationHandler();
457
+ }
458
+ else {jQuery('.rtb-bookings-results').html(response.data.msg);}
459
+ });
460
+ });
461
+ });
462
+
463
+ function cancellationHandler() {
464
+ jQuery('.rtb-cancel-booking').off('click');
465
+ jQuery('.rtb-cancel-booking').on('click', function() {
466
+ var booking_id = jQuery(this).data('bookingid');
467
+ var booking_email = jQuery(this).data('bookingemail');
468
+
469
+ var data = 'booking_id=' + booking_id + '&booking_email=' + booking_email + '&action=rtb_cancel_reservations'; console.log(data);
470
+ jQuery.post(ajaxurl, data, function(response) { console.log(response);
471
+ if (response.success) {window.location.href = replaceUrlParam(window.location.href, 'bookingCancelled', 'success');}
472
+ else {jQuery('.rtb-bookings-results').html(response.data.msg);}
473
+ });
474
+ });
475
+ }
476
+
477
  // Functions for the 'View Bookings' shortcode
478
  jQuery(document).ready(function ($) {
479
  jQuery('.rtb-view-bookings-form-date-selector').on('change', function() {
502
  jQuery('.rtb-view-bookings-form-confirmation-decline').on('click', function() {
503
  jQuery('.rtb-view-bookings-form-confirmation-div, .rtb-view-bookings-form-confirmation-background-div').addClass('rtb-hidden');
504
  });
 
505
  jQuery('.rtb-view-bookings-form-confirmation-background-div').on('click', function() {
506
  jQuery('.rtb-view-bookings-form-confirmation-div, .rtb-view-bookings-form-confirmation-background-div').addClass('rtb-hidden');
507
  });
508
+ jQuery('#rtb-view-bookings-form-close').on('click', function() {
509
+ jQuery('.rtb-view-bookings-form-confirmation-div, .rtb-view-bookings-form-confirmation-background-div').addClass('rtb-hidden');
510
+ });
511
  });
512
 
513
  function replaceUrlParam(url, paramName, paramValue)
assets/js/columns.js CHANGED
@@ -3,14 +3,8 @@ jQuery(document).ready(function($){
3
  $(window).resize(function(){
4
  $('.rtb-booking-form form button').each(function(){
5
  var thisButton = $(this);
6
- var buttonHalfWidthBig = ( thisButton.width() / 2 ) + 56;
7
- var buttonHalfWidthSmall = ( thisButton.width() / 2 ) + 28;
8
- if( $(window).width() > 768 ){
9
- thisButton.css('margin-left', 'calc(50% - '+buttonHalfWidthBig+'px');
10
- }
11
- else{
12
- thisButton.css('margin-left', 'calc(50% - '+buttonHalfWidthSmall+'px');
13
- }
14
  });
15
  }).resize();
16
  });
3
  $(window).resize(function(){
4
  $('.rtb-booking-form form button').each(function(){
5
  var thisButton = $(this);
6
+ var buttonHalfWidth = ( thisButton.outerWidth() / 2 );
7
+ thisButton.css('margin-left', 'calc(50% - '+buttonHalfWidth+'px');
 
 
 
 
 
 
8
  });
9
  }).resize();
10
  });
assets/js/contemporary.js DELETED
@@ -1,26 +0,0 @@
1
- jQuery(document).ready(function($){
2
- $(function(){
3
- $(window).resize(function(){
4
- $('.rtb-booking-form form').each(function(){
5
- var thisForm = $(this);
6
- var formWidth = thisForm.width();
7
- if(formWidth < 900){
8
- thisForm.find('fieldset.reservation .rtb-select').css('left', '0');
9
- thisForm.find('fieldset.contact .rtb-text.phone').css('left', '0');
10
- }
11
- if(formWidth < 600){
12
- thisForm.find('fieldset.reservation .rtb-text.time').css('left', '0');
13
- thisForm.find('fieldset.contact .rtb-text.email').css('left', '0');
14
- }
15
- if(formWidth > 599){
16
- thisForm.find('fieldset.reservation .rtb-text.time').css('left', '-1px');
17
- thisForm.find('fieldset.contact .rtb-text.email').css('left', '-1px');
18
- }
19
- if(formWidth > 899){
20
- thisForm.find('fieldset.reservation .rtb-select').css('left', '-2px');
21
- thisForm.find('fieldset.contact .rtb-text.phone').css('left', '-2px');
22
- }
23
- });
24
- }).resize();
25
- });
26
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
assets/js/dashboard-review-ask.js ADDED
@@ -0,0 +1,64 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(function($) {
2
+ jQuery('.rtb-main-dashboard-review-ask').css('display', 'block');
3
+
4
+ jQuery('.rtb-main-dashboard-review-ask').on('click', function(event) {
5
+ if (jQuery(event.srcElement).hasClass('notice-dismiss')) {
6
+ var data = 'ask_review_time=3&action=rtb_hide_review_ask';
7
+ jQuery.post(ajaxurl, data, function() {});
8
+ }
9
+ });
10
+
11
+ jQuery('.rtb-review-ask-yes').on('click', function() {
12
+ jQuery('.rtb-review-ask-feedback-text').removeClass('rtb-hidden');
13
+ jQuery('.rtb-review-ask-starting-text').addClass('rtb-hidden');
14
+
15
+ jQuery('.rtb-review-ask-no-thanks').removeClass('rtb-hidden');
16
+ jQuery('.rtb-review-ask-review').removeClass('rtb-hidden');
17
+
18
+ jQuery('.rtb-review-ask-not-really').addClass('rtb-hidden');
19
+ jQuery('.rtb-review-ask-yes').addClass('rtb-hidden');
20
+
21
+ var data = 'ask_review_time=7&action=rtb_hide_review_ask';
22
+ jQuery.post(ajaxurl, data, function() {});
23
+ });
24
+
25
+ jQuery('.rtb-review-ask-not-really').on('click', function() {
26
+ jQuery('.rtb-review-ask-review-text').removeClass('rtb-hidden');
27
+ jQuery('.rtb-review-ask-starting-text').addClass('rtb-hidden');
28
+
29
+ jQuery('.rtb-review-ask-feedback-form').removeClass('rtb-hidden');
30
+ jQuery('.rtb-review-ask-actions').addClass('rtb-hidden');
31
+
32
+ var data = 'ask_review_time=1000&action=rtb_hide_review_ask';
33
+ jQuery.post(ajaxurl, data, function() {});
34
+ });
35
+
36
+ jQuery('.rtb-review-ask-no-thanks').on('click', function() {
37
+ var data = 'ask_review_time=1000&action=rtb_hide_review_ask';
38
+ jQuery.post(ajaxurl, data, function() {});
39
+
40
+ jQuery('.rtb-main-dashboard-review-ask').css('display', 'none');
41
+ });
42
+
43
+ jQuery('.rtb-review-ask-review').on('click', function() {
44
+ jQuery('.rtb-review-ask-feedback-text').addClass('rtb-hidden');
45
+ jQuery('.rtb-review-ask-thank-you-text').removeClass('rtb-hidden');
46
+
47
+ var data = 'ask_review_time=1000&action=rtb_hide_review_ask';
48
+ jQuery.post(ajaxurl, data, function() {});
49
+ });
50
+
51
+ jQuery('.rtb-review-ask-send-feedback').on('click', function() {
52
+ var feedback = jQuery('.rtb-review-ask-feedback-explanation textarea').val();
53
+ var email_address = jQuery('.rtb-review-ask-feedback-explanation input[name="feedback_email_address"]').val();
54
+ var data = 'feedback=' + feedback + '&email_address=' + email_address + '&action=rtb_send_feedback';
55
+ jQuery.post(ajaxurl, data, function() {});
56
+
57
+ var data = 'ask_review_time=1000&action=rtb_hide_review_ask';
58
+ jQuery.post(ajaxurl, data, function() {});
59
+
60
+ jQuery('.rtb-review-ask-feedback-form').addClass('rtb-hidden');
61
+ jQuery('.rtb-review-ask-review-text').addClass('rtb-hidden');
62
+ jQuery('.rtb-review-ask-thank-you-text').removeClass('rtb-hidden');
63
+ });
64
+ });
assets/js/plugin-deactivation.js ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(function($){
2
+ var $deactivateLink = $('#the-list').find('[data-slug="restaurant-reservations"] span.deactivate a'),
3
+ $overlay = $('#rtb-deactivate-survey-restaurant-reservations'),
4
+ $form = $overlay.find('form'),
5
+ formOpen = false;
6
+ // Plugin listing table deactivate link.
7
+ $deactivateLink.on('click', function(event) {
8
+ event.preventDefault();
9
+ $overlay.css('display', 'table');
10
+ formOpen = true;
11
+ $form.find('.rtb-deactivate-survey-option:first-of-type input[type=radio]').focus();
12
+ });
13
+ // Survey radio option selected.
14
+ $form.on('change', 'input[type=radio]', function(event) {
15
+ event.preventDefault();
16
+ $form.find('input[type=text], .error').hide();
17
+ $form.find('.rtb-deactivate-survey-option').removeClass('selected');
18
+ $(this).closest('.rtb-deactivate-survey-option').addClass('selected').find('input[type=text]').show();
19
+ });
20
+ // Survey Skip & Deactivate.
21
+ $form.on('click', '.rtb-deactivate-survey-deactivate', function(event) {
22
+ event.preventDefault();
23
+ location.href = $deactivateLink.attr('href');
24
+ });
25
+ // Survey submit.
26
+ $form.submit(function(event) {
27
+ event.preventDefault();
28
+ if (! $form.find('input[type=radio]:checked').val()) {
29
+ $form.find('.rtb-deactivate-survey-footer').prepend('<span class="error">Please select an option below</span>');
30
+ return;
31
+ }
32
+ var data = {
33
+ code: $form.find('.selected input[type=radio]').val(),
34
+ install_time: $form.data('installtime'),
35
+ reason: $form.find('.selected .rtb-deactivate-survey-option-reason').text(),
36
+ details: $form.find('.selected input[type=text]').val(),
37
+ site: grfwp_deactivation_data.site_url,
38
+ plugin: 'Five-Star Restaurant Reservations'
39
+ }
40
+ var submitSurvey = $.post('https://www.fivestarplugins.com/key-check/Deactivation_Surveys.php', data);
41
+ submitSurvey.always(function() {
42
+ location.href = $deactivateLink.attr('href');
43
+ });
44
+ });
45
+ // Exit key closes survey when open.
46
+ $(document).keyup(function(event) {
47
+ if (27 === event.keyCode && formOpen) {
48
+ $overlay.hide();
49
+ formOpen = false;
50
+ $deactivateLink.focus();
51
+ }
52
+ });
53
+ });
assets/js/rtb-recaptcha.js ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ var rtbLoadRecaptcha = function() {
2
+ grecaptcha.render('rtb_recaptcha', {
3
+ 'sitekey' : rtb_recaptcha.site_key
4
+ });
5
+ }
assets/js/stripe-payment.js ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ if ( rtb_stripe_payment.stripe_mode == 'test' ) { Stripe.setPublishableKey(rtb_stripe_payment.test_publishable_key); }
2
+ else { Stripe.setPublishableKey(rtb_stripe_payment.live_publishable_key); }
3
+
4
+ function stripeResponseHandler(status, response) {
5
+ if (response.error) {
6
+ // show errors returned by Stripe
7
+ jQuery(".payment-errors").html(response.error.message);
8
+ // re-enable the submit button
9
+ jQuery('#stripe-submit').attr("disabled", false);
10
+ } else {
11
+ var form$ = jQuery("#stripe-payment-form");
12
+ // token contains id, last4, and card type
13
+ var token = response['id'];
14
+ // insert the token into the form so it gets submitted to the server
15
+ form$.append("<input type='hidden' name='stripeToken' value='" + token + "'/>");
16
+ // and submit
17
+ form$.get(0).submit();
18
+ }
19
+ }
20
+ jQuery(document).ready(function($) {
21
+ $("#stripe-payment-form").submit(function(event) {
22
+ // disable the submit button to prevent repeated clicks
23
+ $('#stripe-submit').attr("disabled", "disabled");
24
+
25
+ // send the card details to Stripe
26
+ Stripe.createToken({
27
+ number: $('input[data-stripe="card_number"]').val(),
28
+ cvc: $('input[data-stripe="card_cvc"]').val(),
29
+ exp_month: $('input[data-stripe="exp_month"]').val(),
30
+ exp_year: $('input[data-stripe="exp_year"]').val(),
31
+ currency: $('input[data-stripe="currency"]').val()
32
+ }, stripeResponseHandler);
33
+
34
+ // prevent the form from submitting with the default action
35
+ return false;
36
+ });
37
+ });
assets/js/stripe.js ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ /*! stripe-js 17-08-2016 */
2
+ (function(){var a,b,c,d,e,f,g,h,i,j={}.hasOwnProperty,k=function(a,b){function c(){this.constructor=a}for(var d in b)j.call(b,d)&&(a[d]=b[d]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a};if(g="https://js.stripe.com",c="https://js.stripe.com",d=!!/stripe\.com$/.test("undefined"!=typeof window&&null!==window?window.location.host:void 0),b="console"in window&&"warn"in window.console,!d&&"querySelectorAll"in document&&b&&(f=document.querySelectorAll('script[src^="'+g+'"]'),f.length||console.warn("It looks like Stripe.js is not being loaded from https://js.stripe.com. Stripe does not support serving Stripe.js from your own domain.")),this.Stripe)return!b||this.Stripe.isDoubleLoaded||this.Stripe.earlyError||console.warn("It looks like Stripe.js was loaded more than one time. Please only load it once per page."),void(this.Stripe.isDoubleLoaded=!0);this.Stripe=function(){function a(){}return a.version=2,a.endpoint="https://api.stripe.com/v1",a.setPublishableKey=function(b){return a.key=b,a.utils.validateProtocol(a.key)},a._language="en-US",a.setLanguage=function(b){return a._language=b},a._allowedCustomHeaders=["X-Stripe-Livemode","Authorization"],a._customHeaders={},a._setCustomHeader=function(a,b){var c,d,e,f,g;for(d=!1,g=this._allowedCustomHeaders,e=0,f=g.length;e<f;e++)if(c=g[e],c===a){this._customHeaders[a]=b,d=!0;break}return d},a.trackPerf=!1,a._isChannel="#__stripe_transport__"===("undefined"!=typeof window&&null!==window?window.location.hash:void 0),a._isSafeStripeDomain=d,a._iframeOnAmount=1,a._isSafeDomain=function(){return"#__forcedss3__"!==window.location.hash&&(!(!a._isSafeStripeDomain&&!window.StripeTemporaryNoDSS3)||a._iframeOnAmount<Math.random())}(),a._finalTransport="undefined"!=typeof window&&null!==window&&"XMLHttpRequest"in window&&"withCredentials"in new XMLHttpRequest?"cors":"jsonp",a._transport=a._isChannel||a._isSafeDomain?a._finalTransport:"iframe",a._fallBackToOldStripeJsTechniques=function(){return this._transport="jsonp",this._finalTransport="jsonp",this._isSafeDomain="true"},a._iframeRequestQueue=[],a._iframePendingRequests={},a._iframeChannelStatus="pending",a._iframeChannelComplete=function(b){var c,d,e,f;for(this._iframeChannelStatus=b?"success":"failure","failure"===this._iframeChannelStatus&&this._fallBackToOldStripeJsTechniques(),d=this._iframeRequestQueue,delete this._iframeRequestQueue,this._iframeRequestQueue=[],e=0,f=d.length;e<f;e++)c=d[e],this.request(c,!0);this._iframeChannelComplete=function(){return a.reportError("CompleteDuplicationError")}},a.request=function(a,b){return this.trackPerf&&a.tokenType?this._instrumentedRequest(a,b):this._rawRequest(a,b)},a._rawRequest=function(b,c){var d,e,f;if(b.data||(b.data={}),e="POST"===b.method&&"object"==typeof(null!=(f=b.data)?f.card:void 0),c||(null!=b.data.payment_user_agent?this._isChannel||(b.data.payment_user_agent=""+b.data.payment_user_agent+" ("+a.stripejs_ua+")"):b.data.payment_user_agent=a.stripejs_ua),"iframe"===this._transport){if(e)return"pending"===this._iframeChannelStatus?this._iframeRequestQueue.push(b):"failure"===this._iframeChannelStatus?this.ajaxJSONP(b):this.iframe(b);if("cors"===this._finalTransport)try{return this.xhr(b)}catch(g){return d=g,this._transport="jsonp",this.request(b,!0)}return this.ajaxJSONP(b)}if("cors"===this._transport)try{return this.xhr(b)}catch(g){return d=g,a.reportError("XhrThrewError"),this._transport="jsonp",this.request(b,!0)}return this.ajaxJSONP(b)},a.reportError=function(b,c){var d;return"console"in window&&"warn"in window.console,1,d=Math.round((new Date).getTime()/1e3),(new Image).src="https://q.stripe.com?event=stripejs-error&type="+encodeURIComponent(b)+(c?"&timing="+c:"")+"&key="+a.key+"&timestamp="+d+"&payment_user_agent="+encodeURIComponent(a.stripejs_ua)},a._instrumentedRequest=function(b,c){var d,e;return d=(new Date).getTime(),e=function(c){return function(e,f){var g,h,i,j,k;return j=null!=(k=b.tokenType)?k:"unknown",g=(new Date).getTime(),h=c._getResourceTiming(null!=e?e.responseURL:void 0),i={event:"rum.stripejs",tokenType:j,url:b.url,status:f,start:d,end:g,resourceTiming:h},a.logRUM(i)}}(this),b.success=function(a){return function(b,c,d){return e(d,c),a.apply(this,arguments)}}(b.success),b.complete=function(a){return function(b,c,d){return"success"!==b&&e(c,b),a.apply(this,arguments)}}(b.complete),this._rawRequest(b,c)},a._getResourceTiming=function(a){var b;switch(b="undefined"!=typeof performance&&null!==performance&&"function"==typeof performance.getEntriesByName?performance.getEntriesByName(a):void 0,!1){case 1!==(null!=b?b.length:void 0):return this._sanitizeResourceTiming(b[0]);case 0!==(null!=b?b.length:void 0):return{errorMsg:"No resource timing entries found"};case null==(null!=b?b.length:void 0):return{errorMsg:"More than one resource timing entry"};default:return null}},a._resourceTimingWhitelist=["connectEnd","connectStart","domainLookupEnd","domainLookupStart","duration","fetchStart","redirectEnd","redirectStart","requestStart","responseEnd","responseStart","secureConnectionStart","startTime"],a._sanitizeResourceTiming=function(a){var b,c,d,e,f;for(c={},f=this._resourceTimingWhitelist,d=0,e=f.length;d<e;d++)b=f[d],a[b]&&(c[b]=a[b]);return c},a.logRUM=function(b){return(new Image).src="https://q.stripe.com/?"+a.utils.serialize(b)},a.complete=function(b,c){return function(d,e,f){if("success"!==d)return a.reportError("Complete500-"+d),"function"==typeof b?b(500,{error:{code:d,type:d,message:c}}):void 0}},a._iframeBaseUrl=c,a._stripejsBaseUrl=g,a._relayResponse=function(b,c,d){return a._socket.postMessage(a.JSON.stringify({code:c,resp:d,requestId:b}))},a._callCount=0,a._callCache={},a._receiveChannelRelay=function(b,c){var d,e,f,g;if(f=a._iframeBaseUrl.replace(/^https?:\/\//,"").replace(/\/.*$/,""),g=c.replace(/^https?:\/\//,"").replace(/\/.*$/,""),g===f&&"string"==typeof b){try{e=a.JSON.parse(b)}catch(h){throw d=h,a.reportError("InvalidJSON-ChannelRelay"),new Error("Stripe.js received invalid JSON")}if("function"==typeof a._callCache[e.requestId])return a._callCache[e.requestId](e.resp,e.code),delete a._callCache[e.requestId]}},a._channelListener=function(b,c){var d,e,f,g;if("string"==typeof b){try{g=a.JSON.parse(b)}catch(h){throw e=h,a.reportError("InvalidJSON-ChannelListener"),new Error("Stripe.js received invalid JSON")}if(d=g.data.card,delete g.data.card,f=g.headers["Accept-Language"],d)return a.setPublishableKey(g.data.key),f&&a.setLanguage(f),null!=g.endpoint&&(a.endpoint=g.endpoint),null!=g.trackPerf&&(a.trackPerf=g.trackPerf),a.card.createToken(d,g.data,function(b,c){return a._relayResponse(g.requestId,b,c)});throw a.reportError("InvalidChannelUse-NonCard"),new Error("Stripe.js iframe transport used for non-card request")}},a}(),this.Stripe.token=function(){function a(){}return a.validate=function(a,b){if(!a)throw b+" required";if("object"!=typeof a)throw b+" invalid"},a.formatData=function(a,b){var c,d,e;Stripe.utils.isElement(a)&&(a=Stripe.utils.paramsFromForm(a,b));for(c in a)d=a[c],null==d&&delete a[c];if(Stripe.utils.underscoreKeys(a),"string"==typeof a.exp){try{e=Stripe.utils.parseExpString(a.exp),a.exp_month=e[0],a.exp_year=e[1]}catch(f){a.exp_month=0,a.exp_year=0}delete a.exp}return a},a.create=function(a,b){var c,d;return a.key||(a.key=Stripe.key||Stripe.publishableKey),Stripe.utils.validateKey(a.key),d=function(){switch(!1){case null==a.card:return"card";case null==a.bank_account:return"bank_account";case null==a.pii:return"pii";case null==a.apple_pay:return"apple_pay";default:return"unknown"}}(),delete a.apple_pay,c={url:""+Stripe.endpoint+"/tokens",data:a,method:"POST",headers:{},success:function(a,c){return"function"==typeof b?b(c,a):void 0},complete:Stripe.complete(b,"A network error has occurred, and you have not been charged. Please try again."),timeout:4e4,tokenType:d},Stripe._language&&(c.headers["Accept-Language"]=Stripe._language),Stripe.request(c)},a.get=function(a,b){if(!a)throw new Error("token required");return Stripe.utils.validateKey(Stripe.key),Stripe.request({url:""+Stripe.endpoint+"/tokens/"+a,data:{key:Stripe.key},success:function(a,c){return"function"==typeof b?b(c,a):void 0},complete:Stripe.complete(b,"A network error has occurred loading data from Stripe. Please try again."),timeout:4e4})},a}(),this.Stripe.card=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return k(b,a),b.tokenName="card",b.whitelistedAttrs=["number","cvc","exp","exp_month","exp_year","name","address_line1","address_line2","address_city","address_state","address_zip","address_country","currency"],b.createToken=function(a,c,d){var e;return null==c&&(c={}),Stripe.token.validate(a,"card"),"function"==typeof c?(d=c,c={}):"object"!=typeof c&&(e=parseInt(c,10),c={},e>0&&(c.amount=e)),c[b.tokenName]=Stripe.token.formatData(a,b.whitelistedAttrs),Stripe.token.create(c,d)},b.getToken=function(a,b){return Stripe.token.get(a,b)},b.validateCardNumber=function(a){return a=(a+"").replace(/\s+|-/g,""),a.length>=10&&a.length<=16&&b.luhnCheck(a)},b.validateCVC=function(a){return a=Stripe.utils.trim(a),/^\d+$/.test(a)&&a.length>=3&&a.length<=4},b.validateExpiry=function(a,b){var c,d,e,f;if(null!=b)e=Stripe.utils.trim(a),b=Stripe.utils.trim(b);else{try{f=Stripe.utils.parseExpString(a),e=f[0],b=f[1]}catch(g){return!1}e+="",b+=""}return!!/^\d+$/.test(e)&&(!!/^\d+$/.test(b)&&(1<=e&&e<=12&&(2===b.length&&(b=b<70?"20"+b:"19"+b),4===b.length&&(d=new Date(b,e),c=new Date,d.setMonth(d.getMonth()-1),d.setMonth(d.getMonth()+1,1),d>c))))},b.luhnCheck=function(a){var b,c,d,e,f,g;for(d=!0,e=0,c=(a+"").split("").reverse(),f=0,g=c.length;f<g;f++)b=c[f],b=parseInt(b,10),(d=!d)&&(b*=2),b>9&&(b-=9),e+=b;return e%10===0},b.cardType=function(a){return b.cardTypes[a.slice(0,2)]||"Unknown"},b.cardBrand=function(a){return b.cardType(a)},b.cardTypes=function(){var a,b,c,d;for(b={},a=c=40;c<=49;a=++c)b[a]="Visa";for(a=d=50;d<=59;a=++d)b[a]="MasterCard";return b[34]=b[37]="American Express",b[60]=b[62]=b[64]=b[65]="Discover",b[35]="JCB",b[30]=b[36]=b[38]=b[39]="Diners Club",b}(),b}(this.Stripe.token),this.Stripe.bankAccount=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return k(b,a),b.tokenName="bank_account",b.whitelistedAttrs=["country","currency","routing_number","account_number","name","account_holder_type","account_holder_name"],b.createToken=function(a,c,d){return null==c&&(c={}),Stripe.token.validate(a,"bank account"),"function"==typeof c&&(d=c,c={}),c[b.tokenName]=Stripe.token.formatData(a,b.whitelistedAttrs),Stripe.token.create(c,d)},b.getToken=function(a,b){return Stripe.token.get(a,b)},b.validateRoutingNumber=function(a,c){switch(a=Stripe.utils.trim(a),c){case"US":return/^\d+$/.test(a)&&9===a.length&&b.routingChecksum(a);case"CA":return/\d{5}\-\d{3}/.test(a)&&9===a.length;default:return!0}},b.validateAccountNumber=function(a,b){switch(a=Stripe.utils.trim(a),b){case"US":return/^\d+$/.test(a)&&a.length>=1&&a.length<=17;default:return!0}},b.routingChecksum=function(a){var b,c,d,e,f,g;for(d=0,b=(a+"").split(""),g=[0,3,6],e=0,f=g.length;e<f;e++)c=g[e],d+=3*parseInt(b[c]),d+=7*parseInt(b[c+1]),d+=parseInt(b[c+2]);return 0!==d&&d%10===0},b}(this.Stripe.token),this.Stripe.piiData=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return k(b,a),b.tokenName="pii",b.whitelistedAttrs=["personal_id_number"],b.createToken=function(a,c,d){return null==c&&(c={}),Stripe.token.validate(a,"pii data"),"function"==typeof c&&(d=c,c={}),c[b.tokenName]=Stripe.token.formatData(a,b.whitelistedAttrs),Stripe.token.create(c,d)},b.getToken=function(a,b){return Stripe.token.get(a,b)},b}(this.Stripe.token),this.Stripe._poller=function(){function a(){}return a._activePolls={},a._clearPoll=function(b){return delete a._activePolls[b]},a._defaultPollInterval=1500,a._maxPollInterval=24e3,a._initPoll=function(b){if(null!=a._activePolls[b])throw new Error("You are already polling "+b+". Please cancel that poll before polling it again.");return a._activePolls[b]={}},a._poll=function(b,c,d,e,f){c(b,function(g,h){var i;if(null!=a._activePolls[b])return g>=400&&g<500?(a._clearPoll(b),"function"==typeof f?f(g,h):void 0):200===g&&e(b,h)?(a._clearPoll(b),"function"==typeof f?f(g,h):void 0):(200===g&&d(b,h)&&"function"==typeof f&&f(g,h),500===g&&2*a._activePolls[b].interval<=a._maxPollInterval?a._activePolls[b].interval*=2:g>=200&&g<500&&(a._activePolls[b].interval=a._defaultPollInterval),i=setTimeout(function(){return a._poll(b,c,d,e,f)},a._activePolls[b].interval),a._activePolls[b].timeoutId=i)})},a._cancelPoll=function(b){var c;if(c=a._activePolls[b],null==c)throw new Error("You are not polling "+b+".");null!=c.timeoutId&&clearTimeout(c.timeoutId),a._clearPoll(b)},a}(),this.Stripe.bitcoinReceiver=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return k(b,a),b._whitelistedAttrs=["amount","currency","email","description"],b.createReceiver=function(a,b){var c;return Stripe.token.validate(a,"bitcoin_receiver data"),c=Stripe.token.formatData(a,this._whitelistedAttrs),c.key=Stripe.key||Stripe.publishableKey,Stripe.utils.validateKey(c.key),Stripe.request({url:""+Stripe.endpoint+"/bitcoin/receivers",data:c,method:"POST",success:function(a,c){return"function"==typeof b?b(c,a):void 0},complete:Stripe.complete(b,"A network error has occurred while creating a Bitcoin address. Please try again."),timeout:4e4})},b.getReceiver=function(a,b){var c;if(!a)throw new Error("receiver id required");return c=Stripe.key||Stripe.publishableKey,Stripe.utils.validateKey(c),Stripe.request({url:""+Stripe.endpoint+"/bitcoin/receivers/"+a,data:{key:c},success:function(a,c){return"function"==typeof b?b(c,a):void 0},complete:Stripe.complete(b,"A network error has occurred loading data from Stripe. Please try again."),timeout:4e4})},b.pollReceiver=function(a,b){return this._initPoll(a),this._poll(a,function(a){return function(b,c){return a.getReceiver(b,c)}}(this),function(a,b){return!1},function(a,b){return b.filled},b)},b.cancelReceiverPoll=function(a){return b._cancelPoll(a)},b}(this.Stripe._poller),this.Stripe.source=function(a){function b(){return b.__super__.constructor.apply(this,arguments)}return k(b,a),b.get=function(a,b,c){var d,e;if(!a)throw new Error("sourceId required");if(!b)throw new Error("clientSecret required");return d=Stripe.key||Stripe.publishableKey,Stripe.utils.validateKey(d),e={},e.key=d,e.client_secret=b,Stripe.request({url:""+Stripe.endpoint+"/sources/"+a,data:e,success:function(a,b){return"function"==typeof c?c(b,a):void 0},complete:Stripe.complete(c,"A network error has occurred loading data from Stripe. Please try again."),timeout:4e4})},b.poll=function(a,b,c){return this._initPoll(a),this._poll(a,function(a){return function(c,d){return a.get(c,b,d)}}(this),function(a){return function(b,c){return a._activePolls[b].source_status!==c.status&&(a._activePolls[b].source_status=c.status,!0)}}(this),function(a,b){return!1},c)},b.cancelPoll=function(a){return this._cancelPoll(a)},b}(this.Stripe._poller),this.Stripe.threeDSecure=function(){function a(){}return a.create=function(a,b){var c;if("object"!=typeof a)throw new Error("params must be an object.");if("function"!=typeof b)throw new Error("callback must be a function.");return a.key||(a.key=Stripe.key||Stripe.publishableKey),a.return_url||(a.return_url="_callback"),Stripe.utils.validateKey(a.key),c={url:""+Stripe.endpoint+"/3d_secure",data:a,method:"POST",headers:{},success:function(a,c){return"function"==typeof b?b(c,a):void 0},complete:Stripe.complete(b,"A network error has occurred, and you have not been charged. Please try again."),timeout:4e4,tokenType:"three_d_secure"},Stripe._language&&(c.headers["Accept-Language"]=Stripe._language),Stripe.request(c),null},a.createIframe=function(a,b,c){var d,e;if(e=null,!Stripe.validator.isUrl(a))throw new Error("redirectUrl must be a valid URL.");if(!Stripe.validator.isElementOrId(b))throw new Error("parentElement must be a DOM Element, or the ID of a DOM element.");if("function"!=typeof c)throw new Error("callback must be a function.");return d=function(a,b){var d,f;try{f=Stripe.JSON.parse(a)}catch(g){throw d=g,Stripe.reportError("InvalidJSON-3DSecureCallback"),new Error("Stripe.js received invalid JSON")}return e.destroy(),c(f)},e=new Stripe.easyXDM.Socket({swf:""+Stripe._iframeBaseUrl+"/v2/stripexdm.swf",remote:a,onMessage:d,container:b}),null},a}(),this.Stripe.applePay=function(){function a(){}return a.checkAvailability=function(a){var b;if(null==a)throw new Error("This function executes asynchronously; please pass it a callback function.");return(null!=(b=window.ApplePaySession)?b.canMakePayments():void 0)?ApplePaySession.canMakePaymentsWithActiveCard("merchant."+window.location.hostname+".stripe").then(function(b){return a(b)}):void a(!1)},a.buildSession=function(a,b,c){var d,e,f,g;if(null==window.ApplePaySession)throw new Error("Apple Pay is not supported in this browser. You should check the result of Stripe.applePay.checkAvailability before calling this method");return a.supportedNetworks=["amex","discover","masterCard","visa"],a.merchantCapabilities||(a.merchantCapabilities=["supports3DS"]),e=null!=(g=a.shippingMethods)?g[0]:void 0,f=new ApplePaySession(1,a),d=function(a){var b;return b=(null!=a?a.error:void 0)||{message:"Something went wrong validating your Apple Pay Session."},null!=b.message&&console.warn(b.message),f.abort(),"function"==typeof c?c(b):void 0},f.addEventListener("shippingmethodselected",function(a){return e=a.shippingMethod}),f.addEventListener("validatemerchant",function(b){var c;return c={method:"POST",url:""+Stripe.endpoint+"/apple_pay/sessions",data:{key:Stripe.key||Stripe.publishableKey,validation_url:b.validationURL,domain_name:window.location.hostname,display_name:a.total.label},success:function(a,b){var c;return null!=a.session?(c=Stripe.JSON.parse(a.session),f.completeMerchantValidation(c)):d(a)},complete:function(a,b,c){if("success"!==a)return d(b)},timeout:4e4},Stripe.request(c)}),f.addEventListener("paymentauthorized",function(a){return Stripe.applePay.createToken(a.payment,function(d,g){var h;return null!=g.error?(f.completePayment(ApplePaySession.STATUS_FAILURE),"function"==typeof c?c(g.error):void 0):(h={token:g},null!=e&&(h.shippingMethod=e),null!=a.payment.shippingContact&&(h.shippingContact=a.payment.shippingContact),b(h,function(a){return a?f.completePayment(ApplePaySession.STATUS_SUCCESS):f.completePayment(ApplePaySession.STATUS_FAILURE)}))})}),f},a.createToken=function(a,b){var c,d,e;return c={apple_pay:!0,pk_token:Stripe.JSON.stringify(a.token.paymentData),pk_token_transaction_id:a.token.transactionIdentifier,pk_token_payment_network:a.token.paymentMethod.network,pk_token_instrument_name:a.token.paymentMethod.displayName},null!=a.billingContact&&(c.card={name:[a.billingContact.givenName,a.billingContact.familyName].join(" ").trim(),address_line1:null!=(d=a.billingContact.addressLines)?d[0]:void 0,address_line2:null!=(e=a.billingContact.addressLines)?e[1]:void 0,address_city:a.billingContact.locality,address_state:a.billingContact.administrativeArea,address_zip:a.billingContact.postalCode,address_country:a.billingContact.countryCode}),Stripe.token.create(c,b)},a}(),a=["createToken","getToken","cardType","validateExpiry","validateCVC","validateCardNumber"];for(h=0,i=a.length;h<i;h++)e=a[h],this.Stripe[e]=this.Stripe.card[e];this.Stripe.stripejs_ua="stripe.js/47e2c03","undefined"!=typeof module&&null!==module&&(module.exports=this.Stripe),"function"==typeof define&&define("stripe",[],function(a){return function(){return a.Stripe}}(this))}).call(this),function(){this.Stripe.isDoubleLoaded||function(a){function b(a,e){function f(a){if(f[a]!==q)return f[a];var b;if("bug-string-char-index"==a)b="a"!="a"[0];else if("json"==a)b=f("json-stringify")&&f("json-parse");else{var c,d='{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}';if("json-stringify"==a){var i=e.stringify,k="function"==typeof i&&t;if(k){(c=function(){return 1}).toJSON=c;try{k="0"===i(0)&&"0"===i(new g)&&'""'==i(new h)&&i(s)===q&&i(q)===q&&i()===q&&"1"===i(c)&&"[1]"==i([c])&&"[null]"==i([q])&&"null"==i(null)&&"[null,null,null]"==i([q,s,null])&&i({a:[c,!0,!1,null,"\0\b\n\f\r\t"]})==d&&"1"===i(null,c)&&"[\n 1,\n 2\n]"==i([1,2],null,1)&&'"-271821-04-20T00:00:00.000Z"'==i(new j((-864e13)))&&'"+275760-09-13T00:00:00.000Z"'==i(new j(864e13))&&'"-000001-01-01T00:00:00.000Z"'==i(new j((-621987552e5)))&&'"1969-12-31T23:59:59.999Z"'==i(new j((-1)))}catch(l){k=!1}}b=k}if("json-parse"==a){var m=e.parse;if("function"==typeof m)try{if(0===m("0")&&!m(!1)){c=m(d);var n=5==c.a.length&&1===c.a[0];if(n){try{n=!m('"\t"')}catch(l){}if(n)try{n=1!==m("01")}catch(l){}if(n)try{n=1!==m("1.")}catch(l){}}}}catch(l){n=!1}b=n}}return f[a]=!!b}a||(a=d.Object()),e||(e=d.Object());var g=a.Number||d.Number,h=a.String||d.String,i=a.Object||d.Object,j=a.Date||d.Date,k=a.SyntaxError||d.SyntaxError,l=a.TypeError||d.TypeError,m=a.Math||d.Math,n=a.JSON||d.JSON;"object"==typeof n&&n&&(e.stringify=n.stringify,e.parse=n.parse);var o,p,q,r=i.prototype,s=r.toString,t=new j((-0xc782b5b800cec));try{t=t.getUTCFullYear()==-109252&&0===t.getUTCMonth()&&1===t.getUTCDate()&&10==t.getUTCHours()&&37==t.getUTCMinutes()&&6==t.getUTCSeconds()&&708==t.getUTCMilliseconds()}catch(u){}if(!f("json")){var v="[object Function]",w="[object Date]",x="[object Number]",y="[object String]",z="[object Array]",A="[object Boolean]",B=f("bug-string-char-index");if(!t)var C=m.floor,D=[0,31,59,90,120,151,181,212,243,273,304,334],E=function(a,b){return D[b]+365*(a-1970)+C((a-1969+(b=+(b>1)))/4)-C((a-1901+b)/100)+C((a-1601+b)/400)};if((o=r.hasOwnProperty)||(o=function(a){var b,c={};return(c.__proto__=null,c.__proto__={toString:1},c).toString!=s?o=function(a){var b=this.__proto__,c=a in(this.__proto__=null,this);return this.__proto__=b,c}:(b=c.constructor,o=function(a){var c=(this.constructor||b).prototype;return a in this&&!(a in c&&this[a]===c[a])}),c=null,o.call(this,a)}),p=function(a,b){var d,e,f,g=0;(d=function(){this.valueOf=0}).prototype.valueOf=0,e=new d;for(f in e)o.call(e,f)&&g++;return d=e=null,g?p=2==g?function(a,b){var c,d={},e=s.call(a)==v;for(c in a)e&&"prototype"==c||o.call(d,c)||!(d[c]=1)||!o.call(a,c)||b(c)}:function(a,b){var c,d,e=s.call(a)==v;for(c in a)e&&"prototype"==c||!o.call(a,c)||(d="constructor"===c)||b(c);(d||o.call(a,c="constructor"))&&b(c)}:(e=["valueOf","toString","toLocaleString","propertyIsEnumerable","isPrototypeOf","hasOwnProperty","constructor"],p=function(a,b){var d,f,g=s.call(a)==v,h=!g&&"function"!=typeof a.constructor&&c[typeof a.hasOwnProperty]&&a.hasOwnProperty||o;for(d in a)g&&"prototype"==d||!h.call(a,d)||b(d);for(f=e.length;d=e[--f];h.call(a,d)&&b(d));}),p(a,b)},!f("json-stringify")){var F={92:"\\\\",34:'\\"',8:"\\b",12:"\\f",10:"\\n",13:"\\r",9:"\\t"},G="000000",H=function(a,b){return(G+(b||0)).slice(-a)},I="\\u00",J=function(a){for(var b='"',c=0,d=a.length,e=!B||d>10,f=e&&(B?a.split(""):a);c<d;c++){var g=a.charCodeAt(c);switch(g){case 8:case 9:case 10:case 12:case 13:case 34:case 92:b+=F[g];break;default:if(g<32){b+=I+H(2,g.toString(16));break}b+=e?f[c]:a.charAt(c)}}return b+'"'},K=function(a,b,c,d,e,f,g){var h,i,j,k,m,n,r,t,u,v,B,D,F,G,I,L;try{h=b[a]}catch(M){}if("object"==typeof h&&h)if(i=s.call(h),i!=w||o.call(h,"toJSON"))"function"==typeof h.toJSON&&(i!=x&&i!=y&&i!=z||o.call(h,"toJSON"))&&(h=h.toJSON(a));else if(h>-1/0&&h<1/0){if(E){for(m=C(h/864e5),j=C(m/365.2425)+1970-1;E(j+1,0)<=m;j++);for(k=C((m-E(j,0))/30.42);E(j,k+1)<=m;k++);m=1+m-E(j,k),n=(h%864e5+864e5)%864e5,r=C(n/36e5)%24,t=C(n/6e4)%60,u=C(n/1e3)%60,v=n%1e3}else j=h.getUTCFullYear(),k=h.getUTCMonth(),m=h.getUTCDate(),r=h.getUTCHours(),t=h.getUTCMinutes(),u=h.getUTCSeconds(),v=h.getUTCMilliseconds();h=(j<=0||j>=1e4?(j<0?"-":"+")+H(6,j<0?-j:j):H(4,j))+"-"+H(2,k+1)+"-"+H(2,m)+"T"+H(2,r)+":"+H(2,t)+":"+H(2,u)+"."+H(3,v)+"Z"}else h=null;if(c&&(h=c.call(b,a,h)),null===h)return"null";if(i=s.call(h),i==A)return""+h;if(i==x)return h>-1/0&&h<1/0?""+h:"null";if(i==y)return J(""+h);if("object"==typeof h){for(G=g.length;G--;)if(g[G]===h)throw l();if(g.push(h),B=[],I=f,f+=e,i==z){for(F=0,G=h.length;F<G;F++)D=K(F,h,c,d,e,f,g),B.push(D===q?"null":D);L=B.length?e?"[\n"+f+B.join(",\n"+f)+"\n"+I+"]":"["+B.join(",")+"]":"[]"}else p(d||h,function(a){var b=K(a,h,c,d,e,f,g);b!==q&&B.push(J(a)+":"+(e?" ":"")+b)}),L=B.length?e?"{\n"+f+B.join(",\n"+f)+"\n"+I+"}":"{"+B.join(",")+"}":"{}";return g.pop(),L}};e.stringify=function(a,b,d){var e,f,g,h;if(c[typeof b]&&b)if((h=s.call(b))==v)f=b;else if(h==z){g={};for(var i,j=0,k=b.length;j<k;i=b[j++],h=s.call(i),(h==y||h==x)&&(g[i]=1));}if(d)if((h=s.call(d))==x){if((d-=d%1)>0)for(e="",d>10&&(d=10);e.length<d;e+=" ");}else h==y&&(e=d.length<=10?d:d.slice(0,10));return K("",(i={},i[""]=a,i),f,g,e,"",[])}}if(!f("json-parse")){var L,M,N=h.fromCharCode,O={92:"\\",34:'"',47:"/",98:"\b",116:"\t",110:"\n",102:"\f",114:"\r"},P=function(){throw L=M=null,k()},Q=function(){for(var a,b,c,d,e,f=M,g=f.length;L<g;)switch(e=f.charCodeAt(L)){case 9:case 10:case 13:case 32:L++;break;case 123:case 125:case 91:case 93:case 58:case 44:return a=B?f.charAt(L):f[L],L++,a;case 34:for(a="@",L++;L<g;)if(e=f.charCodeAt(L),e<32)P();else if(92==e)switch(e=f.charCodeAt(++L)){case 92:case 34:case 47:case 98:case 116:case 110:case 102:case 114:a+=O[e],L++;break;case 117:for(b=++L,c=L+4;L<c;L++)e=f.charCodeAt(L),e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70||P();a+=N("0x"+f.slice(b,L));break;default:P()}else{if(34==e)break;for(e=f.charCodeAt(L),b=L;e>=32&&92!=e&&34!=e;)e=f.charCodeAt(++L);a+=f.slice(b,L)}if(34==f.charCodeAt(L))return L++,a;P();default:if(b=L,45==e&&(d=!0,e=f.charCodeAt(++L)),e>=48&&e<=57){for(48==e&&(e=f.charCodeAt(L+1),e>=48&&e<=57)&&P(),d=!1;L<g&&(e=f.charCodeAt(L),e>=48&&e<=57);L++);if(46==f.charCodeAt(L)){for(c=++L;c<g&&(e=f.charCodeAt(c),e>=48&&e<=57);c++);c==L&&P(),L=c}if(e=f.charCodeAt(L),101==e||69==e){for(e=f.charCodeAt(++L),43!=e&&45!=e||L++,c=L;c<g&&(e=f.charCodeAt(c),e>=48&&e<=57);c++);c==L&&P(),L=c}return+f.slice(b,L)}if(d&&P(),"true"==f.slice(L,L+4))return L+=4,!0;if("false"==f.slice(L,L+5))return L+=5,!1;if("null"==f.slice(L,L+4))return L+=4,null;P()}return"$"},R=function(a){var b,c;if("$"==a&&P(),"string"==typeof a){if("@"==(B?a.charAt(0):a[0]))return a.slice(1);if("["==a){for(b=[];a=Q(),"]"!=a;c||(c=!0))c&&(","==a?(a=Q(),"]"==a&&P()):P()),","==a&&P(),b.push(R(a));return b}if("{"==a){for(b={};a=Q(),"}"!=a;c||(c=!0))c&&(","==a?(a=Q(),"}"==a&&P()):P()),","!=a&&"string"==typeof a&&"@"==(B?a.charAt(0):a[0])&&":"==Q()||P(),b[a.slice(1)]=R(Q());return b}P()}return a},S=function(a,b,c){var d=T(a,b,c);d===q?delete a[b]:a[b]=d},T=function(a,b,c){var d,e=a[b];if("object"==typeof e&&e)if(s.call(e)==z)for(d=e.length;d--;)S(e,d,c);else p(e,function(a){S(e,a,c)});return c.call(a,b,e)};e.parse=function(a,b){var c,d;return L=0,M=""+a,c=R(Q()),"$"!=Q()&&P(),L=M=null,b&&s.call(b)==v?T((d={},d[""]=c,d),"",b):c}}}return e.runInContext=b,e}var c={"function":!0,object:!0},d=this,e=b(a,d);d.JSON={parse:e.parse,stringify:e.stringify}}.call(Stripe,this)}.call(this),function(){this.Stripe.isDoubleLoaded||!function(a,b,c,d,e,f){function g(a,b){var c=typeof a[b];return"function"==c||!("object"!=c||!a[b])||"unknown"==c}function h(){var a="Shockwave Flash",b="application/x-shockwave-flash";if(!p(navigator.plugins)&&"object"==typeof navigator.plugins[a]){var c=navigator.plugins[a].description;c&&!p(navigator.mimeTypes)&&navigator.mimeTypes[b]&&navigator.mimeTypes[b].enabledPlugin&&(x=c.match(/\d+/g))}if(!x){var d;try{d=new ActiveXObject("ShockwaveFlash.ShockwaveFlash"),x=Array.prototype.slice.call(d.GetVariable("$version").match(/(\d+),(\d+),(\d+),(\d+)/),1),d=null}catch(e){}}if(!x)return!1;var f=parseInt(x[0],10),g=parseInt(x[1],10);return y=f>9&&g>0,!0}function i(){if(!L){L=!0;for(var a=0;a<M.length;a++)M[a]();M.length=0}}function j(a,b){return L?void a.call(b):void M.push(function(){a.call(b)})}function k(a){return a.match(D)[3]}function l(a){return a.match(D)[4]||""}function m(a){var b,c,d=a.toLowerCase().match(D),e="",f="";try{b=d[2],c=d[3],e=d[4]||"",("http:"==b&&":80"==e||"https:"==b&&":443"==e)&&(e=""),f=b+"//"+c+e}catch(g){f=a}return f}function n(a){if(a=a.replace(F,"$1/"),!a.match(/^(http||https):\/\//)){var b="/"===a.substring(0,1)?"":c.pathname;"/"!==b.substring(b.length-1)&&(b=b.substring(0,b.lastIndexOf("/")+1)),a=c.protocol+"//"+c.host+b+a}for(;E.test(a);)a=a.replace(E,"");return a}function o(a,b){var c="",d=a.indexOf("#");d!==-1&&(c=a.substring(d),a=a.substring(0,d));var e,g=[];for(var h in b)b.hasOwnProperty(h)&&(e="stripe_"+h,g.push(e+"="+f(b[h])));return a+(J?"#":a.indexOf("?")==-1?"?":"&")+g.join("&")+c}function p(a){return"undefined"==typeof a}function q(a,b,c){var d;for(var e in b)b.hasOwnProperty(e)&&(e in a?(d=b[e],"object"==typeof d?q(a[e],d,c):c||(a[e]=b[e])):a[e]=b[e]);return a}function r(){var a=b.body.appendChild(b.createElement("form")),c=a.appendChild(b.createElement("input"));c.name=I+"TEST"+C,w=c!==a.elements[c.name],b.body.removeChild(a)}function s(c){p(w)&&r();var e;w?e=b.createElement('<iframe name="'+c.props.name+'"/>'):(e=b.createElement("IFRAME"),e.name=c.props.name),e.id=e.name=c.props.name,delete c.props.name,"string"==typeof c.container&&(c.container=b.getElementById(c.container)),c.container||(q(e.style,{position:"absolute",top:"-2000px",left:"0px"}),c.container=b.body);var f=c.props.src;c.props.src="about:blank",q(e,c.props),e.border=e.frameBorder=0,e.allowTransparency=!0;var g=!1;return c.onFrameAck&&"postMessage"in a&&a.addEventListener?a.addEventListener("message",function(a){var b=Stripe._iframeBaseUrl.replace(/^https?:\/\//,"").replace(/\/.*$/,""),d=a.origin.replace(/^https?:\/\//,"").replace(/\/.*$/,"");b===d&&"stripe:ack"===a.data&&c.onFrameAck(!0)},!1):g=!0,c.container.appendChild(e),c.onLoad&&z(e,"load",function(){c.onLoad.apply(c,arguments),g&&c.onFrameAck(!1)}),c.onError&&z(e,"error",function(){c.onError.apply(c,arguments)}),e.src=f,c.onAsyncInject&&d(function(){c.onAsyncInject.call(c,e)},5e3),c.props.src=f,e}function t(c){var d,e=c.protocol;if(c.isHost=c.isHost||p(O.xdm_p),J=c.hash||!1,c.props||(c.props={}),c.isHost){if(c.remote=n(c.remote),c.channel=c.channel||"default"+C++,c.secret=Math.random().toString(16).substring(2),p(e))if(g(a,"postMessage")||g(b,"postMessage"))e="1";else{if(!(c.swf&&g(a,"ActiveXObject")&&h()))throw new Error("No suitable transport protocol for Stripe.js");e="6"}}else c.channel=O.xdm_c.replace(/["'<>\\]/g,""),c.secret=O.xdm_s,c.remote=O.xdm_e.replace(/["'<>\\]/g,""),e=O.xdm_p;switch(c.protocol=e,e){case"1":d=[new H.stack.PostMessageTransport(c)];break;case"6":x||h(),d=[new H.stack.FlashTransport(c)]}return d?(d.push(new H.stack.QueueBehavior({lazy:c.lazy,remove:!0})),d):void c.onInternalError.call(c,"BadXDMProtocol")}function u(a){for(var b,c={incoming:function(a,b){this.up.incoming(a,b)},outgoing:function(a,b){this.down.outgoing(a,b)},callback:function(a){this.up.callback(a)},init:function(){this.down.init()},destroy:function(){this.down.destroy()}},d=0,e=a.length;d<e;d++)b=a[d],q(b,c,!0),0!==d&&(b.down=a[d-1]),d!==e-1&&(b.up=a[d+1]);return b}function v(a){a.up.down=a.down,a.down.up=a.up,a.up=a.down=null}var w,x,y,z,A,B=this,C=Math.floor(1e6*Math.random()),D=(Function.prototype,/^((http:|https:|file:|chrome\-extension:|chrome:)\/\/([^:\/\s]+)(:\d+)*)/),E=/[\-\w]+\/\.\.\//,F=/([^:])\/\//g,G="Stripe",H={},I="stripeXDM_",J=!1;if(g(a,"addEventListener"))z=function(a,b,c){a.addEventListener(b,c,!1)},A=function(a,b,c){a.removeEventListener(b,c,!1)};else{if(!g(a,"attachEvent"))throw new Error("Browser not supported");z=function(a,b,c){a.attachEvent("on"+b,c)},A=function(a,b,c){a.detachEvent("on"+b,c)}}var K,L=!1,M=[];if("readyState"in b?(K=b.readyState,L="complete"==K||~navigator.userAgent.indexOf("AppleWebKit/")&&("loaded"==K||"interactive"==K)):L=!!b.body,!L){if(g(a,"addEventListener"))z(b,"DOMContentLoaded",i);else if(z(b,"readystatechange",function(){"complete"==b.readyState&&i()}),b.documentElement.doScroll&&a===top){var N=function(){if(!L){try{b.documentElement.doScroll("left");
3
+ }catch(a){return void d(N,1)}i()}};N()}z(a,"load",i)}var O=function(a){a=a.substring(1).split("&");for(var b,c={},d=a.length;d--;)b=a[d].split("="),c[b[0].replace(/^stripe_/,"")]=e(b[1]);return c}(/stripe_xdm_e=/.test(c.search)?c.search:c.hash),P=function(){return Stripe.JSON};q(H,{version:"2.4.19.3",query:O,stack:{},apply:q,getJSONObject:P,whenReady:j}),H.DomHelper={on:z,un:A},function(){var a={};H.Fn={set:function(b,c){a[b]=c},get:function(b,c){if(a.hasOwnProperty(b)){var d=a[b];return c&&delete a[b],d}}}}(),H.Socket=function(a){var b=u(t(a).concat([{incoming:function(b,c){a.onMessage(b,c)},callback:function(b){a.onReady&&a.onReady(b)}}])),c=m(a.remote);this.origin=m(a.remote),this.destroy=function(){b.destroy()},this.postMessage=function(a){b.outgoing(a,c)},b.init()},H.stack.FlashTransport=function(a){function e(a,b){d(function(){h.up.incoming(a,p)},0)}function g(c){var d=a.swf+"?host="+a.isHost,e="easyXDM_swf_"+Math.floor(1e4*Math.random());H.Fn.set("flash_loaded"+c.replace(/[\-.]/g,"_"),function(){H.stack.FlashTransport[c].swf=r=t.firstChild;for(var a=H.stack.FlashTransport[c].queue,b=0;b<a.length;b++)a[b]();a.length=0}),a.swfContainer?t="string"==typeof a.swfContainer?b.getElementById(a.swfContainer):a.swfContainer:(t=b.createElement("div"),q(t.style,y&&a.swfNoThrottle?{height:"20px",width:"20px",position:"fixed",right:0,top:0}:{height:"1px",width:"1px",position:"absolute",overflow:"hidden",right:0,top:0}),b.body.appendChild(t));var g="callback=flash_loaded"+f(c.replace(/[\-.]/g,"_"))+"&proto="+B.location.protocol+"&domain="+f(k(B.location.href))+"&port="+f(l(B.location.href))+"&ns="+f(G);t.innerHTML="<object height='20' width='20' type='application/x-shockwave-flash' id='"+e+"' data='"+d+"'><param name='allowScriptAccess' value='always'></param><param name='wmode' value='transparent'><param name='movie' value='"+d+"'></param><param name='flashvars' value='"+g+"'></param><embed type='application/x-shockwave-flash' FlashVars='"+g+"' allowScriptAccess='always' wmode='transparent' src='"+d+"' height='1' width='1'></embed></object>"}var h,i,p,r,t;return h={outgoing:function(b,c,d){r.postMessage(a.channel,b.toString()),d&&d()},destroy:function(){try{r.destroyChannel(a.channel)}catch(b){}r=null,i&&(i.parentNode.removeChild(i),i=null)},onDOMReady:function(){p=a.remote,H.Fn.set("flash_"+a.channel+"_init",function(){d(function(){h.up.callback(!0)})}),H.Fn.set("flash_"+a.channel+"_onMessage",e),a.swf=n(a.swf);var b=k(a.swf),f=function(){H.stack.FlashTransport[b].init=!0,r=H.stack.FlashTransport[b].swf,r.createChannel(a.channel,a.secret,m(a.remote),a.isHost),a.isHost&&(y&&a.swfNoThrottle&&q(a.props,{position:"fixed",right:0,top:0,height:"20px",width:"20px"}),q(a.props,{src:o(a.remote,{xdm_e:m(c.href),xdm_c:a.channel,xdm_p:6,xdm_s:a.secret}),name:I+a.channel+"_provider"}),i=s(a))};H.stack.FlashTransport[b]&&H.stack.FlashTransport[b].init?f():H.stack.FlashTransport[b]?H.stack.FlashTransport[b].queue.push(f):(H.stack.FlashTransport[b]={queue:[f]},g(b))},init:function(){j(h.onDOMReady,h)}}},H.stack.PostMessageTransport=function(b){function e(a){if(a.origin)return m(a.origin);if(a.uri)return m(a.uri);if(a.domain)return c.protocol+"//"+a.domain;throw new Error("Unable to retrieve the origin of the event")}function f(a){var c=e(a);c==k&&"string"==typeof a.data&&a.data.substring(0,b.channel.length+1)==b.channel+" "&&g.up.incoming(a.data.substring(b.channel.length+1),c)}var g,h,i,k;return g={outgoing:function(a,c,d){try{i.postMessage(b.channel+" "+a,c||k),d&&d()}catch(e){b.onInternalError&&b.onInternalError.call(b,"CallerWindowError")}},destroy:function(){A(a,"message",f),h&&(i=null,h.parentNode.removeChild(h),h=null)},onDOMReady:function(){if(k=m(b.remote),b.isHost){var e=function(c){c.data==b.channel+"-ready"&&(i="postMessage"in h.contentWindow?h.contentWindow:h.contentWindow.document,A(a,"message",e),z(a,"message",f),d(function(){g.up.callback(!0)},0))};z(a,"message",e),q(b.props,{src:o(b.remote,{xdm_e:m(c.href),xdm_c:b.channel,xdm_p:1}),name:I+b.channel+"_provider"}),h=s(b)}else z(a,"message",f),i="postMessage"in a.parent?a.parent:a.parent.document,i.postMessage(b.channel+"-ready",k),d(function(){g.up.callback(!0)},0)},init:function(){j(g.onDOMReady,g)}}},H.stack.QueueBehavior=function(a){function b(){if(a.remove&&0===h.length)return void v(c);if(!i&&0!==h.length&&!g){i=!0;var e=h.shift();c.down.outgoing(e.data,e.origin,function(a){i=!1,e.callback&&d(function(){e.callback(a)},0),b()})}}var c,g,h=[],i=!0,j="",k=0,l=!1,m=!1;return c={init:function(){p(a)&&(a={}),a.maxLength&&(k=a.maxLength,m=!0),a.lazy?l=!0:c.down.init()},callback:function(a){i=!1;var d=c.up;b(),d.callback(a)},incoming:function(b,d){if(m){var f=b.indexOf("_"),g=parseInt(b.substring(0,f),10);j+=b.substring(f+1),0===g&&(a.encode&&(j=e(j)),c.up.incoming(j,d),j="")}else c.up.incoming(b,d)},outgoing:function(d,e,g){a.encode&&(d=f(d));var i,j=[];if(m){for(;0!==d.length;)i=d.substring(0,k),d=d.substring(i.length),j.push(i);for(;i=j.shift();)h.push({data:j.length+"_"+i,origin:e,callback:0===j.length?g:null})}else h.push({data:d,origin:e,callback:g});l?c.down.init():b()},destroy:function(){g=!0,c.down.destroy()}}},Stripe.easyXDM=H}(window,document,location,window.setTimeout,decodeURIComponent,encodeURIComponent)}.call(this),function(){var a=[].indexOf||function(a){for(var b=0,c=this.length;b<c;b++)if(b in this&&this[b]===a)return b;return-1};this.Stripe.isDoubleLoaded||(this.Stripe.utils=function(){function b(){}var c;return c=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,b.trim=function(a){return null===a?"":(a+"").replace(c,"")},b.serialize=function(a,b,c){var d,e,f;null==b&&(b=[]);try{for(e in a)f=a[e],c&&(e=""+c+"["+e+"]"),"object"==typeof f?this.serialize(f,b,e):b.push(""+e+"="+encodeURIComponent(f));return b.join("&").replace(/%20/g,"+")}catch(g){throw d=g,new Error("Unable to serialize: "+a)}},b.underscore=function(a){return(a+"").replace(/([A-Z])/g,function(a){return"_"+a.toLowerCase()}).replace(/-/g,"_")},b.underscoreKeys=function(a){var b,c,d;d=[];for(b in a)c=a[b],delete a[b],d.push(a[this.underscore(b)]=c);return d},b.isElement=function(a){return"object"==typeof a&&(!!a.jquery||1===a.nodeType)},b.paramsFromForm=function(b,c){var d,e,f,g,h,i,j,k,l,m;for(null==c&&(c=[]),b.jquery&&(b=b[0]),f=b.getElementsByTagName("input"),h=b.getElementsByTagName("select"),i={},j=0,l=f.length;j<l;j++)e=f[j],d=this.underscore(e.getAttribute("data-stripe")),a.call(c,d)<0||(i[d]=e.value);for(k=0,m=h.length;k<m;k++)g=h[k],d=this.underscore(g.getAttribute("data-stripe")),a.call(c,d)<0||null!=g.selectedIndex&&(i[d]=g.options[g.selectedIndex].value);return i},b.validateProtocol=function(a){var b;if(a&&"string"==typeof a)return/_live_/g.test(a)&&"https:"!==window.location.protocol&&null!=(null!=(b=window.console)?b.warn:void 0)?window.console.warn("You are using Stripe.js in live mode over an insecure connection. This is considered unsafe. Please conduct live requests only on sites served over https. For more info, see https://stripe.com/help/ssl"):void 0},b.validateKey=function(a){if(!a||"string"!=typeof a)throw new Error("You did not set a valid publishable key. Call Stripe.setPublishableKey() with your publishable key. For more info, see https://stripe.com/docs/stripe.js");if(/\s/g.test(a))throw new Error("Your key is invalid, as it contains whitespace. For more info, see https://stripe.com/docs/stripe.js");if(/^sk_/.test(a))throw new Error("You are using a secret key with Stripe.js, instead of the publishable one. For more info, see https://stripe.com/docs/stripe.js")},b.parseExpString=function(a){var b,c,d,e,f,g,h,i,j;for(g=function(b){throw new Error("You passed an invalid expiration date `"+a+"`. "+(b||"")+"Please pass a string containing a numeric month and year such as `01-17` or `2015 / 05` For more info, see https://stripe.com/docs/stripe.js")},"string"!=typeof a&&g(),f=a.split(/[\.\-\/\s]+/g),2!==f.length&&g(),b=i=0,j=f.length;i<j;b=++i)e=f[b],d=parseInt(e),isNaN(d)&&g(""+f+" is not a number. "),d<1&&g(""+d+" is less than one. "),f[b]=d;return f[0]>12?(h=f[0],c=f[1]):(c=f[0],h=f[1]),c>12&&g("Month must be a number 1-12, not "+c+". "),h<100&&(h+=2e3),[c,h]},b}())}.call(this),function(){var a,b=[].slice;a=(new Date).getTime(),this.Stripe.isDoubleLoaded||(this.Stripe.ajaxJSONP=function(c){var d,e,f,g,h,i,j;return null==c&&(c={}),f="sjsonp"+ ++a,i=document.createElement("script"),e=null,d=function(a){var b;return null==a&&(a="abort"),clearTimeout(e),null!=(b=i.parentNode)&&b.removeChild(i),f in window&&(window[f]=function(){}),"function"==typeof c.complete?c.complete(a,j,c):void 0},j={abort:d},i.onerror=function(){return j.abort(),"function"==typeof c.error?c.error(j,c):void 0},window[f]=function(){var a,d;a=1<=arguments.length?b.call(arguments,0):[],clearTimeout(e),i.parentNode.removeChild(i);try{delete window[f]}catch(g){d=g,window[f]=void 0}return"function"==typeof c.success&&c.success.apply(c,b.call(a).concat([j])),"function"==typeof c.complete?c.complete("success",j,c):void 0},h=(c.headers||{})["Accept-Language"],c.data||(c.data={}),c.data.callback=f,c.method&&(c.data._method=c.method),h&&(c.data._accept_language=h),i.src=c.url+"?"+Stripe.utils.serialize(c.data),g=document.getElementsByTagName("head")[0],g.appendChild(i),c.timeout>0&&(e=setTimeout(function(){return j.abort("timeout")},c.timeout)),j})}.call(this),function(){var a,b,c,d,e,f,g,h,i,j={}.hasOwnProperty;this.Stripe.isDoubleLoaded||(b={contentType:"application/x-www-form-urlencoded",accept:{json:"application/json"}},g=/^(20\d|1223)$/,f="invalid_json_response",d=function(a,b,c){return function(){return a._aborted?c(a.request,"abort"):a.request&&4===a.request.readyState?(a.request.onreadystatechange=function(){},0===a.request.status?c(a.request,"empty_response"):g.test(a.request.status)?b(a.request,a.request.status):b(a.request,a.request.status)):void 0}},h=function(a,c){var d,e,f,g,h;f=c.headers||{},f.Accept||(f.Accept=b.accept.json),f["Content-Type"]||(f["Content-Type"]=b.contentType),g=c._globalCustomHeaders;for(d in g)j.call(g,d)&&"setRequestHeader"in a&&a.setRequestHeader(d,c._globalCustomHeaders[d]);h=[];for(e in f)j.call(f,e)&&("setRequestHeader"in a?h.push(a.setRequestHeader(e,f[e])):h.push(void 0));return h},i=function(a,b){return/\?/.test(a)?a+"&"+b:a+"?"+b},c=function(a,b){var c,e,f,g,j,k,l,m,n;k=this.o,j=(k.method||"GET").toUpperCase(),l=k.url,g=null!=(m=k.data)?m.key:void 0,c=Stripe.utils.serialize(k.data),f=void 0,"GET"===j&&c&&(l=i(l,c),c=null),n=new XMLHttpRequest,n.open(j,l,!0),h(n,k),n.onreadystatechange=d(this,a,b);try{n.send(c)}catch(o){e=o,Stripe.reportError("XHR-"+e.toString()),b(n,"xhr_send_failure")}return n},a=function(a){return this.o=a,e.apply(this,arguments)},e=function(a){var b,d,e;return this.url=a.url,this.timeout=null,this._successHandler=function(){},this._errorHandlers=[],this._completeHandlers=[],a.timeout&&(this.timeout=setTimeout(function(a){return function(){return a.abort()}}(this),a.timeout)),a.success&&(this._successHandler=function(){return a.success.apply(a,arguments)}),a.error&&this._errorHandlers.push(function(){return a.error.apply(a,arguments)}),a.complete&&this._completeHandlers.push(function(){return a.complete.apply(a,arguments)}),b=function(b){return function(c,d){var e;for(a.timeout&&clearTimeout(b.timeout),b.timeout=null,e=[];b._completeHandlers.length>0;)e.push(b._completeHandlers.shift()(d,c,a));return e}}(this),e=function(a){return function(c,e){var g,h,i;if(i=c.responseText,!i||!i.length)return d(c,"empty_response");try{return h=Stripe.JSON.parse(i),a._successHandler(h,e,c),b(h,"success")}catch(j){return g=j,d(c,f)}}}(this),d=function(a){return function(b,c){var d,e,g;if(g=b.responseText,e=void 0,g&&g.length&&c!==f)try{e=Stripe.JSON.parse(g)}catch(h){d=h,c=c+"_AND_"+f}for(;a._errorHandlers.length>0;)a._errorHandlers.shift()(e||b,c);return Stripe.reportError(c),Stripe._fallBackToOldStripeJsTechniques(),Stripe.request(a.o,!0)}}(this),this.request=c.call(this,e,d)},a.prototype={abort:function(){var a;return this._aborted=!0,null!=(a=this.request)?a.abort():void 0}},this.Stripe.xhr=function(b){return b._globalCustomHeaders=this._customHeaders,new a(b)})}.call(this),function(){var a,b,c,d={}.hasOwnProperty;this.Stripe.isDoubleLoaded||(a=function(a){return this.options=a,a.requestId=Stripe._callCount,a.endpoint=Stripe.endpoint,a.trackPerf=Stripe.trackPerf,this.iframeTimeout=setTimeout(function(){return Stripe._fallBackToOldStripeJsTechniques(),Stripe._iframePendingRequests[a.requestId]&&(Stripe.request(Stripe._iframePendingRequests[a.requestId],!0),delete Stripe._iframePendingRequests[a.requestId]),Stripe._callCache[a.requestId]=function(){return Stripe.reportError("TimeoutEventualReturnError")}},1e4),Stripe._iframePendingRequests[a.requestId]=a,Stripe._callCache[a.requestId]=function(b){return function(){return clearTimeout(b.iframeTimeout),delete Stripe._iframePendingRequests[a.requestId],a.success.apply(a,arguments),"function"==typeof a.complete?a.complete("success",null,a):void 0}}(this),Stripe._callCount+=1,Stripe._socket.postMessage(Stripe.JSON.stringify(a))},this.Stripe.iframe=function(b){return new a(b)},b=Stripe.easyXDM,this.Stripe._isChannel?Stripe._socket=new b.Socket({swf:""+Stripe._iframeBaseUrl+"/v2/stripexdm.swf",onMessage:Stripe._channelListener}):Stripe._isSafeDomain||(c=function(a){var b,d,e;"console"in window&&"warn"in window.console,1,Stripe._iframeChannelComplete.call(Stripe,!1),Stripe._callCache={},Stripe.reportError("FB-"+a),d=document.createElement("script"),e=Math.round((new Date).getTime()/1e3),d.src=""+Stripe._iframeBaseUrl+"/v2/cspblocked.js?domain="+encodeURIComponent(document.location.href)+"&timestamp="+e+"&info="+encodeURIComponent(a)+"&payment_user_agent="+encodeURIComponent(Stripe.stripejs_ua),b=document.getElementsByTagName("script")[0],b.parentNode.insertBefore(d,b),c=function(){}},Stripe._socket=new b.Socket({swf:""+Stripe._iframeBaseUrl+"/v2/stripexdm.swf",remote:""+Stripe._iframeBaseUrl+"/v2/channel"+(Stripe.accountDetails?"-provisioning":"")+".html#__stripe_transport__",onMessage:Stripe._receiveChannelRelay,ackTimeoutDuration:1e4,onLoad:function(){return this._socketLoadTime=+new Date,this.onError=function(){},this.onAsyncInject=function(){},clearTimeout(this.injectTimeout),this._socketAckTime?this.loadTimeout?(clearTimeout(this.loadTimeout),Stripe._iframeChannelComplete.call(Stripe,!0)):Stripe.reportError("LoadDelayError",this._socketLoadTime-this._socketAckTime):this.ackTimeout=setTimeout(function(a){return function(){return a.onFrameAck=function(){},clearTimeout(a.loadTimeout),c("AckTimeoutError")}}(this),this.ackTimeoutDuration)},onError:function(){return this.onLoad=function(){},this.onAsyncInject=function(){},this.onFrameAck=function(){},clearTimeout(this.ackTimeout),clearTimeout(this.injectTimeout),clearTimeout(this.loadTimeout),c("IframeOnError")},onInternalError:function(a){var b,c,e;this.onError=function(){},this.onLoad=function(){},this.onFrameAck=function(){},this.onAsyncInject=function(){},clearTimeout(this.ackTimeout),clearTimeout(this.loadTimeout),clearTimeout(this.injectTimeout),Stripe.reportError("FB-XDM-"+a),Stripe._fallBackToOldStripeJsTechniques(),e=Stripe._iframePendingRequests;for(b in e)d.call(e,b)&&(c=e[b],Stripe._callCache[c.requestId]=function(){},delete Stripe._iframePendingRequests[c.requestId],Stripe.request(c,!0))},onAsyncInject:function(a){return this.injectTimeout=setTimeout(function(a){return function(){return a.onError=function(){},a.onLoad=function(){},a.onFrameAck=function(){},clearTimeout(a.ackTimeout),clearTimeout(a.loadTimeout),c("InjectTimeoutError")}}(this),this.ackTimeoutDuration)},onFrameAck:function(a){return this._socketAckTime=+new Date,clearTimeout(this.ackTimeout),clearTimeout(this.injectTimeout),this.onAsyncInject=function(){},this.onError=function(){},this.ackTimeout?Stripe._iframeChannelComplete.call(Stripe,!0):this._socketLoadTime?(this.onLoad=function(){},Stripe.reportError("AckDelayError",this._socketAckTime-this._socketLoadTime)):this.loadTimeout=setTimeout(function(a){return function(){return c("LoadTimeoutError"),a.onLoad=function(){}}}(this),this.ackTimeoutDuration)}})))}.call(this),function(){var a=[].indexOf||function(a){for(var b=0,c=this.length;b<c;b++)if(b in this&&this[b]===a)return b;return-1};this.Stripe.isDoubleLoaded||(this.Stripe.validator={"boolean":function(a,b){if("true"!==b&&"false"!==b)return"Enter a boolean string (true or false)"},integer:function(a,b){if(!/^\d+$/.test(b))return"Enter an integer"},positive:function(a,b){if(this.integer(a,b)||!(parseInt(b,10)>0))return"Enter a positive value"},range:function(b,c){var d;if(d=parseInt(c,10),a.call(b,d)<0)return"Needs to be between "+b[0]+" and "+b[b.length-1]},required:function(a,b){if(a&&(null==b||""===b))return"Required"},year:function(a,b){if(!/^\d{4}$/.test(b))return"Enter a 4-digit year"},birthYear:function(a,b){var c;return c=this.year(a,b),c?c:parseInt(b,10)>2e3?"You must be over 18":parseInt(b,10)<1900?"Enter your birth year":void 0},month:function(a,b){return this.integer(a,b)?"Please enter a month":this.range([1,2,3,4,5,6,7,8,9,10,11,12],b)?"Needs to be between 1 and 12":void 0},choices:function(b,c){if(a.call(b,c)<0)return"Not an acceptable value for this field"},email:function(a,b){if(!/^[^@<\s>]+@[^@<\s>]+$/.test(b))return"That doesn't look like an email address"},url:function(a,b){if(!/^https?:\/\/.+\..+/.test(b))return"Not a valid url"},usTaxID:function(a,b){if(!/^\d{2}-?\d{1}-?\d{2}-?\d{4}$/.test(b))return"Not a valid tax ID"},ein:function(a,b){if(!/^\d{2}-?\d{7}$/.test(b))return"Not a valid EIN"},ssnLast4:function(a,b){if(!/^\d{4}$/.test(b))return"Not a valid last 4 digits for an SSN"},ownerPersonalID:function(a,b){var c;if(c=function(){switch(a){case"CA":return/^\d{3}-?\d{3}-?\d{3}$/.test(b);case"US":return!0}}(),!c)return"Not a valid ID"},bizTaxID:function(a,b){var c,d,e,f,g,h,i,j;if(h={CA:["Tax ID",[/^\d{9}$/]],US:["EIN",[/^\d{2}-?\d{7}$/]]},g=h[a],null!=g){for(c=g[0],f=g[1],d=!1,i=0,j=f.length;i<j;i++)if(e=f[i],e.test(b)){d=!0;break}if(!d)return"Not a valid "+c}},zip:function(a,b){var c;if(c=function(){switch(a.toUpperCase()){case"CA":return/^[\d\w]{6}$/.test(null!=b?b.replace(/\s+/g,""):void 0);case"US":return/^\d{5}$/.test(b)||/^\d{9}$/.test(b)}}(),!c)return"Not a valid zip"},bankAccountNumber:function(a,b){if(!/^\d{1,17}$/.test(b))return"Invalid bank account number"},usRoutingNumber:function(a){var b,c,d,e,f,g,h;if(!/^\d{9}$/.test(a))return"Routing number must have 9 digits";for(f=0,b=g=0,h=a.length-1;g<=h;b=g+=3)c=3*parseInt(a.charAt(b),10),d=7*parseInt(a.charAt(b+1),10),e=parseInt(a.charAt(b+2),10),f+=c+d+e;return 0===f||f%10!==0?"Invalid routing number":void 0},caRoutingNumber:function(a){if(!/^\d{5}\-\d{3}$/.test(a))return"Invalid transit number"},routingNumber:function(a,b){switch(a.toUpperCase()){case"CA":return this.caRoutingNumber(b);case"US":return this.usRoutingNumber(b)}},phoneNumber:function(a,b){var c;if(c=b.replace(/[^0-9]/g,""),10!==c.length)return"Invalid phone number"},bizDBA:function(a,b){if(!/^.{1,23}$/.test(b))return"Statement descriptors can only have up to 23 characters"},nameLength:function(a,b){if(1===b.length)return"Names need to be longer than one character"},isUrl:function(a){return"string"==typeof a&&!this.url(null,a)},isElementOrId:function(a){return"object"==typeof a&&null!=a.appendChild||"string"==typeof a}})}.call(this);
includes/Ajax.class.php CHANGED
@@ -31,10 +31,136 @@ class rtbAJAX {
31
 
32
  add_action( 'wp_ajax_rtb_get_available_time_slots', array( $this, 'get_time_slots' ) );
33
  add_action( 'wp_ajax_nopriv_rtb_get_available_time_slots', array( $this, 'get_time_slots' ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  }
35
 
36
  /**
37
- * Load the plugin's default settings
38
  * @since 2.0.0
39
  */
40
  public function get_time_slots() {
@@ -87,10 +213,10 @@ class rtbAJAX {
87
  while ( sizeOf( $current_times ) > 0 and reset( $current_times ) < $time - $dining_block_seconds ) {
88
  //save the time to know when the blocking potentially ends
89
  $removed_time = reset( $current_times );
90
-
91
  // remove the expired time
92
  array_shift( $current_times );
93
-
94
  // remove the block if we've dropped below the max reservation count
95
  if ( $blocked and sizeOf( $current_times ) < $max_reservations ) {
96
  $blocked = false;
31
 
32
  add_action( 'wp_ajax_rtb_get_available_time_slots', array( $this, 'get_time_slots' ) );
33
  add_action( 'wp_ajax_nopriv_rtb_get_available_time_slots', array( $this, 'get_time_slots' ) );
34
+
35
+ add_action( 'wp_ajax_rtb_find_reservations', array( $this, 'get_reservations' ) );
36
+ add_action( 'wp_ajax_nopriv_rtb_find_reservations', array( $this, 'get_reservations' ) );
37
+
38
+ add_action( 'wp_ajax_rtb_cancel_reservations', array( $this, 'cancel_reservation' ) );
39
+ add_action( 'wp_ajax_nopriv_rtb_cancel_reservations', array( $this, 'cancel_reservation' ) );
40
+ }
41
+
42
+ /**
43
+ * Get reservations that are associated with the email address that was sent
44
+ * @since 2.1.0
45
+ */
46
+ public function get_reservations() {
47
+ global $wpdb;
48
+
49
+ $email = isset($_POST['booking_email']) ? sanitize_email( $_POST['booking_email'] ) : '';
50
+
51
+ if ( ! $email ) {
52
+ wp_send_json_error(
53
+ array(
54
+ 'error' => 'noemail',
55
+ 'msg' => __( 'The email you entered is not valid.', 'restaurant-reservations' ),
56
+ )
57
+ );
58
+ }
59
+
60
+ require_once( RTB_PLUGIN_DIR . '/includes/Booking.class.php' );
61
+
62
+ $bookings = array();
63
+ $booking_ids = $wpdb->get_results($wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_key='rtb' AND meta_value LIKE %s", '%' . $email . '%'));
64
+ foreach ( $booking_ids as $booking_id ) {
65
+ $booking = new rtbBooking();
66
+ if ( $booking->load_post( $booking_id->post_id ) ) {
67
+ if ( ( $booking->post_status == 'pending' or $booking->post_status == 'confirmed' ) and time() < strtotime( $booking->date ) ) {
68
+ $bookings[] = array(
69
+ 'ID' => $booking->ID,
70
+ 'email' => $booking->email,
71
+ 'datetime' => $booking->format_date( $booking->date ),
72
+ 'party' => $booking->party
73
+ );
74
+ }
75
+ }
76
+ }
77
+
78
+ if ( ! empty($bookings) ) {
79
+ wp_send_json_success(
80
+ array(
81
+ 'bookings' => $bookings
82
+ )
83
+ );
84
+ }
85
+ else {
86
+ wp_send_json_error(
87
+ array(
88
+ 'error' => 'nobookings',
89
+ 'msg' => __( 'No bookings were found for the email address you entered.', 'restaurant-reservations' ),
90
+ )
91
+ );
92
+ }
93
+
94
+ die();
95
+ }
96
+
97
+ /**
98
+ * Cancel a reservation based on its ID, with the email address used for confirmation
99
+ * @since 2.1.0
100
+ */
101
+ public function cancel_reservation( $non_ajax = true ) {
102
+ global $rtb_controller;
103
+
104
+ $booking_id = isset($_REQUEST['booking_id']) ? absint( $_REQUEST['booking_id'] ) : '';
105
+ $booking_email = isset($_REQUEST['booking_email']) ? sanitize_email( $_REQUEST['booking_email'] ) : '';
106
+
107
+ require_once( RTB_PLUGIN_DIR . '/includes/Booking.class.php' );
108
+
109
+ $success = false;
110
+
111
+ $booking = new rtbBooking();
112
+ if ( $booking->load_post( $booking_id ) ) {
113
+ if ( $booking_email == $booking->email ) {
114
+ wp_update_post( array( 'ID' => $booking->ID, 'post_status' => 'cancelled' ) );
115
+
116
+ $success = true;
117
+ }
118
+ else {
119
+ wp_send_json_error(
120
+ array(
121
+ 'error' => 'invalidemail',
122
+ 'msg' => __( 'No booking matches the information that was sent.', 'restaurant-reservations' ),
123
+ )
124
+ );
125
+ }
126
+ }
127
+ else {
128
+ wp_send_json_error(
129
+ array(
130
+ 'error' => 'invalidid',
131
+ 'msg' => __( 'No booking matches the information that was sent.', 'restaurant-reservations' ),
132
+ )
133
+ );
134
+ }
135
+
136
+ if ( $ajax ) {
137
+ if ( $success ) {
138
+ wp_send_json_success(
139
+ array(
140
+ 'booking_id' => $booking_id
141
+ )
142
+ );
143
+ }
144
+
145
+ die();
146
+ }
147
+ elseif ( $success ) {
148
+ $booking_page_id = $rtb_controller->settings->get_setting( 'booking-page' );
149
+ $booking_page_url = get_permalink( $booking_page_id );
150
+
151
+ $cancelled_url = add_query_arg(
152
+ array(
153
+ 'bookingCancelled' => 'success'
154
+ ),
155
+ $booking_page_url
156
+ );
157
+
158
+ header( 'location:' . $cancelled_url );
159
+ }
160
  }
161
 
162
  /**
163
+ * Get available timeslots when "Max Reservations" is enabled
164
  * @since 2.0.0
165
  */
166
  public function get_time_slots() {
213
  while ( sizeOf( $current_times ) > 0 and reset( $current_times ) < $time - $dining_block_seconds ) {
214
  //save the time to know when the blocking potentially ends
215
  $removed_time = reset( $current_times );
216
+
217
  // remove the expired time
218
  array_shift( $current_times );
219
+
220
  // remove the block if we've dropped below the max reservation count
221
  if ( $blocked and sizeOf( $current_times ) < $max_reservations ) {
222
  $blocked = false;
includes/Booking.class.php CHANGED
@@ -82,7 +82,10 @@ class rtbBooking {
82
  'logs' => array(),
83
  'ip' => '',
84
  'consent_acquired' => '',
 
 
85
  'reminder_sent' => false,
 
86
  );
87
 
88
  $meta_defaults = apply_filters( 'rtb_booking_metadata_defaults', $meta_defaults );
@@ -100,6 +103,10 @@ class rtbBooking {
100
  $this->logs = $meta['logs'];
101
  $this->ip = $meta['ip'];
102
  $this->consent_acquired = $meta['consent_acquired'];
 
 
 
 
103
  }
104
 
105
  /**
@@ -137,6 +144,22 @@ class rtbBooking {
137
  return $time;
138
  }
139
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
140
  /**
141
  * Insert a new booking submission into the database
142
  *
@@ -165,7 +188,7 @@ class rtbBooking {
165
  return false;
166
  }
167
 
168
- if ( $this->insert_post_data() === false ) {
169
  return false;
170
  } else {
171
  $this->request_inserted = true;
@@ -455,11 +478,38 @@ class rtbBooking {
455
  );
456
  }
457
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
458
  // Message
459
  $this->message = empty( $_POST['rtb-message'] ) ? '' : nl2br( wp_kses_post( stripslashes_deep( $_POST['rtb-message'] ) ) );
460
 
461
  // Post Status (define a default post status if none passed)
462
- $this->determine_status();
463
 
464
  // Consent
465
  $require_consent = $rtb_controller->settings->get_setting( 'require-consent' );
@@ -734,11 +784,11 @@ class rtbBooking {
734
  } elseif ( $rtb_controller->settings->get_setting( 'require-deposit' ) and ! $payment_made ) {
735
  $this->post_status = 'draft';
736
  } elseif ( $this->party < $rtb_controller->settings->get_setting( 'auto-confirm-max-party-size' ) ) {
737
- $this->post_status = 'confirmed';
738
  } elseif ($rtb_controller->settings->get_setting( 'auto-confirm-max-reservations' ) and $this->under_max_confirm_reservations() ) {
739
- $this->post_status = 'confirmed';
740
  } elseif ( $rtb_controller->settings->get_setting( 'auto-confirm-max-seats' ) and $this->under_max_confirm_seats() ) {
741
- $this->post_status = 'confirmed';
742
  } else {
743
  $this->post_status = 'pending';
744
  }
@@ -827,6 +877,14 @@ class rtbBooking {
827
  $meta['logs'] = $this->logs;
828
  }
829
 
 
 
 
 
 
 
 
 
830
  if ( !empty( $this->reminder_sent ) ) {
831
  $meta['reminder_sent'] = $this->reminder_sent;
832
  }
82
  'logs' => array(),
83
  'ip' => '',
84
  'consent_acquired' => '',
85
+ 'deposit' => '0',
86
+ 'receipt_id' => '',
87
  'reminder_sent' => false,
88
+ 'late_arrival_sent' => false,
89
  );
90
 
91
  $meta_defaults = apply_filters( 'rtb_booking_metadata_defaults', $meta_defaults );
103
  $this->logs = $meta['logs'];
104
  $this->ip = $meta['ip'];
105
  $this->consent_acquired = $meta['consent_acquired'];
106
+ $this->deposit = $meta['deposit'];
107
+ $this->receipt_id = $meta['receipt_id'];
108
+ $this->late_arrival_sent = $meta['late_arrival_sent'];
109
+ $this->reminder_sent = $meta['reminder_sent'];
110
  }
111
 
112
  /**
144
  return $time;
145
  }
146
 
147
+ /**
148
+ * Calculates the deposit required for a reservation, if any
149
+ *
150
+ * @since 2.1.0
151
+ */
152
+ public function calculate_deposit( ) {
153
+ global $rtb_controller;
154
+
155
+ $deposit = $rtb_controller->settings->get_setting( 'rtb-deposit-amount' );
156
+
157
+ if ( $rtb_controller->settings->get_setting( 'rtb-deposit-type' == 'guest' ) ) { $deposit = $deposit * $this->party; }
158
+
159
+ return $deposit;
160
+ }
161
+
162
+
163
  /**
164
  * Insert a new booking submission into the database
165
  *
188
  return false;
189
  }
190
 
191
+ if ( $this->insert_post_data() === false ) {
192
  return false;
193
  } else {
194
  $this->request_inserted = true;
478
  );
479
  }
480
 
481
+ // reCAPTCHA
482
+ if ( $rtb_controller->settings->get_setting( 'enable-captcha' ) ) {
483
+ if ( ! isset($_POST['g-recaptcha-response']) ) {
484
+ $this->validation_errors[] = array(
485
+ 'field' => 'recaptcha',
486
+ 'error_msg' => 'No reCAPTCHA code',
487
+ 'message' => __( 'Please fill out the reCAPTCHA box before submitting.', 'restaurant-reservations' ),
488
+ );
489
+ }
490
+ else {
491
+ $secret_key = $rtb_controller->settings->get_setting( 'captcha-secret-key' );
492
+ $captcha = $_POST['g-recaptcha-response'];
493
+
494
+ $url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($secret_key) . '&response=' . urlencode($captcha);
495
+ $json_response = file_get_contents( $url );
496
+ $response = json_decode( $json_response ); update_option("EWD_Debugging", print_r($response, true));
497
+
498
+ if ( ! $response->success ) {
499
+ $this->validation_errors[] = array(
500
+ 'field' => 'recaptcha',
501
+ 'error_msg' => 'Invalid reCAPTCHA code',
502
+ 'message' => __( 'Please fill out the reCAPTCHA box again and re-submit.', 'restaurant-reservations' ),
503
+ );
504
+ }
505
+ }
506
+ }
507
+
508
  // Message
509
  $this->message = empty( $_POST['rtb-message'] ) ? '' : nl2br( wp_kses_post( stripslashes_deep( $_POST['rtb-message'] ) ) );
510
 
511
  // Post Status (define a default post status if none passed)
512
+ $this->determine_status();
513
 
514
  // Consent
515
  $require_consent = $rtb_controller->settings->get_setting( 'require-consent' );
784
  } elseif ( $rtb_controller->settings->get_setting( 'require-deposit' ) and ! $payment_made ) {
785
  $this->post_status = 'draft';
786
  } elseif ( $this->party < $rtb_controller->settings->get_setting( 'auto-confirm-max-party-size' ) ) {
787
+ $this->post_status = 'confirmed';
788
  } elseif ($rtb_controller->settings->get_setting( 'auto-confirm-max-reservations' ) and $this->under_max_confirm_reservations() ) {
789
+ $this->post_status = 'confirmed';
790
  } elseif ( $rtb_controller->settings->get_setting( 'auto-confirm-max-seats' ) and $this->under_max_confirm_seats() ) {
791
+ $this->post_status = 'confirmed';
792
  } else {
793
  $this->post_status = 'pending';
794
  }
877
  $meta['logs'] = $this->logs;
878
  }
879
 
880
+ if ( !empty( $this->deposit ) ) {
881
+ $meta['deposit'] = $this->deposit;
882
+ }
883
+
884
+ if ( !empty( $this->receipt_id ) ) {
885
+ $meta['receipt_id'] = $this->receipt_id;
886
+ }
887
+
888
  if ( !empty( $this->reminder_sent ) ) {
889
  $meta['reminder_sent'] = $this->reminder_sent;
890
  }
includes/Cron.class.php CHANGED
@@ -20,7 +20,7 @@ class rtbCron {
20
  add_action( 'rtb_cron_jobs', array($this, 'handle_late_arrivals_task') );
21
  add_action( 'rtb_cron_jobs', array($this, 'handle_reminder_task') );
22
 
23
- add_action('admin_init', array($this, 'handle_reminder_task') );
24
  }
25
 
26
  /**
@@ -69,15 +69,21 @@ class rtbCron {
69
 
70
  if ( ! $rtb_controller->settings->get_setting( 'time-reminder-user' ) ) { return; }
71
 
 
 
 
 
72
  $bookings = $this->get_late_arrival_posts();
73
 
74
  foreach ($bookings as $booking) {
75
- $booking_data = get_post_meta( $booking->ID, 'rtb', true );
76
-
77
- $notifications_sent = (isset($booking_data['late_arrival_sent']) ? $booking_data['late_arrival_sent'] : false );
78
-
79
- if ( ! $notifications_sent ) {
80
- $notification = new rtbNotificationEmail( 'late_user', 'user' );
 
 
81
 
82
  $notification->set_booking($booking);
83
 
@@ -107,15 +113,21 @@ class rtbCron {
107
 
108
  if ( ! $rtb_controller->settings->get_setting( 'time-reminder-user' ) ) { return; }
109
 
 
 
 
 
110
  $bookings = $this->get_reminder_posts();
111
 
112
  foreach ($bookings as $booking) {
113
- $booking_data = get_post_meta( $booking->ID, 'rtb', true );
114
 
115
- $notifications_sent = (isset($booking_data['reminder_sent']) ? $booking_data['reminder_sent'] : false );
116
-
117
- if ( ! $notifications_sent ) {
118
- $notification = new rtbNotificationEmail( 'reminder', 'user' );
 
 
 
119
 
120
  $notification->set_booking($booking);
121
 
20
  add_action( 'rtb_cron_jobs', array($this, 'handle_late_arrivals_task') );
21
  add_action( 'rtb_cron_jobs', array($this, 'handle_reminder_task') );
22
 
23
+ // add_action('admin_init', array($this, 'handle_reminder_task') ); // Used for testing
24
  }
25
 
26
  /**
69
 
70
  if ( ! $rtb_controller->settings->get_setting( 'time-reminder-user' ) ) { return; }
71
 
72
+ require_once( RTB_PLUGIN_DIR . '/includes/Notification.class.php' );
73
+ require_once( RTB_PLUGIN_DIR . '/includes/Notification.Email.class.php' );
74
+ require_once( RTB_PLUGIN_DIR . '/includes/Notification.SMS.class.php' );
75
+
76
  $bookings = $this->get_late_arrival_posts();
77
 
78
  foreach ($bookings as $booking) {
79
+
80
+ if ( ! $booking->late_arrival_sent ) {
81
+ if ( $rtb_controller->settings->get_setting( 'late-notification-format' ) == 'text' ) {
82
+ $notification = new rtbNotificationSMS( 'late_user', 'user' );
83
+ }
84
+ else {
85
+ $notification = new rtbNotificationEmail( 'late_user', 'user' );
86
+ }
87
 
88
  $notification->set_booking($booking);
89
 
113
 
114
  if ( ! $rtb_controller->settings->get_setting( 'time-reminder-user' ) ) { return; }
115
 
116
+ require_once( RTB_PLUGIN_DIR . '/includes/Notification.class.php' );
117
+ require_once( RTB_PLUGIN_DIR . '/includes/Notification.Email.class.php' );
118
+ require_once( RTB_PLUGIN_DIR . '/includes/Notification.SMS.class.php' );
119
+
120
  $bookings = $this->get_reminder_posts();
121
 
122
  foreach ($bookings as $booking) {
 
123
 
124
+ if ( ! $booking->reminder_sent ) {
125
+ if ( $rtb_controller->settings->get_setting( 'reminder-notification-format' ) == 'text' ) {
126
+ $notification = new rtbNotificationSMS( 'reminder', 'user' );
127
+ }
128
+ else {
129
+ $notification = new rtbNotificationEmail( 'reminder', 'user' );
130
+ }
131
 
132
  $notification->set_booking($booking);
133
 
includes/CustomPostTypes.class.php CHANGED
@@ -24,6 +24,7 @@ class rtbCustomPostTypes {
24
  // Set up $booking_statuses array and register new post statuses
25
  add_action( 'init', array( $this, 'set_booking_statuses' ) );
26
  add_filter( 'rtb_post_statuses_args' , array( $this, 'add_arrived_status' ) );
 
27
 
28
  // Display the count of pending bookings
29
  add_action( 'admin_footer', array( $this, 'show_pending_count' ) );
@@ -152,6 +153,32 @@ class rtbCustomPostTypes {
152
 
153
  }
154
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  /**
156
  * @since 2.0.0
157
  * Adds in an "Arrived" status if the option to check guests in on arrival
24
  // Set up $booking_statuses array and register new post statuses
25
  add_action( 'init', array( $this, 'set_booking_statuses' ) );
26
  add_filter( 'rtb_post_statuses_args' , array( $this, 'add_arrived_status' ) );
27
+ add_filter( 'rtb_post_statuses_args' , array( $this, 'add_cancelled_status' ) );
28
 
29
  // Display the count of pending bookings
30
  add_action( 'admin_footer', array( $this, 'show_pending_count' ) );
153
 
154
  }
155
 
156
+
157
+ /**
158
+ * @since 2.1.0
159
+ * Adds in a "Cancelled" status if the option to allow guest to cancel
160
+ * their reservation has been toggled on.
161
+ */
162
+ public function add_cancelled_status( $booking_statuses = array() ) {
163
+ global $rtb_controller;
164
+
165
+ if ( $rtb_controller->settings->get_setting( 'allow-cancellations' ) ) {
166
+ $booking_statuses['cancelled'] = array(
167
+ 'label' => _x( 'Cancelled', 'The guest has cancelled their reservation themselves.', 'restaurant-reservations' ),
168
+ 'default' => false, // Whether or not this status is part of WP Core
169
+ 'user_selectable' => false, // Whether or not a user can set a booking to this status
170
+ 'public' => false,
171
+ 'exclude_from_search' => true,
172
+ 'show_in_admin_all_list' => true,
173
+ 'show_in_admin_status_list' => true,
174
+ 'label_count' => _n_noop( 'Cancelled <span class="count">(%s)</span>', 'Cancelled <span class="count">(%s)</span>', 'restaurant-reservations' )
175
+ );
176
+ }
177
+
178
+ return $booking_statuses;
179
+ }
180
+
181
+
182
  /**
183
  * @since 2.0.0
184
  * Adds in an "Arrived" status if the option to check guests in on arrival
includes/Dashboard.class.php CHANGED
@@ -20,6 +20,9 @@ class rtbDashboard {
20
  }
21
 
22
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
 
 
 
23
  }
24
 
25
  public function add_dashboard_to_menu() {
@@ -38,7 +41,7 @@ class rtbDashboard {
38
  $new_submenu = array();
39
  $menu_item_count = 3;
40
 
41
- if ( ! is_array($submenu['rtb-bookings']) ) { $submenu['rtb-bookings'] = array(); }
42
 
43
  foreach ( $submenu['rtb-bookings'] as $key => $sub_item ) {
44
  if ( $sub_item[0] == 'Dashboard' ) { $new_submenu[0] = $sub_item; }
@@ -172,8 +175,14 @@ class rtbDashboard {
172
  <div id="rtb-dashboard-content-left">
173
 
174
  <?php if ( ! $permission or ! $ultimate or get_option("RTB_Trial_Happening") == "Yes") { ?>
175
- <div class="rtb-dashboard-new-widget-box ewd-widget-box-full">
176
  <div class="rtb-dashboard-new-widget-box-top">
 
 
 
 
 
 
177
  <form method="post" action="admin.php?page=rtb-dashboard" class="rtb-dashboard-key-widget">
178
  <input class="rtb-dashboard-key-widget-input" name="Key" type="text" placeholder="<?php _e('Enter License Key Here', 'restaurant-reservations'); ?>">
179
  <input class="rtb-dashboard-key-widget-submit" name="RTB_Upgrade_To_Full" type="submit" value="<?php echo ( ! $permission ? __('UNLOCK PREMIUM', 'restaurant-reservations') : __('UNLOCK ULTIMATE', 'restaurant-reservations') ) ?>">
@@ -200,15 +209,15 @@ class rtbDashboard {
200
  </a>
201
  </li>
202
  <li>
203
- <a href="https://wordpress.org/support/plugin/restaurant-reservations" target="_blank">
204
- <img src="<?php echo plugins_url( '../assets/img/ewd-support-icon-forum.png', __FILE__ ); ?>">
205
- <div class="rtb-dashboard-support-widgets-text">Support Forum</div>
206
  </a>
207
  </li>
208
  <li>
209
- <a href="https://www.fivestarplugins.com/support-center/?Plugin=RTB" target="_blank">
210
- <img src="<?php echo plugins_url( '../assets/img/ewd-support-icon-documentation.png', __FILE__ ); ?>">
211
- <div class="rtb-dashboard-support-widgets-text">Documentation</div>
212
  </a>
213
  </li>
214
  </ul>
@@ -422,9 +431,10 @@ class rtbDashboard {
422
  <ul class="rtb-dashboard-new-footer-two-menu">
423
  <li>SUPPORT</li>
424
  <li><a href="https://www.youtube.com/channel/UCZPuaoetCJB1vZOmpnMxJNw/featured" target="_blank">YouTube Tutorials</a></li>
425
- <li><a href="https://wordpress.org/support/plugin/restaurant-reservations" target="_blank">Forums</a></li>
426
- <li><a href="https://www.fivestarplugins.com/support-center/?Plugin=RTB" target="_blank">Documentation</a></li>
427
  <li><a href="https://wordpress.org/plugins/restaurant-reservations/#faq" target="_blank">FAQs</a></li>
 
428
  </ul>
429
  </div>
430
  </div> <!-- rtb-dashboard-new-footer-two -->
@@ -445,5 +455,13 @@ class rtbDashboard {
445
  echo "<div class='error'><p>" . $this->message . "</p></div>";
446
  }
447
  }
 
 
 
 
 
 
 
 
448
  }
449
  } // endif
20
  }
21
 
22
  add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
23
+
24
+ add_action( 'wp_ajax_rtb_hide_upgrade_box', array($this, 'hide_upgrade_box') );
25
+ add_action( 'wp_ajax_rtb_display_upgrade_box', array($this, 'display_upgrade_box') );
26
  }
27
 
28
  public function add_dashboard_to_menu() {
41
  $new_submenu = array();
42
  $menu_item_count = 3;
43
 
44
+ if ( ! isset( $submenu['rtb-bookings'] ) or ! is_array($submenu['rtb-bookings']) ) { return; }
45
 
46
  foreach ( $submenu['rtb-bookings'] as $key => $sub_item ) {
47
  if ( $sub_item[0] == 'Dashboard' ) { $new_submenu[0] = $sub_item; }
175
  <div id="rtb-dashboard-content-left">
176
 
177
  <?php if ( ! $permission or ! $ultimate or get_option("RTB_Trial_Happening") == "Yes") { ?>
178
+ <div id="rtb-dashboard-upgrade-box" class="rtb-dashboard-new-widget-box ewd-widget-box-full <?php echo ( get_option( 'rtb-hide-upgrade-box' ) ? 'rtb-hidden' : '' ); ?>">
179
  <div class="rtb-dashboard-new-widget-box-top">
180
+ <?php if ( $permission ) { ?>
181
+ <div class="rtb-ultimate-notification">
182
+ <?php _e( 'Thanks for being a premium user! <strong>If you\'re looking to upgrade to our ultimate version, enter your new product key below.</strong>', 'restaurant-reservations' ); ?>
183
+ </div>
184
+ <div class="rtb-ultimate-upgrade-dismiss"></div>
185
+ <?php } ?>
186
  <form method="post" action="admin.php?page=rtb-dashboard" class="rtb-dashboard-key-widget">
187
  <input class="rtb-dashboard-key-widget-input" name="Key" type="text" placeholder="<?php _e('Enter License Key Here', 'restaurant-reservations'); ?>">
188
  <input class="rtb-dashboard-key-widget-submit" name="RTB_Upgrade_To_Full" type="submit" value="<?php echo ( ! $permission ? __('UNLOCK PREMIUM', 'restaurant-reservations') : __('UNLOCK ULTIMATE', 'restaurant-reservations') ) ?>">
209
  </a>
210
  </li>
211
  <li>
212
+ <a href="http://doc.fivestarplugins.com/plugins/restaurant-reservations/" target="_blank">
213
+ <img src="<?php echo plugins_url( '../assets/img/ewd-support-icon-documentation.png', __FILE__ ); ?>">
214
+ <div class="rtb-dashboard-support-widgets-text">Documentation</div>
215
  </a>
216
  </li>
217
  <li>
218
+ <a href="https://www.fivestarplugins.com/support-center/" target="_blank">
219
+ <img src="<?php echo plugins_url( '../assets/img/ewd-support-icon-forum.png', __FILE__ ); ?>">
220
+ <div class="rtb-dashboard-support-widgets-text">Get Support</div>
221
  </a>
222
  </li>
223
  </ul>
431
  <ul class="rtb-dashboard-new-footer-two-menu">
432
  <li>SUPPORT</li>
433
  <li><a href="https://www.youtube.com/channel/UCZPuaoetCJB1vZOmpnMxJNw/featured" target="_blank">YouTube Tutorials</a></li>
434
+ <li><a href="http://doc.fivestarplugins.com/plugins/restaurant-reservations/" target="_blank">Documentation</a></li>
435
+ <li><a href="https://www.fivestarplugins.com/support-center/" target="_blank">Get Support</a></li>
436
  <li><a href="https://wordpress.org/plugins/restaurant-reservations/#faq" target="_blank">FAQs</a></li>
437
+ <li><a id="rtb-dashboard-show-upgrade-box-link" href="#rtb-dashboard-upgrade-box">Ultimate Upgrade</a></li>
438
  </ul>
439
  </div>
440
  </div> <!-- rtb-dashboard-new-footer-two -->
455
  echo "<div class='error'><p>" . $this->message . "</p></div>";
456
  }
457
  }
458
+
459
+ public function hide_upgrade_box() {
460
+ update_option( 'rtb-hide-upgrade-box', true );
461
+ }
462
+
463
+ public function display_upgrade_box() {
464
+ update_option( 'rtb-hide-upgrade-box', false );
465
+ }
466
  }
467
  } // endif
includes/DeactivationSurvey.class.php ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+
4
+ if ( !class_exists( 'rtbDeactivationSurvey' ) ) {
5
+ /**
6
+ * Class to handle plugin deactivation survey
7
+ *
8
+ * @since 2.0.15
9
+ */
10
+ class rtbDeactivationSurvey {
11
+
12
+ public function __construct() {
13
+ add_action( 'current_screen', array( $this, 'maybe_add_survey' ) );
14
+ }
15
+
16
+ public function maybe_add_survey() {
17
+ if ( in_array( get_current_screen()->id, array( 'plugins', 'plugins-network' ), true) ) {
18
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_deactivation_scripts') );
19
+ add_action( 'admin_footer', array( $this, 'add_deactivation_html') );
20
+ }
21
+ }
22
+
23
+ public function enqueue_deactivation_scripts() {
24
+ wp_enqueue_style( 'rtb-deactivation-css', RTB_PLUGIN_URL . '/assets/css/plugin-deactivation.css' );
25
+ wp_enqueue_script( 'rtb-deactivation-js', RTB_PLUGIN_URL . '/assets/js/plugin-deactivation.js', array( 'jquery' ) );
26
+
27
+ wp_localize_script( 'rtb-deactivation-js', 'rtb_deactivation_data', array( 'site_url' => site_url() ) );
28
+ }
29
+
30
+ public function add_deactivation_html() {
31
+
32
+ $install_time = get_option( 'rtb-installation-time' );
33
+
34
+ $options = array(
35
+ 1 => array(
36
+ 'title' => esc_html__( 'I no longer need the plugin', 'restaurant-reservations' ),
37
+ ),
38
+ 2 => array(
39
+ 'title' => esc_html__( 'I\'m switching to a different plugin', 'restaurant-reservations' ),
40
+ 'details' => esc_html__( 'Please share which plugin', 'restaurant-reservations' ),
41
+ ),
42
+ 3 => array(
43
+ 'title' => esc_html__( 'I couldn\'t get the plugin to work', 'restaurant-reservations' ),
44
+ 'details' => esc_html__( 'Please share what wasn\'t working', 'restaurant-reservations' ),
45
+ ),
46
+ 4 => array(
47
+ 'title' => esc_html__( 'It\'s a temporary deactivation', 'restaurant-reservations' ),
48
+ ),
49
+ 5 => array(
50
+ 'title' => esc_html__( 'Other', 'restaurant-reservations' ),
51
+ 'details' => esc_html__( 'Please share the reason', 'restaurant-reservations' ),
52
+ ),
53
+ );
54
+ ?>
55
+ <div class="rtb-deactivate-survey-modal" id="rtb-deactivate-survey-restaurant-reservations">
56
+ <div class="rtb-deactivate-survey-wrap">
57
+ <form class="rtb-deactivate-survey" method="post" data-installtime="<?php echo $install_time; ?>">
58
+ <span class="rtb-deactivate-survey-title"><span class="dashicons dashicons-testimonial"></span><?php echo ' ' . __( 'Quick Feedback', 'restaurant-reservations' ); ?></span>
59
+ <span class="rtb-deactivate-survey-desc"><?php echo __('If you have a moment, please share why you are deactivating Five-Star Restaurant Reservations:', 'restaurant-reservations' ); ?></span>
60
+ <div class="rtb-deactivate-survey-options">
61
+ <?php foreach ( $options as $id => $option ) : ?>
62
+ <div class="rtb-deactivate-survey-option">
63
+ <label for="rtb-deactivate-survey-option-restaurant-reservations-<?php echo $id; ?>" class="rtb-deactivate-survey-option-label">
64
+ <input id="rtb-deactivate-survey-option-restaurant-reservations-<?php echo $id; ?>" class="rtb-deactivate-survey-option-input" type="radio" name="code" value="<?php echo $id; ?>" />
65
+ <span class="rtb-deactivate-survey-option-reason"><?php echo $option['title']; ?></span>
66
+ </label>
67
+ <?php if ( ! empty( $option['details'] ) ) : ?>
68
+ <input class="rtb-deactivate-survey-option-details" type="text" placeholder="<?php echo $option['details']; ?>" />
69
+ <?php endif; ?>
70
+ </div>
71
+ <?php endforeach; ?>
72
+ </div>
73
+ <div class="rtb-deactivate-survey-footer">
74
+ <button type="submit" class="rtb-deactivate-survey-submit button button-primary button-large"><?php _e('Submit and Deactivate', 'restaurant-reservations' ); ?></button>
75
+ <a href="#" class="rtb-deactivate-survey-deactivate"><?php _e('Skip and Deactivate', 'restaurant-reservations' ); ?></a>
76
+ </div>
77
+ </form>
78
+ </div>
79
+ </div>
80
+ <?php
81
+ }
82
+ }
83
+
84
+ }
includes/Editor.class.php CHANGED
@@ -793,11 +793,11 @@ class cffrtbEditor {
793
  *
794
  * @since 0.1
795
  */
796
- public function ajax_reset_all() {
797
  global $rtb_controller;
798
 
799
  // Authenticate request
800
- if ( !check_ajax_referer( 'cffrtb-editor', 'nonce' ) || !current_user_can( 'manage_options' ) ) {
801
  $this->nopriv_ajax();
802
  }
803
 
793
  *
794
  * @since 0.1
795
  */
796
+ public function ajax_reset_all( $authorized = false) {
797
  global $rtb_controller;
798
 
799
  // Authenticate request
800
+ if ( ( !check_ajax_referer( 'cffrtb-editor', 'nonce' ) || !current_user_can( 'manage_options' ) ) and ! $authorized ) {
801
  $this->nopriv_ajax();
802
  }
803
 
includes/Export.PDF.class.php CHANGED
@@ -129,7 +129,8 @@ class ebfrtbExportPDF extends ebfrtbExport {
129
  ob_get_clean();
130
 
131
  if ( $this->lib === 'tcpdf' || $this->lib === 'mpdf' ) {
132
- $this->export->Output( $filename, 'I'); exit();
 
133
 
134
  } else {
135
  do_action( 'ebcfrtb_pdf_deliver_' . $this->lib, $this );
129
  ob_get_clean();
130
 
131
  if ( $this->lib === 'tcpdf' || $this->lib === 'mpdf' ) {
132
+ $this->export->Output( $filename, 'I');
133
+ exit();
134
 
135
  } else {
136
  do_action( 'ebcfrtb_pdf_deliver_' . $this->lib, $this );
includes/InstallationWalkthrough.class.php CHANGED
@@ -31,7 +31,7 @@ class rtbInstallationWalkthrough {
31
  return;
32
 
33
  $bookings = get_posts(array('post_type' => 'rtb-booking'));
34
- if (!empty($bookings)) {
35
  set_transient('rtb-admin-install-notice', true, 5);
36
  return;
37
  }
31
  return;
32
 
33
  $bookings = get_posts(array('post_type' => 'rtb-booking'));
34
+ if ( ! empty($bookings)) {
35
  set_transient('rtb-admin-install-notice', true, 5);
36
  return;
37
  }
includes/Notification.Email.class.php CHANGED
@@ -130,12 +130,22 @@ class rtbNotificationEmail extends rtbNotification {
130
  $subject = $rtb_controller->settings->get_setting( 'subject-booking-user' );
131
  }
132
 
133
- } elseif ( $this->event == 'pending_to_confirmed' ) {
 
 
 
134
  $subject = $rtb_controller->settings->get_setting( 'subject-confirmed-user' );
135
 
136
  } elseif ( $this->event == 'pending_to_closed' ) {
137
  $subject = $rtb_controller->settings->get_setting( 'subject-rejected-user' );
138
 
 
 
 
 
 
 
 
139
  } elseif ( $this->event == 'late_user' ) {
140
  $subject = $rtb_controller->settings->get_setting( 'subject-late-user' );
141
 
@@ -175,8 +185,6 @@ class rtbNotificationEmail extends rtbNotification {
175
  */
176
  public function set_message() {
177
 
178
- $settings = get_option( 'rtb-settings' );
179
-
180
  if ( $this->event == 'new_submission' ) {
181
  if ( $this->target == 'user' ) {
182
  $template = $this->get_template( 'template-booking-user' );
@@ -184,6 +192,11 @@ class rtbNotificationEmail extends rtbNotification {
184
  $template = $this->get_template( 'template-booking-admin' );
185
  }
186
 
 
 
 
 
 
187
  } elseif ( $this->event == 'pending_to_confirmed' ) {
188
  if ( $this->target == 'user' ) {
189
  $template = $this->get_template( 'template-confirmed-user' );
@@ -194,6 +207,13 @@ class rtbNotificationEmail extends rtbNotification {
194
  $template = $this->get_template( 'template-rejected-user' );
195
  }
196
 
 
 
 
 
 
 
 
197
  } elseif ( $this->event == 'late_user' ) {
198
  if ( $this->target == 'user' ) {
199
  $template = $this->get_template( 'template-late-user' );
130
  $subject = $rtb_controller->settings->get_setting( 'subject-booking-user' );
131
  }
132
 
133
+ } elseif ( $this->event == 'rtb_confirmed_booking' ) {
134
+ $subject = $rtb_controller->settings->get_setting( 'subject-booking-confirmed-admin' );
135
+
136
+ }elseif ( $this->event == 'pending_to_confirmed' ) {
137
  $subject = $rtb_controller->settings->get_setting( 'subject-confirmed-user' );
138
 
139
  } elseif ( $this->event == 'pending_to_closed' ) {
140
  $subject = $rtb_controller->settings->get_setting( 'subject-rejected-user' );
141
 
142
+ } elseif ( $this->event == 'booking_cancelled' ) {
143
+ if ( $this->target == 'admin' ) {
144
+ $subject = $rtb_controller->settings->get_setting( 'subject-booking-cancelled-admin' );
145
+ } elseif ( $this->target == 'user' ) {
146
+ $subject = $rtb_controller->settings->get_setting( 'subject-booking-cancelled-user' );
147
+ }
148
+
149
  } elseif ( $this->event == 'late_user' ) {
150
  $subject = $rtb_controller->settings->get_setting( 'subject-late-user' );
151
 
185
  */
186
  public function set_message() {
187
 
 
 
188
  if ( $this->event == 'new_submission' ) {
189
  if ( $this->target == 'user' ) {
190
  $template = $this->get_template( 'template-booking-user' );
192
  $template = $this->get_template( 'template-booking-admin' );
193
  }
194
 
195
+ } elseif ( $this->event == 'rtb_confirmed_booking' ) {
196
+ if ( $this->target == 'admin' ) {
197
+ $template = $this->get_template( 'template-booking-confirmed-admin' );
198
+ }
199
+
200
  } elseif ( $this->event == 'pending_to_confirmed' ) {
201
  if ( $this->target == 'user' ) {
202
  $template = $this->get_template( 'template-confirmed-user' );
207
  $template = $this->get_template( 'template-rejected-user' );
208
  }
209
 
210
+ } elseif ( $this->event == 'booking_cancelled' ) {
211
+ if ( $this->target == 'user' ) {
212
+ $template = $this->get_template( 'template-booking-cancelled-user' );
213
+ } elseif ( $this->target == 'admin' ) {
214
+ $template = $this->get_template( 'template-booking-cancelled-admin' );
215
+ }
216
+
217
  } elseif ( $this->event == 'late_user' ) {
218
  if ( $this->target == 'user' ) {
219
  $template = $this->get_template( 'template-late-user' );
includes/Notification.SMS.class.php ADDED
@@ -0,0 +1,149 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+
4
+ if ( !class_exists( 'rtbNotificationSMS' ) ) {
5
+ /**
6
+ * Class to handle an SMS notification for Restaurant Reservations
7
+ *
8
+ * This class extends rtbNotification and must implement the following methods:
9
+ * prepare_notification() - set up and validate data
10
+ * send_notification()
11
+ *
12
+ * @since 2.1.0
13
+ */
14
+ class rtbNotificationSMS extends rtbNotification {
15
+
16
+ /**
17
+ * Recipient phone number
18
+ * @since 2.1.0
19
+ */
20
+ public $phone_number;
21
+
22
+ /**
23
+ * Text message body
24
+ * @since 2.1.0
25
+ */
26
+ public $message;
27
+
28
+ /**
29
+ * The license key received for RTB Ultimate
30
+ * @since 2.1.0
31
+ */
32
+ public $license_key;
33
+
34
+ /**
35
+ * Email used for purchase, to validate message sending
36
+ * @since 2.1.0
37
+ */
38
+ public $purchase_email;
39
+
40
+
41
+ /**
42
+ * Prepare and validate notification data
43
+ *
44
+ * @return boolean if the data is valid and ready for transport
45
+ * @since 2.1.0
46
+ */
47
+ public function prepare_notification() {
48
+
49
+ $this->set_phone_number();
50
+ $this->set_message();
51
+ $this->set_license_key();
52
+ $this->set_purchase_email();
53
+
54
+ // Return false if we're missing any of the required information
55
+ if ( empty( $this->phone_number) ||
56
+ empty( $this->message) ||
57
+ empty( $this->license_key) ||
58
+ empty( $this->purchase_email) ) {
59
+ return false;
60
+ }
61
+
62
+ return true;
63
+ }
64
+
65
+ /**
66
+ * Set phone number
67
+ * @since 2.1.0
68
+ */
69
+ public function set_phone_number() {
70
+
71
+ $phone_number = $this->booking->phone;
72
+
73
+ $this->phone_number = apply_filters( 'rtb_notification_sms_phone_number', $phone_number, $this );
74
+
75
+ }
76
+
77
+ /**
78
+ * Set text message body
79
+ * @since 2.1.0
80
+ */
81
+ public function set_message() {
82
+
83
+ if ( $this->event == 'late_user' ) {
84
+ if ( $this->target == 'user' ) {
85
+ $template = $this->get_template( 'template-late-user' );
86
+ }
87
+
88
+ } elseif ( $this->event == 'reminder' ) {
89
+ if ( $this->target == 'user' ) {
90
+ $template = $this->get_template( 'template-reminder-user' );
91
+ }
92
+
93
+ // Use a message that's been appended manually if available
94
+ } else {
95
+ $template = empty( $this->message ) ? '' : $this->message;
96
+ }
97
+
98
+ $this->message = apply_filters( 'rtb_notification_sms_template', $this->process_template( $template ), $this );
99
+
100
+ }
101
+
102
+ /**
103
+ * Set license key
104
+ * @since 2.1.0
105
+ */
106
+ public function set_license_key() {
107
+
108
+ $this->license_key = get_option( 'rtb-ultimate-license-key' );
109
+
110
+ }
111
+
112
+ /**
113
+ * Set purchase email
114
+ * @since 2.1.0
115
+ */
116
+ public function set_purchase_email() {
117
+
118
+ global $rtb_controller;
119
+
120
+ $this->purchase_email = $rtb_controller->settings->get_setting( 'ultimate-purchase-email' );
121
+
122
+ }
123
+
124
+ /**
125
+ * Send notification
126
+ * @since 2.1.0
127
+ */
128
+ public function send_notification() {
129
+ global $rtb_controller;
130
+
131
+ $url = add_query_arg(
132
+ array(
133
+ 'license_key' => urlencode( $this->license_key ),
134
+ 'admin_email' => urlencode( $this->purchase_email ),
135
+ 'phone_number' => urlencode( $this->phone_number ),
136
+ 'message' => urlencode( $this->message ),
137
+ 'country_code' => urlencode( $rtb_controller->settings->get_setting( 'rtb-country-code' ) )
138
+ ),
139
+ 'http://www.fivestarplugins.com/sms-handling/sms-client.php'
140
+ );
141
+
142
+ $opts = array('http'=>array('method'=>"GET"));
143
+ $context = stream_context_create($opts);
144
+ $return = json_decode( file_get_contents( $url, false, $context ) );
145
+
146
+ return isset($return->success) ? $return->success : false;
147
+ }
148
+ }
149
+ } // endif;
includes/Notification.class.php CHANGED
@@ -77,6 +77,19 @@ abstract class rtbNotification {
77
  * @since 0.0.1
78
  */
79
  public function process_template( $message ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
81
  $template_tags = array(
82
  '{user_email}' => $this->booking->email,
@@ -86,6 +99,7 @@ abstract class rtbNotification {
86
  '{phone}' => $this->booking->phone,
87
  '{message}' => $this->booking->message,
88
  '{bookings_link}' => '<a href="' . admin_url( 'admin.php?page=rtb-bookings&status=pending' ) . '">' . __( 'View pending bookings', 'restaurant-reservations' ) . '</a>',
 
89
  '{confirm_link}' => '<a href="' . admin_url( 'admin.php?page=rtb-bookings&rtb-quicklink=confirm&booking=' . esc_attr( $this->booking->ID ) ) . '">' . __( 'Confirm this booking', 'restaurant-reservations' ) . '</a>',
90
  '{close_link}' => '<a href="' . admin_url( 'admin.php?page=rtb-bookings&rtb-quicklink=close&booking=' . esc_attr( $this->booking->ID ) ) . '">' . __( 'Reject this booking', 'restaurant-reservations' ) . '</a>',
91
  '{site_name}' => get_bloginfo( 'name' ),
77
  * @since 0.0.1
78
  */
79
  public function process_template( $message ) {
80
+ global $rtb_controller;
81
+
82
+ $booking_page_id = $rtb_controller->settings->get_setting( 'booking-page' );
83
+ $booking_page_url = get_permalink( $booking_page_id );
84
+
85
+ $cancellation_url = add_query_arg(
86
+ array(
87
+ 'action' => 'cancel',
88
+ 'booking_id' => $this->booking->ID,
89
+ 'booking_email' => $this->booking->email
90
+ ),
91
+ $booking_page_url
92
+ );
93
 
94
  $template_tags = array(
95
  '{user_email}' => $this->booking->email,
99
  '{phone}' => $this->booking->phone,
100
  '{message}' => $this->booking->message,
101
  '{bookings_link}' => '<a href="' . admin_url( 'admin.php?page=rtb-bookings&status=pending' ) . '">' . __( 'View pending bookings', 'restaurant-reservations' ) . '</a>',
102
+ '{cancel_link}' => '<a href="' . esc_attr( $cancellation_url ) . '">' . __( 'Cancel booking', 'restaurant-reservations' ) . '</a>',
103
  '{confirm_link}' => '<a href="' . admin_url( 'admin.php?page=rtb-bookings&rtb-quicklink=confirm&booking=' . esc_attr( $this->booking->ID ) ) . '">' . __( 'Confirm this booking', 'restaurant-reservations' ) . '</a>',
104
  '{close_link}' => '<a href="' . admin_url( 'admin.php?page=rtb-bookings&rtb-quicklink=close&booking=' . esc_attr( $this->booking->ID ) ) . '">' . __( 'Reject this booking', 'restaurant-reservations' ) . '</a>',
105
  '{site_name}' => get_bloginfo( 'name' ),
includes/Notifications.class.php CHANGED
@@ -45,9 +45,12 @@ class rtbNotifications {
45
 
46
  // Hook into all events that require notifications
47
  $hooks = array(
48
- 'rtb_insert_booking' => array( $this, 'new_submission' ), // Booking submitted
49
- 'pending_to_confirmed' => array( $this, 'pending_to_confirmed' ), // Booking confirmed
50
- 'pending_to_closed' => array( $this, 'pending_to_closed' ), // Booking can not be made
 
 
 
51
  );
52
 
53
  $hooks = apply_filters( 'rtb_notification_transition_callbacks', $hooks );
@@ -64,14 +67,22 @@ class rtbNotifications {
64
  new rtbNotificationEmail( 'new_submission', 'user' ),
65
  new rtbNotificationEmail( 'pending_to_confirmed', 'user' ),
66
  new rtbNotificationEmail( 'pending_to_closed', 'user' ),
 
67
  );
68
 
69
  global $rtb_controller;
70
- $admin_email_option = $rtb_controller->settings->get_setting( 'admin-email-option' );
71
- if ( $admin_email_option ) {
72
  $this->notifications[] = new rtbNotificationEmail( 'new_submission', 'admin' );
73
  }
74
 
 
 
 
 
 
 
 
 
75
  $this->notifications = apply_filters( 'rtb_notifications', $this->notifications );
76
  }
77
 
@@ -98,6 +109,11 @@ class rtbNotifications {
98
  return;
99
  }
100
 
 
 
 
 
 
101
  // If the post status is not pending, trigger a post status
102
  // transition as though it's gone from pending_to_{status}
103
  if ( $booking->post_status != 'pending' ) {
@@ -110,6 +126,22 @@ class rtbNotifications {
110
  }
111
  }
112
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  /**
114
  * Booking confirmed
115
  * @since 0.0.1
@@ -142,6 +174,21 @@ class rtbNotifications {
142
 
143
  }
144
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  /**
146
  * Booking was confirmed and is now completed. Send out an optional
147
  * follow-up email.
45
 
46
  // Hook into all events that require notifications
47
  $hooks = array(
48
+ 'rtb_insert_booking' => array( $this, 'new_submission' ), // Booking submitted
49
+ 'rtb_confirmed_booking' => array( $this, 'new_confirmed_submission' ), // Booking confirmed
50
+ 'pending_to_confirmed' => array( $this, 'pending_to_confirmed' ), // Booking confirmed
51
+ 'pending_to_closed' => array( $this, 'pending_to_closed' ), // Booking can not be made
52
+ 'pending_to_cancelled' => array( $this, 'booking_cancelled' ), // Booking cancelled
53
+ 'confirmed_to_cancelled' => array( $this, 'booking_cancelled' ), // Booking cancelled
54
  );
55
 
56
  $hooks = apply_filters( 'rtb_notification_transition_callbacks', $hooks );
67
  new rtbNotificationEmail( 'new_submission', 'user' ),
68
  new rtbNotificationEmail( 'pending_to_confirmed', 'user' ),
69
  new rtbNotificationEmail( 'pending_to_closed', 'user' ),
70
+ new rtbNotificationEmail( 'booking_cancelled', 'user' ),
71
  );
72
 
73
  global $rtb_controller;
74
+ if ( $rtb_controller->settings->get_setting( 'admin-email-option' ) ) {
 
75
  $this->notifications[] = new rtbNotificationEmail( 'new_submission', 'admin' );
76
  }
77
 
78
+ if ( $rtb_controller->settings->get_setting( 'admin-confirmed-email-option' ) ) {
79
+ $this->notifications[] = new rtbNotificationEmail( 'rtb_confirmed_booking', 'admin' );
80
+ }
81
+
82
+ if ( $rtb_controller->settings->get_setting( 'admin-cancelled-email-option' ) ) {
83
+ $this->notifications[] = new rtbNotificationEmail( 'booking_cancelled', 'admin' );
84
+ }
85
+
86
  $this->notifications = apply_filters( 'rtb_notifications', $this->notifications );
87
  }
88
 
109
  return;
110
  }
111
 
112
+ // trigger an event so that admin notifications for a new confirmed booking can be sent
113
+ if ( $booking->post_status == 'confirmed' ) {
114
+ do_action( 'rtb_confirmed_booking', get_post( $booking->ID ) );
115
+ }
116
+
117
  // If the post status is not pending, trigger a post status
118
  // transition as though it's gone from pending_to_{status}
119
  if ( $booking->post_status != 'pending' ) {
126
  }
127
  }
128
 
129
+ /**
130
+ * New confirmed booking
131
+ * @since 2.1.0
132
+ */
133
+ public function new_confirmed_submission( $booking_post ) {
134
+
135
+ if ( $booking_post->post_type != RTB_BOOKING_POST_TYPE ) {
136
+ return;
137
+ }
138
+
139
+ $this->set_booking( $booking_post );
140
+
141
+ $this->event( 'rtb_confirmed_booking' );
142
+
143
+ }
144
+
145
  /**
146
  * Booking confirmed
147
  * @since 0.0.1
174
 
175
  }
176
 
177
+ /**
178
+ * Booking has been cancelled by the guest
179
+ */
180
+ public function booking_cancelled( $booking_post ) {
181
+
182
+ if ( $booking_post->post_type != RTB_BOOKING_POST_TYPE ) {
183
+ return;
184
+ }
185
+
186
+ $this->set_booking( $booking_post );
187
+
188
+ $this->event( 'booking_cancelled' );
189
+
190
+ }
191
+
192
  /**
193
  * Booking was confirmed and is now completed. Send out an optional
194
  * follow-up email.
includes/Permissions.class.php CHANGED
@@ -23,14 +23,15 @@ class rtbPermissions {
23
  "designer" => 2,
24
  "premium_view_bookings" => 2,
25
  "premium_table_restrictions" => 2,
26
- "reminders" => 2,
 
27
  );
28
  }
29
 
30
  public function set_permissions() {
31
  global $rtb_controller;
32
 
33
- if ( get_option( "rtb-permission-level" ) == 2 ) { return; }
34
 
35
  $cffrtb = $rtb_controller->settings->get_setting( 'license-cffrtb' );
36
  $ebfrtb = $rtb_controller->settings->get_setting( 'license-ebfrtb' );
@@ -49,7 +50,7 @@ class rtbPermissions {
49
  if ( ! $this->permission_level ) { $this->set_permissions(); }
50
  }
51
 
52
- public function check_permission($permission_type = '') {
53
  if ( ! $this->permission_level ) { $this->get_permission_level(); }
54
 
55
  return ( array_key_exists( $permission_type, $this->plugin_permissions ) ? ( $this->permission_level >= $this->plugin_permissions[$permission_type] ? true : false ) : false );
23
  "designer" => 2,
24
  "premium_view_bookings" => 2,
25
  "premium_table_restrictions" => 2,
26
+ "payments" => 3,
27
+ "reminders" => 3,
28
  );
29
  }
30
 
31
  public function set_permissions() {
32
  global $rtb_controller;
33
 
34
+ if ( get_option( "rtb-permission-level" ) >= 2 ) { return; }
35
 
36
  $cffrtb = $rtb_controller->settings->get_setting( 'license-cffrtb' );
37
  $ebfrtb = $rtb_controller->settings->get_setting( 'license-ebfrtb' );
50
  if ( ! $this->permission_level ) { $this->set_permissions(); }
51
  }
52
 
53
+ public function check_permission( $permission_type = '' ) {
54
  if ( ! $this->permission_level ) { $this->get_permission_level(); }
55
 
56
  return ( array_key_exists( $permission_type, $this->plugin_permissions ) ? ( $this->permission_level >= $this->plugin_permissions[$permission_type] ? true : false ) : false );
includes/Query.class.php CHANGED
@@ -124,6 +124,12 @@ class rtbQuery {
124
  'after' => '-1 hour', // show bookings that have just passed
125
  )
126
  );
 
 
 
 
 
 
127
  }
128
  }
129
 
@@ -178,6 +184,7 @@ class rtbQuery {
178
 
179
  if ( !empty( $_REQUEST['orderby'] ) ) {
180
  $args['orderby'] = sanitize_key( $_REQUEST['orderby'] );
 
181
  }
182
 
183
  if ( !empty( $_REQUEST['order'] ) && $_REQUEST['order'] === 'desc' ) {
@@ -228,7 +235,7 @@ class rtbQuery {
228
  }
229
  }
230
  }
231
-
232
  $this->bookings = $bookings;
233
 
234
  wp_reset_query();
124
  'after' => '-1 hour', // show bookings that have just passed
125
  )
126
  );
127
+ } elseif ( $args['date_range'] === 'past' ) {
128
+ $args['date_query'] = array(
129
+ array(
130
+ 'before' => 'now',
131
+ )
132
+ );
133
  }
134
  }
135
 
184
 
185
  if ( !empty( $_REQUEST['orderby'] ) ) {
186
  $args['orderby'] = sanitize_key( $_REQUEST['orderby'] );
187
+ if ( $args['orderby'] === 'id' ) { $args['orderby'] = 'ID'; }
188
  }
189
 
190
  if ( !empty( $_REQUEST['order'] ) && $_REQUEST['order'] === 'desc' ) {
235
  }
236
  }
237
  }
238
+
239
  $this->bookings = $bookings;
240
 
241
  wp_reset_query();
includes/ReviewAsk.class.php ADDED
@@ -0,0 +1,98 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ if ( !defined( 'ABSPATH' ) ) exit;
3
+
4
+ if ( !class_exists( 'rtbReviewAsk' ) ) {
5
+ /**
6
+ * Class to handle plugin review ask
7
+ *
8
+ * @since 2.0.15
9
+ */
10
+ class rtbReviewAsk {
11
+
12
+ public function __construct() {
13
+ add_action( 'admin_notices', array( $this, 'maybe_add_review_ask' ) );
14
+
15
+ add_action( 'wp_ajax_rtb_hide_review_ask', array( $this, 'hide_review_ask' ) );
16
+ add_action( 'wp_ajax_rtb_send_feedback', array( $this, 'send_feedback' ) );
17
+
18
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_review_ask_scripts') );
19
+ }
20
+
21
+ public function maybe_add_review_ask() {
22
+ $ask_review_time = get_option( 'rtb-review-ask-time' );
23
+
24
+ $install_time = get_option( 'rtb-installation-time' );
25
+ if ( ! $install_time ) { update_option( 'rtb-installation-time', time() ); }
26
+
27
+ $ask_review_time = $ask_review_time != '' ? $ask_review_time : $install_time + 3600*24*4;
28
+
29
+ if ($ask_review_time < time() and $install_time != '' and $install_time < time() - 3600*24*4) {
30
+
31
+ global $pagenow;
32
+
33
+ if ( $pagenow != 'post.php' && $pagenow != 'post-new.php' ) { ?>
34
+
35
+ <div class='notice notice-info is-dismissible rtb-main-dashboard-review-ask' style='display:none'>
36
+ <div class='rtb-review-ask-plugin-icon'></div>
37
+ <div class='rtb-review-ask-text'>
38
+ <p class='rtb-review-ask-starting-text'>Enjoying using the Five-Star Restaurant Reservations?</p>
39
+ <p class='rtb-review-ask-feedback-text rtb-hidden'>Help us make the plugin better! Please take a minute to rate the plugin. Thanks!</p>
40
+ <p class='rtb-review-ask-review-text rtb-hidden'>Please let us know what we could do to make the plugin better!<br /><span>(If you would like a response, please include your email address.)</span></p>
41
+ <p class='rtb-review-ask-thank-you-text rtb-hidden'>Thank you for taking the time to help us!</p>
42
+ </div>
43
+ <div class='rtb-review-ask-actions'>
44
+ <div class='rtb-review-ask-action rtb-review-ask-not-really rtb-review-ask-white'>Not Really</div>
45
+ <div class='rtb-review-ask-action rtb-review-ask-yes rtb-review-ask-green'>Yes!</div>
46
+ <div class='rtb-review-ask-action rtb-review-ask-no-thanks rtb-review-ask-white rtb-hidden'>No Thanks</div>
47
+ <a href='https://wordpress.org/support/plugin/restaurant-reservations/reviews/' target='_blank'>
48
+ <div class='rtb-review-ask-action rtb-review-ask-review rtb-review-ask-green rtb-hidden'>OK, Sure</div>
49
+ </a>
50
+ </div>
51
+ <div class='rtb-review-ask-feedback-form rtb-hidden'>
52
+ <div class='rtb-review-ask-feedback-explanation'>
53
+ <textarea></textarea>
54
+ <br>
55
+ <input type="email" name="feedback_email_address" placeholder="<?php _e('Email Address', 'restaurant-reservations'); ?>">
56
+ </div>
57
+ <div class='rtb-review-ask-send-feedback rtb-review-ask-action rtb-review-ask-green'>Send Feedback</div>
58
+ </div>
59
+ <div class='rtb-clear'></div>
60
+ </div>
61
+
62
+ <?php
63
+ }
64
+ }
65
+ else {
66
+ wp_dequeue_script( 'rtb-review-ask-js' );
67
+ }
68
+ }
69
+
70
+ public function enqueue_review_ask_scripts() {
71
+ wp_enqueue_style( 'rtb-review-ask-css', RTB_PLUGIN_URL . '/assets/css/dashboard-review-ask.css' );
72
+ wp_enqueue_script( 'rtb-review-ask-js', RTB_PLUGIN_URL . '/assets/js/dashboard-review-ask.js', array( 'jquery' ), RTB_VERSION, true );
73
+ }
74
+
75
+ public function hide_review_ask() {
76
+
77
+ $ask_review_time = sanitize_text_field($_POST['ask_review_time']);
78
+
79
+ if ( get_option( 'rtb-review-ask-time' ) < time() + 3600*24 * $ask_review_time ) {
80
+ update_option( 'rtb-review-ask-time', time() + 3600*24 * $ask_review_time );
81
+ }
82
+
83
+ die();
84
+ }
85
+
86
+ public function send_feedback() {
87
+ $headers = 'Content-type: text/html;charset=utf-8' . "\r\n";
88
+ $feedback = sanitize_text_field($_POST['feedback']);
89
+ $feedback .= '<br /><br />Email Address: ';
90
+ $feedback .= sanitize_text_field($_POST['email_address']);
91
+
92
+ wp_mail('contact@fivestarplugins.com', 'RTB Feedback - Dashboard Form', $feedback, $headers);
93
+
94
+ die();
95
+ }
96
+ }
97
+
98
+ }
includes/Settings.class.php CHANGED
@@ -70,6 +70,270 @@ class rtbSettings {
70
  'zh_TW' => 'zh_TW',
71
  );
72
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  public function __construct() {
74
 
75
  add_action( 'init', array( $this, 'set_defaults' ) );
@@ -97,6 +361,13 @@ class rtbSettings {
97
  'time-format' => _x( 'h:i A', 'Default time format for display. Must match formatting rules at http://amsul.ca/pickadate.js/time/#formats', 'restaurant-reservations' ),
98
  'time-interval' => _x( '30', 'Default interval in minutes when selecting a time.', 'restaurant-reservations' ),
99
 
 
 
 
 
 
 
 
100
  // Export defaults
101
  'ebfrtb-paper-size' => 'A4',
102
  'ebfrtb-pdf-lib' => 'mpdf',
@@ -107,6 +378,7 @@ class rtbSettings {
107
 
108
  // Email address where admin notifications should be sent
109
  'admin-email-address' => get_option( 'admin_email' ),
 
110
 
111
  // Name and email address which should appear in the Reply-To section of notification emails
112
  'reply-to-name' => get_bloginfo( 'name' ),
@@ -146,6 +418,62 @@ Give us a few moments to make sure that we\'ve got space for you. You will recei
146
 
147
  &nbsp;
148
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  <em>This message was sent by {site_link} on {current_time}.</em>',
150
  'Default email sent to users when they make a new booking request. The tags in {brackets} will be replaced by the appropriate content and should be left in place. HTML is allowed, but be aware that many email clients do not handle HTML very well.',
151
  'restaurant-reservations'
@@ -186,40 +514,35 @@ Sorry, we could not accomodate your booking request. We\'re full or not open at
186
  'restaurant-reservations'
187
  ),
188
 
189
- // Email template sent to a user when a booking request is rejected
190
- 'subject-reminder-user' => sprintf( _x( 'Reminder: Your reservation at %s', 'Default email subject sent to user as a reminder about for their booking. %s will be replaced by the website name', 'restaurant-reservations' ), get_bloginfo( 'name' ) ),
191
- 'template-reminder-user' => _x( 'Hi {user_name},
192
 
193
- You have a reservation with the following details:
194
 
195
  {date}
196
  {user_name}
197
  {party} people
198
 
199
- If you won\'t be able to make it or need to modify your reservation, please let us know.
200
 
201
  &nbsp;
202
 
203
  <em>This message was sent by {site_link} on {current_time}.</em>',
 
 
 
 
 
 
 
204
  'Default email sent to users as a reminder about their booking request. The tags in {brackets} will be replaced by the appropriate content and should be left in place. HTML is allowed, but be aware that many email clients do not handle HTML very well.',
205
  'restaurant-reservations'
206
  ),
207
 
208
- // Email template sent to a user when a booking request is rejected
209
  'subject-late-user' => sprintf( _x( 'You\'re late for your booking at %s', 'Default email subject sent to user when they are late for their booking. %s will be replaced by the website name', 'restaurant-reservations' ), get_bloginfo( 'name' ) ),
210
- 'template-late-user' => _x( 'Hi {user_name},
211
-
212
- You previously made a reservation with the following details:
213
-
214
- {date}
215
- {user_name}
216
- {party} people
217
-
218
- If you won\'t be able to make it, please let us know so that we can release your table to other guests.
219
-
220
- &nbsp;
221
-
222
- <em>This message was sent by {site_link} on {current_time}.</em>',
223
  'Default email sent to users when they are late for their booking request. The tags in {brackets} will be replaced by the appropriate content and should be left in place. HTML is allowed, but be aware that many email clients do not handle HTML very well.',
224
  'restaurant-reservations'
225
  ),
@@ -260,6 +583,24 @@ If you won\'t be able to make it, please let us know so that we can release your
260
  return apply_filters( 'rtb-setting-' . $setting, null );
261
  }
262
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
263
  /**
264
  * Load the admin settings page
265
  * @since 0.0.1
@@ -391,6 +732,7 @@ If you won\'t be able to make it, please let us know so that we can release your
391
  '7' => __( 'From 1 week in advance', 'restaurant-reservations' ),
392
  '14' => __( 'From 2 weeks in advance', 'restaurant-reservations' ),
393
  '30' => __( 'From 30 days in advance', 'restaurant-reservations' ),
 
394
  '90' => __( 'From 90 days in advance', 'restaurant-reservations' ),
395
  )
396
  )
@@ -544,6 +886,17 @@ If you won\'t be able to make it, please let us know so that we can release your
544
  )
545
  );
546
 
 
 
 
 
 
 
 
 
 
 
 
547
  $sap->add_setting(
548
  'rtb-settings',
549
  'rtb-general',
@@ -584,6 +937,28 @@ If you won\'t be able to make it, please let us know so that we can release your
584
  )
585
  );
586
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
587
  $sap->add_section(
588
  'rtb-settings',
589
  array(
@@ -663,6 +1038,48 @@ If you won\'t be able to make it, please let us know so that we can release your
663
  )
664
  );
665
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
666
  $sap->add_section(
667
  'rtb-settings',
668
  array(
@@ -813,6 +1230,7 @@ If you won\'t be able to make it, please let us know so that we can release your
813
  'units' => array( 'minutes' => 'Minutes' )
814
  )
815
  );
 
816
  $sap->add_setting(
817
  'rtb-settings',
818
  'rtb-table-seat-assignments',
@@ -823,6 +1241,7 @@ If you won\'t be able to make it, please let us know so that we can release your
823
  'description' => __( 'Only allow a certain number of reservations (set below) during a specific time. Once the maximum number of reservations has been reached, visitors will only be able to select other reservation times.', 'restaurant-reservations' )
824
  )
825
  );
 
826
  $sap->add_setting(
827
  'rtb-settings',
828
  'rtb-table-seat-assignments',
@@ -836,6 +1255,7 @@ If you won\'t be able to make it, please let us know so that we can release your
836
  'increment' => 1
837
  )
838
  );
 
839
  $sap->add_setting(
840
  'rtb-settings',
841
  'rtb-table-seat-assignments',
@@ -849,6 +1269,7 @@ If you won\'t be able to make it, please let us know so that we can release your
849
  'increment' => 1
850
  )
851
  );
 
852
  $sap->add_setting(
853
  'rtb-settings',
854
  'rtb-table-seat-assignments',
@@ -1037,6 +1458,28 @@ If you won\'t be able to make it, please let us know so that we can release your
1037
  )
1038
  );
1039
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1040
  $sap->add_setting(
1041
  'rtb-settings',
1042
  'rtb-notifications',
@@ -1096,6 +1539,30 @@ If you won\'t be able to make it, please let us know so that we can release your
1096
  )
1097
  );
1098
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1099
  $sap->add_setting(
1100
  'rtb-settings',
1101
  'rtb-notifications-templates',
@@ -1168,6 +1635,30 @@ If you won\'t be able to make it, please let us know so that we can release your
1168
  )
1169
  );
1170
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1171
  $sap->add_setting(
1172
  'rtb-settings',
1173
  'rtb-notifications-templates',
@@ -1182,110 +1673,179 @@ If you won\'t be able to make it, please let us know so that we can release your
1182
 
1183
  if ( ! $rtb_controller->permissions->check_permission('reminders') ) {
1184
  $reminders_permissions = array(
1185
- 'disabled' => true,
1186
- 'disabled_image'=> 'https://www.etoilewebdesign.com/wp-content/uploads/2018/06/Logo-White-Filled40-px.png',
1187
- 'purchase_link' => 'https://www.fivestarplugins.com/plugins/five-star-restaurant-reservations/'
 
1188
  );
1189
  }
1190
  else { $reminders_permissions = array(); }
1191
 
1192
- // $sap->add_section(
1193
- // 'rtb-settings',
1194
- // array_merge(
1195
- // array(
1196
- // 'id' => 'rtb-reservation-reminders',
1197
- // 'title' => __( 'Reservation Reminders', 'restaurant-reservations' ),
1198
- // 'tab' => 'rtb-notifications-tab',
1199
- // 'description' => __( 'Set up reservation and late arrival reminders.' ),
1200
- // ),
1201
- // $reminders_permissions
1202
- // )
1203
- // );
1204
-
1205
- // $sap->add_setting(
1206
- // 'rtb-settings',
1207
- // 'rtb-reservation-reminders',
1208
- // 'count',
1209
- // array(
1210
- // 'id' => 'time-reminder-user',
1211
- // 'title' => __( 'Reservation Reminder Before Time', 'restaurant-reservations' ),
1212
- // 'description' => __( 'How long before a reservation should a reminder email be sent? Leave blank to not send a reservation reminder.', 'restaurant-reservations' ),
1213
- // 'min_value' => 1,
1214
- // 'max_value' => 60,
1215
- // 'increment' => 1,
1216
- // 'units' => array(
1217
- // 'minutes' => 'Minutes',
1218
- // 'hours' => 'Hours',
1219
- // 'days' => 'Days'
1220
- // )
1221
- // )
1222
- // );
1223
-
1224
- // $sap->add_setting(
1225
- // 'rtb-settings',
1226
- // 'rtb-reservation-reminders',
1227
- // 'text',
1228
- // array(
1229
- // 'id' => 'subject-reminder-user',
1230
- // 'title' => __( 'Reservation Reminder Email Subject', 'restaurant-reservations' ),
1231
- // 'description' => __( 'The email subject a user should receive as a reminder about their reservation.', 'restaurant-reservations' ),
1232
- // 'placeholder' => $this->defaults['subject-reminder-user'],
1233
- // )
1234
- // );
1235
-
1236
- // $sap->add_setting(
1237
- // 'rtb-settings',
1238
- // 'rtb-reservation-reminders',
1239
- // 'editor',
1240
- // array(
1241
- // 'id' => 'template-reminder-user',
1242
- // 'title' => __( 'Reservation Reminder Email', 'restaurant-reservations' ),
1243
- // 'description' => __( 'Enter the email a user should receive as a reminder about their reservation.', 'restaurant-reservations' ),
1244
- // 'default' => $this->defaults['template-reminder-user'],
1245
- // )
1246
- // );
1247
-
1248
- // $sap->add_setting(
1249
- // 'rtb-settings',
1250
- // 'rtb-notifications-templates',
1251
- // 'count',
1252
- // array(
1253
- // 'id' => 'time-late-user',
1254
- // 'title' => __( 'Late for Reservation Time', 'restaurant-reservations' ),
1255
- // 'description' => __( 'How long after being late for a reservation should a late arrival email be sent? Leave blank to not send a late arrival email.', 'restaurant-reservations' ),
1256
- // 'min_value' => 1,
1257
- // 'max_value' => 60,
1258
- // 'increment' => 1,
1259
- // 'units' => array(
1260
- // 'minutes' => 'Minutes',
1261
- // 'hours' => 'Hours',
1262
- // )
1263
- // )
1264
- // );
1265
-
1266
- // $sap->add_setting(
1267
- // 'rtb-settings',
1268
- // 'rtb-reservation-reminders',
1269
- // 'text',
1270
- // array(
1271
- // 'id' => 'subject-late-user',
1272
- // 'title' => __( 'Late for Reservation Email Subject', 'restaurant-reservations' ),
1273
- // 'description' => __( 'The email subject a user should receive when they are late for their reservation.', 'restaurant-reservations' ),
1274
- // 'placeholder' => $this->defaults['subject-late-user'],
1275
- // )
1276
- // );
1277
-
1278
- // $sap->add_setting(
1279
- // 'rtb-settings',
1280
- // 'rtb-reservation-reminders',
1281
- // 'editor',
1282
- // array(
1283
- // 'id' => 'template-late-user',
1284
- // 'title' => __( 'Late for Reservation Email', 'restaurant-reservations' ),
1285
- // 'description' => __( 'Enter the email a user should receive when they are late for their reservation.', 'restaurant-reservations' ),
1286
- // 'default' => $this->defaults['template-late-user'],
1287
- // )
1288
- // );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1289
 
1290
  $sap->add_section(
1291
  'rtb-settings',
@@ -1304,11 +1864,216 @@ If you won\'t be able to make it, please let us know so that we can release your
1304
  array(
1305
  'id' => 'from-email-address',
1306
  'title' => __( 'FROM Email Address Header', 'restaurant-reservations' ),
1307
- 'description' => sprintf( __( "Change the email address used in the FROM header of all emails sent by this plugin. In most cases you should not change this. Modifying this can prevent your emails from being delivered. %sLearn more%s.", 'restaurant-reservations' ), '<a href="http://doc.themeofthecrop.com/plugins/restaurant-reservations/user/faq#no-emails-from-header">', '</a>' ),
1308
  'placeholder' => $this->defaults['from-email-address'],
1309
  )
1310
  );
1311
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1312
  if ( ! $rtb_controller->permissions->check_permission('export') ) {
1313
  $export_permissions = array(
1314
  'disabled' => true,
@@ -1606,6 +2371,88 @@ If you won\'t be able to make it, please let us know so that we can release your
1606
  )
1607
  );
1608
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1609
  $sap = apply_filters( 'rtb_settings_page', $sap );
1610
 
1611
  $sap->add_admin_menus();
@@ -1848,6 +2695,7 @@ If you won\'t be able to make it, please let us know so that we can release your
1848
  '{phone}' => __( 'Phone number if supplied with the request', 'restaurant-reservations' ),
1849
  '{message}' => __( 'Message added to the request', 'restaurant-reservations' ),
1850
  '{bookings_link}' => __( 'A link to the admin panel showing pending bookings', 'restaurant-reservations' ),
 
1851
  '{confirm_link}' => __( 'A link to confirm this booking. Only include this in admin notifications', 'restaurant-reservations' ),
1852
  '{close_link}' => __( 'A link to reject this booking. Only include this in admin notifications', 'restaurant-reservations' ),
1853
  '{site_name}' => __( 'The name of this website', 'restaurant-reservations' ),
70
  'zh_TW' => 'zh_TW',
71
  );
72
 
73
+ /**
74
+ * Currencies accepted for deposits
75
+ */
76
+ public $currency_options = array(
77
+ 'AUD' => 'Australian Dollar',
78
+ 'BRL' => 'Brazilian Real',
79
+ 'CAD' => 'Canadian Dollar',
80
+ 'CZK' => 'Czech Koruna',
81
+ 'DKK' => 'Danish Krone',
82
+ 'EUR' => 'Euro',
83
+ 'HKD' => 'Hong Kong Dollar',
84
+ 'HUF' => 'Hungarian Forint',
85
+ 'ILS' => 'Israeli New Sheqel',
86
+ 'JPY' => 'Japanese Yen',
87
+ 'MYR' => 'Malaysian Ringgit',
88
+ 'MXN' => 'Mexican Peso',
89
+ 'NOK' => 'Norwegian Krone',
90
+ 'NZD' => 'New Zealand Dollar',
91
+ 'PHP' => 'Philippine Peso',
92
+ 'PLN' => 'Polish Zloty',
93
+ 'GBP' => 'Pound Sterling',
94
+ 'RUB' => 'Russian Ruble',
95
+ 'SGD' => 'Singapore Dollar',
96
+ 'SEK' => 'Swedish Krona',
97
+ 'CHF' => 'Swiss Franc',
98
+ 'TWD' => 'Taiwan New Dollar',
99
+ 'THB' => 'Thai Baht',
100
+ 'TRY' => 'Turkish Lira',
101
+ 'USD' => 'U.S. Dollar',
102
+ );
103
+
104
+ public $country_phone_array = array(
105
+ // 'AD' => array( 'name' => 'ANDORRA', 'code' => '376' ),
106
+ // 'AE' => array( 'name' => 'UNITED ARAB EMIRATES', 'code' => '971' ),
107
+ // 'AF' => array( 'name' => 'AFGHANISTAN', 'code' => '93' ),
108
+ // 'AG' => array( 'name' => 'ANTIGUA AND BARBUDA', 'code' => '1268' ),
109
+ // 'AI' => array( 'name' => 'ANGUILLA', 'code' => '1264' ),
110
+ // 'AL' => array( 'name' => 'ALBANIA', 'code' => '355' ),
111
+ // 'AM' => array( 'name' => 'ARMENIA', 'code' => '374' ),
112
+ // 'AN' => array( 'name' => 'NETHERLANDS ANTILLES', 'code' => '599' ),
113
+ // 'AO' => array( 'name' => 'ANGOLA', 'code' => '244' ),
114
+ // 'AQ' => array( 'name' => 'ANTARCTICA', 'code' => '672' ),
115
+ 'AR' => array( 'name' => 'ARGENTINA', 'code' => '54' ),
116
+ // 'AS' => array( 'name' => 'AMERICAN SAMOA', 'code' => '1684' ),
117
+ 'AT' => array( 'name' => 'AUSTRIA', 'code' => '43' ),
118
+ 'AU' => array( 'name' => 'AUSTRALIA', 'code' => '61' ),
119
+ // 'AW' => array( 'name' => 'ARUBA', 'code' => '297' ),
120
+ // 'AZ' => array( 'name' => 'AZERBAIJAN', 'code' => '994' ),
121
+ // 'BA' => array( 'name' => 'BOSNIA AND HERZEGOVINA', 'code' => '387' ),
122
+ // 'BB' => array( 'name' => 'BARBADOS', 'code' => '1246' ),
123
+ // 'BD' => array( 'name' => 'BANGLADESH', 'code' => '880' ),
124
+ 'BE' => array( 'name' => 'BELGIUM', 'code' => '32' ),
125
+ // 'BF' => array( 'name' => 'BURKINA FASO', 'code' => '226' ),
126
+ 'BG' => array( 'name' => 'BULGARIA', 'code' => '359' ),
127
+ // 'BH' => array( 'name' => 'BAHRAIN', 'code' => '973' ),
128
+ // 'BI' => array( 'name' => 'BURUNDI', 'code' => '257' ),
129
+ // 'BJ' => array( 'name' => 'BENIN', 'code' => '229' ),
130
+ // 'BL' => array( 'name' => 'SAINT BARTHELEMY', 'code' => '590' ),
131
+ // 'BM' => array( 'name' => 'BERMUDA', 'code' => '1441' ),
132
+ // 'BN' => array( 'name' => 'BRUNEI DARUSSALAM', 'code' => '673' ),
133
+ // 'BO' => array( 'name' => 'BOLIVIA', 'code' => '591' ),
134
+ 'BR' => array( 'name' => 'BRAZIL', 'code' => '55' ),
135
+ // 'BS' => array( 'name' => 'BAHAMAS', 'code' => '1242' ),
136
+ // 'BT' => array( 'name' => 'BHUTAN', 'code' => '975' ),
137
+ // 'BW' => array( 'name' => 'BOTSWANA', 'code' => '267' ),
138
+ // 'BY' => array( 'name' => 'BELARUS', 'code' => '375' ),
139
+ // 'BZ' => array( 'name' => 'BELIZE', 'code' => '501' ),
140
+ 'CA' => array( 'name' => 'CANADA', 'code' => '1' ),
141
+ // 'CC' => array( 'name' => 'COCOS (KEELING) ISLANDS', 'code' => '61' ),
142
+ // 'CD' => array( 'name' => 'CONGO, THE DEMOCRATIC REPUBLIC OF THE', 'code' => '243' ),
143
+ // 'CF' => array( 'name' => 'CENTRAL AFRICAN REPUBLIC', 'code' => '236' ),
144
+ // 'CG' => array( 'name' => 'CONGO', 'code' => '242' ),
145
+ 'CH' => array( 'name' => 'SWITZERLAND', 'code' => '41' ),
146
+ // 'CI' => array( 'name' => 'COTE D IVOIRE', 'code' => '225' ),
147
+ // 'CK' => array( 'name' => 'COOK ISLANDS', 'code' => '682' ),
148
+ // 'CL' => array( 'name' => 'CHILE', 'code' => '56' ),
149
+ // 'CM' => array( 'name' => 'CAMEROON', 'code' => '237' ),
150
+ 'CN' => array( 'name' => 'CHINA', 'code' => '86' ),
151
+ // 'CO' => array( 'name' => 'COLOMBIA', 'code' => '57' ),
152
+ // 'CR' => array( 'name' => 'COSTA RICA', 'code' => '506' ),
153
+ // 'CU' => array( 'name' => 'CUBA', 'code' => '53' ),
154
+ // 'CV' => array( 'name' => 'CAPE VERDE', 'code' => '238' ),
155
+ // 'CX' => array( 'name' => 'CHRISTMAS ISLAND', 'code' => '61' ),
156
+ // 'CY' => array( 'name' => 'CYPRUS', 'code' => '357' ),
157
+ 'CZ' => array( 'name' => 'CZECH REPUBLIC', 'code' => '420' ),
158
+ 'DE' => array( 'name' => 'GERMANY', 'code' => '49' ),
159
+ // 'DJ' => array( 'name' => 'DJIBOUTI', 'code' => '253' ),
160
+ 'DK' => array( 'name' => 'DENMARK', 'code' => '45' ),
161
+ // 'DM' => array( 'name' => 'DOMINICA', 'code' => '1767' ),
162
+ // 'DO' => array( 'name' => 'DOMINICAN REPUBLIC', 'code' => '1809' ),
163
+ // 'DZ' => array( 'name' => 'ALGERIA', 'code' => '213' ),
164
+ // 'EC' => array( 'name' => 'ECUADOR', 'code' => '593' ),
165
+ 'EE' => array( 'name' => 'ESTONIA', 'code' => '372' ),
166
+ // 'EG' => array( 'name' => 'EGYPT', 'code' => '20' ),
167
+ // 'ER' => array( 'name' => 'ERITREA', 'code' => '291' ),
168
+ 'ES' => array( 'name' => 'SPAIN', 'code' => '34' ),
169
+ // 'ET' => array( 'name' => 'ETHIOPIA', 'code' => '251' ),
170
+ 'FI' => array( 'name' => 'FINLAND', 'code' => '358' ),
171
+ // 'FJ' => array( 'name' => 'FIJI', 'code' => '679' ),
172
+ // 'FK' => array( 'name' => 'FALKLAND ISLANDS (MALVINAS)', 'code' => '500' ),
173
+ // 'FM' => array( 'name' => 'MICRONESIA, FEDERATED STATES OF', 'code' => '691' ),
174
+ // 'FO' => array( 'name' => 'FAROE ISLANDS', 'code' => '298' ),
175
+ 'FR' => array( 'name' => 'FRANCE', 'code' => '33' ),
176
+ // 'GA' => array( 'name' => 'GABON', 'code' => '241' ),
177
+ 'GB' => array( 'name' => 'UNITED KINGDOM', 'code' => '44' ),
178
+ // 'GD' => array( 'name' => 'GRENADA', 'code' => '1473' ),
179
+ // 'GE' => array( 'name' => 'GEORGIA', 'code' => '995' ),
180
+ // 'GH' => array( 'name' => 'GHANA', 'code' => '233' ),
181
+ // 'GI' => array( 'name' => 'GIBRALTAR', 'code' => '350' ),
182
+ 'GL' => array( 'name' => 'GREENLAND', 'code' => '299' ),
183
+ // 'GM' => array( 'name' => 'GAMBIA', 'code' => '220' ),
184
+ // 'GN' => array( 'name' => 'GUINEA', 'code' => '224' ),
185
+ // 'GQ' => array( 'name' => 'EQUATORIAL GUINEA', 'code' => '240' ),
186
+ 'GR' => array( 'name' => 'GREECE', 'code' => '30' ),
187
+ // 'GT' => array( 'name' => 'GUATEMALA', 'code' => '502' ),
188
+ // 'GU' => array( 'name' => 'GUAM', 'code' => '1671' ),
189
+ // 'GW' => array( 'name' => 'GUINEA-BISSAU', 'code' => '245' ),
190
+ // 'GY' => array( 'name' => 'GUYANA', 'code' => '592' ),
191
+ 'HK' => array( 'name' => 'HONG KONG', 'code' => '852' ),
192
+ // 'HN' => array( 'name' => 'HONDURAS', 'code' => '504' ),
193
+ 'HR' => array( 'name' => 'CROATIA', 'code' => '385' ),
194
+ // 'HT' => array( 'name' => 'HAITI', 'code' => '509' ),
195
+ 'HU' => array( 'name' => 'HUNGARY', 'code' => '36' ),
196
+ 'ID' => array( 'name' => 'INDONESIA', 'code' => '62' ),
197
+ 'IE' => array( 'name' => 'IRELAND', 'code' => '353' ),
198
+ 'IL' => array( 'name' => 'ISRAEL', 'code' => '972' ),
199
+ // 'IM' => array( 'name' => 'ISLE OF MAN', 'code' => '44' ),
200
+ 'IN' => array( 'name' => 'INDIA', 'code' => '91' ),
201
+ // 'IQ' => array( 'name' => 'IRAQ', 'code' => '964' ),
202
+ // 'IR' => array( 'name' => 'IRAN, ISLAMIC REPUBLIC OF', 'code' => '98' ),
203
+ 'IS' => array( 'name' => 'ICELAND', 'code' => '354' ),
204
+ 'IT' => array( 'name' => 'ITALY', 'code' => '39' ),
205
+ // 'JM' => array( 'name' => 'JAMAICA', 'code' => '1876' ),
206
+ // 'JO' => array( 'name' => 'JORDAN', 'code' => '962' ),
207
+ 'JP' => array( 'name' => 'JAPAN', 'code' => '81' ),
208
+ // 'KE' => array( 'name' => 'KENYA', 'code' => '254' ),
209
+ // 'KG' => array( 'name' => 'KYRGYZSTAN', 'code' => '996' ),
210
+ // 'KH' => array( 'name' => 'CAMBODIA', 'code' => '855' ),
211
+ // 'KI' => array( 'name' => 'KIRIBATI', 'code' => '686' ),
212
+ // 'KM' => array( 'name' => 'COMOROS', 'code' => '269' ),
213
+ // 'KN' => array( 'name' => 'SAINT KITTS AND NEVIS', 'code' => '1869' ),
214
+ // 'KP' => array( 'name' => 'KOREA DEMOCRATIC PEOPLES REPUBLIC OF', 'code' => '850' ),
215
+ 'KR' => array( 'name' => 'KOREA REPUBLIC OF', 'code' => '82' ),
216
+ // 'KW' => array( 'name' => 'KUWAIT', 'code' => '965' ),
217
+ // 'KY' => array( 'name' => 'CAYMAN ISLANDS', 'code' => '1345' ),
218
+ // 'KZ' => array( 'name' => 'KAZAKSTAN', 'code' => '7' ),
219
+ // 'LA' => array( 'name' => 'LAO PEOPLES DEMOCRATIC REPUBLIC', 'code' => '856' ),
220
+ // 'LB' => array( 'name' => 'LEBANON', 'code' => '961' ),
221
+ // 'LC' => array( 'name' => 'SAINT LUCIA', 'code' => '1758' ),
222
+ 'LI' => array( 'name' => 'LIECHTENSTEIN', 'code' => '423' ),
223
+ // 'LK' => array( 'name' => 'SRI LANKA', 'code' => '94' ),
224
+ // 'LR' => array( 'name' => 'LIBERIA', 'code' => '231' ),
225
+ // 'LS' => array( 'name' => 'LESOTHO', 'code' => '266' ),
226
+ 'LT' => array( 'name' => 'LITHUANIA', 'code' => '370' ),
227
+ 'LU' => array( 'name' => 'LUXEMBOURG', 'code' => '352' ),
228
+ 'LV' => array( 'name' => 'LATVIA', 'code' => '371' ),
229
+ // 'LY' => array( 'name' => 'LIBYAN ARAB JAMAHIRIYA', 'code' => '218' ),
230
+ // 'MA' => array( 'name' => 'MOROCCO', 'code' => '212' ),
231
+ // 'MC' => array( 'name' => 'MONACO', 'code' => '377' ),
232
+ // 'MD' => array( 'name' => 'MOLDOVA, REPUBLIC OF', 'code' => '373' ),
233
+ 'ME' => array( 'name' => 'MONTENEGRO', 'code' => '382' ),
234
+ // 'MF' => array( 'name' => 'SAINT MARTIN', 'code' => '1599' ),
235
+ // 'MG' => array( 'name' => 'MADAGASCAR', 'code' => '261' ),
236
+ // 'MH' => array( 'name' => 'MARSHALL ISLANDS', 'code' => '692' ),
237
+ // 'MK' => array( 'name' => 'MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF', 'code' => '389' ),
238
+ // 'ML' => array( 'name' => 'MALI', 'code' => '223' ),
239
+ // 'MM' => array( 'name' => 'MYANMAR', 'code' => '95' ),
240
+ // 'MN' => array( 'name' => 'MONGOLIA', 'code' => '976' ),
241
+ // 'MO' => array( 'name' => 'MACAU', 'code' => '853' ),
242
+ // 'MP' => array( 'name' => 'NORTHERN MARIANA ISLANDS', 'code' => '1670' ),
243
+ // 'MR' => array( 'name' => 'MAURITANIA', 'code' => '222' ),
244
+ // 'MS' => array( 'name' => 'MONTSERRAT', 'code' => '1664' ),
245
+ // 'MT' => array( 'name' => 'MALTA', 'code' => '356' ),
246
+ // 'MU' => array( 'name' => 'MAURITIUS', 'code' => '230' ),
247
+ // 'MV' => array( 'name' => 'MALDIVES', 'code' => '960' ),
248
+ // 'MW' => array( 'name' => 'MALAWI', 'code' => '265' ),
249
+ 'MX' => array( 'name' => 'MEXICO', 'code' => '52' ),
250
+ 'MY' => array( 'name' => 'MALAYSIA', 'code' => '60' ),
251
+ // 'MZ' => array( 'name' => 'MOZAMBIQUE', 'code' => '258' ),
252
+ // 'NA' => array( 'name' => 'NAMIBIA', 'code' => '264' ),
253
+ // 'NC' => array( 'name' => 'NEW CALEDONIA', 'code' => '687' ),
254
+ // 'NE' => array( 'name' => 'NIGER', 'code' => '227' ),
255
+ // 'NG' => array( 'name' => 'NIGERIA', 'code' => '234' ),
256
+ // 'NI' => array( 'name' => 'NICARAGUA', 'code' => '505' ),
257
+ 'NL' => array( 'name' => 'NETHERLANDS', 'code' => '31' ),
258
+ 'NO' => array( 'name' => 'NORWAY', 'code' => '47' ),
259
+ // 'NP' => array( 'name' => 'NEPAL', 'code' => '977' ),
260
+ // 'NR' => array( 'name' => 'NAURU', 'code' => '674' ),
261
+ // 'NU' => array( 'name' => 'NIUE', 'code' => '683' ),
262
+ 'NZ' => array( 'name' => 'NEW ZEALAND', 'code' => '64' ),
263
+ // 'OM' => array( 'name' => 'OMAN', 'code' => '968' ),
264
+ // 'PA' => array( 'name' => 'PANAMA', 'code' => '507' ),
265
+ // 'PE' => array( 'name' => 'PERU', 'code' => '51' ),
266
+ // 'PF' => array( 'name' => 'FRENCH POLYNESIA', 'code' => '689' ),
267
+ // 'PG' => array( 'name' => 'PAPUA NEW GUINEA', 'code' => '675' ),
268
+ // 'PH' => array( 'name' => 'PHILIPPINES', 'code' => '63' ),
269
+ // 'PK' => array( 'name' => 'PAKISTAN', 'code' => '92' ),
270
+ 'PL' => array( 'name' => 'POLAND', 'code' => '48' ),
271
+ // 'PM' => array( 'name' => 'SAINT PIERRE AND MIQUELON', 'code' => '508' ),
272
+ // 'PN' => array( 'name' => 'PITCAIRN', 'code' => '870' ),
273
+ 'PR' => array( 'name' => 'PUERTO RICO', 'code' => '1' ),
274
+ 'PT' => array( 'name' => 'PORTUGAL', 'code' => '351' ),
275
+ // 'PW' => array( 'name' => 'PALAU', 'code' => '680' ),
276
+ // 'PY' => array( 'name' => 'PARAGUAY', 'code' => '595' ),
277
+ // 'QA' => array( 'name' => 'QATAR', 'code' => '974' ),
278
+ 'RO' => array( 'name' => 'ROMANIA', 'code' => '40' ),
279
+ 'RS' => array( 'name' => 'SERBIA', 'code' => '381' ),
280
+ 'RU' => array( 'name' => 'RUSSIAN FEDERATION', 'code' => '7' ),
281
+ // 'RW' => array( 'name' => 'RWANDA', 'code' => '250' ),
282
+ // 'SA' => array( 'name' => 'SAUDI ARABIA', 'code' => '966' ),
283
+ // 'SB' => array( 'name' => 'SOLOMON ISLANDS', 'code' => '677' ),
284
+ // 'SC' => array( 'name' => 'SEYCHELLES', 'code' => '248' ),
285
+ // 'SD' => array( 'name' => 'SUDAN', 'code' => '249' ),
286
+ 'SE' => array( 'name' => 'SWEDEN', 'code' => '46' ),
287
+ 'SG' => array( 'name' => 'SINGAPORE', 'code' => '65' ),
288
+ // 'SH' => array( 'name' => 'SAINT HELENA', 'code' => '290' ),
289
+ 'SI' => array( 'name' => 'SLOVENIA', 'code' => '386' ),
290
+ 'SK' => array( 'name' => 'SLOVAKIA', 'code' => '421' ),
291
+ // 'SL' => array( 'name' => 'SIERRA LEONE', 'code' => '232' ),
292
+ // 'SM' => array( 'name' => 'SAN MARINO', 'code' => '378' ),
293
+ // 'SN' => array( 'name' => 'SENEGAL', 'code' => '221' ),
294
+ // 'SO' => array( 'name' => 'SOMALIA', 'code' => '252' ),
295
+ // 'SR' => array( 'name' => 'SURINAME', 'code' => '597' ),
296
+ // 'ST' => array( 'name' => 'SAO TOME AND PRINCIPE', 'code' => '239' ),
297
+ // 'SV' => array( 'name' => 'EL SALVADOR', 'code' => '503' ),
298
+ // 'SY' => array( 'name' => 'SYRIAN ARAB REPUBLIC', 'code' => '963' ),
299
+ // 'SZ' => array( 'name' => 'SWAZILAND', 'code' => '268' ),
300
+ // 'TC' => array( 'name' => 'TURKS AND CAICOS ISLANDS', 'code' => '1649' ),
301
+ // 'TD' => array( 'name' => 'CHAD', 'code' => '235' ),
302
+ // 'TG' => array( 'name' => 'TOGO', 'code' => '228' ),
303
+ 'TH' => array( 'name' => 'THAILAND', 'code' => '66' ),
304
+ // 'TJ' => array( 'name' => 'TAJIKISTAN', 'code' => '992' ),
305
+ // 'TK' => array( 'name' => 'TOKELAU', 'code' => '690' ),
306
+ // 'TL' => array( 'name' => 'TIMOR-LESTE', 'code' => '670' ),
307
+ // 'TM' => array( 'name' => 'TURKMENISTAN', 'code' => '993' ),
308
+ // 'TN' => array( 'name' => 'TUNISIA', 'code' => '216' ),
309
+ // 'TO' => array( 'name' => 'TONGA', 'code' => '676' ),
310
+ // 'TR' => array( 'name' => 'TURKEY', 'code' => '90' ),
311
+ // 'TT' => array( 'name' => 'TRINIDAD AND TOBAGO', 'code' => '1868' ),
312
+ // 'TV' => array( 'name' => 'TUVALU', 'code' => '688' ),
313
+ 'TW' => array( 'name' => 'TAIWAN', 'code' => '886' ),
314
+ // 'TZ' => array( 'name' => 'TANZANIA, UNITED REPUBLIC OF', 'code' => '255' ),
315
+ 'UA' => array( 'name' => 'UKRAINE', 'code' => '380' ),
316
+ // 'UG' => array( 'name' => 'UGANDA', 'code' => '256' ),
317
+ 'US' => array( 'name' => 'UNITED STATES', 'code' => '1' ),
318
+ 'UY' => array( 'name' => 'URUGUAY', 'code' => '598' ),
319
+ // 'UZ' => array( 'name' => 'UZBEKISTAN', 'code' => '998' ),
320
+ // 'VA' => array( 'name' => 'HOLY SEE (VATICAN CITY STATE)', 'code' => '39' ),
321
+ // 'VC' => array( 'name' => 'SAINT VINCENT AND THE GRENADINES', 'code' => '1784' ),
322
+ // 'VE' => array( 'name' => 'VENEZUELA', 'code' => '58' ),
323
+ // 'VG' => array( 'name' => 'VIRGIN ISLANDS, BRITISH', 'code' => '1284' ),
324
+ // 'VI' => array( 'name' => 'VIRGIN ISLANDS, U.S.', 'code' => '1340' ),
325
+ 'VN' => array( 'name' => 'VIETNAM', 'code' => '84' ),
326
+ // 'VU' => array( 'name' => 'VANUATU', 'code' => '678' ),
327
+ // 'WF' => array( 'name' => 'WALLIS AND FUTUNA', 'code' => '681' ),
328
+ // 'WS' => array( 'name' => 'SAMOA', 'code' => '685' ),
329
+ // 'XK' => array( 'name' => 'KOSOVO', 'code' => '381' ),
330
+ // 'YE' => array( 'name' => 'YEMEN', 'code' => '967' ),
331
+ // 'YT' => array( 'name' => 'MAYOTTE', 'code' => '262' ),
332
+ 'ZA' => array( 'name' => 'SOUTH AFRICA', 'code' => '27' ),
333
+ // 'ZM' => array( 'name' => 'ZAMBIA', 'code' => '260' ),
334
+ // 'ZW' => array( 'name' => 'ZIMBABWE', 'code' => '263' )
335
+ );
336
+
337
  public function __construct() {
338
 
339
  add_action( 'init', array( $this, 'set_defaults' ) );
361
  'time-format' => _x( 'h:i A', 'Default time format for display. Must match formatting rules at http://amsul.ca/pickadate.js/time/#formats', 'restaurant-reservations' ),
362
  'time-interval' => _x( '30', 'Default interval in minutes when selecting a time.', 'restaurant-reservations' ),
363
 
364
+ // Payment defaults
365
+ 'rtb-paypal-email' => get_option( 'admin_email' ),
366
+ 'rtb-stripe-currency-symbol' => '$',
367
+ 'rtb-currency-symbol-location' => 'before',
368
+ 'rtb-currency' => 'USD',
369
+ 'rtb-stripe-mode' => 'live',
370
+
371
  // Export defaults
372
  'ebfrtb-paper-size' => 'A4',
373
  'ebfrtb-pdf-lib' => 'mpdf',
378
 
379
  // Email address where admin notifications should be sent
380
  'admin-email-address' => get_option( 'admin_email' ),
381
+ 'ultimate-purchase-email' => get_option( 'admin_email' ),
382
 
383
  // Name and email address which should appear in the Reply-To section of notification emails
384
  'reply-to-name' => get_bloginfo( 'name' ),
418
 
419
  &nbsp;
420
 
421
+ <em>This message was sent by {site_link} on {current_time}.</em>',
422
+ 'Default email sent to users when they make a new booking request. The tags in {brackets} will be replaced by the appropriate content and should be left in place. HTML is allowed, but be aware that many email clients do not handle HTML very well.',
423
+ 'restaurant-reservations'
424
+ ),
425
+
426
+ // Email template sent to an admin when a new booking request is made
427
+ 'subject-booking-confirmed-admin' => _x( 'New Confirmed Booking Request', 'Default email subject for admin notifications when a new confirmed booking is made', 'restaurant-reservations' ),
428
+ 'template-booking-confirmed-admin' => _x( 'A new confirmed booking has been made at {site_name}:
429
+
430
+ {user_name}
431
+ {party} people
432
+ {date}
433
+
434
+ {bookings_link}
435
+ {confirm_link}
436
+ {close_link}
437
+
438
+ &nbsp;
439
+
440
+ <em>This message was sent by {site_link} on {current_time}.</em>',
441
+ 'Default email sent to the admin when a new confirmed booking is made. The tags in {brackets} will be replaced by the appropriate content and should be left in place. HTML is allowed, but be aware that many email clients do not handle HTML very well.',
442
+ 'restaurant-reservations'
443
+ ),
444
+
445
+ // Email template sent to an admin when a new booking request is made
446
+ 'subject-booking-cancelled-admin' => _x( 'Booking Request Cancelled', 'Default email subject for admin notifications of cancelled bookings', 'restaurant-reservations' ),
447
+ 'template-booking-cancelled-admin' => _x( 'A booking request has been cancelled at {site_name}:
448
+
449
+ {user_name}
450
+ {party} people
451
+ {date}
452
+
453
+ {bookings_link}
454
+
455
+ &nbsp;
456
+
457
+ <em>This message was sent by {site_link} on {current_time}.</em>',
458
+ 'Default email sent to the admin when a booking request is cancelled. The tags in {brackets} will be replaced by the appropriate content and should be left in place. HTML is allowed, but be aware that many email clients do not handle HTML very well.',
459
+ 'restaurant-reservations'
460
+ ),
461
+
462
+ // Email template sent to a user when a new booking request is made
463
+ 'subject-booking-user' => sprintf( _x( 'Your booking at %s is pending', 'Default email subject sent to user when they request a booking. %s will be replaced by the website name', 'restaurant-reservations' ), get_bloginfo( 'name' ) ),
464
+ 'template-booking-user' => _x( 'Thanks {user_name},
465
+
466
+ Your booking request is <strong>waiting to be confirmed</strong>.
467
+
468
+ Give us a few moments to make sure that we\'ve got space for you. You will receive another email from us soon. If this request was made outside of our normal working hours, we may not be able to confirm it until we\'re open again.
469
+
470
+ <strong>Your request details:</strong>
471
+ {user_name}
472
+ {party} people
473
+ {date}
474
+
475
+ &nbsp;
476
+
477
  <em>This message was sent by {site_link} on {current_time}.</em>',
478
  'Default email sent to users when they make a new booking request. The tags in {brackets} will be replaced by the appropriate content and should be left in place. HTML is allowed, but be aware that many email clients do not handle HTML very well.',
479
  'restaurant-reservations'
514
  'restaurant-reservations'
515
  ),
516
 
517
+ // Email template sent to a user when they cancel their booking
518
+ 'subject-booking-cancelled-user' => sprintf( _x( 'Your reservation at %s was cancelled', 'Default email subject sent to user after they cancel their booking. %s will be replaced by the website name', 'restaurant-reservations' ), get_bloginfo( 'name' ) ),
519
+ 'template-booking-cancelled-user' => _x( 'Hi {user_name},
520
 
521
+ Your reservation with the following details has been cancelled:
522
 
523
  {date}
524
  {user_name}
525
  {party} people
526
 
527
+ If you were not the one to cancel this booking, please contact us.
528
 
529
  &nbsp;
530
 
531
  <em>This message was sent by {site_link} on {current_time}.</em>',
532
+ 'Default email sent to users when they cancel their booking. The tags in {brackets} will be replaced by the appropriate content and should be left in place. HTML is allowed, but be aware that many email clients do not handle HTML very well.',
533
+ 'restaurant-reservations'
534
+ ),
535
+
536
+ // Email template sent to a user when they have an upcoming booking
537
+ 'subject-reminder-user' => sprintf( _x( 'Reminder: Your reservation at %s', 'Default email subject sent to user as a reminder about for their booking. %s will be replaced by the website name', 'restaurant-reservations' ), get_bloginfo( 'name' ) ),
538
+ 'template-reminder-user' => _x( 'Reminder: You have a reservation {date} for {party} at {site_name}',
539
  'Default email sent to users as a reminder about their booking request. The tags in {brackets} will be replaced by the appropriate content and should be left in place. HTML is allowed, but be aware that many email clients do not handle HTML very well.',
540
  'restaurant-reservations'
541
  ),
542
 
543
+ // Email template sent to a user when they're late for their booking
544
  'subject-late-user' => sprintf( _x( 'You\'re late for your booking at %s', 'Default email subject sent to user when they are late for their booking. %s will be replaced by the website name', 'restaurant-reservations' ), get_bloginfo( 'name' ) ),
545
+ 'template-late-user' => _x( 'You had a reservation {date} for {party} at {site_name}',
 
 
 
 
 
 
 
 
 
 
 
 
546
  'Default email sent to users when they are late for their booking request. The tags in {brackets} will be replaced by the appropriate content and should be left in place. HTML is allowed, but be aware that many email clients do not handle HTML very well.',
547
  'restaurant-reservations'
548
  ),
583
  return apply_filters( 'rtb-setting-' . $setting, null );
584
  }
585
 
586
+ /**
587
+ * Set a setting to a particular value
588
+ * @since 2.1.0
589
+ */
590
+ public function set_setting( $setting, $value ) {
591
+
592
+ $this->settings[ $setting ] = $value;
593
+ }
594
+
595
+ /**
596
+ * Save all setting, to be used with set_setting
597
+ * @since 2.1.0
598
+ */
599
+ public function save_settings() {
600
+
601
+ update_option( 'rtb-settings', $this->settings );
602
+ }
603
+
604
  /**
605
  * Load the admin settings page
606
  * @since 0.0.1
732
  '7' => __( 'From 1 week in advance', 'restaurant-reservations' ),
733
  '14' => __( 'From 2 weeks in advance', 'restaurant-reservations' ),
734
  '30' => __( 'From 30 days in advance', 'restaurant-reservations' ),
735
+ '60' => __( 'From 60 days in advance', 'restaurant-reservations' ),
736
  '90' => __( 'From 90 days in advance', 'restaurant-reservations' ),
737
  )
738
  )
886
  )
887
  );
888
 
889
+ $sap->add_setting(
890
+ 'rtb-settings',
891
+ 'rtb-general',
892
+ 'toggle',
893
+ array(
894
+ 'id' => 'allow-cancellations',
895
+ 'title' => __( 'Allow Cancellations', 'restaurant-reservations' ),
896
+ 'description' => __( 'Adds a cancellation option to your booking form, so that customers are able to cancel their reservations.', 'restaurant-reservations' )
897
+ )
898
+ );
899
+
900
  $sap->add_setting(
901
  'rtb-settings',
902
  'rtb-general',
937
  )
938
  );
939
 
940
+ $sap->add_setting(
941
+ 'rtb-settings',
942
+ 'rtb-general',
943
+ 'text',
944
+ array(
945
+ 'id' => 'pending-redirect-page',
946
+ 'title' => __( 'Pending Redirect Page', 'restaurant-reservations' ),
947
+ 'description' => __( 'Input the URL of the page you want the booking form to redirect to after a reservation is made that is set to pending. This overrides the "Pending Confirmation Message" text/option.', 'restaurant-reservations' ),
948
+ )
949
+ );
950
+
951
+ $sap->add_setting(
952
+ 'rtb-settings',
953
+ 'rtb-general',
954
+ 'text',
955
+ array(
956
+ 'id' => 'confirmed-redirect-page',
957
+ 'title' => __( 'Confirmed Redirect Page', 'restaurant-reservations' ),
958
+ 'description' => __( 'Input the URL of the page you want the booking form to redirect to after a reservation is made that is automatically confirmed. This overrides the "Confirmed Booking Message" text/option.', 'restaurant-reservations' ),
959
+ )
960
+ );
961
+
962
  $sap->add_section(
963
  'rtb-settings',
964
  array(
1038
  )
1039
  );
1040
 
1041
+ $sap->add_section(
1042
+ 'rtb-settings',
1043
+ array(
1044
+ 'id' => 'rtb-captcha',
1045
+ 'title' => __( 'Captcha', 'restaurant-reservations' ),
1046
+ 'tab' => 'rtb-basic',
1047
+ )
1048
+ );
1049
+
1050
+ $sap->add_setting(
1051
+ 'rtb-settings',
1052
+ 'rtb-captcha',
1053
+ 'toggle',
1054
+ array(
1055
+ 'id' => 'enable-captcha',
1056
+ 'title' => __( 'Enable Google reCAPTCHA v2', 'restaurant-reservations' ),
1057
+ 'description' => sprintf( __( 'Adds Google\'s reCAPTCHA code to your form, to verify guests before they can book. Please check %s our documentation %s for more information on how to configure this feature.', 'restaurant-reservations' ), '<a href="http://doc.fivestarplugins.com/plugins/restaurant-reservations/" target="_blank">', '</a>')
1058
+ )
1059
+ );
1060
+
1061
+ $sap->add_setting(
1062
+ 'rtb-settings',
1063
+ 'rtb-captcha',
1064
+ 'text',
1065
+ array(
1066
+ 'id' => 'captcha-site-key',
1067
+ 'title' => __( 'Google Site Key', 'restaurant-reservations' ),
1068
+ 'description' => __( 'The site key provided to you by Google', 'restaurant-reservations' )
1069
+ )
1070
+ );
1071
+
1072
+ $sap->add_setting(
1073
+ 'rtb-settings',
1074
+ 'rtb-captcha',
1075
+ 'text',
1076
+ array(
1077
+ 'id' => 'captcha-secret-key',
1078
+ 'title' => __( 'Google Secret Key', 'restaurant-reservations' ),
1079
+ 'description' => __( 'The secret key provided to you by Google', 'restaurant-reservations' )
1080
+ )
1081
+ );
1082
+
1083
  $sap->add_section(
1084
  'rtb-settings',
1085
  array(
1230
  'units' => array( 'minutes' => 'Minutes' )
1231
  )
1232
  );
1233
+
1234
  $sap->add_setting(
1235
  'rtb-settings',
1236
  'rtb-table-seat-assignments',
1241
  'description' => __( 'Only allow a certain number of reservations (set below) during a specific time. Once the maximum number of reservations has been reached, visitors will only be able to select other reservation times.', 'restaurant-reservations' )
1242
  )
1243
  );
1244
+
1245
  $sap->add_setting(
1246
  'rtb-settings',
1247
  'rtb-table-seat-assignments',
1255
  'increment' => 1
1256
  )
1257
  );
1258
+
1259
  $sap->add_setting(
1260
  'rtb-settings',
1261
  'rtb-table-seat-assignments',
1269
  'increment' => 1
1270
  )
1271
  );
1272
+
1273
  $sap->add_setting(
1274
  'rtb-settings',
1275
  'rtb-table-seat-assignments',
1458
  )
1459
  );
1460
 
1461
+ $sap->add_setting(
1462
+ 'rtb-settings',
1463
+ 'rtb-notifications',
1464
+ 'toggle',
1465
+ array(
1466
+ 'id' => 'admin-confirmed-email-option',
1467
+ 'title' => __( 'Admin New Confirmed Notification', 'restaurant-reservations' ),
1468
+ 'description' => __( 'Send an email notification to an administrator when a new confirmed booking is made.', 'restaurant-reservations' )
1469
+ )
1470
+ );
1471
+
1472
+ $sap->add_setting(
1473
+ 'rtb-settings',
1474
+ 'rtb-notifications',
1475
+ 'toggle',
1476
+ array(
1477
+ 'id' => 'admin-cancelled-email-option',
1478
+ 'title' => __( 'Admin Cancellation Notification', 'restaurant-reservations' ),
1479
+ 'description' => __( 'Send an email notification to an administrator when a booking is cancelled.', 'restaurant-reservations' )
1480
+ )
1481
+ );
1482
+
1483
  $sap->add_setting(
1484
  'rtb-settings',
1485
  'rtb-notifications',
1539
  )
1540
  );
1541
 
1542
+ $sap->add_setting(
1543
+ 'rtb-settings',
1544
+ 'rtb-notifications-templates',
1545
+ 'text',
1546
+ array(
1547
+ 'id' => 'subject-booking-cancelled-admin',
1548
+ 'title' => __( 'Admin Booking Cancelled Subject', 'restaurant-reservations' ),
1549
+ 'description' => __( 'The email subject for admin notifications when a booking is cancelled.', 'restaurant-reservations' ),
1550
+ 'placeholder' => $this->defaults['subject-booking-cancelled-admin'],
1551
+ )
1552
+ );
1553
+
1554
+ $sap->add_setting(
1555
+ 'rtb-settings',
1556
+ 'rtb-notifications-templates',
1557
+ 'editor',
1558
+ array(
1559
+ 'id' => 'template-booking-cancelled-admin',
1560
+ 'title' => __( 'Admin Booking Cancelled Email', 'restaurant-reservations' ),
1561
+ 'description' => __( 'Enter the email an admin should receive when a booking is cancelled.', 'restaurant-reservations' ),
1562
+ 'default' => $this->defaults['template-booking-cancelled-admin'],
1563
+ )
1564
+ );
1565
+
1566
  $sap->add_setting(
1567
  'rtb-settings',
1568
  'rtb-notifications-templates',
1635
  )
1636
  );
1637
 
1638
+ $sap->add_setting(
1639
+ 'rtb-settings',
1640
+ 'rtb-notifications-templates',
1641
+ 'text',
1642
+ array(
1643
+ 'id' => 'subject-booking-cancelled-user',
1644
+ 'title' => __( 'Booking Cancelled Email Subject', 'restaurant-reservations' ),
1645
+ 'description' => __( 'The email subject a user should receive when they have cancelled their booking.', 'restaurant-reservations' ),
1646
+ 'placeholder' => $this->defaults['subject-booking-cancelled-user'],
1647
+ )
1648
+ );
1649
+
1650
+ $sap->add_setting(
1651
+ 'rtb-settings',
1652
+ 'rtb-notifications-templates',
1653
+ 'editor',
1654
+ array(
1655
+ 'id' => 'template-booking-cancelled-user',
1656
+ 'title' => __( 'Booking Cancelled Email', 'restaurant-reservations' ),
1657
+ 'description' => __( 'Enter the email a user should receive when they cancel their booking.', 'restaurant-reservations' ),
1658
+ 'default' => $this->defaults['template-booking-cancelled-user'],
1659
+ )
1660
+ );
1661
+
1662
  $sap->add_setting(
1663
  'rtb-settings',
1664
  'rtb-notifications-templates',
1673
 
1674
  if ( ! $rtb_controller->permissions->check_permission('reminders') ) {
1675
  $reminders_permissions = array(
1676
+ 'disabled' => true,
1677
+ 'disabled_image' => 'https://www.etoilewebdesign.com/wp-content/uploads/2018/06/Logo-White-Filled40-px.png',
1678
+ 'purchase_link' => 'https://www.fivestarplugins.com/plugins/five-star-restaurant-reservations/',
1679
+ 'ultimate_needed' => 'Yes'
1680
  );
1681
  }
1682
  else { $reminders_permissions = array(); }
1683
 
1684
+ $sap->add_section(
1685
+ 'rtb-settings',
1686
+ array_merge(
1687
+ array(
1688
+ 'id' => 'rtb-reservation-reminders',
1689
+ 'title' => __( 'Reservation Reminders', 'restaurant-reservations' ),
1690
+ 'tab' => 'rtb-notifications-tab',
1691
+ 'description' => __( 'Set up reservation and late arrival reminders.' ),
1692
+ ),
1693
+ $reminders_permissions
1694
+ )
1695
+ );
1696
+
1697
+ $sap->add_setting(
1698
+ 'rtb-settings',
1699
+ 'rtb-reservation-reminders',
1700
+ 'text',
1701
+ array(
1702
+ 'id' => 'ultimate-purchase-email',
1703
+ 'title' => __( 'Ultimate Plan Purchase Email', 'restaurant-reservations' ),
1704
+ 'description' => __( 'The email used to purchase your \'Ultimate\' plan subscription. Used to verify SMS requests are actually being sent from your site.', 'restaurant-reservations' ),
1705
+ 'placeholder' => $this->defaults['ultimate-purchase-email'],
1706
+ )
1707
+ );
1708
+
1709
+ $country_phone_display_array = array();
1710
+ foreach ( $this->country_phone_array as $country_code => $country_array ) { $country_phone_display_array[$country_code] = $country_array['name'] . ' (+' . $country_array['code'] . ')'; }
1711
+
1712
+ $sap->add_setting(
1713
+ 'rtb-settings',
1714
+ 'rtb-reservation-reminders',
1715
+ 'select',
1716
+ array(
1717
+ 'id' => 'rtb-country-code',
1718
+ 'title' => __( 'Country Code', 'restaurant-reservations' ),
1719
+ 'description' => __( 'What country code should be added to SMS reminders? If no country is specified, phone numbers for reservations should start with +XXX (a plus sign followed by the country code), followed by a space or dash, or else the number the phone number will be assumed to be North American.', 'restaurant-reservations' ),
1720
+ 'blank_option' => true,
1721
+ 'options' => $country_phone_display_array
1722
+ )
1723
+ );
1724
+
1725
+ $sap->add_setting(
1726
+ 'rtb-settings',
1727
+ 'rtb-reservation-reminders',
1728
+ 'radio',
1729
+ array(
1730
+ 'id' => 'reminder-notification-format',
1731
+ 'title' => __( 'Reminder Format', 'restaurant-reservations' ),
1732
+ 'description' => __( 'Should reminders be sent via email or text (SMS) message. SMS requires a positive credit balance on your account.', 'restaurant-reservations' ),
1733
+ 'options' => array(
1734
+ 'email' => 'Email',
1735
+ 'text' => 'Text (SMS)'
1736
+ )
1737
+ )
1738
+ );
1739
+
1740
+ $sap->add_setting(
1741
+ 'rtb-settings',
1742
+ 'rtb-reservation-reminders',
1743
+ 'radio',
1744
+ array(
1745
+ 'id' => 'late-notification-format',
1746
+ 'title' => __( 'Late Notification Format', 'restaurant-reservations' ),
1747
+ 'description' => __( 'Should late notifications be sent via email or text (SMS) message. SMS requires a positive credit balance on your account.', 'restaurant-reservations' ),
1748
+ 'options' => array(
1749
+ 'email' => 'Email',
1750
+ 'text' => 'Text (SMS)'
1751
+ )
1752
+ )
1753
+ );
1754
+
1755
+ $sap->add_setting(
1756
+ 'rtb-settings',
1757
+ 'rtb-reservation-reminders',
1758
+ 'count',
1759
+ array(
1760
+ 'id' => 'time-reminder-user',
1761
+ 'title' => __( 'Reservation Reminder Before Time', 'restaurant-reservations' ),
1762
+ 'description' => __( 'How long before a reservation should a reminder email be sent? Leave blank to not send a reservation reminder.', 'restaurant-reservations' ),
1763
+ 'min_value' => 1,
1764
+ 'max_value' => 60,
1765
+ 'increment' => 1,
1766
+ 'units' => array(
1767
+ 'minutes' => 'Minutes',
1768
+ 'hours' => 'Hours',
1769
+ 'days' => 'Days'
1770
+ )
1771
+ )
1772
+ );
1773
+
1774
+ $sap->add_setting(
1775
+ 'rtb-settings',
1776
+ 'rtb-reservation-reminders',
1777
+ 'text',
1778
+ array(
1779
+ 'id' => 'subject-reminder-user',
1780
+ 'title' => __( 'Reservation Reminder Email Subject', 'restaurant-reservations' ),
1781
+ 'description' => __( 'The email subject a user should receive as a reminder about their reservation.', 'restaurant-reservations' ),
1782
+ 'placeholder' => $this->defaults['subject-reminder-user'],
1783
+ )
1784
+ );
1785
+
1786
+ $sap->add_setting(
1787
+ 'rtb-settings',
1788
+ 'rtb-reservation-reminders',
1789
+ 'editor',
1790
+ array(
1791
+ 'id' => 'template-reminder-user',
1792
+ 'title' => __( 'Reservation Reminder Email', 'restaurant-reservations' ),
1793
+ 'description' => __( 'Enter the email a user should receive as a reminder about their reservation.', 'restaurant-reservations' ),
1794
+ 'default' => $this->defaults['template-reminder-user'],
1795
+ )
1796
+ );
1797
+
1798
+ $sap->add_setting(
1799
+ 'rtb-settings',
1800
+ 'rtb-reservation-reminders',
1801
+ 'count',
1802
+ array(
1803
+ 'id' => 'time-late-user',
1804
+ 'title' => __( 'Late for Reservation Time', 'restaurant-reservations' ),
1805
+ 'description' => __( 'How long after being late for a reservation should a late arrival email be sent? Leave blank to not send a late arrival email.', 'restaurant-reservations' ),
1806
+ 'min_value' => 1,
1807
+ 'max_value' => 60,
1808
+ 'increment' => 1,
1809
+ 'units' => array(
1810
+ 'minutes' => 'Minutes',
1811
+ 'hours' => 'Hours',
1812
+ )
1813
+ )
1814
+ );
1815
+
1816
+ $sap->add_setting(
1817
+ 'rtb-settings',
1818
+ 'rtb-reservation-reminders',
1819
+ 'text',
1820
+ array(
1821
+ 'id' => 'subject-late-user',
1822
+ 'title' => __( 'Late for Reservation Email Subject', 'restaurant-reservations' ),
1823
+ 'description' => __( 'The email subject a user should receive when they are late for their reservation.', 'restaurant-reservations' ),
1824
+ 'placeholder' => $this->defaults['subject-late-user'],
1825
+ )
1826
+ );
1827
+
1828
+ $sap->add_setting(
1829
+ 'rtb-settings',
1830
+ 'rtb-reservation-reminders',
1831
+ 'editor',
1832
+ array(
1833
+ 'id' => 'template-late-user',
1834
+ 'title' => __( 'Late for Reservation Email', 'restaurant-reservations' ),
1835
+ 'description' => __( 'Enter the email a user should receive when they are late for their reservation.', 'restaurant-reservations' ),
1836
+ 'default' => $this->defaults['template-late-user'],
1837
+ )
1838
+ );
1839
+
1840
+ $sap->add_section(
1841
+ 'rtb-settings',
1842
+ array(
1843
+ 'id' => 'rtb-notifications-advanced',
1844
+ 'title' => __( 'Advanced', 'restaurant-reservations' ),
1845
+ 'description' => __( "Modifying the settings below can prevent your emails from being delivered. Do not make changes unless you know what you're doing.", 'restaurant-reservations' ),
1846
+ 'tab' => 'rtb-notifications-tab',
1847
+ )
1848
+ );
1849
 
1850
  $sap->add_section(
1851
  'rtb-settings',
1864
  array(
1865
  'id' => 'from-email-address',
1866
  'title' => __( 'FROM Email Address Header', 'restaurant-reservations' ),
1867
+ 'description' => sprintf( __( "Change the email address used in the FROM header of all emails sent by this plugin. In most cases you should not change this. Modifying this can prevent your emails from being delivered. %sLearn more%s.", 'restaurant-reservations' ), '<a href="http://doc.fivestarplugins.com/plugins/restaurant-reservations/user/faq#no-emails-from-header">', '</a>' ),
1868
  'placeholder' => $this->defaults['from-email-address'],
1869
  )
1870
  );
1871
 
1872
+ if ( ! $rtb_controller->permissions->check_permission('payments') ) {
1873
+ $payment_permissions = array(
1874
+ 'disabled' => true,
1875
+ 'disabled_image' => 'https://www.etoilewebdesign.com/wp-content/uploads/2018/06/Logo-White-Filled40-px.png',
1876
+ 'purchase_link' => 'https://www.fivestarplugins.com/plugins/five-star-restaurant-reservations/',
1877
+ 'ultimate_needed' => 'Yes'
1878
+ );
1879
+ }
1880
+ else { $payment_permissions = array(); }
1881
+
1882
+ $sap->add_section(
1883
+ 'rtb-settings',
1884
+ array(
1885
+ 'id' => 'rtb-payments-tab',
1886
+ 'title' => __( 'Payments', 'restaurant-reservations' ),
1887
+ 'is_tab' => true,
1888
+ )
1889
+ );
1890
+
1891
+ $sap->add_section(
1892
+ 'rtb-settings',
1893
+ array_merge(
1894
+ array(
1895
+ 'id' => 'rtb-general-payment',
1896
+ 'title' => __( 'General', 'restaurant-reservations' ),
1897
+ 'tab' => 'rtb-payments-tab',
1898
+ ),
1899
+ $payment_permissions
1900
+ )
1901
+ );
1902
+ $sap->add_setting(
1903
+ 'rtb-settings',
1904
+ 'rtb-general-payment',
1905
+ 'toggle',
1906
+ array(
1907
+ 'id' => 'require-deposit',
1908
+ 'title' => __( 'Require Deposit', 'restaurant-reservations' ),
1909
+ 'description' => __( 'Require guests to make a deposit when making a reservation.', 'restaurant-reservations' )
1910
+ )
1911
+ );
1912
+ $sap->add_setting(
1913
+ 'rtb-settings',
1914
+ 'rtb-general-payment',
1915
+ 'radio',
1916
+ array(
1917
+ 'id' => 'rtb-payment-gateway',
1918
+ 'title' => __( 'Payment Gateway', 'restaurant-reservations' ),
1919
+ 'description' => __( 'Which payment gateway should be used to accept deposits.', 'restaurant-reservations' ),
1920
+ 'options' => array(
1921
+ 'paypal' => 'PayPal',
1922
+ 'stripe' => 'Stripe'
1923
+ )
1924
+ )
1925
+ );
1926
+ $sap->add_setting(
1927
+ 'rtb-settings',
1928
+ 'rtb-general-payment',
1929
+ 'radio',
1930
+ array(
1931
+ 'id' => 'rtb-deposit-type',
1932
+ 'title' => __( 'Deposit Type', 'restaurant-reservations' ),
1933
+ 'description' => __( 'What type of deposit should be required, per reservation or per guest?', 'restaurant-reservations' ),
1934
+ 'options' => array(
1935
+ 'reservation' => 'Per Reservation',
1936
+ 'guest' => 'Per Guest'
1937
+ )
1938
+ )
1939
+ );
1940
+ $sap->add_setting(
1941
+ 'rtb-settings',
1942
+ 'rtb-general-payment',
1943
+ 'text',
1944
+ array(
1945
+ 'id' => 'rtb-deposit-amount',
1946
+ 'title' => __( 'Deposit Amount', 'restaurant-reservations' ),
1947
+ 'description' => __( 'What deposit amount is required (either per reservation or per guest, depending on the setting above).', 'restaurant-reservations' )
1948
+ )
1949
+ );
1950
+ $sap->add_setting(
1951
+ 'rtb-settings',
1952
+ 'rtb-general-payment',
1953
+ 'select',
1954
+ array(
1955
+ 'id' => 'rtb-currency',
1956
+ 'title' => __( 'Currency', 'restaurant-reservations' ),
1957
+ 'description' => __( 'Select the currency you accept for your deposits.', 'restaurant-reservations' ),
1958
+ 'blank_option' => false,
1959
+ 'options' => $this->currency_options
1960
+ )
1961
+ );
1962
+
1963
+ $sap->add_section(
1964
+ 'rtb-settings',
1965
+ array_merge(
1966
+ array(
1967
+ 'id' => 'rtb-paypal-payment',
1968
+ 'title' => __( 'PayPal', 'restaurant-reservations' ),
1969
+ 'tab' => 'rtb-payments-tab',
1970
+ ),
1971
+ $payment_permissions
1972
+ )
1973
+ );
1974
+ $sap->add_setting(
1975
+ 'rtb-settings',
1976
+ 'rtb-paypal-payment',
1977
+ 'text',
1978
+ array(
1979
+ 'id' => 'rtb-paypal-email',
1980
+ 'title' => __( 'PayPal Email Address', 'restaurant-reservations' ),
1981
+ 'description' => __( 'The email address you\'ll be using to accept PayPal payments.', 'restaurant-reservations' ),
1982
+ 'placeholder' =>$this->defaults['rtb-paypal-email']
1983
+ )
1984
+ );
1985
+
1986
+ $sap->add_section(
1987
+ 'rtb-settings',
1988
+ array_merge(
1989
+ array(
1990
+ 'id' => 'rtb-stripe-payment',
1991
+ 'title' => __( 'Stripe', 'restaurant-reservations' ),
1992
+ 'tab' => 'rtb-payments-tab',
1993
+ ),
1994
+ $payment_permissions
1995
+ )
1996
+ );
1997
+ $sap->add_setting(
1998
+ 'rtb-settings',
1999
+ 'rtb-stripe-payment',
2000
+ 'text',
2001
+ array(
2002
+ 'id' => 'rtb-stripe-currency-symbol',
2003
+ 'title' => __( 'Stripe Currency Symbol', 'restaurant-reservations' ),
2004
+ 'description' => __( 'The currency symbol you\'d like displayed before or after the required deposit amount.', 'restaurant-reservations' ),
2005
+ 'placeholder' => $this->defaults['rtb-stripe-currency-symbol']
2006
+ )
2007
+ );
2008
+ $sap->add_setting(
2009
+ 'rtb-settings',
2010
+ 'rtb-stripe-payment',
2011
+ 'radio',
2012
+ array(
2013
+ 'id' => 'rtb-currency-symbol-location',
2014
+ 'title' => __( 'Currency Symbol Location', 'restaurant-reservations' ),
2015
+ 'description' => __( 'Should the currency symbol be placed before or after the deposit amount?', 'restaurant-reservations' ),
2016
+ 'options' => array(
2017
+ 'before' => 'Before',
2018
+ 'after' => 'After'
2019
+ )
2020
+ )
2021
+ );
2022
+ $sap->add_setting(
2023
+ 'rtb-settings',
2024
+ 'rtb-stripe-payment',
2025
+ 'radio',
2026
+ array(
2027
+ 'id' => 'rtb-stripe-mode',
2028
+ 'title' => __( 'Test/Live Mode', 'restaurant-reservations' ),
2029
+ 'description' => __( 'Should the system use test or live mode? Test mode should only be used for testing, no deposits will actually be processed while turned on.', 'restaurant-reservations' ),
2030
+ 'options' => array(
2031
+ 'test' => 'Test',
2032
+ 'live' => 'Live'
2033
+ )
2034
+ )
2035
+ );
2036
+ $sap->add_setting(
2037
+ 'rtb-settings',
2038
+ 'rtb-stripe-payment',
2039
+ 'text',
2040
+ array(
2041
+ 'id' => 'rtb-stripe-live-secret',
2042
+ 'title' => __( 'Stripe Live Secret', 'restaurant-reservations' ),
2043
+ 'description' => __( 'The live secret that you have set up for your Stripe account.', 'restaurant-reservations' )
2044
+ )
2045
+ );
2046
+ $sap->add_setting(
2047
+ 'rtb-settings',
2048
+ 'rtb-stripe-payment',
2049
+ 'text',
2050
+ array(
2051
+ 'id' => 'rtb-stripe-live-publishable',
2052
+ 'title' => __( 'Stripe Live Publishable', 'restaurant-reservations' ),
2053
+ 'description' => __( 'The live publishable that you have set up for your Stripe account.', 'restaurant-reservations' )
2054
+ )
2055
+ );
2056
+ $sap->add_setting(
2057
+ 'rtb-settings',
2058
+ 'rtb-stripe-payment',
2059
+ 'text',
2060
+ array(
2061
+ 'id' => 'rtb-stripe-test-secret',
2062
+ 'title' => __( 'Stripe Test Secret', 'restaurant-reservations' ),
2063
+ 'description' => __( 'The test secret that you have set up for your Stripe account. Only needed for testing payments.', 'restaurant-reservations' )
2064
+ )
2065
+ );
2066
+ $sap->add_setting(
2067
+ 'rtb-settings',
2068
+ 'rtb-stripe-payment',
2069
+ 'text',
2070
+ array(
2071
+ 'id' => 'rtb-stripe-test-publishable',
2072
+ 'title' => __( 'Stripe Test Publishable', 'restaurant-reservations' ),
2073
+ 'description' => __( 'The test publishable that you have set up for your Stripe account. Only needed for testing payments.', 'restaurant-reservations' )
2074
+ )
2075
+ );
2076
+
2077
  if ( ! $rtb_controller->permissions->check_permission('export') ) {
2078
  $export_permissions = array(
2079
  'disabled' => true,
2371
  )
2372
  );
2373
 
2374
+ $sap->add_setting(
2375
+ 'rtb-settings',
2376
+ 'rtb-reservation-form-styling',
2377
+ 'colorpicker',
2378
+ array(
2379
+ 'id' => 'rtb-styling-cancel-button-background-color',
2380
+ 'title' => __( 'Cancel Reservation Button Background Color', 'restaurant-reservations' ),
2381
+ 'description' => __( 'Choose the background color for the cancel reservation toggle button button.', 'restaurant-reservations' )
2382
+ )
2383
+ );
2384
+ $sap->add_setting(
2385
+ 'rtb-settings',
2386
+ 'rtb-reservation-form-styling',
2387
+ 'colorpicker',
2388
+ array(
2389
+ 'id' => 'rtb-styling-cancel-button-background-hover-color',
2390
+ 'title' => __( 'Cancel Reservation Button Background Hover Color', 'restaurant-reservations' ),
2391
+ 'description' => __( 'Choose the background color for the cancel reservation toggle button on hover.', 'restaurant-reservations' )
2392
+ )
2393
+ );
2394
+ $sap->add_setting(
2395
+ 'rtb-settings',
2396
+ 'rtb-reservation-form-styling',
2397
+ 'colorpicker',
2398
+ array(
2399
+ 'id' => 'rtb-styling-cancel-button-text-color',
2400
+ 'title' => __( 'Cancel Reservation Text Color', 'restaurant-reservations' ),
2401
+ 'description' => __( 'Choose the text color for the cancel reservation toggle button.', 'restaurant-reservations' )
2402
+ )
2403
+ );
2404
+ $sap->add_setting(
2405
+ 'rtb-settings',
2406
+ 'rtb-reservation-form-styling',
2407
+ 'colorpicker',
2408
+ array(
2409
+ 'id' => 'rtb-styling-cancel-button-text-hover-color',
2410
+ 'title' => __( 'Cancel Reservation Text Hover Color', 'restaurant-reservations' ),
2411
+ 'description' => __( 'Choose the text color for the cancel reservation toggle button on hover.', 'restaurant-reservations' )
2412
+ )
2413
+ );
2414
+
2415
+ $sap->add_setting(
2416
+ 'rtb-settings',
2417
+ 'rtb-reservation-form-styling',
2418
+ 'colorpicker',
2419
+ array(
2420
+ 'id' => 'rtb-styling-find-reservations-button-background-color',
2421
+ 'title' => __( '"Find Reservations" Button Background Color', 'restaurant-reservations' ),
2422
+ 'description' => __( 'Choose the background color for the "Find Reservations" button.', 'restaurant-reservations' )
2423
+ )
2424
+ );
2425
+ $sap->add_setting(
2426
+ 'rtb-settings',
2427
+ 'rtb-reservation-form-styling',
2428
+ 'colorpicker',
2429
+ array(
2430
+ 'id' => 'rtb-styling-find-reservations-button-background-hover-color',
2431
+ 'title' => __( '"Find Reservations" Button Background Hover Color', 'restaurant-reservations' ),
2432
+ 'description' => __( 'Choose the background color for the "Find Reservations" button on hover.', 'restaurant-reservations' )
2433
+ )
2434
+ );
2435
+ $sap->add_setting(
2436
+ 'rtb-settings',
2437
+ 'rtb-reservation-form-styling',
2438
+ 'colorpicker',
2439
+ array(
2440
+ 'id' => 'rtb-styling-find-reservations-button-text-color',
2441
+ 'title' => __( '"Find Reservations" Button Text Color', 'restaurant-reservations' ),
2442
+ 'description' => __( 'Choose the text color for the "Find Reservations" button.', 'restaurant-reservations' )
2443
+ )
2444
+ );
2445
+ $sap->add_setting(
2446
+ 'rtb-settings',
2447
+ 'rtb-reservation-form-styling',
2448
+ 'colorpicker',
2449
+ array(
2450
+ 'id' => 'rtb-styling-find-reservations-button-text-hover-color',
2451
+ 'title' => __( '"Find Reservations" Button Text Hover Color', 'restaurant-reservations' ),
2452
+ 'description' => __( 'Choose the text color for the "Find Reservations" button on hover.', 'restaurant-reservations' )
2453
+ )
2454
+ );
2455
+
2456
  $sap = apply_filters( 'rtb_settings_page', $sap );
2457
 
2458
  $sap->add_admin_menus();
2695
  '{phone}' => __( 'Phone number if supplied with the request', 'restaurant-reservations' ),
2696
  '{message}' => __( 'Message added to the request', 'restaurant-reservations' ),
2697
  '{bookings_link}' => __( 'A link to the admin panel showing pending bookings', 'restaurant-reservations' ),
2698
+ '{cancel_link}' => __( 'A link that a guest can use to cancel their booking if cancellations are enabled', 'restaurant-reservations' ),
2699
  '{confirm_link}' => __( 'A link to confirm this booking. Only include this in admin notifications', 'restaurant-reservations' ),
2700
  '{close_link}' => __( 'A link to reject this booking. Only include this in admin notifications', 'restaurant-reservations' ),
2701
  '{site_name}' => __( 'The name of this website', 'restaurant-reservations' ),
includes/WP_List_Table.BookingsTable.class.php CHANGED
@@ -232,6 +232,7 @@ class rtbBookingsTable extends WP_List_Table {
232
  $views = array(
233
  'upcoming' => sprintf( '<a href="%s"%s>%s</a>', esc_url( add_query_arg( array( 'paged' => FALSE ), remove_query_arg( array( 'date_range' ), $date_range_query_string ) ) ), $date_range === '' ? ' class="current"' : '', __( 'Upcoming', 'restaurant-reservations' ) ),
234
  'today' => sprintf( '<a href="%s"%s>%s</a>', esc_url( add_query_arg( array( 'date_range' => 'today', 'paged' => FALSE ), $date_range_query_string ) ), $date_range === 'today' ? ' class="current"' : '', __( 'Today', 'restaurant-reservations' ) ),
 
235
  'all' => sprintf( '<a href="%s"%s>%s</a>', esc_url( add_query_arg( array( 'date_range' => 'all', 'paged' => FALSE ), $date_range_query_string ) ), $date_range == 'all' ? ' class="current"' : '', __( 'All', 'restaurant-reservations' ) ),
236
  );
237
 
@@ -353,16 +354,25 @@ class rtbBookingsTable extends WP_List_Table {
353
  * @since 1.5
354
  */
355
  public function get_all_default_columns() {
356
- return array(
 
 
357
  'cb' => '<input type="checkbox" />', //Render a checkbox instead of text
358
  'date' => __( 'Date', 'restaurant-reservations' ),
 
359
  'party' => __( 'Party', 'restaurant-reservations' ),
360
  'name' => __( 'Name', 'restaurant-reservations' ),
361
  'email' => __( 'Email', 'restaurant-reservations' ),
362
  'phone' => __( 'Phone', 'restaurant-reservations' ),
363
  'status' => __( 'Status', 'restaurant-reservations' ),
364
- 'details' => __( 'Details', 'restaurant-reservations' ),
365
  );
 
 
 
 
 
 
 
366
  }
367
 
368
  /**
@@ -385,8 +395,9 @@ class rtbBookingsTable extends WP_List_Table {
385
  */
386
  public function get_sortable_columns() {
387
  $columns = array(
 
388
  'date' => array( 'date', true ),
389
- 'name' => array( 'title', true ),
390
  );
391
  return apply_filters( 'rtb_bookings_table_sortable_columns', $columns );
392
  }
@@ -396,6 +407,7 @@ class rtbBookingsTable extends WP_List_Table {
396
  * @since 0.0.1
397
  */
398
  public function column_default( $booking, $column_name ) {
 
399
 
400
  switch ( $column_name ) {
401
  case 'date' :
@@ -411,6 +423,10 @@ class rtbBookingsTable extends WP_List_Table {
411
 
412
  break;
413
 
 
 
 
 
414
  case 'party' :
415
  $value = $booking->party;
416
  break;
@@ -430,6 +446,11 @@ class rtbBookingsTable extends WP_List_Table {
430
  $value = $booking->phone;
431
  break;
432
 
 
 
 
 
 
433
  case 'status' :
434
  global $rtb_controller;
435
  if ( !empty( $rtb_controller->cpts->booking_statuses[$booking->post_status] ) ) {
232
  $views = array(
233
  'upcoming' => sprintf( '<a href="%s"%s>%s</a>', esc_url( add_query_arg( array( 'paged' => FALSE ), remove_query_arg( array( 'date_range' ), $date_range_query_string ) ) ), $date_range === '' ? ' class="current"' : '', __( 'Upcoming', 'restaurant-reservations' ) ),
234
  'today' => sprintf( '<a href="%s"%s>%s</a>', esc_url( add_query_arg( array( 'date_range' => 'today', 'paged' => FALSE ), $date_range_query_string ) ), $date_range === 'today' ? ' class="current"' : '', __( 'Today', 'restaurant-reservations' ) ),
235
+ 'past' => sprintf( '<a href="%s"%s>%s</a>', esc_url( add_query_arg( array( 'date_range' => 'past', 'paged' => FALSE ), $date_range_query_string ) ), $date_range === 'past' ? ' class="current"' : '', __( 'Past', 'restaurant-reservations' ) ),
236
  'all' => sprintf( '<a href="%s"%s>%s</a>', esc_url( add_query_arg( array( 'date_range' => 'all', 'paged' => FALSE ), $date_range_query_string ) ), $date_range == 'all' ? ' class="current"' : '', __( 'All', 'restaurant-reservations' ) ),
237
  );
238
 
354
  * @since 1.5
355
  */
356
  public function get_all_default_columns() {
357
+ global $rtb_controller;
358
+
359
+ $columns = array(
360
  'cb' => '<input type="checkbox" />', //Render a checkbox instead of text
361
  'date' => __( 'Date', 'restaurant-reservations' ),
362
+ 'id' => __( 'ID', 'restaurant-reservations' ),
363
  'party' => __( 'Party', 'restaurant-reservations' ),
364
  'name' => __( 'Name', 'restaurant-reservations' ),
365
  'email' => __( 'Email', 'restaurant-reservations' ),
366
  'phone' => __( 'Phone', 'restaurant-reservations' ),
367
  'status' => __( 'Status', 'restaurant-reservations' ),
 
368
  );
369
+
370
+ if ( $rtb_controller->settings->get_setting( 'require-deposit' ) ) { $columns['deposit'] = __( 'Deposit', 'restaurant-reservations' ) ; }
371
+
372
+ // This is so that deposit comes before details, is there a better way to do this?
373
+ $columns['details'] = __( 'Details', 'restaurant-reservations' );
374
+
375
+ return $columns;
376
  }
377
 
378
  /**
395
  */
396
  public function get_sortable_columns() {
397
  $columns = array(
398
+ 'id' => array( 'ID', true ),
399
  'date' => array( 'date', true ),
400
+ 'name' => array( 'title', true )
401
  );
402
  return apply_filters( 'rtb_bookings_table_sortable_columns', $columns );
403
  }
407
  * @since 0.0.1
408
  */
409
  public function column_default( $booking, $column_name ) {
410
+ global $rtb_controller;
411
 
412
  switch ( $column_name ) {
413
  case 'date' :
423
 
424
  break;
425
 
426
+ case 'id' :
427
+ $value = $booking->ID;
428
+ break;
429
+
430
  case 'party' :
431
  $value = $booking->party;
432
  break;
446
  $value = $booking->phone;
447
  break;
448
 
449
+ case 'deposit' :
450
+ $currency_symbol = $rtb_controller->settings->get_setting( 'rtb-stripe-currency-symbol' );
451
+ $value = ( $currency_symbol ? $currency_symbol : '$' ) . $booking->deposit;
452
+ break;
453
+
454
  case 'status' :
455
  global $rtb_controller;
456
  if ( !empty( $rtb_controller->cpts->booking_statuses[$booking->post_status] ) ) {
includes/template-functions.php CHANGED
@@ -40,6 +40,11 @@ function rtb_print_booking_form( $args = array() ) {
40
  $rtb_controller->form_rendered = true;
41
  }
42
 
 
 
 
 
 
43
  // Sanitize incoming arguments
44
  if ( isset( $args['location'] ) ) {
45
  $args['location'] = $rtb_controller->locations->get_location_term_id( $args['location'] );
@@ -51,7 +56,7 @@ function rtb_print_booking_form( $args = array() ) {
51
  rtb_enqueue_assets();
52
 
53
  // Custom styling
54
- rtb_add_custom_styling();
55
 
56
  // Allow themes and plugins to override the booking form's HTML output.
57
  $output = apply_filters( 'rtb_booking_form_html_pre', '' );
@@ -60,7 +65,7 @@ function rtb_print_booking_form( $args = array() ) {
60
  }
61
 
62
  // Process a booking request
63
- if ( !empty( $_POST['action'] ) && $_POST['action'] == 'booking_request' ) {
64
 
65
  if ( get_class( $rtb_controller->request ) === 'stdClass' ) {
66
  require_once( RTB_PLUGIN_DIR . '/includes/Booking.class.php' );
@@ -87,13 +92,69 @@ function rtb_print_booking_form( $args = array() ) {
87
  var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
88
  </script>
89
 
 
 
 
 
90
  <div class="rtb-booking-form">
91
- <?php if ( $rtb_controller->request->request_inserted === true ) : ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  <div class="rtb-message">
93
- <p><?php echo ($rtb_controller->request->post_status == 'confirmed' ? $rtb_controller->settings->get_setting( 'confirmed-message' ) : $rtb_controller->settings->get_setting( 'success-message' )); ?></p>
94
  </div>
95
  <?php else : ?>
96
- <form method="POST" action="<?php echo esc_attr( $booking_page ); ?>">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  <input type="hidden" name="action" value="booking_request">
98
 
99
  <?php if ( !empty( $args['location'] ) ) : ?>
@@ -131,10 +192,15 @@ function rtb_print_booking_form( $args = array() ) {
131
 
132
  <?php do_action( 'rtb_booking_form_after_fields' ); ?>
133
 
 
 
 
134
  <?php
 
 
135
  $button = sprintf(
136
  '<button type="submit">%s</button>',
137
- apply_filters( 'rtb_booking_form_submit_label', __( 'Request Booking', 'restaurant-reservations' ) )
138
  );
139
 
140
  echo apply_filters( 'rtb_booking_form_submit_button', $button );
@@ -155,6 +221,265 @@ function rtb_print_booking_form( $args = array() ) {
155
  }
156
  } // endif;
157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  /**
159
  * Create a shortcode to view and (optionally) sign in bookings
160
  * @since 2.0.0
@@ -215,13 +540,16 @@ function rtb_print_view_bookings_form( $args = array() ) {
215
 
216
  $params = array(
217
  'post_type' => 'rtb-booking',
218
- 'year' => substr($args['date'], 0, 4),
219
- 'month' => substr($args['date'], 5, 2),
220
- 'day' => substr($args['date'], 8, 2),
 
 
 
221
  'post_status' => array_keys( $rtb_controller->cpts->booking_statuses ),
222
  'orderby' => 'date',
223
  'order' => 'ASC'
224
- );
225
 
226
  $query = new WP_Query( $params );
227
 
@@ -233,6 +561,8 @@ function rtb_print_view_bookings_form( $args = array() ) {
233
  var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
234
  </script>
235
 
 
 
236
  <div class="rtb-view-bookings-form">
237
 
238
  <div class='rtb-view-bookings-form-date-selector-div'>
@@ -245,9 +575,14 @@ function rtb_print_view_bookings_form( $args = array() ) {
245
  </div>
246
 
247
  <div class='rtb-view-bookings-form-confirmation-div rtb-hidden'>
248
- <?php _e("Set reservation status to 'Arrived'?", 'restaurant-reservations'); ?>
249
- <div class='rtb-view-bookings-form-confirmation-accept'><?php _e("Yes", 'restaurant-reservations'); ?></div>
250
- <div class='rtb-view-bookings-form-confirmation-decline'><?php _e("No", 'restaurant-reservations'); ?></div>
 
 
 
 
 
251
  </div>
252
  <div class='rtb-view-bookings-form-confirmation-background-div rtb-hidden'></div>
253
 
@@ -307,7 +642,7 @@ function rtb_print_view_bookings_form( $args = array() ) {
307
  if ( !function_exists( 'rtb_enqueue_assets' ) ) {
308
  function rtb_enqueue_assets() {
309
 
310
- global $wp_scripts, $rtb_controller;
311
 
312
  wp_enqueue_style( 'rtb-booking-form' );
313
 
@@ -323,17 +658,32 @@ function rtb_enqueue_assets() {
323
 
324
  wp_enqueue_script( 'rtb-booking-form' );
325
 
326
- if( $rtb_controller->settings->get_setting('rtb-styling-layout') == 'contemporary' ){
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
327
  wp_enqueue_style( 'rtb-contemporary-css', RTB_PLUGIN_URL . '/assets/css/contemporary.css' );
328
- wp_enqueue_script( 'rtb-contemporary-js', RTB_PLUGIN_URL . '/assets/js/contemporary.js', array( 'jquery' ), '', true );
329
  }
330
- if( $rtb_controller->settings->get_setting('rtb-styling-layout') == 'columns' ){
331
  wp_enqueue_style( 'rtb-columns-css', RTB_PLUGIN_URL . '/assets/css/columns.css' );
332
  wp_enqueue_script( 'rtb-columns-js', RTB_PLUGIN_URL . '/assets/js/columns.js', array( 'jquery' ), '', true );
333
  }
334
 
335
  // Pass date and time format settings to the pickadate controls
336
- global $rtb_controller;
337
  wp_localize_script(
338
  'rtb-booking-form',
339
  'rtb_pickadate',
@@ -732,25 +1082,34 @@ function rtb_get_request_input( $lookup, $request ) {
732
  if ( !function_exists( 'rtb_add_custom_styling' ) ) {
733
  function rtb_add_custom_styling() {
734
  global $rtb_controller;
735
- echo '<style>';
736
- if ( $rtb_controller->settings->get_setting('rtb-styling-section-title-font-family') != '' ) { echo '.rtb-booking-form fieldset legend { font-family: \'' . $rtb_controller->settings->get_setting('rtb-styling-section-title-font-family') . '\' !important; }'; }
737
- if ( $rtb_controller->settings->get_setting('rtb-styling-section-title-font-size') != '' ) { echo '.rtb-booking-form fieldset legend { font-size: ' . $rtb_controller->settings->get_setting('rtb-styling-section-title-font-size') . ' !important; }'; }
738
- if ( $rtb_controller->settings->get_setting('rtb-styling-section-title-color') != '' ) { echo '.rtb-booking-form fieldset legend { color: ' . $rtb_controller->settings->get_setting('rtb-styling-section-title-color') . ' !important; }'; }
739
- if ( $rtb_controller->settings->get_setting('rtb-styling-section-background-color') != '' ) { echo '.rtb-booking-form fieldset { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-section-background-color') . ' !important; }'; }
740
- if ( $rtb_controller->settings->get_setting('rtb-styling-section-border-color') != '' ) { echo '.rtb-booking-form fieldset { border-color: ' . $rtb_controller->settings->get_setting('rtb-styling-section-border-color') . ' !important; }'; }
741
- if ( $rtb_controller->settings->get_setting('rtb-styling-section-border-size') != '' ) { echo '.rtb-booking-form fieldset { border-width: ' . $rtb_controller->settings->get_setting('rtb-styling-section-border-size') . ' !important; }'; }
742
- if ( $rtb_controller->settings->get_setting('rtb-styling-label-font-family') != '' ) { echo '.rtb-booking-form fieldset label, .rtb-booking-form .add-message a { font-family: \'' . $rtb_controller->settings->get_setting('rtb-styling-label-font-family') . '\' !important; }'; }
743
- if ( $rtb_controller->settings->get_setting('rtb-styling-label-font-size') != '' ) { echo '.rtb-booking-form fieldset label { font-size: ' . $rtb_controller->settings->get_setting('rtb-styling-label-font-size') . ' !important; }'; }
744
- if ( $rtb_controller->settings->get_setting('rtb-styling-label-color') != '' ) { echo '.rtb-booking-form fieldset label { color: ' . $rtb_controller->settings->get_setting('rtb-styling-label-color') . ' !important; }'; }
745
- if ( $rtb_controller->settings->get_setting('rtb-styling-add-message-button-background-color') != '' ) { echo '.rtb-booking-form .add-message a { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-add-message-button-background-color') . ' !important; border-color: ' . $rtb_controller->settings->get_setting('rtb-styling-add-message-button-background-color') . ' !important; padding: 6px 12px !important; }'; }
746
- if ( $rtb_controller->settings->get_setting('rtb-styling-add-message-button-background-hover-color') != '' ) { echo '.rtb-booking-form .add-message a:hover { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-add-message-button-background-hover-color') . ' !important; border-color: ' . $rtb_controller->settings->get_setting('rtb-styling-add-message-button-background-hover-color') . ' !important; }'; }
747
- if ( $rtb_controller->settings->get_setting('rtb-styling-add-message-button-text-color') != '' ) { echo '.rtb-booking-form .add-message a { color: ' . $rtb_controller->settings->get_setting('rtb-styling-add-message-button-text-color') . ' !important; }'; }
748
- if ( $rtb_controller->settings->get_setting('rtb-styling-add-message-button-text-hover-color') != '' ) { echo '.rtb-booking-form .add-message a:hover { color: ' . $rtb_controller->settings->get_setting('rtb-styling-add-message-button-text-hover-color') . ' !important; }'; }
749
- if ( $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-background-color') != '' ) { echo '.rtb-booking-form form button { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-background-color') . ' !important; border-color: ' . $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-background-color') . ' !important; padding: 13px 28px !important; }'; }
750
- if ( $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-background-hover-color') != '' ) { echo '.rtb-booking-form form button:hover { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-background-hover-color') . ' !important; border-color: ' . $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-background-hover-color') . ' !important; }'; }
751
- if ( $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-text-color') != '' ) { echo '.rtb-booking-form form button { color: ' . $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-text-color') . ' !important; }'; }
752
- if ( $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-text-hover-color') != '' ) { echo '.rtb-booking-form form button:hover { color: ' . $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-text-hover-color') . ' !important; }'; }
753
- echo '</style>';
 
 
 
 
 
 
 
 
 
754
  }
755
  }
756
 
40
  $rtb_controller->form_rendered = true;
41
  }
42
 
43
+ // Run cancellation request if parameters are included
44
+ if ( isset($_GET['action']) and $_GET['action'] == 'cancel' ) {
45
+ $rtb_controller->ajax->cancel_reservation( false );
46
+ }
47
+
48
  // Sanitize incoming arguments
49
  if ( isset( $args['location'] ) ) {
50
  $args['location'] = $rtb_controller->locations->get_location_term_id( $args['location'] );
56
  rtb_enqueue_assets();
57
 
58
  // Custom styling
59
+ $styling = rtb_add_custom_styling();
60
 
61
  // Allow themes and plugins to override the booking form's HTML output.
62
  $output = apply_filters( 'rtb_booking_form_html_pre', '' );
65
  }
66
 
67
  // Process a booking request
68
+ if ( !empty( $_POST['action'] ) and $_POST['action'] == 'booking_request' ) {
69
 
70
  if ( get_class( $rtb_controller->request ) === 'stdClass' ) {
71
  require_once( RTB_PLUGIN_DIR . '/includes/Booking.class.php' );
92
  var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
93
  </script>
94
 
95
+ <?php echo $styling; ?>
96
+
97
+ <?php echo apply_filters( 'rtb_booking_form_before_html', '' ); ?>
98
+
99
  <div class="rtb-booking-form">
100
+ <?php if ( ( $rtb_controller->request->request_inserted === true and ! $rtb_controller->settings->get_setting( 'require-deposit' ) ) or ( isset($_GET['payment']) and $_GET['payment'] == 'paid' ) ) : ?>
101
+
102
+ <?php
103
+ if($rtb_controller->request->post_status == 'confirmed'){
104
+ if( $rtb_controller->settings->get_setting('confirmed-redirect-page') != '' ){
105
+ header( 'location:' . $rtb_controller->settings->get_setting('confirmed-redirect-page') );
106
+ }
107
+ else{
108
+ ?>
109
+ <div class="rtb-message">
110
+ <p><?php echo $rtb_controller->settings->get_setting('confirmed-message'); ?></p>
111
+ </div>
112
+ <?php
113
+ }
114
+ }
115
+ else{
116
+ if( $rtb_controller->settings->get_setting('pending-redirect-page') != '' ){
117
+ header( 'location:' . $rtb_controller->settings->get_setting('pending-redirect-page') );
118
+ }
119
+ else{
120
+ ?>
121
+ <div class="rtb-message">
122
+ <p><?php echo $rtb_controller->settings->get_setting('success-message'); ?></p>
123
+ </div>
124
+ <?php
125
+ }
126
+ }
127
+ ?>
128
+
129
+ <?php elseif ( $rtb_controller->request->request_inserted === true ) : ?>
130
+ <?php rtb_print_payment_form(); ?>
131
+ <?php elseif ( isset($_POST['stripeToken']) ) : ?>
132
+ <?php rtb_process_stripe_payment(); ?>
133
+ <?php elseif ( isset($_GET['payment']) ) : ?>
134
+ <div class="rtb-message">
135
+ <p><?php _e( 'Your reservation deposit payment has failed. Please contact the site administrator for assistance.', 'restaurant-reservations' ) ?></p>
136
+ </div>
137
+ <?php elseif ( isset($_GET['bookingCancelled']) and $_GET['bookingCancelled'] == 'success') : ?>
138
  <div class="rtb-message">
139
+ <p><?php _e( 'Your reservation has been successfully cancelled.', 'restaurant-reservations' ) ?></p>
140
  </div>
141
  <?php else : ?>
142
+
143
+ <?php if ( $rtb_controller->settings->get_setting( 'allow-cancellations' ) ) : ?>
144
+ <div class="rtb-cancellation-toggle"><?php _e( 'Want to cancel your reservation?', 'restaurant-reservations' ); ?></div>
145
+ <div class="rtb-clear"></div>
146
+ <form class="rtb-cancellation-form rtb-hidden">
147
+ <div><?php _e( 'Use the form below to cancel your reservation', 'restaurant-reservations' ); ?></div>
148
+ <label for="rtb-cancellation-email"><?php _e( 'Email:', 'restaurant-reservations' ); ?></label>
149
+ <input type="email" name="rtb_cancellation_email" />
150
+ <div class="rtb-clear"></div>
151
+ <div class="rtb-cancel-button"><?php _e( 'Find Reservations', 'restaurant-reservations' ); ?></div>
152
+ <div class="rtb-clear"></div>
153
+ <div class="rtb-bookings-results"></div>
154
+ </form>
155
+ <?php endif; ?>
156
+
157
+ <form method="POST" action="<?php echo esc_attr( $booking_page ); ?>" class="rtb-booking-form-form">
158
  <input type="hidden" name="action" value="booking_request">
159
 
160
  <?php if ( !empty( $args['location'] ) ) : ?>
192
 
193
  <?php do_action( 'rtb_booking_form_after_fields' ); ?>
194
 
195
+ <div id='rtb_recaptcha'></div>
196
+ <?php echo rtb_print_form_error( 'recaptcha' ); ?>
197
+
198
  <?php
199
+ $button_text = $rtb_controller->settings->get_setting( 'require-deposit' ) ? __( 'Proceed to Deposit', 'restaurant-reservations' ) : __( 'Request Booking', 'restaurant-reservations' );
200
+
201
  $button = sprintf(
202
  '<button type="submit">%s</button>',
203
+ apply_filters( 'rtb_booking_form_submit_label', $button_text )
204
  );
205
 
206
  echo apply_filters( 'rtb_booking_form_submit_button', $button );
221
  }
222
  } // endif;
223
 
224
+ /**
225
+ * Print the payment form's HTML code, after a new booking has been inserted
226
+ * notices.
227
+ * @since 2.1.0
228
+ */
229
+ if ( !function_exists( 'rtb_print_payment_form' ) ) {
230
+ function rtb_print_payment_form( $args = array() ) {
231
+ global $rtb_controller;
232
+
233
+ // Define the form's action parameter
234
+ $booking_page = $rtb_controller->settings->get_setting( 'booking-page' );
235
+ if ( !empty( $booking_page ) ) {
236
+ $booking_page = get_permalink( $booking_page );
237
+ }
238
+
239
+ if ( $rtb_controller->settings->get_setting( 'rtb-payment-gateway' ) == "paypal" ) { ?>
240
+ <form action='https://www.paypal.com/cgi-bin/webscr' method='post' class='standard-form'>
241
+ <input type='hidden' name='item_name_1' value='<?php echo substr(get_bloginfo('name'), 0, 100); ?> Reservation Deposit' />
242
+ <input type='hidden' name='custom' value='booking_id=<?php echo $rtb_controller->request->ID; ?>' />
243
+ <input type='hidden' name='quantity_1' value='1' />
244
+ <input type='hidden' name='amount_1' value='<?php echo $rtb_controller->request->calculate_deposit(); ?>' />
245
+ <input type='hidden' name='cmd' value='_cart' />
246
+ <input type='hidden' name='upload' value='1' />
247
+ <input type='hidden' name='business' value='<?php echo $rtb_controller->settings->get_setting( 'rtb-paypal-email' ); ?>' />
248
+ <input type='hidden' name='currency_code' value='<?php echo $rtb_controller->settings->get_setting( 'rtb-currency' ); ?>' />
249
+ <input type='hidden' name='return' value='<?php $booking_page; ?>' />
250
+ <input type='hidden' name='notify_url' value='<?php echo get_site_url(); ?>' />
251
+ <input type='submit' class='submit-button' value='Pay via PayPal' />
252
+ </form>
253
+ <?php } else {
254
+ wp_enqueue_script( 'rtb-stripe', RTB_PLUGIN_URL . '/assets/js/stripe.js', array( 'jquery' ), RTB_VERSION, true );
255
+ wp_enqueue_script( 'rtb-stripe-payment', RTB_PLUGIN_URL . '/assets/js/stripe-payment.js', array( 'jquery', 'rtb-stripe' ), RTB_VERSION, true );
256
+
257
+ wp_localize_script(
258
+ 'rtb-stripe-payment',
259
+ 'rtb_stripe_payment',
260
+ array(
261
+ 'stripe_mode' => $rtb_controller->settings->get_setting( 'rtb-stripe-mode' ),
262
+ 'live_publishable_key' => $rtb_controller->settings->get_setting( 'rtb-stripe-live-publishable' ),
263
+ 'test_publishable_key' => $rtb_controller->settings->get_setting( 'rtb-stripe-test-publishable' ),
264
+ )
265
+ );
266
+
267
+ $payment_amount = $rtb_controller->settings->get_setting( 'rtb-currency-symbol-location' ) == 'before' ? $rtb_controller->settings->get_setting( 'rtb-stripe-currency-symbol' ) . $rtb_controller->request->calculate_deposit() : $rtb_controller->request->calculate_deposit() . $rtb_controller->settings->get_setting( 'rtb-stripe-currency-symbol' );
268
+ ?>
269
+
270
+ <h2><?php echo __('Deposit Required: ', 'restaurant-reservations' ) . $payment_amount; ?></h2>
271
+
272
+ <form action='#' method='POST' id='stripe-payment-form'>
273
+ <div class='form-row'>
274
+ <label><?php _e('Card Number', 'restaurant-reservations'); ?></label>
275
+ <input type='text' size='20' autocomplete='off' data-stripe='card_number'/>
276
+ </div>
277
+ <div class='form-row'>
278
+ <label><?php _e('CVC', 'restaurant-reservations'); ?></label>
279
+ <input type='text' size='4' autocomplete='off' data-stripe='card_cvc'/>
280
+ </div>
281
+ <div class='form-row'>
282
+ <label><?php _e('Expiration (MM/YYYY)', 'restaurant-reservations'); ?></label>
283
+ <input type='text' size='2' data-stripe='exp_month'/>
284
+ <span> / </span>
285
+ <input type='text' size='4' data-stripe='exp_year'/>
286
+ </div>
287
+ <input type='hidden' name='action' value='rtb_stripe_booking_payment'/>
288
+ <input type='hidden' name='currency' value='<?php echo $rtb_controller->settings->get_setting( 'rtb-currency' ); ?>' data-stripe='currency' />
289
+ <input type='hidden' name='payment_amount' value='<?php echo $rtb_controller->request->calculate_deposit(); ?>' />
290
+ <input type='hidden' name='booking_id' value='<?php echo $rtb_controller->request->ID; ?>' />
291
+ <button type='submit' id='stripe-submit'><?php _e( 'Make Deposit', 'restaurant-reservations'); ?></button>
292
+ </form>
293
+ <?php }
294
+ }
295
+ } // endif;
296
+
297
+ /**
298
+ * Process Stripe payments for reservation deposits
299
+ * @since 2.1.0
300
+ */
301
+ if ( !function_exists( 'rtb_display_bookings_form_shortcode' ) ) {
302
+ function rtb_process_stripe_payment() {
303
+ global $rtb_controller;
304
+
305
+ $booking_id = isset($_POST['booking_id']) ? absint( $_POST['booking_id'] ) : 0;
306
+
307
+ if ( ! $booking_id ) { return; }
308
+
309
+ // Define the form's action parameter
310
+ $booking_page = $rtb_controller->settings->get_setting( 'booking-page' );
311
+ if ( !empty( $booking_page ) ) {
312
+ $booking_page = get_permalink( $booking_page );
313
+ }
314
+ else { $booking_page = get_permalink(); }
315
+
316
+
317
+ // load the stripe libraries
318
+ require_once(RTB_PLUGIN_DIR . '/lib/stripe/init.php');
319
+
320
+ // retrieve the token generated by stripe.js
321
+ $token = $_POST['stripeToken'];
322
+
323
+ $payment_amount = ( $rtb_controller->settings->get_setting( 'rtb-currency' ) != "JPY" ? $_POST['payment_amount'] * 100 : $_POST['payment_amount'] );
324
+
325
+ $stripe_secret = $rtb_controller->settings->get_setting( 'rtb-stripe-mode' ) == 'test' ? $rtb_controller->settings->get_setting( 'rtb-stripe-test-secret' ) : $rtb_controller->settings->get_setting( 'rtb-stripe-live-secret' );
326
+
327
+ try {
328
+ \Stripe\Stripe::setApiKey( $stripe_secret );
329
+ $charge = \Stripe\Charge::create(array(
330
+ 'amount' => $payment_amount,
331
+ 'currency' => strtolower( $rtb_controller->settings->get_setting( 'rtb-currency' ) ),
332
+ 'card' => $token
333
+ )
334
+ );
335
+
336
+ require_once( RTB_PLUGIN_DIR . '/includes/Booking.class.php' );
337
+ $booking = new rtbBooking();
338
+ $booking->load_post( $booking_id );
339
+
340
+ $booking->deposit = ( $rtb_controller->settings->get_setting( 'rtb-currency' ) != "JPY" ? $payment_amount / 100 : $payment_amount );
341
+ $booking->receipt_id = $charge->id;
342
+
343
+ $booking->determine_status( true );
344
+
345
+ $booking->insert_post_data();
346
+
347
+ // redirect on successful payment
348
+ $redirect = add_query_arg('payment', 'paid', $booking_page);
349
+
350
+ } catch (Exception $e) { update_option( "rtb-payment-error", print_r($e, true) );
351
+ // redirect on failed payment
352
+ $redirect = add_query_arg('payment', 'failed', $booking_page);
353
+ }
354
+
355
+ // redirect back to our previous page with the added query variable
356
+ wp_redirect($redirect); exit;
357
+ }
358
+ } // endif;
359
+
360
+
361
+ // If there's an IPN request, add our setup function to potentially handle it
362
+ if ( isset($_POST['ipn_track_id']) ) { add_action( 'init', 'rtb_setup_paypal_ipn', 1); }
363
+
364
+ /**
365
+ * Sets up the PayPal IPN process
366
+ * @since 2.1.0
367
+ */
368
+ if ( !function_exists( 'rtb_handle_paypal_ipn' ) ) {
369
+ function rtb_setup_paypal_ipn() {
370
+ global $rtb_controller;
371
+
372
+ if ( ! $rtb_controller->settings->get_setting( 'require-deposit' ) ) { return; }
373
+
374
+ rtb_handle_paypal_ipn();
375
+ add_action('init', 'rtb_add_ob_start');
376
+ add_action('shutdown', 'rtb_flush_ob_end');
377
+ }
378
+ } // endif;
379
+
380
+ /**
381
+ * Handle PayPal IPN requests
382
+ * @since 2.1.0
383
+ */
384
+ if ( !function_exists( 'rtb_handle_paypal_ipn' ) ) {
385
+ function rtb_handle_paypal_ipn() {
386
+
387
+ // CONFIG: Enable debug mode. This means we'll log requests into 'ipn.log' in the same directory.
388
+ // Especially useful if you encounter network errors or other intermittent problems with IPN (validation).
389
+ // Set this to 0 once you go live or don't require logging.
390
+ define("DEBUG", 0);
391
+ // Set to 0 once you're ready to go live
392
+ define("USE_SANDBOX", 0);
393
+ define("LOG_FILE", "./ipn.log");
394
+ // Read POST data
395
+ // reading posted data directly from $_POST causes serialization
396
+ // issues with array data in POST. Reading raw POST data from input stream instead.
397
+ $raw_post_data = file_get_contents('php://input');
398
+ $raw_post_array = explode('&', $raw_post_data);
399
+ $myPost = array();
400
+ foreach ($raw_post_array as $keyval) {
401
+ $keyval = explode ('=', $keyval);
402
+ if (count($keyval) == 2)
403
+ $myPost[$keyval[0]] = urldecode($keyval[1]);
404
+ }
405
+ // read the post from PayPal system and add 'cmd'
406
+ $req = 'cmd=_notify-validate';
407
+ if(function_exists('get_magic_quotes_gpc')) {
408
+ $get_magic_quotes_exists = true;
409
+ }
410
+ foreach ($myPost as $key => $value) {
411
+ if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {
412
+ $value = urlencode(stripslashes($value));
413
+ } else {
414
+ $value = urlencode($value);
415
+ }
416
+ $req .= "&$key=$value";
417
+ }
418
+ // Post IPN data back to PayPal to validate the IPN data is genuine
419
+ // Without this step anyone can fake IPN data
420
+ if(USE_SANDBOX == true) {
421
+ $paypal_url = "https://www.sandbox.paypal.com/cgi-bin/webscr";
422
+ } else {
423
+ $paypal_url = "https://www.paypal.com/cgi-bin/webscr";
424
+ }
425
+
426
+ $response = wp_remote_post($paypal_url, array(
427
+ 'method' => 'POST',
428
+ 'body' => $req,
429
+ 'timeout' => 30
430
+ ));
431
+
432
+ // Inspect IPN validation result and act accordingly
433
+ // Split response headers and payload, a better way for strcmp
434
+ $tokens = explode("\r\n\r\n", trim($response['body']));
435
+ $res = trim(end($tokens));
436
+ if (strcmp ($res, "VERIFIED") == 0) {
437
+
438
+ $paypal_receipt_number = $_POST['txn_id'];
439
+ $payment_amount = $_POST['mc_gross'];
440
+
441
+ parse_str($_POST['custom'], $custom_vars);
442
+ $booking_id = $custom_vars['booking_id'];
443
+
444
+ require_once( RTB_PLUGIN_DIR . '/includes/Booking.class.php' );
445
+
446
+ $booking = new rtbBooking();
447
+ $booking->load_post( $booking_id );
448
+
449
+ $booking->deposit = $payment_amount;
450
+ $booking->receipt_id = $paypal_receipt_number;
451
+
452
+ $booking->determine_status( true );
453
+
454
+ $booking->insert_post_data();
455
+
456
+ if ( DEBUG == true ) {
457
+ error_log(date('[Y-m-d H:i e] '). "Verified IPN: $req ". PHP_EOL, 3, LOG_FILE);
458
+ }
459
+ }
460
+ }
461
+ } // endif;
462
+
463
+ /**
464
+ * Opens a buffer when handling PayPal IPN requests
465
+ * @since 2.1.0
466
+ */
467
+ if ( !function_exists( 'rtb_add_ob_start' ) ) {
468
+ function rtb_add_ob_start() { update_option( "EWD_Debugging2", "Second init function called" );
469
+ ob_start();
470
+ }
471
+ } // endif;
472
+
473
+ /**
474
+ * Closes a buffer when handling PayPal IPN requests
475
+ * @since 2.1.0
476
+ */
477
+ if ( !function_exists( 'rtb_flush_ob_end' ) ) {
478
+ function rtb_flush_ob_end() {
479
+ ob_end_clean();
480
+ }
481
+ } // endif;
482
+
483
  /**
484
  * Create a shortcode to view and (optionally) sign in bookings
485
  * @since 2.0.0
540
 
541
  $params = array(
542
  'post_type' => 'rtb-booking',
543
+ 'posts_per_page' => -1,
544
+ 'date_query' => array(
545
+ 'year' => substr($args['date'], 0, 4),
546
+ 'month' => substr($args['date'], 5, 2),
547
+ 'day' => substr($args['date'], 8, 2)
548
+ ),
549
  'post_status' => array_keys( $rtb_controller->cpts->booking_statuses ),
550
  'orderby' => 'date',
551
  'order' => 'ASC'
552
+ );
553
 
554
  $query = new WP_Query( $params );
555
 
561
  var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
562
  </script>
563
 
564
+ <?php echo apply_filters( 'rtb_display_bookings_form_before_html', '' ); ?>
565
+
566
  <div class="rtb-view-bookings-form">
567
 
568
  <div class='rtb-view-bookings-form-date-selector-div'>
575
  </div>
576
 
577
  <div class='rtb-view-bookings-form-confirmation-div rtb-hidden'>
578
+ <div class='rtb-view-bookings-form-confirmation-div-inside'>
579
+ <div id="rtb-view-bookings-form-close">x</div>
580
+ <div class='rtb-view-bookings-form-confirmation-div-title'>
581
+ <?php _e("Set reservation status to 'Arrived'?", 'restaurant-reservations'); ?>
582
+ </div>
583
+ <div class='rtb-view-bookings-form-confirmation-accept'><?php _e("Yes", 'restaurant-reservations'); ?></div>
584
+ <div class='rtb-view-bookings-form-confirmation-decline'><?php _e("No", 'restaurant-reservations'); ?></div>
585
+ </div>
586
  </div>
587
  <div class='rtb-view-bookings-form-confirmation-background-div rtb-hidden'></div>
588
 
642
  if ( !function_exists( 'rtb_enqueue_assets' ) ) {
643
  function rtb_enqueue_assets() {
644
 
645
+ global $rtb_controller;
646
 
647
  wp_enqueue_style( 'rtb-booking-form' );
648
 
658
 
659
  wp_enqueue_script( 'rtb-booking-form' );
660
 
661
+ if ( $rtb_controller->settings->get_setting( 'enable-captcha' ) ) {
662
+ $site_key = $rtb_controller->settings->get_setting( 'captcha-site-key' );
663
+
664
+ wp_enqueue_script( 'rtb-google-recaptcha', 'https://www.google.com/recaptcha/api.js?hl=' . get_locale() . '&render=explicit&onload=rtbLoadRecaptcha' );
665
+ wp_enqueue_script( 'rtb-process-recaptcha', RTB_PLUGIN_URL . '/assets/js/rtb-recaptcha.js', array( 'rtb-google-recaptcha' ) );
666
+
667
+ wp_localize_script( 'rtb-process-recaptcha', 'rtb_recaptcha', array( 'site_key' => $site_key ) );
668
+ }
669
+
670
+ if ( function_exists('get_current_screen') ) {
671
+ $screen = get_current_screen();
672
+ $screenID = $screen->id;
673
+ }
674
+ else {
675
+ $screenID = '';
676
+ }
677
+
678
+ if( $rtb_controller->settings->get_setting( 'rtb-styling-layout' ) == 'contemporary' && $screenID != 'toplevel_page_rtb-bookings' ){
679
  wp_enqueue_style( 'rtb-contemporary-css', RTB_PLUGIN_URL . '/assets/css/contemporary.css' );
 
680
  }
681
+ if( $rtb_controller->settings->get_setting( 'rtb-styling-layout' ) == 'columns' && $screenID != 'toplevel_page_rtb-bookings' ){
682
  wp_enqueue_style( 'rtb-columns-css', RTB_PLUGIN_URL . '/assets/css/columns.css' );
683
  wp_enqueue_script( 'rtb-columns-js', RTB_PLUGIN_URL . '/assets/js/columns.js', array( 'jquery' ), '', true );
684
  }
685
 
686
  // Pass date and time format settings to the pickadate controls
 
687
  wp_localize_script(
688
  'rtb-booking-form',
689
  'rtb_pickadate',
1082
  if ( !function_exists( 'rtb_add_custom_styling' ) ) {
1083
  function rtb_add_custom_styling() {
1084
  global $rtb_controller;
1085
+ $styling = '<style>';
1086
+ if ( $rtb_controller->settings->get_setting('rtb-styling-section-title-font-family') != '' ) { $styling .= '.rtb-booking-form fieldset legend { font-family: \'' . $rtb_controller->settings->get_setting('rtb-styling-section-title-font-family') . '\' !important; }'; }
1087
+ if ( $rtb_controller->settings->get_setting('rtb-styling-section-title-font-size') != '' ) { $styling .= '.rtb-booking-form fieldset legend { font-size: ' . $rtb_controller->settings->get_setting('rtb-styling-section-title-font-size') . ' !important; }'; }
1088
+ if ( $rtb_controller->settings->get_setting('rtb-styling-section-title-color') != '' ) { $styling .= '.rtb-booking-form fieldset legend { color: ' . $rtb_controller->settings->get_setting('rtb-styling-section-title-color') . ' !important; }'; }
1089
+ if ( $rtb_controller->settings->get_setting('rtb-styling-section-background-color') != '' ) { $styling .= '.rtb-booking-form fieldset { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-section-background-color') . ' !important; }'; }
1090
+ if ( $rtb_controller->settings->get_setting('rtb-styling-section-border-color') != '' ) { $styling .= '.rtb-booking-form fieldset { border-color: ' . $rtb_controller->settings->get_setting('rtb-styling-section-border-color') . ' !important; }'; }
1091
+ if ( $rtb_controller->settings->get_setting('rtb-styling-section-border-size') != '' ) { $styling .= '.rtb-booking-form fieldset { border-width: ' . $rtb_controller->settings->get_setting('rtb-styling-section-border-size') . ' !important; }'; }
1092
+ if ( $rtb_controller->settings->get_setting('rtb-styling-label-font-family') != '' ) { $styling .= '.rtb-booking-form fieldset label, .rtb-booking-form .add-message a { font-family: \'' . $rtb_controller->settings->get_setting('rtb-styling-label-font-family') . '\' !important; }'; }
1093
+ if ( $rtb_controller->settings->get_setting('rtb-styling-label-font-size') != '' ) { $styling .= '.rtb-booking-form fieldset label { font-size: ' . $rtb_controller->settings->get_setting('rtb-styling-label-font-size') . ' !important; }'; }
1094
+ if ( $rtb_controller->settings->get_setting('rtb-styling-label-color') != '' ) { $styling .= '.rtb-booking-form fieldset label { color: ' . $rtb_controller->settings->get_setting('rtb-styling-label-color') . ' !important; }'; }
1095
+ if ( $rtb_controller->settings->get_setting('rtb-styling-add-message-button-background-color') != '' ) { $styling .= '.rtb-booking-form .add-message a { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-add-message-button-background-color') . ' !important; border-color: ' . $rtb_controller->settings->get_setting('rtb-styling-add-message-button-background-color') . ' !important; padding: 6px 12px !important; }'; }
1096
+ if ( $rtb_controller->settings->get_setting('rtb-styling-add-message-button-background-hover-color') != '' ) { $styling .= '.rtb-booking-form .add-message a:hover { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-add-message-button-background-hover-color') . ' !important; border-color: ' . $rtb_controller->settings->get_setting('rtb-styling-add-message-button-background-hover-color') . ' !important; }'; }
1097
+ if ( $rtb_controller->settings->get_setting('rtb-styling-add-message-button-text-color') != '' ) { $styling .= '.rtb-booking-form .add-message a { color: ' . $rtb_controller->settings->get_setting('rtb-styling-add-message-button-text-color') . ' !important; }'; }
1098
+ if ( $rtb_controller->settings->get_setting('rtb-styling-add-message-button-text-hover-color') != '' ) { $styling .= '.rtb-booking-form .add-message a:hover { color: ' . $rtb_controller->settings->get_setting('rtb-styling-add-message-button-text-hover-color') . ' !important; }'; }
1099
+ if ( $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-background-color') != '' ) { $styling .= '.rtb-booking-form form button { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-background-color') . ' !important; border-color: ' . $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-background-color') . ' !important; padding: 13px 28px !important; }'; }
1100
+ if ( $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-background-hover-color') != '' ) { $styling .= '.rtb-booking-form form button:hover { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-background-hover-color') . ' !important; border-color: ' . $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-background-hover-color') . ' !important; }'; }
1101
+ if ( $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-text-color') != '' ) { $styling .= '.rtb-booking-form form button { color: ' . $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-text-color') . ' !important; }'; }
1102
+ if ( $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-text-hover-color') != '' ) { $styling .= '.rtb-booking-form form button:hover { color: ' . $rtb_controller->settings->get_setting('rtb-styling-request-booking-button-text-hover-color') . ' !important; }'; }
1103
+ if ( $rtb_controller->settings->get_setting('rtb-styling-cancel-button-background-color') != '' ) { $styling .= '.rtb-cancellation-toggle { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-cancel-button-background-color') . ' !important; }'; }
1104
+ if ( $rtb_controller->settings->get_setting('rtb-styling-cancel-button-background-hover-color') != '' ) { $styling .= '.rtb-cancellation-toggle:hover { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-cancel-button-background-hover-color') . ' !important; }'; }
1105
+ if ( $rtb_controller->settings->get_setting('rtb-styling-cancel-button-text-color') != '' ) { $styling .= '.rtb-cancellation-toggle { color: ' . $rtb_controller->settings->get_setting('rtb-styling-cancel-button-text-color') . ' !important; }'; }
1106
+ if ( $rtb_controller->settings->get_setting('rtb-styling-cancel-button-text-hover-color') != '' ) { $styling .= '.rtb-cancellation-toggle:hover { color: ' . $rtb_controller->settings->get_setting('rtb-styling-cancel-button-text-hover-color') . ' !important; }'; }
1107
+ if ( $rtb_controller->settings->get_setting('rtb-styling-find-reservations-button-background-color') != '' ) { $styling .= '.rtb-cancel-button { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-find-reservations-button-background-color') . ' !important; }'; }
1108
+ if ( $rtb_controller->settings->get_setting('rtb-styling-find-reservations-button-background-hover-color') != '' ) { $styling .= '.rtb-cancel-button:hover { background-color: ' . $rtb_controller->settings->get_setting('rtb-styling-find-reservations-button-background-hover-color') . ' !important; }'; }
1109
+ if ( $rtb_controller->settings->get_setting('rtb-styling-find-reservations-button-text-color') != '' ) { $styling .= '.rtb-cancel-button { color: ' . $rtb_controller->settings->get_setting('rtb-styling-find-reservations-button-text-color') . ' !important; }'; }
1110
+ if ( $rtb_controller->settings->get_setting('rtb-styling-find-reservations-button-text-hover-color') != '' ) { $styling .= '.rtb-cancel-button:hover { color: ' . $rtb_controller->settings->get_setting('rtb-styling-find-reservations-button-text-hover-color') . ' !important; }'; }
1111
+ $styling .= '</style>';
1112
+ return $styling;
1113
  }
1114
  }
1115
 
lib/simple-admin-pages/classes/AdminPageSection.class.php CHANGED
@@ -129,20 +129,17 @@ class sapAdminPageSection_2_2_0 {
129
  endif;
130
 
131
  if ( $this->disabled and isset($this->disabled_image) ) {
132
-
133
- ?>
134
-
135
  <?php echo ( isset($this->purchase_link ) ? "<div class='rtb-premium-options-table-overlay'>" : '' ); ?>
136
  <div class="section-disabled">
137
  <img src="<?php echo RTB_PLUGIN_URL; ?>/assets/img/options-asset-lock.png" alt="Upgrade to Five-Star Restaurant Reservations Premium">
138
- <p>Access this section by by upgrading to premium</p>
139
- <a href="https://www.fivestarplugins.com/plugins/five-star-restaurant-reservations/" class="rtb-dashboard-get-premium-widget-button" target="_blank">UPGRADE NOW</a>
140
  </div>
141
  <?php echo ( isset($this->purchase_link ) ? "</div>" : '' ); ?>
142
-
143
- <?php
144
-
145
  }
 
146
  }
147
 
148
  /**
129
  endif;
130
 
131
  if ( $this->disabled and isset($this->disabled_image) ) {
132
+ ?>
 
 
133
  <?php echo ( isset($this->purchase_link ) ? "<div class='rtb-premium-options-table-overlay'>" : '' ); ?>
134
  <div class="section-disabled">
135
  <img src="<?php echo RTB_PLUGIN_URL; ?>/assets/img/options-asset-lock.png" alt="Upgrade to Five-Star Restaurant Reservations Premium">
136
+ <p>Access this section by upgrading to <?php echo ( isset($this->ultimate_needed) ? 'ultimate' : 'premium' ); ?></p>
137
+ <a href="https://www.fivestarplugins.com/plugins/five-star-restaurant-reservations/<?php echo ( isset($this->ultimate_needed) ? '#plugin-sales-ultimate-section' : '' ); ?>" class="rtb-dashboard-get-premium-widget-button" target="_blank">UPGRADE NOW</a>
138
  </div>
139
  <?php echo ( isset($this->purchase_link ) ? "</div>" : '' ); ?>
140
+ <?php
 
 
141
  }
142
+
143
  }
144
 
145
  /**
lib/stripe/.coveralls.yml ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ service_name: travis-ci
2
+ src_dir: .
3
+ coverage_clover: clover.xml
4
+ json_path: coveralls-upload.json
lib/stripe/.gitignore ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Mac OS X dumps these all over the place.
2
+ .DS_Store
3
+
4
+ # Ignore the SimpleTest library if it is installed to /test/.
5
+ /test/simpletest/
6
+
7
+ # Ignore the /vendor/ directory for people using composer
8
+ /vendor/
9
+
10
+ # If the vendor directory isn't being commited the composer.lock file should also be ignored
11
+ composer.lock
12
+
13
+ # Ignore PHPUnit coverage file
14
+ clover.xml
lib/stripe/.travis.yml ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ language: php
2
+
3
+ php:
4
+ - 5.3
5
+ - 5.4
6
+ - 5.5
7
+ - 5.6
8
+ - 7.0
9
+ - hhvm
10
+
11
+ env:
12
+ - AUTOLOAD=1
13
+ - AUTOLOAD=0
14
+
15
+ script: ./build.php ${AUTOLOAD}
16
+ after_script: ./vendor/bin/coveralls -v
17
+ sudo: false
lib/stripe/CHANGELOG.md ADDED
@@ -0,0 +1,364 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ### 3.20.0 2016-08-08
2
+
3
+ * Add `getDeclineCode` to card errors
4
+
5
+ ### 3.19.0 2016-07-29
6
+
7
+ * Opt requests directly into TLS 1.2 where OpenSSL >= 1.0.1 (see #277 for context)
8
+
9
+ ### 3.18.0 2016-07-28
10
+
11
+ * Add new `STATUS_` constants for subscriptions
12
+
13
+ ### 3.17.1 2016-07-28
14
+
15
+ * Fix auto-paging iterator so that it plays nicely with `iterator_to_array`
16
+
17
+ ### 3.17.0 2016-07-14
18
+
19
+ * Add field annotations to model classes for better editor hinting
20
+
21
+ ### 3.16.0 2016-07-12
22
+
23
+ * Add `ThreeDSecure` model for 3-D secure payments
24
+
25
+ ### 3.15.0 2016-06-29
26
+
27
+ * Add static `update` method to all resources that can be changed.
28
+
29
+ ### 3.14.3 2016-06-20
30
+
31
+ * Make sure that cURL never sends `Expects: 100-continue`, even on large request bodies
32
+
33
+ ### 3.14.2 2016-06-03
34
+
35
+ * Add `inventory` under `SKU` to list of keys that have nested data and can be updated
36
+
37
+ ### 3.14.1 2016-05-27
38
+
39
+ * Fix some inconsistencies in PHPDoc
40
+
41
+ ### 3.14.0 2016-05-25
42
+
43
+ * Add support for returning Relay orders
44
+
45
+ ### 3.13.0 2016-05-04
46
+
47
+ * Add `list`, `create`, `update`, `retrieve`, and `delete` methods to the Subscription class
48
+
49
+ ### 3.12.1 2016-04-07
50
+
51
+ * Additional check on value arrays for some extra safety
52
+
53
+ ### 3.12.0 2016-03-31
54
+
55
+ * Fix bug `refreshFrom` on `StripeObject` would not take an `$opts` array
56
+ * Fix bug where `$opts` not passed to parent `save` method in `Account`
57
+ * Fix bug where non-existent variable was referenced in `reverse` in `Transfer`
58
+ * Update CA cert bundle for compatibility with OpenSSL versions below 1.0.1
59
+
60
+ ### 3.11.0 2016-03-22
61
+
62
+ * Allow `CurlClient` to be initialized with default `CURLOPT_*` options
63
+
64
+ ### 3.10.1 2016-03-22
65
+
66
+ * Fix bug where request params and options were ignored in `ApplicationFee`'s `refund.`
67
+
68
+ ### 3.10.0 2016-03-15
69
+
70
+ * Add `reject` on `Account` to support the new API feature
71
+
72
+ ### 3.9.2 2016-03-04
73
+
74
+ * Fix error when an object's metadata is set more than once
75
+
76
+ ### 3.9.1 2016-02-24
77
+
78
+ * Fix encoding behavior of nested arrays for requests (see #227)
79
+
80
+ ### 3.9.0 2016-02-09
81
+
82
+ * Add automatic pagination mechanism with `autoPagingIterator()`
83
+ * Allow global account ID to be set with `Stripe::setAccountId()`
84
+
85
+ ### 3.8.0 2016-02-08
86
+
87
+ * Add `CountrySpec` model for looking up country payment information
88
+
89
+ ### 3.7.1 2016-02-01
90
+
91
+ * Update bundled CA certs
92
+
93
+ ### 3.7.0 2016-01-27
94
+
95
+ * Support deleting Relay products and SKUs
96
+
97
+ ### 3.6.0 2016-01-05
98
+
99
+ * Allow configuration of HTTP client timeouts
100
+
101
+ ### 3.5.0 2015-12-01
102
+
103
+ * Add a verification routine for external accounts
104
+
105
+ ### 3.4.0 2015-09-14
106
+
107
+ * Products, SKUs, and Orders -- https://stripe.com/relay
108
+
109
+ ### 3.3.0 2015-09-11
110
+
111
+ * Add support for 429 Rate Limit response
112
+
113
+ ### 3.2.0 2015-08-17
114
+
115
+ * Add refund listing and retrieval without an associated charge
116
+
117
+ ### 3.1.0 2015-08-03
118
+
119
+ * Add dispute listing and retrieval
120
+ * Add support for manage account deletion
121
+
122
+ ### 3.0.0 2015-07-28
123
+
124
+ * Rename `\Stripe\Object` to `\Stripe\StripeObject` (PHP 7 compatibility)
125
+ * Rename `getCode` and `getParam` in exceptions to `getStripeCode` and `getStripeParam`
126
+ * Add support for calling `json_encode` on Stripe objects in PHP 5.4+
127
+ * Start supporting/testing PHP 7
128
+
129
+ ### 2.3.0 2015-07-06
130
+
131
+ * Add request ID to all Stripe exceptions
132
+
133
+ ### 2.2.0 2015-06-01
134
+
135
+ * Add support for Alipay accounts as sources
136
+ * Add support for bank accounts as sources (private beta)
137
+ * Add support for bank accounts and cards as external_accounts on Account objects
138
+
139
+ ### 2.1.4 2015-05-13
140
+
141
+ * Fix CA certificate file path (thanks @lphilps & @matthewarkin)
142
+
143
+ ### 2.1.3 2015-05-12
144
+
145
+ * Fix to account updating to permit `tos_acceptance` and `personal_address` to be set properly
146
+ * Fix to Transfer reversal creation (thanks @neatness!)
147
+ * Network requests are now done through a swappable class for easier mocking
148
+
149
+ ### 2.1.2 2015-04-10
150
+
151
+ * Remove SSL cert revokation checking (all pre-Heartbleed certs have expired)
152
+ * Bug fixes to account updating
153
+
154
+ ### 2.1.1 2015-02-27
155
+ * Support transfer reversals
156
+
157
+ ### 2.1.0 2015-02-19
158
+
159
+ * Support new API version (2015-02-18)
160
+ * Added Bitcoin Receiever update and delete actions
161
+ * Edited tests to prefer "source" over "card" as per new API version
162
+
163
+ ### 2.0.1 2015-02-16
164
+
165
+ * Fix to fetching endpoints that use a non-default baseUrl (`FileUpload`)
166
+
167
+ ### 2.0.0 2015-02-14
168
+
169
+ * Bumped minimum version to 5.3.3
170
+ * Switched to Stripe namespace instead of Stripe_ class name prefiexes (thanks @chadicus!)
171
+ * Switched tests to PHPUnit (thanks @chadicus!)
172
+ * Switched style guide to PSR2 (thanks @chadicus!)
173
+ * Added $opts hash to the end of most methods: this permits passing 'idempotency_key', 'stripe_account', or 'stripe_version'. The last 2 will persist across multiple object loads.
174
+ * Added support for retrieving Account by ID
175
+
176
+ ### 1.18.0 2015-01-21
177
+
178
+ * Support making bitcoin charges through BitcoinReceiver source object
179
+
180
+ ### 1.17.5 2014-12-23
181
+
182
+ * Adding support for creating file uploads.
183
+
184
+ ### 1.17.4 2014-12-15
185
+
186
+ * Saving objects fetched with a custom key now works (thanks @JustinHook & @jpasilan)
187
+ * Added methods for reporting charges as safe or fraudulent and for specifying the reason for refunds
188
+
189
+ ### 1.17.3 2014-11-06
190
+
191
+ * Better handling of HHVM support for SSL certificate blacklist checking.
192
+
193
+ ### 1.17.2 2014-09-23
194
+
195
+ * Coupons now are backed by a `Stripe_Coupon` instead of `Stripe_Object`, and support updating metadata
196
+ * Running operations (`create`, `retrieve`, `all`) on upcoming invoice items now works
197
+
198
+ ### 1.17.1 2014-07-31
199
+
200
+ * Requests now send Content-Type header
201
+
202
+ ### 1.17.0 2014-07-29
203
+
204
+ * Application Fee refunds now a list instead of array
205
+ * HHVM now works
206
+ * Small bug fixes (thanks @bencromwell & @fastest963)
207
+ * __toString now returns the name of the object in addition to its JSON representation
208
+
209
+ ### 1.16.0 2014-06-17
210
+
211
+ * Add metadata for refunds and disputes
212
+
213
+ ### 1.15.0 2014-05-28
214
+
215
+ * Support canceling transfers
216
+
217
+ ### 1.14.1 2014-05-21
218
+
219
+ * Support cards for recipients.
220
+
221
+ ### 1.13.1 2014-05-15
222
+
223
+ * Fix bug in account resource where `id` wasn't in the result
224
+
225
+ ### 1.13.0 2014-04-10
226
+
227
+ * Add support for certificate blacklisting
228
+ * Update ca bundle
229
+ * Drop support for HHVM (Temporarily)
230
+
231
+ ### 1.12.0 2014-04-01
232
+
233
+ * Add Stripe_RateLimitError for catching rate limit errors.
234
+ * Update to Zend coding style (thanks, @jpiasetz)
235
+
236
+ ### 1.11.0 2014-01-29
237
+
238
+ * Add support for multiple subscriptions per customer
239
+
240
+ ### 1.10.1 2013-12-02
241
+
242
+ * Add new ApplicationFee
243
+
244
+ ### 1.9.1 2013-11-08
245
+
246
+ * Fix a bug where a null nestable object causes warnings to fire.
247
+
248
+ ### 1.9.0 2013-10-16
249
+
250
+ * Add support for metadata API.
251
+
252
+ ### 1.8.4 2013-09-18
253
+
254
+ * Add support for closing disputes.
255
+
256
+ ### 1.8.3 2013-08-13
257
+
258
+ * Add new Balance and BalanceTransaction
259
+
260
+ ### 1.8.2 2013-08-12
261
+
262
+ * Add support for unsetting attributes by updating to NULL.
263
+ Setting properties to a blank string is now an error.
264
+
265
+ ### 1.8.1 2013-07-12
266
+
267
+ * Add support for multiple cards API (Stripe API version 2013-07-12: https://stripe.com/docs/upgrades#2013-07-05)
268
+
269
+ ### 1.8.0 2013-04-11
270
+
271
+ * Allow Transfers to be creatable
272
+ * Add new Recipient resource
273
+
274
+ ### 1.7.15 2013-02-21
275
+
276
+ * Add 'id' to the list of permanent object attributes
277
+
278
+ ### 1.7.14 2013-02-20
279
+
280
+ * Don't re-encode strings that are already encoded in UTF-8. If you
281
+ were previously using plan or coupon objects with UTF-8 IDs, they
282
+ may have been treated as ISO-8859-1 (Latin-1) and encoded to UTF-8 a
283
+ 2nd time. You may now need to pass the IDs to utf8_encode before
284
+ passing them to Stripe_Plan::retrieve or Stripe_Coupon::retrieve.
285
+ * Ensure that all input is encoded in UTF-8 before submitting it to
286
+ Stripe's servers. (github issue #27)
287
+
288
+ ### 1.7.13 2013-02-01
289
+
290
+ * Add support for passing options when retrieving Stripe objects
291
+ e.g., Stripe_Charge::retrieve(array("id"=>"foo", "expand" => array("customer")))
292
+ Stripe_Charge::retrieve("foo") will continue to work
293
+
294
+ ### 1.7.12 2013-01-15
295
+
296
+ * Add support for setting a Stripe API version override
297
+
298
+ ### 1.7.11 2012-12-30
299
+
300
+ * Version bump to cleanup constants and such (github issue #26)
301
+
302
+ ### 1.7.10 2012-11-08
303
+
304
+ * Add support for updating charge disputes.
305
+ * Fix bug preventing retrieval of null attributes
306
+
307
+ ### 1.7.9 2012-11-08
308
+
309
+ * Fix usage under autoloaders such as the one generated by composer
310
+ (github issue #22)
311
+
312
+ ### 1.7.8 2012-10-30
313
+ * Add support for creating invoices.
314
+ * Add support for new invoice lines return format
315
+ * Add support for new list objects
316
+
317
+ ### 1.7.7 2012-09-14
318
+
319
+ * Get all of the various version numbers in the repo in sync (no other
320
+ changes)
321
+
322
+ ### 1.7.6 2012-08-31
323
+
324
+ * Add update and pay methods to Invoice resource
325
+
326
+ ### 1.7.5 2012-08-23
327
+
328
+ * Change internal function names so that Stripe_SingletonApiRequest is
329
+ E_STRICT-clean (github issue #16)
330
+
331
+ ### 1.7.4 2012-08-21
332
+
333
+ * Bugfix so that Stripe objects (e.g. Customer, Charge objects) used
334
+ in API calls are transparently converted to their object IDs
335
+
336
+ ### 1.7.3 2012-08-15
337
+
338
+ * Add new Account resource
339
+
340
+ ### 1.7.2 2012-06-26
341
+
342
+ * Make clearer that you should be including lib/Stripe.php, not
343
+ test/Stripe.php (github issue #14)
344
+
345
+ ### 1.7.1 2012-05-24
346
+
347
+ * Add missing argument to Stripe_InvalidRequestError constructor in
348
+ Stripe_ApiResource::instanceUrl. Fixes a warning when
349
+ Stripe_ApiResource::instanceUrl is called on a resource with no ID
350
+ (github issue #12)
351
+
352
+ ### 1.7.0 2012-05-17
353
+
354
+ * Support Composer and Packagist (github issue #9)
355
+
356
+ * Add new deleteDiscount method to Stripe_Customer
357
+
358
+ * Add new Transfer resource
359
+
360
+ * Switch from using HTTP Basic auth to Bearer auth. (Note: Stripe will
361
+ support Basic auth for the indefinite future, but recommends Bearer
362
+ auth when possible going forward)
363
+
364
+ * Numerous test suite improvements
lib/stripe/LICENSE ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ The MIT License
2
+
3
+ Copyright (c) 2010-2015 Stripe
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
lib/stripe/README.md ADDED
@@ -0,0 +1,129 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Stripe PHP bindings
2
+
3
+ [![Build Status](https://travis-ci.org/stripe/stripe-php.svg?branch=master)](https://travis-ci.org/stripe/stripe-php)
4
+ [![Latest Stable Version](https://poser.pugx.org/stripe/stripe-php/v/stable.svg)](https://packagist.org/packages/stripe/stripe-php)
5
+ [![Total Downloads](https://poser.pugx.org/stripe/stripe-php/downloads.svg)](https://packagist.org/packages/stripe/stripe-php)
6
+ [![License](https://poser.pugx.org/stripe/stripe-php/license.svg)](https://packagist.org/packages/stripe/stripe-php)
7
+ [![Code Coverage](https://coveralls.io/repos/stripe/stripe-php/badge.svg?branch=master)](https://coveralls.io/r/stripe/stripe-php?branch=master)
8
+
9
+ You can sign up for a Stripe account at https://stripe.com.
10
+
11
+ ## Requirements
12
+
13
+ PHP 5.3.3 and later.
14
+
15
+ ## Composer
16
+
17
+ You can install the bindings via [Composer](http://getcomposer.org/). Run the following command:
18
+
19
+ ```bash
20
+ composer require stripe/stripe-php
21
+ ```
22
+
23
+ To use the bindings, use Composer's [autoload](https://getcomposer.org/doc/00-intro.md#autoloading):
24
+
25
+ ```php
26
+ require_once('vendor/autoload.php');
27
+ ```
28
+
29
+ ## Manual Installation
30
+
31
+ If you do not wish to use Composer, you can download the [latest release](https://github.com/stripe/stripe-php/releases). Then, to use the bindings, include the `init.php` file.
32
+
33
+ ```php
34
+ require_once('/path/to/stripe-php/init.php');
35
+ ```
36
+
37
+ ## Dependencies
38
+
39
+ The bindings require the following extension in order to work properly:
40
+
41
+ - [`curl`](https://secure.php.net/manual/en/book.curl.php), although you can use your own non-cURL client if you prefer
42
+ - [`json`](https://secure.php.net/manual/en/book.json.php)
43
+ - [`mbstring`](https://secure.php.net/manual/en/book.mbstring.php) (Multibyte String)
44
+
45
+ If you use Composer, these dependencies should be handled automatically. If you install manually, you'll want to make sure that these extensions are available.
46
+
47
+ ## Getting Started
48
+
49
+ Simple usage looks like:
50
+
51
+ ```php
52
+ \Stripe\Stripe::setApiKey('d8e8fca2dc0f896fd7cb4cb0031ba249');
53
+ $myCard = array('number' => '4242424242424242', 'exp_month' => 8, 'exp_year' => 2018);
54
+ $charge = \Stripe\Charge::create(array('card' => $myCard, 'amount' => 2000, 'currency' => 'usd'));
55
+ echo $charge;
56
+ ```
57
+
58
+ ## Documentation
59
+
60
+ Please see https://stripe.com/docs/api for up-to-date documentation.
61
+
62
+ ## Legacy Version Support
63
+
64
+ If you are using PHP 5.2, you can download v1.18.0 ([zip](https://github.com/stripe/stripe-php/archive/v1.18.0.zip), [tar.gz](https://github.com/stripe/stripe-php/archive/v1.18.0.tar.gz)) from our [releases page](https://github.com/stripe/stripe-php/releases). This version will continue to work with new versions of the Stripe API for all common uses.
65
+
66
+ This legacy version may be included via `require_once("/path/to/stripe-php/lib/Stripe.php");`, and used like:
67
+
68
+ ```php
69
+ Stripe::setApiKey('d8e8fca2dc0f896fd7cb4cb0031ba249');
70
+ $myCard = array('number' => '4242424242424242', 'exp_month' => 8, 'exp_year' => 2018);
71
+ $charge = Stripe_Charge::create(array('card' => $myCard, 'amount' => 2000, 'currency' => 'usd'));
72
+ echo $charge;
73
+ ```
74
+
75
+ ## Custom Request Timeouts
76
+
77
+ *NOTE:* We do not recommend decreasing the timeout for non-read-only calls (e.g. charge creation), since even if you locally timeout, the request on Stripe's side can still complete. If you are decreasing timeouts on these calls, make sure to use [idempotency tokens](https://stripe.com/docs/api/php#idempotent_requests) to avoid executing the same transaction twice as a result of timeout retry logic.
78
+
79
+ To modify request timeouts (connect or total, in seconds) you'll need to tell the API client to use a CurlClient other than its default. You'll set the timeouts in that CurlClient.
80
+
81
+ ```php
82
+ // set up your tweaked Curl client
83
+ $curl = new \Stripe\HttpClient\CurlClient();
84
+ $curl->setTimeout(10); // default is \Stripe\HttpClient\CurlClient::DEFAULT_TIMEOUT
85
+ $curl->setConnectTimeout(5); // default is \Stripe\HttpClient\CurlClient::DEFAULT_CONNECT_TIMEOUT
86
+
87
+ echo $curl->getTimeout(); // 10
88
+ echo $curl->getConnectTimeout(); // 5
89
+
90
+ // tell Stripe to use the tweaked client
91
+ \Stripe\ApiRequestor::setHttpClient($curl);
92
+
93
+ // use the Stripe API client as you normally would
94
+ ```
95
+
96
+ ## Custom cURL Options (e.g. proxies)
97
+
98
+ Need to set a proxy for your requests? Pass in the requisite `CURLOPT_*` array to the CurlClient constructor, using the same syntax as `curl_stopt_array()`. This will set the default cURL options for each HTTP request made by the SDK, though many more common options (e.g. timeouts; see above on how to set those) will be overridden by the client even if set here.
99
+
100
+ ```php
101
+ // set up your tweaked Curl client
102
+ $curl = new \Stripe\HttpClient\CurlClient(array(CURLOPT_PROXY => 'proxy.local:80'));
103
+ // tell Stripe to use the tweaked client
104
+ \Stripe\ApiRequestor::setHttpClient($curl);
105
+ ```
106
+
107
+ Alternately, a callable can be passed to the CurlClient constructor that returns the above array based on request inputs. See `testDefaultOptions()` in `tests/CurlClientTest.php` for an example of this behavior. Note that the callable is called at the beginning of every API request, before the request is sent.
108
+
109
+ ## Development
110
+
111
+ Install dependencies:
112
+
113
+ ``` bash
114
+ composer install
115
+ ```
116
+
117
+ ## Tests
118
+
119
+ Install dependencies as mentioned above (which will resolve [PHPUnit](http://packagist.org/packages/phpunit/phpunit)), then you can run the test suite:
120
+
121
+ ```bash
122
+ ./vendor/bin/phpunit
123
+ ```
124
+
125
+ Or to run an individual test file:
126
+
127
+ ```bash
128
+ ./vendor/bin/phpunit tests/UtilTest.php
129
+ ```
lib/stripe/VERSION ADDED
@@ -0,0 +1 @@
 
1
+ 3.20.0
lib/stripe/build.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/usr/bin/env php
2
+ <?php
3
+ chdir(dirname(__FILE__));
4
+
5
+ $autoload = (int)$argv[1];
6
+ $returnStatus = null;
7
+
8
+ if (!$autoload) {
9
+ // Modify composer to not autoload Stripe
10
+ $composer = json_decode(file_get_contents('composer.json'), true);
11
+ unset($composer['autoload']);
12
+ unset($composer['require-dev']['squizlabs/php_codesniffer']);
13
+ file_put_contents('composer.json', json_encode($composer));
14
+ }
15
+
16
+ passthru('composer install', $returnStatus);
17
+ if ($returnStatus !== 0) {
18
+ exit(1);
19
+ }
20
+
21
+ if ($autoload) {
22
+ // Only run CS on 1 of the 2 environments
23
+ passthru(
24
+ './vendor/bin/phpcs --standard=PSR2 -n lib tests *.php',
25
+ $returnStatus
26
+ );
27
+ if ($returnStatus !== 0) {
28
+ exit(1);
29
+ }
30
+ }
31
+
32
+ $config = $autoload ? 'phpunit.xml' : 'phpunit.no_autoload.xml';
33
+ passthru("./vendor/bin/phpunit -c $config", $returnStatus);
34
+ if ($returnStatus !== 0) {
35
+ exit(1);
36
+ }
lib/stripe/composer.json ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "stripe/stripe-php",
3
+ "description": "Stripe PHP Library",
4
+ "keywords": [
5
+ "stripe",
6
+ "payment processing",
7
+ "api"
8
+ ],
9
+ "homepage": "https://stripe.com/",
10
+ "license": "MIT",
11
+ "authors": [
12
+ {
13
+ "name": "Stripe and contributors",
14
+ "homepage": "https://github.com/stripe/stripe-php/contributors"
15
+ }
16
+ ],
17
+ "require": {
18
+ "php": ">=5.3.3",
19
+ "ext-curl": "*",
20
+ "ext-json": "*",
21
+ "ext-mbstring": "*"
22
+ },
23
+ "require-dev": {
24
+ "phpunit/phpunit": "~4.0",
25
+ "satooshi/php-coveralls": "~0.6.1",
26
+ "squizlabs/php_codesniffer": "~2.0"
27
+ },
28
+ "autoload": {
29
+ "psr-4": { "Stripe\\" : "lib/" }
30
+ },
31
+ "extra": {
32
+ "branch-alias": {
33
+ "dev-master": "2.0-dev"
34
+ }
35
+ }
36
+ }
lib/stripe/data/ca-certificates.crt ADDED
@@ -0,0 +1,3919 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ##
2
+ ## Bundle of CA Root Certificates
3
+ ##
4
+ ## Certificate data from Mozilla as of: Fri Jan 22 20:39:57 2016
5
+ ##
6
+ ## This is a bundle of X.509 certificates of public Certificate Authorities
7
+ ## (CA). These were automatically extracted from Mozilla's root certificates
8
+ ## file (certdata.txt). This file can be found in the mozilla source tree:
9
+ ## http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt
10
+ ##
11
+ ## It contains the certificates in PEM format and therefore
12
+ ## can be directly used with curl / libcurl / php_curl, or with
13
+ ## an Apache+mod_ssl webserver for SSL client authentication.
14
+ ## Just configure this file as the SSLCACertificateFile.
15
+ ##
16
+ ## Conversion done with mk-ca-bundle.pl version 1.25.
17
+ ## SHA1: 0ab47e2f41518f8d223eab517cb799e5b071231e
18
+ ##
19
+
20
+
21
+ GlobalSign Root CA
22
+ ==================
23
+ -----BEGIN CERTIFICATE-----
24
+ MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx
25
+ GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds
26
+ b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV
27
+ BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD
28
+ VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa
29
+ DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc
30
+ THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb
31
+ Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP
32
+ c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX
33
+ gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
34
+ HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF
35
+ AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj
36
+ Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG
37
+ j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH
38
+ hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
39
+ X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
40
+ -----END CERTIFICATE-----
41
+
42
+ GlobalSign Root CA - R2
43
+ =======================
44
+ -----BEGIN CERTIFICATE-----
45
+ MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
46
+ YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
47
+ bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
48
+ aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
49
+ bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
50
+ ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
51
+ s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
52
+ S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
53
+ TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
54
+ ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
55
+ FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
56
+ YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
57
+ BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
58
+ 9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
59
+ 01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
60
+ 9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
61
+ TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
62
+ -----END CERTIFICATE-----
63
+
64
+ Verisign Class 3 Public Primary Certification Authority - G3
65
+ ============================================================
66
+ -----BEGIN CERTIFICATE-----
67
+ MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV
68
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
69
+ cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
70
+ IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh
71
+ dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw
72
+ CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy
73
+ dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv
74
+ cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg
75
+ Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
76
+ ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1
77
+ EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc
78
+ cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw
79
+ EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj
80
+ 055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA
81
+ ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f
82
+ j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC
83
+ /Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0
84
+ xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa
85
+ t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ==
86
+ -----END CERTIFICATE-----
87
+
88
+ Entrust.net Premium 2048 Secure Server CA
89
+ =========================================
90
+ -----BEGIN CERTIFICATE-----
91
+ MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u
92
+ ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp
93
+ bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV
94
+ BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx
95
+ NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3
96
+ d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl
97
+ MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u
98
+ ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
99
+ MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL
100
+ Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr
101
+ hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW
102
+ nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi
103
+ VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E
104
+ BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ
105
+ KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy
106
+ T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf
107
+ zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT
108
+ J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e
109
+ nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE=
110
+ -----END CERTIFICATE-----
111
+
112
+ Baltimore CyberTrust Root
113
+ =========================
114
+ -----BEGIN CERTIFICATE-----
115
+ MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE
116
+ ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li
117
+ ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC
118
+ SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs
119
+ dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME
120
+ uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB
121
+ UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C
122
+ G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9
123
+ XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr
124
+ l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI
125
+ VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB
126
+ BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh
127
+ cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5
128
+ hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa
129
+ Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H
130
+ RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
131
+ -----END CERTIFICATE-----
132
+
133
+ AddTrust Low-Value Services Root
134
+ ================================
135
+ -----BEGIN CERTIFICATE-----
136
+ MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
137
+ QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU
138
+ cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw
139
+ CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO
140
+ ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB
141
+ AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6
142
+ 54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr
143
+ oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1
144
+ Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui
145
+ GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w
146
+ HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD
147
+ AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT
148
+ RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw
149
+ HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt
150
+ ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph
151
+ iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY
152
+ eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr
153
+ mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj
154
+ ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk=
155
+ -----END CERTIFICATE-----
156
+
157
+ AddTrust External Root
158
+ ======================
159
+ -----BEGIN CERTIFICATE-----
160
+ MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
161
+ QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD
162
+ VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw
163
+ NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU
164
+ cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg
165
+ Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821
166
+ +iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw
167
+ Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo
168
+ aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy
169
+ 2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7
170
+ 7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P
171
+ BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL
172
+ VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk
173
+ VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB
174
+ IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl
175
+ j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
176
+ 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355
177
+ e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u
178
+ G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
179
+ -----END CERTIFICATE-----
180
+
181
+ AddTrust Public Services Root
182
+ =============================
183
+ -----BEGIN CERTIFICATE-----
184
+ MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
185
+ QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU
186
+ cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ
187
+ BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l
188
+ dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF
189
+ AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu
190
+ nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i
191
+ d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG
192
+ Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw
193
+ HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G
194
+ A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
195
+ /zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux
196
+ FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G
197
+ A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4
198
+ JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL
199
+ +YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao
200
+ GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9
201
+ Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H
202
+ EufOX1362KqxMy3ZdvJOOjMMK7MtkAY=
203
+ -----END CERTIFICATE-----
204
+
205
+ AddTrust Qualified Certificates Root
206
+ ====================================
207
+ -----BEGIN CERTIFICATE-----
208
+ MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML
209
+ QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU
210
+ cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx
211
+ CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ
212
+ IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG
213
+ 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx
214
+ 64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3
215
+ KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o
216
+ L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR
217
+ wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU
218
+ MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/
219
+ BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE
220
+ BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y
221
+ azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD
222
+ ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG
223
+ GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X
224
+ dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze
225
+ RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB
226
+ iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE=
227
+ -----END CERTIFICATE-----
228
+
229
+ Entrust Root Certification Authority
230
+ ====================================
231
+ -----BEGIN CERTIFICATE-----
232
+ MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV
233
+ BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw
234
+ b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG
235
+ A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0
236
+ MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu
237
+ MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu
238
+ Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v
239
+ dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
240
+ ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz
241
+ A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww
242
+ Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68
243
+ j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN
244
+ rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw
245
+ DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1
246
+ MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH
247
+ hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA
248
+ A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM
249
+ Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa
250
+ v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS
251
+ W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0
252
+ tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8
253
+ -----END CERTIFICATE-----
254
+
255
+ RSA Security 2048 v3
256
+ ====================
257
+ -----BEGIN CERTIFICATE-----
258
+ MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK
259
+ ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy
260
+ MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb
261
+ BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
262
+ AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7
263
+ Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb
264
+ WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH
265
+ KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP
266
+ +Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/
267
+ MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E
268
+ FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY
269
+ v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj
270
+ 0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj
271
+ VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395
272
+ nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA
273
+ pKnXwiJPZ9d37CAFYd4=
274
+ -----END CERTIFICATE-----
275
+
276
+ GeoTrust Global CA
277
+ ==================
278
+ -----BEGIN CERTIFICATE-----
279
+ MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK
280
+ Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw
281
+ MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
282
+ LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
283
+ CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo
284
+ BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet
285
+ 8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc
286
+ T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU
287
+ vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD
288
+ AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk
289
+ DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q
290
+ zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4
291
+ d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2
292
+ mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p
293
+ XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm
294
+ Mw==
295
+ -----END CERTIFICATE-----
296
+
297
+ GeoTrust Global CA 2
298
+ ====================
299
+ -----BEGIN CERTIFICATE-----
300
+ MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
301
+ R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw
302
+ MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j
303
+ LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
304
+ ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/
305
+ NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k
306
+ LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA
307
+ Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b
308
+ HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF
309
+ MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH
310
+ K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7
311
+ srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh
312
+ ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL
313
+ OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC
314
+ x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF
315
+ H4z1Ir+rzoPz4iIprn2DQKi6bA==
316
+ -----END CERTIFICATE-----
317
+
318
+ GeoTrust Universal CA
319
+ =====================
320
+ -----BEGIN CERTIFICATE-----
321
+ MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
322
+ R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1
323
+ MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu
324
+ Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
325
+ ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t
326
+ JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e
327
+ RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs
328
+ 7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d
329
+ 8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V
330
+ qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga
331
+ Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB
332
+ Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu
333
+ KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08
334
+ ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0
335
+ XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB
336
+ hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc
337
+ aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2
338
+ qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL
339
+ oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK
340
+ xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF
341
+ KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2
342
+ DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK
343
+ xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU
344
+ p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI
345
+ P/rmMuGNG2+k5o7Y+SlIis5z/iw=
346
+ -----END CERTIFICATE-----
347
+
348
+ GeoTrust Universal CA 2
349
+ =======================
350
+ -----BEGIN CERTIFICATE-----
351
+ MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN
352
+ R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0
353
+ MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg
354
+ SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA
355
+ A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0
356
+ DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17
357
+ j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q
358
+ JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a
359
+ QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2
360
+ WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP
361
+ 20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn
362
+ ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC
363
+ SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG
364
+ 8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2
365
+ +/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E
366
+ BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z
367
+ dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ
368
+ 4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+
369
+ mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq
370
+ A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg
371
+ Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP
372
+ pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d
373
+ FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp
374
+ gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm
375
+ X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS
376
+ -----END CERTIFICATE-----
377
+
378
+ Visa eCommerce Root
379
+ ===================
380
+ -----BEGIN CERTIFICATE-----
381
+ MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG
382
+ EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug
383
+ QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2
384
+ WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm
385
+ VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv
386
+ bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL
387
+ F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b
388
+ RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0
389
+ TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI
390
+ /k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs
391
+ GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG
392
+ MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc
393
+ CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW
394
+ YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz
395
+ zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu
396
+ YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt
397
+ 398znM/jra6O1I7mT1GvFpLgXPYHDw==
398
+ -----END CERTIFICATE-----
399
+
400
+ Certum Root CA
401
+ ==============
402
+ -----BEGIN CERTIFICATE-----
403
+ MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK
404
+ ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla
405
+ Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u
406
+ by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x
407
+ wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL
408
+ kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ
409
+ 89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K
410
+ Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P
411
+ NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq
412
+ hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+
413
+ GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg
414
+ GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/
415
+ 0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS
416
+ qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw==
417
+ -----END CERTIFICATE-----
418
+
419
+ Comodo AAA Services root
420
+ ========================
421
+ -----BEGIN CERTIFICATE-----
422
+ MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
423
+ R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
424
+ TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw
425
+ MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl
426
+ c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV
427
+ BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
428
+ ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG
429
+ C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs
430
+ i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW
431
+ Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH
432
+ Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK
433
+ Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f
434
+ BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl
435
+ cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz
436
+ LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm
437
+ 7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz
438
+ Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z
439
+ 8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C
440
+ 12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg==
441
+ -----END CERTIFICATE-----
442
+
443
+ Comodo Secure Services root
444
+ ===========================
445
+ -----BEGIN CERTIFICATE-----
446
+ MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
447
+ R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
448
+ TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw
449
+ MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu
450
+ Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi
451
+ BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP
452
+ ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP
453
+ 9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc
454
+ rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC
455
+ oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V
456
+ p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E
457
+ FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
458
+ gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj
459
+ YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm
460
+ aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm
461
+ 4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj
462
+ Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL
463
+ DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw
464
+ pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H
465
+ RR3B7Hzs/Sk=
466
+ -----END CERTIFICATE-----
467
+
468
+ Comodo Trusted Services root
469
+ ============================
470
+ -----BEGIN CERTIFICATE-----
471
+ MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS
472
+ R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg
473
+ TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw
474
+ MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h
475
+ bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw
476
+ IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC
477
+ AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7
478
+ 3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y
479
+ /9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6
480
+ juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS
481
+ ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud
482
+ DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB
483
+ /zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp
484
+ ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl
485
+ cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw
486
+ uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32
487
+ pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA
488
+ BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l
489
+ R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O
490
+ 9y5Xt5hwXsjEeLBi
491
+ -----END CERTIFICATE-----
492
+
493
+ QuoVadis Root CA
494
+ ================
495
+ -----BEGIN CERTIFICATE-----
496
+ MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE
497
+ ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0
498
+ eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz
499
+ MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp
500
+ cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD
501
+ EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF
502
+ AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk
503
+ J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL
504
+ F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL
505
+ YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen
506
+ AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w
507
+ PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y
508
+ ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7
509
+ MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj
510
+ YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs
511
+ ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh
512
+ Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW
513
+ Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu
514
+ BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw
515
+ FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0
516
+ aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6
517
+ tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo
518
+ fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul
519
+ LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x
520
+ gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi
521
+ 5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi
522
+ 5nrQNiOKSnQ2+Q==
523
+ -----END CERTIFICATE-----
524
+
525
+ QuoVadis Root CA 2
526
+ ==================
527
+ -----BEGIN CERTIFICATE-----
528
+ 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
554
+ -----END CERTIFICATE-----
555
+
556
+ QuoVadis Root CA 3
557
+ ==================
558
+ -----BEGIN CERTIFICATE-----
559
+ MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT
560
+ EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx
561
+ OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM
562
+ aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
563
+ DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg
564
+ DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij
565
+ KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K
566
+ DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv
567
+ BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp
568
+ p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8
569
+ nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX
570
+ MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM
571
+ Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz
572
+ uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT
573
+ BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj
574
+ YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0
575
+ aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB
576
+ BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD
577
+ VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4
578
+ ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE
579
+ AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV
580
+ qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s
581
+ hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z
582
+ POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2
583
+ Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp
584
+ 8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC
585
+ bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu
586
+ g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p
587
+ vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
588
+ qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
589
+ -----END CERTIFICATE-----
590
+
591
+ Security Communication Root CA
592
+ ==============================
593
+ -----BEGIN CERTIFICATE-----
594
+ MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
595
+ U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
596
+ HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
597
+ U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
598
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
599
+ 8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
600
+ DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
601
+ 5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
602
+ DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
603
+ JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
604
+ DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
605
+ 0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
606
+ mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
607
+ s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
608
+ 6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
609
+ FL39vmwLAw==
610
+ -----END CERTIFICATE-----
611
+
612
+ Sonera Class 2 Root CA
613
+ ======================
614
+ -----BEGIN CERTIFICATE-----
615
+ MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG
616
+ U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw
617
+ NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh
618
+ IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3
619
+ /Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT
620
+ dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG
621
+ f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P
622
+ tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH
623
+ nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT
624
+ XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt
625
+ 0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI
626
+ cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph
627
+ Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx
628
+ EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH
629
+ llpwrN9M
630
+ -----END CERTIFICATE-----
631
+
632
+ Staat der Nederlanden Root CA
633
+ =============================
634
+ -----BEGIN CERTIFICATE-----
635
+ MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE
636
+ ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g
637
+ Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w
638
+ HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh
639
+ bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt
640
+ vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P
641
+ jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca
642
+ C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth
643
+ vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6
644
+ 22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV
645
+ HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v
646
+ dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN
647
+ BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR
648
+ EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw
649
+ MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y
650
+ nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR
651
+ iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw==
652
+ -----END CERTIFICATE-----
653
+
654
+ UTN USERFirst Hardware Root CA
655
+ ==============================
656
+ -----BEGIN CERTIFICATE-----
657
+ MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE
658
+ BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl
659
+ IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd
660
+ BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx
661
+ OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0
662
+ eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz
663
+ ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3
664
+ DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI
665
+ wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd
666
+ tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8
667
+ i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf
668
+ Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw
669
+ gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF
670
+ lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF
671
+ UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF
672
+ BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM
673
+ //bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW
674
+ XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2
675
+ lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn
676
+ iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67
677
+ nfhmqA==
678
+ -----END CERTIFICATE-----
679
+
680
+ Camerfirma Chambers of Commerce Root
681
+ ====================================
682
+ -----BEGIN CERTIFICATE-----
683
+ MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
684
+ QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
685
+ ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx
686
+ NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp
687
+ cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn
688
+ MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC
689
+ AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU
690
+ xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH
691
+ NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW
692
+ DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV
693
+ d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud
694
+ EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v
695
+ cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P
696
+ AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh
697
+ bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD
698
+ VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz
699
+ aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi
700
+ fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD
701
+ L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN
702
+ UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n
703
+ ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1
704
+ erfutGWaIZDgqtCYvDi1czyL+Nw=
705
+ -----END CERTIFICATE-----
706
+
707
+ Camerfirma Global Chambersign Root
708
+ ==================================
709
+ -----BEGIN CERTIFICATE-----
710
+ MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe
711
+ QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i
712
+ ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx
713
+ NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt
714
+ YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg
715
+ MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw
716
+ ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J
717
+ 1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O
718
+ by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl
719
+ 6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c
720
+ 8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/
721
+ BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j
722
+ aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B
723
+ Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj
724
+ aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y
725
+ ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh
726
+ bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA
727
+ PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y
728
+ gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ
729
+ PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4
730
+ IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes
731
+ t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A==
732
+ -----END CERTIFICATE-----
733
+
734
+ NetLock Notary (Class A) Root
735
+ =============================
736
+ -----BEGIN CERTIFICATE-----
737
+ MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI
738
+ EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6
739
+ dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j
740
+ ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX
741
+ DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH
742
+ EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD
743
+ VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz
744
+ cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM
745
+ D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ
746
+ z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC
747
+ /tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7
748
+ tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6
749
+ 4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG
750
+ A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC
751
+ Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv
752
+ bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu
753
+ IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn
754
+ LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0
755
+ ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz
756
+ IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh
757
+ IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu
758
+ b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh
759
+ bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg
760
+ Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp
761
+ bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5
762
+ ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP
763
+ ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB
764
+ CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr
765
+ KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM
766
+ 8CgHrTwXZoi1/baI
767
+ -----END CERTIFICATE-----
768
+
769
+ XRamp Global CA Root
770
+ ====================
771
+ -----BEGIN CERTIFICATE-----
772
+ MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE
773
+ BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj
774
+ dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB
775
+ dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx
776
+ HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg
777
+ U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp
778
+ dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu
779
+ IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx
780
+ foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE
781
+ zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs
782
+ AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry
783
+ xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
784
+ EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap
785
+ oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC
786
+ AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc
787
+ /Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt
788
+ qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n
789
+ nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz
790
+ 8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw=
791
+ -----END CERTIFICATE-----
792
+
793
+ Go Daddy Class 2 CA
794
+ ===================
795
+ -----BEGIN CERTIFICATE-----
796
+ MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY
797
+ VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp
798
+ ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG
799
+ A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g
800
+ RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD
801
+ ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv
802
+ 2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32
803
+ qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j
804
+ YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY
805
+ vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O
806
+ BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o
807
+ atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu
808
+ MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG
809
+ A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim
810
+ PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt
811
+ I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ
812
+ HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI
813
+ Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b
814
+ vZ8=
815
+ -----END CERTIFICATE-----
816
+
817
+ Starfield Class 2 CA
818
+ ====================
819
+ -----BEGIN CERTIFICATE-----
820
+ MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc
821
+ U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg
822
+ Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo
823
+ MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG
824
+ A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG
825
+ SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY
826
+ bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ
827
+ JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm
828
+ epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN
829
+ F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF
830
+ MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f
831
+ hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo
832
+ bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g
833
+ QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs
834
+ afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM
835
+ PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl
836
+ xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD
837
+ KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3
838
+ QBFGmh95DmK/D5fs4C8fF5Q=
839
+ -----END CERTIFICATE-----
840
+
841
+ StartCom Certification Authority
842
+ ================================
843
+ -----BEGIN CERTIFICATE-----
844
+ MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
845
+ U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
846
+ ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
847
+ NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
848
+ LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
849
+ U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
850
+ ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
851
+ o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
852
+ Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
853
+ eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
854
+ 2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
855
+ 6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
856
+ osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
857
+ untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
858
+ UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
859
+ 37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE
860
+ FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0
861
+ Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj
862
+ YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH
863
+ AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw
864
+ Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg
865
+ U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5
866
+ LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl
867
+ cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh
868
+ cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT
869
+ dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
870
+ AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh
871
+ 3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm
872
+ vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk
873
+ fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3
874
+ fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ
875
+ EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq
876
+ yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl
877
+ 1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/
878
+ lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro
879
+ g14=
880
+ -----END CERTIFICATE-----
881
+
882
+ Taiwan GRCA
883
+ ===========
884
+ -----BEGIN CERTIFICATE-----
885
+ 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
910
+ -----END CERTIFICATE-----
911
+
912
+ Swisscom Root CA 1
913
+ ==================
914
+ -----BEGIN CERTIFICATE-----
915
+ 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
941
+ NY6E0F/6MBr1mmz0DlP5OlvRHA==
942
+ -----END CERTIFICATE-----
943
+
944
+ DigiCert Assured ID Root CA
945
+ ===========================
946
+ -----BEGIN CERTIFICATE-----
947
+ MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG
948
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
949
+ IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx
950
+ MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
951
+ ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew
952
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO
953
+ 9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy
954
+ UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW
955
+ /lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy
956
+ oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf
957
+ GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF
958
+ 66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq
959
+ hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc
960
+ EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn
961
+ SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i
962
+ 8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe
963
+ +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g==
964
+ -----END CERTIFICATE-----
965
+
966
+ DigiCert Global Root CA
967
+ =======================
968
+ -----BEGIN CERTIFICATE-----
969
+ MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG
970
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
971
+ HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw
972
+ MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
973
+ dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq
974
+ hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn
975
+ TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5
976
+ BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H
977
+ 4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y
978
+ 7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB
979
+ o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm
980
+ 8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF
981
+ BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr
982
+ EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt
983
+ tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886
984
+ UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
985
+ CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
986
+ -----END CERTIFICATE-----
987
+
988
+ DigiCert High Assurance EV Root CA
989
+ ==================================
990
+ -----BEGIN CERTIFICATE-----
991
+ MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG
992
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw
993
+ KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw
994
+ MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ
995
+ MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu
996
+ Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t
997
+ Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS
998
+ OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3
999
+ MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ
1000
+ NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe
1001
+ h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB
1002
+ Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY
1003
+ JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ
1004
+ V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp
1005
+ myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK
1006
+ mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe
1007
+ vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K
1008
+ -----END CERTIFICATE-----
1009
+
1010
+ Certplus Class 2 Primary CA
1011
+ ===========================
1012
+ -----BEGIN CERTIFICATE-----
1013
+ MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE
1014
+ BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN
1015
+ OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy
1016
+ dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP
1017
+ ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR
1018
+ 5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ
1019
+ Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO
1020
+ YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e
1021
+ e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME
1022
+ CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ
1023
+ YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t
1024
+ L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD
1025
+ P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R
1026
+ TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+
1027
+ 7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW
1028
+ //1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7
1029
+ l7+ijrRU
1030
+ -----END CERTIFICATE-----
1031
+
1032
+ DST Root CA X3
1033
+ ==============
1034
+ -----BEGIN CERTIFICATE-----
1035
+ MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK
1036
+ ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X
1037
+ DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1
1038
+ cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD
1039
+ ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT
1040
+ rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9
1041
+ UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy
1042
+ xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d
1043
+ utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T
1044
+ AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ
1045
+ MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug
1046
+ dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE
1047
+ GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw
1048
+ RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS
1049
+ fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
1050
+ -----END CERTIFICATE-----
1051
+
1052
+ DST ACES CA X6
1053
+ ==============
1054
+ -----BEGIN CERTIFICATE-----
1055
+ MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG
1056
+ EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT
1057
+ MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha
1058
+ MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE
1059
+ CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC
1060
+ AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI
1061
+ DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa
1062
+ pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow
1063
+ GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy
1064
+ MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud
1065
+ EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu
1066
+ Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy
1067
+ dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU
1068
+ CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2
1069
+ 5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t
1070
+ Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq
1071
+ nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs
1072
+ vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3
1073
+ oKfN5XozNmr6mis=
1074
+ -----END CERTIFICATE-----
1075
+
1076
+ SwissSign Gold CA - G2
1077
+ ======================
1078
+ -----BEGIN CERTIFICATE-----
1079
+ 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
1105
+ -----END CERTIFICATE-----
1106
+
1107
+ SwissSign Silver CA - G2
1108
+ ========================
1109
+ -----BEGIN CERTIFICATE-----
1110
+ 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
1136
+ -----END CERTIFICATE-----
1137
+
1138
+ GeoTrust Primary Certification Authority
1139
+ ========================================
1140
+ -----BEGIN CERTIFICATE-----
1141
+ MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG
1142
+ EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD
1143
+ ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx
1144
+ CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ
1145
+ cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
1146
+ CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN
1147
+ b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9
1148
+ nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge
1149
+ RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt
1150
+ tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD
1151
+ AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI
1152
+ hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K
1153
+ Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN
1154
+ NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa
1155
+ Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG
1156
+ 1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk=
1157
+ -----END CERTIFICATE-----
1158
+
1159
+ thawte Primary Root CA
1160
+ ======================
1161
+ -----BEGIN CERTIFICATE-----
1162
+ MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE
1163
+ BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
1164
+ aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
1165
+ cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3
1166
+ MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg
1167
+ SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv
1168
+ KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT
1169
+ FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs
1170
+ oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ
1171
+ 1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc
1172
+ q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K
1173
+ aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p
1174
+ afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD
1175
+ VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF
1176
+ AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE
1177
+ uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX
1178
+ xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89
1179
+ jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH
1180
+ z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA==
1181
+ -----END CERTIFICATE-----
1182
+
1183
+ VeriSign Class 3 Public Primary Certification Authority - G5
1184
+ ============================================================
1185
+ -----BEGIN CERTIFICATE-----
1186
+ MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE
1187
+ BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
1188
+ ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
1189
+ IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp
1190
+ ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB
1191
+ yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln
1192
+ biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh
1193
+ dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt
1194
+ YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
1195
+ ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz
1196
+ j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD
1197
+ Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/
1198
+ Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r
1199
+ fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/
1200
+ BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv
1201
+ Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy
1202
+ aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG
1203
+ SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+
1204
+ X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE
1205
+ KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC
1206
+ Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE
1207
+ ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq
1208
+ -----END CERTIFICATE-----
1209
+
1210
+ SecureTrust CA
1211
+ ==============
1212
+ -----BEGIN CERTIFICATE-----
1213
+ MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG
1214
+ EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy
1215
+ dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe
1216
+ BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC
1217
+ ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX
1218
+ OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t
1219
+ DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH
1220
+ GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b
1221
+ 01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH
1222
+ ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/
1223
+ BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj
1224
+ aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
1225
+ KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu
1226
+ SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf
1227
+ mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ
1228
+ nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR
1229
+ 3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE=
1230
+ -----END CERTIFICATE-----
1231
+
1232
+ Secure Global CA
1233
+ ================
1234
+ -----BEGIN CERTIFICATE-----
1235
+ MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG
1236
+ EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH
1237
+ bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg
1238
+ MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg
1239
+ Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx
1240
+ YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ
1241
+ bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g
1242
+ 8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV
1243
+ HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi
1244
+ 0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud
1245
+ EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn
1246
+ oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA
1247
+ MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+
1248
+ OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn
1249
+ CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5
1250
+ 3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc
1251
+ f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW
1252
+ -----END CERTIFICATE-----
1253
+
1254
+ COMODO Certification Authority
1255
+ ==============================
1256
+ -----BEGIN CERTIFICATE-----
1257
+ MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE
1258
+ BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
1259
+ A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1
1260
+ dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb
1261
+ MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD
1262
+ T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
1263
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH
1264
+ +7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww
1265
+ xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV
1266
+ 4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA
1267
+ 1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI
1268
+ rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E
1269
+ BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k
1270
+ b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC
1271
+ AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP
1272
+ OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/
1273
+ RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc
1274
+ IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
1275
+ +8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
1276
+ -----END CERTIFICATE-----
1277
+
1278
+ Network Solutions Certificate Authority
1279
+ =======================================
1280
+ -----BEGIN CERTIFICATE-----
1281
+ MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
1282
+ EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
1283
+ IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
1284
+ MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
1285
+ MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
1286
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
1287
+ jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
1288
+ aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
1289
+ crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
1290
+ /Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
1291
+ AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
1292
+ BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
1293
+ bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
1294
+ A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
1295
+ 4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
1296
+ GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
1297
+ wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
1298
+ ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
1299
+ -----END CERTIFICATE-----
1300
+
1301
+ WellsSecure Public Root Certificate Authority
1302
+ =============================================
1303
+ -----BEGIN CERTIFICATE-----
1304
+ MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM
1305
+ F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw
1306
+ NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
1307
+ MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl
1308
+ bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD
1309
+ VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
1310
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1
1311
+ iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13
1312
+ i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8
1313
+ bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB
1314
+ K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB
1315
+ AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu
1316
+ cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm
1317
+ lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB
1318
+ i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww
1319
+ GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg
1320
+ Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI
1321
+ K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0
1322
+ bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj
1323
+ qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es
1324
+ E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ
1325
+ tylv2G0xffX8oRAHh84vWdw+WNs=
1326
+ -----END CERTIFICATE-----
1327
+
1328
+ COMODO ECC Certification Authority
1329
+ ==================================
1330
+ -----BEGIN CERTIFICATE-----
1331
+ MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC
1332
+ R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
1333
+ ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB
1334
+ dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix
1335
+ GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR
1336
+ Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo
1337
+ b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X
1338
+ 4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni
1339
+ wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E
1340
+ BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG
1341
+ FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA
1342
+ U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY=
1343
+ -----END CERTIFICATE-----
1344
+
1345
+ IGC/A
1346
+ =====
1347
+ -----BEGIN CERTIFICATE-----
1348
+ MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD
1349
+ VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE
1350
+ Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy
1351
+ MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI
1352
+ EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT
1353
+ STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB
1354
+ IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2
1355
+ TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW
1356
+ So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy
1357
+ HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd
1358
+ frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ
1359
+ tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB
1360
+ egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC
1361
+ iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK
1362
+ q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q
1363
+ MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg
1364
+ Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI
1365
+ lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF
1366
+ 0mBWWg==
1367
+ -----END CERTIFICATE-----
1368
+
1369
+ Security Communication EV RootCA1
1370
+ =================================
1371
+ -----BEGIN CERTIFICATE-----
1372
+ MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
1373
+ U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh
1374
+ dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE
1375
+ BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl
1376
+ Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
1377
+ AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO
1378
+ /VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX
1379
+ WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z
1380
+ ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4
1381
+ bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK
1382
+ 9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG
1383
+ SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm
1384
+ iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG
1385
+ Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW
1386
+ mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW
1387
+ T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490
1388
+ -----END CERTIFICATE-----
1389
+
1390
+ OISTE WISeKey Global Root GA CA
1391
+ ===============================
1392
+ -----BEGIN CERTIFICATE-----
1393
+ MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE
1394
+ BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG
1395
+ A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH
1396
+ bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD
1397
+ VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw
1398
+ IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5
1399
+ IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9
1400
+ Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg
1401
+ Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD
1402
+ d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ
1403
+ /yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R
1404
+ LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw
1405
+ AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ
1406
+ KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm
1407
+ MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4
1408
+ +vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa
1409
+ hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY
1410
+ okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0=
1411
+ -----END CERTIFICATE-----
1412
+
1413
+ Microsec e-Szigno Root CA
1414
+ =========================
1415
+ -----BEGIN CERTIFICATE-----
1416
+ MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE
1417
+ BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL
1418
+ EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0
1419
+ MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz
1420
+ dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT
1421
+ GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB
1422
+ AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG
1423
+ d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N
1424
+ oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc
1425
+ QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ
1426
+ PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb
1427
+ MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG
1428
+ IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD
1429
+ VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3
1430
+ LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A
1431
+ dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn
1432
+ AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA
1433
+ 4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg
1434
+ AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA
1435
+ egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6
1436
+ Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO
1437
+ PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv
1438
+ c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h
1439
+ cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw
1440
+ IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT
1441
+ WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV
1442
+ MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER
1443
+ MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp
1444
+ Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal
1445
+ HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT
1446
+ nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE
1447
+ aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a
1448
+ 86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK
1449
+ yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB
1450
+ S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU=
1451
+ -----END CERTIFICATE-----
1452
+
1453
+ Certigna
1454
+ ========
1455
+ -----BEGIN CERTIFICATE-----
1456
+ MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw
1457
+ EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3
1458
+ MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI
1459
+ Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q
1460
+ XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH
1461
+ GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p
1462
+ ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg
1463
+ DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf
1464
+ Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ
1465
+ tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ
1466
+ BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J
1467
+ SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA
1468
+ hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+
1469
+ ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu
1470
+ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
1471
+ 1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw
1472
+ WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
1473
+ -----END CERTIFICATE-----
1474
+
1475
+ Deutsche Telekom Root CA 2
1476
+ ==========================
1477
+ -----BEGIN CERTIFICATE-----
1478
+ MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT
1479
+ RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG
1480
+ A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5
1481
+ MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G
1482
+ A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS
1483
+ b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5
1484
+ bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI
1485
+ KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY
1486
+ AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK
1487
+ Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV
1488
+ jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV
1489
+ HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr
1490
+ E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy
1491
+ zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8
1492
+ rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G
1493
+ dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU
1494
+ Cm26OWMohpLzGITY+9HPBVZkVw==
1495
+ -----END CERTIFICATE-----
1496
+
1497
+ Cybertrust Global Root
1498
+ ======================
1499
+ -----BEGIN CERTIFICATE-----
1500
+ MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
1501
+ ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
1502
+ MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
1503
+ ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
1504
+ +Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
1505
+ 0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
1506
+ AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
1507
+ 89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
1508
+ 8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
1509
+ BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
1510
+ MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
1511
+ A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
1512
+ lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
1513
+ 5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
1514
+ hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
1515
+ X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
1516
+ WL1WMRJOEcgh4LMRkWXbtKaIOM5V
1517
+ -----END CERTIFICATE-----
1518
+
1519
+ ePKI Root Certification Authority
1520
+ =================================
1521
+ -----BEGIN CERTIFICATE-----
1522
+ MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG
1523
+ EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg
1524
+ Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx
1525
+ MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq
1526
+ MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B
1527
+ AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs
1528
+ IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi
1529
+ lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv
1530
+ qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX
1531
+ 12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O
1532
+ WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+
1533
+ ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao
1534
+ lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/
1535
+ vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi
1536
+ Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi
1537
+ MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH
1538
+ ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0
1539
+ 1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq
1540
+ KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV
1541
+ xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP
1542
+ NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r
1543
+ GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE
1544
+ xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx
1545
+ gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy
1546
+ sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD
1547
+ BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw=
1548
+ -----END CERTIFICATE-----
1549
+
1550
+ T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3
1551
+ =============================================================================================================================
1552
+ -----BEGIN CERTIFICATE-----
1553
+ MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH
1554
+ DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q
1555
+ aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry
1556
+ b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV
1557
+ BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg
1558
+ S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4
1559
+ MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl
1560
+ IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF
1561
+ n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl
1562
+ IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft
1563
+ dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl
1564
+ cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B
1565
+ AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO
1566
+ Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1
1567
+ xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR
1568
+ 6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL
1569
+ hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd
1570
+ BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF
1571
+ MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4
1572
+ N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT
1573
+ y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh
1574
+ LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M
1575
+ dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI=
1576
+ -----END CERTIFICATE-----
1577
+
1578
+ Buypass Class 2 CA 1
1579
+ ====================
1580
+ -----BEGIN CERTIFICATE-----
1581
+ MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU
1582
+ QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2
1583
+ MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh
1584
+ c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI
1585
+ hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M
1586
+ cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83
1587
+ 0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4
1588
+ 0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R
1589
+ uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC
1590
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P
1591
+ AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV
1592
+ 1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt
1593
+ 7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2
1594
+ fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w
1595
+ wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho
1596
+ -----END CERTIFICATE-----
1597
+
1598
+ EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1
1599
+ ==========================================================================
1600
+ -----BEGIN CERTIFICATE-----
1601
+ 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
1628
+ -----END CERTIFICATE-----
1629
+
1630
+ certSIGN ROOT CA
1631
+ ================
1632
+ -----BEGIN CERTIFICATE-----
1633
+ MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD
1634
+ VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa
1635
+ Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE
1636
+ CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I
1637
+ JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH
1638
+ rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2
1639
+ ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD
1640
+ 0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943
1641
+ AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B
1642
+ Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB
1643
+ AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8
1644
+ SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0
1645
+ x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt
1646
+ vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz
1647
+ TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD
1648
+ -----END CERTIFICATE-----
1649
+
1650
+ CNNIC ROOT
1651
+ ==========
1652
+ -----BEGIN CERTIFICATE-----
1653
+ MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE
1654
+ ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw
1655
+ OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw
1656
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD
1657
+ o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz
1658
+ VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT
1659
+ VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or
1660
+ czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK
1661
+ y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC
1662
+ wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S
1663
+ lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5
1664
+ Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM
1665
+ O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8
1666
+ BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2
1667
+ G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m
1668
+ mxE=
1669
+ -----END CERTIFICATE-----
1670
+
1671
+ ApplicationCA - Japanese Government
1672
+ ===================================
1673
+ -----BEGIN CERTIFICATE-----
1674
+ MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT
1675
+ SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw
1676
+ MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl
1677
+ cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
1678
+ CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4
1679
+ fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN
1680
+ wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE
1681
+ jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu
1682
+ nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU
1683
+ WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV
1684
+ BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD
1685
+ vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs
1686
+ o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g
1687
+ /DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD
1688
+ io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW
1689
+ dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL
1690
+ rosot4LKGAfmt1t06SAZf7IbiVQ=
1691
+ -----END CERTIFICATE-----
1692
+
1693
+ GeoTrust Primary Certification Authority - G3
1694
+ =============================================
1695
+ -----BEGIN CERTIFICATE-----
1696
+ MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE
1697
+ BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0
1698
+ IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy
1699
+ eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz
1700
+ NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo
1701
+ YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT
1702
+ LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI
1703
+ hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j
1704
+ K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE
1705
+ c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C
1706
+ IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu
1707
+ dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC
1708
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr
1709
+ 2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9
1710
+ cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE
1711
+ Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD
1712
+ AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s
1713
+ t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt
1714
+ -----END CERTIFICATE-----
1715
+
1716
+ thawte Primary Root CA - G2
1717
+ ===========================
1718
+ -----BEGIN CERTIFICATE-----
1719
+ MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC
1720
+ VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu
1721
+ IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg
1722
+ Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV
1723
+ MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG
1724
+ b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt
1725
+ IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS
1726
+ LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5
1727
+ 8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU
1728
+ mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN
1729
+ G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K
1730
+ rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg==
1731
+ -----END CERTIFICATE-----
1732
+
1733
+ thawte Primary Root CA - G3
1734
+ ===========================
1735
+ -----BEGIN CERTIFICATE-----
1736
+ MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE
1737
+ BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2
1738
+ aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv
1739
+ cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w
1740
+ ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh
1741
+ d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD
1742
+ VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG
1743
+ A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
1744
+ MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At
1745
+ P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC
1746
+ +BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY
1747
+ 7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW
1748
+ vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E
1749
+ BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ
1750
+ KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK
1751
+ A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu
1752
+ t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC
1753
+ 8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm
1754
+ er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A=
1755
+ -----END CERTIFICATE-----
1756
+
1757
+ GeoTrust Primary Certification Authority - G2
1758
+ =============================================
1759
+ -----BEGIN CERTIFICATE-----
1760
+ MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC
1761
+ VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu
1762
+ Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD
1763
+ ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1
1764
+ OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg
1765
+ MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl
1766
+ b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG
1767
+ BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc
1768
+ KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD
1769
+ VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+
1770
+ EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m
1771
+ ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2
1772
+ npaqBA+K
1773
+ -----END CERTIFICATE-----
1774
+
1775
+ VeriSign Universal Root Certification Authority
1776
+ ===============================================
1777
+ -----BEGIN CERTIFICATE-----
1778
+ MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE
1779
+ BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO
1780
+ ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk
1781
+ IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u
1782
+ IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV
1783
+ UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv
1784
+ cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl
1785
+ IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0
1786
+ aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj
1787
+ 1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP
1788
+ MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72
1789
+ 9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I
1790
+ AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR
1791
+ tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G
1792
+ CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O
1793
+ a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud
1794
+ DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3
1795
+ Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx
1796
+ Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx
1797
+ P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P
1798
+ wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4
1799
+ mJO37M2CYfE45k+XmCpajQ==
1800
+ -----END CERTIFICATE-----
1801
+
1802
+ VeriSign Class 3 Public Primary Certification Authority - G4
1803
+ ============================================================
1804
+ -----BEGIN CERTIFICATE-----
1805
+ MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC
1806
+ VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3
1807
+ b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz
1808
+ ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj
1809
+ YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL
1810
+ MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU
1811
+ cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo
1812
+ b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
1813
+ IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8
1814
+ Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz
1815
+ rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB
1816
+ /zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw
1817
+ HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u
1818
+ Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD
1819
+ A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx
1820
+ AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA==
1821
+ -----END CERTIFICATE-----
1822
+
1823
+ NetLock Arany (Class Gold) Főtanúsítvány
1824
+ ============================================
1825
+ -----BEGIN CERTIFICATE-----
1826
+ MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G
1827
+ A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610
1828
+ dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB
1829
+ cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx
1830
+ MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO
1831
+ ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv
1832
+ biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6
1833
+ c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu
1834
+ 0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw
1835
+ /HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk
1836
+ H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw
1837
+ fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1
1838
+ neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB
1839
+ BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW
1840
+ qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta
1841
+ YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC
1842
+ bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna
1843
+ NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
1844
+ dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
1845
+ -----END CERTIFICATE-----
1846
+
1847
+ Staat der Nederlanden Root CA - G2
1848
+ ==================================
1849
+ -----BEGIN CERTIFICATE-----
1850
+ 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
1876
+ 66+KAQ==
1877
+ -----END CERTIFICATE-----
1878
+
1879
+ CA Disig
1880
+ ========
1881
+ -----BEGIN CERTIFICATE-----
1882
+ MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK
1883
+ QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw
1884
+ MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz
1885
+ bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3
1886
+ DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm
1887
+ GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD
1888
+ Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo
1889
+ hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt
1890
+ ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w
1891
+ gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P
1892
+ AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz
1893
+ aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff
1894
+ ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa
1895
+ BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t
1896
+ WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3
1897
+ mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/
1898
+ CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K
1899
+ ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA
1900
+ 4Z7CRneC9VkGjCFMhwnN5ag=
1901
+ -----END CERTIFICATE-----
1902
+
1903
+ Juur-SK
1904
+ =======
1905
+ -----BEGIN CERTIFICATE-----
1906
+ MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA
1907
+ c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw
1908
+ DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG
1909
+ SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy
1910
+ aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
1911
+ ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf
1912
+ TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC
1913
+ +Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw
1914
+ UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa
1915
+ Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF
1916
+ MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD
1917
+ HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh
1918
+ AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA
1919
+ cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr
1920
+ AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw
1921
+ cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE
1922
+ FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G
1923
+ A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo
1924
+ ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL
1925
+ abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678
1926
+ IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh
1927
+ Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2
1928
+ yyqcjg==
1929
+ -----END CERTIFICATE-----
1930
+
1931
+ Hongkong Post Root CA 1
1932
+ =======================
1933
+ -----BEGIN CERTIFICATE-----
1934
+ MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
1935
+ DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
1936
+ NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
1937
+ IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
1938
+ AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
1939
+ ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
1940
+ auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
1941
+ qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
1942
+ V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
1943
+ HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
1944
+ h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
1945
+ l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
1946
+ IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
1947
+ T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
1948
+ c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
1949
+ -----END CERTIFICATE-----
1950
+
1951
+ SecureSign RootCA11
1952
+ ===================
1953
+ -----BEGIN CERTIFICATE-----
1954
+ MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi
1955
+ SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS
1956
+ b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw
1957
+ KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1
1958
+ cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL
1959
+ TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO
1960
+ wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq
1961
+ g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP
1962
+ O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA
1963
+ bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX
1964
+ t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh
1965
+ OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r
1966
+ bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ
1967
+ Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01
1968
+ y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061
1969
+ lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I=
1970
+ -----END CERTIFICATE-----
1971
+
1972
+ ACEDICOM Root
1973
+ =============
1974
+ -----BEGIN CERTIFICATE-----
1975
+ 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
2001
+ -----END CERTIFICATE-----
2002
+
2003
+ Microsec e-Szigno Root CA 2009
2004
+ ==============================
2005
+ -----BEGIN CERTIFICATE-----
2006
+ MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER
2007
+ MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv
2008
+ c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o
2009
+ dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE
2010
+ BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt
2011
+ U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw
2012
+ DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA
2013
+ fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG
2014
+ 0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA
2015
+ pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm
2016
+ 1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC
2017
+ AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf
2018
+ QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE
2019
+ FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o
2020
+ lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX
2021
+ I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775
2022
+ tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02
2023
+ yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi
2024
+ LXpUq3DDfSJlgnCW
2025
+ -----END CERTIFICATE-----
2026
+
2027
+ GlobalSign Root CA - R3
2028
+ =======================
2029
+ -----BEGIN CERTIFICATE-----
2030
+ MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv
2031
+ YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
2032
+ bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
2033
+ aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
2034
+ bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt
2035
+ iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ
2036
+ 0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3
2037
+ rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl
2038
+ OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2
2039
+ xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
2040
+ FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7
2041
+ lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8
2042
+ EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E
2043
+ bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18
2044
+ YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
2045
+ kpeDMdmztcpHWD9f
2046
+ -----END CERTIFICATE-----
2047
+
2048
+ Autoridad de Certificacion Firmaprofesional CIF A62634068
2049
+ =========================================================
2050
+ -----BEGIN CERTIFICATE-----
2051
+ MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
2052
+ BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
2053
+ MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
2054
+ QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
2055
+ NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
2056
+ Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
2057
+ B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
2058
+ 7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
2059
+ ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
2060
+ plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
2061
+ MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
2062
+ LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
2063
+ bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
2064
+ vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
2065
+ EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
2066
+ DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
2067
+ cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
2068
+ bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
2069
+ ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
2070
+ 51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
2071
+ R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
2072
+ T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
2073
+ Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
2074
+ osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
2075
+ crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
2076
+ saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
2077
+ KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
2078
+ 6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
2079
+ -----END CERTIFICATE-----
2080
+
2081
+ Izenpe.com
2082
+ ==========
2083
+ -----BEGIN CERTIFICATE-----
2084
+ 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
2111
+ -----END CERTIFICATE-----
2112
+
2113
+ Chambers of Commerce Root - 2008
2114
+ ================================
2115
+ -----BEGIN CERTIFICATE-----
2116
+ MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD
2117
+ MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
2118
+ bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
2119
+ QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy
2120
+ Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl
2121
+ ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF
2122
+ EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl
2123
+ cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC
2124
+ AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA
2125
+ XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj
2126
+ h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/
2127
+ ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk
2128
+ NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g
2129
+ D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331
2130
+ lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ
2131
+ 0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj
2132
+ ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2
2133
+ EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI
2134
+ G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ
2135
+ BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh
2136
+ bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh
2137
+ bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC
2138
+ CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH
2139
+ AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1
2140
+ wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH
2141
+ 3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU
2142
+ RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6
2143
+ M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1
2144
+ YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF
2145
+ 9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK
2146
+ zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG
2147
+ nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg
2148
+ OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ
2149
+ -----END CERTIFICATE-----
2150
+
2151
+ Global Chambersign Root - 2008
2152
+ ==============================
2153
+ -----BEGIN CERTIFICATE-----
2154
+ MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD
2155
+ MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv
2156
+ bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu
2157
+ QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx
2158
+ NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg
2159
+ Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ
2160
+ QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD
2161
+ aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf
2162
+ VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf
2163
+ XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0
2164
+ ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB
2165
+ /gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA
2166
+ TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M
2167
+ H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe
2168
+ Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF
2169
+ HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh
2170
+ wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB
2171
+ AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT
2172
+ BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE
2173
+ BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm
2174
+ aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm
2175
+ aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp
2176
+ 1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0
2177
+ dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG
2178
+ /5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6
2179
+ ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s
2180
+ dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg
2181
+ 9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH
2182
+ foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du
2183
+ qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr
2184
+ P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq
2185
+ c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z
2186
+ 09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B
2187
+ -----END CERTIFICATE-----
2188
+
2189
+ Go Daddy Root Certificate Authority - G2
2190
+ ========================================
2191
+ -----BEGIN CERTIFICATE-----
2192
+ MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
2193
+ B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu
2194
+ MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5
2195
+ MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6
2196
+ b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G
2197
+ A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI
2198
+ hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq
2199
+ 9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD
2200
+ +qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd
2201
+ fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl
2202
+ NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC
2203
+ MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9
2204
+ BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac
2205
+ vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r
2206
+ 5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV
2207
+ N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO
2208
+ LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1
2209
+ -----END CERTIFICATE-----
2210
+
2211
+ Starfield Root Certificate Authority - G2
2212
+ =========================================
2213
+ -----BEGIN CERTIFICATE-----
2214
+ MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
2215
+ B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
2216
+ b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0
2217
+ eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw
2218
+ DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg
2219
+ VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB
2220
+ dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv
2221
+ W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs
2222
+ bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk
2223
+ N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf
2224
+ ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU
2225
+ JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
2226
+ AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol
2227
+ TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx
2228
+ 4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw
2229
+ F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K
2230
+ pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ
2231
+ c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0
2232
+ -----END CERTIFICATE-----
2233
+
2234
+ Starfield Services Root Certificate Authority - G2
2235
+ ==================================================
2236
+ -----BEGIN CERTIFICATE-----
2237
+ MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT
2238
+ B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s
2239
+ b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl
2240
+ IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV
2241
+ BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT
2242
+ dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg
2243
+ Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
2244
+ AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2
2245
+ h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa
2246
+ hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP
2247
+ LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB
2248
+ rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw
2249
+ AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG
2250
+ SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP
2251
+ E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy
2252
+ xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd
2253
+ iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza
2254
+ YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6
2255
+ -----END CERTIFICATE-----
2256
+
2257
+ AffirmTrust Commercial
2258
+ ======================
2259
+ -----BEGIN CERTIFICATE-----
2260
+ MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS
2261
+ BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw
2262
+ MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
2263
+ bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF
2264
+ AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb
2265
+ DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV
2266
+ C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6
2267
+ BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww
2268
+ MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV
2269
+ HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
2270
+ AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG
2271
+ hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi
2272
+ qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv
2273
+ 0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh
2274
+ sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8=
2275
+ -----END CERTIFICATE-----
2276
+
2277
+ AffirmTrust Networking
2278
+ ======================
2279
+ -----BEGIN CERTIFICATE-----
2280
+ MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS
2281
+ BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw
2282
+ MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly
2283
+ bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF
2284
+ AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE
2285
+ Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI
2286
+ dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24
2287
+ /PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb
2288
+ h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV
2289
+ HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
2290
+ AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu
2291
+ UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6
2292
+ 12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23
2293
+ WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9
2294
+ /ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s=
2295
+ -----END CERTIFICATE-----
2296
+
2297
+ AffirmTrust Premium
2298
+ ===================
2299
+ -----BEGIN CERTIFICATE-----
2300
+ MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS
2301
+ BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy
2302
+ OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy
2303
+ dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
2304
+ MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn
2305
+ BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV
2306
+ 5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs
2307
+ +7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd
2308
+ GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R
2309
+ p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI
2310
+ S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04
2311
+ 6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5
2312
+ /bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo
2313
+ +Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB
2314
+ /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv
2315
+ MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg
2316
+ Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC
2317
+ 6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S
2318
+ L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK
2319
+ +4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV
2320
+ BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg
2321
+ IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60
2322
+ g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb
2323
+ zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw==
2324
+ -----END CERTIFICATE-----
2325
+
2326
+ AffirmTrust Premium ECC
2327
+ =======================
2328
+ -----BEGIN CERTIFICATE-----
2329
+ MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV
2330
+ BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx
2331
+ MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U
2332
+ cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA
2333
+ IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ
2334
+ N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW
2335
+ BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK
2336
+ BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X
2337
+ 57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM
2338
+ eQ==
2339
+ -----END CERTIFICATE-----
2340
+
2341
+ Certum Trusted Network CA
2342
+ =========================
2343
+ -----BEGIN CERTIFICATE-----
2344
+ MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK
2345
+ ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv
2346
+ biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy
2347
+ MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU
2348
+ ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5
2349
+ MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC
2350
+ AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC
2351
+ l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J
2352
+ J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4
2353
+ fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0
2354
+ cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB
2355
+ Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw
2356
+ DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj
2357
+ jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1
2358
+ mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj
2359
+ Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI
2360
+ 03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw=
2361
+ -----END CERTIFICATE-----
2362
+
2363
+ Certinomis - Autorité Racine
2364
+ =============================
2365
+ -----BEGIN CERTIFICATE-----
2366
+ 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
2391
+ vgt2Fl43N+bYdJeimUV5
2392
+ -----END CERTIFICATE-----
2393
+
2394
+ Root CA Generalitat Valenciana
2395
+ ==============================
2396
+ -----BEGIN CERTIFICATE-----
2397
+ MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE
2398
+ ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290
2399
+ IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3
2400
+ WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE
2401
+ CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G
2402
+ CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2
2403
+ F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B
2404
+ ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ
2405
+ D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte
2406
+ JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB
2407
+ AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n
2408
+ dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB
2409
+ ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl
2410
+ AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA
2411
+ YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy
2412
+ AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA
2413
+ aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt
2414
+ AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA
2415
+ YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu
2416
+ AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA
2417
+ OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0
2418
+ dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV
2419
+ BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G
2420
+ A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S
2421
+ b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh
2422
+ TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz
2423
+ Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63
2424
+ NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH
2425
+ iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt
2426
+ +GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM=
2427
+ -----END CERTIFICATE-----
2428
+
2429
+ TWCA Root Certification Authority
2430
+ =================================
2431
+ -----BEGIN CERTIFICATE-----
2432
+ MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ
2433
+ VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh
2434
+ dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG
2435
+ EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB
2436
+ IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
2437
+ AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx
2438
+ QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC
2439
+ oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP
2440
+ 4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r
2441
+ y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB
2442
+ BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG
2443
+ 9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC
2444
+ mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW
2445
+ QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY
2446
+ T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny
2447
+ Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw==
2448
+ -----END CERTIFICATE-----
2449
+
2450
+ Security Communication RootCA2
2451
+ ==============================
2452
+ -----BEGIN CERTIFICATE-----
2453
+ MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc
2454
+ U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh
2455
+ dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC
2456
+ SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy
2457
+ aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
2458
+ ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++
2459
+ +T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R
2460
+ 3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV
2461
+ spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K
2462
+ EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8
2463
+ QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB
2464
+ CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj
2465
+ u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk
2466
+ 3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q
2467
+ tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
2468
+ mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
2469
+ -----END CERTIFICATE-----
2470
+
2471
+ EC-ACC
2472
+ ======
2473
+ -----BEGIN CERTIFICATE-----
2474
+ MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
2475
+ BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
2476
+ ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
2477
+ VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
2478
+ CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
2479
+ BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
2480
+ MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
2481
+ SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
2482
+ Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
2483
+ cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
2484
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
2485
+ w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
2486
+ ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
2487
+ HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
2488
+ E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
2489
+ 0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
2490
+ BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
2491
+ VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
2492
+ Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
2493
+ dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
2494
+ lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
2495
+ Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
2496
+ l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
2497
+ E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
2498
+ 5EI=
2499
+ -----END CERTIFICATE-----
2500
+
2501
+ Hellenic Academic and Research Institutions RootCA 2011
2502
+ =======================================================
2503
+ -----BEGIN CERTIFICATE-----
2504
+ MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
2505
+ O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
2506
+ aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
2507
+ IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
2508
+ AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
2509
+ IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
2510
+ IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
2511
+ AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
2512
+ 1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
2513
+ 71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
2514
+ 8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
2515
+ 3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
2516
+ MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
2517
+ MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
2518
+ b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
2519
+ XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
2520
+ TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
2521
+ /md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
2522
+ 7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
2523
+ -----END CERTIFICATE-----
2524
+
2525
+ Actalis Authentication Root CA
2526
+ ==============================
2527
+ -----BEGIN CERTIFICATE-----
2528
+ MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM
2529
+ BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE
2530
+ AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky
2531
+ MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz
2532
+ IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290
2533
+ IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ
2534
+ wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa
2535
+ by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6
2536
+ zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f
2537
+ YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2
2538
+ oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l
2539
+ EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7
2540
+ hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8
2541
+ EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5
2542
+ jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY
2543
+ iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt
2544
+ ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI
2545
+ WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0
2546
+ JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx
2547
+ K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+
2548
+ Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC
2549
+ 4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo
2550
+ 2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz
2551
+ lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem
2552
+ OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9
2553
+ vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg==
2554
+ -----END CERTIFICATE-----
2555
+
2556
+ Trustis FPS Root CA
2557
+ ===================
2558
+ -----BEGIN CERTIFICATE-----
2559
+ MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG
2560
+ EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290
2561
+ IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV
2562
+ BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ
2563
+ KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ
2564
+ RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk
2565
+ H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa
2566
+ cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt
2567
+ o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA
2568
+ AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd
2569
+ BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c
2570
+ GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC
2571
+ yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P
2572
+ 8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV
2573
+ l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl
2574
+ iB6XzCGcKQENZetX2fNXlrtIzYE=
2575
+ -----END CERTIFICATE-----
2576
+
2577
+ StartCom Certification Authority
2578
+ ================================
2579
+ -----BEGIN CERTIFICATE-----
2580
+ MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
2581
+ U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu
2582
+ ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0
2583
+ NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk
2584
+ LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg
2585
+ U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
2586
+ ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y
2587
+ o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/
2588
+ Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d
2589
+ eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt
2590
+ 2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z
2591
+ 6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ
2592
+ osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/
2593
+ untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc
2594
+ UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT
2595
+ 37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD
2596
+ VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ
2597
+ Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0
2598
+ dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu
2599
+ c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv
2600
+ bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0
2601
+ aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0
2602
+ aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t
2603
+ L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG
2604
+ cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5
2605
+ fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm
2606
+ N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN
2607
+ Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T
2608
+ tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX
2609
+ e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA
2610
+ 2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs
2611
+ HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE
2612
+ JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib
2613
+ D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8=
2614
+ -----END CERTIFICATE-----
2615
+
2616
+ StartCom Certification Authority G2
2617
+ ===================================
2618
+ -----BEGIN CERTIFICATE-----
2619
+ MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN
2620
+ U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg
2621
+ RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE
2622
+ ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp
2623
+ dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O
2624
+ o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG
2625
+ 4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi
2626
+ Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul
2627
+ Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs
2628
+ O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H
2629
+ vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L
2630
+ nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS
2631
+ FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa
2632
+ z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E
2633
+ BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ
2634
+ KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K
2635
+ 2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk
2636
+ J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+
2637
+ JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG
2638
+ /+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc
2639
+ nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld
2640
+ blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc
2641
+ l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm
2642
+ 7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm
2643
+ obp573PYtlNXLfbQ4ddI
2644
+ -----END CERTIFICATE-----
2645
+
2646
+ Buypass Class 2 Root CA
2647
+ =======================
2648
+ -----BEGIN CERTIFICATE-----
2649
+ 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
2673
+ rJgWVqA=
2674
+ -----END CERTIFICATE-----
2675
+
2676
+ Buypass Class 3 Root CA
2677
+ =======================
2678
+ -----BEGIN CERTIFICATE-----
2679
+ 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
2703
+ Cp/HuZc=
2704
+ -----END CERTIFICATE-----
2705
+
2706
+ T-TeleSec GlobalRoot Class 3
2707
+ ============================
2708
+ -----BEGIN CERTIFICATE-----
2709
+ MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
2710
+ IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
2711
+ cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx
2712
+ MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
2713
+ dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
2714
+ ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3
2715
+ DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK
2716
+ 9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU
2717
+ NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF
2718
+ iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W
2719
+ 0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA
2720
+ MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr
2721
+ AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb
2722
+ fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT
2723
+ ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h
2724
+ P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml
2725
+ e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw==
2726
+ -----END CERTIFICATE-----
2727
+
2728
+ EE Certification Centre Root CA
2729
+ ===============================
2730
+ -----BEGIN CERTIFICATE-----
2731
+ MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG
2732
+ EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy
2733
+ dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw
2734
+ MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB
2735
+ UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy
2736
+ ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB
2737
+ DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM
2738
+ TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2
2739
+ rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw
2740
+ 93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN
2741
+ P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T
2742
+ AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ
2743
+ MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF
2744
+ BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj
2745
+ xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM
2746
+ lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u
2747
+ uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU
2748
+ 3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM
2749
+ dcGWxZ0=
2750
+ -----END CERTIFICATE-----
2751
+
2752
+ TURKTRUST Certificate Services Provider Root 2007
2753
+ =================================================
2754
+ -----BEGIN CERTIFICATE-----
2755
+ MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF
2756
+ bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP
2757
+ MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg
2758
+ QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X
2759
+ DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl
2760
+ a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN
2761
+ BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
2762
+ bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw
2763
+ DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N
2764
+ YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv
2765
+ KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya
2766
+ KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT
2767
+ rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC
2768
+ AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP
2769
+ BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s
2770
+ Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I
2771
+ aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO
2772
+ Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb
2773
+ BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK
2774
+ poRq0Tl9
2775
+ -----END CERTIFICATE-----
2776
+
2777
+ D-TRUST Root Class 3 CA 2 2009
2778
+ ==============================
2779
+ -----BEGIN CERTIFICATE-----
2780
+ MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK
2781
+ DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe
2782
+ Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE
2783
+ LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw
2784
+ DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD
2785
+ ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA
2786
+ BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv
2787
+ KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z
2788
+ p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC
2789
+ AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ
2790
+ 4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y
2791
+ eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw
2792
+ MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G
2793
+ PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw
2794
+ OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm
2795
+ 2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0
2796
+ o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV
2797
+ dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph
2798
+ X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I=
2799
+ -----END CERTIFICATE-----
2800
+
2801
+ D-TRUST Root Class 3 CA 2 EV 2009
2802
+ =================================
2803
+ -----BEGIN CERTIFICATE-----
2804
+ MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
2805
+ DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
2806
+ OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK
2807
+ DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw
2808
+ OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS
2809
+ egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh
2810
+ zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T
2811
+ 7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60
2812
+ sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35
2813
+ 11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv
2814
+ cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v
2815
+ ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El
2816
+ MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp
2817
+ b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh
2818
+ c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+
2819
+ PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05
2820
+ nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX
2821
+ ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA
2822
+ NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv
2823
+ w9y4AyHqnxbxLFS1
2824
+ -----END CERTIFICATE-----
2825
+
2826
+ PSCProcert
2827
+ ==========
2828
+ -----BEGIN CERTIFICATE-----
2829
+ MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1dG9yaWRhZCBk
2830
+ ZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9sYW5vMQswCQYDVQQGEwJWRTEQ
2831
+ MA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlzdHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lz
2832
+ dGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBl
2833
+ cmludGVuZGVuY2lhIGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUw
2834
+ IwYJKoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEwMFoXDTIw
2835
+ MTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHByb2NlcnQubmV0LnZlMQ8w
2836
+ DQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGExKjAoBgNVBAsTIVByb3ZlZWRvciBkZSBD
2837
+ ZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZp
2838
+ Y2FjaW9uIEVsZWN0cm9uaWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIw
2839
+ DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo97BVC
2840
+ wfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74BCXfgI8Qhd19L3uA
2841
+ 3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38GieU89RLAu9MLmV+QfI4tL3czkkoh
2842
+ RqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmO
2843
+ EO8GqQKJ/+MMbpfg353bIdD0PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG2
2844
+ 0qCZyFSTXai20b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH
2845
+ 0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/6mnbVSKVUyqU
2846
+ td+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1mv6JpIzi4mWCZDlZTOpx+FIyw
2847
+ Bm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvp
2848
+ r2uKGcfLFFb14dq12fy/czja+eevbqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/
2849
+ AgEBMDcGA1UdEgQwMC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAz
2850
+ Ni0wMB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFDgBStuyId
2851
+ xuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0b3JpZGFkIGRlIENlcnRp
2852
+ ZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xhbm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQH
2853
+ EwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5h
2854
+ Y2lvbmFsIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5k
2855
+ ZW5jaWEgZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkqhkiG
2856
+ 9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQDAgEGME0GA1UdEQRG
2857
+ MESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0wMDAwMDKgGwYFYIZeAgKgEgwQUklG
2858
+ LUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEagRKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52
2859
+ ZS9sY3IvQ0VSVElGSUNBRE8tUkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNy
2860
+ YWl6LnN1c2NlcnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v
2861
+ Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsGAQUFBwIBFh5o
2862
+ dHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcNAQELBQADggIBACtZ6yKZu4Sq
2863
+ T96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmN
2864
+ g7+mvTV+LFwxNG9s2/NkAZiqlCxB3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4q
2865
+ uxtxj7mkoP3YldmvWb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1
2866
+ n8GhHVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHmpHmJWhSn
2867
+ FFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXzsOfIt+FTvZLm8wyWuevo
2868
+ 5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bEqCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq
2869
+ 3TNWOByyrYDT13K9mmyZY+gAu0F2BbdbmRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5
2870
+ poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y
2871
+ eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km
2872
+ -----END CERTIFICATE-----
2873
+
2874
+ China Internet Network Information Center EV Certificates Root
2875
+ ==============================================================
2876
+ -----BEGIN CERTIFICATE-----
2877
+ MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV
2878
+ BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D
2879
+ aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg
2880
+ Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG
2881
+ A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM
2882
+ PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl
2883
+ cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y
2884
+ jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV
2885
+ 98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H
2886
+ klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23
2887
+ KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC
2888
+ 7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV
2889
+ HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD
2890
+ glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5
2891
+ 0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM
2892
+ 7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws
2893
+ ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0
2894
+ 5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8=
2895
+ -----END CERTIFICATE-----
2896
+
2897
+ Swisscom Root CA 2
2898
+ ==================
2899
+ -----BEGIN CERTIFICATE-----
2900
+ MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBkMQswCQYDVQQG
2901
+ EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy
2902
+ dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2
2903
+ MjUwNzM4MTRaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln
2904
+ aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIIC
2905
+ IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvErjw0DzpPM
2906
+ LgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r0rk0X2s682Q2zsKwzxNo
2907
+ ysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJ
2908
+ wDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVPACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpH
2909
+ Wrumnf2U5NGKpV+GY3aFy6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1a
2910
+ SgJA/MTAtukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL6yxS
2911
+ NLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0uPoTXGiTOmekl9Ab
2912
+ mbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrALacywlKinh/LTSlDcX3KwFnUey7QY
2913
+ Ypqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velhk6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3
2914
+ qPyZ7iVNTA6z00yPhOgpD/0QVAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw
2915
+ HQYDVR0hBBYwFDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O
2916
+ BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqhb97iEoHF8Twu
2917
+ MA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4RfbgZPnm3qKhyN2abGu2sEzsO
2918
+ v2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ
2919
+ 82YqZh6NM4OKb3xuqFp1mrjX2lhIREeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLz
2920
+ o9v/tdhZsnPdTSpxsrpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcs
2921
+ a0vvaGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciATwoCqISxx
2922
+ OQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99nBjx8Oto0QuFmtEYE3saW
2923
+ mA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5Wt6NlUe07qxS/TFED6F+KBZvuim6c779o
2924
+ +sjaC+NCydAXFJy3SuCvkychVSa1ZC+N8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TC
2925
+ rvJcwhbtkj6EPnNgiLx29CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX
2926
+ 5OfNeOI5wSsSnqaeG8XmDtkx2Q==
2927
+ -----END CERTIFICATE-----
2928
+
2929
+ Swisscom Root EV CA 2
2930
+ =====================
2931
+ -----BEGIN CERTIFICATE-----
2932
+ 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
2958
+ l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc=
2959
+ -----END CERTIFICATE-----
2960
+
2961
+ CA Disig Root R1
2962
+ ================
2963
+ -----BEGIN CERTIFICATE-----
2964
+ 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
2988
+ a7+h89n07eLw4+1knj0vllJPgFOL
2989
+ -----END CERTIFICATE-----
2990
+
2991
+ CA Disig Root R2
2992
+ ================
2993
+ -----BEGIN CERTIFICATE-----
2994
+ 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
3018
+ 7+ZtsH8tZ/3zbBt1RqPlShfppNcL
3019
+ -----END CERTIFICATE-----
3020
+
3021
+ ACCVRAIZ1
3022
+ =========
3023
+ -----BEGIN CERTIFICATE-----
3024
+ MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB
3025
+ SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1
3026
+ MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH
3027
+ UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC
3028
+ DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM
3029
+ jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0
3030
+ RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD
3031
+ aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ
3032
+ 0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG
3033
+ WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7
3034
+ 8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR
3035
+ 5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J
3036
+ 9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK
3037
+ Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw
3038
+ Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu
3039
+ Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2
3040
+ VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM
3041
+ Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA
3042
+ QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh
3043
+ AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA
3044
+ YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj
3045
+ AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA
3046
+ IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk
3047
+ aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0
3048
+ dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2
3049
+ MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI
3050
+ hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E
3051
+ R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN
3052
+ YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49
3053
+ nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ
3054
+ TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3
3055
+ sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h
3056
+ I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg
3057
+ Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd
3058
+ 3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p
3059
+ EfbRD0tVNEYqi4Y7
3060
+ -----END CERTIFICATE-----
3061
+
3062
+ TWCA Global Root CA
3063
+ ===================
3064
+ -----BEGIN CERTIFICATE-----
3065
+ MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT
3066
+ CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD
3067
+ QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK
3068
+ EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg
3069
+ Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C
3070
+ nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV
3071
+ r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR
3072
+ Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV
3073
+ tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W
3074
+ KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99
3075
+ sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p
3076
+ yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn
3077
+ kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI
3078
+ zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC
3079
+ AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g
3080
+ cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn
3081
+ LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M
3082
+ 8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg
3083
+ /eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg
3084
+ lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP
3085
+ A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m
3086
+ i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8
3087
+ EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3
3088
+ zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0=
3089
+ -----END CERTIFICATE-----
3090
+
3091
+ TeliaSonera Root CA v1
3092
+ ======================
3093
+ -----BEGIN CERTIFICATE-----
3094
+ MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE
3095
+ CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4
3096
+ MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW
3097
+ VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+
3098
+ 6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA
3099
+ 3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k
3100
+ B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn
3101
+ Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH
3102
+ oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3
3103
+ F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ
3104
+ oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7
3105
+ gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc
3106
+ TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB
3107
+ AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW
3108
+ DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm
3109
+ zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx
3110
+ 0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW
3111
+ pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV
3112
+ G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc
3113
+ c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT
3114
+ JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2
3115
+ qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6
3116
+ Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems
3117
+ WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=
3118
+ -----END CERTIFICATE-----
3119
+
3120
+ E-Tugra Certification Authority
3121
+ ===============================
3122
+ -----BEGIN CERTIFICATE-----
3123
+ MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w
3124
+ DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls
3125
+ ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN
3126
+ ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw
3127
+ NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx
3128
+ QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl
3129
+ cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD
3130
+ DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
3131
+ MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd
3132
+ hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K
3133
+ CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g
3134
+ ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ
3135
+ BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0
3136
+ E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz
3137
+ rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq
3138
+ jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn
3139
+ rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5
3140
+ dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB
3141
+ /wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG
3142
+ MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK
3143
+ kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO
3144
+ XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807
3145
+ VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo
3146
+ a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc
3147
+ dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV
3148
+ KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT
3149
+ Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0
3150
+ 8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G
3151
+ C7TbO6Orb1wdtn7os4I07QZcJA==
3152
+ -----END CERTIFICATE-----
3153
+
3154
+ T-TeleSec GlobalRoot Class 2
3155
+ ============================
3156
+ -----BEGIN CERTIFICATE-----
3157
+ MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM
3158
+ IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU
3159
+ cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx
3160
+ MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz
3161
+ dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD
3162
+ ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3
3163
+ DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ
3164
+ SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F
3165
+ vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970
3166
+ 2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV
3167
+ WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA
3168
+ MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy
3169
+ YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4
3170
+ r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf
3171
+ vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR
3172
+ 3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN
3173
+ 9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg==
3174
+ -----END CERTIFICATE-----
3175
+
3176
+ Atos TrustedRoot 2011
3177
+ =====================
3178
+ -----BEGIN CERTIFICATE-----
3179
+ MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU
3180
+ cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4
3181
+ MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG
3182
+ A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV
3183
+ hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr
3184
+ 54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+
3185
+ DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320
3186
+ HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR
3187
+ z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R
3188
+ l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ
3189
+ bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB
3190
+ CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h
3191
+ k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh
3192
+ TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9
3193
+ 61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G
3194
+ 3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed
3195
+ -----END CERTIFICATE-----
3196
+
3197
+ QuoVadis Root CA 1 G3
3198
+ =====================
3199
+ -----BEGIN CERTIFICATE-----
3200
+ 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
3224
+ hMJKzRwuJIczYOXD
3225
+ -----END CERTIFICATE-----
3226
+
3227
+ QuoVadis Root CA 2 G3
3228
+ =====================
3229
+ -----BEGIN CERTIFICATE-----
3230
+ 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
3254
+ O3jtZsSOeWmD3n+M
3255
+ -----END CERTIFICATE-----
3256
+
3257
+ QuoVadis Root CA 3 G3
3258
+ =====================
3259
+ -----BEGIN CERTIFICATE-----
3260
+ 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
3284
+ PpxxVJkES/1Y+Zj0
3285
+ -----END CERTIFICATE-----
3286
+
3287
+ DigiCert Assured ID Root G2
3288
+ ===========================
3289
+ -----BEGIN CERTIFICATE-----
3290
+ MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG
3291
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw
3292
+ IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw
3293
+ MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL
3294
+ ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw
3295
+ ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH
3296
+ 35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq
3297
+ bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw
3298
+ VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP
3299
+ YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn
3300
+ lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO
3301
+ w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv
3302
+ 0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz
3303
+ d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW
3304
+ hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M
3305
+ jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo
3306
+ IhNzbM8m9Yop5w==
3307
+ -----END CERTIFICATE-----
3308
+
3309
+ DigiCert Assured ID Root G3
3310
+ ===========================
3311
+ -----BEGIN CERTIFICATE-----
3312
+ MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV
3313
+ UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD
3314
+ VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1
3315
+ MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
3316
+ d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ
3317
+ BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb
3318
+ RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs
3319
+ KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF
3320
+ UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy
3321
+ YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy
3322
+ 1vUhZscv6pZjamVFkpUBtA==
3323
+ -----END CERTIFICATE-----
3324
+
3325
+ DigiCert Global Root G2
3326
+ =======================
3327
+ -----BEGIN CERTIFICATE-----
3328
+ MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG
3329
+ EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw
3330
+ HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx
3331
+ MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3
3332
+ dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq
3333
+ hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ
3334
+ kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO
3335
+ 3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV
3336
+ BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM
3337
+ UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB
3338
+ o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu
3339
+ 5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr
3340
+ F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U
3341
+ WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH
3342
+ QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/
3343
+ iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
3344
+ MrY=
3345
+ -----END CERTIFICATE-----
3346
+
3347
+ DigiCert Global Root G3
3348
+ =======================
3349
+ -----BEGIN CERTIFICATE-----
3350
+ MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV
3351
+ UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD
3352
+ VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw
3353
+ MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k
3354
+ aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C
3355
+ AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O
3356
+ YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP
3357
+ BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp
3358
+ Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y
3359
+ 3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34
3360
+ VOKa5Vt8sycX
3361
+ -----END CERTIFICATE-----
3362
+
3363
+ DigiCert Trusted Root G4
3364
+ ========================
3365
+ -----BEGIN CERTIFICATE-----
3366
+ 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
3391
+ 82Z+
3392
+ -----END CERTIFICATE-----
3393
+
3394
+ WoSign
3395
+ ======
3396
+ -----BEGIN CERTIFICATE-----
3397
+ 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
3422
+ -----END CERTIFICATE-----
3423
+
3424
+ WoSign China
3425
+ ============
3426
+ -----BEGIN CERTIFICATE-----
3427
+ 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
3451
+ kI26oQ==
3452
+ -----END CERTIFICATE-----
3453
+
3454
+ COMODO RSA Certification Authority
3455
+ ==================================
3456
+ -----BEGIN CERTIFICATE-----
3457
+ MIIF2DCCA8CgAwIBAgIQTKr5yttjb+Af907YWwOGnTANBgkqhkiG9w0BAQwFADCBhTELMAkGA1UE
3458
+ BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG
3459
+ A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlv
3460
+ biBBdXRob3JpdHkwHhcNMTAwMTE5MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMC
3461
+ R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE
3462
+ ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBSU0EgQ2VydGlmaWNhdGlvbiBB
3463
+ dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCR6FSS0gpWsawNJN3Fz0Rn
3464
+ dJkrN6N9I3AAcbxT38T6KhKPS38QVr2fcHK3YX/JSw8Xpz3jsARh7v8Rl8f0hj4K+j5c+ZPmNHrZ
3465
+ FGvnnLOFoIJ6dq9xkNfs/Q36nGz637CC9BR++b7Epi9Pf5l/tfxnQ3K9DADWietrLNPtj5gcFKt+
3466
+ 5eNu/Nio5JIk2kNrYrhV/erBvGy2i/MOjZrkm2xpmfh4SDBF1a3hDTxFYPwyllEnvGfDyi62a+pG
3467
+ x8cgoLEfZd5ICLqkTqnyg0Y3hOvozIFIQ2dOciqbXL1MGyiKXCJ7tKuY2e7gUYPDCUZObT6Z+pUX
3468
+ 2nwzV0E8jVHtC7ZcryxjGt9XyD+86V3Em69FmeKjWiS0uqlWPc9vqv9JWL7wqP/0uK3pN/u6uPQL
3469
+ OvnoQ0IeidiEyxPx2bvhiWC4jChWrBQdnArncevPDt09qZahSL0896+1DSJMwBGB7FY79tOi4lu3
3470
+ sgQiUpWAk2nojkxl8ZEDLXB0AuqLZxUpaVICu9ffUGpVRr+goyhhf3DQw6KqLCGqR84onAZFdr+C
3471
+ GCe01a60y1Dma/RMhnEw6abfFobg2P9A3fvQQoh/ozM6LlweQRGBY84YcWsr7KaKtzFcOmpH4MN5
3472
+ WdYgGq/yapiqcrxXStJLnbsQ/LBMQeXtHT1eKJ2czL+zUdqnR+WEUwIDAQABo0IwQDAdBgNVHQ4E
3473
+ FgQUu69+Aj36pvE8hI6t7jiY7NkyMtQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w
3474
+ DQYJKoZIhvcNAQEMBQADggIBAArx1UaEt65Ru2yyTUEUAJNMnMvlwFTPoCWOAvn9sKIN9SCYPBMt
3475
+ rFaisNZ+EZLpLrqeLppysb0ZRGxhNaKatBYSaVqM4dc+pBroLwP0rmEdEBsqpIt6xf4FpuHA1sj+
3476
+ nq6PK7o9mfjYcwlYRm6mnPTXJ9OV2jeDchzTc+CiR5kDOF3VSXkAKRzH7JsgHAckaVd4sjn8OoSg
3477
+ tZx8jb8uk2IntznaFxiuvTwJaP+EmzzV1gsD41eeFPfR60/IvYcjt7ZJQ3mFXLrrkguhxuhoqEwW
3478
+ sRqZCuhTLJK7oQkYdQxlqHvLI7cawiiFwxv/0Cti76R7CZGYZ4wUAc1oBmpjIXUDgIiKboHGhfKp
3479
+ pC3n9KUkEEeDys30jXlYsQab5xoq2Z0B15R97QNKyvDb6KkBPvVWmckejkk9u+UJueBPSZI9FoJA
3480
+ zMxZxuY67RIuaTxslbH9qh17f4a+Hg4yRvv7E491f0yLS0Zj/gA0QHDBw7mh3aZw4gSzQbzpgJHq
3481
+ ZJx64SIDqZxubw5lT2yHh17zbqD5daWbQOhTsiedSrnAdyGN/4fy3ryM7xfft0kL0fJuMAsaDk52
3482
+ 7RH89elWsn2/x20Kk4yl0MC2Hb46TpSi125sC8KKfPog88Tk5c0NqMuRkrF8hey1FGlmDoLnzc7I
3483
+ LaZRfyHBNVOFBkpdn627G190
3484
+ -----END CERTIFICATE-----
3485
+
3486
+ USERTrust RSA Certification Authority
3487
+ =====================================
3488
+ -----BEGIN CERTIFICATE-----
3489
+ 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
3515
+ Q+6IHdfGjjxDah2nGN59PRbxYvnKkKj9
3516
+ -----END CERTIFICATE-----
3517
+
3518
+ USERTrust ECC Certification Authority
3519
+ =====================================
3520
+ -----BEGIN CERTIFICATE-----
3521
+ MIICjzCCAhWgAwIBAgIQXIuZxVqUxdJxVt7NiYDMJjAKBggqhkjOPQQDAzCBiDELMAkGA1UEBhMC
3522
+ VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
3523
+ aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
3524
+ biBBdXRob3JpdHkwHhcNMTAwMjAxMDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBiDELMAkGA1UEBhMC
3525
+ VVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0plcnNleSBDaXR5MR4wHAYDVQQKExVU
3526
+ aGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNVBAMTJVVTRVJUcnVzdCBFQ0MgQ2VydGlmaWNhdGlv
3527
+ biBBdXRob3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQarFRaqfloI+d61SRvU8Za2EurxtW2
3528
+ 0eZzca7dnNYMYf3boIkDuAUU7FfO7l0/4iGzzvfUinngo4N+LZfQYcTxmdwlkWOrfzCjtHDix6Ez
3529
+ nPO/LlxTsV+zfTJ/ijTjeXmjQjBAMB0GA1UdDgQWBBQ64QmG1M8ZwpZ2dEl23OA1xmNjmjAOBgNV
3530
+ HQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjA2Z6EWCNzklwBB
3531
+ HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu
3532
+ 9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
3533
+ -----END CERTIFICATE-----
3534
+
3535
+ GlobalSign ECC Root CA - R4
3536
+ ===========================
3537
+ -----BEGIN CERTIFICATE-----
3538
+ MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb
3539
+ R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
3540
+ EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
3541
+ R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
3542
+ EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl
3543
+ OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P
3544
+ AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV
3545
+ MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF
3546
+ JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q=
3547
+ -----END CERTIFICATE-----
3548
+
3549
+ GlobalSign ECC Root CA - R5
3550
+ ===========================
3551
+ -----BEGIN CERTIFICATE-----
3552
+ MIICHjCCAaSgAwIBAgIRYFlJ4CYuu1X5CneKcflK2GwwCgYIKoZIzj0EAwMwUDEkMCIGA1UECxMb
3553
+ R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
3554
+ EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
3555
+ R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI1MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
3556
+ EwpHbG9iYWxTaWduMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAER0UOlvt9Xb/pOdEh+J8LttV7HpI6
3557
+ SFkc8GIxLcB6KP4ap1yztsyX50XUWPrRd21DosCHZTQKH3rd6zwzocWdTaRvQZU4f8kehOvRnkmS
3558
+ h5SHDDqFSmafnVmTTZdhBoZKo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAd
3559
+ BgNVHQ4EFgQUPeYpSJvqB8ohREom3m7e0oPQn1kwCgYIKoZIzj0EAwMDaAAwZQIxAOVpEslu28Yx
3560
+ uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7
3561
+ yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3
3562
+ -----END CERTIFICATE-----
3563
+
3564
+ Staat der Nederlanden Root CA - G3
3565
+ ==================================
3566
+ -----BEGIN CERTIFICATE-----
3567
+ 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
3592
+ -----END CERTIFICATE-----
3593
+
3594
+ Staat der Nederlanden EV Root CA
3595
+ ================================
3596
+ -----BEGIN CERTIFICATE-----
3597
+ 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
3621
+ eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg==
3622
+ -----END CERTIFICATE-----
3623
+
3624
+ IdenTrust Commercial Root CA 1
3625
+ ==============================
3626
+ -----BEGIN CERTIFICATE-----
3627
+ MIIFYDCCA0igAwIBAgIQCgFCgAAAAUUjyES1AAAAAjANBgkqhkiG9w0BAQsFADBKMQswCQYDVQQG
3628
+ EwJVUzESMBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBS
3629
+ b290IENBIDEwHhcNMTQwMTE2MTgxMjIzWhcNMzQwMTE2MTgxMjIzWjBKMQswCQYDVQQGEwJVUzES
3630
+ MBAGA1UEChMJSWRlblRydXN0MScwJQYDVQQDEx5JZGVuVHJ1c3QgQ29tbWVyY2lhbCBSb290IENB
3631
+ IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnUBneP5k91DNG8W9RYYKyqU+PZ4ld
3632
+ hNlT3Qwo2dfw/66VQ3KZ+bVdfIrBQuExUHTRgQ18zZshq0PirK1ehm7zCYofWjK9ouuU+ehcCuz/
3633
+ mNKvcbO0U59Oh++SvL3sTzIwiEsXXlfEU8L2ApeN2WIrvyQfYo3fw7gpS0l4PJNgiCL8mdo2yMKi
3634
+ 1CxUAGc1bnO/AljwpN3lsKImesrgNqUZFvX9t++uP0D1bVoE/c40yiTcdCMbXTMTEl3EASX2MN0C
3635
+ XZ/g1Ue9tOsbobtJSdifWwLziuQkkORiT0/Br4sOdBeo0XKIanoBScy0RnnGF7HamB4HWfp1IYVl
3636
+ 3ZBWzvurpWCdxJ35UrCLvYf5jysjCiN2O/cz4ckA82n5S6LgTrx+kzmEB/dEcH7+B1rlsazRGMzy
3637
+ NeVJSQjKVsk9+w8YfYs7wRPCTY/JTw436R+hDmrfYi7LNQZReSzIJTj0+kuniVyc0uMNOYZKdHzV
3638
+ WYfCP04MXFL0PfdSgvHqo6z9STQaKPNBiDoT7uje/5kdX7rL6B7yuVBgwDHTc+XvvqDtMwt0viAg
3639
+ xGds8AgDelWAf0ZOlqf0Hj7h9tgJ4TNkK2PXMl6f+cB7D3hvl7yTmvmcEpB4eoCHFddydJxVdHix
3640
+ uuFucAS6T6C6aMN7/zHwcz09lCqxC0EOoP5NiGVreTO01wIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC
3641
+ AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU7UQZwNPwBovupHu+QucmVMiONnYwDQYJKoZI
3642
+ hvcNAQELBQADggIBAA2ukDL2pkt8RHYZYR4nKM1eVO8lvOMIkPkp165oCOGUAFjvLi5+U1KMtlwH
3643
+ 6oi6mYtQlNeCgN9hCQCTrQ0U5s7B8jeUeLBfnLOic7iPBZM4zY0+sLj7wM+x8uwtLRvM7Kqas6pg
3644
+ ghstO8OEPVeKlh6cdbjTMM1gCIOQ045U8U1mwF10A0Cj7oV+wh93nAbowacYXVKV7cndJZ5t+qnt
3645
+ ozo00Fl72u1Q8zW/7esUTTHHYPTa8Yec4kjixsU3+wYQ+nVZZjFHKdp2mhzpgq7vmrlR94gjmmmV
3646
+ YjzlVYA211QC//G5Xc7UI2/YRYRKW2XviQzdFKcgyxilJbQN+QHwotL0AMh0jqEqSI5l2xPE4iUX
3647
+ feu+h1sXIFRRk0pTAwvsXcoz7WL9RccvW9xYoIA55vrX/hMUpu09lEpCdNTDd1lzzY9GvlU47/ro
3648
+ kTLql1gEIt44w8y8bckzOmoKaT+gyOpyj4xjhiO9bTyWnpXgSUyqorkqG5w2gXjtw+hG4iZZRHUe
3649
+ 2XWJUc0QhJ1hYMtd+ZciTY6Y5uN/9lu7rs3KSoFrXgvzUeF0K+l+J6fZmUlO+KWA2yUPHGNiiskz
3650
+ Z2s8EIPGrd6ozRaOjfAHN3Gf8qv8QfXBi+wAN10J5U6A7/qxXDgGpRtK4dw4LTzcqx+QGtVKnO7R
3651
+ cGzM7vRX+Bi6hG6H
3652
+ -----END CERTIFICATE-----
3653
+
3654
+ IdenTrust Public Sector Root CA 1
3655
+ =================================
3656
+ -----BEGIN CERTIFICATE-----
3657
+ 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
3681
+ 3Wl9af0AVqW3rLatt8o+Ae+c
3682
+ -----END CERTIFICATE-----
3683
+
3684
+ Entrust Root Certification Authority - G2
3685
+ =========================================
3686
+ -----BEGIN CERTIFICATE-----
3687
+ MIIEPjCCAyagAwIBAgIESlOMKDANBgkqhkiG9w0BAQsFADCBvjELMAkGA1UEBhMCVVMxFjAUBgNV
3688
+ BAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVy
3689
+ bXMxOTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ug
3690
+ b25seTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIw
3691
+ HhcNMDkwNzA3MTcyNTU0WhcNMzAxMjA3MTc1NTU0WjCBvjELMAkGA1UEBhMCVVMxFjAUBgNVBAoT
3692
+ DUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVnYWwtdGVybXMx
3693
+ OTA3BgNVBAsTMChjKSAyMDA5IEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXplZCB1c2Ugb25s
3694
+ eTEyMDAGA1UEAxMpRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzIwggEi
3695
+ MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6hLZy254Ma+KZ6TABp3bqMriVQRrJ2mFOWHLP
3696
+ /vaCeb9zYQYKpSfYs1/TRU4cctZOMvJyig/3gxnQaoCAAEUesMfnmr8SVycco2gvCoe9amsOXmXz
3697
+ HHfV1IWNcCG0szLni6LVhjkCsbjSR87kyUnEO6fe+1R9V77w6G7CebI6C1XiUJgWMhNcL3hWwcKU
3698
+ s/Ja5CeanyTXxuzQmyWC48zCxEXFjJd6BmsqEZ+pCm5IO2/b1BEZQvePB7/1U1+cPvQXLOZprE4y
3699
+ TGJ36rfo5bs0vBmLrpxR57d+tVOxMyLlbc9wPBr64ptntoP0jaWvYkxN4FisZDQSA/i2jZRjJKRx
3700
+ AgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqciZ6
3701
+ 0B7vfec7aVHUbI2fkBJmqzANBgkqhkiG9w0BAQsFAAOCAQEAeZ8dlsa2eT8ijYfThwMEYGprmi5Z
3702
+ iXMRrEPR9RP/jTkrwPK9T3CMqS/qF8QLVJ7UG5aYMzyorWKiAHarWWluBh1+xLlEjZivEtRh2woZ
3703
+ Rkfz6/djwUAFQKXSt/S1mja/qYh2iARVBCuch38aNzx+LaUa2NSJXsq9rD1s2G2v1fN2D807iDgi
3704
+ nWyTmsQ9v4IbZT+mD12q/OWyFcq1rca8PdCE6OoGcrBNOTJ4vz4RnAuknZoh8/CbCzB428Hch0P+
3705
+ vGOaysXCHMnHjf87ElgI5rY97HosTvuDls4MPGmHVHOkc8KT/1EQrBVUAdj8BbGJoX90g5pJ19xO
3706
+ e4pIb4tF9g==
3707
+ -----END CERTIFICATE-----
3708
+
3709
+ Entrust Root Certification Authority - EC1
3710
+ ==========================================
3711
+ -----BEGIN CERTIFICATE-----
3712
+ MIIC+TCCAoCgAwIBAgINAKaLeSkAAAAAUNCR+TAKBggqhkjOPQQDAzCBvzELMAkGA1UEBhMCVVMx
3713
+ FjAUBgNVBAoTDUVudHJ1c3QsIEluYy4xKDAmBgNVBAsTH1NlZSB3d3cuZW50cnVzdC5uZXQvbGVn
3714
+ YWwtdGVybXMxOTA3BgNVBAsTMChjKSAyMDEyIEVudHJ1c3QsIEluYy4gLSBmb3IgYXV0aG9yaXpl
3715
+ ZCB1c2Ugb25seTEzMDEGA1UEAxMqRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5
3716
+ IC0gRUMxMB4XDTEyMTIxODE1MjUzNloXDTM3MTIxODE1NTUzNlowgb8xCzAJBgNVBAYTAlVTMRYw
3717
+ FAYDVQQKEw1FbnRydXN0LCBJbmMuMSgwJgYDVQQLEx9TZWUgd3d3LmVudHJ1c3QubmV0L2xlZ2Fs
3718
+ LXRlcm1zMTkwNwYDVQQLEzAoYykgMjAxMiBFbnRydXN0LCBJbmMuIC0gZm9yIGF1dGhvcml6ZWQg
3719
+ dXNlIG9ubHkxMzAxBgNVBAMTKkVudHJ1c3QgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt
3720
+ IEVDMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABIQTydC6bUF74mzQ61VfZgIaJPRbiWlH47jCffHy
3721
+ AsWfoPZb1YsGGYZPUxBtByQnoaD41UcZYUx9ypMn6nQM72+WCf5j7HBdNq1nd67JnXxVRDqiY1Ef
3722
+ 9eNi1KlHBz7MIKNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE
3723
+ FLdj5xrdjekIplWDpOBqUEFlEUJJMAoGCCqGSM49BAMDA2cAMGQCMGF52OVCR98crlOZF7ZvHH3h
3724
+ vxGU0QOIdeSNiaSKd0bebWHvAvX7td/M/k7//qnmpwIwW5nXhTcGtXsI/esni0qU+eH6p44mCOh8
3725
+ kmhtc9hvJqwhAriZtyZBWyVgrtBIGu4G
3726
+ -----END CERTIFICATE-----
3727
+
3728
+ CFCA EV ROOT
3729
+ ============
3730
+ -----BEGIN CERTIFICATE-----
3731
+ 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
3756
+ -----END CERTIFICATE-----
3757
+
3758
+ TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H5
3759
+ =========================================================
3760
+ -----BEGIN CERTIFICATE-----
3761
+ MIIEJzCCAw+gAwIBAgIHAI4X/iQggTANBgkqhkiG9w0BAQsFADCBsTELMAkGA1UEBhMCVFIxDzAN
3762
+ BgNVBAcMBkFua2FyYTFNMEsGA1UECgxEVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp
3763
+ bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4xQjBABgNVBAMMOVTDnFJLVFJVU1Qg
3764
+ RWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSBINTAeFw0xMzA0MzAw
3765
+ ODA3MDFaFw0yMzA0MjgwODA3MDFaMIGxMQswCQYDVQQGEwJUUjEPMA0GA1UEBwwGQW5rYXJhMU0w
3766
+ SwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnE
3767
+ n2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBFbGVrdHJvbmlrIFNlcnRp
3768
+ ZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
3769
+ CgKCAQEApCUZ4WWe60ghUEoI5RHwWrom/4NZzkQqL/7hzmAD/I0Dpe3/a6i6zDQGn1k19uwsu537
3770
+ jVJp45wnEFPzpALFp/kRGml1bsMdi9GYjZOHp3GXDSHHmflS0yxjXVW86B8BSLlg/kJK9siArs1m
3771
+ ep5Fimh34khon6La8eHBEJ/rPCmBp+EyCNSgBbGM+42WAA4+Jd9ThiI7/PS98wl+d+yG6w8z5UNP
3772
+ 9FR1bSmZLmZaQ9/LXMrI5Tjxfjs1nQ/0xVqhzPMggCTTV+wVunUlm+hkS7M0hO8EuPbJbKoCPrZV
3773
+ 4jI3X/xml1/N1p7HIL9Nxqw/dV8c7TKcfGkAaZHjIxhT6QIDAQABo0IwQDAdBgNVHQ4EFgQUVpkH
3774
+ HtOsDGlktAxQR95DLL4gwPswDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZI
3775
+ hvcNAQELBQADggEBAJ5FdnsXSDLyOIspve6WSk6BGLFRRyDN0GSxDsnZAdkJzsiZ3GglE9Rc8qPo
3776
+ BP5yCccLqh0lVX6Wmle3usURehnmp349hQ71+S4pL+f5bFgWV1Al9j4uPqrtd3GqqpmWRgqujuwq
3777
+ URawXs3qZwQcWDD1YIq9pr1N5Za0/EKJAWv2cMhQOQwt1WbZyNKzMrcbGW3LM/nfpeYVhDfwwvJl
3778
+ lpKQd/Ct9JDpEXjXk4nAPQu6KfTomZ1yju2dL+6SfaHx/126M2CFYv4HAqGEVka+lgqaE9chTLd8
3779
+ B59OTj+RdPsnnRHM3eaxynFNExc5JsUpISuTKWqW+qtB4Uu2NQvAmxU=
3780
+ -----END CERTIFICATE-----
3781
+
3782
+ TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı H6
3783
+ =========================================================
3784
+ -----BEGIN CERTIFICATE-----
3785
+ MIIEJjCCAw6gAwIBAgIGfaHyZeyKMA0GCSqGSIb3DQEBCwUAMIGxMQswCQYDVQQGEwJUUjEPMA0G
3786
+ A1UEBwwGQW5rYXJhMU0wSwYDVQQKDERUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls
3787
+ acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjFCMEAGA1UEAww5VMOcUktUUlVTVCBF
3788
+ bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIEg2MB4XDTEzMTIxODA5
3789
+ MDQxMFoXDTIzMTIxNjA5MDQxMFowgbExCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmExTTBL
3790
+ BgNVBAoMRFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBCaWxpxZ9pbSBHw7x2ZW5sacSf
3791
+ aSBIaXptZXRsZXJpIEEuxZ4uMUIwQAYDVQQDDDlUw5xSS1RSVVNUIEVsZWt0cm9uaWsgU2VydGlm
3792
+ aWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLEgSDYwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
3793
+ AoIBAQCdsGjW6L0UlqMACprx9MfMkU1xeHe59yEmFXNRFpQJRwXiM/VomjX/3EsvMsew7eKC5W/a
3794
+ 2uqsxgbPJQ1BgfbBOCK9+bGlprMBvD9QFyv26WZV1DOzXPhDIHiTVRZwGTLmiddk671IUP320EED
3795
+ wnS3/faAz1vFq6TWlRKb55cTMgPp1KtDWxbtMyJkKbbSk60vbNg9tvYdDjTu0n2pVQ8g9P0pu5Fb
3796
+ HH3GQjhtQiht1AH7zYiXSX6484P4tZgvsycLSF5W506jM7NE1qXyGJTtHB6plVxiSvgNZ1GpryHV
3797
+ +DKdeboaX+UEVU0TRv/yz3THGmNtwx8XEsMeED5gCLMxAgMBAAGjQjBAMB0GA1UdDgQWBBTdVRcT
3798
+ 9qzoSCHK77Wv0QAy7Z6MtTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG
3799
+ 9w0BAQsFAAOCAQEAb1gNl0OqFlQ+v6nfkkU/hQu7VtMMUszIv3ZnXuaqs6fvuay0EBQNdH49ba3R
3800
+ fdCaqaXKGDsCQC4qnFAUi/5XfldcEQlLNkVS9z2sFP1E34uXI9TDwe7UU5X+LEr+DXCqu4svLcsy
3801
+ o4LyVN/Y8t3XSHLuSqMplsNEzm61kod2pLv0kmzOLBQJZo6NrRa1xxsJYTvjIKIDgI6tflEATseW
3802
+ hvtDmHd9KMeP2Cpu54Rvl0EpABZeTeIT6lnAY2c6RPuY/ATTMHKm9ocJV612ph1jmv3XZch4gyt1
3803
+ O6VbuA1df74jrlZVlFjvH4GMKrLN5ptjnhi85WsGtAuYSyher4hYyw==
3804
+ -----END CERTIFICATE-----
3805
+
3806
+ Certinomis - Root CA
3807
+ ====================
3808
+ -----BEGIN CERTIFICATE-----
3809
+ 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
3834
+ hkIGuUE=
3835
+ -----END CERTIFICATE-----
3836
+
3837
+ OISTE WISeKey Global Root GB CA
3838
+ ===============================
3839
+ -----BEGIN CERTIFICATE-----
3840
+ MIIDtTCCAp2gAwIBAgIQdrEgUnTwhYdGs/gjGvbCwDANBgkqhkiG9w0BAQsFADBtMQswCQYDVQQG
3841
+ EwJDSDEQMA4GA1UEChMHV0lTZUtleTEiMCAGA1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNl
3842
+ ZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBHbG9iYWwgUm9vdCBHQiBDQTAeFw0xNDEyMDExNTAw
3843
+ MzJaFw0zOTEyMDExNTEwMzFaMG0xCzAJBgNVBAYTAkNIMRAwDgYDVQQKEwdXSVNlS2V5MSIwIAYD
3844
+ VQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5IEds
3845
+ b2JhbCBSb290IEdCIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2Be3HEokKtaX
3846
+ scriHvt9OO+Y9bI5mE4nuBFde9IllIiCFSZqGzG7qFshISvYD06fWvGxWuR51jIjK+FTzJlFXHtP
3847
+ rby/h0oLS5daqPZI7H17Dc0hBt+eFf1Biki3IPShehtX1F1Q/7pn2COZH8g/497/b1t3sWtuuMlk
3848
+ 9+HKQUYOKXHQuSP8yYFfTvdv37+ErXNku7dCjmn21HYdfp2nuFeKUWdy19SouJVUQHMD9ur06/4o
3849
+ Qnc/nSMbsrY9gBQHTC5P99UKFg29ZkM3fiNDecNAhvVMKdqOmq0NpQSHiB6F4+lT1ZvIiwNjeOvg
3850
+ GUpuuy9rM2RYk61pv48b74JIxwIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB
3851
+ /zAdBgNVHQ4EFgQUNQ/INmNe4qPs+TtmFc5RUuORmj0wEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI
3852
+ hvcNAQELBQADggEBAEBM+4eymYGQfp3FsLAmzYh7KzKNbrghcViXfa43FK8+5/ea4n32cZiZBKpD
3853
+ dHij40lhPnOMTZTg+XHEthYOU3gf1qKHLwI5gSk8rxWYITD+KJAAjNHhy/peyP34EEY7onhCkRd0
3854
+ VQreUGdNZtGn//3ZwLWoo4rOZvUPQ82nK1d7Y0Zqqi5S2PTt4W2tKZB4SLrhI6qjiey1q5bAtEui
3855
+ HZeeevJuQHHfaPFlTc58Bd9TZaml8LGXBHAVRgOY1NK/VLSgWH1Sb9pWJmLU2NuJMW8c8CLC02Ic
3856
+ Nc1MaRVUGpCY3useX8p3x8uOPUNpnJpY0CQ73xtAln41rYHHTnG6iBM=
3857
+ -----END CERTIFICATE-----
3858
+
3859
+ Certification Authority of WoSign G2
3860
+ ====================================
3861
+ -----BEGIN CERTIFICATE-----
3862
+ MIIDfDCCAmSgAwIBAgIQayXaioidfLwPBbOxemFFRDANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQG
3863
+ EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxLTArBgNVBAMTJENlcnRpZmljYXRpb24g
3864
+ QXV0aG9yaXR5IG9mIFdvU2lnbiBHMjAeFw0xNDExMDgwMDU4NThaFw00NDExMDgwMDU4NThaMFgx
3865
+ CzAJBgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRlZDEtMCsGA1UEAxMkQ2VydGlm
3866
+ aWNhdGlvbiBBdXRob3JpdHkgb2YgV29TaWduIEcyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
3867
+ CgKCAQEAvsXEoCKASU+/2YcRxlPhuw+9YH+v9oIOH9ywjj2X4FA8jzrvZjtFB5sg+OPXJYY1kBai
3868
+ XW8wGQiHC38Gsp1ij96vkqVg1CuAmlI/9ZqD6TRay9nVYlzmDuDfBpgOgHzKtB0TiGsOqCR3A9Du
3869
+ W/PKaZE1OVbFbeP3PU9ekzgkyhjpJMuSA93MHD0JcOQg5PGurLtzaaNjOg9FD6FKmsLRY6zLEPg9
3870
+ 5k4ot+vElbGs/V6r+kHLXZ1L3PR8du9nfwB6jdKgGlxNIuG12t12s9R23164i5jIFFTMaxeSt+BK
3871
+ v0mUYQs4kI9dJGwlezt52eJ+na2fmKEG/HgUYFf47oB3sQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMC
3872
+ AQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU+mCp62XF3RYUCE4MD42b4Pdkr2cwDQYJKoZI
3873
+ hvcNAQELBQADggEBAFfDejaCnI2Y4qtAqkePx6db7XznPWZaOzG73/MWM5H8fHulwqZm46qwtyeY
3874
+ P0nXYGdnPzZPSsvxFPpahygc7Y9BMsaV+X3avXtbwrAh449G3CE4Q3RM+zD4F3LBMvzIkRfEzFg3
3875
+ TgvMWvchNSiDbGAtROtSjFA9tWwS1/oJu2yySrHFieT801LYYRf+epSEj3m2M1m6D8QL4nCgS3gu
3876
+ +sif/a+RZQp4OBXllxcU3fngLDT4ONCEIgDAFFEYKwLcMFrw6AF8NTojrwjkr6qOKEJJLvD1mTS+
3877
+ 7Q9LGOHSJDy7XUe3IfKN0QqZjuNuPq1w4I+5ysxugTH2e5x6eeRncRg=
3878
+ -----END CERTIFICATE-----
3879
+
3880
+ CA WoSign ECC Root
3881
+ ==================
3882
+ -----BEGIN CERTIFICATE-----
3883
+ MIICCTCCAY+gAwIBAgIQaEpYcIBr8I8C+vbe6LCQkDAKBggqhkjOPQQDAzBGMQswCQYDVQQGEwJD
3884
+ TjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNVBAMTEkNBIFdvU2lnbiBFQ0MgUm9v
3885
+ dDAeFw0xNDExMDgwMDU4NThaFw00NDExMDgwMDU4NThaMEYxCzAJBgNVBAYTAkNOMRowGAYDVQQK
3886
+ ExFXb1NpZ24gQ0EgTGltaXRlZDEbMBkGA1UEAxMSQ0EgV29TaWduIEVDQyBSb290MHYwEAYHKoZI
3887
+ zj0CAQYFK4EEACIDYgAE4f2OuEMkq5Z7hcK6C62N4DrjJLnSsb6IOsq/Srj57ywvr1FQPEd1bPiU
3888
+ t5v8KB7FVMxjnRZLU8HnIKvNrCXSf4/CwVqCXjCLelTOA7WRf6qU0NGKSMyCBSah1VES1ns2o0Iw
3889
+ QDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUqv3VWqP2h4syhf3R
3890
+ MluARZPzA7gwCgYIKoZIzj0EAwMDaAAwZQIxAOSkhLCB1T2wdKyUpOgOPQB0TKGXa/kNUTyh2Tv0
3891
+ Daupn75OcsqF1NnstTJFGG+rrQIwfcf3aWMvoeGY7xMQ0Xk/0f7qO3/eVvSQsRUR2LIiFdAvwyYu
3892
+ a/GRspBl9JrmkO5K
3893
+ -----END CERTIFICATE-----
3894
+
3895
+ ================================================================
3896
+ C: US
3897
+ O: GTE Corporation
3898
+ OU: GTE CyberTrust Solutions, Inc.
3899
+ CN: GTE CyberTrust Global Root
3900
+ --
3901
+ Not Before: 1998-08-13
3902
+ Not After: 2018-08-13
3903
+ Signature: md5WithRSAEncryption
3904
+ Key: RSA:1024
3905
+ -----BEGIN CERTIFICATE-----
3906
+ MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD
3907
+ VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv
3908
+ bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv
3909
+ b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV
3910
+ UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU
3911
+ cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds
3912
+ b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH
3913
+ iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS
3914
+ r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4
3915
+ 04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r
3916
+ GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9
3917
+ 3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P
3918
+ lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/
3919
+ -----END CERTIFICATE-----
lib/stripe/data/test.png ADDED
Binary file
lib/stripe/init.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ // Stripe singleton
4
+ require(dirname(__FILE__) . '/lib/Stripe.php');
5
+
6
+ // Utilities
7
+ require(dirname(__FILE__) . '/lib/Util/AutoPagingIterator.php');
8
+ require(dirname(__FILE__) . '/lib/Util/RequestOptions.php');
9
+ require(dirname(__FILE__) . '/lib/Util/Set.php');
10
+ require(dirname(__FILE__) . '/lib/Util/Util.php');
11
+
12
+ // HttpClient
13
+ require(dirname(__FILE__) . '/lib/HttpClient/ClientInterface.php');
14
+ require(dirname(__FILE__) . '/lib/HttpClient/CurlClient.php');
15
+
16
+ // Errors
17
+ require(dirname(__FILE__) . '/lib/Error/Base.php');
18
+ require(dirname(__FILE__) . '/lib/Error/Api.php');
19
+ require(dirname(__FILE__) . '/lib/Error/ApiConnection.php');
20
+ require(dirname(__FILE__) . '/lib/Error/Authentication.php');
21
+ require(dirname(__FILE__) . '/lib/Error/Card.php');
22
+ require(dirname(__FILE__) . '/lib/Error/InvalidRequest.php');
23
+ require(dirname(__FILE__) . '/lib/Error/RateLimit.php');
24
+
25
+ // Plumbing
26
+ require(dirname(__FILE__) . '/lib/ApiResponse.php');
27
+ require(dirname(__FILE__) . '/lib/JsonSerializable.php');
28
+ require(dirname(__FILE__) . '/lib/StripeObject.php');
29
+ require(dirname(__FILE__) . '/lib/ApiRequestor.php');
30
+ require(dirname(__FILE__) . '/lib/ApiResource.php');
31
+ require(dirname(__FILE__) . '/lib/SingletonApiResource.php');
32
+ require(dirname(__FILE__) . '/lib/AttachedObject.php');
33
+ require(dirname(__FILE__) . '/lib/ExternalAccount.php');
34
+
35
+ // Stripe API Resources
36
+ require(dirname(__FILE__) . '/lib/Account.php');
37
+ require(dirname(__FILE__) . '/lib/AlipayAccount.php');
38
+ require(dirname(__FILE__) . '/lib/ApplicationFee.php');
39
+ require(dirname(__FILE__) . '/lib/ApplicationFeeRefund.php');
40
+ require(dirname(__FILE__) . '/lib/Balance.php');
41
+ require(dirname(__FILE__) . '/lib/BalanceTransaction.php');
42
+ require(dirname(__FILE__) . '/lib/BankAccount.php');
43
+ require(dirname(__FILE__) . '/lib/BitcoinReceiver.php');
44
+ require(dirname(__FILE__) . '/lib/BitcoinTransaction.php');
45
+ require(dirname(__FILE__) . '/lib/Card.php');
46
+ require(dirname(__FILE__) . '/lib/Charge.php');
47
+ require(dirname(__FILE__) . '/lib/Collection.php');
48
+ require(dirname(__FILE__) . '/lib/CountrySpec.php');
49
+ require(dirname(__FILE__) . '/lib/Coupon.php');
50
+ require(dirname(__FILE__) . '/lib/Customer.php');
51
+ require(dirname(__FILE__) . '/lib/Dispute.php');
52
+ require(dirname(__FILE__) . '/lib/Event.php');
53
+ require(dirname(__FILE__) . '/lib/FileUpload.php');
54
+ require(dirname(__FILE__) . '/lib/Invoice.php');
55
+ require(dirname(__FILE__) . '/lib/InvoiceItem.php');
56
+ require(dirname(__FILE__) . '/lib/Order.php');
57
+ require(dirname(__FILE__) . '/lib/OrderReturn.php');
58
+ require(dirname(__FILE__) . '/lib/Plan.php');
59
+ require(dirname(__FILE__) . '/lib/Product.php');
60
+ require(dirname(__FILE__) . '/lib/Recipient.php');
61
+ require(dirname(__FILE__) . '/lib/Refund.php');
62
+ require(dirname(__FILE__) . '/lib/SKU.php');
63
+ require(dirname(__FILE__) . '/lib/Subscription.php');
64
+ require(dirname(__FILE__) . '/lib/ThreeDSecure.php');
65
+ require(dirname(__FILE__) . '/lib/Token.php');
66
+ require(dirname(__FILE__) . '/lib/Transfer.php');
67
+ require(dirname(__FILE__) . '/lib/TransferReversal.php');
lib/stripe/lib/Account.php ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Account
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property mixed $business_logo
11
+ * @property string $business_name
12
+ * @property mixed $business_url
13
+ * @property bool $charges_enabled
14
+ * @property string $country
15
+ * @property bool $debit_negative_balances
16
+ * @property mixed $decline_charge_on
17
+ * @property string $default_currency
18
+ * @property bool $details_submitted
19
+ * @property string $display_name
20
+ * @property string $email
21
+ * @property mixed $external_accounts
22
+ * @property mixed $legal_entity
23
+ * @property bool $managed
24
+ * @property mixed $product_description
25
+ * @property mixed $statement_descriptor
26
+ * @property mixed $support_email
27
+ * @property mixed $support_phone
28
+ * @property string $timezone
29
+ * @property mixed $tos_acceptance
30
+ * @property mixed $transfer_schedule
31
+ * @property bool $transfers_enabled
32
+ * @property mixed $verification
33
+ * @property mixed $keys
34
+ *
35
+ * @package Stripe
36
+ */
37
+ class Account extends ApiResource
38
+ {
39
+ public function instanceUrl()
40
+ {
41
+ if ($this['id'] === null) {
42
+ return '/v1/account';
43
+ } else {
44
+ return parent::instanceUrl();
45
+ }
46
+ }
47
+
48
+ /**
49
+ * @param string|null $id
50
+ * @param array|string|null $opts
51
+ *
52
+ * @return Account
53
+ */
54
+ public static function retrieve($id = null, $opts = null)
55
+ {
56
+ if (!$opts && is_string($id) && substr($id, 0, 3) === 'sk_') {
57
+ $opts = $id;
58
+ $id = null;
59
+ }
60
+ return self::_retrieve($id, $opts);
61
+ }
62
+
63
+ /**
64
+ * @param array|null $params
65
+ * @param array|string|null $opts
66
+ *
67
+ * @return Account
68
+ */
69
+ public static function create($params = null, $opts = null)
70
+ {
71
+ return self::_create($params, $opts);
72
+ }
73
+
74
+ /**
75
+ * @param string $id The ID of the account to update.
76
+ * @param array|null $params
77
+ * @param array|string|null $options
78
+ *
79
+ * @return Account The updated account.
80
+ */
81
+ public static function update($id, $params = null, $options = null)
82
+ {
83
+ return self::_update($id, $params, $options);
84
+ }
85
+
86
+ /**
87
+ * @param array|string|null $opts
88
+ *
89
+ * @return Account
90
+ */
91
+ public function save($opts = null)
92
+ {
93
+ return $this->_save($opts);
94
+ }
95
+
96
+ /**
97
+ * @param array|null $params
98
+ * @param array|string|null $opts
99
+ *
100
+ * @return Account The deleted account.
101
+ */
102
+ public function delete($params = null, $opts = null)
103
+ {
104
+ return $this->_delete($params, $opts);
105
+ }
106
+
107
+ /**
108
+ * @param array|null $params
109
+ * @param array|string|null $opts
110
+ *
111
+ * @return Account The rejected account.
112
+ */
113
+ public function reject($params = null, $opts = null)
114
+ {
115
+ $url = $this->instanceUrl() . '/reject';
116
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
117
+ $this->refreshFrom($response, $opts);
118
+ return $this;
119
+ }
120
+
121
+ /**
122
+ * @param array|null $params
123
+ * @param array|string|null $opts
124
+ *
125
+ * @return Collection of Accounts
126
+ */
127
+ public static function all($params = null, $opts = null)
128
+ {
129
+ return self::_all($params, $opts);
130
+ }
131
+ }
lib/stripe/lib/AlipayAccount.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class AlipayAccount
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class AlipayAccount extends ExternalAccount
11
+ {
12
+
13
+ }
lib/stripe/lib/ApiRequestor.php ADDED
@@ -0,0 +1,244 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class ApiRequestor
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class ApiRequestor
11
+ {
12
+ private $_apiKey;
13
+
14
+ private $_apiBase;
15
+
16
+ private static $_httpClient;
17
+
18
+ public function __construct($apiKey = null, $apiBase = null)
19
+ {
20
+ $this->_apiKey = $apiKey;
21
+ if (!$apiBase) {
22
+ $apiBase = Stripe::$apiBase;
23
+ }
24
+ $this->_apiBase = $apiBase;
25
+ }
26
+
27
+ private static function _encodeObjects($d)
28
+ {
29
+ if ($d instanceof ApiResource) {
30
+ return Util\Util::utf8($d->id);
31
+ } elseif ($d === true) {
32
+ return 'true';
33
+ } elseif ($d === false) {
34
+ return 'false';
35
+ } elseif (is_array($d)) {
36
+ $res = array();
37
+ foreach ($d as $k => $v) {
38
+ $res[$k] = self::_encodeObjects($v);
39
+ }
40
+ return $res;
41
+ } else {
42
+ return Util\Util::utf8($d);
43
+ }
44
+ }
45
+
46
+ /**
47
+ * @param string $method
48
+ * @param string $url
49
+ * @param array|null $params
50
+ * @param array|null $headers
51
+ *
52
+ * @return array An array whose first element is an API response and second
53
+ * element is the API key used to make the request.
54
+ */
55
+ public function request($method, $url, $params = null, $headers = null)
56
+ {
57
+ if (!$params) {
58
+ $params = array();
59
+ }
60
+ if (!$headers) {
61
+ $headers = array();
62
+ }
63
+ list($rbody, $rcode, $rheaders, $myApiKey) =
64
+ $this->_requestRaw($method, $url, $params, $headers);
65
+ $json = $this->_interpretResponse($rbody, $rcode, $rheaders);
66
+ $resp = new ApiResponse($rbody, $rcode, $rheaders, $json);
67
+ return array($resp, $myApiKey);
68
+ }
69
+
70
+ /**
71
+ * @param string $rbody A JSON string.
72
+ * @param int $rcode
73
+ * @param array $rheaders
74
+ * @param array $resp
75
+ *
76
+ * @throws Error\InvalidRequest if the error is caused by the user.
77
+ * @throws Error\Authentication if the error is caused by a lack of
78
+ * permissions.
79
+ * @throws Error\Card if the error is the error code is 402 (payment
80
+ * required)
81
+ * @throws Error\RateLimit if the error is caused by too many requests
82
+ * hitting the API.
83
+ * @throws Error\Api otherwise.
84
+ */
85
+ public function handleApiError($rbody, $rcode, $rheaders, $resp)
86
+ {
87
+ if (!is_array($resp) || !isset($resp['error'])) {
88
+ $msg = "Invalid response object from API: $rbody "
89
+ . "(HTTP response code was $rcode)";
90
+ throw new Error\Api($msg, $rcode, $rbody, $resp, $rheaders);
91
+ }
92
+
93
+ $error = $resp['error'];
94
+ $msg = isset($error['message']) ? $error['message'] : null;
95
+ $param = isset($error['param']) ? $error['param'] : null;
96
+ $code = isset($error['code']) ? $error['code'] : null;
97
+
98
+ switch ($rcode) {
99
+ case 400:
100
+ // 'rate_limit' code is deprecated, but left here for backwards compatibility
101
+ // for API versions earlier than 2015-09-08
102
+ if ($code == 'rate_limit') {
103
+ throw new Error\RateLimit($msg, $param, $rcode, $rbody, $resp, $rheaders);
104
+ }
105
+
106
+ // intentional fall-through
107
+ case 404:
108
+ throw new Error\InvalidRequest($msg, $param, $rcode, $rbody, $resp, $rheaders);
109
+ case 401:
110
+ throw new Error\Authentication($msg, $rcode, $rbody, $resp, $rheaders);
111
+ case 402:
112
+ throw new Error\Card($msg, $param, $code, $rcode, $rbody, $resp, $rheaders);
113
+ case 429:
114
+ throw new Error\RateLimit($msg, $param, $rcode, $rbody, $resp, $rheaders);
115
+ default:
116
+ throw new Error\Api($msg, $rcode, $rbody, $resp, $rheaders);
117
+ }
118
+ }
119
+
120
+ private function _requestRaw($method, $url, $params, $headers)
121
+ {
122
+ $myApiKey = $this->_apiKey;
123
+ if (!$myApiKey) {
124
+ $myApiKey = Stripe::$apiKey;
125
+ }
126
+
127
+ if (!$myApiKey) {
128
+ $msg = 'No API key provided. (HINT: set your API key using '
129
+ . '"Stripe::setApiKey(<API-KEY>)". You can generate API keys from '
130
+ . 'the Stripe web interface. See https://stripe.com/api for '
131
+ . 'details, or email support@stripe.com if you have any questions.';
132
+ throw new Error\Authentication($msg);
133
+ }
134
+
135
+ $absUrl = $this->_apiBase.$url;
136
+ $params = self::_encodeObjects($params);
137
+ $langVersion = phpversion();
138
+ $uname = php_uname();
139
+ $ua = array(
140
+ 'bindings_version' => Stripe::VERSION,
141
+ 'lang' => 'php',
142
+ 'lang_version' => $langVersion,
143
+ 'publisher' => 'stripe',
144
+ 'uname' => $uname,
145
+ );
146
+ $defaultHeaders = array(
147
+ 'X-Stripe-Client-User-Agent' => json_encode($ua),
148
+ 'User-Agent' => 'Stripe/v1 PhpBindings/' . Stripe::VERSION,
149
+ 'Authorization' => 'Bearer ' . $myApiKey,
150
+ );
151
+ if (Stripe::$apiVersion) {
152
+ $defaultHeaders['Stripe-Version'] = Stripe::$apiVersion;
153
+ }
154
+
155
+ if (Stripe::$accountId) {
156
+ $defaultHeaders['Stripe-Account'] = Stripe::$accountId;
157
+ }
158
+
159
+ $hasFile = false;
160
+ $hasCurlFile = class_exists('\CURLFile', false);
161
+ foreach ($params as $k => $v) {
162
+ if (is_resource($v)) {
163
+ $hasFile = true;
164
+ $params[$k] = self::_processResourceParam($v, $hasCurlFile);
165
+ } elseif ($hasCurlFile && $v instanceof \CURLFile) {
166
+ $hasFile = true;
167
+ }
168
+ }
169
+
170
+ if ($hasFile) {
171
+ $defaultHeaders['Content-Type'] = 'multipart/form-data';
172
+ } else {
173
+ $defaultHeaders['Content-Type'] = 'application/x-www-form-urlencoded';
174
+ }
175
+
176
+ $combinedHeaders = array_merge($defaultHeaders, $headers);
177
+ $rawHeaders = array();
178
+
179
+ foreach ($combinedHeaders as $header => $value) {
180
+ $rawHeaders[] = $header . ': ' . $value;
181
+ }
182
+
183
+ list($rbody, $rcode, $rheaders) = $this->httpClient()->request(
184
+ $method,
185
+ $absUrl,
186
+ $rawHeaders,
187
+ $params,
188
+ $hasFile
189
+ );
190
+ return array($rbody, $rcode, $rheaders, $myApiKey);
191
+ }
192
+
193
+ private function _processResourceParam($resource, $hasCurlFile)
194
+ {
195
+ if (get_resource_type($resource) !== 'stream') {
196
+ throw new Error\Api(
197
+ 'Attempted to upload a resource that is not a stream'
198
+ );
199
+ }
200
+
201
+ $metaData = stream_get_meta_data($resource);
202
+ if ($metaData['wrapper_type'] !== 'plainfile') {
203
+ throw new Error\Api(
204
+ 'Only plainfile resource streams are supported'
205
+ );
206
+ }
207
+
208
+ if ($hasCurlFile) {
209
+ // We don't have the filename or mimetype, but the API doesn't care
210
+ return new \CURLFile($metaData['uri']);
211
+ } else {
212
+ return '@'.$metaData['uri'];
213
+ }
214
+ }
215
+
216
+ private function _interpretResponse($rbody, $rcode, $rheaders)
217
+ {
218
+ try {
219
+ $resp = json_decode($rbody, true);
220
+ } catch (Exception $e) {
221
+ $msg = "Invalid response body from API: $rbody "
222
+ . "(HTTP response code was $rcode)";
223
+ throw new Error\Api($msg, $rcode, $rbody);
224
+ }
225
+
226
+ if ($rcode < 200 || $rcode >= 300) {
227
+ $this->handleApiError($rbody, $rcode, $rheaders, $resp);
228
+ }
229
+ return $resp;
230
+ }
231
+
232
+ public static function setHttpClient($client)
233
+ {
234
+ self::$_httpClient = $client;
235
+ }
236
+
237
+ private function httpClient()
238
+ {
239
+ if (!self::$_httpClient) {
240
+ self::$_httpClient = HttpClient\CurlClient::instance();
241
+ }
242
+ return self::$_httpClient;
243
+ }
244
+ }
lib/stripe/lib/ApiResource.php ADDED
@@ -0,0 +1,205 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class ApiResource
7
+ *
8
+ * @package Stripe
9
+ */
10
+ abstract class ApiResource extends StripeObject
11
+ {
12
+ private static $HEADERS_TO_PERSIST = array('Stripe-Account' => true, 'Stripe-Version' => true);
13
+
14
+ public static function baseUrl()
15
+ {
16
+ return Stripe::$apiBase;
17
+ }
18
+
19
+ /**
20
+ * @return ApiResource The refreshed resource.
21
+ */
22
+ public function refresh()
23
+ {
24
+ $requestor = new ApiRequestor($this->_opts->apiKey, static::baseUrl());
25
+ $url = $this->instanceUrl();
26
+
27
+ list($response, $this->_opts->apiKey) = $requestor->request(
28
+ 'get',
29
+ $url,
30
+ $this->_retrieveOptions,
31
+ $this->_opts->headers
32
+ );
33
+ $this->setLastResponse($response);
34
+ $this->refreshFrom($response->json, $this->_opts);
35
+ return $this;
36
+ }
37
+
38
+ /**
39
+ * @return string The name of the class, with namespacing and underscores
40
+ * stripped.
41
+ */
42
+ public static function className()
43
+ {
44
+ $class = get_called_class();
45
+ // Useful for namespaces: Foo\Charge
46
+ if ($postfixNamespaces = strrchr($class, '\\')) {
47
+ $class = substr($postfixNamespaces, 1);
48
+ }
49
+ // Useful for underscored 'namespaces': Foo_Charge
50
+ if ($postfixFakeNamespaces = strrchr($class, '')) {
51
+ $class = $postfixFakeNamespaces;
52
+ }
53
+ if (substr($class, 0, strlen('Stripe')) == 'Stripe') {
54
+ $class = substr($class, strlen('Stripe'));
55
+ }
56
+ $class = str_replace('_', '', $class);
57
+ $name = urlencode($class);
58
+ $name = strtolower($name);
59
+ return $name;
60
+ }
61
+
62
+ /**
63
+ * @return string The endpoint URL for the given class.
64
+ */
65
+ public static function classUrl()
66
+ {
67
+ $base = static::className();
68
+ return "/v1/${base}s";
69
+ }
70
+
71
+ /**
72
+ * @return string The instance endpoint URL for the given class.
73
+ */
74
+ public static function resourceUrl($id)
75
+ {
76
+ if ($id === null) {
77
+ $class = get_called_class();
78
+ $message = "Could not determine which URL to request: "
79
+ . "$class instance has invalid ID: $id";
80
+ throw new Error\InvalidRequest($message, null);
81
+ }
82
+ $id = Util\Util::utf8($id);
83
+ $base = static::classUrl();
84
+ $extn = urlencode($id);
85
+ return "$base/$extn";
86
+ }
87
+
88
+ /**
89
+ * @return string The full API URL for this API resource.
90
+ */
91
+ public function instanceUrl()
92
+ {
93
+ return static::resourceUrl($this['id']);
94
+ }
95
+
96
+ private static function _validateParams($params = null)
97
+ {
98
+ if ($params && !is_array($params)) {
99
+ $message = "You must pass an array as the first argument to Stripe API "
100
+ . "method calls. (HINT: an example call to create a charge "
101
+ . "would be: \"Stripe\\Charge::create(array('amount' => 100, "
102
+ . "'currency' => 'usd', 'card' => array('number' => "
103
+ . "4242424242424242, 'exp_month' => 5, 'exp_year' => 2015)))\")";
104
+ throw new Error\Api($message);
105
+ }
106
+ }
107
+
108
+ protected function _request($method, $url, $params = array(), $options = null)
109
+ {
110
+ $opts = $this->_opts->merge($options);
111
+ list($resp, $options) = static::_staticRequest($method, $url, $params, $opts);
112
+ $this->setLastResponse($resp);
113
+ return array($resp->json, $options);
114
+ }
115
+
116
+ protected static function _staticRequest($method, $url, $params, $options)
117
+ {
118
+ $opts = Util\RequestOptions::parse($options);
119
+ $requestor = new ApiRequestor($opts->apiKey, static::baseUrl());
120
+ list($response, $opts->apiKey) = $requestor->request($method, $url, $params, $opts->headers);
121
+ foreach ($opts->headers as $k => $v) {
122
+ if (!array_key_exists($k, self::$HEADERS_TO_PERSIST)) {
123
+ unset($opts->headers[$k]);
124
+ }
125
+ }
126
+ return array($response, $opts);
127
+ }
128
+
129
+ protected static function _retrieve($id, $options = null)
130
+ {
131
+ $opts = Util\RequestOptions::parse($options);
132
+ $instance = new static($id, $opts);
133
+ $instance->refresh();
134
+ return $instance;
135
+ }
136
+
137
+ protected static function _all($params = null, $options = null)
138
+ {
139
+ self::_validateParams($params);
140
+ $url = static::classUrl();
141
+
142
+ list($response, $opts) = static::_staticRequest('get', $url, $params, $options);
143
+ $obj = Util\Util::convertToStripeObject($response->json, $opts);
144
+ if (!is_a($obj, 'Stripe\\Collection')) {
145
+ $class = get_class($obj);
146
+ $message = "Expected type \"Stripe\\Collection\", got \"$class\" instead";
147
+ throw new Error\Api($message);
148
+ }
149
+ $obj->setLastResponse($response);
150
+ $obj->setRequestParams($params);
151
+ return $obj;
152
+ }
153
+
154
+ protected static function _create($params = null, $options = null)
155
+ {
156
+ self::_validateParams($params);
157
+ $base = static::baseUrl();
158
+ $url = static::classUrl();
159
+
160
+ list($response, $opts) = static::_staticRequest('post', $url, $params, $options);
161
+ $obj = Util\Util::convertToStripeObject($response->json, $opts);
162
+ $obj->setLastResponse($response);
163
+ return $obj;
164
+ }
165
+
166
+ /**
167
+ * @param string $id The ID of the API resource to update.
168
+ * @param array|null $params
169
+ * @param array|string|null $opts
170
+ *
171
+ * @return ApiResource the updated API resource
172
+ */
173
+ protected static function _update($id, $params = null, $options = null)
174
+ {
175
+ self::_validateParams($params);
176
+ $base = static::baseUrl();
177
+ $url = static::resourceUrl($id);
178
+
179
+ list($response, $opts) = static::_staticRequest('post', $url, $params, $options);
180
+ $obj = Util\Util::convertToStripeObject($response->json, $opts);
181
+ $obj->setLastResponse($response);
182
+ return $obj;
183
+ }
184
+
185
+ protected function _save($options = null)
186
+ {
187
+ $params = $this->serializeParameters();
188
+ if (count($params) > 0) {
189
+ $url = $this->instanceUrl();
190
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
191
+ $this->refreshFrom($response, $opts);
192
+ }
193
+ return $this;
194
+ }
195
+
196
+ protected function _delete($params = null, $options = null)
197
+ {
198
+ self::_validateParams($params);
199
+
200
+ $url = $this->instanceUrl();
201
+ list($response, $opts) = $this->_request('delete', $url, $params, $options);
202
+ $this->refreshFrom($response, $opts);
203
+ return $this;
204
+ }
205
+ }
lib/stripe/lib/ApiResponse.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class ApiResponse
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class ApiResponse
11
+ {
12
+ public $headers;
13
+ public $body;
14
+ public $json;
15
+ public $code;
16
+
17
+ /**
18
+ * @param string $body
19
+ * @param integer $code
20
+ * @param array|null $headers
21
+ * @param array|null $json
22
+ *
23
+ * @return obj An APIResponse
24
+ */
25
+ public function __construct($body, $code, $headers, $json)
26
+ {
27
+ $this->body = $body;
28
+ $this->code = $code;
29
+ $this->headers = $headers;
30
+ $this->json = $json;
31
+ }
32
+ }
lib/stripe/lib/ApplicationFee.php ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class ApplicationFee
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class ApplicationFee extends ApiResource
11
+ {
12
+ /**
13
+ * This is a special case because the application fee endpoint has an
14
+ * underscore in it. The parent `className` function strips underscores.
15
+ *
16
+ * @return string The name of the class.
17
+ */
18
+ public static function className()
19
+ {
20
+ return 'application_fee';
21
+ }
22
+
23
+ /**
24
+ * @param string $id The ID of the application fee to retrieve.
25
+ * @param array|string|null $opts
26
+ *
27
+ * @return ApplicationFee
28
+ */
29
+ public static function retrieve($id, $opts = null)
30
+ {
31
+ return self::_retrieve($id, $opts);
32
+ }
33
+
34
+ /**
35
+ * @param string $id The ID of the application fee to update.
36
+ * @param array|null $params
37
+ * @param array|string|null $options
38
+ *
39
+ * @return ApplicationFee The updated application fee.
40
+ */
41
+ public static function update($id, $params = null, $options = null)
42
+ {
43
+ return self::_update($id, $params, $options);
44
+ }
45
+
46
+ /**
47
+ * @param array|null $params
48
+ * @param array|string|null $opts
49
+ *
50
+ * @return Collection of ApplicationFees
51
+ */
52
+ public static function all($params = null, $opts = null)
53
+ {
54
+ return self::_all($params, $opts);
55
+ }
56
+
57
+ /**
58
+ * @param array|null $params
59
+ * @param array|string|null $opts
60
+ *
61
+ * @return ApplicationFee The refunded application fee.
62
+ */
63
+ public function refund($params = null, $opts = null)
64
+ {
65
+ $this->refunds->create($params, $opts);
66
+ $this->refresh();
67
+ return $this;
68
+ }
69
+ }
lib/stripe/lib/ApplicationFeeRefund.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class ApplicationFeeRefund
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class ApplicationFeeRefund extends ApiResource
11
+ {
12
+ /**
13
+ * @return string The API URL for this Stripe refund.
14
+ */
15
+ public function instanceUrl()
16
+ {
17
+ $id = $this['id'];
18
+ $fee = $this['fee'];
19
+ if (!$id) {
20
+ throw new Error\InvalidRequest(
21
+ "Could not determine which URL to request: " .
22
+ "class instance has invalid ID: $id",
23
+ null
24
+ );
25
+ }
26
+ $id = Util\Util::utf8($id);
27
+ $fee = Util\Util::utf8($fee);
28
+
29
+ $base = ApplicationFee::classUrl();
30
+ $feeExtn = urlencode($fee);
31
+ $extn = urlencode($id);
32
+ return "$base/$feeExtn/refunds/$extn";
33
+ }
34
+
35
+ /**
36
+ * @param array|string|null $opts
37
+ *
38
+ * @return ApplicationFeeRefund The saved refund.
39
+ */
40
+ public function save($opts = null)
41
+ {
42
+ return $this->_save($opts);
43
+ }
44
+ }
lib/stripe/lib/AttachedObject.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class AttachedObject
7
+ *
8
+ * e.g. metadata on Stripe objects.
9
+ *
10
+ * @package Stripe
11
+ */
12
+ class AttachedObject extends StripeObject
13
+ {
14
+ /**
15
+ * Updates this object.
16
+ *
17
+ * @param array $properties A mapping of properties to update on this object.
18
+ */
19
+ public function replaceWith($properties)
20
+ {
21
+ $removed = array_diff(array_keys($this->_values), array_keys($properties));
22
+ // Don't unset, but rather set to null so we send up '' for deletion.
23
+ foreach ($removed as $k) {
24
+ $this->$k = null;
25
+ }
26
+
27
+ foreach ($properties as $k => $v) {
28
+ $this->$k = $v;
29
+ }
30
+ }
31
+ }
lib/stripe/lib/Balance.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Balance
7
+ *
8
+ * @param string $object
9
+ * @param mixed $available
10
+ * @param bool $livedmode
11
+ * @param mixed $pending
12
+ *
13
+ * @package Stripe
14
+ */
15
+ class Balance extends SingletonApiResource
16
+ {
17
+ /**
18
+ * @param array|string|null $opts
19
+ *
20
+ * @return Balance
21
+ */
22
+ public static function retrieve($opts = null)
23
+ {
24
+ return self::_singletonRetrieve($opts);
25
+ }
26
+ }
lib/stripe/lib/BalanceTransaction.php ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class BalanceTransaction
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property int $available_on
12
+ * @property int $created
13
+ * @property string $currency
14
+ * @property string $description
15
+ * @property int $fee
16
+ * @property mixed $fee_details
17
+ * @property int $net
18
+ * @property string $source
19
+ * @property mixed $sourced_transfers
20
+ * @property string $status
21
+ * @property string $type
22
+ *
23
+ * @package Stripe
24
+ */
25
+ class BalanceTransaction extends ApiResource
26
+ {
27
+ /**
28
+ * @return string The class URL for this resource. It needs to be special
29
+ * cased because it doesn't fit into the standard resource pattern.
30
+ */
31
+ public static function classUrl()
32
+ {
33
+ return "/v1/balance/history";
34
+ }
35
+
36
+ /**
37
+ * @param string $id The ID of the balance transaction to retrieve.
38
+ * @param array|string|null $opts
39
+ *
40
+ * @return BalanceTransaction
41
+ */
42
+ public static function retrieve($id, $opts = null)
43
+ {
44
+ return self::_retrieve($id, $opts);
45
+ }
46
+
47
+ /**
48
+ * @param array|null $params
49
+ * @param array|string|null $opts
50
+ *
51
+ * @return Collection of BalanceTransactions
52
+ */
53
+ public static function all($params = null, $opts = null)
54
+ {
55
+ return self::_all($params, $opts);
56
+ }
57
+ }
lib/stripe/lib/BankAccount.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class BankAccount
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class BankAccount extends ExternalAccount
11
+ {
12
+ /**
13
+ * @param array|null $params
14
+ * @param array|string|null $options
15
+ *
16
+ * @return BankAccount The verified bank account.
17
+ */
18
+ public function verify($params = null, $options = null)
19
+ {
20
+ $url = $this->instanceUrl() . '/verify';
21
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
22
+ $this->refreshFrom($response, $opts);
23
+ return $this;
24
+ }
25
+ }
lib/stripe/lib/BitcoinReceiver.php ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class BitcoinReceiver
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class BitcoinReceiver extends ExternalAccount
11
+ {
12
+ /**
13
+ * @return string The class URL for this resource. It needs to be special
14
+ * cased because it doesn't fit into the standard resource pattern.
15
+ */
16
+ public static function classUrl()
17
+ {
18
+ return "/v1/bitcoin/receivers";
19
+ }
20
+
21
+ /**
22
+ * @return string The instance URL for this resource. It needs to be special
23
+ * cased because it doesn't fit into the standard resource pattern.
24
+ */
25
+ public function instanceUrl()
26
+ {
27
+ $result = parent::instanceUrl();
28
+ if ($result) {
29
+ return $result;
30
+ } else {
31
+ $id = $this['id'];
32
+ $id = Util\Util::utf8($id);
33
+ $extn = urlencode($id);
34
+ $base = BitcoinReceiver::classUrl();
35
+ return "$base/$extn";
36
+ }
37
+ }
38
+
39
+ /**
40
+ * @param string $id The ID of the Bitcoin Receiver to retrieve.
41
+ * @param array|string|null $opts
42
+ *
43
+ * @return BitcoinReceiver
44
+ */
45
+ public static function retrieve($id, $opts = null)
46
+ {
47
+ return self::_retrieve($id, $opts);
48
+ }
49
+
50
+ /**
51
+ * @param array|null $params
52
+ * @param array|string|null $opts
53
+ *
54
+ * @return Collection of BitcoinReceivers
55
+ */
56
+ public static function all($params = null, $opts = null)
57
+ {
58
+ return self::_all($params, $opts);
59
+ }
60
+
61
+ /**
62
+ * @param array|null $params
63
+ * @param array|string|null $opts
64
+ *
65
+ * @return BitcoinReceiver The created Bitcoin Receiver item.
66
+ */
67
+ public static function create($params = null, $opts = null)
68
+ {
69
+ return self::_create($params, $opts);
70
+ }
71
+
72
+ /**
73
+ * @param array|null $params
74
+ * @param array|string|null $options
75
+ *
76
+ * @return BitcoinReceiver The refunded Bitcoin Receiver item.
77
+ */
78
+ public function refund($params = null, $options = null)
79
+ {
80
+ $url = $this->instanceUrl() . '/refund';
81
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
82
+ $this->refreshFrom($response, $opts);
83
+ return $this;
84
+ }
85
+ }
lib/stripe/lib/BitcoinTransaction.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class BitcoinTransaction
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class BitcoinTransaction extends ApiResource
11
+ {
12
+
13
+ }
lib/stripe/lib/Card.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Card
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class Card extends ExternalAccount
11
+ {
12
+
13
+ }
lib/stripe/lib/Charge.php ADDED
@@ -0,0 +1,184 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Charge
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property int $amount_refunded
12
+ * @property mixed $application_fee
13
+ * @property string $balance_transaction
14
+ * @property bool $captured
15
+ * @property int $created
16
+ * @property string $currency
17
+ * @property string $customer
18
+ * @property mixed $description
19
+ * @property mixed $destination
20
+ * @property mixed $dispute
21
+ * @property mixed $failure_code
22
+ * @property mixed $failure_message
23
+ * @property mixed $fraud_details
24
+ * @property mixed $invoice
25
+ * @property bool $livemode
26
+ * @property mixed $metadata
27
+ * @property mixed $order
28
+ * @property bool $paid
29
+ * @property mixed $receipt_email
30
+ * @property mixed $receipt_number
31
+ * @property bool $refunded
32
+ * @property mixed $refunds
33
+ * @property mixed $shipping
34
+ * @property mixed $source
35
+ * @property mixed $source_transfer
36
+ * @property mixed $statement_descriptor
37
+ * @property string $status
38
+ *
39
+ * @package Stripe
40
+ */
41
+ class Charge extends ApiResource
42
+ {
43
+ /**
44
+ * @param string $id The ID of the charge to retrieve.
45
+ * @param array|string|null $options
46
+ *
47
+ * @return Charge
48
+ */
49
+ public static function retrieve($id, $options = null)
50
+ {
51
+ return self::_retrieve($id, $options);
52
+ }
53
+
54
+ /**
55
+ * @param array|null $params
56
+ * @param array|string|null $options
57
+ *
58
+ * @return Collection of Charges
59
+ */
60
+ public static function all($params = null, $options = null)
61
+ {
62
+ return self::_all($params, $options);
63
+ }
64
+
65
+ /**
66
+ * @param array|null $params
67
+ * @param array|string|null $options
68
+ *
69
+ * @return Charge The created charge.
70
+ */
71
+ public static function create($params = null, $options = null)
72
+ {
73
+ return self::_create($params, $options);
74
+ }
75
+
76
+ /**
77
+ * @param string $id The ID of the charge to update.
78
+ * @param array|null $params
79
+ * @param array|string|null $options
80
+ *
81
+ * @return Charge The updated charge.
82
+ */
83
+ public static function update($id, $params = null, $options = null)
84
+ {
85
+ return self::_update($id, $params, $options);
86
+ }
87
+
88
+ /**
89
+ * @param array|string|null $options
90
+ *
91
+ * @return Charge The saved charge.
92
+ */
93
+ public function save($options = null)
94
+ {
95
+ return $this->_save($options);
96
+ }
97
+
98
+ /**
99
+ * @param array|null $params
100
+ * @param array|string|null $options
101
+ *
102
+ * @return Charge The refunded charge.
103
+ */
104
+ public function refund($params = null, $options = null)
105
+ {
106
+ $url = $this->instanceUrl() . '/refund';
107
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
108
+ $this->refreshFrom($response, $opts);
109
+ return $this;
110
+ }
111
+
112
+ /**
113
+ * @param array|null $params
114
+ * @param array|string|null $options
115
+ *
116
+ * @return Charge The captured charge.
117
+ */
118
+ public function capture($params = null, $options = null)
119
+ {
120
+ $url = $this->instanceUrl() . '/capture';
121
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
122
+ $this->refreshFrom($response, $opts);
123
+ return $this;
124
+ }
125
+
126
+ /**
127
+ * @param array|null $params
128
+ * @param array|string|null $options
129
+ *
130
+ * @deprecated Use the `save` method on the Dispute object
131
+ *
132
+ * @return array The updated dispute.
133
+ */
134
+ public function updateDispute($params = null, $options = null)
135
+ {
136
+ $url = $this->instanceUrl() . '/dispute';
137
+ list($response, $opts) = $this->_request('post', $url, $params, $options);
138
+ $this->refreshFrom(array('dispute' => $response), $opts, true);
139
+ return $this->dispute;
140
+ }
141
+
142
+ /**
143
+ * @param array|string|null $options
144
+ *
145
+ * @deprecated Use the `close` method on the Dispute object
146
+ *
147
+ * @return Charge The updated charge.
148
+ */
149
+ public function closeDispute($options = null)
150
+ {
151
+ $url = $this->instanceUrl() . '/dispute/close';
152
+ list($response, $opts) = $this->_request('post', $url, null, $options);
153
+ $this->refreshFrom($response, $opts);
154
+ return $this;
155
+ }
156
+
157
+ /**
158
+ * @param array|string|null $opts
159
+ *
160
+ * @return Charge The updated charge.
161
+ */
162
+ public function markAsFraudulent($opts = null)
163
+ {
164
+ $params = array('fraud_details' => array('user_report' => 'fraudulent'));
165
+ $url = $this->instanceUrl();
166
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
167
+ $this->refreshFrom($response, $opts);
168
+ return $this;
169
+ }
170
+
171
+ /**
172
+ * @param array|string|null $opts
173
+ *
174
+ * @return Charge The updated charge.
175
+ */
176
+ public function markAsSafe($opts = null)
177
+ {
178
+ $params = array('fraud_details' => array('user_report' => 'safe'));
179
+ $url = $this->instanceUrl();
180
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
181
+ $this->refreshFrom($response, $opts);
182
+ return $this;
183
+ }
184
+ }
lib/stripe/lib/Collection.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Collection
7
+ *
8
+ * @param string $object
9
+ * @param string $url
10
+ * @param bool $has_more
11
+ * @param mixed $data
12
+ *
13
+ * @package Stripe
14
+ */
15
+ class Collection extends ApiResource
16
+ {
17
+ protected $_requestParams = array();
18
+
19
+ public function setRequestParams($params)
20
+ {
21
+ $this->_requestParams = $params;
22
+ }
23
+
24
+ public function all($params = null, $opts = null)
25
+ {
26
+ list($url, $params) = $this->extractPathAndUpdateParams($params);
27
+
28
+ list($response, $opts) = $this->_request('get', $url, $params, $opts);
29
+ $this->_requestParams = $params;
30
+ return Util\Util::convertToStripeObject($response, $opts);
31
+ }
32
+
33
+ public function create($params = null, $opts = null)
34
+ {
35
+ list($url, $params) = $this->extractPathAndUpdateParams($params);
36
+
37
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
38
+ $this->_requestParams = $params;
39
+ return Util\Util::convertToStripeObject($response, $opts);
40
+ }
41
+
42
+ public function retrieve($id, $params = null, $opts = null)
43
+ {
44
+ list($url, $params) = $this->extractPathAndUpdateParams($params);
45
+
46
+ $id = Util\Util::utf8($id);
47
+ $extn = urlencode($id);
48
+ list($response, $opts) = $this->_request(
49
+ 'get',
50
+ "$url/$extn",
51
+ $params,
52
+ $opts
53
+ );
54
+ $this->_requestParams = $params;
55
+ return Util\Util::convertToStripeObject($response, $opts);
56
+ }
57
+
58
+ /**
59
+ * @return AutoPagingIterator An iterator that can be used to iterate
60
+ * across all objects across all pages. As page boundaries are
61
+ * encountered, the next page will be fetched automatically for
62
+ * continued iteration.
63
+ */
64
+ public function autoPagingIterator()
65
+ {
66
+ return new Util\AutoPagingIterator($this, $this->_requestParams);
67
+ }
68
+
69
+ private function extractPathAndUpdateParams($params)
70
+ {
71
+ $url = parse_url($this->url);
72
+ if (!isset($url['path'])) {
73
+ throw new Error\Api("Could not parse list url into parts: $url");
74
+ }
75
+
76
+ if (isset($url['query'])) {
77
+ // If the URL contains a query param, parse it out into $params so they
78
+ // don't interact weirdly with each other.
79
+ $query = array();
80
+ parse_str($url['query'], $query);
81
+ // PHP 5.2 doesn't support the ?: operator :(
82
+ $params = array_merge($params ? $params : array(), $query);
83
+ }
84
+
85
+ return array($url['path'], $params);
86
+ }
87
+ }
lib/stripe/lib/CountrySpec.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class CountrySpec
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class CountrySpec extends ApiResource
11
+ {
12
+ /**
13
+ * This is a special case because the country specs endpoint has an
14
+ * underscore in it. The parent `className` function strips underscores.
15
+ *
16
+ * @return string The name of the class.
17
+ */
18
+ public static function className()
19
+ {
20
+ return 'country_spec';
21
+ }
22
+
23
+ /**
24
+ * @param string $country The ISO country code of the country we retrieve the CountrySpec for.
25
+ * @param array|string|null $opts
26
+ *
27
+ * @return CountrySpec
28
+ */
29
+ public static function retrieve($country, $opts = null)
30
+ {
31
+ return self::_retrieve($country, $opts);
32
+ }
33
+
34
+ /**
35
+ * @param array|null $params
36
+ * @param array|string|null $opts
37
+ *
38
+ * @return Collection of CountrySpecs
39
+ */
40
+ public static function all($params = null, $opts = null)
41
+ {
42
+ return self::_all($params, $opts);
43
+ }
44
+ }
lib/stripe/lib/Coupon.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Coupon
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class Coupon extends ApiResource
11
+ {
12
+ /**
13
+ * @param string $id The ID of the coupon to retrieve.
14
+ * @param array|string|null $opts
15
+ *
16
+ * @return Coupon
17
+ */
18
+ public static function retrieve($id, $opts = null)
19
+ {
20
+ return self::_retrieve($id, $opts);
21
+ }
22
+
23
+ /**
24
+ * @param array|null $params
25
+ * @param array|string|null $opts
26
+ *
27
+ * @return Coupon The created coupon.
28
+ */
29
+ public static function create($params = null, $opts = null)
30
+ {
31
+ return self::_create($params, $opts);
32
+ }
33
+
34
+ /**
35
+ * @param string $id The ID of the coupon to update.
36
+ * @param array|null $params
37
+ * @param array|string|null $options
38
+ *
39
+ * @return Coupon The updated coupon.
40
+ */
41
+ public static function update($id, $params = null, $options = null)
42
+ {
43
+ return self::_update($id, $params, $options);
44
+ }
45
+
46
+ /**
47
+ * @param array|null $params
48
+ * @param array|string|null $opts
49
+ *
50
+ * @return Coupon The deleted coupon.
51
+ */
52
+ public function delete($params = null, $opts = null)
53
+ {
54
+ return $this->_delete($params, $opts);
55
+ }
56
+
57
+ /**
58
+ * @param array|string|null $opts
59
+ *
60
+ * @return Coupon The saved coupon.
61
+ */
62
+ public function save($opts = null)
63
+ {
64
+ return $this->_save($opts);
65
+ }
66
+
67
+ /**
68
+ * @param array|null $params
69
+ * @param array|string|null $opts
70
+ *
71
+ * @return Collection of Coupons
72
+ */
73
+ public static function all($params = null, $opts = null)
74
+ {
75
+ return self::_all($params, $opts);
76
+ }
77
+ }
lib/stripe/lib/Customer.php ADDED
@@ -0,0 +1,190 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Customer
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $account_balance
11
+ * @property string $business_vat_id
12
+ * @property string $created
13
+ * @property string $currency
14
+ * @property string $default_source
15
+ * @property bool $delinquent
16
+ * @property string $description
17
+ * @property mixed $discount
18
+ * @property string $email
19
+ * @property bool $livemode
20
+ * @property array $metadata
21
+ * @property mixed $shipping
22
+ * @property Collection $sources
23
+ * @property Collection $subscriptions
24
+ *
25
+ * @package Stripe
26
+ */
27
+ class Customer extends ApiResource
28
+ {
29
+ /**
30
+ * @param string $id The ID of the customer to retrieve.
31
+ * @param array|string|null $opts
32
+ *
33
+ * @return Customer
34
+ */
35
+ public static function retrieve($id, $opts = null)
36
+ {
37
+ return self::_retrieve($id, $opts);
38
+ }
39
+
40
+ /**
41
+ * @param array|null $params
42
+ * @param array|string|null $opts
43
+ *
44
+ * @return Collection of Customers
45
+ */
46
+ public static function all($params = null, $opts = null)
47
+ {
48
+ return self::_all($params, $opts);
49
+ }
50
+
51
+ /**
52
+ * @param array|null $params
53
+ * @param array|string|null $opts
54
+ *
55
+ * @return Customer The created customer.
56
+ */
57
+ public static function create($params = null, $opts = null)
58
+ {
59
+ return self::_create($params, $opts);
60
+ }
61
+
62
+ /**
63
+ * @param string $id The ID of the customer to update.
64
+ * @param array|null $params
65
+ * @param array|string|null $options
66
+ *
67
+ * @return Customer The updated customer.
68
+ */
69
+ public static function update($id, $params = null, $options = null)
70
+ {
71
+ return self::_update($id, $params, $options);
72
+ }
73
+
74
+ /**
75
+ * @param array|string|null $opts
76
+ *
77
+ * @return Customer The saved customer.
78
+ */
79
+ public function save($opts = null)
80
+ {
81
+ return $this->_save($opts);
82
+ }
83
+
84
+ /**
85
+ * @param array|null $params
86
+ * @param array|string|null $opts
87
+ *
88
+ * @return Customer The deleted customer.
89
+ */
90
+ public function delete($params = null, $opts = null)
91
+ {
92
+ return $this->_delete($params, $opts);
93
+ }
94
+
95
+ /**
96
+ * @param array|null $params
97
+ *
98
+ * @return InvoiceItem The resulting invoice item.
99
+ */
100
+ public function addInvoiceItem($params = null)
101
+ {
102
+ if (!$params) {
103
+ $params = array();
104
+ }
105
+ $params['customer'] = $this->id;
106
+ $ii = InvoiceItem::create($params, $this->_opts);
107
+ return $ii;
108
+ }
109
+
110
+ /**
111
+ * @param array|null $params
112
+ *
113
+ * @return array An array of the customer's Invoices.
114
+ */
115
+ public function invoices($params = null)
116
+ {
117
+ if (!$params) {
118
+ $params = array();
119
+ }
120
+ $params['customer'] = $this->id;
121
+ $invoices = Invoice::all($params, $this->_opts);
122
+ return $invoices;
123
+ }
124
+
125
+ /**
126
+ * @param array|null $params
127
+ *
128
+ * @return array An array of the customer's InvoiceItems.
129
+ */
130
+ public function invoiceItems($params = null)
131
+ {
132
+ if (!$params) {
133
+ $params = array();
134
+ }
135
+ $params['customer'] = $this->id;
136
+ $iis = InvoiceItem::all($params, $this->_opts);
137
+ return $iis;
138
+ }
139
+
140
+ /**
141
+ * @param array|null $params
142
+ *
143
+ * @return array An array of the customer's Charges.
144
+ */
145
+ public function charges($params = null)
146
+ {
147
+ if (!$params) {
148
+ $params = array();
149
+ }
150
+ $params['customer'] = $this->id;
151
+ $charges = Charge::all($params, $this->_opts);
152
+ return $charges;
153
+ }
154
+
155
+ /**
156
+ * @param array|null $params
157
+ *
158
+ * @return Subscription The updated subscription.
159
+ */
160
+ public function updateSubscription($params = null)
161
+ {
162
+ $url = $this->instanceUrl() . '/subscription';
163
+ list($response, $opts) = $this->_request('post', $url, $params);
164
+ $this->refreshFrom(array('subscription' => $response), $opts, true);
165
+ return $this->subscription;
166
+ }
167
+
168
+ /**
169
+ * @param array|null $params
170
+ *
171
+ * @return Subscription The cancelled subscription.
172
+ */
173
+ public function cancelSubscription($params = null)
174
+ {
175
+ $url = $this->instanceUrl() . '/subscription';
176
+ list($response, $opts) = $this->_request('delete', $url, $params);
177
+ $this->refreshFrom(array('subscription' => $response), $opts, true);
178
+ return $this->subscription;
179
+ }
180
+
181
+ /**
182
+ * @return Customer The updated customer.
183
+ */
184
+ public function deleteDiscount()
185
+ {
186
+ $url = $this->instanceUrl() . '/discount';
187
+ list($response, $opts) = $this->_request('delete', $url);
188
+ $this->refreshFrom(array('discount' => null), $opts, true);
189
+ }
190
+ }
lib/stripe/lib/Dispute.php ADDED
@@ -0,0 +1,83 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Dispute
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property mixed $balance_transactions
12
+ * @property string $charge
13
+ * @property int $created
14
+ * @property string $currency
15
+ * @property mixed $evidence
16
+ * @property mixed $evidence_details
17
+ * @property bool $is_charge_refundable
18
+ * @property bool $livemode
19
+ * @property mixed $metadata
20
+ * @property string $reason
21
+ * @property string $status
22
+ *
23
+ * @package Stripe
24
+ */
25
+ class Dispute extends ApiResource
26
+ {
27
+ /**
28
+ * @param string $id The ID of the dispute to retrieve.
29
+ * @param array|string|null $options
30
+ *
31
+ * @return Dispute
32
+ */
33
+ public static function retrieve($id, $options = null)
34
+ {
35
+ return self::_retrieve($id, $options);
36
+ }
37
+
38
+ /**
39
+ * @param array|null $params
40
+ * @param array|string|null $options
41
+ *
42
+ * @return array An array of Disputes.
43
+ */
44
+ public static function all($params = null, $options = null)
45
+ {
46
+ return self::_all($params, $options);
47
+ }
48
+
49
+ /**
50
+ * @param string $id The ID of the dispute to update.
51
+ * @param array|null $params
52
+ * @param array|string|null $options
53
+ *
54
+ * @return Dispute The updated dispute.
55
+ */
56
+ public static function update($id, $params = null, $options = null)
57
+ {
58
+ return self::_update($id, $params, $options);
59
+ }
60
+
61
+ /**
62
+ * @param array|string|null $options
63
+ *
64
+ * @return Dispute The saved charge.
65
+ */
66
+ public function save($options = null)
67
+ {
68
+ return $this->_save($options);
69
+ }
70
+
71
+ /**
72
+ * @param array|string|null $options
73
+ *
74
+ * @return Dispute The closed dispute.
75
+ */
76
+ public function close($options = null)
77
+ {
78
+ $url = $this->instanceUrl() . '/close';
79
+ list($response, $opts) = $this->_request('post', $url, null, $options);
80
+ $this->refreshFrom($response, $opts);
81
+ return $this;
82
+ }
83
+ }
lib/stripe/lib/Error/Api.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error;
4
+
5
+ class Api extends Base
6
+ {
7
+ }
lib/stripe/lib/Error/ApiConnection.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error;
4
+
5
+ class ApiConnection extends Base
6
+ {
7
+ }
lib/stripe/lib/Error/Authentication.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error;
4
+
5
+ class Authentication extends Base
6
+ {
7
+ }
lib/stripe/lib/Error/Base.php ADDED
@@ -0,0 +1,60 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error;
4
+
5
+ use Exception;
6
+
7
+ abstract class Base extends Exception
8
+ {
9
+ public function __construct(
10
+ $message,
11
+ $httpStatus = null,
12
+ $httpBody = null,
13
+ $jsonBody = null,
14
+ $httpHeaders = null
15
+ ) {
16
+ parent::__construct($message);
17
+ $this->httpStatus = $httpStatus;
18
+ $this->httpBody = $httpBody;
19
+ $this->jsonBody = $jsonBody;
20
+ $this->httpHeaders = $httpHeaders;
21
+ $this->requestId = null;
22
+
23
+ if ($httpHeaders && isset($httpHeaders['Request-Id'])) {
24
+ $this->requestId = $httpHeaders['Request-Id'];
25
+ }
26
+ }
27
+
28
+ public function getHttpStatus()
29
+ {
30
+ return $this->httpStatus;
31
+ }
32
+
33
+ public function getHttpBody()
34
+ {
35
+ return $this->httpBody;
36
+ }
37
+
38
+ public function getJsonBody()
39
+ {
40
+ return $this->jsonBody;
41
+ }
42
+
43
+ public function getHttpHeaders()
44
+ {
45
+ return $this->httpHeaders;
46
+ }
47
+
48
+ public function getRequestId()
49
+ {
50
+ return $this->requestId;
51
+ }
52
+
53
+ public function __toString()
54
+ {
55
+ $id = $this->requestId ? " from API request '{$this->requestId}'": "";
56
+ $message = explode("\n", parent::__toString());
57
+ $message[0] .= $id;
58
+ return implode("\n", $message);
59
+ }
60
+ }
lib/stripe/lib/Error/Card.php ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error;
4
+
5
+ class Card extends Base
6
+ {
7
+ public function __construct(
8
+ $message,
9
+ $stripeParam,
10
+ $stripeCode,
11
+ $httpStatus,
12
+ $httpBody,
13
+ $jsonBody,
14
+ $httpHeaders = null
15
+ ) {
16
+ parent::__construct($message, $httpStatus, $httpBody, $jsonBody, $httpHeaders);
17
+ $this->stripeParam = $stripeParam;
18
+ $this->stripeCode = $stripeCode;
19
+
20
+ // This one is not like the others because it was added later and we're
21
+ // trying to do our best not to change the public interface of this class'
22
+ // constructor. We should consider changing its implementation on the
23
+ // next major version bump of this library.
24
+ $this->declineCode = isset($jsonBody["error"]["decline_code"]) ? $jsonBody["error"]["decline_code"] : null;
25
+ }
26
+
27
+ public function getDeclineCode()
28
+ {
29
+ return $this->declineCode;
30
+ }
31
+
32
+ public function getStripeCode()
33
+ {
34
+ return $this->stripeCode;
35
+ }
36
+
37
+ public function getStripeParam()
38
+ {
39
+ return $this->stripeParam;
40
+ }
41
+ }
lib/stripe/lib/Error/InvalidRequest.php ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error;
4
+
5
+ class InvalidRequest extends Base
6
+ {
7
+ public function __construct(
8
+ $message,
9
+ $stripeParam,
10
+ $httpStatus = null,
11
+ $httpBody = null,
12
+ $jsonBody = null,
13
+ $httpHeaders = null
14
+ ) {
15
+ parent::__construct($message, $httpStatus, $httpBody, $jsonBody, $httpHeaders);
16
+ $this->stripeParam = $stripeParam;
17
+ }
18
+
19
+ public function getStripeParam()
20
+ {
21
+ return $this->stripeParam;
22
+ }
23
+ }
lib/stripe/lib/Error/RateLimit.php ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Error;
4
+
5
+ class RateLimit extends InvalidRequest
6
+ {
7
+ }
lib/stripe/lib/Event.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Event
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property string $api_version
11
+ * @property int $created
12
+ * @property mixed $data
13
+ * @property bool $livemode
14
+ * @property int $pending_webhooks
15
+ * @property string $request
16
+ * @property string $type
17
+ *
18
+ * @package Stripe
19
+ */
20
+ class Event extends ApiResource
21
+ {
22
+ /**
23
+ * @param string $id The ID of the event to retrieve.
24
+ * @param array|string|null $opts
25
+ *
26
+ * @return Event
27
+ */
28
+ public static function retrieve($id, $opts = null)
29
+ {
30
+ return self::_retrieve($id, $opts);
31
+ }
32
+
33
+ /**
34
+ * @param array|null $params
35
+ * @param array|string|null $opts
36
+ *
37
+ * @return Collection of Events
38
+ */
39
+ public static function all($params = null, $opts = null)
40
+ {
41
+ return self::_all($params, $opts);
42
+ }
43
+ }
lib/stripe/lib/ExternalAccount.php ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class ExternalAccount
7
+ *
8
+ * @package Stripe
9
+ */
10
+ abstract class ExternalAccount extends ApiResource
11
+ {
12
+ /**
13
+ * @return string The instance URL for this resource. It needs to be special
14
+ * cased because it doesn't fit into the standard resource pattern.
15
+ */
16
+ public function instanceUrl()
17
+ {
18
+ $id = $this['id'];
19
+ if (!$id) {
20
+ $class = get_class($this);
21
+ $msg = "Could not determine which URL to request: $class instance "
22
+ . "has invalid ID: $id";
23
+ throw new Error\InvalidRequest($msg, null);
24
+ }
25
+
26
+ if ($this['customer']) {
27
+ $parent = $this['customer'];
28
+ $base = Customer::classUrl();
29
+ $path = 'sources';
30
+ } elseif ($this['account']) {
31
+ $parent = $this['account'];
32
+ $base = Account::classUrl();
33
+ $path = 'external_accounts';
34
+ } elseif ($this['recipient']) {
35
+ $parent = $this['recipient'];
36
+ $base = Recipient::classUrl();
37
+ $path = 'cards';
38
+ } else {
39
+ return null;
40
+ }
41
+
42
+ $parent = Util\Util::utf8($parent);
43
+ $id = Util\Util::utf8($id);
44
+
45
+ $parentExtn = urlencode($parent);
46
+ $extn = urlencode($id);
47
+ return "$base/$parentExtn/$path/$extn";
48
+ }
49
+
50
+ /**
51
+ * @param array|null $params
52
+ * @param array|string|null $opts
53
+ *
54
+ * @return ExternalAccount The deleted external account.
55
+ */
56
+ public function delete($params = null, $opts = null)
57
+ {
58
+ return $this->_delete($params, $opts);
59
+ }
60
+
61
+ /**
62
+ * @param array|string|null $opts
63
+ *
64
+ * @return ExternalAccount The saved external account.
65
+ */
66
+ public function save($opts = null)
67
+ {
68
+ return $this->_save($opts);
69
+ }
70
+
71
+ /**
72
+ * @param array|null $params
73
+ * @param array|string|null $opts
74
+ *
75
+ * @return ExternalAccount The verified (or not) external account.
76
+ */
77
+ public function verify($params = null, $opts = null)
78
+ {
79
+ if ($this['customer']) {
80
+ $url = $this->instanceUrl() . '/verify';
81
+ list($response, $options) = $this->_request('post', $url, $params, $opts);
82
+ $this->refreshFrom($response, $options);
83
+ return $this;
84
+ } else {
85
+ $message = 'Only customer external accounts can be verified in this manner.';
86
+ throw new Error\Api($message);
87
+ }
88
+ }
89
+ }
lib/stripe/lib/FileUpload.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class FileUpload
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $created
11
+ * @property string $purpose
12
+ * @property int $size
13
+ * @property string $type
14
+ *
15
+ * @package Stripe
16
+ */
17
+ class FileUpload extends ApiResource
18
+ {
19
+ public static function baseUrl()
20
+ {
21
+ return Stripe::$apiUploadBase;
22
+ }
23
+
24
+ public static function className()
25
+ {
26
+ return 'file';
27
+ }
28
+
29
+ /**
30
+ * @param string $id The ID of the file upload to retrieve.
31
+ * @param array|string|null $opts
32
+ *
33
+ * @return FileUpload
34
+ */
35
+ public static function retrieve($id, $opts = null)
36
+ {
37
+ return self::_retrieve($id, $opts);
38
+ }
39
+
40
+ /**
41
+ * @param array|null $params
42
+ * @param array|string|null $opts
43
+ *
44
+ * @return FileUpload The created file upload.
45
+ */
46
+ public static function create($params = null, $opts = null)
47
+ {
48
+ return self::_create($params, $opts);
49
+ }
50
+
51
+ /**
52
+ * @param array|null $params
53
+ * @param array|string|null $opts
54
+ *
55
+ * @return Collection of FileUploads
56
+ */
57
+ public static function all($params = null, $opts = null)
58
+ {
59
+ return self::_all($params, $opts);
60
+ }
61
+ }
lib/stripe/lib/HttpClient/ClientInterface.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\HttpClient;
4
+
5
+ interface ClientInterface
6
+ {
7
+ /**
8
+ * @param string $method The HTTP method being used
9
+ * @param string $absUrl The URL being requested, including domain and protocol
10
+ * @param array $headers Headers to be used in the request (full strings, not KV pairs)
11
+ * @param array $params KV pairs for parameters. Can be nested for arrays and hashes
12
+ * @param boolean $hasFile Whether or not $params references a file (via an @ prefix or
13
+ * CurlFile)
14
+ * @throws Error\Api & Error\ApiConnection
15
+ * @return array($rawBody, $httpStatusCode, $httpHeader)
16
+ */
17
+ public function request($method, $absUrl, $headers, $params, $hasFile);
18
+ }
lib/stripe/lib/HttpClient/CurlClient.php ADDED
@@ -0,0 +1,298 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\HttpClient;
4
+
5
+ use Stripe\Stripe;
6
+ use Stripe\Error;
7
+ use Stripe\Util;
8
+
9
+ class CurlClient implements ClientInterface
10
+ {
11
+ private static $instance;
12
+
13
+ public static function instance()
14
+ {
15
+ if (!self::$instance) {
16
+ self::$instance = new self();
17
+ }
18
+ return self::$instance;
19
+ }
20
+
21
+ protected $defaultOptions;
22
+
23
+ /**
24
+ * CurlClient constructor.
25
+ *
26
+ * Pass in a callable to $defaultOptions that returns an array of CURLOPT_* values to start
27
+ * off a request with, or an flat array with the same format used by curl_setopt_array() to
28
+ * provide a static set of options. Note that many options are overridden later in the request
29
+ * call, including timeouts, which can be set via setTimeout() and setConnectTimeout().
30
+ *
31
+ * Note that request() will silently ignore a non-callable, non-array $defaultOptions, and will
32
+ * throw an exception if $defaultOptions returns a non-array value.
33
+ *
34
+ * @param array|callable|null $defaultOptions
35
+ */
36
+ public function __construct($defaultOptions = null)
37
+ {
38
+ $this->defaultOptions = $defaultOptions;
39
+ }
40
+
41
+ public function getDefaultOptions()
42
+ {
43
+ return $this->defaultOptions;
44
+ }
45
+
46
+ // USER DEFINED TIMEOUTS
47
+
48
+ const DEFAULT_TIMEOUT = 80;
49
+ const DEFAULT_CONNECT_TIMEOUT = 30;
50
+
51
+ private $timeout = self::DEFAULT_TIMEOUT;
52
+ private $connectTimeout = self::DEFAULT_CONNECT_TIMEOUT;
53
+
54
+ public function setTimeout($seconds)
55
+ {
56
+ $this->timeout = (int) max($seconds, 0);
57
+ return $this;
58
+ }
59
+
60
+ public function setConnectTimeout($seconds)
61
+ {
62
+ $this->connectTimeout = (int) max($seconds, 0);
63
+ return $this;
64
+ }
65
+
66
+ public function getTimeout()
67
+ {
68
+ return $this->timeout;
69
+ }
70
+
71
+ public function getConnectTimeout()
72
+ {
73
+ return $this->connectTimeout;
74
+ }
75
+
76
+ // END OF USER DEFINED TIMEOUTS
77
+
78
+ public function request($method, $absUrl, $headers, $params, $hasFile)
79
+ {
80
+ $curl = curl_init();
81
+ $method = strtolower($method);
82
+
83
+ $opts = array();
84
+ if (is_callable($this->defaultOptions)) { // call defaultOptions callback, set options to return value
85
+ $opts = call_user_func_array($this->defaultOptions, func_get_args());
86
+ if (!is_array($opts)) {
87
+ throw new Error\Api("Non-array value returned by defaultOptions CurlClient callback");
88
+ }
89
+ } elseif (is_array($this->defaultOptions)) { // set default curlopts from array
90
+ $opts = $this->defaultOptions;
91
+ }
92
+
93
+ if ($method == 'get') {
94
+ if ($hasFile) {
95
+ throw new Error\Api(
96
+ "Issuing a GET request with a file parameter"
97
+ );
98
+ }
99
+ $opts[CURLOPT_HTTPGET] = 1;
100
+ if (count($params) > 0) {
101
+ $encoded = self::encode($params);
102
+ $absUrl = "$absUrl?$encoded";
103
+ }
104
+ } elseif ($method == 'post') {
105
+ $opts[CURLOPT_POST] = 1;
106
+ $opts[CURLOPT_POSTFIELDS] = $hasFile ? $params : self::encode($params);
107
+ } elseif ($method == 'delete') {
108
+ $opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
109
+ if (count($params) > 0) {
110
+ $encoded = self::encode($params);
111
+ $absUrl = "$absUrl?$encoded";
112
+ }
113
+ } else {
114
+ throw new Error\Api("Unrecognized method $method");
115
+ }
116
+
117
+ // Create a callback to capture HTTP headers for the response
118
+ $rheaders = array();
119
+ $headerCallback = function ($curl, $header_line) use (&$rheaders) {
120
+ // Ignore the HTTP request line (HTTP/1.1 200 OK)
121
+ if (strpos($header_line, ":") === false) {
122
+ return strlen($header_line);
123
+ }
124
+ list($key, $value) = explode(":", trim($header_line), 2);
125
+ $rheaders[trim($key)] = trim($value);
126
+ return strlen($header_line);
127
+ };
128
+
129
+ // By default for large request body sizes (> 1024 bytes), cURL will
130
+ // send a request without a body and with a `Expect: 100-continue`
131
+ // header, which gives the server a chance to respond with an error
132
+ // status code in cases where one can be determined right away (say
133
+ // on an authentication problem for example), and saves the "large"
134
+ // request body from being ever sent.
135
+ //
136
+ // Unfortunately, the bindings don't currently correctly handle the
137
+ // success case (in which the server sends back a 100 CONTINUE), so
138
+ // we'll error under that condition. To compensate for that problem
139
+ // for the time being, override cURL's behavior by simply always
140
+ // sending an empty `Expect:` header.
141
+ array_push($headers, 'Expect: ');
142
+
143
+ $absUrl = Util\Util::utf8($absUrl);
144
+ $opts[CURLOPT_URL] = $absUrl;
145
+ $opts[CURLOPT_RETURNTRANSFER] = true;
146
+ $opts[CURLOPT_CONNECTTIMEOUT] = $this->connectTimeout;
147
+ $opts[CURLOPT_TIMEOUT] = $this->timeout;
148
+ $opts[CURLOPT_HEADERFUNCTION] = $headerCallback;
149
+ $opts[CURLOPT_HTTPHEADER] = $headers;
150
+ if (!Stripe::$verifySslCerts) {
151
+ $opts[CURLOPT_SSL_VERIFYPEER] = false;
152
+ }
153
+
154
+ // @codingStandardsIgnoreStart
155
+ // PSR2 requires all constants be upper case. Sadly, the CURL_SSLVERSION
156
+ // constants to not abide by those rules.
157
+ //
158
+ // Explicitly set a TLS version for cURL to use now that we're starting
159
+ // to block 1.0 and 1.1 requests.
160
+ //
161
+ // If users are on OpenSSL >= 1.0.1, we know that they support TLS 1.2,
162
+ // so set that explicitly because on some older Linux distros, clients may
163
+ // default to TLS 1.0 even when they have TLS 1.2 available.
164
+ //
165
+ // For users on much older versions of OpenSSL, set a valid range of
166
+ // TLS 1.0 to 1.2 (CURL_SSLVERSION_TLSv1). Note that this may result in
167
+ // their requests being blocked unless they're specially flagged into
168
+ // being able to use an old TLS version.
169
+ //
170
+ // Note: The int on the right is pulled from the source of OpenSSL 1.0.1a.
171
+ if (OPENSSL_VERSION_NUMBER >= 0x1000100f) {
172
+ if (!defined('CURL_SSLVERSION_TLSv1_2')) {
173
+ // Note the value 6 comes from its position in the enum that
174
+ // defines it in cURL's source code.
175
+ define('CURL_SSLVERSION_TLSv1_2', 6); // constant not defined in PHP < 5.5
176
+ }
177
+ $opts[CURLOPT_SSLVERSION] = CURL_SSLVERSION_TLSv1_2;
178
+ } else {
179
+ if (!defined('CURL_SSLVERSION_TLSv1')) {
180
+ define('CURL_SSLVERSION_TLSv1', 1); // constant not defined in PHP < 5.5
181
+ }
182
+ $opts[CURLOPT_SSLVERSION] = CURL_SSLVERSION_TLSv1;
183
+ }
184
+ // @codingStandardsIgnoreEnd
185
+
186
+ curl_setopt_array($curl, $opts);
187
+ $rbody = curl_exec($curl);
188
+
189
+ if (!defined('CURLE_SSL_CACERT_BADFILE')) {
190
+ define('CURLE_SSL_CACERT_BADFILE', 77); // constant not defined in PHP
191
+ }
192
+
193
+ $errno = curl_errno($curl);
194
+ if ($errno == CURLE_SSL_CACERT ||
195
+ $errno == CURLE_SSL_PEER_CERTIFICATE ||
196
+ $errno == CURLE_SSL_CACERT_BADFILE
197
+ ) {
198
+ array_push(
199
+ $headers,
200
+ 'X-Stripe-Client-Info: {"ca":"using Stripe-supplied CA bundle"}'
201
+ );
202
+ $cert = self::caBundle();
203
+ curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
204
+ curl_setopt($curl, CURLOPT_CAINFO, $cert);
205
+ $rbody = curl_exec($curl);
206
+ }
207
+
208
+ if ($rbody === false) {
209
+ $errno = curl_errno($curl);
210
+ $message = curl_error($curl);
211
+ curl_close($curl);
212
+ $this->handleCurlError($absUrl, $errno, $message);
213
+ }
214
+
215
+ $rcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
216
+ curl_close($curl);
217
+ return array($rbody, $rcode, $rheaders);
218
+ }
219
+
220
+ /**
221
+ * @param number $errno
222
+ * @param string $message
223
+ * @throws Error\ApiConnection
224
+ */
225
+ private function handleCurlError($url, $errno, $message)
226
+ {
227
+ switch ($errno) {
228
+ case CURLE_COULDNT_CONNECT:
229
+ case CURLE_COULDNT_RESOLVE_HOST:
230
+ case CURLE_OPERATION_TIMEOUTED:
231
+ $msg = "Could not connect to Stripe ($url). Please check your "
232
+ . "internet connection and try again. If this problem persists, "
233
+ . "you should check Stripe's service status at "
234
+ . "https://twitter.com/stripestatus, or";
235
+ break;
236
+ case CURLE_SSL_CACERT:
237
+ case CURLE_SSL_PEER_CERTIFICATE:
238
+ $msg = "Could not verify Stripe's SSL certificate. Please make sure "
239
+ . "that your network is not intercepting certificates. "
240
+ . "(Try going to $url in your browser.) "
241
+ . "If this problem persists,";
242
+ break;
243
+ default:
244
+ $msg = "Unexpected error communicating with Stripe. "
245
+ . "If this problem persists,";
246
+ }
247
+ $msg .= " let us know at support@stripe.com.";
248
+
249
+ $msg .= "\n\n(Network error [errno $errno]: $message)";
250
+ throw new Error\ApiConnection($msg);
251
+ }
252
+
253
+ private static function caBundle()
254
+ {
255
+ return dirname(__FILE__) . '/../../data/ca-certificates.crt';
256
+ }
257
+
258
+ /**
259
+ * @param array $arr An map of param keys to values.
260
+ * @param string|null $prefix
261
+ *
262
+ * Only public for testability, should not be called outside of CurlClient
263
+ *
264
+ * @return string A querystring, essentially.
265
+ */
266
+ public static function encode($arr, $prefix = null)
267
+ {
268
+ if (!is_array($arr)) {
269
+ return $arr;
270
+ }
271
+
272
+ $r = array();
273
+ foreach ($arr as $k => $v) {
274
+ if (is_null($v)) {
275
+ continue;
276
+ }
277
+
278
+ if ($prefix) {
279
+ if ($k !== null && (!is_int($k) || is_array($v))) {
280
+ $k = $prefix."[".$k."]";
281
+ } else {
282
+ $k = $prefix."[]";
283
+ }
284
+ }
285
+
286
+ if (is_array($v)) {
287
+ $enc = self::encode($v, $k);
288
+ if ($enc) {
289
+ $r[] = $enc;
290
+ }
291
+ } else {
292
+ $r[] = urlencode($k)."=".urlencode($v);
293
+ }
294
+ }
295
+
296
+ return implode("&", $r);
297
+ }
298
+ }
lib/stripe/lib/Invoice.php ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Invoice
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class Invoice extends ApiResource
11
+ {
12
+ /**
13
+ * @param array|null $params
14
+ * @param array|string|null $opts
15
+ *
16
+ * @return Invoice The created invoice.
17
+ */
18
+ public static function create($params = null, $opts = null)
19
+ {
20
+ return self::_create($params, $opts);
21
+ }
22
+
23
+ /**
24
+ * @param string $id The ID of the invoice to retrieve.
25
+ * @param array|string|null $opts
26
+ *
27
+ * @return Invoice
28
+ */
29
+ public static function retrieve($id, $opts = null)
30
+ {
31
+ return self::_retrieve($id, $opts);
32
+ }
33
+
34
+ /**
35
+ * @param array|null $params
36
+ * @param array|string|null $opts
37
+ *
38
+ * @return Collection of Invoices
39
+ */
40
+ public static function all($params = null, $opts = null)
41
+ {
42
+ return self::_all($params, $opts);
43
+ }
44
+
45
+ /**
46
+ * @param string $id The ID of the invoice to update.
47
+ * @param array|null $params
48
+ * @param array|string|null $options
49
+ *
50
+ * @return Invoice The updated invoice.
51
+ */
52
+ public static function update($id, $params = null, $options = null)
53
+ {
54
+ return self::_update($id, $params, $options);
55
+ }
56
+
57
+ /**
58
+ * @param array|null $params
59
+ * @param array|string|null $opts
60
+ *
61
+ * @return Invoice The upcoming invoice.
62
+ */
63
+ public static function upcoming($params = null, $opts = null)
64
+ {
65
+ $url = static::classUrl() . '/upcoming';
66
+ list($response, $opts) = static::_staticRequest('get', $url, $params, $opts);
67
+ $obj = Util\Util::convertToStripeObject($response->json, $opts);
68
+ $obj->setLastResponse($response);
69
+ return $obj;
70
+ }
71
+
72
+ /**
73
+ * @param array|string|null $opts
74
+ *
75
+ * @return Invoice The saved invoice.
76
+ */
77
+ public function save($opts = null)
78
+ {
79
+ return $this->_save($opts);
80
+ }
81
+
82
+ /**
83
+ * @return Invoice The paid invoice.
84
+ */
85
+ public function pay($opts = null)
86
+ {
87
+ $url = $this->instanceUrl() . '/pay';
88
+ list($response, $opts) = $this->_request('post', $url, null, $opts);
89
+ $this->refreshFrom($response, $opts);
90
+ return $this;
91
+ }
92
+ }
lib/stripe/lib/InvoiceItem.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class InvoiceItem
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class InvoiceItem extends ApiResource
11
+ {
12
+ /**
13
+ * @param string $id The ID of the invoice item to retrieve.
14
+ * @param array|string|null $opts
15
+ *
16
+ * @return InvoiceItem
17
+ */
18
+ public static function retrieve($id, $opts = null)
19
+ {
20
+ return self::_retrieve($id, $opts);
21
+ }
22
+
23
+ /**
24
+ * @param array|null $params
25
+ * @param array|string|null $opts
26
+ *
27
+ * @return Collection of InvoiceItems
28
+ */
29
+ public static function all($params = null, $opts = null)
30
+ {
31
+ return self::_all($params, $opts);
32
+ }
33
+
34
+ /**
35
+ * @param array|null $params
36
+ * @param array|string|null $opts
37
+ *
38
+ * @return InvoiceItem The created invoice item.
39
+ */
40
+ public static function create($params = null, $opts = null)
41
+ {
42
+ return self::_create($params, $opts);
43
+ }
44
+
45
+ /**
46
+ * @param string $id The ID of the invoice item to update.
47
+ * @param array|null $params
48
+ * @param array|string|null $options
49
+ *
50
+ * @return InvoiceItem The updated invoice item.
51
+ */
52
+ public static function update($id, $params = null, $options = null)
53
+ {
54
+ return self::_update($id, $params, $options);
55
+ }
56
+
57
+ /**
58
+ * @param array|string|null $opts
59
+ *
60
+ * @return InvoiceItem The saved invoice item.
61
+ */
62
+ public function save($opts = null)
63
+ {
64
+ return $this->_save($opts);
65
+ }
66
+
67
+ /**
68
+ * @param array|null $params
69
+ * @param array|string|null $opts
70
+ *
71
+ * @return InvoiceItem The deleted invoice item.
72
+ */
73
+ public function delete($params = null, $opts = null)
74
+ {
75
+ return $this->_delete($params, $opts);
76
+ }
77
+ }
lib/stripe/lib/JsonSerializable.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ // JsonSerializable only exists in PHP 5.4+. Stub if out if it doesn't exist
6
+ if (interface_exists('\JsonSerializable', false)) {
7
+ interface JsonSerializable extends \JsonSerializable
8
+ {
9
+ }
10
+ } else {
11
+ // PSR2 wants each interface to have its own file.
12
+ // @codingStandardsIgnoreStart
13
+ interface JsonSerializable
14
+ {
15
+ // @codingStandardsIgnoreEnd
16
+ public function jsonSerialize();
17
+ }
18
+ }
lib/stripe/lib/Order.php ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Order
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class Order extends ApiResource
11
+ {
12
+ /**
13
+ * @param string $id The ID of the Order to retrieve.
14
+ * @param array|string|null $opts
15
+ *
16
+ * @return Order
17
+ */
18
+ public static function retrieve($id, $opts = null)
19
+ {
20
+ return self::_retrieve($id, $opts);
21
+ }
22
+
23
+ /**
24
+ * @param array|null $params
25
+ * @param array|string|null $opts
26
+ *
27
+ * @return Order The created Order.
28
+ */
29
+ public static function create($params = null, $opts = null)
30
+ {
31
+ return self::_create($params, $opts);
32
+ }
33
+
34
+ /**
35
+ * @param string $id The ID of the order to update.
36
+ * @param array|null $params
37
+ * @param array|string|null $options
38
+ *
39
+ * @return Order The updated order.
40
+ */
41
+ public static function update($id, $params = null, $options = null)
42
+ {
43
+ return self::_update($id, $params, $options);
44
+ }
45
+
46
+ /**
47
+ * @param array|string|null $opts
48
+ *
49
+ * @return Order The saved Order.
50
+ */
51
+ public function save($opts = null)
52
+ {
53
+ return $this->_save($opts);
54
+ }
55
+
56
+ /**
57
+ * @param array|null $params
58
+ * @param array|string|null $opts
59
+ *
60
+ * @return Collection of Orders
61
+ */
62
+ public static function all($params = null, $opts = null)
63
+ {
64
+ return self::_all($params, $opts);
65
+ }
66
+
67
+ /**
68
+ * @return Order The paid order.
69
+ */
70
+ public function pay($params = null, $opts = null)
71
+ {
72
+ $url = $this->instanceUrl() . '/pay';
73
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
74
+ $this->refreshFrom($response, $opts);
75
+ return $this;
76
+ }
77
+
78
+ /**
79
+ * @return OrderReturn The newly created return.
80
+ */
81
+ public function returnOrder($params = null, $opts = null)
82
+ {
83
+ $url = $this->instanceUrl() . '/returns';
84
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
85
+ return Util\Util::convertToStripeObject($response, $opts);
86
+ }
87
+ }
lib/stripe/lib/OrderReturn.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class OrderReturn
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class OrderReturn extends ApiResource
11
+ {
12
+ /**
13
+ * @param string $id The ID of the OrderReturn to retrieve.
14
+ * @param array|string|null $opts
15
+ *
16
+ * @return Order
17
+ */
18
+ public static function retrieve($id, $opts = null)
19
+ {
20
+ return self::_retrieve($id, $opts);
21
+ }
22
+
23
+ /**
24
+ * @param array|null $params
25
+ * @param array|string|null $opts
26
+ *
27
+ * @return Collection of OrderReturns
28
+ */
29
+ public static function all($params = null, $opts = null)
30
+ {
31
+ return self::_all($params, $opts);
32
+ }
33
+ }
lib/stripe/lib/Plan.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Plan
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class Plan extends ApiResource
11
+ {
12
+ /**
13
+ * @param string $id The ID of the plan to retrieve.
14
+ * @param array|string|null $opts
15
+ *
16
+ * @return Plan
17
+ */
18
+ public static function retrieve($id, $opts = null)
19
+ {
20
+ return self::_retrieve($id, $opts);
21
+ }
22
+
23
+ /**
24
+ * @param array|null $params
25
+ * @param array|string|null $opts
26
+ *
27
+ * @return Plan The created plan.
28
+ */
29
+ public static function create($params = null, $opts = null)
30
+ {
31
+ return self::_create($params, $opts);
32
+ }
33
+
34
+ /**
35
+ * @param string $id The ID of the plan to update.
36
+ * @param array|null $params
37
+ * @param array|string|null $options
38
+ *
39
+ * @return Plan The updated plan.
40
+ */
41
+ public static function update($id, $params = null, $options = null)
42
+ {
43
+ return self::_update($id, $params, $options);
44
+ }
45
+
46
+ /**
47
+ * @param array|null $params
48
+ * @param array|string|null $opts
49
+ *
50
+ * @return Plan The deleted plan.
51
+ */
52
+ public function delete($params = null, $opts = null)
53
+ {
54
+ return $this->_delete($params, $opts);
55
+ }
56
+
57
+ /**
58
+ * @param array|string|null $opts
59
+ *
60
+ * @return Plan The saved plan.
61
+ */
62
+ public function save($opts = null)
63
+ {
64
+ return $this->_save($opts);
65
+ }
66
+
67
+ /**
68
+ * @param array|null $params
69
+ * @param array|string|null $opts
70
+ *
71
+ * @return Collection of Plans
72
+ */
73
+ public static function all($params = null, $opts = null)
74
+ {
75
+ return self::_all($params, $opts);
76
+ }
77
+ }
lib/stripe/lib/Product.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Product
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class Product extends ApiResource
11
+ {
12
+ /**
13
+ * @param string $id The ID of the Product to retrieve.
14
+ * @param array|string|null $opts
15
+ *
16
+ * @return Product
17
+ */
18
+ public static function retrieve($id, $opts = null)
19
+ {
20
+ return self::_retrieve($id, $opts);
21
+ }
22
+
23
+ /**
24
+ * @param array|null $params
25
+ * @param array|string|null $opts
26
+ *
27
+ * @return Product The created Product.
28
+ */
29
+ public static function create($params = null, $opts = null)
30
+ {
31
+ return self::_create($params, $opts);
32
+ }
33
+
34
+ /**
35
+ * @param string $id The ID of the product to update.
36
+ * @param array|null $params
37
+ * @param array|string|null $options
38
+ *
39
+ * @return Product The updated product.
40
+ */
41
+ public static function update($id, $params = null, $options = null)
42
+ {
43
+ return self::_update($id, $params, $options);
44
+ }
45
+
46
+ /**
47
+ * @param array|string|null $opts
48
+ *
49
+ * @return Product The saved Product.
50
+ */
51
+ public function save($opts = null)
52
+ {
53
+ return $this->_save($opts);
54
+ }
55
+
56
+ /**
57
+ * @param array|null $params
58
+ * @param array|string|null $opts
59
+ *
60
+ * @return Collection of Products
61
+ */
62
+ public static function all($params = null, $opts = null)
63
+ {
64
+ return self::_all($params, $opts);
65
+ }
66
+
67
+ /**
68
+ * @param array|null $params
69
+ * @param array|string|null $opts
70
+ *
71
+ * @return Product The deleted product.
72
+ */
73
+ public function delete($params = null, $opts = null)
74
+ {
75
+ return $this->_delete($params, $opts);
76
+ }
77
+ }
lib/stripe/lib/Recipient.php ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Recipient
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class Recipient extends ApiResource
11
+ {
12
+ /**
13
+ * @param string $id The ID of the recipient to retrieve.
14
+ * @param array|string|null $opts
15
+ *
16
+ * @return Recipient
17
+ */
18
+ public static function retrieve($id, $opts = null)
19
+ {
20
+ return self::_retrieve($id, $opts);
21
+ }
22
+
23
+ /**
24
+ * @param array|null $params
25
+ * @param array|string|null $opts
26
+ *
27
+ * @return Collection of Recipients
28
+ */
29
+ public static function all($params = null, $opts = null)
30
+ {
31
+ return self::_all($params, $opts);
32
+ }
33
+
34
+ /**
35
+ * @param array|null $params
36
+ * @param array|string|null $opts
37
+ *
38
+ * @return Recipient The created recipient.
39
+ */
40
+ public static function create($params = null, $opts = null)
41
+ {
42
+ return self::_create($params, $opts);
43
+ }
44
+
45
+ /**
46
+ * @param string $id The ID of the recipient to update.
47
+ * @param array|null $params
48
+ * @param array|string|null $options
49
+ *
50
+ * @return Recipient The updated recipient.
51
+ */
52
+ public static function update($id, $params = null, $options = null)
53
+ {
54
+ return self::_update($id, $params, $options);
55
+ }
56
+
57
+ /**
58
+ * @param array|string|null $opts
59
+ *
60
+ * @return Recipient The saved recipient.
61
+ */
62
+ public function save($opts = null)
63
+ {
64
+ return $this->_save($opts);
65
+ }
66
+
67
+ /**
68
+ * @param array|null $params
69
+ *
70
+ * @return Recipient The deleted recipient.
71
+ */
72
+ public function delete($params = null, $opts = null)
73
+ {
74
+ return $this->_delete($params, $opts);
75
+ }
76
+
77
+
78
+ /**
79
+ * @param array|null $params
80
+ *
81
+ * @return Collection of the Recipient's Transfers
82
+ */
83
+ public function transfers($params = null)
84
+ {
85
+ if ($params === null) {
86
+ $params = array();
87
+ }
88
+ $params['recipient'] = $this->id;
89
+ $transfers = Transfer::all($params, $this->_opts);
90
+ return $transfers;
91
+ }
92
+ }
lib/stripe/lib/Refund.php ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Refund
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property mixed $balance_transaction
12
+ * @property string $charge
13
+ * @property int $created
14
+ * @property string $currency
15
+ * @property mixed $metadata
16
+ * @property mixed $reason
17
+ * @property mixed $receipt_number
18
+ * @property string $status
19
+ *
20
+ * @package Stripe
21
+ */
22
+ class Refund extends ApiResource
23
+ {
24
+
25
+ /**
26
+ * @param string $id The ID of the refund to retrieve.
27
+ * @param array|string|null $options
28
+ *
29
+ * @return Refund
30
+ */
31
+ public static function retrieve($id, $options = null)
32
+ {
33
+ return self::_retrieve($id, $options);
34
+ }
35
+
36
+ /**
37
+ * @param string $id The ID of the refund to update.
38
+ * @param array|null $params
39
+ * @param array|string|null $options
40
+ *
41
+ * @return Refund The updated refund.
42
+ */
43
+ public static function update($id, $params = null, $options = null)
44
+ {
45
+ return self::_update($id, $params, $options);
46
+ }
47
+
48
+ /**
49
+ * @param array|null $params
50
+ * @param array|string|null $options
51
+ *
52
+ * @return Collection of Refunds
53
+ */
54
+ public static function all($params = null, $options = null)
55
+ {
56
+ return self::_all($params, $options);
57
+ }
58
+
59
+ /**
60
+ * @param array|null $params
61
+ * @param array|string|null $options
62
+ *
63
+ * @return Refund The created refund.
64
+ */
65
+ public static function create($params = null, $options = null)
66
+ {
67
+ return self::_create($params, $options);
68
+ }
69
+
70
+ /**
71
+ * @param array|string|null $opts
72
+ *
73
+ * @return Refund The saved refund.
74
+ */
75
+ public function save($opts = null)
76
+ {
77
+ return $this->_save($opts);
78
+ }
79
+ }
lib/stripe/lib/SKU.php ADDED
@@ -0,0 +1,77 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class SKU
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class SKU extends ApiResource
11
+ {
12
+ /**
13
+ * @param string $id The ID of the SKU to retrieve.
14
+ * @param array|string|null $opts
15
+ *
16
+ * @return SKU
17
+ */
18
+ public static function retrieve($id, $opts = null)
19
+ {
20
+ return self::_retrieve($id, $opts);
21
+ }
22
+
23
+ /**
24
+ * @param array|null $params
25
+ * @param array|string|null $opts
26
+ *
27
+ * @return SKU The created SKU.
28
+ */
29
+ public static function create($params = null, $opts = null)
30
+ {
31
+ return self::_create($params, $opts);
32
+ }
33
+
34
+ /**
35
+ * @param string $id The ID of the SKU to update.
36
+ * @param array|null $params
37
+ * @param array|string|null $options
38
+ *
39
+ * @return SKU The updated SKU.
40
+ */
41
+ public static function update($id, $params = null, $options = null)
42
+ {
43
+ return self::_update($id, $params, $options);
44
+ }
45
+
46
+ /**
47
+ * @param array|string|null $opts
48
+ *
49
+ * @return SKU The saved SKU.
50
+ */
51
+ public function save($opts = null)
52
+ {
53
+ return $this->_save($opts);
54
+ }
55
+
56
+ /**
57
+ * @param array|null $params
58
+ * @param array|string|null $opts
59
+ *
60
+ * @return Collection of SKUs
61
+ */
62
+ public static function all($params = null, $opts = null)
63
+ {
64
+ return self::_all($params, $opts);
65
+ }
66
+
67
+ /**
68
+ * @param array|null $params
69
+ * @param array|string|null $opts
70
+ *
71
+ * @return SKU The deleted sku.
72
+ */
73
+ public function delete($params = null, $opts = null)
74
+ {
75
+ return $this->_delete($params, $opts);
76
+ }
77
+ }
lib/stripe/lib/SingletonApiResource.php ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class SingletonApiResource
7
+ *
8
+ * @package Stripe
9
+ */
10
+ abstract class SingletonApiResource extends ApiResource
11
+ {
12
+ protected static function _singletonRetrieve($options = null)
13
+ {
14
+ $opts = Util\RequestOptions::parse($options);
15
+ $instance = new static(null, $opts);
16
+ $instance->refresh();
17
+ return $instance;
18
+ }
19
+
20
+ /**
21
+ * @return string The endpoint associated with this singleton class.
22
+ */
23
+ public static function classUrl()
24
+ {
25
+ $base = static::className();
26
+ return "/v1/${base}";
27
+ }
28
+
29
+ /**
30
+ * @return string The endpoint associated with this singleton API resource.
31
+ */
32
+ public function instanceUrl()
33
+ {
34
+ return static::classUrl();
35
+ }
36
+ }
lib/stripe/lib/Stripe.php ADDED
@@ -0,0 +1,100 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Stripe
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class Stripe
11
+ {
12
+ // @var string The Stripe API key to be used for requests.
13
+ public static $apiKey;
14
+
15
+ // @var string The base URL for the Stripe API.
16
+ public static $apiBase = 'https://api.stripe.com';
17
+
18
+ // @var string The base URL for the Stripe API uploads endpoint.
19
+ public static $apiUploadBase = 'https://uploads.stripe.com';
20
+
21
+ // @var string|null The version of the Stripe API to use for requests.
22
+ public static $apiVersion = null;
23
+
24
+ // @var string|null The account ID for connected accounts requests.
25
+ public static $accountId = null;
26
+
27
+ // @var boolean Defaults to true.
28
+ public static $verifySslCerts = true;
29
+
30
+ const VERSION = '3.20.0';
31
+
32
+ /**
33
+ * @return string The API key used for requests.
34
+ */
35
+ public static function getApiKey()
36
+ {
37
+ return self::$apiKey;
38
+ }
39
+
40
+ /**
41
+ * Sets the API key to be used for requests.
42
+ *
43
+ * @param string $apiKey
44
+ */
45
+ public static function setApiKey($apiKey)
46
+ {
47
+ self::$apiKey = $apiKey;
48
+ }
49
+
50
+ /**
51
+ * @return string The API version used for requests. null if we're using the
52
+ * latest version.
53
+ */
54
+ public static function getApiVersion()
55
+ {
56
+ return self::$apiVersion;
57
+ }
58
+
59
+ /**
60
+ * @param string $apiVersion The API version to use for requests.
61
+ */
62
+ public static function setApiVersion($apiVersion)
63
+ {
64
+ self::$apiVersion = $apiVersion;
65
+ }
66
+
67
+ /**
68
+ * @return boolean
69
+ */
70
+ public static function getVerifySslCerts()
71
+ {
72
+ return self::$verifySslCerts;
73
+ }
74
+
75
+ /**
76
+ * @param boolean $verify
77
+ */
78
+ public static function setVerifySslCerts($verify)
79
+ {
80
+ self::$verifySslCerts = $verify;
81
+ }
82
+
83
+ /**
84
+ * @return string | null The Stripe account ID for connected account
85
+ * requests.
86
+ */
87
+ public static function getAccountId()
88
+ {
89
+ return self::$accountId;
90
+ }
91
+
92
+ /**
93
+ * @param string $accountId The Stripe account ID to set for connected
94
+ * account requests.
95
+ */
96
+ public static function setAccountId($accountId)
97
+ {
98
+ self::$accountId = $accountId;
99
+ }
100
+ }
lib/stripe/lib/StripeObject.php ADDED
@@ -0,0 +1,293 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ use ArrayAccess;
6
+ use InvalidArgumentException;
7
+
8
+ /**
9
+ * Class StripeObject
10
+ *
11
+ * @package Stripe
12
+ */
13
+ class StripeObject implements ArrayAccess, JsonSerializable
14
+ {
15
+ /**
16
+ * @var Util\Set Attributes that should not be sent to the API because
17
+ * they're not updatable (e.g. API key, ID).
18
+ */
19
+ public static $permanentAttributes;
20
+ /**
21
+ * @var Util\Set Attributes that are nested but still updatable from
22
+ * the parent class's URL (e.g. metadata).
23
+ */
24
+ public static $nestedUpdatableAttributes;
25
+
26
+ public static function init()
27
+ {
28
+ self::$permanentAttributes = new Util\Set(array('_opts', 'id'));
29
+ self::$nestedUpdatableAttributes = new Util\Set(array(
30
+ 'metadata', 'legal_entity', 'address', 'dob', 'transfer_schedule', 'verification',
31
+ 'tos_acceptance', 'personal_address',
32
+ // will make the array into an AttachedObject: weird, but works for now
33
+ 'additional_owners', 0, 1, 2, 3, 4, // Max 3, but leave the 4th so errors work properly
34
+ 'inventory'
35
+ ));
36
+ }
37
+
38
+ /**
39
+ * @return object The last response from the Stripe API
40
+ */
41
+ public function getLastResponse()
42
+ {
43
+ return $this->_lastResponse;
44
+ }
45
+
46
+ /**
47
+ * @param ApiResponse
48
+ *
49
+ * @return void Set the last response from the Stripe API
50
+ */
51
+ public function setLastResponse($resp)
52
+ {
53
+ $this->_lastResponse = $resp;
54
+ }
55
+
56
+ protected $_opts;
57
+ protected $_values;
58
+ protected $_unsavedValues;
59
+ protected $_transientValues;
60
+ protected $_retrieveOptions;
61
+ protected $_lastResponse;
62
+
63
+ public function __construct($id = null, $opts = null)
64
+ {
65
+ $this->_opts = $opts ? $opts : new Util\RequestOptions();
66
+ $this->_values = array();
67
+ $this->_unsavedValues = new Util\Set();
68
+ $this->_transientValues = new Util\Set();
69
+
70
+ $this->_retrieveOptions = array();
71
+ if (is_array($id)) {
72
+ foreach ($id as $key => $value) {
73
+ if ($key != 'id') {
74
+ $this->_retrieveOptions[$key] = $value;
75
+ }
76
+ }
77
+ $id = $id['id'];
78
+ }
79
+
80
+ if ($id !== null) {
81
+ $this->id = $id;
82
+ }
83
+ }
84
+
85
+ // Standard accessor magic methods
86
+ public function __set($k, $v)
87
+ {
88
+ if ($v === "") {
89
+ throw new InvalidArgumentException(
90
+ 'You cannot set \''.$k.'\'to an empty string. '
91
+ .'We interpret empty strings as NULL in requests. '
92
+ .'You may set obj->'.$k.' = NULL to delete the property'
93
+ );
94
+ }
95
+
96
+ if (self::$nestedUpdatableAttributes->includes($k)
97
+ && isset($this->$k) && $this->$k instanceof AttachedObject && is_array($v)) {
98
+ $this->$k->replaceWith($v);
99
+ } else {
100
+ // TODO: may want to clear from $_transientValues (Won't be user-visible).
101
+ $this->_values[$k] = $v;
102
+ }
103
+ if (!self::$permanentAttributes->includes($k)) {
104
+ $this->_unsavedValues->add($k);
105
+ }
106
+ }
107
+
108
+ public function __isset($k)
109
+ {
110
+ return isset($this->_values[$k]);
111
+ }
112
+ public function __unset($k)
113
+ {
114
+ unset($this->_values[$k]);
115
+ $this->_transientValues->add($k);
116
+ $this->_unsavedValues->discard($k);
117
+ }
118
+ public function &__get($k)
119
+ {
120
+ // function should return a reference, using $nullval to return a reference to null
121
+ $nullval = null;
122
+ if (!empty($this->_values) && array_key_exists($k, $this->_values)) {
123
+ return $this->_values[$k];
124
+ } else if (!empty($this->_transientValues) && $this->_transientValues->includes($k)) {
125
+ $class = get_class($this);
126
+ $attrs = join(', ', array_keys($this->_values));
127
+ $message = "Stripe Notice: Undefined property of $class instance: $k. "
128
+ . "HINT: The $k attribute was set in the past, however. "
129
+ . "It was then wiped when refreshing the object "
130
+ . "with the result returned by Stripe's API, "
131
+ . "probably as a result of a save(). The attributes currently "
132
+ . "available on this object are: $attrs";
133
+ error_log($message);
134
+ return $nullval;
135
+ } else {
136
+ $class = get_class($this);
137
+ error_log("Stripe Notice: Undefined property of $class instance: $k");
138
+ return $nullval;
139
+ }
140
+ }
141
+
142
+ // ArrayAccess methods
143
+ public function offsetSet($k, $v)
144
+ {
145
+ $this->$k = $v;
146
+ }
147
+
148
+ public function offsetExists($k)
149
+ {
150
+ return array_key_exists($k, $this->_values);
151
+ }
152
+
153
+ public function offsetUnset($k)
154
+ {
155
+ unset($this->$k);
156
+ }
157
+ public function offsetGet($k)
158
+ {
159
+ return array_key_exists($k, $this->_values) ? $this->_values[$k] : null;
160
+ }
161
+
162
+ public function keys()
163
+ {
164
+ return array_keys($this->_values);
165
+ }
166
+
167
+ /**
168
+ * This unfortunately needs to be public to be used in Util\Util
169
+ *
170
+ * @param array $values
171
+ * @param array $opts
172
+ *
173
+ * @return StripeObject The object constructed from the given values.
174
+ */
175
+ public static function constructFrom($values, $opts)
176
+ {
177
+ $obj = new static(isset($values['id']) ? $values['id'] : null);
178
+ $obj->refreshFrom($values, $opts);
179
+ return $obj;
180
+ }
181
+
182
+ /**
183
+ * Refreshes this object using the provided values.
184
+ *
185
+ * @param array $values
186
+ * @param array|Util\RequestOptions $opts
187
+ * @param boolean $partial Defaults to false.
188
+ */
189
+ public function refreshFrom($values, $opts, $partial = false)
190
+ {
191
+ if (is_array($opts)) {
192
+ $opts = Util\RequestOptions::parse($opts);
193
+ }
194
+
195
+ $this->_opts = $opts;
196
+
197
+ // Wipe old state before setting new. This is useful for e.g. updating a
198
+ // customer, where there is no persistent card parameter. Mark those values
199
+ // which don't persist as transient
200
+ if ($partial) {
201
+ $removed = new Util\Set();
202
+ } else {
203
+ $removed = array_diff(array_keys($this->_values), array_keys($values));
204
+ }
205
+
206
+ foreach ($removed as $k) {
207
+ if (self::$permanentAttributes->includes($k)) {
208
+ continue;
209
+ }
210
+
211
+ unset($this->$k);
212
+ }
213
+
214
+ foreach ($values as $k => $v) {
215
+ if (self::$permanentAttributes->includes($k) && isset($this[$k])) {
216
+ continue;
217
+ }
218
+
219
+ if (self::$nestedUpdatableAttributes->includes($k) && is_array($v)) {
220
+ $this->_values[$k] = AttachedObject::constructFrom($v, $opts);
221
+ } else {
222
+ $this->_values[$k] = Util\Util::convertToStripeObject($v, $opts);
223
+ }
224
+
225
+ $this->_transientValues->discard($k);
226
+ $this->_unsavedValues->discard($k);
227
+ }
228
+ }
229
+
230
+ /**
231
+ * @return array A recursive mapping of attributes to values for this object,
232
+ * including the proper value for deleted attributes.
233
+ */
234
+ public function serializeParameters()
235
+ {
236
+ $params = array();
237
+ if ($this->_unsavedValues) {
238
+ foreach ($this->_unsavedValues->toArray() as $k) {
239
+ $v = $this->$k;
240
+ if ($v === null) {
241
+ $v = '';
242
+ }
243
+
244
+ $params[$k] = $v;
245
+ }
246
+ }
247
+
248
+ // Get nested updates.
249
+ foreach (self::$nestedUpdatableAttributes->toArray() as $property) {
250
+ if (isset($this->$property)) {
251
+ if ($this->$property instanceof StripeObject) {
252
+ $serialized = $this->$property->serializeParameters();
253
+ if ($serialized) {
254
+ $params[$property] = $serialized;
255
+ }
256
+ }
257
+ }
258
+ }
259
+
260
+ return $params;
261
+ }
262
+
263
+ public function jsonSerialize()
264
+ {
265
+ return $this->__toArray(true);
266
+ }
267
+
268
+ public function __toJSON()
269
+ {
270
+ if (defined('JSON_PRETTY_PRINT')) {
271
+ return json_encode($this->__toArray(true), JSON_PRETTY_PRINT);
272
+ } else {
273
+ return json_encode($this->__toArray(true));
274
+ }
275
+ }
276
+
277
+ public function __toString()
278
+ {
279
+ $class = get_class($this);
280
+ return $class . ' JSON: ' . $this->__toJSON();
281
+ }
282
+
283
+ public function __toArray($recursive = false)
284
+ {
285
+ if ($recursive) {
286
+ return Util\Util::convertStripeObjectToArray($this->_values);
287
+ } else {
288
+ return $this->_values;
289
+ }
290
+ }
291
+ }
292
+
293
+ StripeObject::init();
lib/stripe/lib/Subscription.php ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Subscription
7
+ *
8
+ * @package Stripe
9
+ */
10
+ class Subscription extends ApiResource
11
+ {
12
+ /**
13
+ * These constants are possible representations of the status field.
14
+ *
15
+ * @link https://stripe.com/docs/api#subscription_object-status
16
+ */
17
+ const STATUS_ACTIVE = 'active';
18
+ const STATUS_CANCELED = 'canceled';
19
+ const STATUS_PAST_DUE = 'past_due';
20
+ const STATUS_TRIALING = 'trialing';
21
+ const STATUS_UNPAID = 'unpaid';
22
+
23
+ /**
24
+ * @param string $id The ID of the subscription to retrieve.
25
+ * @param array|string|null $opts
26
+ *
27
+ * @return Subscription
28
+ */
29
+ public static function retrieve($id, $opts = null)
30
+ {
31
+ return self::_retrieve($id, $opts);
32
+ }
33
+
34
+ /**
35
+ * @param array|null $params
36
+ * @param array|string|null $opts
37
+ *
38
+ * @return Collection of Subscriptions
39
+ */
40
+ public static function all($params = null, $opts = null)
41
+ {
42
+ return self::_all($params, $opts);
43
+ }
44
+
45
+ /**
46
+ * @param array|null $params
47
+ * @param array|string|null $opts
48
+ *
49
+ * @return Subscription The created subscription.
50
+ */
51
+ public static function create($params = null, $opts = null)
52
+ {
53
+ return self::_create($params, $opts);
54
+ }
55
+
56
+ /**
57
+ * @param string $id The ID of the subscription to retrieve.
58
+ * @param array|null $params
59
+ * @param array|string|null $options
60
+ *
61
+ * @return Subscription The updated subscription.
62
+ */
63
+ public static function update($id, $params = null, $options = null)
64
+ {
65
+ return self::_update($id, $params, $options);
66
+ }
67
+
68
+ /**
69
+ * @param array|null $params
70
+ *
71
+ * @return Subscription The deleted subscription.
72
+ */
73
+ public function cancel($params = null, $opts = null)
74
+ {
75
+ return $this->_delete($params, $opts);
76
+ }
77
+
78
+ /**
79
+ * @param array|string|null $opts
80
+ *
81
+ * @return Subscription The saved subscription.
82
+ */
83
+ public function save($opts = null)
84
+ {
85
+ return $this->_save($opts);
86
+ }
87
+
88
+ /**
89
+ * @return Subscription The updated subscription.
90
+ */
91
+ public function deleteDiscount()
92
+ {
93
+ $url = $this->instanceUrl() . '/discount';
94
+ list($response, $opts) = $this->_request('delete', $url);
95
+ $this->refreshFrom(array('discount' => null), $opts, true);
96
+ }
97
+ }
lib/stripe/lib/ThreeDSecure.php ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class ThreeDSecure extends ApiResource
6
+ {
7
+ /**
8
+ * @return string The endpoint URL for the given class.
9
+ */
10
+ public static function classUrl()
11
+ {
12
+ return "/v1/3d_secure";
13
+ }
14
+
15
+ /**
16
+ * @param array|null $params
17
+ * @param array|string|null $opts
18
+ *
19
+ * @return ThreeDSecure The created 3D Secure object.
20
+ */
21
+ public static function create($params = null, $opts = null)
22
+ {
23
+ return self::_create($params, $opts);
24
+ }
25
+ }
lib/stripe/lib/Token.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Token
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property mixed $bank_account
11
+ * @property mixed $card
12
+ * @property mixed $client_ip
13
+ * @property int $created
14
+ * @property bool $livemode
15
+ * @property string $type
16
+ * @property bool $used
17
+ *
18
+ * @package Stripe
19
+ */
20
+ class Token extends ApiResource
21
+ {
22
+ /**
23
+ * @param string $id The ID of the token to retrieve.
24
+ * @param array|string|null $opts
25
+ *
26
+ * @return Token
27
+ */
28
+ public static function retrieve($id, $opts = null)
29
+ {
30
+ return self::_retrieve($id, $opts);
31
+ }
32
+
33
+ /**
34
+ * @param array|null $params
35
+ * @param array|string|null $opts
36
+ *
37
+ * @return Token The created token.
38
+ */
39
+ public static function create($params = null, $opts = null)
40
+ {
41
+ return self::_create($params, $opts);
42
+ }
43
+ }
lib/stripe/lib/Transfer.php ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class Transfer
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property int $amount_reversed
12
+ * @property mixed $application_fee
13
+ * @property string $balance_transaction
14
+ * @property int $created
15
+ * @property string $currency
16
+ * @property int $date
17
+ * @property mixed $description
18
+ * @property mixed $destination
19
+ * @property mixed $destination_payment
20
+ * @property mixed $failure_code
21
+ * @property mixed $failure_message
22
+ * @property mixed $fraud_details
23
+ * @property mixed $invoice
24
+ * @property bool $livemode
25
+ * @property mixed $metadata
26
+ * @property mixed $recipient
27
+ * @property mixed $reversals
28
+ * @property bool $reversed
29
+ * @property mixed $source_transaction
30
+ * @property string $source_type
31
+ * @property mixed $statement_descriptor
32
+ * @property string $status
33
+ * @property string $type
34
+ *
35
+ * @package Stripe
36
+ */
37
+ class Transfer extends ApiResource
38
+ {
39
+ /**
40
+ * @param string $id The ID of the transfer to retrieve.
41
+ * @param array|string|null $opts
42
+ *
43
+ * @return Transfer
44
+ */
45
+ public static function retrieve($id, $opts = null)
46
+ {
47
+ return self::_retrieve($id, $opts);
48
+ }
49
+
50
+ /**
51
+ * @param array|null $params
52
+ * @param array|string|null $opts
53
+ *
54
+ * @return Collection of Transfers
55
+ */
56
+ public static function all($params = null, $opts = null)
57
+ {
58
+ return self::_all($params, $opts);
59
+ }
60
+
61
+ /**
62
+ * @param array|null $params
63
+ * @param array|string|null $opts
64
+ *
65
+ * @return Transfer The created transfer.
66
+ */
67
+ public static function create($params = null, $opts = null)
68
+ {
69
+ return self::_create($params, $opts);
70
+ }
71
+
72
+ /**
73
+ * @param string $id The ID of the transfer to update.
74
+ * @param array|null $params
75
+ * @param array|string|null $options
76
+ *
77
+ * @return Transfer The updated transfer.
78
+ */
79
+ public static function update($id, $params = null, $options = null)
80
+ {
81
+ return self::_update($id, $params, $options);
82
+ }
83
+
84
+ /**
85
+ * @return TransferReversal The created transfer reversal.
86
+ */
87
+ public function reverse($params = null, $opts = null)
88
+ {
89
+ $url = $this->instanceUrl() . '/reversals';
90
+ list($response, $opts) = $this->_request('post', $url, $params, $opts);
91
+ $this->refreshFrom($response, $opts);
92
+ return $this;
93
+ }
94
+
95
+ /**
96
+ * @return Transfer The canceled transfer.
97
+ */
98
+ public function cancel()
99
+ {
100
+ $url = $this->instanceUrl() . '/cancel';
101
+ list($response, $opts) = $this->_request('post', $url);
102
+ $this->refreshFrom($response, $opts);
103
+ return $this;
104
+ }
105
+
106
+ /**
107
+ * @param array|string|null $opts
108
+ *
109
+ * @return Transfer The saved transfer.
110
+ */
111
+ public function save($opts = null)
112
+ {
113
+ return $this->_save($opts);
114
+ }
115
+ }
lib/stripe/lib/TransferReversal.php ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Class TransferReversal
7
+ *
8
+ * @property string $id
9
+ * @property string $object
10
+ * @property int $amount
11
+ * @property string $balance_transaction
12
+ * @property int $created
13
+ * @property string $currency
14
+ * @property mixed $metadata
15
+ * @property string $transfer
16
+ *
17
+ * @package Stripe
18
+ */
19
+ class TransferReversal extends ApiResource
20
+ {
21
+ /**
22
+ * @return string The API URL for this Stripe transfer reversal.
23
+ */
24
+ public function instanceUrl()
25
+ {
26
+ $id = $this['id'];
27
+ $transfer = $this['transfer'];
28
+ if (!$id) {
29
+ throw new Error\InvalidRequest(
30
+ "Could not determine which URL to request: " .
31
+ "class instance has invalid ID: $id",
32
+ null
33
+ );
34
+ }
35
+ $id = Util\Util::utf8($id);
36
+ $transfer = Util\Util::utf8($transfer);
37
+
38
+ $base = Transfer::classUrl();
39
+ $transferExtn = urlencode($transfer);
40
+ $extn = urlencode($id);
41
+ return "$base/$transferExtn/reversals/$extn";
42
+ }
43
+
44
+ /**
45
+ * @param array|string|null $opts
46
+ *
47
+ * @return TransferReversal The saved reversal.
48
+ */
49
+ public function save($opts = null)
50
+ {
51
+ return $this->_save($opts);
52
+ }
53
+ }
lib/stripe/lib/Util/AutoPagingIterator.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Util;
4
+
5
+ class AutoPagingIterator implements \Iterator
6
+ {
7
+ private $lastId = null;
8
+ private $page = null;
9
+ private $pageOffset = 0;
10
+ private $params = array();
11
+
12
+ public function __construct($collection, $params)
13
+ {
14
+ $this->page = $collection;
15
+ $this->params = $params;
16
+ }
17
+
18
+ public function rewind()
19
+ {
20
+ // Actually rewinding would require making a copy of the original page.
21
+ }
22
+
23
+ public function current()
24
+ {
25
+ $item = current($this->page->data);
26
+ $this->lastId = $item !== false ? $item['id'] : null;
27
+
28
+ return $item;
29
+ }
30
+
31
+ public function key()
32
+ {
33
+ return key($this->page->data) + $this->pageOffset;
34
+ }
35
+
36
+ public function next()
37
+ {
38
+ $item = next($this->page->data);
39
+ if ($item === false) {
40
+ // If we've run out of data on the current page, try to fetch another one
41
+ // and increase the offset the new page would start at
42
+ $this->pageOffset += count($this->page->data);
43
+ if ($this->page['has_more']) {
44
+ $this->params = array_merge(
45
+ $this->params ? $this->params : array(),
46
+ array('starting_after' => $this->lastId)
47
+ );
48
+ $this->page = $this->page->all($this->params);
49
+ } else {
50
+ return false;
51
+ }
52
+ }
53
+ }
54
+
55
+ public function valid()
56
+ {
57
+ $key = key($this->page->data);
58
+ $valid = ($key !== null && $key !== false);
59
+ return $valid;
60
+ }
61
+ }
lib/stripe/lib/Util/RequestOptions.php ADDED
@@ -0,0 +1,79 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Util;
4
+
5
+ use Stripe\Error;
6
+
7
+ class RequestOptions
8
+ {
9
+ public $headers;
10
+ public $apiKey;
11
+
12
+ public function __construct($key = null, $headers = array())
13
+ {
14
+ $this->apiKey = $key;
15
+ $this->headers = $headers;
16
+ }
17
+
18
+ /**
19
+ * Unpacks an options array and merges it into the existing RequestOptions
20
+ * object.
21
+ * @param array|string|null $options a key => value array
22
+ *
23
+ * @return RequestOptions
24
+ */
25
+ public function merge($options)
26
+ {
27
+ $other_options = self::parse($options);
28
+ if ($other_options->apiKey === null) {
29
+ $other_options->apiKey = $this->apiKey;
30
+ }
31
+ $other_options->headers = array_merge($this->headers, $other_options->headers);
32
+ return $other_options;
33
+ }
34
+
35
+ /**
36
+ * Unpacks an options array into an RequestOptions object
37
+ * @param array|string|null $options a key => value array
38
+ *
39
+ * @return RequestOptions
40
+ */
41
+ public static function parse($options)
42
+ {
43
+ if ($options instanceof self) {
44
+ return $options;
45
+ }
46
+
47
+ if (is_null($options)) {
48
+ return new RequestOptions(null, array());
49
+ }
50
+
51
+ if (is_string($options)) {
52
+ return new RequestOptions($options, array());
53
+ }
54
+
55
+ if (is_array($options)) {
56
+ $headers = array();
57
+ $key = null;
58
+ if (array_key_exists('api_key', $options)) {
59
+ $key = $options['api_key'];
60
+ }
61
+ if (array_key_exists('idempotency_key', $options)) {
62
+ $headers['Idempotency-Key'] = $options['idempotency_key'];
63
+ }
64
+ if (array_key_exists('stripe_account', $options)) {
65
+ $headers['Stripe-Account'] = $options['stripe_account'];
66
+ }
67
+ if (array_key_exists('stripe_version', $options)) {
68
+ $headers['Stripe-Version'] = $options['stripe_version'];
69
+ }
70
+ return new RequestOptions($key, $headers);
71
+ }
72
+
73
+ $message = 'The second argument to Stripe API method calls is an '
74
+ . 'optional per-request apiKey, which must be a string, or '
75
+ . 'per-request options, which must be an array. (HINT: you can set '
76
+ . 'a global apiKey by "Stripe::setApiKey(<apiKey>)")';
77
+ throw new Error\Api($message);
78
+ }
79
+ }
lib/stripe/lib/Util/Set.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Util;
4
+
5
+ use IteratorAggregate;
6
+ use ArrayIterator;
7
+
8
+ class Set implements IteratorAggregate
9
+ {
10
+ private $_elts;
11
+
12
+ public function __construct($members = array())
13
+ {
14
+ $this->_elts = array();
15
+ foreach ($members as $item) {
16
+ $this->_elts[$item] = true;
17
+ }
18
+ }
19
+
20
+ public function includes($elt)
21
+ {
22
+ return isset($this->_elts[$elt]);
23
+ }
24
+
25
+ public function add($elt)
26
+ {
27
+ $this->_elts[$elt] = true;
28
+ }
29
+
30
+ public function discard($elt)
31
+ {
32
+ unset($this->_elts[$elt]);
33
+ }
34
+
35
+ public function toArray()
36
+ {
37
+ return array_keys($this->_elts);
38
+ }
39
+
40
+ public function getIterator()
41
+ {
42
+ return new ArrayIterator($this->toArray());
43
+ }
44
+ }
lib/stripe/lib/Util/Util.php ADDED
@@ -0,0 +1,140 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe\Util;
4
+
5
+ use Stripe\StripeObject;
6
+
7
+ abstract class Util
8
+ {
9
+ private static $isMbstringAvailable = null;
10
+
11
+ /**
12
+ * Whether the provided array (or other) is a list rather than a dictionary.
13
+ *
14
+ * @param array|mixed $array
15
+ * @return boolean True if the given object is a list.
16
+ */
17
+ public static function isList($array)
18
+ {
19
+ if (!is_array($array)) {
20
+ return false;
21
+ }
22
+
23
+ // TODO: generally incorrect, but it's correct given Stripe's response
24
+ foreach (array_keys($array) as $k) {
25
+ if (!is_numeric($k)) {
26
+ return false;
27
+ }
28
+ }
29
+ return true;
30
+ }
31
+
32
+ /**
33
+ * Recursively converts the PHP Stripe object to an array.
34
+ *
35
+ * @param array $values The PHP Stripe object to convert.
36
+ * @return array
37
+ */
38
+ public static function convertStripeObjectToArray($values)
39
+ {
40
+ $results = array();
41
+ foreach ($values as $k => $v) {
42
+ // FIXME: this is an encapsulation violation
43
+ if ($k[0] == '_') {
44
+ continue;
45
+ }
46
+ if ($v instanceof StripeObject) {
47
+ $results[$k] = $v->__toArray(true);
48
+ } elseif (is_array($v)) {
49
+ $results[$k] = self::convertStripeObjectToArray($v);
50
+ } else {
51
+ $results[$k] = $v;
52
+ }
53
+ }
54
+ return $results;
55
+ }
56
+
57
+ /**
58
+ * Converts a response from the Stripe API to the corresponding PHP object.
59
+ *
60
+ * @param array $resp The response from the Stripe API.
61
+ * @param array $opts
62
+ * @return StripeObject|array
63
+ */
64
+ public static function convertToStripeObject($resp, $opts)
65
+ {
66
+ $types = array(
67
+ 'account' => 'Stripe\\Account',
68
+ 'alipay_account' => 'Stripe\\AlipayAccount',
69
+ 'bank_account' => 'Stripe\\BankAccount',
70
+ 'balance_transaction' => 'Stripe\\BalanceTransaction',
71
+ 'card' => 'Stripe\\Card',
72
+ 'charge' => 'Stripe\\Charge',
73
+ 'country_spec' => 'Stripe\\CountrySpec',
74
+ 'coupon' => 'Stripe\\Coupon',
75
+ 'customer' => 'Stripe\\Customer',
76
+ 'dispute' => 'Stripe\\Dispute',
77
+ 'list' => 'Stripe\\Collection',
78
+ 'invoice' => 'Stripe\\Invoice',
79
+ 'invoiceitem' => 'Stripe\\InvoiceItem',
80
+ 'event' => 'Stripe\\Event',
81
+ 'file' => 'Stripe\\FileUpload',
82
+ 'token' => 'Stripe\\Token',
83
+ 'transfer' => 'Stripe\\Transfer',
84
+ 'order' => 'Stripe\\Order',
85
+ 'order_return' => 'Stripe\\OrderReturn',
86
+ 'plan' => 'Stripe\\Plan',
87
+ 'product' => 'Stripe\\Product',
88
+ 'recipient' => 'Stripe\\Recipient',
89
+ 'refund' => 'Stripe\\Refund',
90
+ 'sku' => 'Stripe\\SKU',
91
+ 'subscription' => 'Stripe\\Subscription',
92
+ 'three_d_secure' => 'Stripe\\ThreeDSecure',
93
+ 'fee_refund' => 'Stripe\\ApplicationFeeRefund',
94
+ 'bitcoin_receiver' => 'Stripe\\BitcoinReceiver',
95
+ 'bitcoin_transaction' => 'Stripe\\BitcoinTransaction',
96
+ );
97
+ if (self::isList($resp)) {
98
+ $mapped = array();
99
+ foreach ($resp as $i) {
100
+ array_push($mapped, self::convertToStripeObject($i, $opts));
101
+ }
102
+ return $mapped;
103
+ } elseif (is_array($resp)) {
104
+ if (isset($resp['object']) && is_string($resp['object']) && isset($types[$resp['object']])) {
105
+ $class = $types[$resp['object']];
106
+ } else {
107
+ $class = 'Stripe\\StripeObject';
108
+ }
109
+ return $class::constructFrom($resp, $opts);
110
+ } else {
111
+ return $resp;
112
+ }
113
+ }
114
+
115
+ /**
116
+ * @param string|mixed $value A string to UTF8-encode.
117
+ *
118
+ * @return string|mixed The UTF8-encoded string, or the object passed in if
119
+ * it wasn't a string.
120
+ */
121
+ public static function utf8($value)
122
+ {
123
+ if (self::$isMbstringAvailable === null) {
124
+ self::$isMbstringAvailable = function_exists('mb_detect_encoding');
125
+
126
+ if (!self::$isMbstringAvailable) {
127
+ trigger_error("It looks like the mbstring extension is not enabled. " .
128
+ "UTF-8 strings will not properly be encoded. Ask your system " .
129
+ "administrator to enable the mbstring extension, or write to " .
130
+ "support@stripe.com if you have any questions.", E_USER_WARNING);
131
+ }
132
+ }
133
+
134
+ if (is_string($value) && self::$isMbstringAvailable && mb_detect_encoding($value, "UTF-8", true) != "UTF-8") {
135
+ return utf8_encode($value);
136
+ } else {
137
+ return $value;
138
+ }
139
+ }
140
+ }
lib/stripe/phpunit.no_autoload.xml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <phpunit bootstrap="tests/bootstrap.no_autoload.php" colors="true">
2
+ <testsuites>
3
+ <testsuite name="Stripe PHP Test Suite">
4
+ <directory suffix="Test.php">tests</directory>
5
+ </testsuite>
6
+ </testsuites>
7
+ <filter>
8
+ <whitelist>
9
+ <directory>lib</directory>
10
+ </whitelist>
11
+ </filter>
12
+ <logging>
13
+ <log type="coverage-clover" target="clover.xml"/>
14
+ </logging>
15
+ </phpunit>
lib/stripe/phpunit.xml ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <phpunit bootstrap="tests/bootstrap.php" colors="true">
2
+ <testsuites>
3
+ <testsuite name="Stripe PHP Test Suite">
4
+ <directory suffix="Test.php">tests</directory>
5
+ </testsuite>
6
+ </testsuites>
7
+ <filter>
8
+ <whitelist>
9
+ <directory>lib</directory>
10
+ </whitelist>
11
+ </filter>
12
+ <logging>
13
+ <log type="coverage-clover" target="clover.xml"/>
14
+ </logging>
15
+ </phpunit>
lib/stripe/tests/AccountTest.php ADDED
@@ -0,0 +1,300 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class AccountTest extends TestCase
6
+ {
7
+ private function managedAccountResponse($id)
8
+ {
9
+ return array(
10
+ 'id' => $id,
11
+ 'currencies_supported' => array('usd', 'aed', 'afn', '...'),
12
+ 'object' => 'account',
13
+ 'business_name' => 'Stripe.com',
14
+ 'bank_accounts' => array(
15
+ 'object' => 'list',
16
+ 'total_count' => 0,
17
+ 'has_more' => false,
18
+ 'url' => '/v1/accounts/' . $id . '/bank_accounts',
19
+ 'data' => array()
20
+ ),
21
+ 'verification' => array(
22
+ 'fields_needed' => array(
23
+ 'product_description',
24
+ 'business_url',
25
+ 'support_phone',
26
+ 'bank_account',
27
+ 'tos_acceptance.ip',
28
+ 'tos_acceptance.date'
29
+ ),
30
+ 'due_by' => null,
31
+ 'contacted' => false
32
+ ),
33
+ 'tos_acceptance' => array(
34
+ 'ip' => null,
35
+ 'date' => null,
36
+ 'user_agent' => null
37
+ ),
38
+ 'legal_entity' => array(
39
+ 'type' => null,
40
+ 'business_name' => null,
41
+ 'address' => array(
42
+ 'line1' => null,
43
+ 'line2' => null,
44
+ 'city' => null,
45
+ 'state' => null,
46
+ 'postal_code' => null,
47
+ 'country' => 'US'
48
+ ),
49
+ 'first_name' => null,
50
+ 'last_name' => null,
51
+ 'additional_owners' => null,
52
+ 'verification' => array(
53
+ 'status' => 'unverified',
54
+ 'document' => null,
55
+ 'details' => null
56
+ )
57
+ )
58
+ );
59
+ }
60
+
61
+ private function deletedAccountResponse($id)
62
+ {
63
+ return array(
64
+ 'id' => $id,
65
+ 'deleted' => true
66
+ );
67
+ }
68
+
69
+ public function testBasicRetrieve()
70
+ {
71
+ $this->mockRequest('GET', '/v1/account', array(), $this->managedAccountResponse('acct_ABC'));
72
+ $account = Account::retrieve();
73
+ $this->assertSame($account->id, 'acct_ABC');
74
+ }
75
+
76
+ public function testIDRetrieve()
77
+ {
78
+ $this->mockRequest('GET', '/v1/accounts/acct_DEF', array(), $this->managedAccountResponse('acct_DEF'));
79
+ $account = Account::retrieve('acct_DEF');
80
+ $this->assertSame($account->id, 'acct_DEF');
81
+ }
82
+
83
+ public function testCreate()
84
+ {
85
+ $this->mockRequest(
86
+ 'POST',
87
+ '/v1/accounts',
88
+ array('managed' => 'true'),
89
+ $this->managedAccountResponse('acct_ABC')
90
+ );
91
+ $account = Account::create(array(
92
+ 'managed' => true
93
+ ));
94
+ $this->assertSame($account->id, 'acct_ABC');
95
+ }
96
+
97
+ public function testDelete()
98
+ {
99
+ $account = self::createTestAccount();
100
+
101
+ $this->mockRequest(
102
+ 'DELETE',
103
+ '/v1/accounts/' . $account->id,
104
+ array(),
105
+ $this->deletedAccountResponse('acct_ABC')
106
+ );
107
+ $deleted = $account->delete();
108
+ $this->assertSame($deleted->id, $account->id);
109
+ $this->assertTrue($deleted->deleted);
110
+ }
111
+
112
+ public function testReject()
113
+ {
114
+ $account = self::createTestAccount();
115
+
116
+ $this->mockRequest(
117
+ 'POST',
118
+ '/v1/accounts/' . $account->id . '/reject',
119
+ array('reason' => 'fraud'),
120
+ $this->deletedAccountResponse('acct_ABC')
121
+ );
122
+ $rejected = $account->reject(array('reason' => 'fraud'));
123
+ $this->assertSame($rejected->id, $account->id);
124
+ }
125
+
126
+ public function testSaveLegalEntity()
127
+ {
128
+ $response = $this->managedAccountResponse('acct_ABC');
129
+ $this->mockRequest('POST', '/v1/accounts', array('managed' => 'true'), $response);
130
+
131
+ $response['legal_entity']['first_name'] = 'Bob';
132
+ $this->mockRequest(
133
+ 'POST',
134
+ '/v1/accounts/acct_ABC',
135
+ array('legal_entity' => array('first_name' => 'Bob')),
136
+ $response
137
+ );
138
+
139
+ $account = Account::create(array('managed' => true));
140
+ $account->legal_entity->first_name = 'Bob';
141
+ $account->save();
142
+
143
+ $this->assertSame('Bob', $account->legal_entity->first_name);
144
+ }
145
+
146
+ public function testUpdateLegalEntity()
147
+ {
148
+ $response = $this->managedAccountResponse('acct_ABC');
149
+ $this->mockRequest('POST', '/v1/accounts', array('managed' => 'true'), $response);
150
+
151
+ $response['legal_entity']['first_name'] = 'Bob';
152
+ $this->mockRequest(
153
+ 'POST',
154
+ '/v1/accounts/acct_ABC',
155
+ array('legal_entity' => array('first_name' => 'Bob')),
156
+ $response
157
+ );
158
+
159
+ $account = Account::create(array('managed' => true));
160
+ $account = Account::update($account['id'], array(
161
+ 'legal_entity' => array(
162
+ 'first_name' => 'Bob'
163
+ )
164
+ ));
165
+
166
+ $this->assertSame('Bob', $account->legal_entity->first_name);
167
+ }
168
+
169
+ public function testCreateAdditionalOwners()
170
+ {
171
+ $request = array(
172
+ 'managed' => true,
173
+ 'country' => 'GB',
174
+ 'legal_entity' => array(
175
+ 'additional_owners' => array(
176
+ 0 => array(
177
+ 'dob' => array(
178
+ 'day' => 12,
179
+ 'month' => 5,
180
+ 'year' => 1970,
181
+ ),
182
+ 'first_name' => 'xgvukvfrde',
183
+ 'last_name' => 'rtcyvubhy',
184
+ ),
185
+ 1 => array(
186
+ 'dob' => array(
187
+ 'day' => 8,
188
+ 'month' => 4,
189
+ 'year' => 1979,
190
+ ),
191
+ 'first_name' => 'yutreuk',
192
+ 'last_name' => 'dfcgvhbjihmv',
193
+ ),
194
+ ),
195
+ ),
196
+ );
197
+
198
+ $acct = Account::create($request);
199
+ $response = $acct->__toArray(true);
200
+
201
+ $req_ao = $request['legal_entity']['additional_owners'];
202
+ $resp_ao = $response['legal_entity']['additional_owners'];
203
+
204
+ $this->assertSame($req_ao[0]['dob'], $resp_ao[0]['dob']);
205
+ $this->assertSame($req_ao[1]['dob'], $resp_ao[1]['dob']);
206
+
207
+ $this->assertSame($req_ao[0]['first_name'], $resp_ao[0]['first_name']);
208
+ $this->assertSame($req_ao[1]['first_name'], $resp_ao[1]['first_name']);
209
+ }
210
+
211
+ public function testUpdateAdditionalOwners()
212
+ {
213
+ $response = $this->managedAccountResponse('acct_ABC');
214
+ $this->mockRequest('POST', '/v1/accounts', array('managed' => 'true'), $response);
215
+
216
+ $response['legal_entity']['additional_owners'] = array(array(
217
+ 'first_name' => 'Bob',
218
+ 'last_name' => null,
219
+ 'address' => array(
220
+ 'line1' => null,
221
+ 'line2' => null,
222
+ 'city' => null,
223
+ 'state' => null,
224
+ 'postal_code' => null,
225
+ 'country' => null
226
+ ),
227
+ 'verification' => array(
228
+ 'status' => 'unverified',
229
+ 'document' => null,
230
+ 'details' => null
231
+ )
232
+ ));
233
+
234
+ $this->mockRequest(
235
+ 'POST',
236
+ '/v1/accounts/acct_ABC',
237
+ array('legal_entity' => array('additional_owners' => array(array('first_name' => 'Bob')))),
238
+ $response
239
+ );
240
+
241
+ $response['legal_entity']['additional_owners'][0]['last_name'] = 'Smith';
242
+ $this->mockRequest(
243
+ 'POST',
244
+ '/v1/accounts/acct_ABC',
245
+ array('legal_entity' => array('additional_owners' => array(array('last_name' => 'Smith')))),
246
+ $response
247
+ );
248
+
249
+ $response['legal_entity']['additional_owners'][0]['last_name'] = 'Johnson';
250
+ $this->mockRequest(
251
+ 'POST',
252
+ '/v1/accounts/acct_ABC',
253
+ array('legal_entity' => array('additional_owners' => array(array('last_name' => 'Johnson')))),
254
+ $response
255
+ );
256
+
257
+ $response['legal_entity']['additional_owners'][0]['verification']['document'] = 'file_123';
258
+ $this->mockRequest(
259
+ 'POST',
260
+ '/v1/accounts/acct_ABC',
261
+ array('legal_entity' => array('additional_owners' => array(array('verification' => array('document' => 'file_123'))))),
262
+ $response
263
+ );
264
+
265
+ $response['legal_entity']['additional_owners'][1] = array(
266
+ 'first_name' => 'Jane',
267
+ 'last_name' => 'Doe'
268
+ );
269
+ $this->mockRequest(
270
+ 'POST',
271
+ '/v1/accounts/acct_ABC',
272
+ array('legal_entity' => array('additional_owners' => array(1 => array('first_name' => 'Jane')))),
273
+ $response
274
+ );
275
+
276
+ $account = Account::create(array('managed' => true));
277
+ $account->legal_entity->additional_owners = array(array('first_name' => 'Bob'));
278
+ $account->save();
279
+ $this->assertSame(1, count($account->legal_entity->additional_owners));
280
+ $this->assertSame('Bob', $account->legal_entity->additional_owners[0]->first_name);
281
+
282
+ $account->legal_entity->additional_owners[0]->last_name = 'Smith';
283
+ $account->save();
284
+ $this->assertSame(1, count($account->legal_entity->additional_owners));
285
+ $this->assertSame('Smith', $account->legal_entity->additional_owners[0]->last_name);
286
+
287
+ $account['legal_entity']['additional_owners'][0]['last_name'] = 'Johnson';
288
+ $account->save();
289
+ $this->assertSame(1, count($account->legal_entity->additional_owners));
290
+ $this->assertSame('Johnson', $account->legal_entity->additional_owners[0]->last_name);
291
+
292
+ $account->legal_entity->additional_owners[0]->verification->document = 'file_123';
293
+ $account->save();
294
+ $this->assertSame('file_123', $account->legal_entity->additional_owners[0]->verification->document);
295
+
296
+ $account->legal_entity->additional_owners[1] = array('first_name' => 'Jane');
297
+ $account->save();
298
+ $this->assertSame('Jane', $account->legal_entity->additional_owners[1]->first_name);
299
+ }
300
+ }
lib/stripe/tests/ApiRequestorTest.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ use Stripe\HttpClient\CurlClient;
6
+
7
+ class ApiRequestorTest extends TestCase
8
+ {
9
+ public function testEncodeObjects()
10
+ {
11
+ $reflector = new \ReflectionClass('Stripe\\ApiRequestor');
12
+ $method = $reflector->getMethod('_encodeObjects');
13
+ $method->setAccessible(true);
14
+
15
+ $a = array('customer' => new Customer('abcd'));
16
+ $enc = $method->invoke(null, $a);
17
+ $this->assertSame($enc, array('customer' => 'abcd'));
18
+
19
+ // Preserves UTF-8
20
+ $v = array('customer' => "☃");
21
+ $enc = $method->invoke(null, $v);
22
+ $this->assertSame($enc, $v);
23
+
24
+ // Encodes latin-1 -> UTF-8
25
+ $v = array('customer' => "\xe9");
26
+ $enc = $method->invoke(null, $v);
27
+ $this->assertSame($enc, array('customer' => "\xc3\xa9"));
28
+ }
29
+
30
+ public function testHttpClientInjection()
31
+ {
32
+ $reflector = new \ReflectionClass('Stripe\\ApiRequestor');
33
+ $method = $reflector->getMethod('httpClient');
34
+ $method->setAccessible(true);
35
+
36
+ $curl = new CurlClient();
37
+ $curl->setTimeout(10);
38
+ ApiRequestor::setHttpClient($curl);
39
+
40
+ $injectedCurl = $method->invoke(new ApiRequestor());
41
+ $this->assertSame($injectedCurl, $curl);
42
+ }
43
+ }
lib/stripe/tests/ApplicationFeeRefundTest.php ADDED
@@ -0,0 +1,18 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class ApplicationFeeRefundTest extends TestCase
6
+ {
7
+ public function testUrls()
8
+ {
9
+ $refund = new ApplicationFeeRefund();
10
+ $refund->id = 'refund_id';
11
+ $refund->fee = 'fee_id';
12
+
13
+ $this->assertSame(
14
+ $refund->instanceUrl(),
15
+ '/v1/application_fees/fee_id/refunds/refund_id'
16
+ );
17
+ }
18
+ }
lib/stripe/tests/ApplicationFeeTest.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class ApplicationFeeTest extends TestCase
6
+ {
7
+ public function testUrls()
8
+ {
9
+ $applicationFee = new ApplicationFee('abcd/efgh');
10
+ $this->assertSame(
11
+ $applicationFee->instanceUrl(),
12
+ '/v1/application_fees/abcd%2Fefgh'
13
+ );
14
+ }
15
+
16
+ public function testList()
17
+ {
18
+ self::authorizeFromEnv();
19
+ $d = ApplicationFee::all();
20
+ $this->assertSame($d->url, '/v1/application_fees');
21
+ }
22
+ }
lib/stripe/tests/AuthenticationErrorTest.php ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class AuthenticationErrorTest extends TestCase
6
+ {
7
+ public function testInvalidCredentials()
8
+ {
9
+ Stripe::setApiKey('invalid');
10
+ try {
11
+ Customer::create();
12
+ } catch (Error\Authentication $e) {
13
+ $this->assertSame(401, $e->getHttpStatus());
14
+ }
15
+ }
16
+ }
lib/stripe/tests/BalanceTest.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class BalanceTest extends TestCase
6
+ {
7
+ public function testRetrieve()
8
+ {
9
+ self::authorizeFromEnv();
10
+ $d = Balance::retrieve();
11
+ $this->assertSame($d->object, "balance");
12
+ $this->assertTrue(Util\Util::isList($d->available));
13
+ $this->assertTrue(Util\Util::isList($d->pending));
14
+ }
15
+ }
lib/stripe/tests/BalanceTransactionTest.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class BalanceTransactionTest extends TestCase
6
+ {
7
+ public function testList()
8
+ {
9
+ self::authorizeFromEnv();
10
+ $d = BalanceTransaction::all();
11
+ $this->assertSame($d->url, '/v1/balance/history');
12
+ }
13
+ }
lib/stripe/tests/BankAccountTest.php ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class BankAccountTest extends TestCase
6
+ {
7
+ public function testVerify()
8
+ {
9
+ self::authorizeFromEnv();
10
+
11
+ $customer = self::createTestCustomer();
12
+
13
+ $bankAccount = $customer->sources->create(array(
14
+ 'source' => array(
15
+ 'object' => 'bank_account',
16
+ 'account_holder_type' => 'individual',
17
+ 'account_number' => '000123456789',
18
+ 'account_holder_name' => 'John Doe',
19
+ 'routing_number' => '110000000',
20
+ 'country' => 'US'
21
+ )
22
+ ));
23
+
24
+ $this->assertSame($bankAccount->status, 'new');
25
+
26
+ $bankAccount = $bankAccount->verify(array(
27
+ 'amounts' => array(32, 45)
28
+ ));
29
+
30
+ $this->assertSame($bankAccount->status, 'verified');
31
+ }
32
+ }
lib/stripe/tests/BitcoinReceiverTest.php ADDED
@@ -0,0 +1,120 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class BitcoinReceiverTest extends TestCase
6
+ {
7
+ public function testUrls()
8
+ {
9
+ $classUrl = BitcoinReceiver::classUrl('Stripe_BitcoinReceiver');
10
+ $this->assertSame($classUrl, '/v1/bitcoin/receivers');
11
+ $receiver = new BitcoinReceiver('abcd/efgh');
12
+ $instanceUrl = $receiver->instanceUrl();
13
+ $this->assertSame($instanceUrl, '/v1/bitcoin/receivers/abcd%2Fefgh');
14
+ }
15
+
16
+ public function testCreate()
17
+ {
18
+ self::authorizeFromEnv();
19
+
20
+ $receiver = $this->createTestBitcoinReceiver("do+fill_now@stripe.com");
21
+
22
+ $this->assertSame(100, $receiver->amount);
23
+ $this->assertNotNull($receiver->id);
24
+ }
25
+
26
+ public function testRetrieve()
27
+ {
28
+ self::authorizeFromEnv();
29
+
30
+ $receiver = $this->createTestBitcoinReceiver("do+fill_now@stripe.com");
31
+
32
+ $r = BitcoinReceiver::retrieve($receiver->id);
33
+ $this->assertSame($receiver->id, $r->id);
34
+
35
+ $this->assertInstanceOf('Stripe\\BitcoinTransaction', $r->transactions->data[0]);
36
+ }
37
+
38
+ public function testList()
39
+ {
40
+ self::authorizeFromEnv();
41
+
42
+ $receiver = $this->createTestBitcoinReceiver("do+fill_now@stripe.com");
43
+
44
+ $receivers = BitcoinReceiver::all();
45
+ $this->assertTrue(count($receivers->data) > 0);
46
+ }
47
+
48
+ public function testListTransactions()
49
+ {
50
+ self::authorizeFromEnv();
51
+
52
+ $receiver = $this->createTestBitcoinReceiver("do+fill_now@stripe.com");
53
+ $this->assertSame(0, count($receiver->transactions->data));
54
+
55
+ $transactions = $receiver->transactions->all(array("limit" => 1));
56
+ $this->assertSame(1, count($transactions->data));
57
+ }
58
+
59
+ public function testDeleteWithCustomer()
60
+ {
61
+ self::authorizeFromEnv();
62
+ $receiver = $this->createTestBitcoinReceiver("do+fill_now@stripe.com");
63
+ $customer = Customer::create(array("source" => $receiver->id));
64
+ $charge = Charge::create(array(
65
+ "customer" => $customer->id,
66
+ "amount" => $receiver->amount,
67
+ "currency" => $receiver->currency
68
+ ));
69
+ $receiver = BitcoinReceiver::retrieve($receiver->id);
70
+ $response = $receiver->delete();
71
+ $this->assertTrue($response->deleted);
72
+ }
73
+
74
+ public function testUpdateWithCustomer()
75
+ {
76
+ self::authorizeFromEnv();
77
+ $receiver = $this->createTestBitcoinReceiver("do+fill_now@stripe.com");
78
+ $customer = Customer::create(array("source" => $receiver->id));
79
+ $receiver = BitcoinReceiver::retrieve($receiver->id);
80
+
81
+ $receiver->description = "a new description";
82
+ $receiver->save();
83
+
84
+ $base = Customer::classUrl();
85
+ $parentExtn = $receiver['customer'];
86
+ $extn = $receiver['id'];
87
+ $this->assertEquals("$base/$parentExtn/sources/$extn", $receiver->instanceUrl());
88
+
89
+ $updatedReceiver = BitcoinReceiver::retrieve($receiver->id);
90
+ $this->assertEquals($receiver["description"], $updatedReceiver["description"]);
91
+ }
92
+
93
+ public function testUpdateWithoutCustomer()
94
+ {
95
+ self::authorizeFromEnv();
96
+ $receiver = $this->createTestBitcoinReceiver("do+fill_now@stripe.com");
97
+
98
+ $receiver->description = "a new description";
99
+ $receiver->save();
100
+
101
+ $this->assertEquals(BitcoinReceiver::classUrl() . "/" . $receiver['id'], $receiver->instanceUrl());
102
+
103
+ $updatedReceiver = BitcoinReceiver::retrieve($receiver->id);
104
+ $this->assertEquals($receiver["description"], $updatedReceiver["description"]);
105
+ }
106
+
107
+ public function testRefund()
108
+ {
109
+ self::authorizeFromEnv();
110
+ $receiver = $this->createTestBitcoinReceiver("do+fill_now@stripe.com");
111
+
112
+ $receiver = BitcoinReceiver::retrieve($receiver->id);
113
+ $this->assertNull($receiver->refund_address);
114
+
115
+ $refundAddress = "REFUNDHERE";
116
+ $receiver->refund(array("refund_address" => $refundAddress));
117
+
118
+ $this->assertSame($refundAddress, $receiver->refund_address);
119
+ }
120
+ }
lib/stripe/tests/CardErrorTest.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class CardErrorTest extends TestCase
6
+ {
7
+ public function testDecline()
8
+ {
9
+ self::authorizeFromEnv();
10
+
11
+ $card = array(
12
+ 'number' => '4000000000000002',
13
+ 'exp_month' => '3',
14
+ 'exp_year' => '2020'
15
+ );
16
+
17
+ $charge = array(
18
+ 'amount' => 100,
19
+ 'currency' => 'usd',
20
+ 'card' => $card
21
+ );
22
+
23
+ try {
24
+ Charge::create($charge);
25
+ } catch (Error\Card $e) {
26
+ $this->assertSame(402, $e->getHttpStatus());
27
+ $this->assertTrue(strpos($e->getRequestId(), "req_") === 0, $e->getRequestId());
28
+ $actual = $e->getJsonBody();
29
+ $this->assertSame(
30
+ array('error' => array(
31
+ 'message' => 'Your card was declined.',
32
+ 'type' => 'card_error',
33
+ 'code' => 'card_declined',
34
+ 'charge' => $actual['error']['charge'],
35
+ )),
36
+ $actual
37
+ );
38
+ }
39
+ }
40
+ }
lib/stripe/tests/ChargeTest.php ADDED
@@ -0,0 +1,204 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class ChargeTest extends TestCase
6
+ {
7
+ public function testUrls()
8
+ {
9
+ $this->assertSame(Charge::classUrl(), '/v1/charges');
10
+ $charge = new Charge('abcd/efgh');
11
+ $this->assertSame($charge->instanceUrl(), '/v1/charges/abcd%2Fefgh');
12
+ }
13
+
14
+ public function testCreate()
15
+ {
16
+ self::authorizeFromEnv();
17
+
18
+ $card = array(
19
+ 'number' => '4242424242424242',
20
+ 'exp_month' => 5,
21
+ 'exp_year' => date('Y') + 1
22
+ );
23
+
24
+ $c = Charge::create(
25
+ array(
26
+ 'amount' => 100,
27
+ 'currency' => 'usd',
28
+ 'card' => $card
29
+ )
30
+ );
31
+ $this->assertTrue($c->paid);
32
+ $this->assertFalse($c->refunded);
33
+ }
34
+
35
+ public function testIdempotentCreate()
36
+ {
37
+ self::authorizeFromEnv();
38
+
39
+ $card = array(
40
+ 'number' => '4242424242424242',
41
+ 'exp_month' => 5,
42
+ 'exp_year' => date('Y') + 1
43
+ );
44
+
45
+ $c = Charge::create(
46
+ array(
47
+ 'amount' => 100,
48
+ 'currency' => 'usd',
49
+ 'card' => $card
50
+ ),
51
+ array(
52
+ 'idempotency_key' => self::generateRandomString(),
53
+ )
54
+ );
55
+
56
+ $this->assertTrue($c->paid);
57
+ $this->assertSame(200, $c->getLastResponse()->code);
58
+ }
59
+
60
+ public function testRetrieve()
61
+ {
62
+ self::authorizeFromEnv();
63
+
64
+ $card = array(
65
+ 'number' => '4242424242424242',
66
+ 'exp_month' => 5,
67
+ 'exp_year' => date('Y') + 1
68
+ );
69
+
70
+ $c = Charge::create(
71
+ array(
72
+ 'amount' => 100,
73
+ 'currency' => 'usd',
74
+ 'card' => $card
75
+ )
76
+ );
77
+ $d = Charge::retrieve($c->id);
78
+ $this->assertSame(200, $d->getLastResponse()->code);
79
+ $this->assertSame($d->id, $c->id);
80
+ }
81
+
82
+ public function testUpdateMetadata()
83
+ {
84
+ self::authorizeFromEnv();
85
+
86
+ $card = array(
87
+ 'number' => '4242424242424242',
88
+ 'exp_month' => 5,
89
+ 'exp_year' => date('Y') + 1
90
+ );
91
+
92
+ $charge = Charge::create(
93
+ array(
94
+ 'amount' => 100,
95
+ 'currency' => 'usd',
96
+ 'card' => $card
97
+ )
98
+ );
99
+
100
+ $charge->metadata['test'] = 'foo bar';
101
+ $charge->save();
102
+
103
+ $updatedCharge = Charge::retrieve($charge->id);
104
+ $this->assertSame('foo bar', $updatedCharge->metadata['test']);
105
+ }
106
+
107
+ public function testUpdateMetadataAll()
108
+ {
109
+ self::authorizeFromEnv();
110
+
111
+ $card = array(
112
+ 'number' => '4242424242424242',
113
+ 'exp_month' => 5,
114
+ 'exp_year' => date('Y') + 1
115
+ );
116
+
117
+ $charge = Charge::create(
118
+ array(
119
+ 'amount' => 100,
120
+ 'currency' => 'usd',
121
+ 'card' => $card
122
+ )
123
+ );
124
+
125
+ $charge->metadata = array('test' => 'foo bar');
126
+ $charge->save();
127
+ $this->assertSame(200, $charge->getLastResponse()->code);
128
+
129
+ $updatedCharge = Charge::retrieve($charge->id);
130
+ $this->assertSame('foo bar', $updatedCharge->metadata['test']);
131
+ }
132
+
133
+ public function testMarkAsFraudulent()
134
+ {
135
+ self::authorizeFromEnv();
136
+
137
+ $card = array(
138
+ 'number' => '4242424242424242',
139
+ 'exp_month' => 5,
140
+ 'exp_year' => date('Y') + 1
141
+ );
142
+
143
+ $charge = Charge::create(
144
+ array(
145
+ 'amount' => 100,
146
+ 'currency' => 'usd',
147
+ 'card' => $card
148
+ )
149
+ );
150
+
151
+ $charge->refunds->create();
152
+ $charge->markAsFraudulent();
153
+
154
+ $updatedCharge = Charge::retrieve($charge->id);
155
+ $this->assertSame(
156
+ 'fraudulent',
157
+ $updatedCharge['fraud_details']['user_report']
158
+ );
159
+ }
160
+
161
+ public function testCreateWithBitcoinReceiverSource()
162
+ {
163
+ self::authorizeFromEnv();
164
+
165
+ $receiver = $this->createTestBitcoinReceiver("do+fill_now@stripe.com");
166
+
167
+ $charge = Charge::create(
168
+ array(
169
+ 'amount' => 100,
170
+ 'currency' => 'usd',
171
+ 'source' => $receiver->id
172
+ )
173
+ );
174
+
175
+ $this->assertSame($receiver->id, $charge->source->id);
176
+ $this->assertSame("bitcoin_receiver", $charge->source->object);
177
+ $this->assertSame("succeeded", $charge->status);
178
+ $this->assertInstanceOf('Stripe\\BitcoinReceiver', $charge->source);
179
+ }
180
+
181
+ public function markAsSafe()
182
+ {
183
+ self::authorizeFromEnv();
184
+
185
+ $card = array(
186
+ 'number' => '4242424242424242',
187
+ 'exp_month' => 5,
188
+ 'exp_year' => date('Y') + 1
189
+ );
190
+
191
+ $charge = Charge::create(
192
+ array(
193
+ 'amount' => 100,
194
+ 'currency' => 'usd',
195
+ 'card' => $card
196
+ )
197
+ );
198
+
199
+ $charge->markAsSafe();
200
+
201
+ $updatedCharge = Charge::retrieve($charge->id);
202
+ $this->assertSame('safe', $updatedCharge['fraud_details']['user_report']);
203
+ }
204
+ }
lib/stripe/tests/CollectionTest.php ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class CollectionTest extends TestCase
6
+ {
7
+ private function pageableModelResponse($ids, $hasMore)
8
+ {
9
+ $data = array();
10
+ foreach ($ids as $id) {
11
+ array_push($data, array(
12
+ 'id' => $id,
13
+ 'object' => 'pageablemodel'
14
+ ));
15
+ }
16
+ return array(
17
+ 'object' => 'list',
18
+ 'url' => '/v1/pageablemodels',
19
+ 'data' => $data,
20
+ 'has_more' => $hasMore
21
+ );
22
+ }
23
+
24
+ public function testAutoPagingOnePage()
25
+ {
26
+ $collection = Collection::constructFrom(
27
+ $this->pageableModelResponse(array('pm_123', 'pm_124'), false),
28
+ new Util\RequestOptions()
29
+ );
30
+
31
+ $seen = array();
32
+ foreach ($collection->autoPagingIterator() as $item) {
33
+ array_push($seen, $item['id']);
34
+ }
35
+
36
+ $this->assertSame($seen, array('pm_123', 'pm_124'));
37
+ }
38
+
39
+ public function testAutoPagingThreePages()
40
+ {
41
+ $collection = Collection::constructFrom(
42
+ $this->pageableModelResponse(array('pm_123', 'pm_124'), true),
43
+ new Util\RequestOptions()
44
+ );
45
+ $collection->setRequestParams(array('foo' => 'bar'));
46
+
47
+ $this->mockRequest(
48
+ 'GET',
49
+ '/v1/pageablemodels',
50
+ array(
51
+ 'foo' => 'bar',
52
+ 'starting_after' => 'pm_124'
53
+ ),
54
+ $this->pageableModelResponse(array('pm_125', 'pm_126'), true)
55
+ );
56
+ $this->mockRequest(
57
+ 'GET',
58
+ '/v1/pageablemodels',
59
+ array(
60
+ 'foo' => 'bar',
61
+ 'starting_after' => 'pm_126'
62
+ ),
63
+ $this->pageableModelResponse(array('pm_127'), false)
64
+ );
65
+
66
+ $seen = array();
67
+ foreach ($collection->autoPagingIterator() as $item) {
68
+ array_push($seen, $item['id']);
69
+ }
70
+
71
+ $this->assertSame($seen, array('pm_123', 'pm_124', 'pm_125', 'pm_126', 'pm_127'));
72
+ }
73
+
74
+ public function testIteratorToArray()
75
+ {
76
+ $collection = Collection::constructFrom(
77
+ $this->pageableModelResponse(array('pm_123', 'pm_124'), true),
78
+ new Util\RequestOptions()
79
+ );
80
+
81
+ $this->mockRequest(
82
+ 'GET',
83
+ '/v1/pageablemodels',
84
+ array(
85
+ 'starting_after' => 'pm_124'
86
+ ),
87
+ $this->pageableModelResponse(array('pm_125', 'pm_126'), true)
88
+ );
89
+ $this->mockRequest(
90
+ 'GET',
91
+ '/v1/pageablemodels',
92
+ array(
93
+ 'starting_after' => 'pm_126'
94
+ ),
95
+ $this->pageableModelResponse(array('pm_127'), false)
96
+ );
97
+
98
+ $seen = array();
99
+ foreach (iterator_to_array($collection->autoPagingIterator()) as $item) {
100
+ array_push($seen, $item['id']);
101
+ }
102
+
103
+ $this->assertSame($seen, array('pm_123', 'pm_124', 'pm_125', 'pm_126', 'pm_127'));
104
+ }
105
+ }
lib/stripe/tests/CountrySpecTest.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class CountrySpecTest extends TestCase
6
+ {
7
+ public function testRetrieve()
8
+ {
9
+ self::authorizeFromEnv();
10
+
11
+ $country = "US";
12
+ $d = CountrySpec::retrieve($country);
13
+ $this->assertSame($d->object, "country_spec");
14
+ $this->assertSame($d->id, $country);
15
+ $this->assertGreaterThan(0, count($d->supported_bank_account_currencies));
16
+ $this->assertGreaterThan(0, count($d->supported_payment_currencies));
17
+ $this->assertGreaterThan(0, count($d->supported_payment_methods));
18
+ $this->assertGreaterThan(0, count($d->verification_fields));
19
+ }
20
+
21
+ public function testList()
22
+ {
23
+ self::authorizeFromEnv();
24
+
25
+ $d = CountrySpec::all();
26
+ $this->assertSame($d->object, "list");
27
+ $this->assertGreaterThan(0, count($d->data));
28
+ $this->assertSame($d->data[0]->object, "country_spec");
29
+ $this->assertInstanceOf("Stripe\\CountrySpec", $d->data[0]);
30
+ }
31
+ }
lib/stripe/tests/CouponTest.php ADDED
@@ -0,0 +1,29 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class CouponTest extends TestCase
6
+ {
7
+ public function testSave()
8
+ {
9
+ self::authorizeFromEnv();
10
+ $id = 'test_coupon-' . self::generateRandomString(20);
11
+ $c = Coupon::create(
12
+ array(
13
+ 'percent_off' => 25,
14
+ 'duration' => 'repeating',
15
+ 'duration_in_months' => 5,
16
+ 'id' => $id,
17
+ )
18
+ );
19
+ $this->assertSame($id, $c->id);
20
+ // @codingStandardsIgnoreStart
21
+ $this->assertSame(25, $c->percent_off);
22
+ // @codingStandardsIgnoreEnd
23
+ $c->metadata['foo'] = 'bar';
24
+ $c->save();
25
+
26
+ $stripeCoupon = Coupon::retrieve($id);
27
+ $this->assertEquals($c->metadata, $stripeCoupon->metadata);
28
+ }
29
+ }
lib/stripe/tests/CurlClientTest.php ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ use Stripe\HttpClient\CurlClient;
6
+
7
+ class CurlClientTest extends TestCase
8
+ {
9
+ public function testTimeout()
10
+ {
11
+ $curl = new CurlClient();
12
+ $this->assertSame(CurlClient::DEFAULT_TIMEOUT, $curl->getTimeout());
13
+ $this->assertSame(CurlClient::DEFAULT_CONNECT_TIMEOUT, $curl->getConnectTimeout());
14
+
15
+ // implicitly tests whether we're returning the CurlClient instance
16
+ $curl = $curl->setConnectTimeout(1)->setTimeout(10);
17
+ $this->assertSame(1, $curl->getConnectTimeout());
18
+ $this->assertSame(10, $curl->getTimeout());
19
+
20
+ $curl->setTimeout(-1);
21
+ $curl->setConnectTimeout(-999);
22
+ $this->assertSame(0, $curl->getTimeout());
23
+ $this->assertSame(0, $curl->getConnectTimeout());
24
+ }
25
+
26
+ public function testDefaultOptions()
27
+ {
28
+ // make sure options array loads/saves properly
29
+ $optionsArray = array(CURLOPT_PROXY => 'localhost:80');
30
+ $withOptionsArray = new CurlClient($optionsArray);
31
+ $this->assertSame($withOptionsArray->getDefaultOptions(), $optionsArray);
32
+
33
+ // make sure closure-based options work properly, including argument passing
34
+ $ref = null;
35
+ $withClosure = new CurlClient(function ($method, $absUrl, $headers, $params, $hasFile) use (&$ref) {
36
+ $ref = func_get_args();
37
+ return array();
38
+ });
39
+
40
+ $withClosure->request('get', 'https://httpbin.org/status/200', array(), array(), false);
41
+ $this->assertSame($ref, array('get', 'https://httpbin.org/status/200', array(), array(), false));
42
+
43
+ // this is the last test case that will run, since it'll throw an exception at the end
44
+ $withBadClosure = new CurlClient(function () {
45
+ return 'thisShouldNotWork';
46
+ });
47
+ $this->setExpectedException('Stripe\Error\Api', "Non-array value returned by defaultOptions CurlClient callback");
48
+ $withBadClosure->request('get', 'https://httpbin.org/status/200', array(), array(), false);
49
+ }
50
+
51
+ public function testEncode()
52
+ {
53
+ $a = array(
54
+ 'my' => 'value',
55
+ 'that' => array('your' => 'example'),
56
+ 'bar' => 1,
57
+ 'baz' => null
58
+ );
59
+
60
+ $enc = CurlClient::encode($a);
61
+ $this->assertSame('my=value&that%5Byour%5D=example&bar=1', $enc);
62
+
63
+ $a = array('that' => array('your' => 'example', 'foo' => null));
64
+ $enc = CurlClient::encode($a);
65
+ $this->assertSame('that%5Byour%5D=example', $enc);
66
+
67
+ $a = array('that' => 'example', 'foo' => array('bar', 'baz'));
68
+ $enc = CurlClient::encode($a);
69
+ $this->assertSame('that=example&foo%5B%5D=bar&foo%5B%5D=baz', $enc);
70
+
71
+ $a = array(
72
+ 'my' => 'value',
73
+ 'that' => array('your' => array('cheese', 'whiz', null)),
74
+ 'bar' => 1,
75
+ 'baz' => null
76
+ );
77
+
78
+ $enc = CurlClient::encode($a);
79
+ $expected = 'my=value&that%5Byour%5D%5B%5D=cheese'
80
+ . '&that%5Byour%5D%5B%5D=whiz&bar=1';
81
+ $this->assertSame($expected, $enc);
82
+
83
+ // Ignores an empty array
84
+ $enc = CurlClient::encode(array('foo' => array(), 'bar' => 'baz'));
85
+ $expected = 'bar=baz';
86
+ $this->assertSame($expected, $enc);
87
+
88
+ $a = array('foo' => array(array('bar' => 'baz'), array('bar' => 'bin')));
89
+ $enc = CurlClient::encode($a);
90
+ $this->assertSame('foo%5B0%5D%5Bbar%5D=baz&foo%5B1%5D%5Bbar%5D=bin', $enc);
91
+ }
92
+ }
lib/stripe/tests/CustomerTest.php ADDED
@@ -0,0 +1,278 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class CustomerTest extends TestCase
6
+ {
7
+ public function testDeletion()
8
+ {
9
+ $customer = self::createTestCustomer();
10
+ $customer->delete();
11
+
12
+ $this->assertTrue($customer->deleted);
13
+ $this->assertNull($customer['active_card']);
14
+ }
15
+
16
+ public function testSave()
17
+ {
18
+ $customer = self::createTestCustomer();
19
+
20
+ $customer->email = 'gdb@stripe.com';
21
+ $customer->save();
22
+ $this->assertSame($customer->email, 'gdb@stripe.com');
23
+
24
+ $stripeCustomer = Customer::retrieve($customer->id);
25
+ $this->assertSame($customer->email, $stripeCustomer->email);
26
+
27
+ Stripe::setApiKey(null);
28
+ $customer = Customer::create(null, self::API_KEY);
29
+ $customer->email = 'gdb@stripe.com';
30
+ $customer->save();
31
+
32
+ self::authorizeFromEnv();
33
+ $updatedCustomer = Customer::retrieve($customer->id);
34
+ $this->assertSame($updatedCustomer->email, 'gdb@stripe.com');
35
+ }
36
+
37
+ /**
38
+ * @expectedException Stripe\Error\InvalidRequest
39
+ */
40
+ public function testBogusAttribute()
41
+ {
42
+ $customer = self::createTestCustomer();
43
+ $customer->bogus = 'bogus';
44
+ $customer->save();
45
+ }
46
+
47
+ /**
48
+ * @expectedException InvalidArgumentException
49
+ */
50
+ public function testUpdateDescriptionEmpty()
51
+ {
52
+ $customer = self::createTestCustomer();
53
+ $customer->description = '';
54
+ }
55
+
56
+ public function testUpdateDescriptionNull()
57
+ {
58
+ $customer = self::createTestCustomer(array('description' => 'foo bar'));
59
+ $customer->description = null;
60
+
61
+ $customer->save();
62
+
63
+ $updatedCustomer = Customer::retrieve($customer->id);
64
+ $this->assertSame(null, $updatedCustomer->description);
65
+ }
66
+
67
+ public function testUpdateMetadata()
68
+ {
69
+ $customer = self::createTestCustomer();
70
+
71
+ $customer->metadata['test'] = 'foo bar';
72
+ $customer->save();
73
+
74
+ $updatedCustomer = Customer::retrieve($customer->id);
75
+ $this->assertSame('foo bar', $updatedCustomer->metadata['test']);
76
+ }
77
+
78
+ public function testDeleteMetadata()
79
+ {
80
+ $customer = self::createTestCustomer();
81
+
82
+ $customer->metadata = null;
83
+ $customer->save();
84
+
85
+ $updatedCustomer = Customer::retrieve($customer->id);
86
+ $this->assertSame(0, count($updatedCustomer->metadata->keys()));
87
+ }
88
+
89
+ public function testUpdateSomeMetadata()
90
+ {
91
+ $customer = self::createTestCustomer();
92
+ $customer->metadata['shoe size'] = '7';
93
+ $customer->metadata['shirt size'] = 'XS';
94
+ $customer->save();
95
+
96
+ $customer->metadata['shoe size'] = '9';
97
+ $customer->save();
98
+
99
+ $updatedCustomer = Customer::retrieve($customer->id);
100
+ $this->assertSame('XS', $updatedCustomer->metadata['shirt size']);
101
+ $this->assertSame('9', $updatedCustomer->metadata['shoe size']);
102
+ }
103
+
104
+ public function testUpdateAllMetadata()
105
+ {
106
+ $customer = self::createTestCustomer();
107
+ $customer->metadata['shoe size'] = '7';
108
+ $customer->metadata['shirt size'] = 'XS';
109
+ $customer->save();
110
+
111
+ $customer->metadata = array('shirt size' => 'XL');
112
+ $customer->save();
113
+
114
+ $updatedCustomer = Customer::retrieve($customer->id);
115
+ $this->assertSame('XL', $updatedCustomer->metadata['shirt size']);
116
+ $this->assertFalse(isset($updatedCustomer->metadata['shoe size']));
117
+ }
118
+
119
+ /**
120
+ * @expectedException Stripe\Error\InvalidRequest
121
+ */
122
+ public function testUpdateInvalidMetadata()
123
+ {
124
+ $customer = self::createTestCustomer();
125
+ $customer->metadata = 'something';
126
+ $customer->save();
127
+ }
128
+
129
+ public function testCancelSubscription()
130
+ {
131
+ $planID = 'gold-' . self::generateRandomString(20);
132
+ self::retrieveOrCreatePlan($planID);
133
+
134
+ $customer = self::createTestCustomer(
135
+ array(
136
+ 'plan' => $planID,
137
+ )
138
+ );
139
+
140
+ $customer->cancelSubscription(array('at_period_end' => true));
141
+ $this->assertSame($customer->subscription->status, 'active');
142
+ $this->assertTrue($customer->subscription->cancel_at_period_end);
143
+ $customer->cancelSubscription();
144
+ $this->assertSame($customer->subscription->status, 'canceled');
145
+ }
146
+
147
+ public function testCustomerAddCard()
148
+ {
149
+ $token = Token::create(
150
+ array("card" => array(
151
+ "number" => "4242424242424242",
152
+ "exp_month" => 5,
153
+ "exp_year" => date('Y') + 3,
154
+ "cvc" => "314"
155
+ ))
156
+ );
157
+
158
+ $customer = $this->createTestCustomer();
159
+ $createdCard = $customer->sources->create(array("card" => $token->id));
160
+ $customer->save();
161
+
162
+ $updatedCustomer = Customer::retrieve($customer->id);
163
+ $updatedCards = $updatedCustomer->sources->all();
164
+ $this->assertSame(count($updatedCards["data"]), 2);
165
+ }
166
+
167
+ public function testCustomerUpdateCard()
168
+ {
169
+ $customer = $this->createTestCustomer();
170
+ $customer->save();
171
+
172
+ $sources = $customer->sources->all();
173
+ $this->assertSame(count($sources["data"]), 1);
174
+
175
+ $card = $sources['data'][0];
176
+ $card->name = "Jane Austen";
177
+ $card->save();
178
+
179
+ $updatedCustomer = Customer::retrieve($customer->id);
180
+ $updatedCards = $updatedCustomer->sources->all();
181
+ $this->assertSame($updatedCards["data"][0]->name, "Jane Austen");
182
+ }
183
+
184
+ public function testCustomerDeleteCard()
185
+ {
186
+ $token = Token::create(
187
+ array("card" => array(
188
+ "number" => "4242424242424242",
189
+ "exp_month" => 5,
190
+ "exp_year" => date('Y') + 3,
191
+ "cvc" => "314"
192
+ ))
193
+ );
194
+
195
+ $customer = $this->createTestCustomer();
196
+ $createdCard = $customer->sources->create(array("card" => $token->id));
197
+ $customer->save();
198
+
199
+ $updatedCustomer = Customer::retrieve($customer->id);
200
+ $updatedCards = $updatedCustomer->sources->all();
201
+ $this->assertSame(count($updatedCards["data"]), 2);
202
+
203
+ $deleteStatus = $updatedCustomer->sources->retrieve($createdCard->id)->delete();
204
+ $this->assertTrue($deleteStatus->deleted);
205
+ $updatedCustomer->save();
206
+
207
+ $postDeleteCustomer = Customer::retrieve($customer->id);
208
+ $postDeleteCards = $postDeleteCustomer->sources->all();
209
+ $this->assertSame(count($postDeleteCards["data"]), 1);
210
+ }
211
+
212
+ public function testCustomerAddSource()
213
+ {
214
+ self::authorizeFromEnv();
215
+ $token = Token::create(
216
+ array("card" => array(
217
+ "number" => "4242424242424242",
218
+ "exp_month" => 5,
219
+ "exp_year" => date('Y') + 3,
220
+ "cvc" => "314"
221
+ ))
222
+ );
223
+
224
+ $customer = $this->createTestCustomer();
225
+ $createdSource = $customer->sources->create(array("source" => $token->id));
226
+ $customer->save();
227
+
228
+ $updatedCustomer = Customer::retrieve($customer->id);
229
+ $updatedSources = $updatedCustomer->sources->all();
230
+ $this->assertSame(count($updatedSources["data"]), 2);
231
+ }
232
+
233
+ public function testCustomerUpdateSource()
234
+ {
235
+ $customer = $this->createTestCustomer();
236
+ $customer->save();
237
+
238
+ $sources = $customer->sources->all();
239
+ $this->assertSame(count($sources["data"]), 1);
240
+
241
+ $source = $sources['data'][0];
242
+ $source->name = "Jane Austen";
243
+ $source->save();
244
+
245
+ $updatedCustomer = Customer::retrieve($customer->id);
246
+ $updatedSources = $updatedCustomer->sources->all();
247
+ $this->assertSame($updatedSources["data"][0]->name, "Jane Austen");
248
+ }
249
+
250
+ public function testCustomerDeleteSource()
251
+ {
252
+ self::authorizeFromEnv();
253
+ $token = Token::create(
254
+ array("card" => array(
255
+ "number" => "4242424242424242",
256
+ "exp_month" => 5,
257
+ "exp_year" => date('Y') + 3,
258
+ "cvc" => "314"
259
+ ))
260
+ );
261
+
262
+ $customer = $this->createTestCustomer();
263
+ $createdSource = $customer->sources->create(array("source" => $token->id));
264
+ $customer->save();
265
+
266
+ $updatedCustomer = Customer::retrieve($customer->id);
267
+ $updatedSources = $updatedCustomer->sources->all();
268
+ $this->assertSame(count($updatedSources["data"]), 2);
269
+
270
+ $deleteStatus = $updatedCustomer->sources->retrieve($createdSource->id)->delete();
271
+ $this->assertTrue($deleteStatus->deleted);
272
+ $updatedCustomer->save();
273
+
274
+ $postDeleteCustomer = Customer::retrieve($customer->id);
275
+ $postDeleteSources = $postDeleteCustomer->sources->all();
276
+ $this->assertSame(count($postDeleteSources["data"]), 1);
277
+ }
278
+ }
lib/stripe/tests/DiscountTest.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class DiscountTest extends TestCase
6
+ {
7
+ public function testDeletion()
8
+ {
9
+ self::authorizeFromEnv();
10
+ $id = 'test-coupon-' . self::generateRandomString(20);
11
+ $coupon = Coupon::create(
12
+ array(
13
+ 'percent_off' => 25,
14
+ 'duration' => 'repeating',
15
+ 'duration_in_months' => 5,
16
+ 'id' => $id,
17
+ )
18
+ );
19
+ $customer = self::createTestCustomer(array('coupon' => $id));
20
+
21
+ $this->assertTrue(isset($customer->discount));
22
+ $this->assertTrue(isset($customer->discount->coupon));
23
+ $this->assertSame($id, $customer->discount->coupon->id);
24
+
25
+ $customer->deleteDiscount();
26
+ $this->assertFalse(isset($customer->discount));
27
+
28
+ $customer = Customer::retrieve($customer->id);
29
+ $this->assertFalse(isset($customer->discount));
30
+ }
31
+ }
lib/stripe/tests/DisputeTest.php ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class DisputeTest extends TestCase
6
+ {
7
+ public function testUrls()
8
+ {
9
+ $this->assertSame(Dispute::classUrl(), '/v1/disputes');
10
+ $dispute = new Dispute('dp_123');
11
+ $this->assertSame($dispute->instanceUrl(), '/v1/disputes/dp_123');
12
+ }
13
+
14
+ private function createDisputedCharge()
15
+ {
16
+ $card = array(
17
+ 'number' => '4000000000000259',
18
+ 'exp_month' => 5,
19
+ 'exp_year' => date('Y') + 1
20
+ );
21
+
22
+ $c = Charge::create(
23
+ array(
24
+ 'amount' => 100,
25
+ 'currency' => 'usd',
26
+ 'card' => $card
27
+ )
28
+ );
29
+ $c = Charge::retrieve($c->id);
30
+
31
+ $attempts = 0;
32
+
33
+ while ($c->dispute === null) {
34
+ if ($attempts > 5) {
35
+ throw new \Exception("Charge is taking too long to be disputed");
36
+ }
37
+ sleep(1);
38
+ $c = Charge::retrieve($c->id);
39
+ $attempts += 1;
40
+ }
41
+
42
+ return $c;
43
+ }
44
+
45
+ public function testAll()
46
+ {
47
+ self::authorizeFromEnv();
48
+
49
+ $sublist = Dispute::all(
50
+ array(
51
+ 'limit' => 3,
52
+ )
53
+ );
54
+ $this->assertSame(3, count($sublist->data));
55
+ }
56
+
57
+
58
+ public function testUpdate()
59
+ {
60
+ self::authorizeFromEnv();
61
+
62
+ $c = $this->createDisputedCharge();
63
+
64
+ $d = $c->dispute;
65
+ $d->evidence["customer_name"] = "Bob";
66
+ $s = $d->save();
67
+
68
+ $this->assertSame($d->id, $s->id);
69
+ $this->assertSame("Bob", $s->evidence["customer_name"]);
70
+ }
71
+
72
+ public function testClose()
73
+ {
74
+ self::authorizeFromEnv();
75
+
76
+ $c = $this->createDisputedCharge();
77
+
78
+ $d = $c->dispute->close();
79
+ $this->assertSame("lost", $d->status);
80
+ }
81
+
82
+ public function testRetrieve()
83
+ {
84
+ self::authorizeFromEnv();
85
+
86
+ $c = $this->createDisputedCharge();
87
+
88
+ $d = Dispute::retrieve($c->dispute->id);
89
+ $this->assertSame($d->id, $c->dispute->id);
90
+ }
91
+ }
lib/stripe/tests/ErrorTest.php ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class ErrorTest extends TestCase
6
+ {
7
+ public function testCreation()
8
+ {
9
+ try {
10
+ throw new Error\Api(
11
+ "hello",
12
+ 500,
13
+ "{'foo':'bar'}",
14
+ array('foo' => 'bar')
15
+ );
16
+ $this->fail("Did not raise error");
17
+ } catch (Error\Api $e) {
18
+ $this->assertSame("hello", $e->getMessage());
19
+ $this->assertSame(500, $e->getHttpStatus());
20
+ $this->assertSame("{'foo':'bar'}", $e->getHttpBody());
21
+ $this->assertSame(array('foo' => 'bar'), $e->getJsonBody());
22
+ $this->assertSame(null, $e->getHttpHeaders());
23
+ $this->assertSame(null, $e->getRequestId());
24
+ }
25
+ }
26
+
27
+ public function testResponseHeaders()
28
+ {
29
+ try {
30
+ throw new Error\Api(
31
+ "hello",
32
+ 500,
33
+ "{'foo':'bar'}",
34
+ array('foo' => 'bar'),
35
+ array('Request-Id' => 'req_bar')
36
+ );
37
+ $this->fail("Did not raise error");
38
+ } catch (Error\Api $e) {
39
+ $this->assertSame(array('Request-Id' => 'req_bar'), $e->getHttpHeaders());
40
+ $this->assertSame('req_bar', $e->getRequestId());
41
+ }
42
+ }
43
+
44
+ public function testCode()
45
+ {
46
+ try {
47
+ throw new Error\Card(
48
+ "hello",
49
+ "some_param",
50
+ "some_code",
51
+ 400,
52
+ "{'foo':'bar'}",
53
+ array('foo' => 'bar')
54
+ );
55
+ $this->fail("Did not raise error");
56
+ } catch (Error\Card $e) {
57
+ $this->assertSame("some_param", $e->getStripeParam());
58
+ $this->assertSame('some_code', $e->getStripeCode());
59
+ }
60
+ }
61
+ }
lib/stripe/tests/ExternalAccountTest.php ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class ExternalAccountTest extends TestCase
6
+ {
7
+ public function testVerify()
8
+ {
9
+ self::authorizeFromEnv();
10
+ $bankAccountToken = Token::create(
11
+ array(
12
+ 'bank_account' => array(
13
+ 'country' => 'US',
14
+ 'routing_number' => '110000000',
15
+ 'account_number' => '000123456789',
16
+ 'account_holder_name' => 'Jane Austen',
17
+ 'account_holder_type' => 'company'
18
+ )
19
+ )
20
+ );
21
+ $customer = Customer::create();
22
+ $externalAccount = $customer->sources->create(array('bank_account' => $bankAccountToken->id));
23
+ $verifiedAccount = $externalAccount->verify(array('amounts' => array(32, 45)), null);
24
+
25
+ $base = Customer::classUrl();
26
+ $parentExtn = $externalAccount['customer'];
27
+ $extn = $externalAccount['id'];
28
+ $this->assertEquals("$base/$parentExtn/sources/$extn", $externalAccount->instanceUrl());
29
+ }
30
+ }
lib/stripe/tests/FileUploadTest.php ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class FileUploadTest extends TestCase
6
+ {
7
+ public function testCreateFile()
8
+ {
9
+ $fp = fopen(dirname(__FILE__).'/../data/test.png', 'r');
10
+ self::authorizeFromEnv();
11
+ $file = FileUpload::create(
12
+ array(
13
+ 'purpose' => 'dispute_evidence',
14
+ 'file' => $fp,
15
+ )
16
+ );
17
+ fclose($fp);
18
+ $this->assertSame(95, $file->size);
19
+ $this->assertSame('png', $file->type);
20
+ }
21
+
22
+ public function testCreateAndRetrieveCurlFile()
23
+ {
24
+ if (!class_exists('\CurlFile', false)) {
25
+ // Older PHP versions don't support this
26
+ return;
27
+ }
28
+
29
+ $curlFile = new \CurlFile(dirname(__FILE__).'/../data/test.png');
30
+ self::authorizeFromEnv();
31
+ $file = FileUpload::create(
32
+ array(
33
+ 'purpose' => 'dispute_evidence',
34
+ 'file' => $curlFile,
35
+ )
36
+ );
37
+ $this->assertSame(95, $file->size);
38
+ $this->assertSame('png', $file->type);
39
+
40
+ // Just check that we don't get exceptions
41
+ $file = FileUpload::retrieve($file->id);
42
+ $file->refresh();
43
+ }
44
+ }
lib/stripe/tests/InvalidRequestErrorTest.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class InvalidRequestErrorTest extends TestCase
6
+ {
7
+ public function testInvalidObject()
8
+ {
9
+ self::authorizeFromEnv();
10
+ try {
11
+ Customer::retrieve('invalid');
12
+ } catch (Error\InvalidRequest $e) {
13
+ $this->assertSame(404, $e->getHttpStatus());
14
+ }
15
+ }
16
+
17
+ public function testBadData()
18
+ {
19
+ self::authorizeFromEnv();
20
+ try {
21
+ Charge::create();
22
+ } catch (Error\InvalidRequest $e) {
23
+ $this->assertSame(400, $e->getHttpStatus());
24
+ }
25
+ }
26
+ }
lib/stripe/tests/InvoiceTest.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class InvoiceTest extends TestCase
6
+ {
7
+ public function testUpcoming()
8
+ {
9
+ self::authorizeFromEnv();
10
+ $customer = self::createTestCustomer();
11
+
12
+ InvoiceItem::create(array(
13
+ 'customer' => $customer->id,
14
+ 'amount' => 0,
15
+ 'currency' => 'usd',
16
+ ));
17
+
18
+ $invoice = Invoice::upcoming(array(
19
+ 'customer' => $customer->id,
20
+ ));
21
+ $this->assertSame($invoice->customer, $customer->id);
22
+ $this->assertSame($invoice->attempted, false);
23
+ }
24
+
25
+ public function testItemsAccessWithParameter()
26
+ {
27
+ self::authorizeFromEnv();
28
+ $customer = self::createTestCustomer();
29
+
30
+ InvoiceItem::create(array(
31
+ 'customer' => $customer->id,
32
+ 'amount' => 100,
33
+ 'currency' => 'usd',
34
+ ));
35
+
36
+ $invoice = Invoice::upcoming(
37
+ array(
38
+ 'customer' => $customer->id,
39
+ )
40
+ );
41
+
42
+ $lines = $invoice->lines->all(array('limit' => 10));
43
+
44
+ $this->assertSame(count($lines->data), 1);
45
+ $this->assertSame($lines->data[0]->amount, 100);
46
+ }
47
+
48
+ // This is really just making sure that this operation does not trigger any
49
+ // warnings, as it's highly nested.
50
+ public function testAll()
51
+ {
52
+ self::authorizeFromEnv();
53
+ $invoices = Invoice::all();
54
+ $this->assertTrue(count($invoices) > 0);
55
+ }
56
+ }
lib/stripe/tests/PlanTest.php ADDED
@@ -0,0 +1,51 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class PlanTest extends TestCase
6
+ {
7
+ public function testDeletion()
8
+ {
9
+ self::authorizeFromEnv();
10
+ $p = Plan::create(array(
11
+ 'amount' => 2000,
12
+ 'interval' => 'month',
13
+ 'currency' => 'usd',
14
+ 'name' => 'Plan',
15
+ 'id' => 'gold-' . self::generateRandomString(20)
16
+ ));
17
+ $p->delete();
18
+ $this->assertTrue($p->deleted);
19
+ }
20
+
21
+ public function testFalseyId()
22
+ {
23
+ try {
24
+ $retrievedPlan = Plan::retrieve('0');
25
+ } catch (Error\InvalidRequest $e) {
26
+ // Can either succeed or 404, all other errors are bad
27
+ if ($e->httpStatus !== 404) {
28
+ $this->fail();
29
+ }
30
+ }
31
+ }
32
+
33
+ public function testSave()
34
+ {
35
+ self::authorizeFromEnv();
36
+ $planID = 'gold-' . self::generateRandomString(20);
37
+ $p = Plan::create(array(
38
+ 'amount' => 2000,
39
+ 'interval' => 'month',
40
+ 'currency' => 'usd',
41
+ 'name' => 'Plan',
42
+ 'id' => $planID
43
+ ));
44
+ $p->name = 'A new plan name';
45
+ $p->save();
46
+ $this->assertSame($p->name, 'A new plan name');
47
+
48
+ $stripePlan = Plan::retrieve($planID);
49
+ $this->assertSame($p->name, $stripePlan->name);
50
+ }
51
+ }
lib/stripe/tests/ProductTest.php ADDED
@@ -0,0 +1,158 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class ProductSKUOrderTest extends TestCase
6
+ {
7
+ public function testProductFalseyId()
8
+ {
9
+ try {
10
+ Stripe::setApiKey('sk_test_JieJALRz7rPz7boV17oMma7a');
11
+ $retrievedProduct = Product::retrieve('0');
12
+ } catch (Error\InvalidRequest $e) {
13
+ // Can either succeed or 404, all other errors are bad
14
+ if ($e->httpStatus !== 404) {
15
+ $this->fail();
16
+ }
17
+ }
18
+ }
19
+
20
+ public function testProductCreateUpdateRead()
21
+ {
22
+
23
+ Stripe::setApiKey('sk_test_JieJALRz7rPz7boV17oMma7a');
24
+ $ProductID = 'gold-' . self::generateRandomString(20);
25
+ $p = Product::create(array(
26
+ 'name' => 'Gold Product',
27
+ 'id' => $ProductID,
28
+ 'url' => 'www.stripe.com/gold'
29
+ ));
30
+ $this->assertSame($p->url, 'www.stripe.com/gold');
31
+
32
+ $p->name = 'A new Product name';
33
+ $p->save();
34
+ $this->assertSame($p->name, 'A new Product name');
35
+ $this->assertSame($p->url, 'www.stripe.com/gold');
36
+
37
+ $stripeProduct = Product::retrieve($ProductID);
38
+ $this->assertSame($p->name, $stripeProduct->name);
39
+ $this->assertSame($stripeProduct->url, 'www.stripe.com/gold');
40
+ }
41
+
42
+ public function testSKUCreateUpdateRead()
43
+ {
44
+ Stripe::setApiKey('sk_test_JieJALRz7rPz7boV17oMma7a');
45
+ $ProductID = 'silver-' . self::generateRandomString(20);
46
+ $p = Product::create(array(
47
+ 'name' => 'Silver Product',
48
+ 'id' => $ProductID,
49
+ 'url' => 'www.stripe.com/silver'
50
+ ));
51
+
52
+ $SkuID = 'silver-sku-' . self::generateRandomString(20);
53
+ $sku = SKU::create(array(
54
+ 'price' => 500,
55
+ 'currency' => 'usd',
56
+ 'id' => $SkuID,
57
+ 'inventory' => array(
58
+ 'type' => 'finite',
59
+ 'quantity' => 40
60
+ ),
61
+ 'product' => $ProductID
62
+ ));
63
+
64
+ $sku->price = 600;
65
+ $sku->inventory->quantity = 50;
66
+ $sku->save();
67
+ $this->assertSame($sku->price, 600);
68
+ $this->assertSame(50, $sku->inventory->quantity);
69
+
70
+ $stripeSku = SKU::retrieve($SkuID);
71
+ $this->assertSame($sku->price, 600);
72
+ $this->assertSame('finite', $sku->inventory->type);
73
+ $this->assertSame(50, $sku->inventory->quantity);
74
+ }
75
+
76
+ public function testSKUProductDelete()
77
+ {
78
+ Stripe::setApiKey('sk_test_JieJALRz7rPz7boV17oMma7a');
79
+ $ProductID = 'silver-' . self::generateRandomString(20);
80
+ $p = Product::create(array(
81
+ 'name' => 'Silver Product',
82
+ 'id' => $ProductID,
83
+ 'url' => 'stripe.com/silver'
84
+ ));
85
+
86
+ $SkuID = 'silver-sku-' . self::generateRandomString(20);
87
+ $sku = SKU::create(array(
88
+ 'price' => 500,
89
+ 'currency' => 'usd',
90
+ 'id' => $SkuID,
91
+ 'inventory' => array(
92
+ 'type' => 'finite',
93
+ 'quantity' => 40
94
+ ),
95
+ 'product' => $ProductID
96
+ ));
97
+
98
+ $deletedSku = $sku->delete();
99
+ $this->assertTrue($deletedSku->deleted);
100
+
101
+ $deletedProduct = $p->delete();
102
+ $this->assertTrue($deletedProduct->deleted);
103
+ }
104
+
105
+ public function testOrderCreateUpdateRetrievePayReturn()
106
+ {
107
+ Stripe::setApiKey('sk_test_JieJALRz7rPz7boV17oMma7a');
108
+ $ProductID = 'silver-' . self::generateRandomString(20);
109
+ $p = Product::create(array(
110
+ 'name' => 'Silver Product',
111
+ 'id' => $ProductID,
112
+ 'url' => 'www.stripe.com/silver',
113
+ 'shippable' => false,
114
+ ));
115
+
116
+ $SkuID = 'silver-sku-' . self::generateRandomString(20);
117
+ $sku = SKU::create(array(
118
+ 'price' => 500,
119
+ 'currency' => 'usd',
120
+ 'id' => $SkuID,
121
+ 'inventory' => array(
122
+ 'type' => 'finite',
123
+ 'quantity' => 40
124
+ ),
125
+ 'product' => $ProductID
126
+ ));
127
+
128
+ $order = Order::create(array(
129
+ 'items' => array(
130
+ 0 => array(
131
+ 'type' => 'sku',
132
+ 'parent' => $SkuID,
133
+ ),
134
+ ),
135
+ 'currency' => 'usd',
136
+ 'email' => 'foo@bar.com',
137
+ ));
138
+
139
+ $order->metadata->foo = "bar";
140
+ $order->save();
141
+
142
+ $stripeOrder = Order::retrieve($order->id);
143
+ $this->assertSame($order->metadata->foo, "bar");
144
+
145
+ $order->pay(array(
146
+ 'source' => array(
147
+ 'object' => 'card',
148
+ 'number' => '4242424242424242',
149
+ 'exp_month' => '05',
150
+ 'exp_year' => '2017'
151
+ ),
152
+ ));
153
+ $this->assertSame($order->status, 'paid');
154
+
155
+ $orderReturn = $order->returnOrder();
156
+ $this->assertSame($orderReturn->order, $order->id);
157
+ }
158
+ }
lib/stripe/tests/RateLimitErrorTest.php ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class RateLimitErrorTest extends TestCase
6
+ {
7
+ private function rateLimitErrorResponse()
8
+ {
9
+ return array(
10
+ 'error' => array(),
11
+ );
12
+ }
13
+
14
+ /**
15
+ * @expectedException Stripe\Error\RateLimit
16
+ */
17
+ public function testRateLimit()
18
+ {
19
+ $this->mockRequest('GET', '/v1/accounts/acct_DEF', array(), $this->rateLimitErrorResponse(), 429);
20
+ Account::retrieve('acct_DEF');
21
+ }
22
+ }
lib/stripe/tests/RecipientTest.php ADDED
@@ -0,0 +1,112 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class RecipientTest extends TestCase
6
+ {
7
+ public function testDeletion()
8
+ {
9
+ $recipient = self::createTestRecipient();
10
+ $recipient->delete();
11
+
12
+ $this->assertTrue($recipient->deleted);
13
+ }
14
+
15
+ public function testSave()
16
+ {
17
+ $recipient = self::createTestRecipient();
18
+
19
+ $recipient->email = 'gdb@stripe.com';
20
+ $recipient->save();
21
+ $this->assertSame($recipient->email, 'gdb@stripe.com');
22
+
23
+ $stripeRecipient = Recipient::retrieve($recipient->id);
24
+ $this->assertSame($recipient->email, $stripeRecipient->email);
25
+ }
26
+
27
+ /**
28
+ * @expectedException Stripe\Error\InvalidRequest
29
+ */
30
+ public function testBogusAttribute()
31
+ {
32
+ $recipient = self::createTestRecipient();
33
+ $recipient->bogus = 'bogus';
34
+ $recipient->save();
35
+ }
36
+
37
+ public function testRecipientAddCard()
38
+ {
39
+ $token = Token::create(
40
+ array("card" => array(
41
+ "number" => "4000056655665556",
42
+ "exp_month" => 5,
43
+ "exp_year" => date('Y') + 3,
44
+ "cvc" => "314"
45
+ ))
46
+ );
47
+
48
+ $recipient = $this->createTestRecipient();
49
+ $createdCard = $recipient->cards->create(array("card" => $token->id));
50
+ $recipient->save();
51
+
52
+ $updatedRecipient = Recipient::retrieve($recipient->id);
53
+ $updatedCards = $updatedRecipient->cards->all();
54
+ $this->assertSame(count($updatedCards["data"]), 1);
55
+ }
56
+
57
+ public function testRecipientUpdateCard()
58
+ {
59
+ $token = Token::create(
60
+ array("card" => array(
61
+ "number" => "4000056655665556",
62
+ "exp_month" => 5,
63
+ "exp_year" => date('Y') + 3,
64
+ "cvc" => "314"
65
+ ))
66
+ );
67
+
68
+ $recipient = $this->createTestRecipient();
69
+ $createdCard = $recipient->cards->create(array("card" => $token->id));
70
+ $recipient->save();
71
+
72
+ $createdCards = $recipient->cards->all();
73
+ $this->assertSame(count($createdCards["data"]), 1);
74
+
75
+ $card = $createdCards['data'][0];
76
+ $card->name = "Jane Austen";
77
+ $card->save();
78
+
79
+ $updatedRecipient = Recipient::retrieve($recipient->id);
80
+ $updatedCards = $updatedRecipient->cards->all();
81
+ $this->assertSame($updatedCards["data"][0]->name, "Jane Austen");
82
+ }
83
+
84
+ public function testRecipientDeleteCard()
85
+ {
86
+ $token = Token::create(
87
+ array("card" => array(
88
+ "number" => "4000056655665556",
89
+ "exp_month" => 5,
90
+ "exp_year" => date('Y') + 3,
91
+ "cvc" => "314"
92
+ ))
93
+ );
94
+
95
+ $recipient = $this->createTestRecipient();
96
+ $createdCard = $recipient->cards->create(array("card" => $token->id));
97
+ $recipient->save();
98
+
99
+ $updatedRecipient = Recipient::retrieve($recipient->id);
100
+ $updatedCards = $updatedRecipient->cards->all();
101
+ $this->assertSame(count($updatedCards["data"]), 1);
102
+
103
+ $deleteStatus =
104
+ $updatedRecipient->cards->retrieve($createdCard->id)->delete();
105
+ $this->assertTrue($deleteStatus->deleted);
106
+ $updatedRecipient->save();
107
+
108
+ $postDeleteRecipient = Recipient::retrieve($recipient->id);
109
+ $postDeleteCards = $postDeleteRecipient->cards->all();
110
+ $this->assertSame(count($postDeleteCards["data"]), 0);
111
+ }
112
+ }
lib/stripe/tests/RefundTest.php ADDED
@@ -0,0 +1,131 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class RefundTest extends TestCase
6
+ {
7
+
8
+ public function testCreate()
9
+ {
10
+ $charge = self::createTestCharge();
11
+ $refund = Refund::create(array('amount' => 100, 'charge' => $charge->id));
12
+ $this->assertSame(100, $refund->amount);
13
+ $this->assertSame($charge->id, $refund->charge);
14
+ }
15
+
16
+ public function testUpdateAndRetrieve()
17
+ {
18
+ $charge = self::createTestCharge();
19
+ $ref = Refund::create(array('amount' => 100, 'charge' => $charge->id));
20
+ $ref->metadata["key"] = "value";
21
+ $ref->save();
22
+ $ref = Refund::retrieve($ref->id);
23
+ $this->assertSame("value", $ref->metadata["key"], "value");
24
+ }
25
+
26
+ public function testListForCharge()
27
+ {
28
+ $charge = self::createTestCharge();
29
+ $refA = Refund::create(array('amount' => 100, 'charge' => $charge->id));
30
+ $refB = Refund::create(array('amount' => 50, 'charge' => $charge->id));
31
+
32
+ $all = Refund::all(array('charge' => $charge));
33
+ $this->assertSame(false, $all['has_more']);
34
+ $this->assertSame(2, count($all->data));
35
+ $this->assertSame($refB->id, $all->data[0]->id);
36
+ $this->assertSame($refA->id, $all->data[1]->id);
37
+ }
38
+
39
+ public function testList()
40
+ {
41
+ $all = Refund::all();
42
+
43
+ // Fetches all refunds on this test account.
44
+ $this->assertSame(true, $all['has_more']);
45
+ $this->assertSame(10, count($all->data));
46
+ }
47
+
48
+ public function testCreateForBitcoin()
49
+ {
50
+ self::authorizeFromEnv();
51
+
52
+ $receiver = $this->createTestBitcoinReceiver("do+fill_now@stripe.com");
53
+
54
+ $charge = Charge::create(
55
+ array(
56
+ 'amount' => $receiver->amount,
57
+ 'currency' => $receiver->currency,
58
+ 'description' => $receiver->description,
59
+ 'source' => $receiver->id
60
+ )
61
+ );
62
+
63
+ $ref = Refund::create(
64
+ array(
65
+ 'amount' => $receiver->amount,
66
+ 'refund_address' => 'ABCDEF',
67
+ 'charge' => $charge->id
68
+ )
69
+ );
70
+ $this->assertSame($receiver->amount, $ref->amount);
71
+ $this->assertNotNull($ref->id);
72
+ }
73
+
74
+ // Deprecated charge endpoints:
75
+
76
+ public function testCreateViaCharge()
77
+ {
78
+ $charge = self::createTestCharge();
79
+ $ref = $charge->refunds->create(array('amount' => 100));
80
+ $this->assertSame(100, $ref->amount);
81
+ $this->assertSame($charge->id, $ref->charge);
82
+ }
83
+
84
+ public function testUpdateAndRetrieveViaCharge()
85
+ {
86
+ $charge = self::createTestCharge();
87
+ $ref = $charge->refunds->create(array('amount' => 100));
88
+ $ref->metadata["key"] = "value";
89
+ $ref->save();
90
+ $ref = $charge->refunds->retrieve($ref->id);
91
+ $this->assertSame("value", $ref->metadata["key"], "value");
92
+ }
93
+
94
+ public function testListViaCharge()
95
+ {
96
+ $charge = self::createTestCharge();
97
+ $refA = $charge->refunds->create(array('amount' => 50));
98
+ $refB = $charge->refunds->create(array('amount' => 50));
99
+
100
+ $all = $charge->refunds->all();
101
+ $this->assertSame(false, $all['has_more']);
102
+ $this->assertSame(2, count($all->data));
103
+ $this->assertSame($refB->id, $all->data[0]->id);
104
+ $this->assertSame($refA->id, $all->data[1]->id);
105
+ }
106
+
107
+ public function testCreateForBitcoinViaCharge()
108
+ {
109
+ self::authorizeFromEnv();
110
+
111
+ $receiver = $this->createTestBitcoinReceiver("do+fill_now@stripe.com");
112
+
113
+ $charge = Charge::create(
114
+ array(
115
+ 'amount' => $receiver->amount,
116
+ 'currency' => $receiver->currency,
117
+ 'description' => $receiver->description,
118
+ 'source' => $receiver->id
119
+ )
120
+ );
121
+
122
+ $ref = $charge->refunds->create(
123
+ array(
124
+ 'amount' => $receiver->amount,
125
+ 'refund_address' => 'ABCDEF'
126
+ )
127
+ );
128
+ $this->assertSame($receiver->amount, $ref->amount);
129
+ $this->assertNotNull($ref->id);
130
+ }
131
+ }
lib/stripe/tests/RequestOptionsTest.php ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class RequestOptionsTest extends TestCase
6
+ {
7
+ public function testStringAPIKey()
8
+ {
9
+ $opts = Util\RequestOptions::parse("foo");
10
+ $this->assertSame("foo", $opts->apiKey);
11
+ $this->assertSame(array(), $opts->headers);
12
+ }
13
+
14
+ public function testNull()
15
+ {
16
+ $opts = Util\RequestOptions::parse(null);
17
+ $this->assertSame(null, $opts->apiKey);
18
+ $this->assertSame(array(), $opts->headers);
19
+ }
20
+
21
+ public function testEmptyArray()
22
+ {
23
+ $opts = Util\RequestOptions::parse(array());
24
+ $this->assertSame(null, $opts->apiKey);
25
+ $this->assertSame(array(), $opts->headers);
26
+ }
27
+
28
+ public function testAPIKeyArray()
29
+ {
30
+ $opts = Util\RequestOptions::parse(
31
+ array(
32
+ 'api_key' => 'foo',
33
+ )
34
+ );
35
+ $this->assertSame('foo', $opts->apiKey);
36
+ $this->assertSame(array(), $opts->headers);
37
+ }
38
+
39
+ public function testIdempotentKeyArray()
40
+ {
41
+ $opts = Util\RequestOptions::parse(
42
+ array(
43
+ 'idempotency_key' => 'foo',
44
+ )
45
+ );
46
+ $this->assertSame(null, $opts->apiKey);
47
+ $this->assertSame(array('Idempotency-Key' => 'foo'), $opts->headers);
48
+ }
49
+
50
+ public function testKeyArray()
51
+ {
52
+ $opts = Util\RequestOptions::parse(
53
+ array(
54
+ 'idempotency_key' => 'foo',
55
+ 'api_key' => 'foo'
56
+ )
57
+ );
58
+ $this->assertSame('foo', $opts->apiKey);
59
+ $this->assertSame(array('Idempotency-Key' => 'foo'), $opts->headers);
60
+ }
61
+
62
+ /**
63
+ * @expectedException Stripe\Error\Api
64
+ */
65
+ public function testWrongType()
66
+ {
67
+ $opts = Util\RequestOptions::parse(5);
68
+ }
69
+ }
lib/stripe/tests/StripeObjectTest.php ADDED
@@ -0,0 +1,108 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class StripeObjectTest extends TestCase
6
+ {
7
+ public function testArrayAccessorsSemantics()
8
+ {
9
+ $s = new StripeObject();
10
+ $s['foo'] = 'a';
11
+ $this->assertSame($s['foo'], 'a');
12
+ $this->assertTrue(isset($s['foo']));
13
+ unset($s['foo']);
14
+ $this->assertFalse(isset($s['foo']));
15
+ }
16
+
17
+ public function testNormalAccessorsSemantics()
18
+ {
19
+ $s = new StripeObject();
20
+ $s->foo = 'a';
21
+ $this->assertSame($s->foo, 'a');
22
+ $this->assertTrue(isset($s->foo));
23
+ unset($s->foo);
24
+ $this->assertFalse(isset($s->foo));
25
+ }
26
+
27
+ public function testArrayAccessorsMatchNormalAccessors()
28
+ {
29
+ $s = new StripeObject();
30
+ $s->foo = 'a';
31
+ $this->assertSame($s['foo'], 'a');
32
+
33
+ $s['bar'] = 'b';
34
+ $this->assertSame($s->bar, 'b');
35
+ }
36
+
37
+ public function testKeys()
38
+ {
39
+ $s = new StripeObject();
40
+ $s->foo = 'a';
41
+ $this->assertSame($s->keys(), array('foo'));
42
+ }
43
+
44
+ public function testToArray()
45
+ {
46
+ $s = new StripeObject();
47
+ $s->foo = 'a';
48
+
49
+ $converted = $s->__toArray();
50
+
51
+ $this->assertInternalType('array', $converted);
52
+ $this->assertArrayHasKey('foo', $converted);
53
+ $this->assertEquals('a', $converted['foo']);
54
+ }
55
+
56
+ public function testRecursiveToArray()
57
+ {
58
+ $s = new StripeObject();
59
+ $z = new StripeObject();
60
+
61
+ $s->child = $z;
62
+ $z->foo = 'a';
63
+
64
+ $converted = $s->__toArray(true);
65
+
66
+ $this->assertInternalType('array', $converted);
67
+ $this->assertArrayHasKey('child', $converted);
68
+ $this->assertInternalType('array', $converted['child']);
69
+ $this->assertArrayHasKey('foo', $converted['child']);
70
+ $this->assertEquals('a', $converted['child']['foo']);
71
+ }
72
+
73
+ public function testNonexistentProperty()
74
+ {
75
+ $s = new StripeObject();
76
+ $this->assertNull($s->nonexistent);
77
+ }
78
+
79
+ public function testPropertyDoesNotExists()
80
+ {
81
+ $s = new StripeObject();
82
+ $this->assertNull($s['nonexistent']);
83
+ }
84
+
85
+ public function testJsonEncode()
86
+ {
87
+ // We can only JSON encode our objects in PHP 5.4+. 5.3 must use ->__toJSON()
88
+ if (version_compare(phpversion(), '5.4.0', '<')) {
89
+ return;
90
+ }
91
+
92
+ $s = new StripeObject();
93
+ $s->foo = 'a';
94
+
95
+ $this->assertEquals('{"foo":"a"}', json_encode($s->__toArray()));
96
+ }
97
+
98
+ public function testReplaceNewNestedUpdatable()
99
+ {
100
+ StripeObject::init(); // Populate the $nestedUpdatableAttributes Set
101
+ $s = new StripeObject();
102
+
103
+ $s->metadata = array('bar');
104
+ $this->assertSame($s->metadata, array('bar'));
105
+ $s->metadata = array('baz', 'qux');
106
+ $this->assertSame($s->metadata, array('baz', 'qux'));
107
+ }
108
+ }
lib/stripe/tests/SubscriptionTest.php ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class SubscriptionTest extends TestCase
6
+ {
7
+
8
+ public function testCustomerCreateUpdateListCancel()
9
+ {
10
+ $planID = 'gold-' . self::generateRandomString(20);
11
+ self::retrieveOrCreatePlan($planID);
12
+
13
+ $customer = self::createTestCustomer();
14
+
15
+ $sub = $customer->subscriptions->create(array('plan' => $planID));
16
+
17
+ $this->assertSame($sub->status, 'active');
18
+ $this->assertSame($sub->plan->id, $planID);
19
+
20
+ $sub->quantity = 2;
21
+ $sub->save();
22
+
23
+ $sub = $customer->subscriptions->retrieve($sub->id);
24
+ $this->assertSame($sub->status, 'active');
25
+ $this->assertSame($sub->plan->id, $planID);
26
+ $this->assertSame($sub->quantity, 2);
27
+
28
+ $subs = $customer->subscriptions->all(array('limit'=>3));
29
+ $this->assertSame(get_class($subs->data[0]), 'Stripe\Subscription');
30
+
31
+ $sub->cancel(array('at_period_end' => true));
32
+
33
+ $sub = $customer->subscriptions->retrieve($sub->id);
34
+ $this->assertSame($sub->status, 'active');
35
+ // @codingStandardsIgnoreStart
36
+ $this->assertTrue($sub->cancel_at_period_end);
37
+ // @codingStandardsIgnoreEnd
38
+ }
39
+
40
+ public function testCreateUpdateListCancel()
41
+ {
42
+ $planID = 'gold-' . self::generateRandomString(20);
43
+ self::retrieveOrCreatePlan($planID);
44
+
45
+ $customer = self::createTestCustomer();
46
+
47
+ $sub = Subscription::create(array('plan' => $planID, 'customer' => $customer->id));
48
+
49
+ $this->assertSame($sub->status, 'active');
50
+ $this->assertSame($sub->plan->id, $planID);
51
+
52
+ $sub->quantity = 2;
53
+ $sub->save();
54
+
55
+ $sub = Subscription::retrieve($sub->id);
56
+ $this->assertSame($sub->status, 'active');
57
+ $this->assertSame($sub->plan->id, $planID);
58
+ $this->assertSame($sub->quantity, 2);
59
+
60
+ // Update the quantity parameter one more time
61
+ $sub = Subscription::update($sub->id, array("quantity" => 3));
62
+ $this->assertSame($sub->status, 'active');
63
+ $this->assertSame($sub->plan->id, $planID);
64
+ $this->assertSame($sub->quantity, 3);
65
+
66
+ $subs = Subscription::all(array('customer'=>$customer->id, 'plan'=>$planID, 'limit'=>3));
67
+ $this->assertSame(get_class($subs->data[0]), 'Stripe\Subscription');
68
+
69
+ $sub->cancel(array('at_period_end' => true));
70
+
71
+ $sub = Subscription::retrieve($sub->id);
72
+ $this->assertSame($sub->status, 'active');
73
+ $this->assertTrue($sub->cancel_at_period_end);
74
+ }
75
+
76
+ public function testDeleteDiscount()
77
+ {
78
+ $planID = 'gold-' . self::generateRandomString(20);
79
+ self::retrieveOrCreatePlan($planID);
80
+
81
+ $couponID = '25off-' . self::generateRandomString(20);
82
+ self::retrieveOrCreateCoupon($couponID);
83
+
84
+ $customer = self::createTestCustomer();
85
+
86
+ $sub = $customer->subscriptions->create(
87
+ array(
88
+ 'plan' => $planID,
89
+ 'coupon' => $couponID
90
+ )
91
+ );
92
+
93
+ $this->assertSame($sub->status, 'active');
94
+ $this->assertSame($sub->plan->id, $planID);
95
+ $this->assertSame($sub->discount->coupon->id, $couponID);
96
+
97
+ $sub->deleteDiscount();
98
+ $sub = $customer->subscriptions->retrieve($sub->id);
99
+ $this->assertNull($sub->discount);
100
+ }
101
+ }
lib/stripe/tests/TestCase.php ADDED
@@ -0,0 +1,224 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ /**
6
+ * Base class for Stripe test cases, provides some utility methods for creating
7
+ * objects.
8
+ */
9
+ class TestCase extends \PHPUnit_Framework_TestCase
10
+ {
11
+ const API_KEY = 'tGN0bIwXnHdwOa85VABjPdSn8nWY7G7I';
12
+
13
+ private $mock;
14
+
15
+ protected static function authorizeFromEnv()
16
+ {
17
+ $apiKey = getenv('STRIPE_API_KEY');
18
+ if (!$apiKey) {
19
+ $apiKey = self::API_KEY;
20
+ }
21
+
22
+ Stripe::setApiKey($apiKey);
23
+ }
24
+
25
+ protected function setUp()
26
+ {
27
+ ApiRequestor::setHttpClient(HttpClient\CurlClient::instance());
28
+ $this->mock = null;
29
+ $this->call = 0;
30
+ }
31
+
32
+ protected function mockRequest($method, $path, $params = array(), $return = array('id' => 'myId'), $rcode = 200)
33
+ {
34
+ $mock = $this->setUpMockRequest();
35
+ $mock->expects($this->at($this->call++))
36
+ ->method('request')
37
+ ->with(strtolower($method), 'https://api.stripe.com' . $path, $this->anything(), $params, false)
38
+ ->willReturn(array(json_encode($return), $rcode, array()));
39
+ }
40
+
41
+ private function setUpMockRequest()
42
+ {
43
+ if (!$this->mock) {
44
+ self::authorizeFromEnv();
45
+ $this->mock = $this->getMock('\Stripe\HttpClient\ClientInterface');
46
+ ApiRequestor::setHttpClient($this->mock);
47
+ }
48
+ return $this->mock;
49
+ }
50
+
51
+ /**
52
+ * Create a valid test charge.
53
+ */
54
+ protected static function createTestCharge(array $attributes = array())
55
+ {
56
+ self::authorizeFromEnv();
57
+
58
+ return Charge::create(
59
+ $attributes + array(
60
+ 'amount' => 2000,
61
+ 'currency' => 'usd',
62
+ 'description' => 'Charge for test@example.com',
63
+ 'card' => array(
64
+ 'number' => '4242424242424242',
65
+ 'exp_month' => 5,
66
+ 'exp_year' => date('Y') + 3,
67
+ ),
68
+ )
69
+ );
70
+ }
71
+
72
+ /**
73
+ * Create a valid test charge.
74
+ */
75
+ protected static function createTestTransfer(array $attributes = array())
76
+ {
77
+ self::authorizeFromEnv();
78
+
79
+ $recipient = self::createTestRecipient();
80
+
81
+ return Transfer::create(
82
+ $attributes + array(
83
+ 'amount' => 2000,
84
+ 'currency' => 'usd',
85
+ 'description' => 'Transfer to test@example.com',
86
+ 'recipient' => $recipient->id
87
+ )
88
+ );
89
+ }
90
+
91
+ /**
92
+ * Create a valid test customer.
93
+ */
94
+ protected static function createTestCustomer(array $attributes = array())
95
+ {
96
+ self::authorizeFromEnv();
97
+
98
+ return Customer::create(
99
+ $attributes + array(
100
+ 'card' => array(
101
+ 'number' => '4242424242424242',
102
+ 'exp_month' => 5,
103
+ 'exp_year' => date('Y') + 3,
104
+ ),
105
+ )
106
+ );
107
+ }
108
+
109
+ /**
110
+ * Create a valid test recipient
111
+ */
112
+ protected static function createTestRecipient(array $attributes = array())
113
+ {
114
+ self::authorizeFromEnv();
115
+
116
+ return Recipient::create(
117
+ $attributes + array(
118
+ 'name' => 'PHP Test',
119
+ 'type' => 'individual',
120
+ 'tax_id' => '000000000',
121
+ 'bank_account' => array(
122
+ 'country' => 'US',
123
+ 'routing_number' => '110000000',
124
+ 'account_number' => '000123456789'
125
+ ),
126
+ )
127
+ );
128
+ }
129
+
130
+ /**
131
+ * Create a test account
132
+ */
133
+ protected static function createTestAccount(array $attributes = array())
134
+ {
135
+ self::authorizeFromEnv();
136
+
137
+ return Account::create(
138
+ $attributes + array(
139
+ 'managed' => false,
140
+ 'country' => 'US',
141
+ 'email' => self::generateRandomEmail(),
142
+ )
143
+ );
144
+ }
145
+
146
+ /**
147
+ * Verify that a plan with a given ID exists, or create a new one if it does
148
+ * not.
149
+ */
150
+ protected static function retrieveOrCreatePlan($id)
151
+ {
152
+ self::authorizeFromEnv();
153
+
154
+ try {
155
+ $plan = Plan::retrieve($id);
156
+ } catch (Error\InvalidRequest $exception) {
157
+ $plan = Plan::create(
158
+ array(
159
+ 'id' => $id,
160
+ 'amount' => 0,
161
+ 'currency' => 'usd',
162
+ 'interval' => 'month',
163
+ 'name' => 'Gold Test Plan',
164
+ )
165
+ );
166
+ }
167
+ }
168
+
169
+ /**
170
+ * Verify that a coupon with a given ID exists, or create a new one if it
171
+ * does not.
172
+ */
173
+ protected static function retrieveOrCreateCoupon($id)
174
+ {
175
+ self::authorizeFromEnv();
176
+
177
+ try {
178
+ $coupon = Coupon::retrieve($id);
179
+ } catch (Error\InvalidRequest $exception) {
180
+ $coupon = Coupon::create(
181
+ array(
182
+ 'id' => $id,
183
+ 'duration' => 'forever',
184
+ 'percent_off' => 25,
185
+ )
186
+ );
187
+ }
188
+ }
189
+
190
+ /**
191
+ * Genereate a semi-random string
192
+ */
193
+ protected static function generateRandomString($length = 24)
194
+ {
195
+ $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTU';
196
+ $charactersLength = strlen($characters);
197
+ $randomString = '';
198
+ for ($i = 0; $i < $length; $i++) {
199
+ $randomString .= $characters[rand(0, $charactersLength - 1)];
200
+ }
201
+ return $randomString;
202
+ }
203
+
204
+ /**
205
+ * Generate a semi-random email.
206
+ */
207
+ protected static function generateRandomEmail($domain = 'bar.com')
208
+ {
209
+ return self::generateRandomString().'@'.$domain;
210
+ }
211
+
212
+ protected static function createTestBitcoinReceiver($email)
213
+ {
214
+ $receiver = BitcoinReceiver::create(
215
+ array(
216
+ 'amount' => 100,
217
+ 'currency' => 'usd',
218
+ 'description' => 'some details',
219
+ 'email' => $email
220
+ )
221
+ );
222
+ return $receiver;
223
+ }
224
+ }
lib/stripe/tests/ThreeDSecureTest.php ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class ThreeDSecureTest extends TestCase
6
+ {
7
+ public function testCreate()
8
+ {
9
+ $this->mockRequest(
10
+ 'POST',
11
+ '/v1/3d_secure',
12
+ array(
13
+ 'card' => 'tok_test',
14
+ 'amount' => 1500,
15
+ 'currency' => 'usd',
16
+ 'return_url' => 'https://example.org/3d-secure-result'
17
+ ),
18
+ array(
19
+ 'id' => 'tdsrc_test',
20
+ 'object' => 'three_d_secure'
21
+ )
22
+ );
23
+ $three_d_secure = ThreeDSecure::create(array(
24
+ 'card' => 'tok_test',
25
+ 'amount' => 1500,
26
+ 'currency' => 'usd',
27
+ 'return_url' => 'https://example.org/3d-secure-result'
28
+ ));
29
+ $this->assertSame($three_d_secure->id, 'tdsrc_test');
30
+ }
31
+ }
lib/stripe/tests/TokenTest.php ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class TokenTest extends TestCase
6
+ {
7
+ public function testUrls()
8
+ {
9
+ $this->assertSame(Token::classUrl(), '/v1/tokens');
10
+ $token = new Token('abcd/efgh');
11
+ $this->assertSame($token->instanceUrl(), '/v1/tokens/abcd%2Fefgh');
12
+ }
13
+ }
lib/stripe/tests/TransferReversalTest.php ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class TransferReversalTest extends TestCase
6
+ {
7
+
8
+ public function testList()
9
+ {
10
+ $transfer = self::createTestTransfer();
11
+ $all = $transfer->reversals->all();
12
+ $this->assertSame(false, $all['has_more']);
13
+ $this->assertSame(0, count($all->data));
14
+ }
15
+ }
lib/stripe/tests/TransferTest.php ADDED
@@ -0,0 +1,110 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class TransferTest extends TestCase
6
+ {
7
+ public function testCreate()
8
+ {
9
+ $recipient = self::createTestRecipient();
10
+
11
+ self::authorizeFromEnv();
12
+ $transfer = Transfer::create(array(
13
+ 'amount' => 100,
14
+ 'currency' => 'usd',
15
+ 'recipient' => $recipient->id
16
+ ));
17
+ $this->assertSame('pending', $transfer->status);
18
+ }
19
+
20
+ public function testRetrieve()
21
+ {
22
+ $recipient = self::createTestRecipient();
23
+
24
+ self::authorizeFromEnv();
25
+ $transfer = Transfer::create(array(
26
+ 'amount' => 100,
27
+ 'currency' => 'usd',
28
+ 'recipient' => $recipient->id
29
+ ));
30
+ $reloaded = Transfer::retrieve($transfer->id);
31
+ $this->assertSame($reloaded->id, $transfer->id);
32
+ }
33
+
34
+ /**
35
+ * @expectedException Stripe\Error\InvalidRequest
36
+ */
37
+ public function testCancel()
38
+ {
39
+ $recipient = self::createTestRecipient();
40
+
41
+ self::authorizeFromEnv();
42
+ $transfer = Transfer::create(array(
43
+ 'amount' => 100,
44
+ 'currency' => 'usd',
45
+ 'recipient' => $recipient->id
46
+ ));
47
+ $reloaded = Transfer::retrieve($transfer->id);
48
+ $this->assertSame($reloaded->id, $transfer->id);
49
+
50
+ $reloaded->cancel();
51
+ }
52
+
53
+ public function testTransferUpdateMetadata()
54
+ {
55
+ $recipient = self::createTestRecipient();
56
+
57
+ self::authorizeFromEnv();
58
+ $transfer = Transfer::create(array(
59
+ 'amount' => 100,
60
+ 'currency' => 'usd',
61
+ 'recipient' => $recipient->id
62
+ ));
63
+
64
+ $transfer->metadata['test'] = 'foo bar';
65
+ $transfer->save();
66
+
67
+ $updatedTransfer = Transfer::retrieve($transfer->id);
68
+ $this->assertSame('foo bar', $updatedTransfer->metadata['test']);
69
+ }
70
+
71
+ public function testTransferUpdateMetadataAll()
72
+ {
73
+ $recipient = self::createTestRecipient();
74
+
75
+ self::authorizeFromEnv();
76
+ $transfer = Transfer::create(array(
77
+ 'amount' => 100,
78
+ 'currency' => 'usd',
79
+ 'recipient' => $recipient->id
80
+ ));
81
+
82
+ $transfer->metadata = array('test' => 'foo bar');
83
+ $transfer->save();
84
+
85
+ $updatedTransfer = Transfer::retrieve($transfer->id);
86
+ $this->assertSame('foo bar', $updatedTransfer->metadata['test']);
87
+ }
88
+
89
+ public function testRecipientUpdateMetadata()
90
+ {
91
+ $recipient = self::createTestRecipient();
92
+
93
+ $recipient->metadata['test'] = 'foo bar';
94
+ $recipient->save();
95
+
96
+ $updatedRecipient = Recipient::retrieve($recipient->id);
97
+ $this->assertSame('foo bar', $updatedRecipient->metadata['test']);
98
+ }
99
+
100
+ public function testRecipientUpdateMetadataAll()
101
+ {
102
+ $recipient = self::createTestRecipient();
103
+
104
+ $recipient->metadata = array('test' => 'foo bar');
105
+ $recipient->save();
106
+
107
+ $updatedRecipient = Recipient::retrieve($recipient->id);
108
+ $this->assertSame('foo bar', $updatedRecipient->metadata['test']);
109
+ }
110
+ }
lib/stripe/tests/UtilTest.php ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ namespace Stripe;
4
+
5
+ class UtilTest extends TestCase
6
+ {
7
+ public function testIsList()
8
+ {
9
+ $list = array(5, 'nstaoush', array());
10
+ $this->assertTrue(Util\Util::isList($list));
11
+
12
+ $notlist = array(5, 'nstaoush', array(), 'bar' => 'baz');
13
+ $this->assertFalse(Util\Util::isList($notlist));
14
+ }
15
+
16
+ public function testThatPHPHasValueSemanticsForArrays()
17
+ {
18
+ $original = array('php-arrays' => 'value-semantics');
19
+ $derived = $original;
20
+ $derived['php-arrays'] = 'reference-semantics';
21
+
22
+ $this->assertSame('value-semantics', $original['php-arrays']);
23
+ }
24
+
25
+ public function testConvertStripeObjectToArrayIncludesId()
26
+ {
27
+ $customer = self::createTestCustomer();
28
+ $this->assertTrue(array_key_exists("id", $customer->__toArray(true)));
29
+ }
30
+
31
+ public function testUtf8()
32
+ {
33
+ // UTF-8 string
34
+ $x = "\xc3\xa9";
35
+ $this->assertSame(Util\Util::utf8($x), $x);
36
+
37
+ // Latin-1 string
38
+ $x = "\xe9";
39
+ $this->assertSame(Util\Util::utf8($x), "\xc3\xa9");
40
+
41
+ // Not a string
42
+ $x = true;
43
+ $this->assertSame(Util\Util::utf8($x), $x);
44
+ }
45
+ }
lib/stripe/tests/bootstrap.no_autoload.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <?php
2
+
3
+ require_once __DIR__ . '/../init.php';
4
+ require_once __DIR__ . '/TestCase.php';
lib/stripe/tests/bootstrap.php ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ <?php
2
+
3
+ require_once __DIR__ . '/TestCase.php';
lib/tcpdf/CHANGELOG.TXT CHANGED
@@ -1,3 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  6.2.6 (2015-01-28)
2
  - Bug #1008 "UTC offset sing breaks PDF/A-1b compliance" was fixed.
3
 
1
+ 6.2.25
2
+ - Fix support for image URLs.
3
+
4
+ 6.2.24
5
+ - Support remote urls when checking if file exists.
6
+
7
+ 6.2.23
8
+ - Simplify file_exists function.
9
+
10
+ 6.2.22
11
+ - Fix for security vulnerability: Using the phar:// wrapper it was possible to trigger the unserialization of user provided data.
12
+
13
+ 6.2.19
14
+ - Merge various fixes for PHP 7.3 compatibility and security.
15
+
16
+ 6.2.13 (2016-06-10)
17
+ - IMPORTANT: A new version of this library is under development at https://github.com/tecnickcom/tc-lib-pdf and as a consequence this version will not receive any additional development or support. This version should be considered obsolete, new projects should use the new version as soon it will become stable.
18
+
19
+ 6.2.12 (2015-09-12)
20
+ - fix composer package name to tecnickcom/tcpdf
21
+
22
+ 6.2.11 (2015-08-02)
23
+ - Bug #1070 "PNG regression in 6.2.9 (they appear as their alpha channel)" was fixed.
24
+ - Bug #1069 "Encoded SRC URLs in <img> tags don't work anymore" was fixed.
25
+
26
+ 6.2.10 (2015-07-28)
27
+ - Minor mod to PNG parsing.
28
+ - Make dependency on mcrypt optional.
29
+
30
+ 6.2.8 (2015-04-29)
31
+ - Removed unwanted file.
32
+
33
+ 6.2.7 (2015-04-28)
34
+ - Merged PR 17: Avoid warning when iterating a non-array variable.
35
+ - Merged PR 16: Improve MuliCell param definition.
36
+ - Improved column check (PR 15).
37
+ - Merged PR 11: Use stream_is_local instead of limit to file://.
38
+ - Merged PR 10: ImageMagick link on README.txt.
39
+
40
  6.2.6 (2015-01-28)
41
  - Bug #1008 "UTC offset sing breaks PDF/A-1b compliance" was fixed.
42
 
lib/tcpdf/LICENSE.TXT CHANGED
@@ -6,6 +6,8 @@
6
  under the terms of the GNU Lesser General Public License as
7
  published by the Free Software Foundation, either version 3 of the
8
  License, or (at your option) any later version.
 
 
9
 
10
  **********************************************************************
11
  **********************************************************************
6
  under the terms of the GNU Lesser General Public License as
7
  published by the Free Software Foundation, either version 3 of the
8
  License, or (at your option) any later version.
9
+
10
+ 2002-2019 Nicola Asuni - Tecnick.com LTD
11
 
12
  **********************************************************************
13
  **********************************************************************
lib/tcpdf/README.TXT DELETED
@@ -1,115 +0,0 @@
1
- TCPDF - README
2
- ============================================================
3
-
4
- I WISH TO IMPROVE AND EXPAND TCPDF BUT I NEED YOUR SUPPORT.
5
- PLEASE MAKE A DONATION:
6
- http://sourceforge.net/donate/index.php?group_id=128076
7
-
8
- ------------------------------------------------------------
9
-
10
- Name: TCPDF
11
- Version: 6.2.6
12
- Release date: 2015-01-28
13
- Author: Nicola Asuni
14
-
15
- Copyright (c) 2002-2015:
16
- Nicola Asuni
17
- Tecnick.com LTD
18
- www.tecnick.com
19
-
20
- URLs:
21
- http://www.tcpdf.org
22
- http://www.sourceforge.net/projects/tcpdf
23
-
24
- Description:
25
- TCPDF is a PHP class for generating PDF files on-the-fly without requiring external extensions.
26
- This library includes also a class to extract data from existing PDF documents and
27
- classes to generate 1D and 2D barcodes in various formats.
28
-
29
- Main Features:
30
- * no external libraries are required for the basic functions;
31
- * all standard page formats, custom page formats, custom margins and units of measure;
32
- * UTF-8 Unicode and Right-To-Left languages;
33
- * TrueTypeUnicode, OpenTypeUnicode v1, TrueType, OpenType v1, Type1 and CID-0 fonts;
34
- * font subsetting;
35
- * methods to publish some XHTML + CSS code, Javascript and Forms;
36
- * images, graphic (geometric figures) and transformation methods;
37
- * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http: www.imagemagick.org/www/formats.html)
38
- * 1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extension, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417;
39
- * JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies;
40
- * automatic page header and footer management;
41
- * document encryption up to 256 bit and digital signature certifications;
42
- * transactions to UNDO commands;
43
- * PDF annotations, including links, text and file attachments;
44
- * text rendering modes (fill, stroke and clipping);
45
- * multiple columns mode;
46
- * no-write page regions;
47
- * bookmarks, named destinations and table of content;
48
- * text hyphenation;
49
- * text stretching and spacing (tracking);
50
- * automatic page break, line break and text alignments including justification;
51
- * automatic page numbering and page groups;
52
- * move and delete pages;
53
- * page compression (requires php-zlib extension);
54
- * XOBject Templates;
55
- * Layers and object visibility.
56
- * PDF/A-1b support.
57
-
58
- Installation (full instructions on http: www.tcpdf.org):
59
- 1. copy the folder on your Web server
60
- 2. set your installation path and other parameters on the config/tcpdf_config.php
61
- 3. call the examples/example_001.php page with your browser to see an example
62
-
63
- Source Code Documentation:
64
- http://www.tcpdf.org
65
-
66
- Additional Documentation:
67
- http://www.tcpdf.org
68
-
69
- License:
70
- Copyright (C) 2002-2014 Nicola Asuni - Tecnick.com LTD
71
-
72
- TCPDF is free software: you can redistribute it and/or modify it
73
- under the terms of the GNU Lesser General Public License as
74
- published by the Free Software Foundation, either version 3 of the
75
- License, or (at your option) any later version.
76
-
77
- TCPDF is distributed in the hope that it will be useful, but
78
- WITHOUT ANY WARRANTY; without even the implied warranty of
79
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
80
- See the GNU Lesser General Public License for more details.
81
-
82
- You should have received a copy of the License
83
- along with TCPDF. If not, see
84
- <http://www.tecnick.com/pagefiles/tcpdf/LICENSE.TXT>.
85
-
86
- See LICENSE.TXT file for more information.
87
-
88
- Third party fonts:
89
-
90
- This library may include third party font files released with different licenses.
91
-
92
- All the PHP files on the fonts directory are subject to the general TCPDF license (GNU-LGPLv3),
93
- they do not contain any binary data but just a description of the general properties of a particular font.
94
- These files can be also generated on the fly using the font utilities and TCPDF methods.
95
-
96
- All the original binary TTF font files have been renamed for compatibility with TCPDF and compressed using the gzcompress PHP function that uses the ZLIB data format (.z files).
97
-
98
- The binary files (.z) that begins with the prefix "free" have been extracted from the GNU FreeFont collection (GNU-GPLv3).
99
- The binary files (.z) that begins with the prefix "pdfa" have been derived from the GNU FreeFont, so they are subject to the same license.
100
- For the details of Copyright, License and other information, please check the files inside the directory fonts/freefont-20120503
101
- Link : http://www.gnu.org/software/freefont/
102
-
103
- The binary files (.z) that begins with the prefix "dejavu" have been extracted from the DejaVu fonts 2.33 (Bitstream) collection.
104
- For the details of Copyright, License and other information, please check the files inside the directory fonts/dejavu-fonts-ttf-2.33
105
- Link : http://dejavu-fonts.org
106
-
107
- The binary files (.z) that begins with the prefix "ae" have been extracted from the Arabeyes.org collection (GNU-GPLv2).
108
- Link : http://projects.arabeyes.org/
109
-
110
- ICC profile:
111
- TCPDF includes the sRGB.icc profile from the icc-profiles-free Debian package:
112
- https://packages.debian.org/source/stable/icc-profiles-free
113
-
114
-
115
- ============================================================
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/tcpdf/README.md ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # TCPDF
2
+ *PHP PDF Library*
3
+
4
+ [![Donate via PayPal](https://img.shields.io/badge/donate-paypal-87ceeb.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&currency_code=GBP&business=paypal@tecnick.com&item_name=donation%20for%20TCPDF%20project)
5
+ *Please consider supporting this project by making a donation via [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&currency_code=GBP&business=paypal@tecnick.com&item_name=donation%20for%20TCPDF%20project)*
6
+
7
+ * **category** Library
8
+ * **author** Nicola Asuni <info@tecnick.com>
9
+ * **copyright** 2002-2020 Nicola Asuni - Tecnick.com LTD
10
+ * **license** http://www.gnu.org/copyleft/lesser.html GNU-LGPL v3 (see LICENSE.TXT)
11
+ * **link** http://www.tcpdf.org
12
+ * **source** https://github.com/tecnickcom/TCPDF
13
+
14
+
15
+ ## IMPORTANT
16
+ A new version of this library is under development at https://github.com/tecnickcom/tc-lib-pdf and as a consequence this version will not receive any additional development or support.
17
+ This version should be considered obsolete, new projects should use the new version as soon it will become stable.
18
+
19
+
20
+
21
+ ## Description
22
+
23
+ PHP library for generating PDF documents on-the-fly.
24
+
25
+ ### Main Features:
26
+ * no external libraries are required for the basic functions;
27
+ * all standard page formats, custom page formats, custom margins and units of measure;
28
+ * UTF-8 Unicode and Right-To-Left languages;
29
+ * TrueTypeUnicode, OpenTypeUnicode v1, TrueType, OpenType v1, Type1 and CID-0 fonts;
30
+ * font subsetting;
31
+ * methods to publish some XHTML + CSS code, Javascript and Forms;
32
+ * images, graphic (geometric figures) and transformation methods;
33
+ * supports JPEG, PNG and SVG images natively, all images supported by GD (GD, GD2, GD2PART, GIF, JPEG, PNG, BMP, XBM, XPM) and all images supported via ImagMagick (http://www.imagemagick.org/script/formats.php)
34
+ * 1D and 2D barcodes: CODE 39, ANSI MH10.8M-1983, USD-3, 3 of 9, CODE 93, USS-93, Standard 2 of 5, Interleaved 2 of 5, CODE 128 A/B/C, 2 and 5 Digits UPC-Based Extension, EAN 8, EAN 13, UPC-A, UPC-E, MSI, POSTNET, PLANET, RMS4CC (Royal Mail 4-state Customer Code), CBC (Customer Bar Code), KIX (Klant index - Customer index), Intelligent Mail Barcode, Onecode, USPS-B-3200, CODABAR, CODE 11, PHARMACODE, PHARMACODE TWO-TRACKS, Datamatrix, QR-Code, PDF417;
35
+ * JPEG and PNG ICC profiles, Grayscale, RGB, CMYK, Spot Colors and Transparencies;
36
+ * automatic page header and footer management;
37
+ * document encryption up to 256 bit and digital signature certifications;
38
+ * transactions to UNDO commands;
39
+ * PDF annotations, including links, text and file attachments;
40
+ * text rendering modes (fill, stroke and clipping);
41
+ * multiple columns mode;
42
+ * no-write page regions;
43
+ * bookmarks, named destinations and table of content;
44
+ * text hyphenation;
45
+ * text stretching and spacing (tracking);
46
+ * automatic page break, line break and text alignments including justification;
47
+ * automatic page numbering and page groups;
48
+ * move and delete pages;
49
+ * page compression (requires php-zlib extension);
50
+ * XOBject Templates;
51
+ * Layers and object visibility.
52
+ * PDF/A-1b support.
53
+
54
+ ### Third party fonts:
55
+
56
+ This library may include third party font files released with different licenses.
57
+
58
+ All the PHP files on the fonts directory are subject to the general TCPDF license (GNU-LGPLv3),
59
+ they do not contain any binary data but just a description of the general properties of a particular font.
60
+ These files can be also generated on the fly using the font utilities and TCPDF methods.
61
+
62
+ All the original binary TTF font files have been renamed for compatibility with TCPDF and compressed using the gzcompress PHP function that uses the ZLIB data format (.z files).
63
+
64
+ The binary files (.z) that begins with the prefix "free" have been extracted from the GNU FreeFont collection (GNU-GPLv3).
65
+ The binary files (.z) that begins with the prefix "pdfa" have been derived from the GNU FreeFont, so they are subject to the same license.
66
+ For the details of Copyright, License and other information, please check the files inside the directory fonts/freefont-20120503
67
+ Link : http://www.gnu.org/software/freefont/
68
+
69
+ The binary files (.z) that begins with the prefix "dejavu" have been extracted from the DejaVu fonts 2.33 (Bitstream) collection.
70
+ For the details of Copyright, License and other information, please check the files inside the directory fonts/dejavu-fonts-ttf-2.33
71
+ Link : http://dejavu-fonts.org
72
+
73
+ The binary files (.z) that begins with the prefix "ae" have been extracted from the Arabeyes.org collection (GNU-GPLv2).
74
+ Link : http://projects.arabeyes.org/
75
+
76
+ ### ICC profile:
77
+
78
+ TCPDF includes the sRGB.icc profile from the icc-profiles-free Debian package:
79
+ https://packages.debian.org/source/stable/icc-profiles-free
80
+
81
+
82
+ ## Developer(s) Contact
83
+
84
+ * Nicola Asuni <info@tecnick.com>
lib/tcpdf/VERSION ADDED
@@ -0,0 +1 @@
 
1
+ 6.3.5
lib/tcpdf/composer.json CHANGED
@@ -1,40 +1,47 @@
1
  {
2
- "name": "tecnick.com/tcpdf",
3
- "version": "6.2.6",
4
- "homepage": "http://www.tcpdf.org/",
5
- "type": "library",
6
- "description": "TCPDF is a PHP class for generating PDF documents and barcodes.",
7
- "keywords": ["PDF","tcpdf","PDFD32000-2008","qrcode","datamatrix","pdf417","barcodes"],
8
- "license": "LGPLv3",
9
- "authors": [
10
- {
11
- "name": "Nicola Asuni",
12
- "email": "info@tecnick.com",
13
- "homepage": "http://nicolaasuni.tecnick.com"
14
- }
15
- ],
16
- "require": {
17
- "php": ">=5.3.0"
18
- },
19
- "autoload": {
20
- "classmap": [
21
- "fonts",
22
- "config",
23
- "include",
24
- "tcpdf.php",
25
- "tcpdf_parser.php",
26
- "tcpdf_import.php",
27
- "tcpdf_barcodes_1d.php",
28
- "tcpdf_barcodes_2d.php",
29
- "include/tcpdf_colors.php",
30
- "include/tcpdf_filters.php",
31
- "include/tcpdf_font_data.php",
32
- "include/tcpdf_fonts.php",
33
- "include/tcpdf_images.php",
34
- "include/tcpdf_static.php",
35
- "include/barcodes/datamatrix.php",
36
- "include/barcodes/pdf417.php",
37
- "include/barcodes/qrcode.php"
38
- ]
39
- }
 
 
 
 
 
 
 
40
  }
1
  {
2
+ "name": "tecnickcom/tcpdf",
3
+ "version": "6.3.5",
4
+ "homepage": "http://www.tcpdf.org/",
5
+ "type": "library",
6
+ "description": "TCPDF is a PHP class for generating PDF documents and barcodes.",
7
+ "keywords": [
8
+ "PDF",
9
+ "tcpdf",
10
+ "PDFD32000-2008",
11
+ "qrcode",
12
+ "datamatrix",
13
+ "pdf417",
14
+ "barcodes"
15
+ ],
16
+ "license": "LGPL-3.0-only",
17
+ "authors": [
18
+ {
19
+ "name": "Nicola Asuni",
20
+ "email": "info@tecnick.com",
21
+ "role": "lead"
22
+ }
23
+ ],
24
+ "require": {
25
+ "php": ">=5.3.0"
26
+ },
27
+ "autoload": {
28
+ "classmap": [
29
+ "config",
30
+ "include",
31
+ "tcpdf.php",
32
+ "tcpdf_parser.php",
33
+ "tcpdf_import.php",
34
+ "tcpdf_barcodes_1d.php",
35
+ "tcpdf_barcodes_2d.php",
36
+ "include/tcpdf_colors.php",
37
+ "include/tcpdf_filters.php",
38
+ "include/tcpdf_font_data.php",
39
+ "include/tcpdf_fonts.php",
40
+ "include/tcpdf_images.php",
41
+ "include/tcpdf_static.php",
42
+ "include/barcodes/datamatrix.php",
43
+ "include/barcodes/pdf417.php",
44
+ "include/barcodes/qrcode.php"
45
+ ]
46
+ }
47
  }
lib/tcpdf/config/tcpdf_config.php CHANGED
@@ -154,7 +154,7 @@ define ('PDF_MARGIN_RIGHT', 15);
154
  /**
155
  * Default main font name.
156
  */
157
- define ('PDF_FONT_NAME_MAIN', 'dejavusans');
158
 
159
  /**
160
  * Default main font size.
@@ -164,7 +164,7 @@ define ('PDF_FONT_SIZE_MAIN', 10);
164
  /**
165
  * Default data font name.
166
  */
167
- define ('PDF_FONT_NAME_DATA', 'dejavusans');
168
 
169
  /**
170
  * Default data font size.
154
  /**
155
  * Default main font name.
156
  */
157
+ define ('PDF_FONT_NAME_MAIN', 'helvetica');
158
 
159
  /**
160
  * Default main font size.
164
  /**
165
  * Default data font name.
166
  */
167
+ define ('PDF_FONT_NAME_DATA', 'helvetica');
168
 
169
  /**
170
  * Default data font size.
lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/AUTHORS DELETED
@@ -1,54 +0,0 @@
1
- abysta at yandex.ru
2
- Adrian Schroeter
3
- Aleksey Chalabyan
4
- Andrey Valentinovich Panov
5
- Ben Laenen
6
- Besarion Gugushvili
7
- Bhikkhu Pesala
8
- Clayborne Arevalo
9
- Dafydd Harries
10
- Danilo Segan
11
- Davide Viti
12
- David Jez
13
- David Lawrence Ramsey
14
- Denis Jacquerye
15
- Dwayne Bailey
16
- Eugeniy Meshcheryakov
17
- Gee Fung Sit
18
- Heikki Lindroos
19
- James Cloos
20
- James Crippen
21
- John Karp
22
- Keenan Pepper
23
- Lars Naesbye Christensen
24
- Lior Halphon
25
- MaEr
26
- Mashrab Kuvatov
27
- Max Berger
28
- Mederic Boquien
29
- Michael Everson
30
- MihailJP
31
- Misu Moldovan
32
- Nguyen Thai Ngoc Duy
33
- Nicolas Mailhot
34
- Norayr Chilingarian
35
- Ognyan Kulev
36
- Ondrej Koala Vacha
37
- Peter Cernak
38
- Remy Oudompheng
39
- Roozbeh Pournader
40
- Rouben Hakobian
41
- Sahak Petrosyan
42
- Sander Vesik
43
- Stepan Roh
44
- Stephen Hartke
45
- Steve Tinney
46
- Tavmjong Bah
47
- Thomas Henlich
48
- Tim May
49
- Valentin Stoykov
50
- Vasek Stodulka
51
- Wesley Transue
52
- Yoshiki Ohshima
53
-
54
- $Id: AUTHORS 2495 2011-11-14 22:56:26Z noct_dreamer $
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/BUGS DELETED
@@ -1,3 +0,0 @@
1
- See http://dejavu.sourceforge.net/wiki/index.php/Bugs
2
-
3
- $Id: BUGS 80 2004-11-13 13:12:02Z src $
 
 
 
lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/LICENSE DELETED
@@ -1,99 +0,0 @@
1
- Fonts are (c) Bitstream (see below). DejaVu changes are in public domain.
2
- Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below)
3
-
4
- Bitstream Vera Fonts Copyright
5
- ------------------------------
6
-
7
- Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is
8
- a trademark of Bitstream, Inc.
9
-
10
- Permission is hereby granted, free of charge, to any person obtaining a copy
11
- of the fonts accompanying this license ("Fonts") and associated
12
- documentation files (the "Font Software"), to reproduce and distribute the
13
- Font Software, including without limitation the rights to use, copy, merge,
14
- publish, distribute, and/or sell copies of the Font Software, and to permit
15
- persons to whom the Font Software is furnished to do so, subject to the
16
- following conditions:
17
-
18
- The above copyright and trademark notices and this permission notice shall
19
- be included in all copies of one or more of the Font Software typefaces.
20
-
21
- The Font Software may be modified, altered, or added to, and in particular
22
- the designs of glyphs or characters in the Fonts may be modified and
23
- additional glyphs or characters may be added to the Fonts, only if the fonts
24
- are renamed to names not containing either the words "Bitstream" or the word
25
- "Vera".
26
-
27
- This License becomes null and void to the extent applicable to Fonts or Font
28
- Software that has been modified and is distributed under the "Bitstream
29
- Vera" names.
30
-
31
- The Font Software may be sold as part of a larger software package but no
32
- copy of one or more of the Font Software typefaces may be sold by itself.
33
-
34
- THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
35
- OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY,
36
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT,
37
- TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME
38
- FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING
39
- ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES,
40
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
41
- THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE
42
- FONT SOFTWARE.
43
-
44
- Except as contained in this notice, the names of Gnome, the Gnome
45
- Foundation, and Bitstream Inc., shall not be used in advertising or
46
- otherwise to promote the sale, use or other dealings in this Font Software
47
- without prior written authorization from the Gnome Foundation or Bitstream
48
- Inc., respectively. For further information, contact: fonts at gnome dot
49
- org.
50
-
51
- Arev Fonts Copyright
52
- ------------------------------
53
-
54
- Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved.
55
-
56
- Permission is hereby granted, free of charge, to any person obtaining
57
- a copy of the fonts accompanying this license ("Fonts") and
58
- associated documentation files (the "Font Software"), to reproduce
59
- and distribute the modifications to the Bitstream Vera Font Software,
60
- including without limitation the rights to use, copy, merge, publish,
61
- distribute, and/or sell copies of the Font Software, and to permit
62
- persons to whom the Font Software is furnished to do so, subject to
63
- the following conditions:
64
-
65
- The above copyright and trademark notices and this permission notice
66
- shall be included in all copies of one or more of the Font Software
67
- typefaces.
68
-
69
- The Font Software may be modified, altered, or added to, and in
70
- particular the designs of glyphs or characters in the Fonts may be
71
- modified and additional glyphs or characters may be added to the
72
- Fonts, only if the fonts are renamed to names not containing either
73
- the words "Tavmjong Bah" or the word "Arev".
74
-
75
- This License becomes null and void to the extent applicable to Fonts
76
- or Font Software that has been modified and is distributed under the
77
- "Tavmjong Bah Arev" names.
78
-
79
- The Font Software may be sold as part of a larger software package but
80
- no copy of one or more of the Font Software typefaces may be sold by
81
- itself.
82
-
83
- THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
84
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
85
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
86
- OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL
87
- TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
88
- INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
89
- DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
90
- FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
91
- OTHER DEALINGS IN THE FONT SOFTWARE.
92
-
93
- Except as contained in this notice, the name of Tavmjong Bah shall not
94
- be used in advertising or otherwise to promote the sale, use or other
95
- dealings in this Font Software without prior written authorization
96
- from Tavmjong Bah. For further information, contact: tavmjong @ free
97
- . fr.
98
-
99
- $Id: LICENSE 2133 2007-11-28 02:46:28Z lechimp $
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/NEWS DELETED
@@ -1,1373 +0,0 @@
1
- Changes from 2.33 to 2.34
2
- * Sans, SansMono, Serif: unlinked references of U+2596 for bug 50848
3
- (by Denis Jacquerye)
4
- * Sans, SansMono, Serif: added U+A7AA (by Denis Jacquerye)
5
- * Sans, SansMono, Serif: added U+2A6A, U+2A6B, U+2E1F based on U+223B
6
- (by Denis Jacquerye)
7
- * Sans, Serif: removed superfluous ligature definitions for ffl und ffi
8
- (bug 55363) (by Gee Fung Sit 薛至峰)
9
- * Sans, Serif: swapped glyphs for U+25D2 and U+25D3 (bug 55197)
10
- (by Gee Fung Sit 薛至峰)
11
- * Sans, Serif: added U+A740, U+A741 (by Denis Jacquerye)
12
- * Sans: added U+20BA Turkish Lira sign (by Denis Jacquerye)
13
- * Sans: replaced Georgian Asomtavruli U+10A0-U+10C5 and Mkhedruli U+10D0-U+10FC
14
- with new version (by Besarion Gugushvili)
15
- * Sans: added Georgian Nuskhuri U+2D00-U+U+2D25 (by Besarion Gugushvili)
16
- * Sans: added Private Use Area glyphs for Georgian U+F400-U+F441
17
- (by Besarion Gugushvili)
18
- * Sans: tweaked U+0250, U+0254 (by Denis Jacquerye)
19
- * Sans: adjusted hinting of U+032C-U+032D, avoiding problem on some platforms
20
- (by Denis Jacquerye)
21
- * Sans: added U+A7A0-U+A7A9, pre-1921 Latvian letters with oblique stroke
22
- (by Denis Jacquerye)
23
- * Sans: added anchors to U+2C6D (by Denis Jacquerye)
24
- * Sans: added cedilla anchor to some Latin characters (by Denis Jacquerye)
25
- * Sans: added ogonek anchor to A, E, O, U, Y (by Denis Jacquerye)
26
- * Sans: adjusted ogonek reference in U+0172, U+01EA, U+01EB
27
- (by Denis Jacquerye)
28
- * Sans: added anchors to U+0104, U+0105 (by Denis Jacquerye)
29
- * Sans: added U+1F600, U+1F611, U+1F615, U+1F617, U+1F619, U+1F61B, U+1F61F,
30
- U+1F626-U+1F627, U+1F62E-U+1F62F, U+1F634 (by Gee Fung Sit 薛至峰)
31
- * Sans: replaced U+27A1 with mirror image of U+2B05 for consistency
32
- (by Gee Fung Sit 薛至峰)
33
- * Sans: copied hints from U+14A3, U+14A7 to U+2142-U+2143
34
- (by Gee Fung Sit 薛至峰)
35
- * Sans: added Lisu block (by Gee Fung Sit 薛至峰)
36
- * Sans: typographical improvements to U+0166-U+0167, U+02A6, U+02AA
37
- (by Gee Fung Sit 薛至峰)
38
- * Sans: slightly change hinting of "2" to fix bug 37395 (by Ben Laenen)
39
- * Sans: fixed U+1444 which had wrong top dot that shouldn't be there
40
- (by Denis Jacquerye)
41
- * Sans: added anchors for diacritics to U+01B7, U+01B8, U+01B9, U+0292
42
- (by Denis Jacquerye)
43
- * Sans: added U+01B7, U+01B8 to context for case diacritics above
44
- * SansMono: fixed U+0574 (by Ruben Hakobian)
45
- * SansMono: added U+2016, U+27C2 (by Yoshiki Ohshima)
46
- * SansMono: added U+02CE, U+02CF (by Denis Jacquerye)
47
- * SansMono: added U+2148, U+27E6-U+27E7, U+2B05-U+2B0D, U+1D55A
48
- (by Gee Fung Sit 薛至峰)
49
- * Serif: added U+02BA, U+02C2-U+02C5, U+02CA-U+02CB, U+02D7, U+02F3, U+02F7,
50
- U+046C-U+046D, U+0476-U+0477, U+1D7C-U+1D7F, U+20B8, U+2132, U+214E, U+2C7B
51
- to Serif (by Gee Fung Sit 薛至峰)
52
- * Serif: typographic improvements to U+0194, U+01B1, U+0263, U+028A, U+02A6,
53
- U+02A8, U+02AA, U+02E0, U+03DC, U+1D3B, U+1D7B (by Gee Fung Sit 薛至峰)
54
- * Serif: added small cap versions of q, x (in italic styles), delta, theta, xi,
55
- sigma, phi, omega, not wired in yet (by Gee Fung Sit 薛至峰)
56
- * Serif: added anchors to U+0234-U+0236 (by Gee Fung Sit 薛至峰)
57
- * Serif: added U+02EC, U+02EF, U+02F0, U+0360 (by Denis Jacquerye)
58
-
59
- Changes from 2.32 to 2.33
60
-
61
- * added Old Italic block to Sans (by MaEr)
62
- * added U+051E, U+051F to Sans (by MaEr)
63
- * added U+01BA, U+0372-U+0373, U+0376-U+0377, U+03CF, U+1D00-U+1D01,
64
- U+1D03-U+1D07, U+1D0A-U+1D13, U+1D15, U+1D18-U+1D1C, U+1D20-U+1D2B,
65
- U+1D2F, U+1D3D, U+1D5C-U+1D61, U+1D66-U+1D6B, U+1DB8, U+1E9C-U+1E9D,
66
- U+1EFA-U+1EFB, U+2C60-U+2C61, U+2C63, U+A726-U+A73C, U+A73E-U+A73F,
67
- U+A746-U+A747, U+A74A-U+A74B, U+A74E+U+A74F, U+A768-U+A769, U+A77B-U+A77C,
68
- U+A780-U+A787, U+A790-U+A791, U+A7FA-U+A7FF to Serif (by Gee Fung Sit 薛至峰)
69
- * added alternate forms to U+014A and U+01B7 in Serif (by Gee Fung Sit 薛至峰)
70
- * typographical improvements to U+0166-U+0167, U+0197, U+01B5-U+01B6, U+01BB,
71
- U+0222-U+0223, U+023D, U+0250-U+0252, U+026E, U+0274, U+028F, U+029F,
72
- U+02A3-U+02A5, U+02AB, U+03FE-U+03FF, U+1D02, U+1D14, U+1D1D-U+1D1F, U+1D3B,
73
- U+1D43-U+1D46, U+1D59, U+1D9B, U+2C71, U+2C73 in Serif (by Gee Fung Sit 薛至峰)
74
- * fixed bugs #31762 and #34700 plus other small fixes (wrong direction,
75
- duplicate points, etc.) for Sans and Serif (by Gee Fung Sit 薛至峰)
76
- * added U+204B to Mono (by Gee Fung Sit 薛至峰)
77
- * added U+26E2 to Sans (by Gee Fung Sit 薛至峰)
78
- * added Playing Cards block (U+1F0A0-U+1F0DF) to Sans (by Gee Fung Sit 薛至峰)
79
- * emoticons in Sans: replace U+2639-U+263B with better versions, add
80
- U+1F601-U+1F610, U+1F612-U+1F614, U+1F616, U+1F618, U+1F61A, U+1F61C-U+1F61E,
81
- U+1F620-U+1F624, U+1F625, U+1F628-U+1F62B, U+1F62D, U+1F630-U+1F633,
82
- U+1F635-U+1F640 (by Ben Laenen and Denis Jacquerye)
83
- * added U+A78E, U+A790-U+A791 to Sans and Mono (by Denis Jacquerye)
84
- * added U+A7FA to Sans (by Denis Jacquerye)
85
- * subscripts: added U+2095-U+209C to Sans, Serif and Mono, adjusted
86
- U+1D49-U+1D4A in Sans and Mono (by Denis Jacquerye)
87
- * added U+0243 to Mono (by Denis Jacquerye)
88
- * adjusted U+0307 to match dot of i, replaced dotaccent U+02D9 with U+0307 in
89
- most dependencies in Sans (by Denis Jacquerye)
90
- * adjusted anchors of f and added them to long s in Sans (by Denis Jacquerye)
91
- * added anchors to precomposed dependencies of D and d (by Denis Jacquerye)
92
- * added debug glyphs U+F002 and U+F003 which will show current point size (by
93
- Ben Laenen)
94
- * use correct version for Serbian italic be (by Eugeniy Meshcheryakov)
95
- * added pictograms U+1F42D-U+1F42E, U+1F431, U+1F435 (by Denis Jacquerye)
96
- * improved Hebrew in Sans (by Lior Halphon)
97
- * improved Armenian in Sans, and added Armenian in Serif and Mono (by Rouben
98
- Hakobian (Tarumian), Aleksey Chalabyan and Norayr Chilingarian)
99
- * remove "locl" feature for Romanian for S/T/s/t with cedilla/comma accent (by
100
- Ben Laenen)
101
- * replace wrong "dflt" script tag in Mono with "DFLT" (by Ben Laenen)
102
-
103
- Changes from 2.31 to 2.32
104
-
105
- * added to Sans: Latin small letter p with stroke (U+1D7D), Latin capital
106
- letter p with stroke through descender (U+A750), Latin small letter p with
107
- stroke through descender (U+A751), Latin capital letter thorn with stroke
108
- (U+A764), Latin small letter thorn with stroke (U+A765), Latin capital letter
109
- thorn with stroke through descender (U+A766), Latin small letter thorn with
110
- stroke through descender (U+A767), Latin capital letter q with stroke through
111
- descender (U+A756), Latin small letter q with stroke through descender
112
- (U+A757), Latin capital letter p with flourish (U+A752), Latin small letter p
113
- with flourish (U+A753) (by Ben Laenen)
114
- * add new Indian rupee symbol (U+20B9) to Sans, Serif and Mono (although
115
- standardization in Unicode not complete yet, UTC did assign this code point)
116
- (by Ben Laenen)
117
- * Sans: adjusted U+0E3F, U+20AB, U+20AD-U+20AE, U+20B1, U+20B5, U+20B8 to have
118
- them take up the same width as digits (by Gee Fung Sit 薛至峰)
119
- * added U+23E8 to Sans (by Thomas Henlich)
120
- * fixed numerous bugs (#22579, #28189, #28977, N'Ko in Windows, fixed U+FB4F,
121
- anchors for U+0332-U+0333, made extensions in Misc. Technical connect, and
122
- other small fixes) (by Gee Fung Sit 薛至峰)
123
- * added looptail g as stylistic variant to Serif (by Gee Fung Sit 薛至峰)
124
- * added the remaining precomposed characters in Latin Extended Additional in
125
- Serif (by Gee Fung Sit 薛至峰)
126
- * added Georgian Mkhedruli (U+10D0-U+10FC) to Sans ExtraLight (by Besarion
127
- Gugushvili)
128
- * fix spacing in hinting of U+042E (Ю) in Mono (by Ben Laenen)
129
- * replaced U+2650 and minor changes to U+2640-U+2642, U+2699, U+26A2-U+26A5,
130
- U+26B2-U+26B5, U+26B8 in Sans (by Gee Fung Sit 薛至峰)
131
- * added U+1E9C-U+1E9D, U+1EFA-U+1EFB, U+2028-U+2029, U+20B8, U+2150-U+2152,
132
- U+2189, U+26C0-U+26C3, U+A722-U+A725, U+1F030-U+1F093 to Sans (by Gee Fung
133
- Sit 薛至峰)
134
- * added U+1E9C-U+1E9E, U+1EFA-U+1EFB, U+2028-U+2029, U+20B8, U+2181-U+2182,
135
- U+2185 U+A722-U+A725, to Sans ExtraLight (by Gee Fung Sit 薛至峰)
136
- * added U+20B8, U+22A2-U+22A5, U+A722-U+A725 to Mono (by Gee Fung Sit 薛至峰)
137
- * added U+02CD, U+01BF, U+01F7, U+0222-U+0223, U+0243-U+0244, U+0246-U+024F,
138
- U+2150-U+2152, U+2189, U+239B-U+23AD and U+A73D to Serif (by Gee Fung Sit
139
- 薛至峰)
140
-
141
- Changes from 2.30 to 2.31
142
-
143
- * fixed bug where Serif Condensed Italic wouldn't get proper subfamily tags (by
144
- Ben Laenen)
145
- * added math operators U+2234-U+2237 to Mono (by Ben Laenen)
146
- * removed buggy instructions of U+032D (by Eugeniy Meshcheryakov)
147
- * added U+2C70, U+2C7E, U+2C7F to Sans and Sans Mono (by Denis Jacquerye)
148
- * added U+2C7D to Sans Mono (by Denis Jacquerye)
149
- * added U+2C6D, U+2C70-2C73, U+2C7E-2C7F to Serif (by Denis Jacquerye)
150
- * added extremas to alpha U+03B1 in Serif-Italic (by Denis Jacquerye)
151
- * added U+4A4, U+4A5 to Mono (by Andrey V. Panov)
152
- * added Arabic letters U+0657, U+0670, U+0688-U+0690, U+0693-U+0694,
153
- U+0696-U+0697, U+0699-U+06A0, U+06A2-U+06A3, U+06A5, U+06A7-U+06A8,
154
- U+06AA-U+06AE, U+06B0-U+06B4, U+06B6-U+06B9, U+06BB-U+06BE and their
155
- contextual forms to Sans (by MihailJP)
156
- * added U+A78D LATIN CAPITAL LETTER TURNED H for coming Unicode 6.0 (by Denis
157
- Jacquerye)
158
-
159
- Changes from 2.29 to 2.30
160
-
161
- * added U+0462-U+0463 to Mono (by Denis Jacquerye)
162
- * corrected U+1E53 in Serif (by Gee Fung Sit)
163
- * added U+1E4C-U+1E4D to Mono and Serif (by Gee Fung Sit)
164
- * added U+1E78-U+1E79 to Mono (by Gee Fung Sit)
165
- * fixed missing diacritics in Latin Extended Additional in Sans ExtraLight
166
- (moved stacked diacritics out of PUA in the process) (by Gee Fung Sit)
167
- * fixed anchors on U+1E78 in Serif (by Gee Fung Sit)
168
- * added U+1DC4-U+1DC9 to Serif (by Denis Jacquerye)
169
- * renamed above-mark to above-mark in Serif-Italic (by Denis Jacquerye)
170
- * added U+1DC4-U+1DC9 to context class for dotless substitution (by Denis
171
- Jacquerye)
172
- * changed Doubleacute to Doublegrave in Sans ExtraLight (by Gee Fung Sit)
173
- * removed redundant reference in U+01FB in Sans Oblique (by Gee Fung Sit)
174
- * added U+A726-U+A727 to Mono (Denis Jacquerye)
175
- * changed U+04BE and U+04BF according to recommedations of Sasha Ankwab in Sans
176
- (by Andrey V. Panov)
177
- * remove "Symbol Charset" from set of codepages in Sans (by Eugeniy
178
- Meshcheryakov)
179
-
180
- Changes from 2.28 to 2.29
181
-
182
- * modified U+10FB in Sans to be a mirror image of U+2056, since U+10FB is not
183
- Georgian-specific (by Roozbeh Pournader)
184
- * added U+2B1F, U+2B24, U+2B53, U+2B54 in Sans (by Roozbeh Pournader)
185
- * fixed TUR opentype language tag to TRK in Serif (bug 19825) (by Ben Laenen)
186
- * early implementation of Abkhaz letter U+0524-U+0525 in Sans
187
- (by Michael Everson and abysta)
188
- * flipped U+1D538 in Sans (by Gee Fung Sit)
189
- * added U+26B3-U+26B8, U+1D7D8-U+1D7E1 in Sans (by Gee Fung Sit)
190
- * corrected U+1D7A9 in Sans Bold Oblique (by Gee Fung Sit)
191
- * Fixed U+0649 to be dual-joining in Sans Mono (by Roozbeh Pournader)
192
- * Remove unnecessary 'isol' feature from Sans Mono (by Roozbeh Pournader)
193
- * Remove 'cmap' mappings for U+066E, U+066F, U+067C, U+067D, U+0681, U+0682,
194
- U+0685, U+0692, U+06A1, U+06B5, U+06BA, U+06C6, U+06CE, and U+06D5
195
- in Sans Mono (bug 20323) (by Roozbeh Pournader)
196
- * add half brackets (U+2E22 - U+2E25, by Steve Tinney)
197
-
198
- Changes from 2.27 to 2.28
199
-
200
- * added U+A789, U+A78A in Sans and Sans Mono (by Denis Jacquerye)
201
- * modified U+02D6, U+02D7, U+02EE in Sans and Sans Mono (by Denis Jacquerye)
202
- * added U+1E9E (German capital ß) to Sans and Serif (by Denis Jacquerye)
203
- * adjusted width of U+01B7-U+01B9 in Serif Italic (by Denis Jacquerye)
204
- * modified U+021C, U+021D in Sans (by Denis Jacquerye)
205
- * added U+021C, U+021D in Mono (by Denis Jacquerye)
206
- * added U+F428 (Georgian Nuskhuri "f") in private use area (by Besarion
207
- Gugushvili)
208
- * updated Georgian mkhedruli (U+10D0-U+10FA) with new version (by Besarion
209
- Gugushvili)
210
- * updated Georgian asomtavruli (U+10A0-U+10C5) with new version (by Besarion
211
- Gugushvili)
212
- * added Georgian nuskhuri (U+2D00-U+2D25) (by Besarion Gugushvili)
213
- * added Georgian mtavruli in private use area (U+F400-U+F426) (by Besarion
214
- Gugushvili)
215
- * added mark anchors above to Cyrillic U+0430-U+0438, U+043A-U+044F,
216
- U+0454-U+0455 in Mono (by Ben Laenen)
217
- * modified/moved up U+0318-U+0319, U+031C-U+031F, U+0329-U+032A, U+032C-U+032D,
218
- U+0339-U+033B, U+0348 and U+0353 in Sans to prevent cut-off (by Gee Fung Sit)
219
- * added U+035A to Sans (by Gee Fung Sit)
220
- * updated fontconfig files (by Nicolas Mailhot)
221
- * added U+2032-2037 to Mono (by Denis Jacquerye)
222
- * added Ogham to Sans ExtraLight (by Gee Fung Sit)
223
- * added U+2C6F, U+2C79, U+2C7C-2C7D to Mono (by Gee Fung Sit)
224
- * added U+210F to Serif and Sans ExtraLight (by Gee Fung Sit)
225
- * changed U+210F to a more common glyph in Sans and Mono (by Gee Fung Sit)
226
-
227
- Changes from 2.26 to 2.27
228
-
229
- * added some of Michael Everson's new Cyrillic glyphs to Sans (by Wesley
230
- Transue)
231
- * removed blank glyph at U+05EF from Sans Bold Oblique (by Gee Fung Sit)
232
- * small adjustments to existing tone bars in Sans and Mono (by Gee Fung Sit)
233
- * added U+0372-U+0373, U+0376-U+0377, U+03CF, U+A668-U+A66E, U+A708-U+A711,
234
- U+A71B-U+A71F to Sans (by Gee Fung Sit)
235
- * copied U+02E5-U+02E9 over from Sans to fix inconsistencies in Serif (by Gee
236
- Fung Sit)
237
- * added U+021C-U+021D, U+0370-U+0371, U+037B-U+037D, U+0470-U+0471,
238
- U+0510-U+0515, U+051A-U+051D, U+1E9F, U+2C64, U+2C6E-U+2C6F, U+2C79,
239
- U+2C7C-U+2C7D, U+A644-U+A647, U+A650-U+A651, U+A654-U+A657, U+A708-U+A716,
240
- U+A71B-U+A71F to Serif (by Gee Fung Sit)
241
- * added U+A708-U+A716, U+A71B-U+A71F to Mono (by Gee Fung Sit)
242
- * added anchors to U+017F (ſ) and fixed U+1E9B (ẛ) in Serif (by Gee Fung Sit)
243
- * made U+0325 smaller in Sans Bold and Serif to match Sans Book (by Gee Fung
244
- Sit)
245
- * fixes to U+02F3 (moved up), U+228F-U+2294 (more square-like) and
246
- U+22CE-U+22CF (stroke width) in Sans (by Gee Fung Sit)
247
- * replaced U+2202 ∂ (Sans and Mono) and U+221D ∝, U+221E ∞ (Sans) with glyphs
248
- from Arev (with small changes) (by Gee Fung Sit)
249
- * added U+22B0-U+22B1, U+22C7, U+22D0-U+22D5 from Arev to Sans to complete the
250
- block (by Gee Fung Sit)
251
- * added U+0514-U+0515 to Sans ExtraLight (by Gee Fung Sit)
252
- * skewed U+A78C in all Oblique/Italic fonts (by Gee Fung Sit)
253
- * moved U+2215 to U+2044 in Sans and Serif and replaced U+2215 with reference
254
- to U+002F in all fonts (by Gee Fung Sit)
255
- * added U+2C6E to Mono (by Denis Jacquerye)
256
- * added U+A782 and U+A783 in Sans (by Wesley Transue)
257
- * added U+0244, U+024C-024D, U+2C64 in Sans Mono (by Denis Jacquerye)
258
- * modified U+01AE in Sans Mono (by Denis Jacquerye)
259
- * added U+2C7A to all fonts (by Gee Fung Sit)
260
- * italicized/small changes to U+2C76 in Serif (Bold) Italic (by Gee Fung Sit)
261
- * improved outlines of U+2C68, U+2C6A, U+2C6C in Serif (Bold) Italic (by Gee
262
- Fung Sit)
263
- * rounded U+2C77 at the bottom in Serif (by Gee Fung Sit)
264
- * added joining behavior for tone letters (U+02E5-U+02E9) in Sans (bug #15669)
265
- (by Gee Fung Sit)
266
- * fixed outline of y.alt in Sans Regular (by Denis Jacquerye)
267
- * changed references of U+1D5A8, U+1D5C5, U+1D5DC, U+1D5F9, U+1D610, U+1D62D,
268
- U+1D644 and U+1D661 to stylistic alternates to have a better distinction (by
269
- Gee Fung Sit)
270
- * hinted I.alt in Sans Regular (by Gee Fung Sit)
271
- * added U+0487, completing Cyrillic block (by Gee Fung Sit)
272
- * extended the bar of U+0463 to the right and moved the anchor (by Gee Fung
273
- Sit)
274
- * added anchors to glyphs in Cyrillic block (by Gee Fung Sit)
275
- * added (preliminary) hints to tone letter forms (U+02E5.5, U+02E9.1, stem) in
276
- Sans Book (by Gee Fung Sit)
277
-
278
- Changes from 2.25 to 2.26
279
-
280
- - added glyphs for Cyrillic-B to Sans (by Wesley Transue)
281
- - added U+0370-U+0371 to Sans (by Wesley Transue)
282
- - added U+019C, U+01A2-U+01A3, U+01A6, U+01E4-U+01E5, U+024C-U+024D, U+0285,
283
- U+0290, U+02A0, U+0370-U+0371, U+03F1, U+03FC to Sans ExtraLight (by Wesley
284
- Transue)
285
- - added U+20A0-U+20A5, U+20A7-U+20B3, U+2105, U+210D, U+210F, U+2115, U+2117,
286
- U+2119-U+211A, U+211D, U+2124, U+212E, U+2200-U+2204 to Mono (by Heikki
287
- Lindroos)
288
- - added U+01BA and U+01BF to Mono (by Heikki Lindroos)
289
- - merged OpenType "aalt" feature in Latin in Sans (by Denis Jacquerye)
290
- - added alternative shape for y in Sans (by Denis Jacquerye)
291
- - added saltillo (U+A78B-U+A78C) to all faces (by James Cloos)
292
- - changed U+047C-U+047D to references instead of outlines in Sans (by Wesley
293
- Transue)
294
- - added Latin letter tresillo U+A72A-U+A72B to Sans (by Wesley Transue)
295
- - added U+A734-U+A737 to Sans (by Wesley Transue)
296
- - added U+2053 to Serif and fixed it bug:9425 in Sans (by Gee Fung Sit)
297
- - removed problematic hints for U+0423 bug:10025 (by Gee Fung Sit)
298
- - added U+27C5-U+27C6 bug:10255 to all faces (by Gee Fung Sit)
299
- - fixed width of U+2016 in Sans Oblique (by Gee Fung Sit)
300
- - added U+2016, U+2032-U+2038, U+2042, U+2045-U+2046, U+204B-U+204F,
301
- U+2051-U+2052, U+2057 to Serif (by Gee Fung Sit)
302
- - made U+2140 bigger to match other n-ary operators (by Gee Fung Sit)
303
- - added U+0606-U+0607, U+0609-U+060A to Sans (by Gee Fung Sit)
304
- - added U+221B-U+221C to Mono (by Gee Fung Sit)
305
- - small adjustments to U+221B-U+221C in Sans and Serif (by Gee Fung Sit)
306
- - update U+04B4-U+04B5 in Serif (by Andrey V. Panov)
307
- - increased max-storage value from maxp table to 153 (by Andrey V. Panov)
308
- - added U+0472-U+0473, U+0510-U+0511, U+051A-U+051D, U+0606-U+0607,
309
- U+0609-U+060A, U+1E26-U+1E27, U+1E54-U+1E55, U+1E7C-U+1E7D, U+1E8C-U+1E8D,
310
- U+1E90-U+1E91, U+1E97-U+1E99, U+1E9F, U+1EAC-U+1EAD, U+1EB6-U+1EB7,
311
- U+1EC6-U+1EC7, U+1ED8-U+1EDD, U+1EE0-U+1EE3, U+1EE8-U+1EEB, U+1EEE-U+1EF1 to
312
- Mono (by Gee Fung Sit)
313
- - added locl rules for S/T cedilla for Romanian and Moldavian so they get
314
- rendered as S/T with comma accent (see Redhat bug #455981) (by Ben Laenen)
315
- - removed ligature rule from Armenian U+0587 bug:16113 (by Gee Fung Sit)
316
-
317
- Changes from 2.24 to 2.25
318
-
319
- - moved/added U+2E18 (by Gee Fung Sit)
320
- - added empty glyph for U+2064 in Sans and Serif (by Gee Fung Sit)
321
- - added U+22CE-U+22CF to Sans (by Gee Fung Sit)
322
- - Sans Oblique and Bold Oblique, Serif: reverted digits hinting instructions back to before revision 1590, which fixed mistaken debian bug #471024. This fixes Debian bug #411308. The original bug was in freetype not in the fonts (by Denis Jacquerye)
323
- - added U+A726-U+A729, U+A730-U+A733, U+A738-U+A73F, U+A746-U+A74B, U+A74E-U+A74F, U+A780-U+A781, U+A7FB-U+A7FF to Sans (by Gee Fung Sit)
324
- - added Macedonian italic glyph shape for U+0453 in Serif (by Ben Laenen)
325
- - changed descenders in U+0446, U+0449, U+0497, U+04A3, U+04AD (by Andrey V. Panov)
326
- - updated main SFD files to SplineFontDB 3.0 (Denis Jacquerye and Gee Fung Sit)
327
- - moved U+0561 2 up since it wasn't aligned with the baseline well (by Ben Laenen)
328
- - added U+2E2E to Sans (by Gee Fung Sit)
329
- - replaced U+2699 with simpler version in Sans (by Gee Fung Sit)
330
- - added a lot of hinting instructions to Latin Extended B, Greek and Coptic glyphs Sans Book (by Wesley Transue)
331
- - differentiated U+2219 from U+22C5 and adjusted affected references in Sans and Mono (by Gee Fung Sit)
332
- - made Hebrew narrower in Sans Bold and Sans Bold Oblique (by Denis Jacquerye)
333
- - added Kurdish and Chuvash letters from Unicode 5.1 Cyrillic Extended block (by Wesley Transue)
334
- - added U+1E9F, U+A644-U+A647, U+A64C-U+A64D, U+A650-U+A651, U+A654-U+A655, U+A712U+A716 to Sans (by Gee Fung Sit)
335
- - added several glyphs to Sans ExtraLight (by Gee Fung Sit)
336
- - added hinting instructions to U+046A-U+046B, U+0508-U+0509, U+050B, U+0512-U+0513 in Sans Book (by Wesley Transue)
337
- - corrected width of U+027E in Sans Book (by Gee Fung Sit)
338
- - added U+2C79, U+2C7B-U+2C7D to Sans (by Gee Fung Sit)
339
- - added a bunch of glyphs+small corrections to Sans Light (by Gee Fung Sit)
340
- - added U+0496, U+0497, U+04B0, U+04B1 (by Andrey V. Panov)
341
- - updated U+0493, U+049B, U+04B3, U+04B7, U+04F7 (by Andrey V. Panov)
342
- - further improvements in extended Cyrillic (by Andrey V. Panov)
343
-
344
- Changes from 2.23 to 2.24
345
-
346
- - instructions for U+05C0 ׀, U+05C3 ׃, U+05F3 ׳, and U+05F4 ״ in DejaVu
347
- Sans. (by Wesley Transue)
348
- - instructions for U+2116 in Sans (by Andrey V. Panov)
349
- - Unicode 5.1 update: moved U+F208 to U+2C6D, U+F25F to U+2C71, added
350
- U+2C6E-U+2C6F, U+2C72-U+2C73, updated outline of U+2C71 in Sans. (by
351
- Denis Jacquerye)
352
- - updated and instructed U+0401 in Sans (by Andrey V. Panov)
353
- - fixed the bug in Sans faces where U+02EC ˬ faced the wrong direction.
354
- Also, added a few more glyph instructions. (by Wesley Transue)
355
- - removed OS2Sub and OS2Strike that weren't intentional in Sans
356
- ExtraLight. (by Denis Jacquerye)
357
- - updated instructions for U+401, U+44F in Serif Book. (by Andrey V.
358
- Panov)
359
- - instructions for U+02C4 ˄, U+02C5 ˅, U+03D8 Ϙ, U+03D9 ϙ, U+0494 Ҕ, and
360
- U+0495 ҕ in Sans Book. (by Wesley Transue)
361
- - instructions for U+01A6 Ʀ, U+0238 ȸ, U+0239 ȹ, U+02EC ˬ, and U+05C6 ׆
362
- in Sans Book. (by Wesley Transue)
363
- - DejaVuSans.sfd DejaVuSerif.sfd: updated instructions for U+447 and
364
- U+451 using code generated with xgridfit (by Andrey V. Panov)
365
- - instructions for a few glyphs in the Latin Extended-B Block, Greek
366
- Block, Cyrillic Block, and N'Ko block. (by Wesley Transue)
367
- - updated sfdnormalize.pl, and SFD files to new SFD format with empty
368
- lines. (by Denis Jacquerye)
369
-
370
- Changes from 2.22 to 2.23
371
-
372
- - fixed bug which made Condensed fonts appear instead of normal width ones
373
- - added U+20DB, U+20DC, and U+20E1 to Sans (by Roozbeh Pournader)
374
- - added hinting instructions to U+01A7, U+01AA-U+01AC, U+01AE-U+01AF,
375
- U+01BC-U+01BD, U+01BF, U+01F7, U+0277, U+027F, U+0285-U+0286, U+0297, U+02AF,
376
- U+02B4-U+02B5, U+02BD, U+030D, U+0311, U+0329, U+04A0-U+04A1 in Sans Book (by
377
- Wesley Transue)
378
- - modified hinting instructions of U+04A2 in Sans Book (by Wesley Transue)
379
- - added hinting instructions to U+237D, U+2423 in Mono Book and Mono Bold (by
380
- Wesley Transue)
381
- - added mathematical alphanumeric symbols to all styles (by Max Berger)
382
- - added Unicode 5.1 U+2E18 as U+2E18.u51 (not yet usable) to Sans (by Roozbeh
383
- Pournader)
384
- - dereferenced all glyphs with mixed references and outlines (by Denis
385
- Jacquerye)
386
- - removed non-zero width from U+0344 in Sans (by Denis Jacquerye)
387
-
388
- Changes from 2.21 to 2.22
389
-
390
- - directory structure has changed, we now use the Makefile
391
- - modified Armenian U+0565 in Sans (by Սահակ Պետրոսյան)
392
- - added double struck letters and numbers U+2102, U+210D, U+2115,
393
- U+2119-U+211A, U+211D, U+2124, U+213C-U+2140, U+2145-U+2149, U+1D538-U+1D539,
394
- U+1D53B-U+1D53E, U+1D540-U+1D544, U+1D546, U+1D54A-U+1D550, U+1D552-U+1D56B,
395
- U+1D7D8-U+1D7E1 to Serif (by Stephen Hartke)
396
- - added letterlike symbols U+2103, U+2109, U+2127, U+214B, U+2141-U+2144 to
397
- Serif (by Ben Laenen)
398
- - fixed outline direction of U+2143 in Sans Bold/Bold Oblique (by Ben Laenen)
399
- - added arrow set in Serif: arrows: U+2194-U+21FF; dingbats: U+27A1;
400
- supplemental arrows A: U+27F0-U+27FF; supplemental arrows B: U+2900-U+2975,
401
- U+297A; miscellaneous symbols and arrows: U+2B00-U+2B11 (by Ben Laenen)
402
- - added U+0180, U+01DE, U+01E0-01E1, U+022A, U+022C, U+0230, U+1E08-U+1E09,
403
- U+1E10-U+1E11, U+1EB0-U+1EB1 to Mono (by Denis Jacquerye)
404
- - adjusted U+01D5, U+01D7, U+01D9, U+1DB in Mono (by Denis Jacquerye)
405
- - added Ogham in Sans (by Wesley Transue)
406
- - added Yijing Hexagram Symbols in Sans (by Wesley Transue)
407
- - hinting instructions added to Cyrillic U+0460, U+04A6-U+04A7, U+04AC-U+04AD,
408
- U+04C7-U+04C8, U+04F6-U+04F7, U+04FA-U+04FB, U+050C-U+050D in Sans Book (by
409
- Wesley Transue)
410
- - adjusted Cyrillic letters U+042A, U+044A, U+044C, U+0459-U+045B, U+0462,
411
- U+048C-U+048D in Serif (by Andrey V. Panov)
412
- - hinting instructions added to Lao U+0EB7 in Sans (by Wesley Transue)
413
- - added Roman numerals and Claudian letter U+2160-U+2184 in Serif (by Ben
414
- Laenen)
415
- - added U+FFF9-U+FFFD to Sans, Serif and Mono (by Lars Næsbye Christensen)
416
- - added mathematical symbols to Serif: U+2200, U+2203-U+2204, U+2213-U+2214,
417
- U+2217-U+2218, U+2223-U+2226, U+2250-U+2255, U+2295-U+22AF, U+22C5 (by Ben
418
- Laenen)
419
- - modified bullet symbol U+2219 in Serif (by Ben Laenen)
420
-
421
- Changes from 2.20 to 2.21
422
-
423
- - added U+FE20-U+FE23 (half diacritics) to Sans (by Denis Jacquerye)
424
- - added anchor "half" to position right half of double marks, U+FE21 or U+FE23
425
- to Sans (by Denis Jacquerye)
426
- - shifted U+0360 up to avoid collision with some outlines in Sans (by Denis
427
- Jacquerye)
428
- - added anchor above-mark anchor to U+035D, U+035E, U+0360, U+0361 in Sans (by
429
- Denis Jacquerye)
430
- - added instructions for ff, ffi, ffl ligatures in Serif Bold (by Eugeniy
431
- Meshcheryakov)
432
- - added instructions to some N'Ko glyphs (by Wesley Transue)
433
- - added instructions to some Lao glyphs (by Wesley Transue)
434
- - cleaning up 'liga' Standard Ligature in Latin, in Sans and Sans Mono (by
435
- Denis Jacquerye)
436
- - added U+046A, U+046B (big yus) in Serif (by Andrey V. Panov)
437
- - added box drawing symbols to Sans and Serif (by Lars Næsbye Christensen)
438
- - added Makefile to improve font and packages generating (by Nicolas Mailhot)
439
-
440
- Changes from 2.19 to 2.20
441
-
442
- - removed TeX and TeXData tags from all sfd files (by Eugeniy Meshcheryakov)
443
- - removed all 'frac' lookups (by Eugeniy Meshcheryakov)
444
- - fixed duplicate glyph names (by Eugeniy Meshcheryakov)
445
- - removed standard ligatures with U+00B7 in Mono (by Eugeniy Meshcheryakov)
446
- - use reference to U+002D in U+00AD in Sans Oblique, and adjust instructions
447
- (by Eugeniy Meshcheryakov)
448
- - updated Cyrillic in Sans Extra Light (by Andrey V. Panov)
449
- - added instructions to N'Ko U+07C1-U+07C6, U+07CA, U+07CE-U+07CF, U+07D1,
450
- U+07D3-U+07D4, U+07D8, U+07DB and U+07EB in Sans (by Wesley Transue)
451
- - added instructions to Lao U+0E8A, U+0E95, U+0E97, U+EA5, U+0EB4 and U+0EB5
452
- (by Wesley Transue)
453
- - adjusted instructions for Hebrew glyphs (by Denis Jacquerye)
454
- - added instructions for U+0265 in Sans Bold (by Denis Jacquerye)
455
- - fix U+1D68 in Sans: it had the shape of delta, where it should be a rho (by
456
- Ben Laenen)
457
- - remove U+1D5C glyph in Sans Oblique (it was empty) (by Ben Laenen)
458
- - fix instructions of U+01AD in Sans Bold (by Ben Laenen)
459
- - fix instructions of U+042D in Serif (by Ben Laenen)
460
- - remove buggy instructions of U+2328 in Serif (by Ben Laenen)
461
- - corrected width of U+2C75-U+2C76 in Sans Bold and Serif Bold (by Gee Fung Sit)
462
- - added U+2C75-U+2C77 to Mono (by Gee Fung Sit)
463
-
464
- Changes from 2.18 to 2.19
465
-
466
- - fixed misplaced symbols (U+2325,2326) in Sans Oblique (by John Karp)
467
- - added Mark to Base anchors: 'cedilla' for combining cedilla and
468
- 'above-legacy' for stacking above precomposed glyphs (just a,e,i,o,u with
469
- macron for now) in Sans (by Denis Jacquerye).
470
- - added contextual substitution for Case and Dotless forms in all Sans variants
471
- (by Denis Jacquerye).
472
- - renamed 'ccmp' lookups for RTL and Basic (LGC, etc.) (by Denis Jacquerye)
473
- - added anchor 'cedilla' for vowels in Sans. (by Denis Jacquerye)
474
- - extended contextual dotless and case substitutions to handle both below and
475
- above diacritics (by Denis Jacquerye)
476
- - renamed Dotless and Case Form GSUB lookups in Sans with meaningful names (by
477
- Denis Jacquerye)
478
-
479
- Changes from 2.17 to 2.18
480
-
481
- - Re-encoded the source files for Full Unicode (by Ben Laenen)
482
- - Re-enabled the "ff", "fl", "fi", "ffl", "ffi" ligatures by default in Serif
483
- (by Ben Laenen)
484
- - Disabled the "fi", "ffi" ligatures for languages with dotless i in Serif (by
485
- Ben Laenen)
486
- - added Tifinagh to Sans Book and Bold, U+2D30-U+2D65, U+2D6F, partially hinted
487
- in Sans Book. (by Denis Jacquerye)
488
- - added Tai Xuan Jing Symbols (U+1D300-1D356) to Sans (by Remy Oudompheng)
489
- - added double-struck letters (U+1D538-U+1D56B minus reserved code points) to
490
- Sans (by Gee Fung Sit)
491
- - added U+22EE-U+22F1 to Sans (by Gee Fung Sit)
492
- - added U+2C67-U+2C6C, U+2C75-U+2C77 to Serif (by Gee Fung Sit)
493
- - italicized various glyphs in Latin Extended-B, IPA Extensions, Spacing
494
- Modifier Letters, Phonetic Extension (Supplement) and Super- and Subscripts
495
- in Serif Oblique fonts (by Gee Fung Sit)
496
- - modified outlines, bearings of Hebrew U+05D6, U+05D8, U+05DB, U+05DE, U+05E0,
497
- U+05E1, U+05E2, U+05EA in Sans Book and Oblique, adjusted hinting in Book
498
- based on Yotam Benshalom's comments. (by Denis Jacquerye)
499
- - added Braille Patterns (U+2800-U+28FF) to Serif fonts (by Gee Fung Sit)
500
- - added N'Ko to Sans Book and Bold: U+07C0-U+07E7, U+07EB-U+07F5, U+07F8-U+07FA
501
- (by Eugeniy Meshcheryakov)
502
- - added U+0ED8 (Lao digit 8) to Sans (by Remy Oudompheng)
503
- - added Lao diacritics U+0EB0-0EB9, U+0EBB-0EBC, U+0EC8-0ECD to Mono (by Remy
504
- Oudompheng)
505
- - renamed Serif [Bold] Oblique, make it Italic (by Eugeniy Meshcheryakov)
506
- - added U+29FA-U+29FB to Sans and Sans Mono (by Gee Fung Sit)
507
- - swapped glyphs for Eng U+014A from Sami Eng to African Eng, the latter being
508
- more common (by Denis Jacquerye)
509
- - swapped ae U+00E6 and ae.alt in Serif Italics fonts, thus fixing #8213 (by
510
- Denis Jacquerye)
511
- - minor improvements to Misc. Symbols in Sans (by Gee Fung Sit)
512
- - minor improvements and additions to Sans ExtraLight (by Gee Fung Sit)
513
- - improved instructions for various Cyrillic letters (by Eugeniy Meshcheryakov)
514
- - fixed hinting of theta and chi in Sans Book (by Ben Laenen)
515
- - added Georgian Mkhedruli to Sans, Serif and Mono, ASumtavruli to Sans and
516
- Serif (by Besarion Gugushvili)
517
-
518
- Changes from 2.16 to 2.17
519
-
520
- - Sans fonts: fix position for certain combinations of Arabic fatha, kasra,
521
- shadda, damma, kasratan, dammatan, fathatan and hamza (by Ben Laenen)
522
- - added 'ae.alt' to Serif Oblique fonts, with design matching shape of italic
523
- 'a' instead of slanted 'a', see bug #8213 (by Denis Jacquerye)
524
- - added super- and subscripts to Serif and Mono: U+1D2C-U+1D2E, U+1D30-U+1D3C,
525
- U+1D3E-U+1D42, U+1D62-U+1D65, U+1D78, U+2071, U+207A-U+207E, U+208A-U+208E,
526
- U+2090-U+2094 (by Gee Fung Sit)
527
-
528
- Changes from 2.15 to 2.16
529
-
530
- - fixed hinting instructions for digits in DejaVu Sans Oblique, Bold Oblique,
531
- and Serif Book to not change glyph width (by Eugeniy Meshcheryakov)
532
- - added instructions for U+0404, U+0411, U+0413, U+0414, U+0417-U+041B, U+041F,
533
- U+0423, U+0424, U+0426-U+0429, U+042C, U+042E, U+042F, U+0490 in Serif Bold
534
- (by Eugeniy Meshcheryakov)
535
- - added U+0220 and Eng.alt to Serif fonts (by Denis Jacquerye)
536
- - added U+232C, U+2394, U+23E3 to Sans fonts (by John Karp)
537
- - added U+230C-U+230F, U+231C-U+231F to Sans fonts, fixing bug:9547
538
- (by John Karp)
539
- - adjusted dot below, dot above, dieresis above, dieresis below in Sans fonts
540
- (by Denis Jacquerye)
541
- - added U+2300, U+2301, U+2303, U+2304, U+2305, U+2307, U+2326, U+2327, U+232B,
542
- arrow.base to Sans fonts (by John Karp)
543
- - adjusted dot and dieresis below and above in Serif fonts (by Denis Jacquerye)
544
- - added U+1E1C-U+1E1D to Serif fonts (by Denis Jacquerye)
545
- - added U+22BE, U+22BF (by Wesley Transue)
546
- - added U+2324; modified U+2325: more standard proportions, and matches U+2324
547
- and U+2387; added U+2387 : flipped U+2325 with standard arrowhead
548
- (by John Karp)
549
- - added Lao digits U+0ED0-0ED7, U+0ED9 (by Remy Oudompheng)
550
- - added to Mono in Arabic block : U+060C, U+0615, U+061B, U+061F,
551
- U+0621-U+063A, U+0640-0655, U+065A, U+0660-066F, U+0674, U+0679-0687, U+0691,
552
- U+0692, U+0698, U+06A1, U+06A4, U+06A9, U+06AF, U+06B5, U+06BA, U+06BE,
553
- U+06C6, U+06CC, U+06CE, U+06D5, U+06F0-06F9 (by Remy Oudompheng)
554
- - added to Mono in Arabic Presentations Forms-A : U+FB52-FB81, U+FB8A-FB95,
555
- U+FB9E, U+FB9F, U+FBAA-FBAD, U+FBE8, U+FBE9, U+FBFC-FBFF (by Remy Oudompheng)
556
- - added to Mono in Arabic Presentations Forms-B : U+FE70-FE74, U+FE76-FEFC,
557
- U+FEFF (by Remy Oudompheng)
558
- - added U+05BA, U+05BE, U+05F3, U+05F4, U+FB1E, U+FB21-U+FB28, U+FB4F to Sans
559
- (by Eugeniy Meshcheryakov)
560
- - added U+2102 to Mono (by Eugeniy Meshcheryakov)
561
- - added U+2983-U+2984 to Sans (by Gee Fung Sit)
562
- - added U+2A2F to Sans, Serif and Mono (by Gee Fung Sit)
563
- - added U+2373-2375, U+237A to Sans (by John Karp)
564
- - converted kern pairs to kern classes with Tavmjong Bah's scripts
565
- (by Denis Jacquerye)
566
- - set ScriptLang of kerning classes to just latn because of Pango bug
567
- (by Denis Jacquerye)
568
- - added DNK to ScriptLang latn otherwise it is excluded, and SRB and MDK to
569
- cyrl (by Denis Jacquerye)
570
- - removed flag 0x80 in generate.pe, otherwise it generates kerning tables some
571
- systems don't like; thus loosing Apple tables (by Denis Jacquerye)
572
- - removed ligature for precomposed legacy characters of Sans Oblique fonts
573
- (by Denis Jacquerye)
574
- - added bearings to en dash U+2013, em dash U+2014 and figure dash U+2012
575
- by making dashes shorter, preserving character width (by Denis Jacquerye)
576
- - reduced U+031C, U+0325 (ring below), U+0339 to be entirely visible;
577
- added instructions in Sans Book; changed U+1e00-U+1e01 to use new ring below
578
- (by Denis Jacquerye)
579
- - adjusted circumflex below on U+1E12-U+1E13, U+1E18-U+1E19, U+1E3C-U+1E3D,
580
- U+1E4A-U+1E4B, U+1E70-U+1E71, U+1E76-U+1E77 in Sans fonts (by Denis Jacquerye)
581
- - Added U+0ED4, U+0ED5 to DejaVu Sans (by Remy Oudompheng)
582
- - Lao-specific anchors (by Remy Oudompheng)
583
- - added alternate I to match the small capital in Sans (by Gee Fung Sit)
584
-
585
- Changes from 2.14 to 2.15
586
-
587
- - improved hinting in Sans Oblique to deal with some spacing and inconsistency
588
- issues (by Ben Laenen)
589
- - added anchors to Mono Book, and added GPOS rules for combining diacritics to
590
- show up as zero width glyphs (by Ben Laenen)
591
- - removed U+F21C (PUA), it was copy of U+2C64 from Latin Extended C (by Eugeniy
592
- Meshcheryakov)
593
- - added U+27E6-U+27E7 to Sans (by Gee Fung Sit)
594
- - added U+1407, U+1409, U+140C-U+141B, U+141D-U+1425, U+1427-U+142E,
595
- U+1435-U+1438, U+143A-U+1449, U+1452, U+1454, U+1457-U+1465, U+1467-U+146A,
596
- U+1471, U+1474-U+1482, U+1484-U+1488, U+148F, U+1492, U+14A0, U+14A2, U+14A9,
597
- U+14AC-U+14BA, U+14BC, U+14BD, U+14C6, U+14C9-U+14CF, U+14D1, U+14D2, U+14D9,
598
- U+14DC-U+14E9, U+14EC, U+14F3, U+14F6-U+1504, U+1506, U+1507, U+1510-U+1525,
599
- U+152C, U+152F-U+153D, U+1540, U+1541, U+154E, U+154F, U+1552, U+155B, U+155C,
600
- U+1568, U+1569, U+1574-U+157B, U+157D, U+15A7-U+15AE, U+1646, U+1647 (by
601
- Eugeniy Meshcheryakov)
602
- - fixed several contours to not intersect, use horizontal or vertical tangents,
603
- use integer coordinates, etc in Sans Book (by Denis Jacquerye)
604
- - added U+0496-U+0497 in Serif (by Andrey V. Panov)
605
-
606
- Changes from 2.13 to 2.14
607
-
608
- - added Philippine peso glyph U+20B1 (by Clayborne Arevalo)
609
- - made U+2012 have the same width as digits, according to Unicode 5.0,
610
- page 206 (by Roozbeh Pournader)
611
- - made all of the "above" combining characters remove the dot of "i",
612
- "j", etc (Soft_Dotted characters), according to Unicode 5.0,
613
- page 228 (by Roozbeh Pournader)
614
- - made U+012F, U+03F3, U+0456, U+0458, U+1E2D, and U+1ECB (all fonts
615
- except Mono), U+0249, U+2148, and U+2149 (Sans and Sans Condensed),
616
- U+0268 (Sans ExtraLight, Serif and Serif Condensed), and U+029D (Serif
617
- and Serif Condensed) respect the Soft_Dotted property (by Roozbeh
618
- Pournader)
619
- - added U+223E, U+223F, U+2240, U+22C2, U+22C3 to Sans (by Remy Oudompheng)
620
- - added U+203D to Serif (by Gee Fung Sit)
621
- - added zero-width glyphs for U+2061-U+2063 to Sans and Serif (by Gee
622
- Fung Sit)
623
- - changed isolated forms of Arabic waw (U+0648, U+0624 and U+06C6) (bug #9432)
624
- (by Ben Laenen)
625
- - added Lao consonants U+0E81, U+0E82, U+0E84, U+0E87, U+0E88, U+0E8A,
626
- U+0E8D, U+0E94-0E97, U+0E99-0E9F, U+0EA1-0EA3, U+0EA5, U+0EA7, U+0EAA,
627
- U+0EAB, U+0EAD-0EAF to Sans Mono (by Remy Oudompheng)
628
- - added U+0200-U+0217, U+0226-U+0229, U+02F3, U+1E00-U+1E07,
629
- U+1E0A-U+1E0B, U+1E18-U+1E1F, U+1E22-U+1E23, U+1E28-U+1E2D,
630
- U+1E3A-U+1E3B, U+1E40, U+1E48-U+1E49, U+1E56, U+1E58-U+1E59,
631
- U+1E5E-U+1E5F, U+1E60, U+1E68-U+1E6B, U+1E6E-U+1E6F, U+1E72-U+1E77,
632
- U+1E86-U+1E8B, U+1E92-U+1E96, U+1EA0-U+1EA1, U+1EF4-U+1EF5 to Mono
633
- (by Ben Laenen)
634
- - renamed uppercase variants of diacritics (macron, breve, double grave,
635
- double acute, inverted breve, dot above) to "uni03XX.case" in Mono
636
- (by Ben Laenen)
637
- - moved uppercase variants of diacritics up in Mono so they properly
638
- vertically align on capitals (by Ben Laenen)
639
- - precomposed glyphs with macron, breve, double grave, double acute,
640
- inverted breve, dot above, macron below, breve below, inverted breve
641
- below, dot below, cedilla, caron below, circumflex below, diaeresis
642
- below, tilde below now reference to combining diacritics instead of
643
- space modifiers in Mono (by Ben Laenen)
644
- - made ring below (U+0325), and half rings below (U+031C and U+0339)
645
- smaller in Mono (by Ben Laenen)
646
- - added U+205F to all fonts (by Roozbeh Pournader)
647
- - added U+035E-U+035F to Sans (by Roozbeh Pournader)
648
- - added empty glyphs for U+034F, U+202A-U+202E, U+2060, U+206A-206F,
649
- U+FE00-U+FE0F to non-Mono fonts (by Roozbeh Pournader)
650
- - added U+2101, U+2107-U+2108, U+210B, U+210C, U+2110, U+2112, U+211B,
651
- U+211F, U+2123, U+2125, U+2128-U+2129, U+212C-U+212D, U+212F,
652
- U+2130-U+2131, U+2133, U+2136-U+213A, U+2141-U+2144, U+2B00-U+2B11,
653
- U+2B20-U+2B23 to Sans (by John Karp)
654
- - reshaped omega (U+03C9) in Mono (by Ben Laenen)
655
- - added U+2205, U+22C6, U+2300-U+2301, U+2303-U+2306, U+230C-U+230F,
656
- U+2312-U+2315, U+231C-U+231F, U+2335, U+2337-U+233E, U+2341-U+2344,
657
- U+2347-U+2348, U+234B-U+234D, U+2349-U+2350, U+2352-U+2354,
658
- U+2357-U+2359, U+235A-U+235C, U+235E-U+2360, U+2363-U+2365,
659
- U+2368-U+2369, U+236B-U+2370, U+2373-U+237A, U+2380-U+2383,
660
- U+2388-U+238B, U+2395 in Mono (by Ben Laenen)
661
-
662
- Changes from 2.12 to 2.13
663
-
664
- - adjusted U+0198B, U+01B3-U+01B4 in Sans, hinted U+01B4 in Sans Book
665
- (by Denis Jacquerye)
666
- - added U+27F0-U+27FF, U+2906-U+2907, U+290A-U+290B, U+2940-U+2941 to Sans
667
- (by Denis Jacquerye)
668
- - added U+01E6-U+01E9, U+01EE-U+01EF, U+01F4-U+01F5, U+01FC-U+01FF,
669
- U+021E-U+021F, U+0245, U+02BD, U+02C9, U+1E9B, U+2045-U+2046, U+2213, U+22C5,
670
- U+22EF to Sans Mono (by Roozbeh Pournader)
671
- - added U+04FA-U+04FD to Sans (by Michael Everson)
672
- - removed U+2329 and U+232A because of their CJK properties, added U+27E8
673
- and U+27E9 in their stead, fixing part of bug #9038 (by Roozbeh Pournader)
674
- - corrected and improvised U+0466-U+0469, U+046E-U+0471, U+047C-U+047D, U+0482,
675
- U+0484-U+0486, U+0492-U+0493, U+04B0-U+04B1, U+050C-U+050D, and U+204A
676
- in Sans (by Michael Everson)
677
- - added instructions for U+0402, U+0409, U+040A, U+040B, U+044D, U+040F,
678
- U+0452, U+0459-U+045B, U+045F to Sans Book (by Eugeniy Meshcheryakov)
679
- - made italic shape for U+431, U+432, U+437, U+43B, U+43C, U+43D, U+444, U+447,
680
- U+44D, U+44F, U+459, U+45A in SerifOblique and SerifBoldOblique
681
- (by Andrey V. Panov)
682
- - modified U+024C to match glyph in Unicode chart, fixing bug #9039
683
- (by Denis Jacquerye)
684
- - made some canonically equivalent characters share the same glyph:
685
- U+02B9 = U+0374, U+0343 = U+0313, and U+0387 = U+00B7 also adjusting U+02BA
686
- to look like double U+02B9, fixing parts of bug #9038 (by Roozbeh Pournader)
687
- - changed shapes for U+0478 and U+0479 in Sans to those in the Unicode charts,
688
- based on a recent decision by Unicode Technical Committee to only use
689
- the digraph form (by Michael Everson)
690
- - adjusted width of NBSP U+00A0 and NNBSP U+202F, fixing bug #8401
691
- (by Denis Jacquerye)
692
- - fixed several contours to not intersect, use horizontal or vertical tangents,
693
- use integer coordinates, etc (by Roozbeh Pournader and Denis Jacquerye)
694
- - added U+1402, U+1430, U+144D, U+146C, U+148A, U+14A4, U+14C1, U+14D4, U+14EE,
695
- U+1527, U+1545, U+157E, U+158E, U+15AF to Sans (by Eugeniy Meshcheryakov)
696
- - enlarged width of U+459 and U+45A in Serif (by Andrey V. Panov)
697
- - made traditional shape for U+452, U+45B (by Andrey V. Panov)
698
- - added euro sign U+20AC to Sans ExtraLight, making fontconfig recognize
699
- the font as supporting English (by Denis Jacquerye)
700
-
701
- Changes from 2.11 to 2.12
702
-
703
- - added U+0180 to Serif (by Denis Jacquerye)
704
- - improved and/or hinted Armenian letters U+0542, U+0546, U+0562,
705
- U+0563, U+0564, U+0577, U+0582 in Sans (by Ben Laenen)
706
- - added U+4FE-U+4FF, U+512-U+513, U+2114, U+214E, U+26B2 to Sans
707
- (by Gee Fung Sit)
708
- - adjusted U+0496-U+0497, U+049A-U+04A1 in Sans to match U+0416,
709
- U+041A, U+0436 and U+043A (by Gee Fung Sit)
710
- - Mathematical Operators in Sans: changed U+22C0-U+22C1 to match
711
- other n-ary operators, adjusted U+2203-U+2204, changed U+2220 in
712
- Sans to match the style of U+2221 (by Gee Fung Sit)
713
- - added U+1401, U+1403-U+1406, U+140A, U+140B, U+1426, U+142F,
714
- U+1431-U+1434, U+1438, U+1439, U+1449, U+144A, U+144C,
715
- U+144E-U+1451, U+1455, U+1456, U+1466, U+146B, U+146D-U+1470,
716
- U+1472, U+1473, U+1483, U+1489, U+148B-U+148E, U+1490, U+1491,
717
- U+14A1, U+14A3, U+14A5-U+14A8, U+14AA, U+14AB, U+14BB, U+14C0,
718
- U+14C2-U+14C5, U+14C7, U+14C8, U+14D0, U+14D3, U+14D5-U+14D8,
719
- U+14DA, U+14DB, U+14EA, U+14ED, U+14EF-U+14F2, U+14F4, U+14F5,
720
- U+1405, U+1526, U+1528-U+152B, U+152D, U+152E, U+153E,
721
- U+1542-U+1544, U+1546-U+154D, U+1550, U+1553, U+1555-U+155A,
722
- U+1567, U+156A, U+157C, U+157F-U+1585, U+158A-U+158D,
723
- U+158F-U+1596, U+15A0-U+15A6, U+15DE, U+15E1, U+166E-U+1676 to
724
- Sans (by Eugeniy Meshcheryakov)
725
- - re-enabled Latin ligatures fi, ffi, fl, ffl and ff in Sans
726
- (by Ben Laenen)
727
- - made italic shape for U+436, U+44A, U+44B, U+44C, U+44E, U+45F,
728
- U+463 in SerifOblique and SerifBoldOblique (by Andrey V. Panov)
729
- - fixed sub- and superscript metrics in Condensed Sans (bug #8848)
730
- (by Ben Laenen)
731
- - added U+474, U+475 in Serif (by Andrey V. Panov)
732
- - hinted Greek glyphs U+03B7, U+30B8, U+03B9, U+03C1, U+03C3,
733
- U+03C6 in Mono Book (by Ben Laenen)
734
-
735
- Changes from 2.10 to 2.11
736
-
737
- - added instructions for Hebrew glyphs (Sans Book, by Eugeniy
738
- Meshcheryakov)
739
- - changed U+01A6 (Latin Yr) after bug #8212, in Sans, Serif and
740
- Sans Mono fonts (by Denis Jacquerye).
741
- - removed instruction for U+2600-U+26A1 (by Mederic Boquien)
742
- - added U+202F and set width of U+00A0 (nobreakingspace) to the
743
- same as U+0020, space (by Denis Jacquerye).
744
- - added and improved instructions for various Cyrillic letters
745
- (by Eugeniy Meshcheryakov)
746
- - Changed U+416, U+42F, U+427 (non-Bold), U+436, U+447 (non-Bold),
747
- U+44F, U+437 (Bold), corrected U+40F, U+414, U+424, U+426, U+429,
748
- U+434, U+438 (Bold), U+446, U+449, U+44D (non-Bold), U+45F in
749
- Sans Mono (by Andrey V. Panov)
750
- - made small corrections to Cyrillic, most appreciable to U+409,
751
- U+413, U+41B, U+427 and U+433, U+434, U+43B, U+447, U+459
752
- (upright fonts) to Serif (by Andrey V. Panov)
753
- - adjusted bearings of U+410, U+416, U+41A, U+42F, U+436, U+43A,
754
- U+443, U+44F in Serif (by Andrey V. Panov)
755
- - enlarged width of U+44A, U+44B, U+44C, U+463 in Serif
756
- (by Andrey V. Panov)
757
- - added ligature "iacute" as "afii10103" (U+456) "acutecomb" in
758
- Serif (by Andrey V. Panov)
759
- - made italic shape to U+446, U+448, U+449 in Serif (by Andrey V.
760
- Panov)
761
- - added "afii10831" (U+F6C7), "afii10832" (U+F6C8) in Serif (by
762
- Andrey V. Panov)
763
- - new minimum version of fontforge is 20061014 (by Ben Laenen)
764
-
765
- Changes from 2.9 to 2.10:
766
-
767
- - added U+0242, U+024A-U+024B, U+024E-U+024F, U+037C-U+037D, U+0E3F,
768
- U+1D2C-U+1D2E, U+1D30-U+1D42, U+1D5D-U+1D6A, U+1D78, U+1DB8,
769
- U+2090-U+2094, U+20D0-U+20D1, U+2C60-U+2C66, U+2C6B-U+2C6C, U+2C74 and
770
- U+FB29 to Sans (by Gee Fung Sit)
771
- - added Lao glyphs : U+0E81-0E82, U+E084, U+0E87-0E88, U+0E8A, U+0E8D,
772
- U+0E94-0E97, U+0E99-0E9F, U+0EA1-0EA3, U+0EA5, U+0EA7, U+0EAA-0EAB,
773
- U+0EAD-0EB9, U+0EBB-0EBD, U+0EC0-0EC4, U+0EC6, U+0EC8-0ECD, U+0EDC-0EDD
774
- (by Remy Oudompheng)
775
- - fixed U+0193 not showing in Windows (bug #7897) (by Ben Laenen)
776
- - changes to U+222B-222D in Sans Mono (by Remy Oudompheng)
777
- - ported the three remaining currency symbols from Arev (U+20B0,
778
- U+20B2-U+20B3), and replaced one (U+20AF) in Sans (by Lars Naesbye
779
- Christensen)
780
- - corrected U+20A5 in Sans (by Gee Fung Sit)
781
- - merged Double-Struck Letters from Arev: U+2102, U+210D, U+2115,
782
- U+2119-U+211A, U+2124, U+213C-U+2140 (by Gee Fung Sit)
783
- - added U+2308-U+230B and U+2329-U+232A to Sans Mono and Serif faces,
784
- fixed incorrect direction of U+2329 in Sans faces, and improved
785
- U+2308-U+230B in Sans faces per Ben Laenen's suggestions (by David
786
- Lawrence Ramsey)
787
- - added U+06D5 and final form of it (needed for Kurdish) (by Ben Laenen)
788
- - added two special glyphs U+F000 and U+F001 in Sans Book that show the
789
- current ppem size (horizontal and vertical) (by Ben Laenen)
790
- - added U+2318 and U+2325 to Sans Mono faces, based on the Sans versions
791
- (by David Lawrence Ramsey)
792
- - added U+2B14-U+2B1A to all faces except Sans ExtraLight (by David
793
- Lawrence Ramsey)
794
- - respaced all Geometric Shapes characters in Serif faces to match those
795
- in Sans faces again, respaced U+23CF in Sans, Sans ExtraLight, and
796
- Serif faces to match U+25A0 (or Sans in Sans ExtraLight's case) again,
797
- and respaced U+2B12-U+2B13 in Sans and Serif faces to match U+25A1
798
- again (by David Lawrence Ramsey)
799
- - corrected width of Modifier Small Letters U+1D43-1D5B in Sans Oblique
800
- and U+1D9B-U+1DBF in Sans Oblique and Sans Bold Oblique (by Gee Fung Sit)
801
- - added a bunch of glyphs to Sans ExtraLight (see SVN for details) (by
802
- Gee Fung Sit)
803
- - adjusted Cyrillic descenders in Sans ExtraLight to sync with Sans (by
804
- Gee Fung Sit)
805
- - added U+0242, U+0245 to Serif (by Gee Fung Sit)
806
- - replaced the SHPIX routines which gave them bad spacing at certain
807
- sizes in FreeType for A, V, Z, v and z in Sans Bold (by Ben Laenen)
808
-
809
- Changes from 2.8 to 2.9:
810
-
811
- - DejaVuSansExtraLight.sfd: changed family name from "DejaVu Sans" to
812
- "DejaVu Sans Light" (in case we add a Light weight variant), so legacy
813
- apps that understand only 4 styles are happy. (by Denis Jacquerye)
814
- - added Name ID 16, aka preferred family name, and Name ID 17, aka
815
- preferred style name, so contemporary apps that understand more that 4
816
- styles can use big fonts families "DejaVu Sans" and "DejaVu Serif". For
817
- those, Extralight and Condensed are just styles not different families.
818
- (by Denis Jacquerye)
819
- - added U+22B6-22BD, U+22C0-22C1, U+22D6-22D7 to Sans. (by Remy Oudompheng)
820
- - added U+037B, U+2184, U+2C67-U+2C6A and U+2C75-U+2C77 to Sans (by Gee
821
- Fung Sit)
822
- - adjusted asteriskmath (U+2217) for consistency with other mathematical
823
- operators in Sans (by Ben Laenen)
824
- - hinted some Armenian capitals in Sans Book (by Ben Laenen)
825
- - added U+0246 - U+0249 (by Ben Laenen)
826
- - BUGFIX : swapped U+224E and U+224F, in Sans, Sans Condensed and Sans Mono
827
- (by Remy Oudompheng)
828
- - adjusted U+20B5 (by Mederic Boquien)
829
- - swapped U+21DA and U+21DB which were in wrong order (by Heikki Lindroos)
830
- - added U+222E-2233, U+239B-23AD, U+2A00-2A02, U+2A0F-2A1C to Sans (by Remy
831
- Oudompheng)
832
- - added U+239B-23AD to Mono (by Remy Oudompheng)
833
- - added U+2024-2025 to Serif (by Mederic Boquien)
834
- - added U+222C-222D, U+2A0C-2A0E to Serif (by Remy Oudompheng)
835
- - added U+2190-21FF to Mono (by Heikki Lindroos)
836
- - added Hebrew glyphs - U+05B0-U+05BD, U+05BF-U+05C3, U+05C6, U+05C7,
837
- U+05D0-U+05EA, U+05F0-U+05F2, U+FB1F, U+FB20, U+FB2A-U+FB36,
838
- U+FB38-U+FB3C, U+FB3E, U+FB40, U+FB41, U+FB43, U+FB44, U+FB46-U+FB4E (by
839
- Gee Fung Sit and Eugeniy Meshcheryakov)
840
- - adjustments for Cyrillic in Sans (by Andrey V. Panov)
841
- - made italic shape for U+0434, U+0456, U+0457 in SerifOblique and Serif
842
- Bold Oblique (by Andrey V. Panov)
843
-
844
- Changes from 2.7 to 2.8:
845
-
846
- - fixed instructions for U+0423, U+0427, U+0447, U+0448 in Serif, so they
847
- look good at large sizes too (by Eugeniy Meshcheryakov)
848
- - added U+FB00 and U+FB03 to U+FB06 to Serif typefaces (by Heikki Lindroos)
849
- - added U+26B0-U+26B1, U+2701-U+2704, U+2706-U+2709, U+270C-U+2727, U+2729
850
- to U+274B, U+274D, U+274F to U+2752, U+2756, U+2758-U+275E, U+2761 to
851
- U+2775 (by Heikki Lindroos)
852
- - added and improved instructions for Cyrillic letters in Mono and Serif
853
- (Book, by Eugeniy Meshcheryakov)
854
- - rotated U+26B0 (was too small in mono) (by Gee Fung Sit)
855
- - adjusted U+1EDA-U+1EDD, U+1EE8-U+1EEB, capitals using capital specific
856
- accent and moved diacritics to match position on U+00F2 (ograve), etc.
857
- (by Denis Jacquerye)
858
- - added U+20D6, U+20D7 to Sans (by Gee Fung Sit)
859
- - made Armenian ligatures discretionary since the Firefox ligature problem
860
- still isn't fixed (by Ben Laenen)
861
- - moved Armenian hyphen U+058A to a higher position (bug #7436) (by Ben
862
- Laenen)
863
- - hinted Greek glyphs in Sans Bold (by Ben Laenen)
864
- - enabled Arabic lam-alif ligatures when diacritics are used (by Ben Laenen)
865
-
866
- Changes from 2.6 to 2.7:
867
-
868
- - added glyphs needed for Kurdish: U+0695, U+06B5, U+06C6, U+06CE and their
869
- init/medi/fina forms in Sans (by Ben Laenen)
870
- - added U+02CD, U+01F8 - U+01F9, U+1E3E - U+1E3F, U+1E30 - U+1E35, U+1EBC -
871
- U+1EBD, U+1EF8 - U+1EF9 (includes glyphs needed for Yoruba, Maori, Guarani
872
- and Twi) (by Ben Laenen)
873
- - added U+22C8-22CC, U+29CE-29D5, U+2A7D-2AA0, U+2AAE-2ABA, U+2AF9-2AFA to
874
- Sans (by Remy Oudompheng)
875
- - adjusted diacritics on Vietnamese, Pinyin and other characters:
876
- U+01A0-U+01A1, U+01AF-U+01B0, U+01D5-U+01DC, U+01DE-01E1, U+01FA-U+01FB
877
- U+022A-U+022D, U+0230-U+0231, U+1E14-U+1E17, U+1E4C-U+1E53, U+1E78-U+1E7B,
878
- U+1EA4-U+1EF1 in Sans (Book, Bold and Oblique) (by Denis Jacquerye)
879
- - added basic arrows U+2190-U+2193 in Serif, which completes MES-1 compliance
880
- for Serif (by Ben Laenen)
881
- - added U+01E4, U+01E5, U+01FA, U+01FB, U+02BD, U+02C9 and U+02EE to Serif
882
- (by Ben Laenen)
883
- - fixed U+0209 in Serif Bold Oblique (by Ben Laenen)
884
- - adjusted Box Drawing block characters U+2500-257F in Mono to fit character
885
- cell, shifting them up by 416 (Denis Jacquerye)
886
- - redid U+0194 in Sans (by Ben Laenen)
887
- - added U+2217-2218, U+2295-22A1 to Mono (by Remy Oudompheng)
888
- - added U+0462 to Serif (by Andrey V. Panov)
889
- - added U+226C, U+228C-228E, U+2293-2294, U+22F2-22FF to Sans (by Remy
890
- Oudompheng)
891
- - adjusted U+2208-220D in Sans (by Remy Oudompheng)
892
- - improved some Cyrillic glyphs in Mono (by Andrey V. Panov), rewritten
893
- instructions for changed glyphs (by Eugeniy Meshcheryakov)
894
- - added U+1E0E-1E0F, U+1E8E-1E8F to Mono fonts (by Denis Jacquerye). (bug
895
- #7166)
896
- - renamed 'Dotabove' to 'Dotaccent' in Mono Sans Oblique to match other fonts
897
- (by Denis Jacquerye).
898
- - added U+200B-U+200F in Sans faces and Serif faces, U+200B and U+200C were
899
- in Sans already (by Lars Naesbye Christensen)
900
- - added U+2601-U+262F, U+263D, U+263E, U+2648-U+265F, U+2668, U+2670-U+268B,
901
- U+2690-U+269C, U+26A0, U+26A1, U+2794, U+2798-U+27AF, U+27B1-U+27BE to Mono
902
- (by Heikki Lindroos)
903
- - replaced the references with unshifted ones for both κ U+03BA and к U+043A
904
- in Mono Book (by Denis Jacquerye)
905
- - fixing glyph for U+04ED in Mono Book, consisted only of dieresis (by Andrey
906
- V. Panov).
907
-
908
- Changes from 2.5 to 2.6:
909
-
910
- - redid U+2032 - U+2037, U+2057 based on Arev in Sans (by Gee Fung Sit)
911
- - added U+0195, corrected U+039E, U+204B in Sans ExtraLight (by Gee Fung Sit)
912
- - added instructions for some Cyrillic letters in Sans Bold (by Eugeniy
913
- Meshcheryakov)
914
- - added vulgar fractions U+2153-U+215F for Serif, made with references (by
915
- Lars Naesbye Christensen)
916
- - added U+228F-2292, U+2299-22AF, U+22B2-22B5, U+22CD, U+22D8-22ED to Sans
917
- (by Remy Oudompheng)
918
- - added U+2208-220D, U+2238-223D, U+2278-2281, U+228A-228B, U+228F-2292,
919
- U+22CD, U+22DA-22E9 to Mono (by Remy Oudompheng)
920
- - fixed misplaced dot in U+2250 in Mono (by Remy Oudompheng)
921
- - added instructions for some Cyrillic letters in Mono Book and Bold(by
922
- Eugeniy Meshcheryakov)
923
- - minor changes to U+2241, U+2261-2263, U+22A4, U+22A5 in Sans (by Remy
924
- Oudompheng)
925
- - added hinting instructions to lowercase Armenian glyphs in Sans Book (by
926
- Ben Laenen)
927
- - changed U+2208, U+220B to match U+2209 and U+220C in Sans Bold (by Remy
928
- Oudompheng)
929
- - added Braille patterns U+2800-U+28FF to Sans (by Mederic Boquien)
930
- - added instructions for some Cyrillic letters in Serif Book (by Eugeniy
931
- Meshcheryakov)
932
- - renamed BoldOblique fonts to Bold Oblique in TTF Name as originally in
933
- Bitstream Vera fonts (by Denis Jacquerye)
934
- - added hinting instructions to some Latin-B Extended and IPA characters in
935
- Sans Book (by Denis Jacquerye and Ben Laenen)
936
- - adjusted bearings, replaced diacritics, hinted hook and horn for
937
- Vietnamese in Sans Book (by Denis Jacquerye)
938
- - made FAX, TM, TEL, etc. discritionary ligatures in Sans and Serif fonts
939
- (by Denis Jacquerye)
940
- - removed ligatures of precomposed characters in Sans and Serif fonts (by
941
- Denis Jacquerye)
942
- - added U+F208, U+F20A, U+F215-F217, U+F21A-F21B, U+F25F in PUA (from SIL's
943
- PUA, probably in Unicode 5.0): U+0243, U+0244, U+0245, U+024C, U+024D,
944
- U+2C64, (U+2C6D), (U+2C71)
945
- - modified some glyphs in Serif Oblique to make them more italic (by Denis
946
- Jacquerye)
947
-
948
- Changes from 2.4 to 2.5:
949
-
950
- - fixed excessive kerning bug that occurs with Pango (by Denis Jacquerye)
951
- - added U+20AF to Sans and Serif (by Lars Naesbye Christensen)
952
- - regenerated Condensed faces (by Ben Laenen)
953
- - added U+035C-U+035D to Sans, fixed U+0361 (by Denis Jacquerye)
954
- - integrated 255 characters from Arev fonts: Latin Extended-B, Spacing
955
- Modifiers, Combining Diacritical Marks, Cyrillic, Cyrillic supplement,
956
- General Punctuation, Letterlike Symbols, Arrows, Mathematical Operators,
957
- Miscellaneous Technical, Dingbats, Alphabetic Presentation Forms (by Denis
958
- Jacquerye)
959
- - added basic Cyrillic and basic Greek to Sans ExtraLight (by Denis Jacquerye)
960
- - added U+0498, U+049A, U+04AA, U+04AB, U+04AF to Serif (by Eugeniy
961
- Meshcheryakov)
962
- - added U+0494, U+0495, U+0498, U+0499, U+04AA, U+04AB, U+04C3, U+04C4,
963
- U+04C7, U+04C8 to Mono (by Eugeniy Meshcheryakov)
964
- - adjusted weight of U+0256, U+0257, U+0260, U+0272, U+0273, U+0277, U+029B,
965
- U+02A0 and modifed U+028B and U+027A in Mono (by Denis Jacquerye)
966
- - added U+2000-200A to Mono (by Denis Jacquerye)
967
- - added vulgar fractions U+2153 - U+215F to Mono (by Gee Fung Sit)
968
- - adapted metrics of Arabic glyphs so they stay above cut-off height in Sans
969
- (by Ben Laenen)
970
- - fixed mkmk anchors for Arabic diacritics so they stack properly in Sans (by
971
- Ben Laenen)
972
- - fixed weight of lowercase upsilon in Sans Bold, make small adjustment to
973
- lowercase omega in Sans (by Ben Laenen)
974
- - added U+210E (by Mederic Boquien)
975
- - unslanted U+2201, U+221B and U+221C in Sans Oblique (by Mederic Boquien)
976
- - added several mathematical relation symbols to Sans and Mono (U+2241-224C,
977
- U+2250-2255, U+2260-2269, U+226E-2277, U+2282-2287) modified U+223C to match
978
- other tildes, and U+2282-2284 to have the same shape. (by Remy Oudompheng)
979
- - made U+2234-U+2237 refer to U+2219 instead of U+00B7 in Sans (by Mederic
980
- Boquien)
981
- - added U+2238-223B, U+226A-226B, U+2278-2281, U+2288-228B to Sans (by Remy
982
- Oudompheng)
983
- - unslanted and changed reference of U+22C5 from U+00B7 to U+2219 in Sans (by
984
- Mederic Boquien)
985
- - added U+224D-225F, U+226D, U+22C6 to Sans and unslanted U+2219 in Sans
986
- Oblique. (by Remy Oudompheng)
987
- - added U+224D-225F, U+226D to Mono, shifted U+2266-2269 higher upwards and
988
- unslanted U+2219 in Oblique. (by Remy Oudompheng)
989
- - merged Coptic glyphs from Arev 0.2 (by Lars Naesbye Christensen)
990
- - fixed and adjusted various Cyrillic glyphs in Serif (by Andrey V. Panov)
991
- - made fi, fl... ligatures discretionary ligatures (by Ben Laenen)
992
-
993
- Changes from 2.3 to 2.4:
994
-
995
- - added U+04A2, U+04A3, U+04AC - U+04AF, U+04BA, U+04BB, U+04C0 -
996
- U+04C2, U+04CB, U+04CD, U+04D8 - U+04DF, U+04E2 - U+04E5, U+04E8 - U+04F5,
997
- U+04F6 - U+04F9 to Mono (by Eugeniy Meshcheryakov)
998
- - added U+048C, U+048D, U+0494, U+0495, U+049E - U+04A7, U+04AC -
999
- U+04AE, U+04B4- U+04B7, U+04BA, U+04BB, U+04C0 - U+04C4, U+04C7, U+04C8,
1000
- U+04CB, U+04CC, U+04D8 - U+04DF, U+04E2 - U+04E5, U+04EC - U+04F9 to Serif
1001
- (by Eugeniy Meshcheryakov)
1002
- - added U+2134 to Sans (by Gee Fung Sit)
1003
- - added U+2080 - U+2089 to all faces (by Gee Fung Sit)
1004
- - several minor corrections to Sans (by Gee Fung Sit)
1005
- - major corrections to Sans Condensed (by Gee Fung Sit)
1006
- - corrected Superscripts and Subscripts in Sans (by Gee Fung Sit)
1007
- - corrected anchors of U+0316-U+0319 (by Denis Jacquerye)
1008
- - Verajja integrated (by Stepan Roh)
1009
- - copied U+2328, U+2600, U+2639-U+263C, U+263F-U+2647, U+2660-U+2667,
1010
- and U+2669-U+266F from Sans to Serif, and copied scaled-down versions of
1011
- them to Sans Mono (by David Lawrence Ramsey)
1012
- - added U+20B4 to all faces (by Eugeniy Meshcheryakov)
1013
- - added more minor positional adjustments to U+2638 in all faces to
1014
- match the other miscellaneous symbols in Verajja, and rescale it in Sans
1015
- Mono so that it looks better (by David Lawrence Ramsey)
1016
- - added U+2242, U+2243 and U+22A4 (by Mederic Boquien)
1017
- - corrected U+2245 in Sans (by Mederic Boquien)
1018
- - added U+0221, U+0234-0236 (by Denis Jacquerye)
1019
- - added in Arabic block to Sans: U+060C, U+0615, U+061B, U+061F, U+0621
1020
- - U+063A, U+0640 - U+0655, U+0660 - U+066F, U+0679 - U+0687, U+0698, U+06A1,
1021
- U+06A9, U+06AF, U+06BA, U+06BF, U+06CC, U+06F0 - U+06F9 (by Ben Laenen)
1022
- - added in Arabic Presentation Forms A to Sans: U+FB52 - U+FB81, U+FB8A
1023
- - U+FB95, U+FB9E - U+FB9F, U+FBE8 - U+FBE9, U+FBFC - U+FBFF (by Ben Laenen)
1024
- - added complete Arabic Presentation Forms B to Sans: U+FE70 - U+FE74,
1025
- U+FE76 - U+FEFC, U+FEFF (by Ben Laenen)
1026
- - added complete Greek Extended block to Mono (by Ben Laenen)
1027
- - modified Greek capitals with tonos in Mono (by Ben Laenen)
1028
- - added U+01C4-01CC, U+01D5, U+01DE, U+01E0-U+01E1, U+01E6-U+01E9,
1029
- U+01EE-U+01F5, U+01F8-U+0217, U+021E-U+021F, U+0226-U+022A, U+022C to Serif
1030
- (by Denis Jacquerye)
1031
- - adjusted U+043B and U+044F in Serif (by Denis Jacquerye)
1032
- - added U+2000-U+200A (by Denis Jacquerye)
1033
- - added U+1E00-U+1E0B, U+1E0E-U+1E11, U+1E14-U+1E1C, U+1E1E-U+1E23,
1034
- U+1E26-U+1E2D, U+1E30-U+1E35, U+1E3A-U+1E3B, U+1E3E-U+1E40, U+1E48-U+1E49,
1035
- U+1E50-U+1E56, U+1E58-U+1E59, U+1E5E-U+1E60, U+1E68-U+1E6B, U+1E6E-U+1E6F,
1036
- U+1E72-U+1E7D, U+1E86-U+1E9B, U+1EA0-U+1EA3, U+1EAC-U+1EB7, U+1EBA-U+1EBD,
1037
- U+1EC6-U+1ECF, U+1ED8-U+1ED9, U+1EE6-U+1EE7, U+1EF4-U+1EF9 to Serif (by
1038
- Denis Jacquerye)
1039
- - added U+048E, U+048F, U+049C-U+049F, U+04B8, U+04B9, U+04BC-U+04BF,
1040
- U+04C3, U+04C4 to Sans (by Eugeniy Meshcheryakov)
1041
- - added DejaVu Sans Extra Light (by Denis Jacquerye)
1042
- - Adjusted underline position for (hopefully) improved legibility in
1043
- Sans, Serif, Mono (Tim May)
1044
- - added auto-generated DejaVu LGC (by Stepan Roh)
1045
-
1046
- Changes from 2.2 to 2.3:
1047
-
1048
- - fixed bug U+042B and U+044B behave badly in Sans Bold or Oblique (by
1049
- Keenan Pepper)
1050
- - added and improved TrueType instructions and related settings (by
1051
- Keenan Pepper)
1052
- - added U+04D0-U+04D7, U+04E6, U+04E7 to Mono (by Eugeniy Meshcheryakov)
1053
- - added U+048A - U+048D, U+0498, U+0499, U+04AA, U+04AB, U+04B0, U+04B1,
1054
- U+04C0, U+04C9, U+04CA, U+04CE, U+04CD, U+04DA, U+04DB, U+04DE, U+04DF,
1055
- U+04E2 - U+04E5, U+04EC - U+04F8, U+04F9 to Sans (by Eugeniy Meshcheryakov)
1056
- - added U+04E0, U+04E1 to all faces (by Eugeniy Meshcheryakov)
1057
- - added Greek Extended to Sans and Serif: U+1F00-U+1F15, U+1F18-U+1F1D,
1058
- U+1F20-U+1F45, U+1F48-U+1F4D, U+1F50-U+1F57, U+1F59, U+1F5B, U+1F5D,
1059
- U+1F5F-U+1F7D, U+1F80-U+1FB4, U+1FB6-U+1FC4, U+1FC6-U+1FD3, U+1FD6-U+1FDB,
1060
- U+1FDD-U+1FEF, U+1FF2-U+1FF4, U+1FF6-U+1FFE (by Ben Laenen)
1061
- - added Greek variant letterforms, archaic letters and symbols to Mono:
1062
- U+03D0-U+03E1, U+03F0-U+03FF (by Ben Laenen)
1063
- - added Armenian block and Armenian ligatures to Sans (U+0531 - U+0556,
1064
- U+0559 - U+055F, U+0561 - U+0587, U+0589 - U+058A, U+FB13 - U+FB17) (by Ben
1065
- Laenen)
1066
- - redid some Greek characters in Sans and Mono to make them look better
1067
- and to correct some errors (by Ben Laenen)
1068
- - added U+27E0 to all faces (by David Lawrence Ramsey)
1069
- - added underscore (U+005F) consistency fixes: extended the Sans Mono
1070
- and Sans Mono Oblique underscores to touch both horizontal edges, and
1071
- reduced the height of the Sans Bold Oblique underscore to match the Sans
1072
- Bold underscore (by David Lawrence Ramsey)
1073
- - added underscore (U+005F) derivatives and consistency fixes for them:
1074
- made U+0332 a reference to underscore at Denis Jacquerye's suggestion; made
1075
- U+0333 two references to underscore; made U+033F two references to U+203E;
1076
- added U+2017 as two references to underscore, and made U+0333 a reference to
1077
- it; and added U+203E as a reference to underscore, and made U+0305 a
1078
- reference to it (by David Lawrence Ramsey)
1079
- - added U+201B, U+2220, U+2320-U+2321, U+23AE, U+23CF, all remaining
1080
- Geometric Shapes glyphs (U+25A0-U+25C9, U+25CB-U+25D7, U+25D9-U+25E5,
1081
- U+25E7-U+25FF), and U+2B12-U+2B13 to all faces (by David Lawrence Ramsey)
1082
- - added minor positional adjustments to U+2638 in all faces (by David
1083
- Lawrence Ramsey)
1084
- - added U+201F to Sans Mono and Serif faces (by David Lawrence Ramsey)
1085
- - added U+01B7, U+01F6, U+0464 - U+0465, U+2160 - U+2180, U+2183,
1086
- U+220A, U+220D, U+2329, U+232A, U+2422, U+27E8 - U+27EB, U+2680 - U+2685 to
1087
- Sans (by Gee Fung Sit ???)
1088
- - added U+2116 to Sans and Serif (by Gee Fung Sit)
1089
- - changed florin sign U+0192 in Sans (by Gee Fung Sit)
1090
- - added anchor points to some glyphs (by Denis Jacquerye)
1091
- - adjusted height of IPA superscripts U+02B0-02B8, U+02C0-02C1,
1092
- U+02E0-02E4, U+207F to match with height of U+00B2 (by Denis Jacquerye)
1093
- - added U+0184-U+0185, U+019C, U+019F, U+01A0-U+01A3, U+01A6, U+01AA,
1094
- U+01AF-U+01B0, U+01B2-U+01B4, U+01B7-U+01B8, U+01BC-U+01BC, U+0224-U+0225,
1095
- U+023A-U+0240, U+1D16-U+1D17, U+1D1D-U+1D1E, U+1D43-U+1D5B, U+1D7B,
1096
- U+1D85,U+1D9B-1DB7, U+1DB9-U+1DBF, U+20A6 to all fonts (by Denis Jacquerye)
1097
- - added added U+0182, U+018B, U+018E, U+01A0-U+01A1, U+01B1, U+01B9,
1098
- U+01C0-U+01C3, U+0238-U+0239, U+1D02, U+1D08-U+1D09, U+1D14, U+1D1F, U+1D77
1099
- to Serif and Mono (by Denis Jacquerye)
1100
- - added U+0181, U+0183, U+0187-U+0188, U+018A-U+018F, U+0191, U+0193,
1101
- U+0195-U+019B, U+019D-U+019E, U+01A4-U+01A5, U+01AC-U+01AE, U+01B5-U+01B6,
1102
- U+01B9, U+01BB, U+01F6 to Serif (by Denis Jacquerye)
1103
- - added U+0181, U+0187-U+0188, U+018A, U+018D, U+018F, U+0191, U+0193,
1104
- U+0195-U+019F, U+01A4-01A5, U+01AC-01AD, U+01B5-U+01B6, U+1BB, U+01F6,
1105
- U+01D7-U+01DC, U+0238-U+0239, U+0241 to Mono (by Denis Jacquerye)
1106
- - added to Mono and Serif (by Denis Jacquerye)
1107
-
1108
- Changes from 2.1 to 2.2:
1109
-
1110
- - reworked the vertical orientation of the Blocks Elements characters
1111
- in all faces to remove their overly large descenders, in order to fix
1112
- problems with e.g. terminal emulators (by David Lawrence Ramsey)
1113
- - copied bullet in Sans faces to Serif faces for consistency (by David
1114
- Lawrence Ramsey)
1115
- - added U+2023, U+25D8, U+25E6, and U+29EB to all faces (by David
1116
- Lawrence Ramsey)
1117
- - added U+1EB8, U+1EB9, U+1ECA - U+1ECD, U+1EE4, U+1EE5 (by Tim May)
1118
- - added U+01DD, U+02BE, U+02BF, U+02D3 to all, changed U+02D2 in
1119
- non-Condensed and U+1EE5 in Serif (by Tim May)
1120
- - fixed U+01CE, replacing wrong circumflex by caron (by Denis Jacquerye)
1121
- - added anchor points to some glyphs (by Denis Jacquerye)
1122
- - added U+20B5 (by Denis Jacquerye)
1123
- - added U+0181 - U+0183, U+0187, U+0188, U+018A - U+018D, U+0191,
1124
- U+0193, U+0195 - U+019B, U+019D, U+019E, U+01A4, U+01A7 - U+01A9, U+01AB -
1125
- U+01AE, U+01B1, U+01B5, U+01B6, U+01BB, U+01C0 - U+01C3, U+01F1 - U+01F3,
1126
- U+0238, U+0239, U+1D02, U+1D08, U+1D09, U+1D14, U+1D1F, U+1D77, U+2103,
1127
- U+2126, U+2127, U+212A, U+212B, U+2132, U+214B, U+2210, U+2217, U+2218,
1128
- U+2A0C - U+2A0E, U+FB00, U+FB03 and U+FB04 to Sans (by Gee Fung Sit)
1129
- - added U+01A9, U+01C3 and U+2126 to Mono and Serif (by Gee Fung Sit)
1130
- - adjusted bearings of U+028B in Sans (by Gee Fung Sit)
1131
- - added U+018F, U+0494-U+0497, U+04A0-U+04A7, U+04AC-U+04AF,
1132
- U+04B4-U+04B7, U+04BA-U+04BB, U+04C1-U+04C2, U+04C5-U+04C8, U+04CB-U+04CC,
1133
- U+04D0-U+04D9, U+04DC-U+04DD, U+04E6-U+04EB to Sans (by Eugeniy
1134
- Meshcheryakov)
1135
- - replaced with references U+0391-U+0393, U+0395-U+0397, U+0399, U+039A,
1136
- U+039C, U+039D, U+039F-U+03A1, U+03A4, U+03A5, U+03A7, U+03BF, U+03DC,
1137
- U+0405, U+0406, U+0408, U+0410, U+0412, U+0415, U+0417, U+041A,
1138
- U+041C-U+041E, U+0420-U+0422, U+0425, U+0430, U+0435, U+043E, U+0440,
1139
- U+0441, U+0443, U+0445, U+0455-U+0458 in Serif and Mono (by Eugeniy
1140
- Meshcheryakov)
1141
- - added U+04D0-U+04D7, U+04E6-U+04EB to Serif (by Eugeniy Meshcheryakov)
1142
- - added U+212A and U+212B to the rest of the faces (by Lars Naesbye
1143
- Christensen)
1144
- - added U+2318 and U+2325 to Sans and Serif (by Lars Naesbye Christensen)
1145
- - added and improved TrueType instructions and related settings (by
1146
- Keenan Pepper)
1147
- - completed basic Greek alphabet: added U+0374-U+0375, U+037A, U+037E,
1148
- U+0384-U+038A, U+038C, U+038E-U+0390, U+03AC-U+03BF, U+03C1-U+03CE (by Ben
1149
- Laenen)
1150
- - added U+2070 and U+2074-U+2079 (by Mederic Boquien)
1151
-
1152
- Changes from 2.0 to 2.1:
1153
-
1154
- *** Be aware that names of some TTF files changed since version 2.0. ***
1155
-
1156
- - added U+0323, U+1E0C, U+1E0D, U+1E24, U+1E25, U+1E36 - U+1E39, U+1E42,
1157
- U+1E43, U+1E46, U+1E47, U+1E5A - U+1E5D, U+1E62, U+1E63, U+1E6C, U+1E6D,
1158
- U+1E7E, U+1E7F (by Tim May)
1159
- - fixed bug where GNOME applications used Mono Bold Oblique instead of
1160
- Mono Oblique (by Keenan Pepper)
1161
- - added and improved TrueType instructions and related settings (by
1162
- Keenan Pepper)
1163
- - added U+1E41, U+1E57, U+1E61 (by Sander Vesik)
1164
- - added U+0189, U+0309, U+0313, U+0314, U+031A, U+031B, U+0327, U+0328,
1165
- U+032B, U+0333, U+033C (by Denis Jacquerye)
1166
- - adjusted and fixed U+0186, U+0254, U+0291, U+0316 - U+0319, U+031C -
1167
- U+0320, U+0323 - U+0326, U+0329 - U+032A, U+032C - U+0332, U+0339 - U+033B,
1168
- U+033E, U+033F (by Denis Jacquerye)
1169
- - fixed U+1E12, U+1E3C, U+1E4A, U+1E70 to have normal below diacritics
1170
- (by Denis Jacquerye)
1171
- - fixed U+1E82, U+1E84 and U+1EF2 to have uppercase above diacritics (by
1172
- Denis Jacquerye)
1173
- - added anchor points to some glyphs (by Denis Jacquerye)
1174
- - dropped "-Roman" from font names - affects both internal TTF names and
1175
- names of generated files (by Stepan Roh)
1176
- - attempt to fix bug Vertical spacing too big for Mono by exchanging
1177
- LineGap and OS2TypoLinegap values (proofed by Stefan Rank)
1178
- - added Greek capitals U+0391 - U+03A1, U+03A3 - U+03A9, U+03AA, U+03AB
1179
- in Mono (by Ben Laenen)
1180
- - added the per ten thousand sign U+2031 (by Mederic Boquien)
1181
- - added U+2207, U+221D, U+221F, U+2227 - U+222A, and U+2261 (by David
1182
- Lawrence Ramsey)
1183
- - new logo (by Gee Fung Sit)
1184
- - added U+0180, U+018E, U+201F, U+2024, U+2025, U+203D, U+2200, U+2203,
1185
- U+2213, U+222C, U+222D, U+2263 to Sans (by Gee Fung Sit)
1186
-
1187
- Changes from 1.15 to 2.0:
1188
-
1189
- - "Italized" basic glyphs in all Serif Oblique and their Condensed faces
1190
- (by David Jez)
1191
- - added and improved TrueType instructions and related settings (by Keenan
1192
- Pepper)
1193
- - added anchor points to some glyphs (by Denis Jacquerye)
1194
- - many new spacing and combining accents (by Denis Jacquerye)
1195
- - smart substitutions for transforming i and j to dottless form and for
1196
- using uppercase diacritics (by Denis Jacquerye)
1197
- - fixed remaining erroneously slanted characters in Serif Oblique faces (by
1198
- David Lawrence Ramsey)
1199
- - copied bullet in Sans faces to Sans Oblique faces for consistency (by
1200
- David Lawrence Ramsey)
1201
- - added U+203C and U+2047-U+2049 (by David Lawrence Ramsey)
1202
- - added Greek glyphs to Serif (by Ben Laenen, Condensed merge by David Jez)
1203
- - fixed bug LTR glyphs behaving like RTL (by Ben Laenen)
1204
- - fixed wrong glyph directions (by David Jez)
1205
- - fixed repositioned accents in Condensed faces (by David Jez)
1206
-
1207
- Changes from 1.14 to 1.15:
1208
-
1209
- - added and improved TrueType instructions and related settings (by Keenan
1210
- Pepper)
1211
- - fixed U+2302, U+2319 (by David Lawrence Ramsey)
1212
- - fixed yet another monospace bug (by Stepan Roh)
1213
- - fixed potential "too big ascender/descender" bug (by Stepan Roh)
1214
- - fixed U+026E and U+028E (by Denis Jacquerye)
1215
- - added U+0186, U+0190, U+0300 - U+0304, U+0306 - U+0308, U+030A - U+030C,
1216
- U+0321, U+0322 (by Denis Jacquerye)
1217
- - added rest of Block Elements: U+2591 - U+2593 (by David Lawrence Ramsey)
1218
- - added U+2311, U+237D and U+2638 (by David Lawrence Ramsey)
1219
- - added U+01CD - U+01D4 (by Denis Jacquerye)
1220
- - fixed accents of U+00F2 - U+00F6 by replacing them with references in Mono
1221
- Bold (by David Jez)
1222
- - added U+0490, U+0491 (by Eugeniy Meshcheryakov)
1223
- - added hints to U+0404 and U+0454 in Sans (by Eugeniy Meshcheryakov)
1224
- - completed Greek glyphs from U+0370 to U+03CF in Serif (by Ben Laenen)
1225
- - fixed shape of U+0255 in Sans Bold and Sans Bold Oblique (by Denis
1226
- Jacquerye)
1227
-
1228
- Changes from 1.13 to 1.14:
1229
-
1230
- - fixed bug where Mono faces were not recognized as fixed pitch in Windows
1231
- by correcting Venda glyphs (by David Jez)
1232
- - added and improved TrueType instructions (by Keenan Pepper)
1233
- - added 6 Uzbekian glyphs (by Mashrab Kuvatov)
1234
- - added Greek glyphs to Sans and Serif, changed pi and omega to fit in (by
1235
- Ben Laenen)
1236
- - added IPA and related superscript glyphs (by Denis Jacquerye)
1237
- - fixed buggy Venda glyphs (by David Lawrence Ramsey and Stepan Roh)
1238
- - added U+2302, U+2310, U+2319 (by David Lawrence Ramsey)
1239
- - fixed slanted U+00AC in Serif Oblique faces (by David Lawrence Ramsey)
1240
- - added 29 glyphs from Block Elements (by David Lawrence Ramsey)
1241
-
1242
- Changes from 1.12 to 1.13:
1243
-
1244
- - removed all stems (PS hints) (requested by David Jez)
1245
- - added U+01D6, U+01DF, U+022B, U+022D and U+0231 (by Sander Vesik)
1246
- - added 10 Venda glyphs (by Dwayne Bailey)
1247
- - fixed bug when fonts had no name on Microsoft Windows (by Stepan Roh)
1248
- - updated 'missing' glyph U+FFFD (by David Jez)
1249
- - set TTF flag fsType to 'Installable Embedding' (= unrestricted usage)
1250
- (idea by C. Tiffany)
1251
-
1252
- Changes from 1.11 to 1.12:
1253
-
1254
- - added long s (by James Cloos)
1255
- - prettier comma accent in gcommaaccent (by David Jez)
1256
- - added Hbar, hbar, kgreenlandic, napostrophe, Eng, eng, Tbar, tbar,
1257
- afii57929 (by David Jez)
1258
- - changed Iogonek, iogonek, IJ, ij to look better (by David Jez)
1259
- - glyph uni0237 renamed to dotlessj (requested by David Jez)
1260
- - fixed accents for dcaron, lcaron, tcaron, Uogonek, uogonek in Serif (by
1261
- David Jez)
1262
- - added U+2500 - U+257F box drawing glyphs to Sans Mono (by David Jez)
1263
- - fixed accents in Wcircumflex, Ycircumflex and Zdotaccent (by David Jez)
1264
- - extra kerning for F (by Sander Vesik)
1265
- - added 'missing' glyph U+FFFD (by David Jez)
1266
-
1267
- Changes from 1.10 to 1.11:
1268
-
1269
- - kerning updates (by Sander Vesik)
1270
- - added Iogonek, iogonek, IJ, ij, Uogonek, uogonek (from SuSE standard fonts
1271
- by Adrian Schroeter, SuSE AG)
1272
- - added Gcommaaccent, gcommaaccent, Kcommaaccent, kcommaaccent,
1273
- Lcommaaccent, lcommaaccent, Ncommaaccent, ncommaaccent, Rcommaaccent,
1274
- rcommaaccent (by Stepan Roh)
1275
-
1276
- Changes from 1.9 to 1.10:
1277
-
1278
- - added U+022E, U+022F (by Sander Vesik)
1279
- - kerning updates for DejaVu Sans (by Sander Vesik)
1280
- - fixed too wide cyrillic glyphs in DejaVu Sans Mono (by Valentin Stoykov)
1281
- - fixed ligatures bug in Mono (by Stepan Roh)
1282
-
1283
- Changes from 1.8 to 1.9:
1284
-
1285
- - integrated Arev Cyrillics (by Danilo Segan)
1286
- - added U+01EA, U+01EB, U+01EC, U+01ED (by Sander Vesik)
1287
-
1288
- Changes from 1.7 to 1.8:
1289
-
1290
- - fixed accents in Serif Oblique and Serif Bold Oblique (by Stepan Roh)
1291
-
1292
- Changes from 1.6 to 1.7:
1293
-
1294
- - added automatically generated Condensed typefaces (by Stepan Roh)
1295
-
1296
- Changes from 1.5 to 1.6:
1297
-
1298
- - monospace bug fixed (by Stepan Roh)
1299
- - incorrect Bitstream foundry assigned by fontconfig and KDE Font Installer
1300
- fixed (by Stepan Roh)
1301
- - added automatically generated Oblique version of Serif typefaces (by
1302
- Stepan Roh)
1303
- - corrected cyrillic D and d (by Danilo Segan and David Jez)
1304
- - fixed accents position in Oblique version of Serif typefaces (by Danilo
1305
- Segan and Sander Vesik)
1306
- - fixed incorrect computation of OS2Win* fields (by Stepan Roh)
1307
- - added visiblespace U+2423 (by David Jez)
1308
- - fixed 'line height' bug by fixing ascender and descender values (by David
1309
- Jez and Stepan Roh)
1310
- - fixed part of 'worse than Vera' bug (by Peter Cernak)
1311
- - smaller comma accent U+0326 (by David Jez)
1312
-
1313
- Changes from 1.4 to 1.5:
1314
-
1315
- - added Cyrillics (96 characters) and Dcroat to the rest of typefaces (by
1316
- Danilo Segan)
1317
- - fixed bugs in some Cyrillic characters, some of them reported by Sander
1318
- Vesik (by Danilo Segan)
1319
- - added U+0100, U+0101, U+0112, U+0113, U+012A, U+012B, U+014C, U+014D,
1320
- U+016A, U+016B, U+01E2, U+01E3, U+0232 and U+0233 (by Sander Vesik)
1321
- - added Romanian characters (by Misu Moldovan)
1322
- - added U+0108, U+0109, U+010A, U+010B, U+0114, U+0115, U+0116, U+0117,
1323
- U+011C, U+011D, U+0120, U+0121, U+0124, U+0125, U+0128, U+0129, U+012C,
1324
- U+012D, U+0134, U+0135, U+014E, U+014F, U+0150, U+0151, U+015C, U+015D,
1325
- U+0168, U+0169, U+016C, U+016D, U+0170, U+0171 and U+0237 (by James
1326
- Crippen)
1327
- - added U+02BB, U+2010, U+2011, U+2012 and U+2015 (by Stepan Roh)
1328
-
1329
- Changes from 1.3 to 1.4:
1330
-
1331
- - added Polish characters (Aogonek, aogonek, Eogonek, eogonek, Nacute,
1332
- nacute, Sacute, sacute, Zacute, zacute, Zdotaccent, zdotaccent) (by Stepan
1333
- Roh)
1334
-
1335
- Changes from 1.2 to 1.3:
1336
-
1337
- - added Cyrillics (96 characters) and Dcroat to Sans typefaces (by Danilo
1338
- Segan from his BePa fonts)
1339
-
1340
- Changes from 1.1 to 1.2:
1341
-
1342
- - added Ldot, ldot, Wcircumflex, wcircumflex, Ycircumflex, ycircumflex,
1343
- Wgrave, wgrave, Wacute, wacute, Wdieresis, wdieresis, Ygrave and ygrave
1344
- (from The Olwen Font Family 0.2 by Dafydd Harries)
1345
-
1346
- Changes from 1.0 to 1.1:
1347
-
1348
- - added Lacute, lacute, Lcaron, lcaron, Racute and racute (by Peter Cernak)
1349
-
1350
- Changes from 0.9.4 to 1.0:
1351
-
1352
- - none, just changed version and updated README
1353
-
1354
- Changes from 0.9.3 to 0.9.4:
1355
-
1356
- - fixed TTF generation (kerning tables were missing)
1357
-
1358
- Changes from 0.9.2 to 0.9.3:
1359
-
1360
- - kerning of added characters
1361
- - proper caron shape for dcaron in Mono (by Ondrej Koala Vacha)
1362
- - minor visual changes
1363
-
1364
- Changes from 0.9.1 to 0.9.2:
1365
-
1366
- - internal bugged version
1367
-
1368
- Changes from 0.9 to 0.9.1:
1369
-
1370
- - proper caron shape for dcaron and tcaron
1371
- - minor visual changes
1372
-
1373
- $Id: NEWS 2535 2013-08-25 15:21:17Z moyogo $
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/README DELETED
@@ -1,59 +0,0 @@
1
- DejaVu fonts 2.34 (c)2004-2013 DejaVu fonts team
2
- ------------------------------------------------
3
-
4
- The DejaVu fonts are a font family based on the Bitstream Vera Fonts
5
- (http://gnome.org/fonts/). Its purpose is to provide a wider range of
6
- characters (see status.txt for more information) while maintaining the
7
- original look and feel.
8
-
9
- DejaVu fonts are based on Bitstream Vera fonts version 1.10.
10
-
11
- Available fonts (Sans = sans serif, Mono = monospaced):
12
-
13
- DejaVu Sans Mono
14
- DejaVu Sans Mono Bold
15
- DejaVu Sans Mono Bold Oblique
16
- DejaVu Sans Mono Oblique
17
- DejaVu Sans
18
- DejaVu Sans Bold
19
- DejaVu Sans Bold Oblique
20
- DejaVu Sans Oblique
21
- DejaVu Sans ExtraLight (experimental)
22
- DejaVu Serif
23
- DejaVu Serif Bold
24
- DejaVu Serif Bold Italic (experimental)
25
- DejaVu Serif Italic (experimental)
26
- DejaVu Sans Condensed (experimental)
27
- DejaVu Sans Condensed Bold (experimental)
28
- DejaVu Sans Condensed Bold Oblique (experimental)
29
- DejaVu Sans Condensed Oblique (experimental)
30
- DejaVu Serif Condensed (experimental)
31
- DejaVu Serif Condensed Bold (experimental)
32
- DejaVu Serif Condensed Bold Italic (experimental)
33
- DejaVu Serif Condensed Italic (experimental)
34
-
35
- All fonts are also available as derivative called DejaVu LGC with support
36
- only for Latin, Greek and Cyrillic scripts.
37
-
38
- For license information see LICENSE. What's new is described in NEWS. Known
39
- bugs are in BUGS. All authors are mentioned in AUTHORS.
40
-
41
- Fonts are published in source form as SFD files (Spline Font Database from
42
- FontForge - http://fontforge.sf.net/) and in compiled form as TTF files
43
- (TrueType fonts).
44
-
45
- For more information go to http://dejavu.sourceforge.net/.
46
-
47
- Characters from Arev fonts, Copyright (c) 2006 by Tavmjong Bah:
48
- ---------------------------
49
- U+01BA, U+01BF, U+01F7, U+021C-U+021D, U+0220, U+0222-U+0223,
50
- U+02B9, U+02BA, U+02BD, U+02C2-U+02C5, U+02d4-U+02D5,
51
- U+02D7, U+02EC-U+02EE, U+0346-U+034E, U+0360, U+0362,
52
- U+03E2-03EF, U+0460-0463, U+0466-U+0486, U+0488-U+0489, U+04A8-U+04A9,
53
- U+0500-U+050F, U+2055-205E, U+20B0, U+20B2-U+20B3, U+2102, U+210D, U+210F,
54
- U+2111, U+2113, U+2115, U+2118-U+211A, U+211C-U+211D, U+2124, U+2135,
55
- U+213C-U+2140, U+2295-U+2298, U+2308-U+230B, U+26A2-U+26B1, U+2701-U+2704,
56
- U+2706-U+2709, U+270C-U+274B, U+2758-U+275A, U+2761-U+2775, U+2780-U+2794,
57
- U+2798-U+27AF, U+27B1-U+27BE, U+FB05-U+FB06
58
-
59
- $Id: README 2535 2013-08-25 15:21:17Z moyogo $
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/langcover.txt DELETED
@@ -1,249 +0,0 @@
1
- This is the language coverage file for DejaVu fonts
2
- ($Id: langcover.txt 2538 2013-08-25 16:02:56Z moyogo $)
3
-
4
- Sans Serif Sans Mono
5
- aa Afar 100% (62/62) 100% (62/62) 100% (62/62)
6
- ab Abkhazia 100% (90/90) 93% (84/90) 84% (76/90)
7
- af Afrikaans 100% (69/69) 100% (69/69) 100% (69/69)
8
- ak Akan 100% (73/73) 100% (73/73) 100% (73/73)
9
- am Amharic (0/264) (0/264) (0/264)
10
- an Aragonese 100% (66/66) 100% (66/66) 100% (66/66)
11
- ar Arabic 100% (36/36) (0/36) 100% (36/36)
12
- as Assamese (0/64) (0/64) (0/64)
13
- ast Asturian/Bable/Leonese/Asturleonese 100% (70/70) 100% (70/70) 100% (70/70)
14
- av Avaric 100% (67/67) 100% (67/67) 100% (67/67)
15
- ay Aymara 100% (60/60) 100% (60/60) 100% (60/60)
16
- az-az Azerbaijani in Azerbaijan 100% (66/66) 100% (66/66) 100% (66/66)
17
- az-ir Azerbaijani in Iran 100% (40/40) (0/40) 100% (40/40)
18
- ba Bashkir 100% (82/82) 100% (82/82) 97% (80/82)
19
- be Byelorussian 100% (68/68) 100% (68/68) 100% (68/68)
20
- ber-dz Berber in Algeria 100% (70/70) 100% (70/70) 100% (70/70)
21
- ber-ma Berber in Morocco 100% (32/32) (0/32) (0/32)
22
- bg Bulgarian 100% (60/60) 100% (60/60) 100% (60/60)
23
- bh Bihari (Devanagari script) (0/68) (0/68) (0/68)
24
- bho Bhojpuri (Devanagari script) (0/68) (0/68) (0/68)
25
- bi Bislama 100% (58/58) 100% (58/58) 100% (58/58)
26
- bin Edo or Bini 100% (78/78) 100% (78/78) 100% (78/78)
27
- bm Bambara 100% (60/60) 100% (60/60) 100% (60/60)
28
- bn Bengali (0/63) (0/63) (0/63)
29
- bo Tibetan (0/95) (0/95) (0/95)
30
- br Breton 100% (64/64) 100% (64/64) 100% (64/64)
31
- brx Bodo (Devanagari script) (0/82) (0/82) (0/82)
32
- bs Bosnian 100% (62/62) 100% (62/62) 100% (62/62)
33
- bua Buriat (Buryat) 100% (70/70) 100% (70/70) 100% (70/70)
34
- byn Blin/Bilin (0/255) (0/255) (0/255)
35
- ca Catalan 100% (74/74) 100% (74/74) 100% (74/74)
36
- ce Chechen 100% (67/67) 100% (67/67) 100% (67/67)
37
- ch Chamorro 100% (58/58) 100% (58/58) 100% (58/58)
38
- chm Mari (Lower Cheremis / Upper Cheremis) 100% (76/76) 100% (76/76) 100% (76/76)
39
- chr Cherokee (0/85) (0/85) (0/85)
40
- co Corsican 100% (84/84) 100% (84/84) 100% (84/84)
41
- crh Crimean Tatar/Crimean Turkish 100% (68/68) 100% (68/68) 100% (68/68)
42
- cs Czech 100% (82/82) 100% (82/82) 100% (82/82)
43
- csb Kashubian 100% (74/74) 100% (74/74) 100% (74/74)
44
- cu Old Church Slavonic 100% (103/103) 90% (93/103) 78% (81/103)
45
- cv Chuvash 100% (74/74) 100% (74/74) 100% (74/74)
46
- cy Welsh 100% (78/78) 100% (78/78) 100% (78/78)
47
- da Danish 100% (70/70) 100% (70/70) 100% (70/70)
48
- de German 100% (59/59) 100% (59/59) 100% (59/59)
49
- doi Dogri (0/85) (0/85) (0/85)
50
- dv Divehi/Dhivehi/Maldivian (0/49) (0/49) (0/49)
51
- dz Dzongkha (0/95) (0/95) (0/95)
52
- ee Ewe 100% (99/99) 100% (99/99) 100% (99/99)
53
- el Greek 100% (69/69) 100% (69/69) 100% (69/69)
54
- en English 100% (72/72) 100% (72/72) 100% (72/72)
55
- eo Esperanto 100% (64/64) 100% (64/64) 100% (64/64)
56
- es Spanish 100% (66/66) 100% (66/66) 100% (66/66)
57
- et Estonian 100% (64/64) 100% (64/64) 100% (64/64)
58
- eu Basque 100% (56/56) 100% (56/56) 100% (56/56)
59
- fa Persian 100% (40/40) (0/40) 100% (40/40)
60
- fat Fanti 100% (73/73) 100% (73/73) 100% (73/73)
61
- ff Fulah (Fula) 100% (62/62) 100% (62/62) 100% (62/62)
62
- fi Finnish 100% (62/62) 100% (62/62) 100% (62/62)
63
- fil Filipino 100% (84/84) 100% (84/84) 100% (84/84)
64
- fj Fijian 100% (52/52) 100% (52/52) 100% (52/52)
65
- fo Faroese 100% (68/68) 100% (68/68) 100% (68/68)
66
- fr French 100% (84/84) 100% (84/84) 100% (84/84)
67
- fur Friulian 100% (66/66) 100% (66/66) 100% (66/66)
68
- fy Frisian 100% (75/75) 100% (75/75) 100% (75/75)
69
- ga Irish 100% (80/80) 100% (80/80) 100% (80/80)
70
- gd Scots Gaelic 100% (70/70) 100% (70/70) 100% (70/70)
71
- gez Ethiopic (Geez) (0/218) (0/218) (0/218)
72
- gl Galician 100% (66/66) 100% (66/66) 100% (66/66)
73
- gn Guarani 100% (70/70) 100% (70/70) 100% (70/70)
74
- gu Gujarati (0/68) (0/68) (0/68)
75
- gv Manx Gaelic 100% (54/54) 100% (54/54) 100% (54/54)
76
- ha Hausa 100% (60/60) 100% (60/60) 100% (60/60)
77
- haw Hawaiian 100% (63/63) 100% (63/63) 100% (63/63)
78
- he Hebrew 100% (27/27) (0/27) (0/27)
79
- hi Hindi (Devanagari script) (0/68) (0/68) (0/68)
80
- hne Chhattisgarhi (0/68) (0/68) (0/68)
81
- ho Hiri Motu 100% (52/52) 100% (52/52) 100% (52/52)
82
- hr Croatian 100% (62/62) 100% (62/62) 100% (62/62)
83
- hsb Upper Sorbian 100% (72/72) 100% (72/72) 100% (72/72)
84
- ht Haitian/Haitian Creole 100% (56/56) 100% (56/56) 100% (56/56)
85
- hu Hungarian 100% (70/70) 100% (70/70) 100% (70/70)
86
- hy Armenian 100% (77/77) 100% (77/77) 100% (77/77)
87
- hz Herero 100% (57/57) 100% (57/57) 100% (57/57)
88
- ia Interlingua 100% (52/52) 100% (52/52) 100% (52/52)
89
- id Indonesian 100% (54/54) 100% (54/54) 100% (54/54)
90
- ie Interlingue 100% (52/52) 100% (52/52) 100% (52/52)
91
- ig Igbo 100% (58/58) 100% (58/58) 100% (58/58)
92
- ii Sichuan Yi/Nuosu (0/1165) (0/1165) (0/1165)
93
- ik Inupiaq (Inupiak, Eskimo) 100% (68/68) 100% (68/68) 100% (68/68)
94
- io Ido 100% (52/52) 100% (52/52) 100% (52/52)
95
- is Icelandic 100% (70/70) 100% (70/70) 100% (70/70)
96
- it Italian 100% (72/72) 100% (72/72) 100% (72/72)
97
- iu Inuktitut 100% (161/161) (0/161) (0/161)
98
- ja Japanese (0/6537) (0/6537) (0/6537)
99
- jv Javanese 100% (56/56) 100% (56/56) 100% (56/56)
100
- ka Georgian 100% (33/33) 100% (33/33) 100% (33/33)
101
- kaa Kara-Kalpak (Karakalpak) 100% (78/78) 100% (78/78) 100% (78/78)
102
- kab Kabyle 100% (70/70) 100% (70/70) 100% (70/70)
103
- ki Kikuyu 100% (56/56) 100% (56/56) 100% (56/56)
104
- kj Kuanyama/Kwanyama 100% (52/52) 100% (52/52) 100% (52/52)
105
- kk Kazakh 100% (77/77) 100% (77/77) 100% (77/77)
106
- kl Greenlandic 100% (81/81) 100% (81/81) 100% (81/81)
107
- km Central Khmer (0/63) (0/63) (0/63)
108
- kn Kannada (0/70) (0/70) (0/70)
109
- ko Korean (0/2443) (0/2443) (0/2443)
110
- kok Kokani (Devanagari script) (0/68) (0/68) (0/68)
111
- kr Kanuri 100% (56/56) 100% (56/56) 100% (56/56)
112
- ks Kashmiri 78% (26/33) (0/33) 69% (23/33)
113
- ku-am Kurdish in Armenia 100% (64/64) 100% (64/64) 100% (64/64)
114
- ku-iq Kurdish in Iraq 100% (32/32) (0/32) 87% (28/32)
115
- ku-ir Kurdish in Iran 100% (32/32) (0/32) 87% (28/32)
116
- ku-tr Kurdish in Turkey 100% (62/62) 100% (62/62) 100% (62/62)
117
- kum Kumyk 100% (66/66) 100% (66/66) 100% (66/66)
118
- kv Komi (Komi-Permyak/Komi-Siryan) 100% (70/70) 100% (70/70) 100% (70/70)
119
- kw Cornish 100% (64/64) 100% (64/64) 100% (64/64)
120
- kwm Kwambi 100% (52/52) 100% (52/52) 100% (52/52)
121
- ky Kirgiz 100% (70/70) 100% (70/70) 100% (70/70)
122
- la Latin 100% (68/68) 100% (68/68) 100% (68/68)
123
- lah Lahnda 92% (25/27) (0/27) 85% (23/27)
124
- lb Luxembourgish (Letzeburgesch) 100% (75/75) 100% (75/75) 100% (75/75)
125
- lez Lezghian (Lezgian) 100% (67/67) 100% (67/67) 100% (67/67)
126
- lg Ganda 100% (54/54) 100% (54/54) 100% (54/54)
127
- li Limburgan/Limburger/Limburgish 100% (62/62) 100% (62/62) 100% (62/62)
128
- ln Lingala 100% (81/81) 100% (81/81) 100% (81/81)
129
- lo Lao 100% (55/55) (0/55) 83% (46/55)
130
- lt Lithuanian 100% (70/70) 100% (70/70) 100% (70/70)
131
- lv Latvian 100% (78/78) 100% (78/78) 100% (78/78)
132
- mai Maithili (Devanagari script) (0/68) (0/68) (0/68)
133
- mg Malagasy 100% (56/56) 100% (56/56) 100% (56/56)
134
- mh Marshallese 100% (62/62) 100% (62/62) 100% (62/62)
135
- mi Maori 100% (64/64) 100% (64/64) 100% (64/64)
136
- mk Macedonian 100% (42/42) 100% (42/42) 100% (42/42)
137
- ml Malayalam (0/68) (0/68) (0/68)
138
- mn-cn Mongolian in China (0/130) (0/130) (0/130)
139
- mn-mn Mongolian in Mongolia 100% (70/70) 100% (70/70) 100% (70/70)
140
- mni Maniputi (0/78) (0/78) (0/78)
141
- mo Moldavian 100% (128/128) 100% (128/128) 100% (128/128)
142
- mr Marathi (Devanagari script) (0/68) (0/68) (0/68)
143
- ms Malay 100% (52/52) 100% (52/52) 100% (52/52)
144
- mt Maltese 100% (72/72) 100% (72/72) 100% (72/72)
145
- my Burmese (Myanmar) (0/48) (0/48) (0/48)
146
- na Nauru 100% (60/60) 100% (60/60) 100% (60/60)
147
- nb Norwegian Bokmal 100% (70/70) 100% (70/70) 100% (70/70)
148
- nds Low Saxon 100% (59/59) 100% (59/59) 100% (59/59)
149
- ne Nepali (0/72) (0/72) (0/72)
150
- ng Ndonga 100% (52/52) 100% (52/52) 100% (52/52)
151
- nl Dutch 100% (82/82) 100% (82/82) 100% (82/82)
152
- nn Norwegian Nynorsk 100% (76/76) 100% (76/76) 100% (76/76)
153
- no Norwegian (Bokmal) 100% (70/70) 100% (70/70) 100% (70/70)
154
- nqo N'Ko 91% (54/59) (0/59) (0/59)
155
- nr Ndebele, South 100% (52/52) 100% (52/52) 100% (52/52)
156
- nso Northern Sotho 100% (58/58) 100% (58/58) 100% (58/58)
157
- nv Navajo/Navaho 100% (72/72) 100% (72/72) 100% (72/72)
158
- ny Chichewa 100% (54/54) 100% (54/54) 100% (54/54)
159
- oc Occitan 100% (70/70) 100% (70/70) 100% (70/70)
160
- om Oromo or Galla 100% (52/52) 100% (52/52) 100% (52/52)
161
- or Oriya (0/68) (0/68) (0/68)
162
- os Ossetic 100% (66/66) 100% (66/66) 100% (66/66)
163
- ota Ottoman Turkish 100% (37/37) (0/37) 97% (36/37)
164
- pa Panjabi/Punjabi (0/63) (0/63) (0/63)
165
- pa-pk Panjabi/Punjabi in Pakistan 92% (25/27) (0/27) 85% (23/27)
166
- pap-an Papiamento in Netherlands Antilles 100% (72/72) 100% (72/72) 100% (72/72)
167
- pap-aw Papiamento in Aruba 100% (54/54) 100% (54/54) 100% (54/54)
168
- pes Western Farsi 100% (40/40) (0/40) 100% (40/40)
169
- pl Polish 100% (70/70) 100% (70/70) 100% (70/70)
170
- prs Dari/Eastern Farsi 100% (40/40) (0/40) 100% (40/40)
171
- ps-af Pashto in Afghanistan 95% (47/49) (0/49) 77% (38/49)
172
- ps-pk Pashto in Pakistan 93% (46/49) (0/49) 75% (37/49)
173
- pt Portuguese 100% (82/82) 100% (82/82) 100% (82/82)
174
- qu Quechua 100% (55/55) 100% (55/55) 100% (55/55)
175
- rm Rhaeto-Romance (Romansch) 100% (66/66) 100% (66/66) 100% (66/66)
176
- rn Rundi 100% (52/52) 100% (52/52) 100% (52/52)
177
- ro Romanian 100% (62/62) 100% (62/62) 100% (62/62)
178
- ru Russian 100% (66/66) 100% (66/66) 100% (66/66)
179
- rw Kinyarwanda 100% (52/52) 100% (52/52) 100% (52/52)
180
- sa Sanskrit (Devanagari script) (0/68) (0/68) (0/68)
181
- sah Yakut 100% (76/76) 100% (76/76) 100% (76/76)
182
- sat Santali (Devanagari script) (0/70) (0/70) (0/70)
183
- sc Sardinian 100% (62/62) 100% (62/62) 100% (62/62)
184
- sco Scots 100% (56/56) 100% (56/56) 100% (56/56)
185
- sd Sindhi 100% (54/54) (0/54) 79% (43/54)
186
- se North Sami 100% (66/66) 100% (66/66) 100% (66/66)
187
- sel Selkup (Ostyak-Samoyed) 100% (66/66) 100% (66/66) 100% (66/66)
188
- sg Sango 100% (72/72) 100% (72/72) 100% (72/72)
189
- sh Serbo-Croatian 100% (156/156) 100% (156/156) 98% (154/156)
190
- shs Secwepemctsin 100% (48/48) 100% (48/48) 100% (48/48)
191
- si Sinhala/Sinhalese (0/73) (0/73) (0/73)
192
- sid Sidamo (0/281) (0/281) (0/281)
193
- sk Slovak 100% (86/86) 100% (86/86) 100% (86/86)
194
- sl Slovenian 100% (62/62) 100% (62/62) 100% (62/62)
195
- sm Samoan 100% (53/53) 100% (53/53) 100% (53/53)
196
- sma South Sami 100% (60/60) 100% (60/60) 100% (60/60)
197
- smj Lule Sami 100% (60/60) 100% (60/60) 100% (60/60)
198
- smn Inari Sami 100% (68/68) 100% (68/68) 100% (68/68)
199
- sms Skolt Sami 100% (80/80) 100% (80/80) 97% (78/80)
200
- sn Shona 100% (52/52) 100% (52/52) 100% (52/52)
201
- so Somali 100% (52/52) 100% (52/52) 100% (52/52)
202
- sq Albanian 100% (56/56) 100% (56/56) 100% (56/56)
203
- sr Serbian 100% (60/60) 100% (60/60) 100% (60/60)
204
- ss Swati 100% (52/52) 100% (52/52) 100% (52/52)
205
- st Sotho, Southern 100% (52/52) 100% (52/52) 100% (52/52)
206
- su Sundanese 100% (54/54) 100% (54/54) 100% (54/54)
207
- sv Swedish 100% (68/68) 100% (68/68) 100% (68/68)
208
- sw Swahili 100% (52/52) 100% (52/52) 100% (52/52)
209
- syr Syriac (0/45) (0/45) (0/45)
210
- ta Tamil (0/48) (0/48) (0/48)
211
- te Telugu (0/70) (0/70) (0/70)
212
- tg Tajik 100% (78/78) 100% (78/78) 97% (76/78)
213
- th Thai 1% (1/74) (0/74) (0/74)
214
- ti-er Eritrean Tigrinya (0/255) (0/255) (0/255)
215
- ti-et Ethiopian Tigrinya (0/281) (0/281) (0/281)
216
- tig Tigre (0/221) (0/221) (0/221)
217
- tk Turkmen 100% (68/68) 100% (68/68) 100% (68/68)
218
- tl Tagalog 100% (84/84) 100% (84/84) 100% (84/84)
219
- tn Tswana 100% (58/58) 100% (58/58) 100% (58/58)
220
- to Tonga 100% (53/53) 100% (53/53) 100% (53/53)
221
- tr Turkish 100% (70/70) 100% (70/70) 100% (70/70)
222
- ts Tsonga 100% (52/52) 100% (52/52) 100% (52/52)
223
- tt Tatar 100% (76/76) 100% (76/76) 100% (76/76)
224
- tw Twi 100% (73/73) 100% (73/73) 100% (73/73)
225
- ty Tahitian 100% (65/65) 100% (65/65) 100% (65/65)
226
- tyv Tuvinian 100% (70/70) 100% (70/70) 100% (70/70)
227
- ug Uyghur 87% (29/33) (0/33) 78% (26/33)
228
- uk Ukrainian 100% (72/72) 100% (72/72) 100% (72/72)
229
- ur Urdu 92% (25/27) (0/27) 85% (23/27)
230
- uz Uzbek 100% (52/52) 100% (52/52) 100% (52/52)
231
- ve Venda 100% (62/62) 100% (62/62) 100% (62/62)
232
- vi Vietnamese 100% (194/194) 100% (194/194) 76% (148/194)
233
- vo Volapuk 100% (54/54) 100% (54/54) 100% (54/54)
234
- vot Votic 100% (62/62) 100% (62/62) 100% (62/62)
235
- wa Walloon 100% (70/70) 100% (70/70) 100% (70/70)
236
- wal Wolaitta/Wolaytta (0/281) (0/281) (0/281)
237
- wen Sorbian languages (lower and upper) 100% (76/76) 100% (76/76) 100% (76/76)
238
- wo Wolof 100% (66/66) 100% (66/66) 100% (66/66)
239
- xh Xhosa 100% (52/52) 100% (52/52) 100% (52/52)
240
- yap Yapese 100% (58/58) 100% (58/58) 100% (58/58)
241
- yi Yiddish 100% (27/27) (0/27) (0/27)
242
- yo Yoruba 100% (119/119) 100% (119/119) 100% (119/119)
243
- za Zhuang/Chuang 100% (52/52) 100% (52/52) 100% (52/52)
244
- zh-cn Chinese (simplified) 0% (2/6765) 0% (2/6765) 0% (2/6765)
245
- zh-hk Chinese Hong Kong Supplementary Character Set (0/2213) (0/2213) (0/2213)
246
- zh-mo Chinese in Macau (0/2213) (0/2213) (0/2213)
247
- zh-sg Chinese in Singapore 0% (2/6765) 0% (2/6765) 0% (2/6765)
248
- zh-tw Chinese (traditional) (0/13063) (0/13063) (0/13063)
249
- zu Zulu 100% (52/52) 100% (52/52) 100% (52/52)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/tcpdf/fonts/dejavu-fonts-ttf-2.34/status.txt DELETED
@@ -1,6766 +0,0 @@
1
- This is the status file for DejaVu fonts
2
- ($Id: status.txt 2475 2011-02-27 14:51:17Z ben_laenen $)
3
-
4
- original = present in original Bitstream Vera 1.10
5
- <version> = added in DejaVu fonts <version>
6
-
7
- U+0020 space original
8
- U+0021 exclam original
9
- U+0022 quotedbl original
10
- U+0023 numbersign original
11
- U+0024 dollar original
12
- U+0025 percent original
13
- U+0026 ampersand original
14
- U+0027 quotesingle original
15
- U+0028 parenleft original
16
- U+0029 parenright original
17
- U+002a asterisk original
18
- U+002b plus original
19
- U+002c comma original
20
- U+002d hyphen original
21
- U+002e period original
22
- U+002f slash original
23
- U+0030 zero original
24
- U+0031 one original
25
- U+0032 two original
26
- U+0033 three original
27
- U+0034 four original
28
- U+0035 five original
29
- U+0036 six original
30
- U+0037 seven original
31
- U+0038 eight original
32
- U+0039 nine original
33
- U+003a colon original
34
- U+003b semicolon original
35
- U+003c less original
36
- U+003d equal original
37
- U+003e greater original
38
- U+003f question original
39
- U+0040 at original
40
- U+0041 A original
41
- U+0042 B original
42
- U+0043 C original
43
- U+0044 D original
44
- U+0045 E original
45
- U+0046 F original
46
- U+0047 G original
47
- U+0048 H original
48
- U+0049 I original
49
- U+004a J original
50
- U+004b K original
51
- U+004c L original
52
- U+004d M original
53
- U+004e N original
54
- U+004f O original
55
- U+0050 P original
56
- U+0051 Q original
57
- U+0052 R original
58
- U+0053 S original
59
- U+0054 T original
60
- U+0055 U original
61
- U+0056 V original
62
- U+0057 W original
63
- U+0058 X original
64
- U+0059 Y original
65
- U+005a Z original
66
- U+005b bracketleft original
67
- U+005c backslash original
68
- U+005d bracketright original
69
- U+005e asciicircum original
70
- U+005f underscore original
71
- U+0060 grave original
72
- U+0061 a original
73
- U+0062 b original
74
- U+0063 c original
75
- U+0064 d original
76
- U+0065 e original
77
- U+0066 f original
78
- U+0067 g original
79
- U+0068 h original
80
- U+0069 i original
81
- U+006a j original
82
- U+006b k original
83
- U+006c l original
84
- U+006d m original
85
- U+006e n original
86
- U+006f o original
87
- U+0070 p original
88
- U+0071 q original
89
- U+0072 r original
90
- U+0073 s original
91
- U+0074 t original
92
- U+0075 u original
93
- U+0076 v original
94
- U+0077 w original
95
- U+0078 x original
96
- U+0079 y original
97
- U+007a z original
98
- U+007b braceleft original
99
- U+007c bar original
100
- U+007d braceright original
101
- U+007e asciitilde original
102
- U+00a0 nonbreakingspace original
103
- U+00a1 exclamdown original
104
- U+00a2 cent original
105
- U+00a3 sterling original
106
- U+00a4 currency original
107
- U+00a5 yen original
108
- U+00a6 brokenbar original
109
- U+00a7 section original
110
- U+00a8 dieresis original
111
- U+00a9 copyright original
112
- U+00aa ordfeminine original
113
- U+00ab guillemotleft original
114
- U+00ac logicalnot original
115
- U+00ad sfthyphen original
116
- U+00ae registered original
117
- U+00af macron original
118
- U+00b0 degree original
119
- U+00b1 plusminus original
120
- U+00b2 twosuperior original
121
- U+00b3 threesuperior original
122
- U+00b4 acute original
123
- U+00b5 mu original
124
- U+00b6 paragraph original
125
- U+00b7 periodcentered original
126
- U+00b8 cedilla original
127
- U+00b9 onesuperior original
128
- U+00ba ordmasculine original
129
- U+00bb guillemotright original
130
- U+00bc onequarter original
131
- U+00bd onehalf original
132
- U+00be threequarters original
133
- U+00bf questiondown original
134
- U+00c0 Agrave original
135
- U+00c1 Aacute original
136
- U+00c2 Acircumflex original
137
- U+00c3 Atilde original
138
- U+00c4 Adieresis original
139
- U+00c5 Aring original
140
- U+00c6 AE original
141
- U+00c7 Ccedilla original
142
- U+00c8 Egrave original
143
- U+00c9 Eacute original
144
- U+00ca Ecircumflex original
145
- U+00cb Edieresis original
146
- U+00cc Igrave original
147
- U+00cd Iacute original
148
- U+00ce Icircumflex original
149
- U+00cf Idieresis original
150
- U+00d0 Eth original
151
- U+00d1 Ntilde original
152
- U+00d2 Ograve original
153
- U+00d3 Oacute original
154
- U+00d4 Ocircumflex original
155
- U+00d5 Otilde original
156
- U+00d6 Odieresis original
157
- U+00d7 multiply original
158
- U+00d8 Oslash original
159
- U+00d9 Ugrave original
160
- U+00da Uacute original
161
- U+00db Ucircumflex original
162
- U+00dc Udieresis original
163
- U+00dd Yacute original
164
- U+00de Thorn original
165
- U+00df germandbls original
166
- U+00e0 agrave original
167
- U+00e1 aacute original
168
- U+00e2 acircumflex original
169
- U+00e3 atilde original
170
- U+00e4 adieresis original
171
- U+00e5 aring original
172
- U+00e6 ae original
173
- U+00e7 ccedilla original
174
- U+00e8 egrave original
175
- U+00e9 eacute original
176
- U+00ea ecircumflex original
177
- U+00eb edieresis original
178
- U+00ec igrave original
179
- U+00ed iacute original
180
- U+00ee icircumflex original
181
- U+00ef idieresis original
182
- U+00f0 eth original
183
- U+00f1 ntilde original
184
- U+00f2 ograve original
185
- U+00f3 oacute original
186
- U+00f4 ocircumflex original
187
- U+00f5 otilde original
188
- U+00f6 odieresis original
189
- U+00f7 divide original
190
- U+00f8 oslash original
191
- U+00f9 ugrave original
192
- U+00fa uacute original
193
- U+00fb ucircumflex original
194
- U+00fc udieresis original
195
- U+00fd yacute original
196
- U+00fe thorn original
197
- U+00ff ydieresis original
198
- U+0100 Amacron 1.5
199
- U+0101 amacron 1.5
200
- U+0102 Abreve 1.5
201
- U+0103 abreve 1.5
202
- U+0104 Aogonek 1.4
203
- U+0105 aogonek 1.4
204
- U+0106 Cacute original
205
- U+0107 cacute original
206
- U+0108 Ccircumflex 1.5
207
- U+0109 ccircumflex 1.5
208
- U+010a Cdotaccent 1.5
209
- U+010b cdotaccent 1.5
210
- U+010c Ccaron original
211
- U+010d ccaron original
212
- U+010e Dcaron 1.0
213
- U+010f dcaron 1.0
214
- U+0110 Dcroat 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
215
- U+0111 dcroat original
216
- U+0112 Emacron 1.5
217
- U+0113 emacron 1.5
218
- U+0114 Ebreve 1.5
219
- U+0115 ebreve 1.5
220
- U+0116 Edotaccent 1.5
221
- U+0117 edotaccent 1.5
222
- U+0118 Eogonek 1.4
223
- U+0119 eogonek 1.4
224
- U+011a Ecaron 1.0
225
- U+011b ecaron 1.0
226
- U+011c Gcircumflex 1.5
227
- U+011d gcircumflex 1.5
228
- U+011e Gbreve original
229
- U+011f gbreve original
230
- U+0120 Gdotaccent 1.5
231
- U+0121 gdotaccent 1.5
232
- U+0122 Gcommaaccent 1.11
233
- U+0123 gcommaaccent 1.11
234
- U+0124 Hcircumflex 1.5
235
- U+0125 hcircumflex 1.5
236
- U+0126 Hbar 1.12
237
- U+0127 hbar 1.12
238
- U+0128 Itilde 1.5
239
- U+0129 itilde 1.5
240
- U+012a Imacron 1.5
241
- U+012b imacron 1.5
242
- U+012c Ibreve 1.5
243
- U+012d ibreve 1.5
244
- U+012e Iogonek 1.11
245
- U+012f iogonek 1.11
246
- U+0130 Idotaccent original
247
- U+0131 dotlessi original
248
- U+0132 IJ 1.11
249
- U+0133 ij 1.11
250
- U+0134 Jcircumflex 1.5
251
- U+0135 jcircumflex 1.5
252
- U+0136 Kcommaaccent 1.11
253
- U+0137 kcommaaccent 1.11
254
- U+0138 kgreenlandic 1.12
255
- U+0139 Lacute 1.1
256
- U+013a lacute 1.1
257
- U+013b Lcommaaccent 1.11
258
- U+013c lcommaaccent 1.11
259
- U+013d Lcaron 1.1
260
- U+013e lcaron 1.1
261
- U+013f Ldot 1.2
262
- U+0140 ldot 1.2
263
- U+0141 Lslash original
264
- U+0142 lslash original
265
- U+0143 Nacute 1.4
266
- U+0144 nacute 1.4
267
- U+0145 Ncommaaccent 1.11
268
- U+0146 ncommaaccent 1.11
269
- U+0147 Ncaron 1.0
270
- U+0148 ncaron 1.0
271
- U+0149 napostrophe 1.12
272
- U+014a Eng 1.12
273
- U+014b eng 1.12
274
- U+014c Omacron 1.5
275
- U+014d omacron 1.5
276
- U+014e Obreve 1.5
277
- U+014f obreve 1.5
278
- U+0150 Ohungarumlaut 1.5
279
- U+0151 ohungarumlaut 1.5
280
- U+0152 OE original
281
- U+0153 oe original
282
- U+0154 Racute 1.1
283
- U+0155 racute 1.1
284
- U+0156 Rcommaaccent 1.11
285
- U+0157 rcommaaccent 1.11
286
- U+0158 Rcaron 1.0
287
- U+0159 rcaron 1.0
288
- U+015a Sacute 1.4
289
- U+015b sacute 1.4
290
- U+015c Scircumflex 1.5
291
- U+015d scircumflex 1.5
292
- U+015e Scedilla original
293
- U+015f scedilla original
294
- U+0160 Scaron original
295
- U+0161 scaron original
296
- U+0162 Tcommaaccent 1.5
297
- U+0163 tcommaaccent 1.5
298
- U+0164 Tcaron 1.0
299
- U+0165 tcaron 1.0
300
- U+0166 Tbar 1.12
301
- U+0167 tbar 1.12
302
- U+0168 Utilde 1.5
303
- U+0169 utilde 1.5
304
- U+016a Umacron 1.5
305
- U+016b umacron 1.5
306
- U+016c Ubreve 1.5
307
- U+016d ubreve 1.5
308
- U+016e Uring 1.0
309
- U+016f uring 1.0
310
- U+0170 Uhungarumlaut 1.5
311
- U+0171 uhungarumlaut 1.5
312
- U+0172 Uogonek 1.11
313
- U+0173 uogonek 1.11
314
- U+0174 Wcircumflex 1.2
315
- U+0175 wcircumflex 1.2
316
- U+0176 Ycircumflex 1.2
317
- U+0177 ycircumflex 1.2
318
- U+0178 Ydieresis original
319
- U+0179 Zacute 1.4
320
- U+017a zacute 1.4
321
- U+017b Zdotaccent 1.4
322
- U+017c zdotaccent 1.4
323
- U+017d Zcaron original
324
- U+017e zcaron original
325
- U+017f longs 1.12
326
- U+0180 uni0180 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.12 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
327
- U+0181 uni0181 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
328
- U+0182 uni0182 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
329
- U+0183 uni0183 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
330
- U+0184 uni0184 2.3
331
- U+0185 uni0185 2.3
332
- U+0186 uni0186 1.15
333
- U+0187 uni0187 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
334
- U+0188 uni0188 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
335
- U+0189 uni0189 2.1
336
- U+018a uni018A 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
337
- U+018b uni018B 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
338
- U+018c uni018C 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
339
- U+018d uni018D 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
340
- U+018e uni018E 2.1 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
341
- U+018f uni018F 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
342
- U+0190 uni0190 1.15
343
- U+0191 uni0191 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
344
- U+0192 florin original
345
- U+0193 uni0193 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
346
- U+0194 uni0194 1.14
347
- U+0195 uni0195 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.6 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
348
- U+0196 uni0196 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
349
- U+0197 uni0197 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
350
- U+0198 uni0198 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
351
- U+0199 uni0199 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
352
- U+019a uni019A 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
353
- U+019b uni019B 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
354
- U+019c uni019C 2.3
355
- U+019d uni019D 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
356
- U+019e uni019E 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
357
- U+019f uni019F 2.3
358
- U+01a0 Ohorn 2.3
359
- U+01a1 ohorn 2.3
360
- U+01a2 uni01A2 2.3
361
- U+01a3 uni01A3 2.3
362
- U+01a4 uni01A4 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
363
- U+01a5 uni01A5 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
364
- U+01a6 uni01A6 2.3
365
- U+01a7 uni01A7 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
366
- U+01a8 uni01A8 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
367
- U+01a9 uni01A9 2.2
368
- U+01aa uni01AA 2.3
369
- U+01ab uni01AB 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
370
- U+01ac uni01AC 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
371
- U+01ad uni01AD 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
372
- U+01ae uni01AE 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
373
- U+01af Uhorn 2.3
374
- U+01b0 uhorn 2.3
375
- U+01b1 uni01B1 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
376
- U+01b2 uni01B2 2.3
377
- U+01b3 uni01B3 2.3
378
- U+01b4 uni01B4 2.3
379
- U+01b5 uni01B5 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
380
- U+01b6 uni01B6 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
381
- U+01b7 uni01B7 2.3
382
- U+01b8 uni01B8 2.3
383
- U+01b9 uni01B9 2.3
384
- U+01ba uni01BA 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
385
- U+01bb uni01BB 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
386
- U+01bc uni01BC 2.3
387
- U+01bd uni01BD 2.3
388
- U+01be uni01BE 2.3
389
- U+01bf uni01BF 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
390
- U+01c0 uni01C0 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
391
- U+01c1 uni01C1 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
392
- U+01c2 uni01C2 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
393
- U+01c3 uni01C3 2.2
394
- U+01c4 uni01C4 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
395
- U+01c5 uni01C5 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
396
- U+01c6 uni01C6 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
397
- U+01c7 uni01C7 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
398
- U+01c8 uni01C8 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
399
- U+01c9 uni01C9 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
400
- U+01ca uni01CA 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
401
- U+01cb uni01CB 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
402
- U+01cc uni01CC 1.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
403
- U+01cd uni01CD 1.15
404
- U+01ce uni01CE 1.15
405
- U+01cf uni01CF 1.15
406
- U+01d0 uni01D0 1.15
407
- U+01d1 uni01D1 1.15
408
- U+01d2 uni01D2 1.15
409
- U+01d3 uni01D3 1.15
410
- U+01d4 uni01D4 1.15
411
- U+01d5 uni01D5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
412
- U+01d6 uni01D6 1.13
413
- U+01d7 uni01D7 2.3
414
- U+01d8 uni01D8 2.3
415
- U+01d9 uni01D9 2.3
416
- U+01da uni01DA 2.3
417
- U+01db uni01DB 2.3
418
- U+01dc uni01DC 2.3
419
- U+01dd uni01DD 2.2
420
- U+01de uni01DE 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique) 2.23 (Serif Italic Condensed)
421
- U+01df uni01DF 1.13
422
- U+01e0 uni01E0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
423
- U+01e1 uni01E1 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
424
- U+01e2 uni01E2 1.5
425
- U+01e3 uni01E3 1.5
426
- U+01e4 uni01E4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight)
427
- U+01e5 uni01E5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight)
428
- U+01e6 Gcaron 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
429
- U+01e7 gcaron 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
430
- U+01e8 uni01E8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
431
- U+01e9 uni01E9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
432
- U+01ea uni01EA 1.9
433
- U+01eb uni01EB 1.9
434
- U+01ec uni01EC 1.9
435
- U+01ed uni01ED 1.9
436
- U+01ee uni01EE 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
437
- U+01ef uni01EF 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
438
- U+01f0 uni01F0 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono) 2.22 (Sans Mono Bold) 2.23 (Serif Italic Condensed)
439
- U+01f1 uni01F1 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
440
- U+01f2 uni01F2 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
441
- U+01f3 uni01F3 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
442
- U+01f4 uni01F4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
443
- U+01f5 uni01F5 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
444
- U+01f6 uni01F6 2.3
445
- U+01f7 uni01F7 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
446
- U+01f8 uni01F8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
447
- U+01f9 uni01F9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
448
- U+01fa Aringacute 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
449
- U+01fb aringacute 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
450
- U+01fc AEacute 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
451
- U+01fd aeacute 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
452
- U+01fe Oslashacute 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
453
- U+01ff oslashacute 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
454
- U+0200 uni0200 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
455
- U+0201 uni0201 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
456
- U+0202 uni0202 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
457
- U+0203 uni0203 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
458
- U+0204 uni0204 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
459
- U+0205 uni0205 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
460
- U+0206 uni0206 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
461
- U+0207 uni0207 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
462
- U+0208 uni0208 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
463
- U+0209 uni0209 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
464
- U+020a uni020A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
465
- U+020b uni020B 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
466
- U+020c uni020C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
467
- U+020d uni020D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
468
- U+020e uni020E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
469
- U+020f uni020F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
470
- U+0210 uni0210 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
471
- U+0211 uni0211 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
472
- U+0212 uni0212 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
473
- U+0213 uni0213 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
474
- U+0214 uni0214 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
475
- U+0215 uni0215 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
476
- U+0216 uni0216 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
477
- U+0217 uni0217 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
478
- U+0218 Scommaaccent 1.5
479
- U+0219 scommaaccent 1.5
480
- U+021a uni021A 1.5
481
- U+021b uni021B 1.5
482
- U+021c uni021C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic)
483
- U+021d uni021D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.31 (Serif Condensed Italic)
484
- U+021e uni021E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
485
- U+021f uni021F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
486
- U+0220 uni0220 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.16 (Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.17 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.18 (Sans Mono, Sans Mono Bold) 2.23 (Serif Italic Condensed)
487
- U+0221 uni0221 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
488
- U+0222 uni0222 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
489
- U+0223 uni0223 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
490
- U+0224 uni0224 2.3
491
- U+0225 uni0225 2.3
492
- U+0226 uni0226 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
493
- U+0227 uni0227 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
494
- U+0228 uni0228 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
495
- U+0229 uni0229 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
496
- U+022a uni022A 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
497
- U+022b uni022B 1.13
498
- U+022c uni022C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
499
- U+022d uni022D 1.13
500
- U+022e uni022E 1.10
501
- U+022f uni022F 1.10
502
- U+0230 uni0230 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.22 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
503
- U+0231 uni0231 1.13
504
- U+0232 uni0232 1.5
505
- U+0233 uni0233 1.5
506
- U+0234 uni0234 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
507
- U+0235 uni0235 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
508
- U+0236 uni0236 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
509
- U+0237 dotlessj 1.5
510
- U+0238 uni0238 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
511
- U+0239 uni0239 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
512
- U+023a uni023A 2.3
513
- U+023b uni023B 2.3
514
- U+023c uni023C 2.3
515
- U+023d uni023D 2.3
516
- U+023e uni023E 2.3
517
- U+023f uni023F 2.3
518
- U+0240 uni0240 2.3
519
- U+0241 uni0241 2.3
520
- U+0242 uni0242 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.23 (Serif Italic Condensed)
521
- U+0243 uni0243 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.33 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique)
522
- U+0244 uni0244 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.27 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
523
- U+0245 uni0245 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Italic) 2.11 (Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
524
- U+0246 uni0246 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
525
- U+0247 uni0247 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
526
- U+0248 uni0248 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
527
- U+0249 uni0249 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
528
- U+024a uni024A 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
529
- U+024b uni024B 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.26 (Sans ExtraLight) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
530
- U+024c uni024C 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.27 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
531
- U+024d uni024D 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans ExtraLight) 2.27 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
532
- U+024e uni024E 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
533
- U+024f uni024F 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
534
- U+0250 uni0250 1.14
535
- U+0251 uni0251 1.14
536
- U+0252 uni0252 1.14
537
- U+0253 uni0253 1.14
538
- U+0254 uni0254 1.14
539
- U+0255 uni0255 1.14
540
- U+0256 uni0256 1.14
541
- U+0257 uni0257 1.14
542
- U+0258 uni0258 1.14
543
- U+0259 uni0259 1.14
544
- U+025a uni025A 1.14
545
- U+025b uni025B 1.14
546
- U+025c uni025C 1.14
547
- U+025d uni025D 1.14
548
- U+025e uni025E 1.14
549
- U+025f uni025F 1.14
550
- U+0260 uni0260 1.14
551
- U+0261 uni0261 1.14
552
- U+0262 uni0262 1.14
553
- U+0263 uni0263 1.14
554
- U+0264 uni0264 1.14
555
- U+0265 uni0265 1.14
556
- U+0266 uni0266 1.14
557
- U+0267 uni0267 1.14
558
- U+0268 uni0268 1.14
559
- U+0269 uni0269 1.14
560
- U+026a uni026A 1.14
561
- U+026b uni026B 1.14
562
- U+026c uni026C 1.14
563
- U+026d uni026D 1.14
564
- U+026e uni026E 1.14
565
- U+026f uni026F 1.14
566
- U+0270 uni0270 1.14
567
- U+0271 uni0271 1.14
568
- U+0272 uni0272 1.14
569
- U+0273 uni0273 1.14
570
- U+0274 uni0274 1.14
571
- U+0275 uni0275 1.14
572
- U+0276 uni0276 1.14
573
- U+0277 uni0277 1.14
574
- U+0278 uni0278 1.14
575
- U+0279 uni0279 1.14
576
- U+027a uni027A 1.14
577
- U+027b uni027B 1.14
578
- U+027c uni027C 1.14
579
- U+027d uni027D 1.14
580
- U+027e uni027E 1.14
581
- U+027f uni027F 1.14
582
- U+0280 uni0280 1.14
583
- U+0281 uni0281 1.14
584
- U+0282 uni0282 1.14
585
- U+0283 uni0283 1.14
586
- U+0284 uni0284 1.14
587
- U+0285 uni0285 1.14
588
- U+0286 uni0286 1.14
589
- U+0287 uni0287 1.14
590
- U+0288 uni0288 1.14
591
- U+0289 uni0289 1.14
592
- U+028a uni028A 1.14
593
- U+028b uni028B 1.14
594
- U+028c uni028C 1.14
595
- U+028d uni028D 1.14
596
- U+028e uni028E 1.14
597
- U+028f uni028F 1.14
598
- U+0290 uni0290 1.14
599
- U+0291 uni0291 1.14
600
- U+0292 uni0292 1.14
601
- U+0293 uni0293 1.14
602
- U+0294 uni0294 1.14
603
- U+0295 uni0295 1.14
604
- U+0296 uni0296 1.14
605
- U+0297 uni0297 1.14
606
- U+0298 uni0298 1.14
607
- U+0299 uni0299 1.14
608
- U+029a uni029A 1.14
609
- U+029b uni029B 1.14
610
- U+029c uni029C 1.14
611
- U+029d uni029D 1.14
612
- U+029e uni029E 1.14
613
- U+029f uni029F 1.14
614
- U+02a0 uni02A0 1.14
615
- U+02a1 uni02A1 1.14
616
- U+02a2 uni02A2 1.14
617
- U+02a3 uni02A3 1.14
618
- U+02a4 uni02A4 1.14
619
- U+02a5 uni02A5 1.14
620
- U+02a6 uni02A6 1.14
621
- U+02a7 uni02A7 1.14
622
- U+02a8 uni02A8 1.14
623
- U+02a9 uni02A9 1.14
624
- U+02aa uni02AA 1.14
625
- U+02ab uni02AB 1.14
626
- U+02ac uni02AC 1.14
627
- U+02ad uni02AD 1.14
628
- U+02ae uni02AE 1.14
629
- U+02af uni02AF 1.14
630
- U+02b0 uni02B0 1.14
631
- U+02b1 uni02B1 1.14
632
- U+02b2 uni02B2 1.14
633
- U+02b3 uni02B3 1.14
634
- U+02b4 uni02B4 1.14
635
- U+02b5 uni02B5 1.14
636
- U+02b6 uni02B6 1.14
637
- U+02b7 uni02B7 1.14
638
- U+02b8 uni02B8 1.14
639
- U+02b9 uni02B9 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
640
- U+02ba uni02BA 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
641
- U+02bb uni02BB 1.5
642
- U+02bc uni02BC 1.12
643
- U+02bd uni02BD 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
644
- U+02be uni02BE 2.2
645
- U+02bf uni02BF 2.2
646
- U+02c0 uni02C0 1.14
647
- U+02c1 uni02C1 1.14
648
- U+02c2 uni02C2 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
649
- U+02c3 uni02C3 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
650
- U+02c4 uni02C4 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
651
- U+02c5 uni02C5 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
652
- U+02c6 circumflex original
653
- U+02c7 caron original
654
- U+02c8 uni02C8 2.0
655
- U+02c9 uni02C9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
656
- U+02ca uni02CA 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
657
- U+02cb uni02CB 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
658
- U+02cc uni02CC 2.0
659
- U+02cd uni02CD 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.7 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.32 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
660
- U+02ce uni02CE 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique)
661
- U+02cf uni02CF 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.34 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique)
662
- U+02d0 uni02D0 1.14
663
- U+02d1 uni02D1 1.14
664
- U+02d2 uni02D2 2.0
665
- U+02d3 uni02D3 2.2
666
- U+02d4 uni02D4 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
667
- U+02d5 uni02D5 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
668
- U+02d6 uni02D6 2.0
669
- U+02d7 uni02D7 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
670
- U+02d8 breve original
671
- U+02d9 dotaccent original
672
- U+02da ring original
673
- U+02db ogonek original
674
- U+02dc tilde original
675
- U+02dd hungarumlaut original
676
- U+02de uni02DE 2.0
677
- U+02df uni02DF 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
678
- U+02e0 uni02E0 1.14
679
- U+02e1 uni02E1 1.14
680
- U+02e2 uni02E2 1.14
681
- U+02e3 uni02E3 1.14
682
- U+02e4 uni02E4 1.14
683
- U+02e5 uni02E5 2.0
684
- U+02e6 uni02E6 2.0
685
- U+02e7 uni02E7 2.0
686
- U+02e8 uni02E8 2.0
687
- U+02e9 uni02E9 2.0
688
- U+02ec uni02EC 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
689
- U+02ed uni02ED 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
690
- U+02ee uni02EE 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.28 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique)
691
- U+02ef uni02EF 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
692
- U+02f0 uni02F0 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
693
- U+02f3 uni02F3 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.14 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
694
- U+02f7 uni02F7 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
695
- U+0300 gravecomb 1.15
696
- U+0301 acutecomb 1.15
697
- U+0302 uni0302 1.15
698
- U+0303 tildecomb 1.15
699
- U+0304 uni0304 1.15
700
- U+0305 uni0305 2.0
701
- U+0306 uni0306 1.15
702
- U+0307 uni0307 1.15
703
- U+0308 uni0308 1.15
704
- U+0309 hookabovecomb 2.1
705
- U+030a uni030A 1.15
706
- U+030b uni030B 1.15
707
- U+030c uni030C 1.15
708
- U+030d uni030D 2.0
709
- U+030e uni030E 2.0
710
- U+030f uni030F 2.0
711
- U+0310 uni0310 2.0
712
- U+0311 uni0311 2.0
713
- U+0312 uni0312 1.11
714
- U+0313 uni0313 2.1
715
- U+0314 uni0314 2.1
716
- U+0315 uni0315 2.0
717
- U+0316 uni0316 2.0
718
- U+0317 uni0317 2.0
719
- U+0318 uni0318 2.0
720
- U+0319 uni0319 2.0
721
- U+031a uni031A 2.1
722
- U+031b uni031B 2.1
723
- U+031c uni031C 2.0
724
- U+031d uni031D 2.0
725
- U+031e uni031E 2.0
726
- U+031f uni031F 2.0
727
- U+0320 uni0320 2.0
728
- U+0321 uni0321 1.15
729
- U+0322 uni0322 1.15
730
- U+0323 dotbelowcomb 2.1
731
- U+0324 uni0324 2.0
732
- U+0325 uni0325 2.0
733
- U+0326 uni0326 1.5
734
- U+0327 uni0327 2.1
735
- U+0328 uni0328 2.1
736
- U+0329 uni0329 2.0
737
- U+032a uni032A 2.0
738
- U+032b uni032B 2.1
739
- U+032c uni032C 2.0
740
- U+032d uni032D 2.0
741
- U+032e uni032E 2.0
742
- U+032f uni032F 2.0
743
- U+0330 uni0330 2.0
744
- U+0331 uni0331 2.0
745
- U+0332 uni0332 2.0
746
- U+0333 uni0333 2.1
747
- U+0334 uni0334 2.3
748
- U+0335 uni0335 2.3
749
- U+0336 uni0336 2.3
750
- U+0337 uni0337 2.3
751
- U+0338 uni0338 2.3
752
- U+0339 uni0339 2.0
753
- U+033a uni033A 2.0
754
- U+033b uni033B 2.0
755
- U+033c uni033C 2.1
756
- U+033d uni033D 2.0
757
- U+033e uni033E 2.1
758
- U+033f uni033F 2.1
759
- U+0340 uni0340 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
760
- U+0341 uni0341 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
761
- U+0342 uni0342 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
762
- U+0343 uni0343 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.13 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
763
- U+0344 uni0344 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
764
- U+0345 uni0345 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
765
- U+0346 uni0346 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
766
- U+0347 uni0347 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
767
- U+0348 uni0348 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
768
- U+0349 uni0349 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
769
- U+034a uni034A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
770
- U+034b uni034B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
771
- U+034c uni034C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
772
- U+034d uni034D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
773
- U+034e uni034E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
774
- U+034f uni034F 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
775
- U+0351 uni0351 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
776
- U+0352 uni0352 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique) 2.28 (Sans Condensed Oblique, Sans Oblique)
777
- U+0353 uni0353 2.5 (Sans, Sans Bold, Sans Condensed, Sans Condensed Bold) 2.28 (Sans Bold Oblique, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
778
- U+0357 uni0357 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
779
- U+0358 uni0358 2.3
780
- U+035a uni035A 2.28 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
781
- U+035c uni035C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique)
782
- U+035d uni035D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique)
783
- U+035e uni035E 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
784
- U+035f uni035F 2.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
785
- U+0360 uni0360 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
786
- U+0361 uni0361 2.0
787
- U+0362 uni0362 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
788
- U+0370 uni0370 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic)
789
- U+0371 uni0371 2.26 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic)
790
- U+0372 uni0372 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
791
- U+0373 uni0373 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
792
- U+0374 uni0374 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
793
- U+0375 uni0375 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
794
- U+0376 uni0376 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
795
- U+0377 uni0377 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
796
- U+037a uni037A 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
797
- U+037b uni037B 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic)
798
- U+037c uni037C 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans ExtraLight, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic)
799
- U+037d uni037D 2.10 (Sans, Sans Bold, Sans Bold Oblique, Sans ExtraLight, Sans Oblique) 2.11 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic)
800
- U+037e uni037E 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
801
- U+0384 tonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
802
- U+0385 dieresistonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
803
- U+0386 Alphatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
804
- U+0387 anoteleia 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
805
- U+0388 Epsilontonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
806
- U+0389 Etatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
807
- U+038a Iotatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
808
- U+038c Omicrontonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
809
- U+038e Upsilontonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
810
- U+038f Omegatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
811
- U+0390 iotadieresistonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
812
- U+0391 Alpha 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
813
- U+0392 Beta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
814
- U+0393 Gamma 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
815
- U+0394 uni0394 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
816
- U+0395 Epsilon 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
817
- U+0396 Zeta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
818
- U+0397 Eta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
819
- U+0398 Theta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
820
- U+0399 Iota 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
821
- U+039a Kappa 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
822
- U+039b Lambda 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
823
- U+039c Mu 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
824
- U+039d Nu 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
825
- U+039e Xi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
826
- U+039f Omicron 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
827
- U+03a0 Pi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
828
- U+03a1 Rho 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
829
- U+03a3 Sigma 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
830
- U+03a4 Tau 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
831
- U+03a5 Upsilon 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
832
- U+03a6 Phi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
833
- U+03a7 Chi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
834
- U+03a8 Psi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
835
- U+03a9 Omega original
836
- U+03aa Iotadieresis 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
837
- U+03ab Upsilondieresis 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.1 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
838
- U+03ac alphatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
839
- U+03ad epsilontonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
840
- U+03ae etatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
841
- U+03af iotatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
842
- U+03b0 upsilondieresistonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
843
- U+03b1 alpha 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
844
- U+03b2 beta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
845
- U+03b3 gamma 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
846
- U+03b4 delta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
847
- U+03b5 epsilon 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
848
- U+03b6 zeta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
849
- U+03b7 eta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
850
- U+03b8 theta 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
851
- U+03b9 iota 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
852
- U+03ba kappa 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
853
- U+03bb lambda 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
854
- U+03bc uni03BC 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
855
- U+03bd nu 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
856
- U+03be xi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
857
- U+03bf omicron 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
858
- U+03c0 pi original
859
- U+03c1 rho 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
860
- U+03c2 sigma1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
861
- U+03c3 sigma 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
862
- U+03c4 tau 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
863
- U+03c5 upsilon 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
864
- U+03c6 phi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
865
- U+03c7 chi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
866
- U+03c8 psi 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
867
- U+03c9 omega 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
868
- U+03ca iotadieresis 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
869
- U+03cb upsilondieresis 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
870
- U+03cc omicrontonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
871
- U+03cd upsilontonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
872
- U+03ce omegatonos 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 1.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.2 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
873
- U+03cf uni03CF 2.27 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans ExtraLight, Sans Oblique) 2.33 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
874
- U+03d0 uni03D0 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
875
- U+03d1 theta1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
876
- U+03d2 Upsilon1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
877
- U+03d3 uni03D3 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
878
- U+03d4 uni03D4 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
879
- U+03d5 phi1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.18 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
880
- U+03d6 omega1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight)
881
- U+03d7 uni03D7 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
882
- U+03d8 uni03D8 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight)
883
- U+03d9 uni03D9 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight)
884
- U+03da uni03DA 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
885
- U+03db uni03DB 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
886
- U+03dc uni03DC 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
887
- U+03dd uni03DD 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
888
- U+03de uni03DE 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
889
- U+03df uni03DF 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
890
- U+03e0 uni03E0 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
891
- U+03e1 uni03E1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
892
- U+03e2 uni03E2 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
893
- U+03e3 uni03E3 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
894
- U+03e4 uni03E4 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
895
- U+03e5 uni03E5 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
896
- U+03e6 uni03E6 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
897
- U+03e7 uni03E7 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
898
- U+03e8 uni03E8 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
899
- U+03e9 uni03E9 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
900
- U+03ea uni03EA 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
901
- U+03eb uni03EB 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
902
- U+03ec uni03EC 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
903
- U+03ed uni03ED 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
904
- U+03ee uni03EE 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
905
- U+03ef uni03EF 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
906
- U+03f0 uni03F0 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
907
- U+03f1 uni03F1 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight)
908
- U+03f2 uni03F2 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
909
- U+03f3 uni03F3 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
910
- U+03f4 uni03F4 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
911
- U+03f5 uni03F5 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
912
- U+03f6 uni03F6 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
913
- U+03f7 uni03F7 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
914
- U+03f8 uni03F8 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
915
- U+03f9 uni03F9 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
916
- U+03fa uni03FA 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
917
- U+03fb uni03FB 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
918
- U+03fc uni03FC 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight)
919
- U+03fd uni03FD 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
920
- U+03fe uni03FE 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
921
- U+03ff uni03FF 1.14 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.0 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
922
- U+0400 uni0400 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
923
- U+0401 uni0401 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
924
- U+0402 uni0402 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
925
- U+0403 uni0403 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
926
- U+0404 uni0404 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
927
- U+0405 uni0405 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
928
- U+0406 uni0406 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
929
- U+0407 uni0407 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
930
- U+0408 uni0408 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
931
- U+0409 uni0409 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
932
- U+040a uni040A 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
933
- U+040b uni040B 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
934
- U+040c uni040C 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
935
- U+040d uni040D 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
936
- U+040e uni040E 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
937
- U+040f uni040F 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
938
- U+0410 uni0410 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
939
- U+0411 uni0411 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
940
- U+0412 uni0412 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
941
- U+0413 uni0413 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
942
- U+0414 uni0414 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
943
- U+0415 uni0415 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
944
- U+0416 uni0416 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
945
- U+0417 uni0417 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
946
- U+0418 uni0418 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
947
- U+0419 uni0419 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
948
- U+041a uni041A 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
949
- U+041b uni041B 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
950
- U+041c uni041C 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
951
- U+041d uni041D 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
952
- U+041e uni041E 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
953
- U+041f uni041F 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
954
- U+0420 uni0420 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
955
- U+0421 uni0421 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
956
- U+0422 uni0422 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
957
- U+0423 uni0423 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
958
- U+0424 uni0424 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
959
- U+0425 uni0425 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
960
- U+0426 uni0426 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
961
- U+0427 uni0427 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
962
- U+0428 uni0428 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
963
- U+0429 uni0429 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
964
- U+042a uni042A 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
965
- U+042b uni042B 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
966
- U+042c uni042C 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
967
- U+042d uni042D 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
968
- U+042e uni042E 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
969
- U+042f uni042F 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
970
- U+0430 uni0430 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
971
- U+0431 uni0431 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
972
- U+0432 uni0432 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
973
- U+0433 uni0433 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
974
- U+0434 uni0434 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
975
- U+0435 uni0435 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
976
- U+0436 uni0436 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
977
- U+0437 uni0437 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
978
- U+0438 uni0438 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
979
- U+0439 uni0439 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
980
- U+043a uni043A 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
981
- U+043b uni043B 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
982
- U+043c uni043C 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
983
- U+043d uni043D 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
984
- U+043e uni043E 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
985
- U+043f uni043F 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
986
- U+0440 uni0440 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
987
- U+0441 uni0441 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
988
- U+0442 uni0442 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
989
- U+0443 uni0443 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
990
- U+0444 uni0444 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
991
- U+0445 uni0445 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
992
- U+0446 uni0446 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
993
- U+0447 uni0447 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
994
- U+0448 uni0448 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
995
- U+0449 uni0449 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
996
- U+044a uni044A 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
997
- U+044b uni044B 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
998
- U+044c uni044C 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
999
- U+044d uni044D 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1000
- U+044e uni044E 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1001
- U+044f uni044F 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1002
- U+0450 uni0450 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1003
- U+0451 uni0451 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1004
- U+0452 uni0452 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1005
- U+0453 uni0453 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1006
- U+0454 uni0454 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1007
- U+0455 uni0455 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1008
- U+0456 uni0456 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1009
- U+0457 uni0457 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1010
- U+0458 uni0458 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1011
- U+0459 uni0459 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1012
- U+045a uni045A 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1013
- U+045b uni045B 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1014
- U+045c uni045C 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1015
- U+045d uni045D 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1016
- U+045e uni045E 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1017
- U+045f uni045F 1.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Oblique) 1.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold) 1.6 (Serif Bold Italic, Serif Italic) 1.7 (Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1018
- U+0460 uni0460 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1019
- U+0461 uni0461 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight)
1020
- U+0462 uni0462 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.7 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.20 (Sans ExtraLight) 2.23 (Serif Italic Condensed) 2.30 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique)
1021
- U+0463 uni0463 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.20 (Sans ExtraLight) 2.23 (Serif Italic Condensed) 2.30 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique)
1022
- U+0464 uni0464 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1023
- U+0465 uni0465 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.5 (Sans ExtraLight) 2.18 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1024
- U+0466 uni0466 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1025
- U+0467 uni0467 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1026
- U+0468 uni0468 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1027
- U+0469 uni0469 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1028
- U+046a uni046A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.21 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1029
- U+046b uni046B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.21 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1030
- U+046c uni046C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
1031
- U+046d uni046D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
1032
- U+046e uni046E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1033
- U+046f uni046F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1034
- U+0470 uni0470 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic)
1035
- U+0471 uni0471 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.10 (Sans ExtraLight) 2.27 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic)
1036
- U+0472 uni0472 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique)
1037
- U+0473 uni0473 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique)
1038
- U+0474 uni0474 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.12 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1039
- U+0475 uni0475 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.12 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1040
- U+0476 uni0476 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
1041
- U+0477 uni0477 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.34 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic)
1042
- U+0478 uni0478 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1043
- U+0479 uni0479 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1044
- U+047a uni047A 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1045
- U+047b uni047B 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1046
- U+047c uni047C 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1047
- U+047d uni047D 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1048
- U+047e uni047E 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1049
- U+047f uni047F 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1050
- U+0480 uni0480 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1051
- U+0481 uni0481 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1052
- U+0482 uni0482 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1053
- U+0483 uni0483 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1054
- U+0484 uni0484 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1055
- U+0485 uni0485 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1056
- U+0486 uni0486 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1057
- U+0487 uni0487 2.9 (Sans, Sans Condensed) 2.27 (Sans Bold, Sans Bold Oblique, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1058
- U+0488 uni0488 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1059
- U+0489 uni0489 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1060
- U+048a uni048A 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1061
- U+048b uni048B 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1062
- U+048c uni048C 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1063
- U+048d uni048D 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1064
- U+048e uni048E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1065
- U+048f uni048F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1066
- U+0490 uni0490 1.15
1067
- U+0491 uni0491 1.15
1068
- U+0492 uni0492 1.14
1069
- U+0493 uni0493 1.14
1070
- U+0494 uni0494 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
1071
- U+0495 uni0495 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
1072
- U+0496 uni0496 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique)
1073
- U+0497 uni0497 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.15 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique)
1074
- U+0498 uni0498 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1075
- U+0499 uni0499 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1076
- U+049a uni049A 1.14
1077
- U+049b uni049B 1.14
1078
- U+049c uni049C 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1079
- U+049d uni049D 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1080
- U+049e uni049E 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1081
- U+049f uni049F 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1082
- U+04a0 uni04A0 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight)
1083
- U+04a1 uni04A1 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight)
1084
- U+04a2 uni04A2 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1085
- U+04a3 uni04A3 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1086
- U+04a4 uni04A4 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed) 2.31 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique)
1087
- U+04a5 uni04A5 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed) 2.31 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique)
1088
- U+04a6 uni04A6 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1089
- U+04a7 uni04A7 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1090
- U+04a8 uni04A8 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1091
- U+04a9 uni04A9 2.5 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1092
- U+04aa uni04AA 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1093
- U+04ab uni04AB 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1094
- U+04ac uni04AC 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1095
- U+04ad uni04AD 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1096
- U+04ae uni04AE 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1097
- U+04af uni04AF 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.5 (Sans ExtraLight, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1098
- U+04b0 uni04B0 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic)
1099
- U+04b1 uni04B1 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.26 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Italic, Serif Italic Condensed) 2.31 (Serif Condensed Italic)
1100
- U+04b2 uni04B2 1.14
1101
- U+04b3 uni04B3 1.14
1102
- U+04b4 uni04B4 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1103
- U+04b5 uni04B5 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.10 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1104
- U+04b6 uni04B6 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1105
- U+04b7 uni04B7 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1106
- U+04b8 uni04B8 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1107
- U+04b9 uni04B9 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1108
- U+04ba uni04BA 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1109
- U+04bb uni04BB 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1110
- U+04bc uni04BC 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1111
- U+04bd uni04BD 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1112
- U+04be uni04BE 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1113
- U+04bf uni04BF 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1114
- U+04c0 uni04C0 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1115
- U+04c1 uni04C1 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1116
- U+04c2 uni04C2 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1117
- U+04c3 uni04C3 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
1118
- U+04c4 uni04C4 2.4 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed)
1119
- U+04c5 uni04C5 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1120
- U+04c6 uni04C6 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1121
- U+04c7 uni04C7 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight)
1122
- U+04c8 uni04C8 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.5 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.23 (Serif Italic Condensed) 2.26 (Sans ExtraLight)
1123
- U+04c9 uni04C9 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1124
- U+04ca uni04CA 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1125
- U+04cb uni04CB 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1126
- U+04cc uni04CC 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1127
- U+04cd uni04CD 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1128
- U+04ce uni04CE 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique)
1129
- U+04cf uni04CF 2.9 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1130
- U+04d0 uni04D0 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1131
- U+04d1 uni04D1 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1132
- U+04d2 uni04D2 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1133
- U+04d3 uni04D3 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1134
- U+04d4 uni04D4 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1135
- U+04d5 uni04D5 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1136
- U+04d6 uni04D6 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1137
- U+04d7 uni04D7 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.3 (Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique) 2.4 (Sans ExtraLight) 2.23 (Serif Italic Condensed)
1138
- U+04d8 uni04D8 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1139
- U+04d9 uni04D9 2.2 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1140
- U+04da uni04DA 2.3 (Sans, Sans Bold, Sans Bold Oblique, Sans Condensed, Sans Condensed Bold, Sans Condensed Bold Oblique, Sans Condensed Oblique, Sans Oblique) 2.4 (Sans ExtraLight, Sans Mono, Sans Mono Bold, Sans Mono Bold Oblique, Sans Mono Oblique, Serif, Serif Bold, Serif Bold Italic, Serif Condensed, Serif Condensed Bold, Serif Condensed Bold Italic, Serif Condensed Italic, Serif Italic) 2.23 (Serif Italic Condensed)
1141
- U+04db uni04DB 2.3 (S