gcc/riscv64-linux-musl-x86_64/sysroot: add openssl openssh

This commit is contained in:
Lu Hui
2024-02-26 12:00:32 +08:00
parent 5a7d7d7c0f
commit b8b70853c4
7386 changed files with 459653 additions and 1230 deletions

View File

@@ -0,0 +1,455 @@
# $OpenBSD: moduli,v 1.35 2023/10/25 05:38:08 dtucker Exp $
# Time Type Tests Tries Size Generator Modulus
20231002030805 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EB8660D47
20231002030808 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EB87B625B
20231002030813 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EB899E127
20231002030815 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EB8A5B277
20231002030836 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EB93E67BF
20231002030904 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBA18CD33
20231002030905 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBA1F43E3
20231002030909 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBA35A643
20231002030914 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBA5AD7D7
20231002030917 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBA688543
20231002030922 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBA8BC207
20231002030930 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBAC6C757
20231002030932 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBACF1123
20231002030937 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBAEED413
20231002030945 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBB278463
20231002030948 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBB360C03
20231002030953 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBB5351EB
20231002030957 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBB718EB7
20231002031014 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBBF2439F
20231002031016 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBBFCAB93
20231002031017 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBBFF4D43
20231002031018 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBC02091B
20231002031024 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBC293BBB
20231002031030 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBC539E1F
20231002031041 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBC9F21FB
20231002031046 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBCC001EB
20231002031055 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBD054ECB
20231002031101 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBD2BEB8F
20231002031105 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBD4264E7
20231002031111 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBD725953
20231002031137 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBE30F30F
20231002031141 2 6 100 2047 2 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBE4B5583
20231002031201 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBEE6277F
20231002031226 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBFA54AFF
20231002031228 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EBFAF829F
20231002031240 2 6 100 2047 5 C9221A14AD5A6D21D700B002E8DAD042C817FAAAB8D0456A14E7A99010D8C877B4838CDCFA265C3E3675B0DA35547737F9A6913F6CF3F43EC7EEC9336B620D3B4203847DDCB679BD72B32F6D2E8949E23B86EB2BA4A05C622A33C8050F0CC6868B2A0D6C813FDAE12CF6D1288B689F454C605DC5443B75B887460A05B4D0674982D714E02D579BAA26A1B044193755164E1DDB9E06281D7D59BE4289D4F0E5255896903A5164903B1B27BD10B7F2E8DAFE1257DBE4F0B7AF918229C71803CB48226B4A4B7269D1482E67F8AF49AA7B866264F5659F4069AC49ADDB799707C3BB50A3CB15109EBEAAA522FDDBE7A04CC957D507952B1AB7C8433CCE9EC0092F8F
20231002031252 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BCF330043
20231002031302 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BCF7CB2A7
20231002031315 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BCFD54D3B
20231002031324 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD019867B
20231002031330 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD048E5CB
20231002031333 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD058783B
20231002031336 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD06951E7
20231002031345 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD0B15DDB
20231002031352 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD0DF392F
20231002031353 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD0E1DA4F
20231002031358 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD1024ECF
20231002031422 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD1AD9CCF
20231002031443 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD246DEB7
20231002031446 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD25B82D7
20231002031501 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD2BDB3B3
20231002031503 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD2CA2913
20231002031507 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD2DDA103
20231002031510 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD2EE864F
20231002031512 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD2FD7593
20231002031524 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD34B987F
20231002031529 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD36CFB43
20231002031554 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD42296D3
20231002031557 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD4325F13
20231002031558 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD435523B
20231002031559 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD4378F23
20231002031606 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD46B0D8F
20231002031609 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD47838DB
20231002031614 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD49B4D97
20231002031616 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD4A79F1B
20231002031627 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD4F13DE7
20231002031640 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD54C80A3
20231002031647 2 6 100 2047 2 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD57CEE9B
20231002031657 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD5C336DF
20231002031722 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD67708D7
20231002031726 2 6 100 2047 5 C6D9FD71BDE795C2EE4F7D579076A77F9B3890B702B6DFB925953742C053CCFB301FCA857CD81F06B3CF899EBE78D6D73BBAB02268E886B2A87D92B4F633852675AC105C0E82CE802614E36A7F390E18D4F0F78682E9695A949E8C127B82164EF1FC6F5859D66EDACDD23B9FE330B26B6D468A0A50E4C14F70F66F970895A3EE007AA67635FADEA461D164CE6D79F4DFC13EAFBE05D68275D8383AB0A4D6A658D7A1AE0202787F53F0F8D330A1D1E8BAA0B6FD51C5D694BA3790B2A80E2C7B070CA5BCD04637244CA32D64B3F07268E57F506826A8DFA31A9554168C0A9DB5FEBFBF8F9F69F654037386E0E5E256F29F68A2591707D9039231137F3BD691BEF7
20231002032547 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12D8CBB46B
20231002032805 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12DA7EE34B
20231002032822 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12DAAEC6FB
20231002032842 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12DAEA6C23
20231002032914 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12DB4D999B
20231002033000 2 6 100 3071 5 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12DBDC876F
20231002033013 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12DBFF1573
20231002033053 2 6 100 3071 5 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12DC7C299F
20231002033112 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12DCB88C93
20231002033119 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12DCC509A3
20231002033850 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12DCD76FEB
20231002034205 2 6 100 3071 5 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12DF47D2AF
20231002034230 2 6 100 3071 5 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12DF8EE537
20231002034248 2 6 100 3071 5 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12DFC506C7
20231002034330 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E0404E13
20231002034333 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E0446EA3
20231002034515 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E1834B9B
20231002034639 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E290DF83
20231002034740 2 6 100 3071 5 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E34F7147
20231002034840 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E40DCBEB
20231002035011 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E532191B
20231002035040 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E58DBAF3
20231002035054 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E5B2B7B3
20231002035152 2 6 100 3071 5 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E664D9B7
20231002035246 2 6 100 3071 5 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E7118207
20231002035321 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E77B3B6B
20231002035417 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E82BC0B3
20231002035425 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E840D433
20231002035503 2 6 100 3071 5 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E8B63EEF
20231002035546 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12E9486AEB
20231002035730 2 6 100 3071 2 D435B9DA29C6441FE8C9693F4276E0DF5FC91028EBCB2FE2DC0EC03A9F7BF53BB1B447DC71B517B5CB363A71FE199CF790CC42C21692526421D200C39C2B41EA8E9DBF0FE4366B1B372C69B33D6381A38E1213F317D0D792C826510E72F70F2B198DDB768D19FB28E5FC20D678044D67BC6DAF6B7496AE902BB7C07BE6D2671A284A226179B73C43DA4902313D03A601BE81267B9A7D0064E386FC1B1DD31D7146BB837B5D0CED5CC5D834BC0E25F4C2EF181A881B4F5B96C34324758D5FEAF5659098F445871B6593AD4F6E2BC5CC01BF7DA5827BFEED605C26B0C50B6B308EE376528A933E01DA445D5902DCF4C937B2D575EDD33ECE07EA6738167858430515AF1B160E301ED1C4096871F2248CD83019FA381449723D2F220D94F4CE3C2E6A789D6748B0BDADE26ED2B445AE04B421342393804D7F0EBF6A53AE289FA16A0366F419EF5BA2690690836055833140A8EA541F6329E12C6C094667CE2E744DE08B6ADB36E944EE9E8721E0D7E6D6953B9C0AFB033EC9A1E229CB12EA982A83
20231002040037 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B030938951705C3
20231002040109 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B030938957A0E7B
20231002040120 2 6 100 3071 5 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B0309389599ED67
20231002040253 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B03093896C6D78B
20231002040333 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B03093897424DDB
20231002040358 2 6 100 3071 5 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B03093897902357
20231002040616 2 6 100 3071 5 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B0309389948105F
20231002040624 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B030938995C6133
20231002040627 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B030938995FC8B3
20231002040642 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B03093899896D03
20231002040758 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B0309389A758183
20231002040835 2 6 100 3071 5 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B0309389AE5E05F
20231002040911 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B0309389B52D353
20231002041010 2 6 100 3071 5 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B0309389C013C77
20231002041047 2 6 100 3071 5 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B0309389C71BDC7
20231002041152 2 6 100 3071 5 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B0309389D3D79CF
20231002041202 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B0309389D565883
20231002041216 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B0309389D7D082B
20231002041326 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B0309389E56387B
20231002041453 2 6 100 3071 5 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B0309389F70C107
20231002041513 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B0309389FAACA93
20231002041815 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B030938A1ECB753
20231002041833 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B030938A222270B
20231002041942 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B030938A2FDDF13
20231002041950 2 6 100 3071 5 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B030938A3105EB7
20231002041955 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B030938A31AC273
20231002042039 2 6 100 3071 5 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B030938A3A1B25F
20231002042113 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B030938A405A9EB
20231002042201 2 6 100 3071 2 CFA8C0FEA9FA30086B87B145CE1B10C850BED7B0E48D74F4104D54A0587078F777489F278BDD390E108E3535FA8DBE332D3C22F5EEEF08BF54017590B7182E3A2C0F955D437957004A29177CBD8549716E8159BD84160EF1369DC35DD34B286F9364DD5CEFB4D32DEAB497D2F80AE9C943DD623B7D064EF87EF53EC9E60512C8511B0F26C46E0A1BC9AA62B80675C3C17D28C13BDD8B40CC9C3647F4C72333CF2710F4C0319F26C2D030B77838012F58815DCC36E887ED5121B80819BFD12F127C43A839190115036D3F1075AF79D189A9F4E64DD0E811FBF4FF29D57665DE4D6FA07BF0724D829FF003079279299C2126105F084677DCB09911041CBE2B551FDAED06905986B219FC807A529BF392C8F73DFE1C57EC6E4AC3C14643813849A1F9EE1BC522C7C073817C980404116116E4A04945396190A640D2F7B1D255473470EA22A4D53D438656BDE67F95C83D00E1F184C956D7546F7D8954E6ABA6187B315BA05FF68D55CBA76E166D05D5932A3A6830CA2A2633B55B030938A4A09C1B
20231002043546 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F97BB7733
20231002043733 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F9861D57F
20231002043843 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F98C8A233
20231002044121 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F99BD3D4B
20231002044301 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F9A5765BB
20231002044414 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F9ABFFEB3
20231002044437 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F9ADDE5FF
20231002044444 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F9AE21BFB
20231002044502 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F9AF4897B
20231002044715 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F9BC8783F
20231002045021 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F9CF269E3
20231002045030 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F9CF82FF3
20231002045222 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F9DA5D437
20231002045350 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150F9E2AF5C3
20231002045917 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FA034D613
20231002050316 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FA1A8EC27
20231002050449 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FA231F75F
20231002050518 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FA2566FD7
20231002050704 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FA2F8012B
20231002051424 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FA5AB0EEF
20231002051430 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FA5AC9567
20231002051505 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FA5DBE54B
20231002051743 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FA6CA6C3B
20231002051905 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FA7475D7B
20231002052700 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FAA2FD977
20231002052843 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FAACE8103
20231002053332 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FAC9088BF
20231002053348 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FACA13883
20231002053427 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FACD80957
20231002053619 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FAD8747C3
20231002053638 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FADA116CB
20231002054016 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FAEF247E7
20231002054332 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FB01C491B
20231002055042 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FB2C6574B
20231002055303 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FB3A696EB
20231002055356 2 6 100 4095 2 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FB3F0234B
20231002055921 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FB5E7DD1F
20231002060022 2 6 100 4095 5 C333C378E10FC8C3708C149CF7D706B80DAAA93FE362B5EB5E8AF660111D8D65BF44AC08C0393E17B84456EA4D7397E1AA57E6273381A401F425E96DD3B920B49FF097DAA659A2AC0C33F40EA13C8390BEE8BD1C3C9351076C4E114B117148246665CB5F314AF2054C69C6C9E13BB5CF6471FCE69C62DCC98D69ECDC9E9A92AAC2DF217F08CC4ED2FD87B513AA2315B1B9D23ACFEBFA8F333DABCA10A1F0A4ABC0C4A67B238D8E6D0AB68FE704A026F6EF933EE8D65B9BC314E3C3DD7B7FA6D2F964AB1B515A8A59CB5494DE98BDA70F6EC165BB541B00A1DF8A1B36BA4DA1503CD030C446D0443CB27AFC732C8136E53B69CFA21213C23B98DE5F5B513339427885AEE13B4578F8D53E03DD61AAF34FE8EB0979E29289A3661EED1954AC61CD61118AE5E4F9957198521F730D252A2B5FA51B3ECD0CBD48B1C4A2ACD8BB8131449E896C11E23F41C96BF044AADCC0DB1EEB57E3CFBE9042B06C772AB665A8FA630A2D0217E536E4538F2AE51E44161CF1FD2FA42D26C049C406AEE8D9F1B5BD01A5161E47906F3733F2EAE03F38697DDA9241C1722E5A73B229B0A270B0161208F7A1E4BE65E00B7713E38BFE7D806206D87B55D8E81F2F35F8871611DE73A47BFCA3EE2FE77EC71E20A262A3C02220A026D1E8819608D4EAE37ECFA36D9E9126033C64C4DFE951E6807E14F5B3F870EA3FA19EA754C87435A8150FB6418067
20231002060252 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C9744E5413
20231002060407 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C974C3A0E7
20231002060612 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C9758246AF
20231002060651 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C975B74527
20231002061114 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C9774C8B23
20231002061217 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C977A83D87
20231002061542 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C978E6F5CB
20231002061844 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C97A0144F7
20231002061946 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C97A6011B3
20231002062202 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C97B334B7B
20231002062312 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C97B9ED387
20231002062659 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C97D0167CB
20231002062852 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C97DB1C8BF
20231002063237 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C97F124ADB
20231002063513 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C98005B663
20231002063540 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C9802AD0C3
20231002063556 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C9803CF883
20231002063708 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C980A85467
20231002063741 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C980D5E6E3
20231002064635 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C984192C6F
20231002064848 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C984DE3F33
20231002065019 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C98566002F
20231002065353 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C986B1C91F
20231002065445 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C986FBEF63
20231002065538 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C9874B543F
20231002065545 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C9874E6C33
20231002065701 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C987BBE79B
20231002065747 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C987FA3B4B
20231002065946 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C988B42243
20231002070008 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C988CE62DF
20231002070120 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C98938A307
20231002070247 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C989BCF6BF
20231002070501 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C98A8905A7
20231002070514 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C98A959DB7
20231002070804 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C98B9DB8B7
20231002070841 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C98BD43657
20231002071314 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C98D7FB3C3
20231002071325 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C98D88E8EB
20231002071745 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C98F149D2B
20231002072004 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C98FEA9D3F
20231002072030 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C9901007BB
20231002072226 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C990C0B8B3
20231002072853 2 6 100 4095 2 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C993192063
20231002072941 2 6 100 4095 5 E10CECA5887CEBC483A29080A2665F35F0CA7AD441F1451C2549272D35936D1324CA62500733CA6F11AEC477CAEAA7FBB60520F6A84C052238F72F22488739C6D6A14A96A7CEBBB293123CBA3845C0EE6B4D6B5305B2FD642B339BF418BC410A3FC054C07017656805C573C065EF62661B2B638AB5B65EF9C6F90A60FA2DCC60DF4004BF0E9F8B01FD7CD71D73AFE50CCC276652E2198FF628842A84BF4BBF8B8DBCA7E609FEB204610F9D179D28FBE60F84D3E31DBCA604F14388E698B9613EFA6CD699B7AFBEEC7876691838FE7DC40803BAF56B6B96D9A975B1512B64ABECE3B1DA48E4EE3414B935B458482AD23938D4878EC3205C6570145C02753F81D2EFF8D466B09CAD48CFFD3296B963958584DE48060708B00436CDF38A23A2C6B87740CFEC4F83A706F04C0C5F21670AAC91DBB5A5AE739767BB27C60B981E7E14EF74B191FA1532BD002BBEC37FA81F9497AB3620C259A8BF7E9271BC275B2BDBE3E64485551EC9D8D2E0A35B6CF7337840A1591B7693ED5F1F2EEB16ADFE9946DB2FCDCF1A1DF8ACB4AA6E84E821269ED19AF829985AC9185ED3A320C62D0562DAC68F6C4E6A6D0924030D6721226A7985CC7086AA6B02ABF22BF80878A69415D1ED7E0FEEF5D97DC3598CF2528185137B2A3401F07BDE1B8E3883D6BDC6E9A9329D764E8861F40FA27BEDCB2B1B04908503C8A30BF19AA4564DB7C9935E137F
20231002081041 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B0333397
20231002082147 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B18E4283
20231002083104 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B2B4F773
20231002083134 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B2BD2843
20231002084350 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B44B71D3
20231002141344 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B0333397
20231002142442 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B18E4283
20231002143348 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B2B4F773
20231002143419 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B2BD2843
20231002144651 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B44B71D3
20231002150103 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B612B503
20231002150136 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B61C3BEB
20231002151801 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B82F193B
20231002152637 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76B9420B8F
20231002153456 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76BA45EDCF
20231002153746 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76BA97B48F
20231002160531 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76BE29EAC3
20231002162342 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76C078F093
20231002163511 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76C1E48843
20231002170308 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76C57F3C33
20231002170614 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76C5DBDF1B
20231002172548 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76C855E547
20231002172639 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76C86B2807
20231002175342 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76CBE853A3
20231002180217 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76CCFBD417
20231002184225 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76D20A9DF7
20231002185958 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76D43A135F
20231002192316 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76D72F8AEF
20231002192445 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76D7559777
20231002195410 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76DB15D467
20231002200603 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76DC94115F
20231002201042 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76DD1AA643
20231002201544 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76DDB77B67
20231002204234 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76E11C2123
20231002211226 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76E4DC58EB
20231002211356 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76E50579B3
20231002213652 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76E7E66133
20231002214032 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76E854A163
20231002215638 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76EA552477
20231002221259 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76EC52B343
20231002222832 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76EE45CBAB
20231002222905 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76EE4E0293
20231002224654 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76F081244B
20231002225640 2 6 100 6143 2 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76F1A84B23
20231002230658 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76F2F06967
20231002232045 2 6 100 6143 5 CFDC18EEBE159970EEDBE80A11E47B1A8BE485032522B106574399D90EC4F423A1328A4BDCFC7622AA2CC6E350C364FFBFE243DE26176C0CF4937AA4358BF4B1D83FC4A6ADD821604FBD9523C52C108BD658BC9DAAF471040A6ACA8BA818F84F784AC48F5EA6619C156F1B24246C2C35CF91C7560CB09CF96C53B2431B5292461048F66E36902B86D9352DF48E8B2D37FECB3B76A84A2BE0A419DC7D163926F15101D626A44F13C5AE5EFFD2992E49C6BC91A4AEFF174A980270F4CA8399D5B1AC018914F086C459BEDE80C02B798F580CCB22968C9C5EF85FD28D92D18AC6F39B8B0DA06B7116095C6EABC0B836B67DD741FF5D8E4561FB952DD1069018C9EC658DFF6CA7A0135B0822806A4BBFCA0F05A16756723066675D452014BFF4C40D80BD511C8CB04442A5FB4E50EAED4E9416D7332F7673E74D7A51E0AFE293881F6B8189B8A6A6092425FB7734B5D793523C3F2F2F6C6F40C8E00BA743261D8E0A4F5D2A3823C4362689C8F1249A8EDAB713A56DFCC95401F34844D51E5A43C5A2D973A01D9147323A551813F203F13C3FD16E21106332CF76CFF77AFE496A4230E1DC309F37A7FB7533301AD98B6B85D5F3D0FAF67E07538C58FDF91A610E12499B4D02FE5E94960AA8523232CDC302DD3BDBAE3633A887A4FBBCDCBEA355C54DF03F525FA519209FDF545E278592E787DB253EFCD80EE378A1575674DD389EBC3C80D1BEA7E42A0CA77EB84D278CE20F762B9838823B134311CBA91E1A3C0A71C4F59DDDB9F1465C406E1064DD1034F26EB3387F45A6C02787F73CB3D5244930EAF20096797ABCC2B02D32030C35FEA1DD34C7FD5ABC9282A6C7B8DEA0654728ABE170DA23A7CA27629B115C0D35120E29C278CA8F7B367F7D2D76745630D8ACC3FA1F8ACAE2E033B0D5944C33193AFDF44CC221099E5AE2C25C8796F7E1A71FE1D60936A2A4096D95B173E141CC0222ECEF1B41C96F3A30FFEDABAA1BC36642504E8B8AF30BDD54D12F70F3CD6A307727A55213C33AE4DF3BE726174FDFA1CC2BA74460E0C1F119374290191476F7116353A4E1AF9A48E33D1E8B76F4A69E2F
20231002234558 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A810F69E7
20231002234915 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A817337BB
20231002235010 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A81889047
20231002235237 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A81CC51AB
20231003001041 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A83FF7FCF
20231003001507 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A8487F873
20231003003839 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A877676D3
20231003004439 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A882FB0BB
20231003013638 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A8EC44FDB
20231003020602 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A92680F23
20231003022233 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A94729617
20231003022838 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A9533C427
20231003030014 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A99255993
20231003030947 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A9A55F43F
20231003033759 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49A9DDBBF27
20231003042143 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AA34E398F
20231003042540 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AA3C73223
20231003051219 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AA9B54CC3
20231003051253 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AA9BFC61B
20231003051513 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AAA026323
20231003052052 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AAAAEAB1F
20231003053941 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AAD067F87
20231003054545 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AADC1B5EF
20231003055211 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AAE8576D3
20231003060848 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AB094C2F7
20231003061146 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AB0EDC1DB
20231003061445 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AB14AF5EF
20231003062126 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AB2207DD3
20231003062948 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AB32671FF
20231003065951 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AB6F4703B
20231003071814 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AB9393AC3
20231003071838 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AB93E6CBF
20231003073040 2 6 100 6143 5 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49ABABC23A7
20231003081738 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AC09DE603
20231003082407 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AC1617963
20231003085747 2 6 100 6143 2 E66EC740BCD486B24BA43649320948C64050E6C92B464AFE6928BCA87FA1C070DD66DC0701751137EC1E54BF664BE2E2413FC0F8E50E750818F15D3653B10F52D3F70E8BC30AA5F98A9958A73CAAB3D6EA71004E3A45FF48D7941330A6E0737EA76EBC51FD1285D843F7690CBA7C2685E747DA987A4BAAF6D13D1581C900C05AAABE5AA9E2AB2FE4D5ED2E1C1EDEA3AB0BC6158D77EA2C77D3565AB3BB83639E1E2712AEBC580CE892108F1C5D392CE075E4BFC9F98A94B341333B65CCB6010EDCE294956ED236360320912525D079609779796E11F549A893B29FC6118699EDA544D0570B91985C952A9DBE05E7EFBD8859BD1B217D24C429287F78464619B843DFC537BB96829A6C98B7C48CB2A233C48F98C853DABF495FE81A796E24FB5AE643504CEB40BB45468578433E6F5545B7939CF834857B33FE32B39ECA28C8D1E4C1EC020BFFB68CC3CB8547B9F6BB867826288D13F37F613F273373CD8742E3F2822133CEEAD8ECF136EDB0EEB06C84AA5225A389B489B4693C0BC0F4FC5B0023A06809CC4A83E0B6C8B0E72915B742396FF3F422137F73A6D399AF4E32B577E79B0F624ECD040F04C10C25AB94379FAE65036069AAF84549533C6589BE6935FBFB0FC9AFFA325C0F9972D5D5B4F8B271281ABB54597CE4D6E52F9D19824E2813D86FF6FE2ADE81B401569BD36F0D3D33FD44661AC6A0371469D731D6B0D2541E8A03638420FA4AAD41DF127FAA90E2C7C8560593E6B3C6D5895F95B7336FCD91E34CE18EF912103FBA1CDE7BC5B1C4AA81CE0FFCE0386F1AAF3555A6E5832A22CE96C0CA9D5E47BED9984F1D4E1C53B60020FE25B5083AAE62ADADBCA1F37CE843B63B8F7190CF6DACBF6690E398C26C3FA2D90439DD73E7340775AE6A83A73447B624C299720DCA85FEB67C85061BEA7A296C4CCF7342AFCC1B284D6AFE6D25273F38B44F1938205927FA1E5163A8EE8411D68A5DA3DD0ADE75A60B14C842B954117CC4A55CAC0BE44A396DC24B4BBE558C208210A3621D4914ED87674301AAFA923D7E9897A6AFFCB32BA80AB214AE2B2DD13D50FBB73E1AA49AC5927A1B
20231016131900 2 6 100 7679 5 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA00EACECF
20231016132859 2 6 100 7679 5 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA019290D7
20231016142904 2 6 100 7679 5 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA059B4417
20231016152750 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA0999EB13
20231016155325 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA0B553BF3
20231016172849 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA11CB2E4B
20231016180042 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA13ECF3CB
20231016180126 2 6 100 7679 5 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA13F1687F
20231016180748 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA14552213
20231016195614 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA1BAD2973
20231016201150 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA1CBAEDBB
20231016224251 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA271BE9F3
20231016230521 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA28A3337B
20231016235753 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA2C38DA3B
20231017004035 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA2F2C3553
20231017011243 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA314D420B
20231017011549 2 6 100 7679 5 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA317A2D5F
20231017032411 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA3A4E69EB
20231017035035 2 6 100 7679 5 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA3C0F1B77
20231017040535 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA3D0B2F7B
20231017053244 2 6 100 7679 5 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA42FECF0F
20231017061754 2 6 100 7679 5 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA46082F6F
20231017062414 2 6 100 7679 5 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA46692FEF
20231017064457 2 6 100 7679 5 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA47CD78D7
20231017080259 2 6 100 7679 5 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA4D1F422F
20231017081616 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA4E000C6B
20231017090950 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA51A428FB
20231017100646 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA55892F1B
20231017101201 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA55DC859B
20231017114805 2 6 100 7679 5 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA5C5D2C7F
20231017130334 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA6177B58B
20231017144733 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA686F3603
20231017150532 2 6 100 7679 5 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA699ED29F
20231017155907 2 6 100 7679 2 EE7B7F77179CAE64DB89ACE5368617513DF050B0CBB10C2E59A189C487BA454C7576B7BEAA078CA60539C649C10086BC0B045CA609A4EC64C5DF5E4F2453B5D0691E16F17DEA71E80E00926E84D57A812BC2E23187228963F0E55C49F2676806A99BF0B482EEABAA0865954ADF181C0093376004938999A95404A56E869C3B4AD36B6F3B60846F236272DE29D8BFE6298857B7DFA5309E2724E60A87076195A480F402A0029A3D67839705EDA6F3963A995863A07A0E775236CFB6EA8658658CBD65F014FDAC4B4D504AFAB91E3E1C9CD4EA842404641153D33BA95F7D7F8285511878F6ADF344921256C07CF06112F1548542EB6BF0FF78AB8FFFA35D238216D52CA7D4FF5B43C62FEF5FF3BA7CEFBD7BC9EAB09292EE409868450E5B6A37BD52999774065131C7FAA305E81A93D086549946BB5EE3EAD0D319E724DC2646DD7F31E928BCF8FF816B9D0FB27DEB691834DC8B56FFCEEC8BC33095734363A01E493F17E6B7D692C10F951A5EE98DA6B428144C4031D089458807A8B3425E80E8D42E9D8F504B9BF9198FE13C371F2ED23C39BD6AF99C1C4D4FDC3E726B0227D8F195AFBB7B70FCB8789473CD7B46FDAE7B3FD63FF89116DB318CD3EE340371AB6F8C4CB88909DCC42B6B9D1AC5C917247E6C27DAD51D7AC998EFAE905C8D8B1381A3C2D8B7F37166AA24762E5C9C347F73AC8EC2DAFC40608221C664E85EE218D3A950B4DA358CCFB4E1B56471095E49A0BEB276A7F6CA7527EC2A80D106943E00B3977F393278C4A6AD01435C1AD72E019B4B2B43D2C9222D3C2A63D5EEA69B1442F4FBA285504F4218323C8C226246398C8059117CB36F96A312F6F8B4C442F2C8213BF4FDEED2C5D0342D9F82B492D74679F5DAFDB79BD57EEE2969471F320D3887EEF552D0548F467D24FA26CBC7FFE4684890DEC965A48689FBD713BDE3146E612B91CB10CD6AA0A3C222ADB01FFB74B4603116421BCA02BCD35992700FA954D4BEBBAF64C19E373715283ABC185C57653974A159F080939AC7BC3F385F406D9086B2B03A9B69CDBF725CC9CF8CF74A9F65753EEB48036D13413CBA8FDFC43FCF640EDB5654A44D7EE0585081B740A1481E877EA4E43C318645A61532E6E8668219AA37E2A467761D50A622599AF55D99C3FE763319F0307496F1E99664A4FEF3FC6860D68F80A07E8C259A1D2C85895D7B8E07368C052CB7C17FF2DBD6B0AD3824B2DF89C23805B42C21DA29B39FB25C6D94D8AF318AF790A59FB4B08E7430856CE11694B34156E7E4634D241D5EA5632E87F53EA0ED552C6F89C3D03C0A725BAFF8133DA9755C7499AF96A7709BB82A61F6FB42203B50B3AA6D3AFB8B
20231017181544 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E175059BF743
20231017190547 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17508FC9613
20231017192033 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17509F702C3
20231017200530 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1750CFB1AD7
20231017201043 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1750D4F4543
20231017203134 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1750EBB8757
20231017205507 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17510485E5B
20231017224217 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E175179CEF9B
20231017232528 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1751A835A53
20231017232941 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1751AC3F17B
20231018003956 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1751F836183
20231018005815 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17520BD845B
20231018011203 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17521AE2577
20231018012138 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1752253381F
20231018031440 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1752A0C708F
20231018031950 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1752A5914A7
20231018033845 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1752B977FCF
20231018040441 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1752D5365D7
20231018041121 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1752DC38AAB
20231018054013 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17533C80607
20231018054825 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1753451216B
20231018071952 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1753A752783
20231018083252 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1753F72808B
20231018090047 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17541479E9F
20231018093100 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E175434FCD7B
20231018100316 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E175457635C3
20231018101033 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17545EBDD63
20231018110847 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17549CE2733
20231018113805 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1754BBD7BE7
20231018122625 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1754EE7384F
20231018123413 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1754F632783
20231018125726 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17550E83927
20231018135301 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17554AA25B7
20231018140418 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17555636167
20231018141949 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E175565EE997
20231018142439 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17556A866DF
20231018144725 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17558217B9B
20231018160133 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1755D0F69FF
20231018172124 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E175626A63C3
20231018173327 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1756332AFAB
20231018174338 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17563DEEBA7
20231018182026 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1756663AE4B
20231018184456 2 6 100 7679 2 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E17568173BF3
20231018202029 2 6 100 7679 5 FEC5FA301DA99770B0001C6661792A17D47495458B6FC55BF33FB1CD1E8CD5675550AEDED89217D8945CA01F1F68EF0F543E6E3BEADF0053FC7D706FE59F390E7758CC227C1CC6AEB6AEE82BD92CAA8DB32CD80B57E3DED4C5D5F029FA776D439EF2E069271AE4A2ED1F05C94ED9216E07DB8E0488B3E422D9F3E91618BFDFEB004ACB899A99AB89107FC3888337778FBE3D597FBD40FA4F791C96E175A163D22CDA2D84D049198083CD68D731740D4437B79383B36A33DF6650A42D497B7D7796BB3FFE02FCB5B5CB890EBE4BE4DFFB2AAA0D4134ECE4BF31AB678B16EA621A1598827179BF77A0290D34902352BEB99F92B244A402E431C47414E96A9D6EECC402B6A1CDA088E34D22D25804F3FE4C3B382AEB0DC530C6BF9C70B042256B5BE7B30896B05C5B4CBD88512B0A8B3D13A3D6BDC14670031381EC66DA8AB6C5645A79B1081EC58A0882D8FB17E0C083720C9B119CF52A88833D5600E43CD5C48C524F1643F515B30474A64118EACC834A272351048A1727438913B8F369BBF3E7A1628B3D40E77DD980BA8A1CF545CE7EAEB5B17301AB9A80A19C64227B645291AAD618D2805FAF39AF48ED5035EF23ED7FB734D929C8D0028A46162FC17302C5DB50F5E696EE451CD4C0899DB3E907185FCA1C53EB60E0131D6A199B0517A300BF136FE3BC236C884171ED76F79ADEB64DF1A50A76F8B26C7AD72AC0E2C1104566DB81C50BA607BFB379BB8FB142355D6A3D0D034E5697665FA31403241B806ED8A427DC437EBAC54DDC408DA022C4C2F8BF4AD59DD43C7BC7A4C4E5BF24D812719FFDFB03B797B366B2DA35AA280893EA813A5BD9E1E91B280299BB7A02A3FFBCE1F52219D43B308C723D0B0F25B8CE12C110491B33713E5F2C5C7E946322B28500480DB234515B5DB5370788D9DCB6D460281E91EE343B5BEE12CD367B83EFAEB4964B3051CEB8CD2E54E7ABCF0E4AF3D18D9A6B5D58B09B58DC97287BFB058DDBA94BC376BAEE117C2AB9E6CF0B13553AE4F8B91A247FD24C0D70C090E16B152CDE92456A95E5BBE98F939BBD5083EAABA538A675C3DFBB25D001D2E5A3B3811E7C6E982A7C58C3399E05C0FDBD31F80A623E6C83356D3E65BE34C6DF5445D10C27551F4D5697B9FEDCFB3A0BE6F209754A7364DE364FCC11BBF70366A2C61864F65FF203DDAB2C693C82BD35AD6C0EB9D001DD4FA520F439BFBC9E15EB6E186A59CDA292D1D9512CC67B25471F5557659228C0E663586D7E09D0FF8E6B97102A020DA9673B5BCB92800F72E36505766FAE603C886BF950A3A1C08798B9E9555A3A4E39B6DD20B1B4336C09F99D7182DBE4D1DAE287653C63E1756E9EF4F7
20231018213032 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834379427FF
20231018232202 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE638343DD5A117
20231019004844 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834429F64F7
20231019010247 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE6383443605C17
20231019022342 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE6383447F1B393
20231019031710 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE638344AF828FF
20231019043555 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE638344F5C458F
20231019044032 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE638344F983EAB
20231019053824 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE6383452D8631F
20231019063745 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834562930F7
20231019081055 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE638345B642C07
20231019100522 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE6383461BD232F
20231019100852 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE6383461E6DF8B
20231019105326 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834645F1673
20231019111044 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE6383465527463
20231019111309 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834656D78B3
20231019115348 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE6383467A7C8F3
20231019131104 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE638346C0D8BDB
20231019142914 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE638347067646B
20231019173223 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE638347A9DF68F
20231019175446 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE638347BD81D27
20231019191611 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834806DF947
20231019193510 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE638348179CB5F
20231019211306 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE6383486F90F9F
20231019231750 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE638348DF30017
20231020001735 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834914CAE7B
20231020012141 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE6383494D94DBB
20231020014803 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834964F5923
20231020021214 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE6383497A3C3B7
20231020034933 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE638349D0D7D8B
20231020044258 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834A0069007
20231020045617 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834A0BEE89B
20231020064548 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834A6D2ACC3
20231020071102 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834A83942A7
20231020083119 2 6 100 8191 2 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834ACC3A13B
20231020092435 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834AFB5EA3F
20231020102437 2 6 100 8191 5 FD04CC30F7BF7D987760BE4FEA189E499B09DC2781A9AA9BB317A3C7D8BF99E3CDFAC9B6CCC12703EDC9EBF48F4917314723298E5F8A43920F2098EF0CCD7A09B7841411EF6F075575B375025F228A4DF56355DDFADE746FA4A9303924B871C442B3F341C809C37A498823B276982BD02A58268F5D7DA88859801A464C41CD725B23C0E52515657B9CC4B377DCE9CBBCDAD24D411745450CC9EA6DA349E5CDAE9D5870817286B4E4AD7D152EE3200CB9A4DF18321E1A8D36560DCE6BB1C2D398594A7A907723C1BB72E40473EEF91998649FCEE5DEA29353BBEDE80A22C0904355536471CAAEDC3A9F1D1B9AAA485AD6F562865483A90A699B96ABBEC4223AD2A4B398458D63278AEB887EB433DE5EEA6D6654DB597F6C557558191A05130FB3E113E50515DD07007754FF905E55AC92E3147EC319017759A7B84D81BDB5A0EF2B9BAB184BB5B52ECE2C0C15C33B9305A41811F6E661F7C0AE6ED1F101ABEDE4EDD3EFFB81AF98C666D1EE3532C3917349ED6FE12F2D9BB0BA0C81BC0F100B5E44D2C79FA8AFD161F37C913798DD6B85CBFED8ED1109AB19E505ED9BCF2F30F3DEFD9EEE2FF67B07F2D189F7C84B941A9F2C9E81E77E1F4A92B70EB630A7BE64C3FD2C0881E42DFF118E3FE627771A1FD7F65C6480156E88D3F80E7A58939A44023B25184E53F9702096E22FDBCE23C8995A8D058117EB8F1B92DB232D74308204C394FD2DEF237BE4FA0870267BFE7F3B0A279D51C80D434669DCE6153038D653F1A55BFAFA79D68F740DD35E827475DECC6F9B55A635DFDCEE9E48252D2B0312711A32995B2F9325A4B9D7406A1A50387FDD2CF9BC9763108C2E9660935B159371387BC23599C94D68FD4BC1AE88ADCB30FABD1E8C369B13E857EC001F7D2E1746DD4F208766BB321BD5CA996E27051B83A482140D58496A54C49D584397E618E8611012F0B8070B58393B658FD365A11E76A7991AAB691B8FCE882F67FD2C7456C96EC91AFD9C7821ECC0470097F135ACBCE8AE4880C78C3DFE968D0066731EAFA5C411A6E17E4BB1A2C54F26F3AA9E900676182E218766CED65B212F7893C32990BC3C034E53216D349A3BBA4A9E94E2AB6F6D023FD9E8DB61F3D6AF9C4010BEBB06B12332DBADBEFEE8C0209B8AEC80E87AD0B4FF48E499F0722674862FA974470700F0E51D9C78CEDEB51BF06A8642BAAC990B0A0B8C44B7BAA4634E4B90788C3C6633AA14B859B743C1986435933EA19D01DEFC36ECCBCC04325B1662D9873FA24BEC87560C3E059AA491E960A5977BA569FC780744D54020C3CF3C539A629A7C8475574EF4EEA4B7BA6EE1764D95369654953938E51CBB5FA442B8517FFFA77E42269EC4270D1B2148CBA1546E4E04CE3C0CC956D10D799F9D1CF5F111D06323E08BDD8FE1C1420ADD181D4D6165C0329E3EEC0F4BE63834B2F88B67
20231020120924 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E53BA038B
20231020135128 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E5963D87F
20231020141837 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E5ADDB3BF
20231020144225 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E5C23DA93
20231020150405 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E5D53167B
20231020155408 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E6012AFBF
20231020161645 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E6155F8BF
20231020201740 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E6EE62BF7
20231020212403 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E729EE083
20231020213051 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E72F5F79F
20231020222529 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E7604BE3F
20231021020659 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E826C9DAF
20231021024826 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E84B7FDA7
20231021060900 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E90033123
20231021070156 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E92F5819B
20231021074615 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E95655CC3
20231021075426 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E95D1FF3B
20231021080049 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E9624A203
20231021094905 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E9C2D4FFB
20231021101528 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E9DA4B553
20231021105156 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15E9FAA5047
20231021112242 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EA159B54F
20231021121606 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EA462327B
20231021123502 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EA566E22F
20231021140626 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EAA7D27A7
20231021144911 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EACD5272F
20231021161127 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EB1713BE3
20231021162002 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EB1DFAA87
20231021162540 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EB22A3C83
20231021174652 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EB6ADB0DB
20231021190654 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EBB224183
20231021192557 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EBC2D1F93
20231021193213 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EBC7ECAAB
20231021194107 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EBCF4C693
20231021195056 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EBD7953DB
20231021201746 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EBEF4D117
20231021203518 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EBFE78F6B
20231021222354 2 6 100 8191 5 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EC60AEBDF
20231021223151 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EC674EB1B
20231021225247 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EC79E5D1B
20231021231628 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15EC8ECAA63
20231022001025 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15ECBF5D973
20231022005100 2 6 100 8191 2 E01A60D3325645E3E0DD9D0BD00BEB9715262052AA5A04F3232BE563EFD025CFE05B0A86B07BCC4CB70A1D115E3DD0E1D5B5C394B491144DF417E29A1FBE336AECCA9E68BEACD5979103B7FD2923A58AB05E3195A5AFA717AE1F5F4B19C6616CCDA2FC597B3C92CB2EA57C10580C488638BF1261AA552DB9B4BDAFA45BBA4D7BF0A3A2B066F797F1B444AB990D9797A445D752647EE9ED870002A04DCA5DB1D65F3AA9620DCC4547A640BA30B27B09B48DC3BB06C9F714A9ECA54F09AD37BD57557E5EAD0B64C5CCCD2E2592A04E009BE169B079E3DED7161AB33474304BC70861BBCB2C05776EF82E2B32F0939E1C271187713632C6F624BD13C9C714FAFB99C4D5A36C1A7EF2DE6A18D5BC2FD2DAE7450B78494FC94ED842476B5DF567D47F066A1D168483B1A693A87E831B8DA20B48A05D13A688E30E7FDCB8AAE34A46FCC6A5642BCCF1D2FBC1804789E2D1D7098BA9AF2C94C889D58F949F6B97338879A45D26A3875D8C2098E41AD429F3B7AC9DA8B6C3D714CD477049487B778E553EBB1BAF2403FFDECCB38D691F3E31A7DB9729F1651E42972284802C5C14C76CACE52F1BAD053769C9ED3052A5370B9363F0A87273CE4ED2521F41320E0BD053CB2C79F79B708F72745E2B63D0894ACF06EDF0E612CAA81B38CFBBA421A61924C6794F0B321823C411330703F0291CDEB0FE71A3D3459413933E4C6D681A765848809F787EBA5E14EFF0A52FA57003589A7039776DA11F21B12F14424F694AB810D5C8271C8A108659B190A029666F77357AFD28DCE2BC93EC38104FA250E29610F477265622BDBEE96A933D503A7F820B3B4DB8929A43B3BD2167BC1DCE61708C1D599D7A584DA5A2DD6EAE2D5D6428E8A0912CF18D9FBA71ABDD0F975B43B50056315F76148739D3FAFEA4094EC3E25A3EDC9F0133E0C435C1070B2F7C073EC33D5B7DE096DCC490D82CE8B053F24009F73450C49369B91AD381581BEDB402909A2C95CE0AFFCC64A51C5B824666A26E1C40F2A2EC104DA1F481ACB967068E6A0E4A5CEC1A37730D7A93761C6BE3F745FC245FE16B841444DF177B2F779A8D22FE67EC92166BAA7ACC6ADB84565369D0B174686783775F79C5ABF65E726911833385457DC896E150D3440504D9F7FDC087698F69B82052FE4F2B577CDA4262A7B26FA7F38CD3471AC7E433CABD3470B309A96585FF7C3889B6537ACADE1E79F7B605387BDCCC5ED8445DB923B98D11F29EFCB413FF2E09E9E543263309C87E8C7FC22F13E9BDFF2F04CD36DD2FFF425EEE50C1460C676A804CED5319C0D68B60251494EBD97C73EE0E7803B4B8414D4503954F40147885299B8EE19ECA8F2CC2FA48230781F788D9FF1AA7A9D1F23E54357EDE3DEE548C80DBD0F0DA070ED149A34EE08FB3FB01895C5D2ED1E68A5508A5BFBB7D2DBFA4C46830D15ECE33665B

View File

@@ -0,0 +1,46 @@
# $OpenBSD: ssh_config,v 1.36 2023/08/02 23:04:38 djm Exp $
# This is the ssh client system-wide configuration file. See
# ssh_config(5) for more information. This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.
# Configuration data is parsed as follows:
# 1. command line options
# 2. user-specific file
# 3. system-wide file
# Any configuration value is only changed the first time it is set.
# Thus, host-specific definitions should be at the beginning of the
# configuration file, and defaults at the end.
# Site-wide defaults for some commonly used options. For a comprehensive
# list of available options, their meanings and defaults, please see the
# ssh_config(5) man page.
# Host *
# ForwardAgent no
# ForwardX11 no
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# BatchMode no
# CheckHostIP no
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
# Port 22
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
# MACs hmac-md5,hmac-sha1,umac-64@openssh.com
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
# VisualHostKey no
# ProxyCommand ssh -q -W %h:%p gateway.example.com
# RekeyLimit 1G 1h
# UserKnownHostsFile ~/.ssh/known_hosts.d/%k

View File

@@ -0,0 +1,116 @@
# $OpenBSD: sshd_config,v 1.104 2021/07/02 05:11:21 dtucker Exp $
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh_host_rsa_key
#HostKey /etc/ssh_host_ecdsa_key
#HostKey /etc/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
#AuthorizedPrincipalsFile none
#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody
# For this to work you will also need host keys in /etc/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
# Change to no to disable s/key passwords
#KbdInteractiveAuthentication yes
# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
# GSSAPI options
#GSSAPIAuthentication no
#GSSAPICleanupCredentials yes
# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the KbdInteractiveAuthentication and
# PasswordAuthentication. Depending on your PAM configuration,
# PAM authentication via KbdInteractiveAuthentication may bypass
# the setting of "PermitRootLogin prohibit-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and KbdInteractiveAuthentication to 'no'.
#UsePAM no
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#X11Forwarding no
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# no default banner path
#Banner none
# override default of no subsystems
Subsystem sftp /usr/libexec/sftp-server
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server

View File

@@ -0,0 +1,9 @@
# This file specifies the Certificate Transparency logs
# that are to be trusted.
# Google's list of logs can be found here:
# www.certificate-transparency.org/known-logs
# A Python program to convert the log list to OpenSSL's format can be
# found here:
# https://github.com/google/certificate-transparency/blob/master/python/utilities/log_list/print_log_list.py
# Use the "--openssl_output" flag.

View File

@@ -0,0 +1,9 @@
# This file specifies the Certificate Transparency logs
# that are to be trusted.
# Google's list of logs can be found here:
# www.certificate-transparency.org/known-logs
# A Python program to convert the log list to OpenSSL's format can be
# found here:
# https://github.com/google/certificate-transparency/blob/master/python/utilities/log_list/print_log_list.py
# Use the "--openssl_output" flag.

View File

@@ -0,0 +1,239 @@
#!/usr/bin/env perl
# Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html
#
# Wrapper around the ca to make it easier to use
#
# WARNING: do not edit!
# Generated by Makefile from apps/CA.pl.in
use strict;
use warnings;
my $verbose = 1;
my @OPENSSL_CMDS = ("req", "ca", "pkcs12", "x509", "verify");
my $openssl = $ENV{'OPENSSL'} // "openssl";
$ENV{'OPENSSL'} = $openssl;
my $OPENSSL_CONFIG = $ENV{"OPENSSL_CONFIG"} // "";
# Command invocations.
my $REQ = "$openssl req $OPENSSL_CONFIG";
my $CA = "$openssl ca $OPENSSL_CONFIG";
my $VERIFY = "$openssl verify";
my $X509 = "$openssl x509";
my $PKCS12 = "$openssl pkcs12";
# Default values for various configuration settings.
my $CATOP = "./demoCA";
my $CAKEY = "cakey.pem";
my $CAREQ = "careq.pem";
my $CACERT = "cacert.pem";
my $CACRL = "crl.pem";
my $DAYS = "-days 365";
my $CADAYS = "-days 1095"; # 3 years
my $EXTENSIONS = "-extensions v3_ca";
my $POLICY = "-policy policy_anything";
my $NEWKEY = "newkey.pem";
my $NEWREQ = "newreq.pem";
my $NEWCERT = "newcert.pem";
my $NEWP12 = "newcert.p12";
# Commandline parsing
my %EXTRA;
my $WHAT = shift @ARGV || "";
@ARGV = parse_extra(@ARGV);
my $RET = 0;
# Split out "-extra-CMD value", and return new |@ARGV|. Fill in
# |EXTRA{CMD}| with list of values.
sub parse_extra
{
foreach ( @OPENSSL_CMDS ) {
$EXTRA{$_} = '';
}
my @result;
while ( scalar(@_) > 0 ) {
my $arg = shift;
if ( $arg !~ m/-extra-([a-z0-9]+)/ ) {
push @result, $arg;
next;
}
$arg =~ s/-extra-//;
die("Unknown \"-${arg}-extra\" option, exiting")
unless scalar grep { $arg eq $_ } @OPENSSL_CMDS;
$EXTRA{$arg} .= " " . shift;
}
return @result;
}
# See if reason for a CRL entry is valid; exit if not.
sub crl_reason_ok
{
my $r = shift;
if ($r eq 'unspecified' || $r eq 'keyCompromise'
|| $r eq 'CACompromise' || $r eq 'affiliationChanged'
|| $r eq 'superseded' || $r eq 'cessationOfOperation'
|| $r eq 'certificateHold' || $r eq 'removeFromCRL') {
return 1;
}
print STDERR "Invalid CRL reason; must be one of:\n";
print STDERR " unspecified, keyCompromise, CACompromise,\n";
print STDERR " affiliationChanged, superseded, cessationOfOperation\n";
print STDERR " certificateHold, removeFromCRL";
exit 1;
}
# Copy a PEM-format file; return like exit status (zero means ok)
sub copy_pemfile
{
my ($infile, $outfile, $bound) = @_;
my $found = 0;
open IN, $infile || die "Cannot open $infile, $!";
open OUT, ">$outfile" || die "Cannot write to $outfile, $!";
while (<IN>) {
$found = 1 if /^-----BEGIN.*$bound/;
print OUT $_ if $found;
$found = 2, last if /^-----END.*$bound/;
}
close IN;
close OUT;
return $found == 2 ? 0 : 1;
}
# Wrapper around system; useful for debugging. Returns just the exit status
sub run
{
my $cmd = shift;
print "====\n$cmd\n" if $verbose;
my $status = system($cmd);
print "==> $status\n====\n" if $verbose;
return $status >> 8;
}
if ( $WHAT =~ /^(-\?|-h|-help)$/ ) {
print STDERR <<EOF;
Usage:
CA.pl -newcert | -newreq | -newreq-nodes | -xsign | -sign | -signCA | -signcert | -crl | -newca [-extra-cmd parameter]
CA.pl -pkcs12 [certname]
CA.pl -verify certfile ...
CA.pl -revoke certfile [reason]
EOF
exit 0;
}
if ($WHAT eq '-newcert' ) {
# create a certificate
$RET = run("$REQ -new -x509 -keyout $NEWKEY -out $NEWCERT $DAYS"
. " $EXTRA{req}");
print "Cert is in $NEWCERT, private key is in $NEWKEY\n" if $RET == 0;
} elsif ($WHAT eq '-precert' ) {
# create a pre-certificate
$RET = run("$REQ -x509 -precert -keyout $NEWKEY -out $NEWCERT $DAYS"
. " $EXTRA{req}");
print "Pre-cert is in $NEWCERT, private key is in $NEWKEY\n" if $RET == 0;
} elsif ($WHAT =~ /^\-newreq(\-nodes)?$/ ) {
# create a certificate request
$RET = run("$REQ -new $1 -keyout $NEWKEY -out $NEWREQ $DAYS $EXTRA{req}");
print "Request is in $NEWREQ, private key is in $NEWKEY\n" if $RET == 0;
} elsif ($WHAT eq '-newca' ) {
# create the directory hierarchy
my @dirs = ( "${CATOP}", "${CATOP}/certs", "${CATOP}/crl",
"${CATOP}/newcerts", "${CATOP}/private" );
die "${CATOP}/index.txt exists.\nRemove old sub-tree to proceed,"
if -f "${CATOP}/index.txt";
die "${CATOP}/serial exists.\nRemove old sub-tree to proceed,"
if -f "${CATOP}/serial";
foreach my $d ( @dirs ) {
if ( -d $d ) {
warn "Directory $d exists" if -d $d;
} else {
mkdir $d or die "Can't mkdir $d, $!";
}
}
open OUT, ">${CATOP}/index.txt";
close OUT;
open OUT, ">${CATOP}/crlnumber";
print OUT "01\n";
close OUT;
# ask user for existing CA certificate
print "CA certificate filename (or enter to create)\n";
my $FILE;
$FILE = "" unless defined($FILE = <STDIN>);
$FILE =~ s{\R$}{};
if ($FILE ne "") {
copy_pemfile($FILE,"${CATOP}/private/$CAKEY", "PRIVATE");
copy_pemfile($FILE,"${CATOP}/$CACERT", "CERTIFICATE");
} else {
print "Making CA certificate ...\n";
$RET = run("$REQ -new -keyout ${CATOP}/private/$CAKEY"
. " -out ${CATOP}/$CAREQ $EXTRA{req}");
$RET = run("$CA -create_serial"
. " -out ${CATOP}/$CACERT $CADAYS -batch"
. " -keyfile ${CATOP}/private/$CAKEY -selfsign"
. " $EXTENSIONS"
. " -infiles ${CATOP}/$CAREQ $EXTRA{ca}") if $RET == 0;
print "CA certificate is in ${CATOP}/$CACERT\n" if $RET == 0;
}
} elsif ($WHAT eq '-pkcs12' ) {
my $cname = $ARGV[0];
$cname = "My Certificate" unless defined $cname;
$RET = run("$PKCS12 -in $NEWCERT -inkey $NEWKEY"
. " -certfile ${CATOP}/$CACERT -out $NEWP12"
. " -export -name \"$cname\" $EXTRA{pkcs12}");
print "PKCS #12 file is in $NEWP12\n" if $RET == 0;
} elsif ($WHAT eq '-xsign' ) {
$RET = run("$CA $POLICY -infiles $NEWREQ $EXTRA{ca}");
} elsif ($WHAT eq '-sign' ) {
$RET = run("$CA $POLICY -out $NEWCERT"
. " -infiles $NEWREQ $EXTRA{ca}");
print "Signed certificate is in $NEWCERT\n" if $RET == 0;
} elsif ($WHAT eq '-signCA' ) {
$RET = run("$CA $POLICY -out $NEWCERT"
. " $EXTENSIONS -infiles $NEWREQ $EXTRA{ca}");
print "Signed CA certificate is in $NEWCERT\n" if $RET == 0;
} elsif ($WHAT eq '-signcert' ) {
$RET = run("$X509 -x509toreq -in $NEWREQ -signkey $NEWREQ"
. " -out tmp.pem $EXTRA{x509}");
$RET = run("$CA $POLICY -out $NEWCERT"
. "-infiles tmp.pem $EXTRA{ca}") if $RET == 0;
print "Signed certificate is in $NEWCERT\n" if $RET == 0;
} elsif ($WHAT eq '-verify' ) {
my @files = @ARGV ? @ARGV : ( $NEWCERT );
foreach my $file (@files) {
# -CAfile quoted for VMS, since the C RTL downcases all unquoted
# arguments to C programs
my $status = run("$VERIFY \"-CAfile\" ${CATOP}/$CACERT $file $EXTRA{verify}");
$RET = $status if $status != 0;
}
} elsif ($WHAT eq '-crl' ) {
$RET = run("$CA -gencrl -out ${CATOP}/crl/$CACRL $EXTRA{ca}");
print "Generated CRL is in ${CATOP}/crl/$CACRL\n" if $RET == 0;
} elsif ($WHAT eq '-revoke' ) {
my $cname = $ARGV[0];
if (!defined $cname) {
print "Certificate filename is required; reason optional.\n";
exit 1;
}
my $reason = $ARGV[1];
$reason = " -crl_reason $reason"
if defined $reason && crl_reason_ok($reason);
$RET = run("$CA -revoke \"$cname\"" . $reason . $EXTRA{ca});
} else {
print STDERR "Unknown arg \"$WHAT\"\n";
print STDERR "Use -help for help.\n";
exit 1;
}
exit $RET;

View File

@@ -0,0 +1 @@
tsget.pl

View File

@@ -0,0 +1,200 @@
#!/usr/bin/env perl
# Copyright 2002-2018 The OpenSSL Project Authors. All Rights Reserved.
# Copyright (c) 2002 The OpenTSA Project. All rights reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html
use strict;
use IO::Handle;
use Getopt::Std;
use File::Basename;
use WWW::Curl::Easy;
use vars qw(%options);
# Callback for reading the body.
sub read_body {
my ($maxlength, $state) = @_;
my $return_data = "";
my $data_len = length ${$state->{data}};
if ($state->{bytes} < $data_len) {
$data_len = $data_len - $state->{bytes};
$data_len = $maxlength if $data_len > $maxlength;
$return_data = substr ${$state->{data}}, $state->{bytes}, $data_len;
$state->{bytes} += $data_len;
}
return $return_data;
}
# Callback for writing the body into a variable.
sub write_body {
my ($data, $pointer) = @_;
${$pointer} .= $data;
return length($data);
}
# Initialise a new Curl object.
sub create_curl {
my $url = shift;
# Create Curl object.
my $curl = WWW::Curl::Easy::new();
# Error-handling related options.
$curl->setopt(CURLOPT_VERBOSE, 1) if $options{d};
$curl->setopt(CURLOPT_FAILONERROR, 1);
$curl->setopt(CURLOPT_USERAGENT,
"OpenTSA tsget.pl/openssl-3.2.0");
# Options for POST method.
$curl->setopt(CURLOPT_UPLOAD, 1);
$curl->setopt(CURLOPT_CUSTOMREQUEST, "POST");
$curl->setopt(CURLOPT_HTTPHEADER,
["Content-Type: application/timestamp-query",
"Accept: application/timestamp-reply,application/timestamp-response"]);
$curl->setopt(CURLOPT_READFUNCTION, \&read_body);
$curl->setopt(CURLOPT_HEADERFUNCTION, sub { return length($_[0]); });
# Options for getting the result.
$curl->setopt(CURLOPT_WRITEFUNCTION, \&write_body);
# SSL related options.
$curl->setopt(CURLOPT_SSLKEYTYPE, "PEM");
$curl->setopt(CURLOPT_SSL_VERIFYPEER, 1); # Verify server's certificate.
$curl->setopt(CURLOPT_SSL_VERIFYHOST, 2); # Check server's CN.
$curl->setopt(CURLOPT_SSLKEY, $options{k}) if defined($options{k});
$curl->setopt(CURLOPT_SSLKEYPASSWD, $options{p}) if defined($options{p});
$curl->setopt(CURLOPT_SSLCERT, $options{c}) if defined($options{c});
$curl->setopt(CURLOPT_CAINFO, $options{C}) if defined($options{C});
$curl->setopt(CURLOPT_CAPATH, $options{P}) if defined($options{P});
$curl->setopt(CURLOPT_RANDOM_FILE, $options{r}) if defined($options{r});
$curl->setopt(CURLOPT_EGDSOCKET, $options{g}) if defined($options{g});
# Setting destination.
$curl->setopt(CURLOPT_URL, $url);
return $curl;
}
# Send a request and returns the body back.
sub get_timestamp {
my $curl = shift;
my $body = shift;
my $ts_body;
local $::error_buf;
# Error-handling related options.
$curl->setopt(CURLOPT_ERRORBUFFER, "::error_buf");
# Options for POST method.
$curl->setopt(CURLOPT_INFILE, {data => $body, bytes => 0});
$curl->setopt(CURLOPT_INFILESIZE, length(${$body}));
# Options for getting the result.
$curl->setopt(CURLOPT_FILE, \$ts_body);
# Send the request...
my $error_code = $curl->perform();
my $error_string;
if ($error_code != 0) {
my $http_code = $curl->getinfo(CURLINFO_HTTP_CODE);
$error_string = "could not get timestamp";
$error_string .= ", http code: $http_code" unless $http_code == 0;
$error_string .= ", curl code: $error_code";
$error_string .= " ($::error_buf)" if defined($::error_buf);
} else {
my $ct = $curl->getinfo(CURLINFO_CONTENT_TYPE);
if (lc($ct) ne "application/timestamp-reply"
&& lc($ct) ne "application/timestamp-response") {
$error_string = "unexpected content type returned: $ct";
}
}
return ($ts_body, $error_string);
}
# Print usage information and exists.
sub usage {
print STDERR "usage: $0 -h <server_url> [-e <extension>] [-o <output>] ";
print STDERR "[-v] [-d] [-k <private_key.pem>] [-p <key_password>] ";
print STDERR "[-c <client_cert.pem>] [-C <CA_certs.pem>] [-P <CA_path>] ";
print STDERR "[-r <file:file...>] [-g <EGD_socket>] [<request>]...\n";
exit 1;
}
# ----------------------------------------------------------------------
# Main program
# ----------------------------------------------------------------------
# Getting command-line options (default comes from TSGET environment variable).
my $getopt_arg = "h:e:o:vdk:p:c:C:P:r:g:";
if (exists $ENV{TSGET}) {
my @old_argv = @ARGV;
@ARGV = split /\s+/, $ENV{TSGET};
getopts($getopt_arg, \%options) or usage;
@ARGV = @old_argv;
}
getopts($getopt_arg, \%options) or usage;
# Checking argument consistency.
if (!exists($options{h}) || (@ARGV == 0 && !exists($options{o}))
|| (@ARGV > 1 && exists($options{o}))) {
print STDERR "Inconsistent command line options.\n";
usage;
}
# Setting defaults.
@ARGV = ("-") unless @ARGV != 0;
$options{e} = ".tsr" unless defined($options{e});
# Processing requests.
my $curl = create_curl $options{h};
undef $/; # For reading whole files.
REQUEST: foreach (@ARGV) {
my $input = $_;
my ($base, $path) = fileparse($input, '\.[^.]*');
my $output_base = $base . $options{e};
my $output = defined($options{o}) ? $options{o} : $path . $output_base;
STDERR->printflush("$input: ") if $options{v};
# Read request.
my $body;
if ($input eq "-") {
# Read the request from STDIN;
$body = <STDIN>;
} else {
# Read the request from file.
open INPUT, "<" . $input
or warn("$input: could not open input file: $!\n"), next REQUEST;
$body = <INPUT>;
close INPUT
or warn("$input: could not close input file: $!\n"), next REQUEST;
}
# Send request.
STDERR->printflush("sending request") if $options{v};
my ($ts_body, $error) = get_timestamp $curl, \$body;
if (defined($error)) {
die "$input: fatal error: $error\n";
}
STDERR->printflush(", reply received") if $options{v};
# Write response.
if ($output eq "-") {
# Write to STDOUT.
print $ts_body;
} else {
# Write to file.
open OUTPUT, ">", $output
or warn("$output: could not open output file: $!\n"), next REQUEST;
print OUTPUT $ts_body;
close OUTPUT
or warn("$output: could not close output file: $!\n"), next REQUEST;
}
STDERR->printflush(", $output written.\n") if $options{v};
}
$curl->cleanup();

View File

@@ -0,0 +1,390 @@
#
# OpenSSL example configuration file.
# See doc/man5/config.pod for more info.
#
# This is mostly being used for generation of certificate requests,
# but may be used for auto loading of providers
# Note that you can include other files from the main configuration
# file using the .include directive.
#.include filename
# This definition stops the following lines choking if HOME isn't
# defined.
HOME = .
# Use this in order to automatically load providers.
openssl_conf = openssl_init
# Comment out the next line to ignore configuration errors
config_diagnostics = 1
# Extra OBJECT IDENTIFIER info:
# oid_file = $ENV::HOME/.oid
oid_section = new_oids
# To use this configuration file with the "-extfile" option of the
# "openssl x509" utility, name here the section containing the
# X.509v3 extensions to use:
# extensions =
# (Alternatively, use a configuration file that has only
# X.509v3 extensions in its main [= default] section.)
[ new_oids ]
# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
# Add a simple OID like this:
# testoid1=1.2.3.4
# Or use config file substitution like this:
# testoid2=${testoid1}.5.6
# Policies used by the TSA examples.
tsa_policy1 = 1.2.3.4.1
tsa_policy2 = 1.2.3.4.5.6
tsa_policy3 = 1.2.3.4.5.7
# For FIPS
# Optionally include a file that is generated by the OpenSSL fipsinstall
# application. This file contains configuration data required by the OpenSSL
# fips provider. It contains a named section e.g. [fips_sect] which is
# referenced from the [provider_sect] below.
# Refer to the OpenSSL security policy for more information.
# .include fipsmodule.cnf
[openssl_init]
providers = provider_sect
# List of providers to load
[provider_sect]
default = default_sect
# The fips section name should match the section name inside the
# included fipsmodule.cnf.
# fips = fips_sect
# If no providers are activated explicitly, the default one is activated implicitly.
# See man 7 OSSL_PROVIDER-default for more details.
#
# If you add a section explicitly activating any other provider(s), you most
# probably need to explicitly activate the default provider, otherwise it
# becomes unavailable in openssl. As a consequence applications depending on
# OpenSSL may not work correctly which could lead to significant system
# problems including inability to remotely access the system.
[default_sect]
# activate = 1
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = ./demoCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation of
# several certs with same subject.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.pem # The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem # The private key
x509_extensions = usr_cert # The extensions to add to the cert
# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
# Extension copying option: use with caution.
# copy_extensions = copy
# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions = crl_ext
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = default # use public key default MD
preserve = no # keep passed DN ordering
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_match
# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ req ]
default_bits = 2048
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extensions to add to the self signed cert
# Passwords for private keys if not present they will be prompted for
# input_password = secret
# output_password = secret
# This sets a mask for permitted string types. There are several options.
# default: PrintableString, T61String, BMPString.
# pkix : PrintableString, BMPString (PKIX recommendation before 2004)
# utf8only: only UTF8Strings (PKIX recommendation after 2004).
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
# MASK:XXXX a literal mask value.
# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
string_mask = utf8only
# req_extensions = v3_req # The extensions to add to a certificate request
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = AU
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Some-State
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Internet Widgits Pty Ltd
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = World Wide Web Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default =
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
# SET-ex3 = SET extension number 3
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ usr_cert ]
# These extensions are added when 'ca' signs a request.
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
basicConstraints=CA:FALSE
# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
# This is required for TSA certificates.
# extendedKeyUsage = critical,timeStamping
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
[ v3_ca ]
# Extensions for a typical CA
# PKIX recommendation.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true
# Key usage: this is typical for a CA certificate. However since it will
# prevent it being used as an test self-signed certificate it is best
# left out by default.
# keyUsage = cRLSign, keyCertSign
# Include email address in subject alt name: another PKIX recommendation
# subjectAltName=email:copy
# Copy issuer details
# issuerAltName=issuer:copy
# DER hex encoding of an extension: beware experts only!
# obj=DER:02:03
# Where 'obj' is a standard or added object
# You can even override a supported extension:
# basicConstraints= critical, DER:30:03:01:01:FF
[ crl_ext ]
# CRL extensions.
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
# issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always
[ proxy_cert_ext ]
# These extensions should be added when creating a proxy certificate
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
basicConstraints=CA:FALSE
# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
# This really needs to be in place for it to be a proxy certificate.
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
####################################################################
[ tsa ]
default_tsa = tsa_config1 # the default TSA section
[ tsa_config1 ]
# These are used by the TSA reply generation only.
dir = ./demoCA # TSA root directory
serial = $dir/tsaserial # The current serial number (mandatory)
crypto_device = builtin # OpenSSL engine to use for signing
signer_cert = $dir/tsacert.pem # The TSA signing certificate
# (optional)
certs = $dir/cacert.pem # Certificate chain to include in reply
# (optional)
signer_key = $dir/private/tsakey.pem # The TSA private key (optional)
signer_digest = sha256 # Signing digest to use. (Optional)
default_policy = tsa_policy1 # Policy if request did not specify it
# (optional)
other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional)
digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory)
accuracy = secs:1, millisecs:500, microsecs:100 # (optional)
clock_precision_digits = 0 # number of digits after dot. (optional)
ordering = yes # Is ordering defined for timestamps?
# (optional, default: no)
tsa_name = yes # Must the TSA name be included in the reply?
# (optional, default: no)
ess_cert_id_chain = no # Must the ESS cert id chain be included?
# (optional, default: no)
ess_cert_id_alg = sha256 # algorithm to compute certificate
# identifier (optional, default: sha256)
[insta] # CMP using Insta Demo CA
# Message transfer
server = pki.certificate.fi:8700
# proxy = # set this as far as needed, e.g., http://192.168.1.1:8080
# tls_use = 0
path = pkix/
# Server authentication
recipient = "/C=FI/O=Insta Demo/CN=Insta Demo CA" # or set srvcert or issuer
ignore_keyusage = 1 # potentially needed quirk
unprotected_errors = 1 # potentially needed quirk
extracertsout = insta.extracerts.pem
# Client authentication
ref = 3078 # user identification
secret = pass:insta # can be used for both client and server side
# Generic message options
cmd = ir # default operation, can be overridden on cmd line with, e.g., kur
# Certificate enrollment
subject = "/CN=openssl-cmp-test"
newkey = insta.priv.pem
out_trusted = apps/insta.ca.crt # does not include keyUsage digitalSignature
certout = insta.cert.pem
[pbm] # Password-based protection for Insta CA
# Server and client authentication
ref = $insta::ref # 3078
secret = $insta::secret # pass:insta
[signature] # Signature-based protection for Insta CA
# Server authentication
trusted = $insta::out_trusted # apps/insta.ca.crt
# Client authentication
secret = # disable PBM
key = $insta::newkey # insta.priv.pem
cert = $insta::certout # insta.cert.pem
[ir]
cmd = ir
[cr]
cmd = cr
[kur]
# Certificate update
cmd = kur
oldcert = $insta::certout # insta.cert.pem
[rr]
# Certificate revocation
cmd = rr
oldcert = $insta::certout # insta.cert.pem

View File

@@ -0,0 +1,390 @@
#
# OpenSSL example configuration file.
# See doc/man5/config.pod for more info.
#
# This is mostly being used for generation of certificate requests,
# but may be used for auto loading of providers
# Note that you can include other files from the main configuration
# file using the .include directive.
#.include filename
# This definition stops the following lines choking if HOME isn't
# defined.
HOME = .
# Use this in order to automatically load providers.
openssl_conf = openssl_init
# Comment out the next line to ignore configuration errors
config_diagnostics = 1
# Extra OBJECT IDENTIFIER info:
# oid_file = $ENV::HOME/.oid
oid_section = new_oids
# To use this configuration file with the "-extfile" option of the
# "openssl x509" utility, name here the section containing the
# X.509v3 extensions to use:
# extensions =
# (Alternatively, use a configuration file that has only
# X.509v3 extensions in its main [= default] section.)
[ new_oids ]
# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
# Add a simple OID like this:
# testoid1=1.2.3.4
# Or use config file substitution like this:
# testoid2=${testoid1}.5.6
# Policies used by the TSA examples.
tsa_policy1 = 1.2.3.4.1
tsa_policy2 = 1.2.3.4.5.6
tsa_policy3 = 1.2.3.4.5.7
# For FIPS
# Optionally include a file that is generated by the OpenSSL fipsinstall
# application. This file contains configuration data required by the OpenSSL
# fips provider. It contains a named section e.g. [fips_sect] which is
# referenced from the [provider_sect] below.
# Refer to the OpenSSL security policy for more information.
# .include fipsmodule.cnf
[openssl_init]
providers = provider_sect
# List of providers to load
[provider_sect]
default = default_sect
# The fips section name should match the section name inside the
# included fipsmodule.cnf.
# fips = fips_sect
# If no providers are activated explicitly, the default one is activated implicitly.
# See man 7 OSSL_PROVIDER-default for more details.
#
# If you add a section explicitly activating any other provider(s), you most
# probably need to explicitly activate the default provider, otherwise it
# becomes unavailable in openssl. As a consequence applications depending on
# OpenSSL may not work correctly which could lead to significant system
# problems including inability to remotely access the system.
[default_sect]
# activate = 1
####################################################################
[ ca ]
default_ca = CA_default # The default ca section
####################################################################
[ CA_default ]
dir = ./demoCA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
#unique_subject = no # Set to 'no' to allow creation of
# several certs with same subject.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/cacert.pem # The CA certificate
serial = $dir/serial # The current serial number
crlnumber = $dir/crlnumber # the current crl number
# must be commented out to leave a V1 CRL
crl = $dir/crl.pem # The current CRL
private_key = $dir/private/cakey.pem # The private key
x509_extensions = usr_cert # The extensions to add to the cert
# Comment out the following two lines for the "traditional"
# (and highly broken) format.
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
# Extension copying option: use with caution.
# copy_extensions = copy
# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
# so this is commented out by default to leave a V1 CRL.
# crlnumber must also be commented out to leave a V1 CRL.
# crl_extensions = crl_ext
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = default # use public key default MD
preserve = no # keep passed DN ordering
# A few difference way of specifying how similar the request should look
# For type CA, the listed attributes must be the same, and the optional
# and supplied fields are just that :-)
policy = policy_match
# For the CA policy
[ policy_match ]
countryName = match
stateOrProvinceName = match
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
# For the 'anything' policy
# At this point in time, you must list all acceptable 'object'
# types.
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
####################################################################
[ req ]
default_bits = 2048
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extensions to add to the self signed cert
# Passwords for private keys if not present they will be prompted for
# input_password = secret
# output_password = secret
# This sets a mask for permitted string types. There are several options.
# default: PrintableString, T61String, BMPString.
# pkix : PrintableString, BMPString (PKIX recommendation before 2004)
# utf8only: only UTF8Strings (PKIX recommendation after 2004).
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
# MASK:XXXX a literal mask value.
# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
string_mask = utf8only
# req_extensions = v3_req # The extensions to add to a certificate request
[ req_distinguished_name ]
countryName = Country Name (2 letter code)
countryName_default = AU
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Some-State
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Internet Widgits Pty Ltd
# we can do this but it is not needed normally :-)
#1.organizationName = Second Organization Name (eg, company)
#1.organizationName_default = World Wide Web Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
#organizationalUnitName_default =
commonName = Common Name (e.g. server FQDN or YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64
# SET-ex3 = SET extension number 3
[ req_attributes ]
challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name
[ usr_cert ]
# These extensions are added when 'ca' signs a request.
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
basicConstraints=CA:FALSE
# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
# This is required for TSA certificates.
# extendedKeyUsage = critical,timeStamping
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
[ v3_ca ]
# Extensions for a typical CA
# PKIX recommendation.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = critical,CA:true
# Key usage: this is typical for a CA certificate. However since it will
# prevent it being used as an test self-signed certificate it is best
# left out by default.
# keyUsage = cRLSign, keyCertSign
# Include email address in subject alt name: another PKIX recommendation
# subjectAltName=email:copy
# Copy issuer details
# issuerAltName=issuer:copy
# DER hex encoding of an extension: beware experts only!
# obj=DER:02:03
# Where 'obj' is a standard or added object
# You can even override a supported extension:
# basicConstraints= critical, DER:30:03:01:01:FF
[ crl_ext ]
# CRL extensions.
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
# issuerAltName=issuer:copy
authorityKeyIdentifier=keyid:always
[ proxy_cert_ext ]
# These extensions should be added when creating a proxy certificate
# This goes against PKIX guidelines but some CAs do it and some software
# requires this to avoid interpreting an end user certificate as a CA.
basicConstraints=CA:FALSE
# This is typical in keyUsage for a client certificate.
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
# PKIX recommendations harmless if included in all certificates.
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid,issuer
# This stuff is for subjectAltName and issuerAltname.
# Import the email address.
# subjectAltName=email:copy
# An alternative to produce certificates that aren't
# deprecated according to PKIX.
# subjectAltName=email:move
# Copy subject details
# issuerAltName=issuer:copy
# This really needs to be in place for it to be a proxy certificate.
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
####################################################################
[ tsa ]
default_tsa = tsa_config1 # the default TSA section
[ tsa_config1 ]
# These are used by the TSA reply generation only.
dir = ./demoCA # TSA root directory
serial = $dir/tsaserial # The current serial number (mandatory)
crypto_device = builtin # OpenSSL engine to use for signing
signer_cert = $dir/tsacert.pem # The TSA signing certificate
# (optional)
certs = $dir/cacert.pem # Certificate chain to include in reply
# (optional)
signer_key = $dir/private/tsakey.pem # The TSA private key (optional)
signer_digest = sha256 # Signing digest to use. (Optional)
default_policy = tsa_policy1 # Policy if request did not specify it
# (optional)
other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional)
digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory)
accuracy = secs:1, millisecs:500, microsecs:100 # (optional)
clock_precision_digits = 0 # number of digits after dot. (optional)
ordering = yes # Is ordering defined for timestamps?
# (optional, default: no)
tsa_name = yes # Must the TSA name be included in the reply?
# (optional, default: no)
ess_cert_id_chain = no # Must the ESS cert id chain be included?
# (optional, default: no)
ess_cert_id_alg = sha256 # algorithm to compute certificate
# identifier (optional, default: sha256)
[insta] # CMP using Insta Demo CA
# Message transfer
server = pki.certificate.fi:8700
# proxy = # set this as far as needed, e.g., http://192.168.1.1:8080
# tls_use = 0
path = pkix/
# Server authentication
recipient = "/C=FI/O=Insta Demo/CN=Insta Demo CA" # or set srvcert or issuer
ignore_keyusage = 1 # potentially needed quirk
unprotected_errors = 1 # potentially needed quirk
extracertsout = insta.extracerts.pem
# Client authentication
ref = 3078 # user identification
secret = pass:insta # can be used for both client and server side
# Generic message options
cmd = ir # default operation, can be overridden on cmd line with, e.g., kur
# Certificate enrollment
subject = "/CN=openssl-cmp-test"
newkey = insta.priv.pem
out_trusted = apps/insta.ca.crt # does not include keyUsage digitalSignature
certout = insta.cert.pem
[pbm] # Password-based protection for Insta CA
# Server and client authentication
ref = $insta::ref # 3078
secret = $insta::secret # pass:insta
[signature] # Signature-based protection for Insta CA
# Server authentication
trusted = $insta::out_trusted # apps/insta.ca.crt
# Client authentication
secret = # disable PBM
key = $insta::newkey # insta.priv.pem
cert = $insta::certout # insta.cert.pem
[ir]
cmd = ir
[cr]
cmd = cr
[kur]
# Certificate update
cmd = kur
oldcert = $insta::certout # insta.cert.pem
[rr]
# Certificate revocation
cmd = rr
oldcert = $insta::certout # insta.cert.pem

View File

@@ -1,41 +0,0 @@
# libatomic.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libatomic.so.1'
# Names of this library.
library_names='libatomic.so.1.2.0 libatomic.so.1 libatomic.so'
# The name of the static archive.
old_library='libatomic.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lpthread'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libatomic.
current=3
age=2
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64/lp64'

View File

@@ -1,41 +0,0 @@
# libgomp.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libgomp.so.1'
# Names of this library.
library_names='libgomp.so.1.0.0 libgomp.so.1 libgomp.so'
# The name of the static archive.
old_library='libgomp.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -ldl -lpthread'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libgomp.
current=1
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64/lp64'

View File

@@ -1,41 +0,0 @@
# libstdc++.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libstdc++.so.6'
# Names of this library.
library_names='libstdc++.so.6.0.28 libstdc++.so.6 libstdc++.so'
# The name of the static archive.
old_library='libstdc++.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lm'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libstdc++.
current=6
age=0
revision=28
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64/lp64'

View File

@@ -1,41 +0,0 @@
# libstdc++fs.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libstdc++fs.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libstdc++fs.
current=0
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64/lp64'

View File

@@ -1,41 +0,0 @@
# libsupc++.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libsupc++.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libsupc++.
current=0
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64/lp64'

View File

@@ -1,41 +0,0 @@
# libatomic.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libatomic.so.1'
# Names of this library.
library_names='libatomic.so.1.2.0 libatomic.so.1 libatomic.so'
# The name of the static archive.
old_library='libatomic.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lpthread'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libatomic.
current=3
age=2
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64/lp64d'

View File

@@ -1,41 +0,0 @@
# libgomp.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libgomp.so.1'
# Names of this library.
library_names='libgomp.so.1.0.0 libgomp.so.1 libgomp.so'
# The name of the static archive.
old_library='libgomp.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -ldl -lpthread'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libgomp.
current=1
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64/lp64d'

View File

@@ -1,41 +0,0 @@
# libstdc++.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libstdc++.so.6'
# Names of this library.
library_names='libstdc++.so.6.0.28 libstdc++.so.6 libstdc++.so'
# The name of the static archive.
old_library='libstdc++.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lm'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libstdc++.
current=6
age=0
revision=28
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64/lp64d'

View File

@@ -1,41 +0,0 @@
# libstdc++fs.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libstdc++fs.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libstdc++fs.
current=0
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64/lp64d'

View File

@@ -1,41 +0,0 @@
# libsupc++.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libsupc++.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libsupc++.
current=0
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64/lp64d'

View File

@@ -1,41 +0,0 @@
# libatomic.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libatomic.so.1'
# Names of this library.
library_names='libatomic.so.1.2.0 libatomic.so.1 libatomic.so'
# The name of the static archive.
old_library='libatomic.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lpthread'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libatomic.
current=3
age=2
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64v0p7_xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libgomp.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libgomp.so.1'
# Names of this library.
library_names='libgomp.so.1.0.0 libgomp.so.1 libgomp.so'
# The name of the static archive.
old_library='libgomp.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -ldl -lpthread'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libgomp.
current=1
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64v0p7_xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libstdc++.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libstdc++.so.6'
# Names of this library.
library_names='libstdc++.so.6.0.28 libstdc++.so.6 libstdc++.so'
# The name of the static archive.
old_library='libstdc++.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lm'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libstdc++.
current=6
age=0
revision=28
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64v0p7_xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libstdc++fs.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libstdc++fs.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libstdc++fs.
current=0
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64v0p7_xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libsupc++.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libsupc++.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libsupc++.
current=0
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64v0p7_xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libatomic.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libatomic.so.1'
# Names of this library.
library_names='libatomic.so.1.2.0 libatomic.so.1 libatomic.so'
# The name of the static archive.
old_library='libatomic.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lpthread'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libatomic.
current=3
age=2
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64v_xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libgomp.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libgomp.so.1'
# Names of this library.
library_names='libgomp.so.1.0.0 libgomp.so.1 libgomp.so'
# The name of the static archive.
old_library='libgomp.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -ldl -lpthread'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libgomp.
current=1
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64v_xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libstdc++.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libstdc++.so.6'
# Names of this library.
library_names='libstdc++.so.6.0.28 libstdc++.so.6 libstdc++.so'
# The name of the static archive.
old_library='libstdc++.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lm'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libstdc++.
current=6
age=0
revision=28
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64v_xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libstdc++fs.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libstdc++fs.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libstdc++fs.
current=0
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64v_xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libsupc++.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libsupc++.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libsupc++.
current=0
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64v_xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libatomic.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libatomic.so.1'
# Names of this library.
library_names='libatomic.so.1.2.0 libatomic.so.1 libatomic.so'
# The name of the static archive.
old_library='libatomic.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lpthread'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libatomic.
current=3
age=2
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64xthead/lp64'

View File

@@ -1,41 +0,0 @@
# libgomp.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libgomp.so.1'
# Names of this library.
library_names='libgomp.so.1.0.0 libgomp.so.1 libgomp.so'
# The name of the static archive.
old_library='libgomp.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -ldl -lpthread'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libgomp.
current=1
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64xthead/lp64'

View File

@@ -1,41 +0,0 @@
# libstdc++.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libstdc++.so.6'
# Names of this library.
library_names='libstdc++.so.6.0.28 libstdc++.so.6 libstdc++.so'
# The name of the static archive.
old_library='libstdc++.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lm'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libstdc++.
current=6
age=0
revision=28
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64xthead/lp64'

View File

@@ -1,41 +0,0 @@
# libstdc++fs.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libstdc++fs.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libstdc++fs.
current=0
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64xthead/lp64'

View File

@@ -1,41 +0,0 @@
# libsupc++.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libsupc++.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libsupc++.
current=0
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64xthead/lp64'

View File

@@ -1,41 +0,0 @@
# libatomic.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libatomic.so.1'
# Names of this library.
library_names='libatomic.so.1.2.0 libatomic.so.1 libatomic.so'
# The name of the static archive.
old_library='libatomic.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lpthread'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libatomic.
current=3
age=2
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libgomp.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libgomp.so.1'
# Names of this library.
library_names='libgomp.so.1.0.0 libgomp.so.1 libgomp.so'
# The name of the static archive.
old_library='libgomp.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -ldl -lpthread'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libgomp.
current=1
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libstdc++.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname='libstdc++.so.6'
# Names of this library.
library_names='libstdc++.so.6.0.28 libstdc++.so.6 libstdc++.so'
# The name of the static archive.
old_library='libstdc++.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=' -lm'
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libstdc++.
current=6
age=0
revision=28
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libstdc++fs.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libstdc++fs.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libstdc++fs.
current=0
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64xthead/lp64d'

View File

@@ -1,41 +0,0 @@
# libsupc++.la - a libtool library file
# Generated by libtool (GNU libtool 1.3134 2009-11-29) 2.2.7a
#
# Please DO NOT delete this file!
# It is necessary for linking the library.
# The name that we can dlopen(3).
dlname=''
# Names of this library.
library_names=''
# The name of the static archive.
old_library='libsupc++.a'
# Linker flags that can not go in dependency_libs.
inherited_linker_flags=''
# Libraries that this one depends upon.
dependency_libs=''
# Names of additional weak libraries provided by this library
weak_library_names=''
# Version information for libsupc++.
current=0
age=0
revision=0
# Is this an already installed library?
installed=yes
# Should we warn about portability when linking against -modules?
shouldnotlink=no
# Files to dlopen/dlpreopen
dlopen=''
dlpreopen=''
# Directory that this library needs to be installed in:
libdir='/mnt/ssd/jenkins_iotsw/slave/workspace/Toolchain/build-gnu-riscv_4/build-gcc-riscv64-unknown-linux-musl/Xuantie-900-gcc-linux-5.10.4-musl64-x86_64-V2.6.1/riscv64-unknown-linux-musl/lib/../lib64xthead/lp64d'

View File

@@ -0,0 +1,252 @@
#!/usr/bin/env perl
# WARNING: do not edit!
# Generated by Makefile from tools/c_rehash.in
# Copyright 1999-2022 The OpenSSL Project Authors. All Rights Reserved.
#
# Licensed under the Apache License 2.0 (the "License"). You may not use
# this file except in compliance with the License. You can obtain a copy
# in the file LICENSE in the source distribution or at
# https://www.openssl.org/source/license.html
# Perl c_rehash script, scan all files in a directory
# and add symbolic links to their hash values.
my $dir = "/etc/ssl";
my $prefix = "/usr";
my $errorcount = 0;
my $openssl = $ENV{OPENSSL} || "openssl";
my $pwd;
my $x509hash = "-subject_hash";
my $crlhash = "-hash";
my $verbose = 0;
my $symlink_exists=eval {symlink("",""); 1};
my $removelinks = 1;
## Parse flags.
while ( $ARGV[0] =~ /^-/ ) {
my $flag = shift @ARGV;
last if ( $flag eq '--');
if ( $flag eq '-old') {
$x509hash = "-subject_hash_old";
$crlhash = "-hash_old";
} elsif ( $flag eq '-h' || $flag eq '-help' ) {
help();
} elsif ( $flag eq '-n' ) {
$removelinks = 0;
} elsif ( $flag eq '-v' ) {
$verbose++;
}
else {
print STDERR "Usage error; try -h.\n";
exit 1;
}
}
sub help {
print "Usage: c_rehash [-old] [-h] [-help] [-v] [dirs...]\n";
print " -old use old-style digest\n";
print " -h or -help print this help text\n";
print " -v print files removed and linked\n";
exit 0;
}
eval "require Cwd";
if (defined(&Cwd::getcwd)) {
$pwd=Cwd::getcwd();
} else {
$pwd=`pwd`;
chomp($pwd);
}
# DOS/Win32 or Unix delimiter? Prefix our installdir, then search.
my $path_delim = ($pwd =~ /^[a-z]\:/i) ? ';' : ':';
$ENV{PATH} = "$prefix/bin" . ($ENV{PATH} ? $path_delim . $ENV{PATH} : "");
if (! -x $openssl) {
my $found = 0;
foreach (split /$path_delim/, $ENV{PATH}) {
if (-x "$_/$openssl") {
$found = 1;
$openssl = "$_/$openssl";
last;
}
}
if ($found == 0) {
print STDERR "c_rehash: rehashing skipped ('openssl' program not available)\n";
exit 0;
}
}
if (@ARGV) {
@dirlist = @ARGV;
} elsif ($ENV{SSL_CERT_DIR}) {
@dirlist = split /$path_delim/, $ENV{SSL_CERT_DIR};
} else {
$dirlist[0] = "$dir/certs";
}
if (-d $dirlist[0]) {
chdir $dirlist[0];
$openssl="$pwd/$openssl" if (!-x $openssl);
chdir $pwd;
}
foreach (@dirlist) {
if (-d $_ ) {
if ( -w $_) {
hash_dir($_);
} else {
print "Skipping $_, can't write\n";
$errorcount++;
}
}
}
exit($errorcount);
sub copy_file {
my ($src_fname, $dst_fname) = @_;
if (open(my $in, "<", $src_fname)) {
if (open(my $out, ">", $dst_fname)) {
print $out $_ while (<$in>);
close $out;
} else {
warn "Cannot open $dst_fname for write, $!";
}
close $in;
} else {
warn "Cannot open $src_fname for read, $!";
}
}
sub hash_dir {
my $dir = shift;
my %hashlist;
print "Doing $dir\n";
if (!chdir $dir) {
print STDERR "WARNING: Cannot chdir to '$dir', $!\n";
return;
}
opendir(DIR, ".") || print STDERR "WARNING: Cannot opendir '.', $!\n";
my @flist = sort readdir(DIR);
closedir DIR;
if ( $removelinks ) {
# Delete any existing symbolic links
foreach (grep {/^[\da-f]+\.r{0,1}\d+$/} @flist) {
if (-l $_) {
print "unlink $_\n" if $verbose;
unlink $_ || warn "Can't unlink $_, $!\n";
}
}
}
FILE: foreach $fname (grep {/\.(pem|crt|cer|crl)$/} @flist) {
# Check to see if certificates and/or CRLs present.
my ($cert, $crl) = check_file($fname);
if (!$cert && !$crl) {
print STDERR "WARNING: $fname does not contain a certificate or CRL: skipping\n";
next;
}
link_hash_cert($fname) if ($cert);
link_hash_crl($fname) if ($crl);
}
chdir $pwd;
}
sub check_file {
my ($is_cert, $is_crl) = (0,0);
my $fname = $_[0];
open(my $in, "<", $fname);
while(<$in>) {
if (/^-----BEGIN (.*)-----/) {
my $hdr = $1;
if ($hdr =~ /^(X509 |TRUSTED |)CERTIFICATE$/) {
$is_cert = 1;
last if ($is_crl);
} elsif ($hdr eq "X509 CRL") {
$is_crl = 1;
last if ($is_cert);
}
}
}
close $in;
return ($is_cert, $is_crl);
}
sub compute_hash {
my $fh;
if ( $^O eq "VMS" ) {
# VMS uses the open through shell
# The file names are safe there and list form is unsupported
if (!open($fh, "-|", join(' ', @_))) {
print STDERR "Cannot compute hash on '$fname'\n";
return;
}
} else {
if (!open($fh, "-|", @_)) {
print STDERR "Cannot compute hash on '$fname'\n";
return;
}
}
return (<$fh>, <$fh>);
}
# Link a certificate to its subject name hash value, each hash is of
# the form <hash>.<n> where n is an integer. If the hash value already exists
# then we need to up the value of n, unless its a duplicate in which
# case we skip the link. We check for duplicates by comparing the
# certificate fingerprints
sub link_hash_cert {
link_hash($_[0], 'cert');
}
# Same as above except for a CRL. CRL links are of the form <hash>.r<n>
sub link_hash_crl {
link_hash($_[0], 'crl');
}
sub link_hash {
my ($fname, $type) = @_;
my $is_cert = $type eq 'cert';
my ($hash, $fprint) = compute_hash($openssl,
$is_cert ? "x509" : "crl",
$is_cert ? $x509hash : $crlhash,
"-fingerprint", "-noout",
"-in", $fname);
chomp $hash;
$hash =~ s/^.*=// if !$is_cert;
chomp $fprint;
return if !$hash;
$fprint =~ s/^.*=//;
$fprint =~ tr/://d;
my $suffix = 0;
# Search for an unused hash filename
my $crlmark = $is_cert ? "" : "r";
while(exists $hashlist{"$hash.$crlmark$suffix"}) {
# Hash matches: if fingerprint matches its a duplicate cert
if ($hashlist{"$hash.$crlmark$suffix"} eq $fprint) {
my $what = $is_cert ? 'certificate' : 'CRL';
print STDERR "WARNING: Skipping duplicate $what $fname\n";
return;
}
$suffix++;
}
$hash .= ".$crlmark$suffix";
if ($symlink_exists) {
print "link $fname -> $hash\n" if $verbose;
symlink $fname, $hash || warn "Can't symlink, $!";
} else {
print "copy $fname -> $hash\n" if $verbose;
copy_file($fname, $hash);
}
$hashlist{$hash} = $fprint;
}

Binary file not shown.

View File

@@ -0,0 +1,196 @@
#! /bin/sh
#***************************************************************************
# _ _ ____ _
# Project ___| | | | _ \| |
# / __| | | | |_) | |
# | (__| |_| | _ <| |___
# \___|\___/|_| \_\_____|
#
# Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
#
# This software is licensed as described in the file COPYING, which
# you should have received as part of this distribution. The terms
# are also available at https://curl.se/docs/copyright.html.
#
# You may opt to use, copy, modify, merge, publish, distribute and/or sell
# copies of the Software, and permit persons to whom the Software is
# furnished to do so, under the terms of the COPYING file.
#
# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
# KIND, either express or implied.
#
# SPDX-License-Identifier: curl
#
###########################################################################
prefix="/usr"
exec_prefix=${prefix}
includedir=${prefix}/include
cppflag_curl_staticlib=
usage()
{
cat <<EOF
Usage: curl-config [OPTION]
Available values for OPTION include:
--built-shared says 'yes' if libcurl was built shared
--ca ca bundle install path
--cc compiler
--cflags pre-processor and compiler flags
--checkfor [version] check for (lib)curl of the specified version
--configure the arguments given to configure when building curl
--features newline separated list of enabled features
--help display this help and exit
--libs library linking information
--prefix curl install prefix
--protocols newline separated list of enabled protocols
--ssl-backends output the SSL backends libcurl was built to support
--static-libs static libcurl library linking information
--version output version information
--vernum output the version information as a number (hexadecimal)
EOF
exit $1
}
if test $# -eq 0; then
usage 1
fi
while test $# -gt 0; do
case "$1" in
# this deals with options in the style
# --option=value and extracts the value part
# [not currently used]
-*=*) value=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
*) value= ;;
esac
case "$1" in
--built-shared)
echo yes
;;
--ca)
echo
;;
--cc)
echo "riscv64-unknown-linux-musl-gcc"
;;
--prefix)
echo "$prefix"
;;
--feature|--features)
for feature in AsynchDNS HSTS HTTPS-proxy IPv6 Largefile NTLM SSL TLS-SRP UnixSockets alt-svc threadsafe ""; do
test -n "$feature" && echo "$feature"
done
;;
--protocols)
for protocol in DICT FILE FTP FTPS GOPHER GOPHERS HTTP HTTPS IMAP IMAPS IPFS IPNS MQTT POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP; do
echo "$protocol"
done
;;
--version)
echo libcurl 8.6.0-DEV
exit 0
;;
--checkfor)
checkfor=$2
cmajor=`echo $checkfor | cut -d. -f1`
cminor=`echo $checkfor | cut -d. -f2`
# when extracting the patch part we strip off everything after a
# dash as that's used for things like version 1.2.3-CVS
cpatch=`echo $checkfor | cut -d. -f3 | cut -d- -f1`
vmajor=`echo 8.6.0-DEV | cut -d. -f1`
vminor=`echo 8.6.0-DEV | cut -d. -f2`
# when extracting the patch part we strip off everything after a
# dash as that's used for things like version 1.2.3-CVS
vpatch=`echo 8.6.0-DEV | cut -d. -f3 | cut -d- -f1`
if test "$vmajor" -gt "$cmajor"; then
exit 0;
fi
if test "$vmajor" -eq "$cmajor"; then
if test "$vminor" -gt "$cminor"; then
exit 0
fi
if test "$vminor" -eq "$cminor"; then
if test "$cpatch" -le "$vpatch"; then
exit 0
fi
fi
fi
echo "requested version $checkfor is newer than existing 8.6.0-DEV"
exit 1
;;
--vernum)
echo 080600
exit 0
;;
--help)
usage 0
;;
--cflags)
if test "X$cppflag_curl_staticlib" = "X-DCURL_STATICLIB"; then
CPPFLAG_CURL_STATICLIB="-DCURL_STATICLIB "
else
CPPFLAG_CURL_STATICLIB=""
fi
if test "X${prefix}/include" = "X/usr/include"; then
echo "$CPPFLAG_CURL_STATICLIB"
else
echo "${CPPFLAG_CURL_STATICLIB}-I${prefix}/include"
fi
;;
--libs)
if test "X${exec_prefix}/lib" != "X/usr/lib" -a "X${exec_prefix}/lib" != "X/usr/lib64"; then
CURLLIBDIR="-L${exec_prefix}/lib "
else
CURLLIBDIR=""
fi
if test "Xyes" = "Xno"; then
echo ${CURLLIBDIR}-lcurl -lssl -lcrypto -lssl -lcrypto
else
echo ${CURLLIBDIR}-lcurl
fi
;;
--ssl-backends)
echo "OpenSSL v3+"
;;
--static-libs)
if test "Xyes" != "Xno" ; then
echo "${exec_prefix}/lib/libcurl.a" -lssl -lcrypto -lssl -lcrypto
else
echo "curl was built with static libraries disabled" >&2
exit 1
fi
;;
--configure)
echo " '--prefix=/usr' '--sysconfdir=/etc' '--localstatedir=/var' '--host=riscv64-unknown-linux-musl' '--enable-shared' '--enable-static' '--with-openssl' '--without-libpsl' 'host_alias=riscv64-unknown-linux-musl'"
;;
*)
echo "unknown option: $1"
usage 1
;;
esac
shift
done
exit 0

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,79 @@
#ifndef CURLINC_CURLVER_H
#define CURLINC_CURLVER_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* SPDX-License-Identifier: curl
*
***************************************************************************/
/* This header file contains nothing but libcurl version info, generated by
a script at release-time. This was made its own header file in 7.11.2 */
/* This is the global package copyright */
#define LIBCURL_COPYRIGHT "Daniel Stenberg, <daniel@haxx.se>."
/* This is the version number of the libcurl package from which this header
file origins: */
#define LIBCURL_VERSION "8.6.0-DEV"
/* The numeric version number is also available "in parts" by using these
defines: */
#define LIBCURL_VERSION_MAJOR 8
#define LIBCURL_VERSION_MINOR 6
#define LIBCURL_VERSION_PATCH 0
/* This is the numeric version of the libcurl version number, meant for easier
parsing and comparisons by programs. The LIBCURL_VERSION_NUM define will
always follow this syntax:
0xXXYYZZ
Where XX, YY and ZZ are the main version, release and patch numbers in
hexadecimal (using 8 bits each). All three numbers are always represented
using two digits. 1.2 would appear as "0x010200" while version 9.11.7
appears as "0x090b07".
This 6-digit (24 bits) hexadecimal number does not show pre-release number,
and it is always a greater number in a more recent release. It makes
comparisons with greater than and less than work.
Note: This define is the full hex number and _does not_ use the
CURL_VERSION_BITS() macro since curl's own configure script greps for it
and needs it to contain the full number.
*/
#define LIBCURL_VERSION_NUM 0x080600
/*
* This is the date and time when the full source package was created. The
* timestamp is not stored in git, as the timestamp is properly set in the
* tarballs by the maketgz script.
*
* The format of the date follows this template:
*
* "2007-11-23"
*/
#define LIBCURL_TIMESTAMP "[unreleased]"
#define CURL_VERSION_BITS(x,y,z) ((x)<<16|(y)<<8|(z))
#define CURL_AT_LEAST_VERSION(x,y,z) \
(LIBCURL_VERSION_NUM >= CURL_VERSION_BITS(x, y, z))
#endif /* CURLINC_CURLVER_H */

View File

@@ -0,0 +1,125 @@
#ifndef CURLINC_EASY_H
#define CURLINC_EASY_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* SPDX-License-Identifier: curl
*
***************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/* Flag bits in the curl_blob struct: */
#define CURL_BLOB_COPY 1 /* tell libcurl to copy the data */
#define CURL_BLOB_NOCOPY 0 /* tell libcurl to NOT copy the data */
struct curl_blob {
void *data;
size_t len;
unsigned int flags; /* bit 0 is defined, the rest are reserved and should be
left zeroes */
};
CURL_EXTERN CURL *curl_easy_init(void);
CURL_EXTERN CURLcode curl_easy_setopt(CURL *curl, CURLoption option, ...);
CURL_EXTERN CURLcode curl_easy_perform(CURL *curl);
CURL_EXTERN void curl_easy_cleanup(CURL *curl);
/*
* NAME curl_easy_getinfo()
*
* DESCRIPTION
*
* Request internal information from the curl session with this function.
* The third argument MUST be pointing to the specific type of the used option
* which is documented in each man page of the option. The data pointed to
* will be filled in accordingly and can be relied upon only if the function
* returns CURLE_OK. This function is intended to get used *AFTER* a performed
* transfer, all results from this function are undefined until the transfer
* is completed.
*/
CURL_EXTERN CURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ...);
/*
* NAME curl_easy_duphandle()
*
* DESCRIPTION
*
* Creates a new curl session handle with the same options set for the handle
* passed in. Duplicating a handle could only be a matter of cloning data and
* options, internal state info and things like persistent connections cannot
* be transferred. It is useful in multithreaded applications when you can run
* curl_easy_duphandle() for each new thread to avoid a series of identical
* curl_easy_setopt() invokes in every thread.
*/
CURL_EXTERN CURL *curl_easy_duphandle(CURL *curl);
/*
* NAME curl_easy_reset()
*
* DESCRIPTION
*
* Re-initializes a CURL handle to the default values. This puts back the
* handle to the same state as it was in when it was just created.
*
* It does keep: live connections, the Session ID cache, the DNS cache and the
* cookies.
*/
CURL_EXTERN void curl_easy_reset(CURL *curl);
/*
* NAME curl_easy_recv()
*
* DESCRIPTION
*
* Receives data from the connected socket. Use after successful
* curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
*/
CURL_EXTERN CURLcode curl_easy_recv(CURL *curl, void *buffer, size_t buflen,
size_t *n);
/*
* NAME curl_easy_send()
*
* DESCRIPTION
*
* Sends data over the connected socket. Use after successful
* curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
*/
CURL_EXTERN CURLcode curl_easy_send(CURL *curl, const void *buffer,
size_t buflen, size_t *n);
/*
* NAME curl_easy_upkeep()
*
* DESCRIPTION
*
* Performs connection upkeep for the given session handle.
*/
CURL_EXTERN CURLcode curl_easy_upkeep(CURL *curl);
#ifdef __cplusplus
} /* end of extern "C" */
#endif
#endif

View File

@@ -0,0 +1,74 @@
#ifndef CURLINC_HEADER_H
#define CURLINC_HEADER_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* SPDX-License-Identifier: curl
*
***************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
struct curl_header {
char *name; /* this might not use the same case */
char *value;
size_t amount; /* number of headers using this name */
size_t index; /* ... of this instance, 0 or higher */
unsigned int origin; /* see bits below */
void *anchor; /* handle privately used by libcurl */
};
/* 'origin' bits */
#define CURLH_HEADER (1<<0) /* plain server header */
#define CURLH_TRAILER (1<<1) /* trailers */
#define CURLH_CONNECT (1<<2) /* CONNECT headers */
#define CURLH_1XX (1<<3) /* 1xx headers */
#define CURLH_PSEUDO (1<<4) /* pseudo headers */
typedef enum {
CURLHE_OK,
CURLHE_BADINDEX, /* header exists but not with this index */
CURLHE_MISSING, /* no such header exists */
CURLHE_NOHEADERS, /* no headers at all exist (yet) */
CURLHE_NOREQUEST, /* no request with this number was used */
CURLHE_OUT_OF_MEMORY, /* out of memory while processing */
CURLHE_BAD_ARGUMENT, /* a function argument was not okay */
CURLHE_NOT_BUILT_IN /* if API was disabled in the build */
} CURLHcode;
CURL_EXTERN CURLHcode curl_easy_header(CURL *easy,
const char *name,
size_t index,
unsigned int origin,
int request,
struct curl_header **hout);
CURL_EXTERN struct curl_header *curl_easy_nextheader(CURL *easy,
unsigned int origin,
int request,
struct curl_header *prev);
#ifdef __cplusplus
} /* end of extern "C" */
#endif
#endif /* CURLINC_HEADER_H */

View File

@@ -0,0 +1,78 @@
#ifndef CURLINC_MPRINTF_H
#define CURLINC_MPRINTF_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* SPDX-License-Identifier: curl
*
***************************************************************************/
#include <stdarg.h>
#include <stdio.h> /* needed for FILE */
#include "curl.h" /* for CURL_EXTERN */
#ifdef __cplusplus
extern "C" {
#endif
#if (defined(__GNUC__) || defined(__clang__)) && \
defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \
!defined(CURL_NO_FMT_CHECKS)
#if defined(__MINGW32__) && !defined(__clang__)
#define CURL_TEMP_PRINTF(fmt, arg) \
__attribute__((format(gnu_printf, fmt, arg)))
#else
#define CURL_TEMP_PRINTF(fmt, arg) \
__attribute__((format(printf, fmt, arg)))
#endif
#else
#define CURL_TEMP_PRINTF(fmt, arg)
#endif
CURL_EXTERN int curl_mprintf(const char *format, ...)
CURL_TEMP_PRINTF(1, 2);
CURL_EXTERN int curl_mfprintf(FILE *fd, const char *format, ...)
CURL_TEMP_PRINTF(2, 3);
CURL_EXTERN int curl_msprintf(char *buffer, const char *format, ...)
CURL_TEMP_PRINTF(2, 3);
CURL_EXTERN int curl_msnprintf(char *buffer, size_t maxlength,
const char *format, ...)
CURL_TEMP_PRINTF(3, 4);
CURL_EXTERN int curl_mvprintf(const char *format, va_list args)
CURL_TEMP_PRINTF(1, 0);
CURL_EXTERN int curl_mvfprintf(FILE *fd, const char *format, va_list args)
CURL_TEMP_PRINTF(2, 0);
CURL_EXTERN int curl_mvsprintf(char *buffer, const char *format, va_list args)
CURL_TEMP_PRINTF(2, 0);
CURL_EXTERN int curl_mvsnprintf(char *buffer, size_t maxlength,
const char *format, va_list args)
CURL_TEMP_PRINTF(3, 0);
CURL_EXTERN char *curl_maprintf(const char *format, ...)
CURL_TEMP_PRINTF(1, 2);
CURL_EXTERN char *curl_mvaprintf(const char *format, va_list args)
CURL_TEMP_PRINTF(1, 0);
#undef CURL_TEMP_PRINTF
#ifdef __cplusplus
} /* end of extern "C" */
#endif
#endif /* CURLINC_MPRINTF_H */

View File

@@ -0,0 +1,471 @@
#ifndef CURLINC_MULTI_H
#define CURLINC_MULTI_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* SPDX-License-Identifier: curl
*
***************************************************************************/
/*
This is an "external" header file. Don't give away any internals here!
GOALS
o Enable a "pull" interface. The application that uses libcurl decides where
and when to ask libcurl to get/send data.
o Enable multiple simultaneous transfers in the same thread without making it
complicated for the application.
o Enable the application to select() on its own file descriptors and curl's
file descriptors simultaneous easily.
*/
/*
* This header file should not really need to include "curl.h" since curl.h
* itself includes this file and we expect user applications to do #include
* <curl/curl.h> without the need for especially including multi.h.
*
* For some reason we added this include here at one point, and rather than to
* break existing (wrongly written) libcurl applications, we leave it as-is
* but with this warning attached.
*/
#include "curl.h"
#ifdef __cplusplus
extern "C" {
#endif
#if defined(BUILDING_LIBCURL) || defined(CURL_STRICTER)
typedef struct Curl_multi CURLM;
#else
typedef void CURLM;
#endif
typedef enum {
CURLM_CALL_MULTI_PERFORM = -1, /* please call curl_multi_perform() or
curl_multi_socket*() soon */
CURLM_OK,
CURLM_BAD_HANDLE, /* the passed-in handle is not a valid CURLM handle */
CURLM_BAD_EASY_HANDLE, /* an easy handle was not good/valid */
CURLM_OUT_OF_MEMORY, /* if you ever get this, you're in deep sh*t */
CURLM_INTERNAL_ERROR, /* this is a libcurl bug */
CURLM_BAD_SOCKET, /* the passed in socket argument did not match */
CURLM_UNKNOWN_OPTION, /* curl_multi_setopt() with unsupported option */
CURLM_ADDED_ALREADY, /* an easy handle already added to a multi handle was
attempted to get added - again */
CURLM_RECURSIVE_API_CALL, /* an api function was called from inside a
callback */
CURLM_WAKEUP_FAILURE, /* wakeup is unavailable or failed */
CURLM_BAD_FUNCTION_ARGUMENT, /* function called with a bad parameter */
CURLM_ABORTED_BY_CALLBACK,
CURLM_UNRECOVERABLE_POLL,
CURLM_LAST
} CURLMcode;
/* just to make code nicer when using curl_multi_socket() you can now check
for CURLM_CALL_MULTI_SOCKET too in the same style it works for
curl_multi_perform() and CURLM_CALL_MULTI_PERFORM */
#define CURLM_CALL_MULTI_SOCKET CURLM_CALL_MULTI_PERFORM
/* bitmask bits for CURLMOPT_PIPELINING */
#define CURLPIPE_NOTHING 0L
#define CURLPIPE_HTTP1 1L
#define CURLPIPE_MULTIPLEX 2L
typedef enum {
CURLMSG_NONE, /* first, not used */
CURLMSG_DONE, /* This easy handle has completed. 'result' contains
the CURLcode of the transfer */
CURLMSG_LAST /* last, not used */
} CURLMSG;
struct CURLMsg {
CURLMSG msg; /* what this message means */
CURL *easy_handle; /* the handle it concerns */
union {
void *whatever; /* message-specific data */
CURLcode result; /* return code for transfer */
} data;
};
typedef struct CURLMsg CURLMsg;
/* Based on poll(2) structure and values.
* We don't use pollfd and POLL* constants explicitly
* to cover platforms without poll(). */
#define CURL_WAIT_POLLIN 0x0001
#define CURL_WAIT_POLLPRI 0x0002
#define CURL_WAIT_POLLOUT 0x0004
struct curl_waitfd {
curl_socket_t fd;
short events;
short revents;
};
/*
* Name: curl_multi_init()
*
* Desc: initialize multi-style curl usage
*
* Returns: a new CURLM handle to use in all 'curl_multi' functions.
*/
CURL_EXTERN CURLM *curl_multi_init(void);
/*
* Name: curl_multi_add_handle()
*
* Desc: add a standard curl handle to the multi stack
*
* Returns: CURLMcode type, general multi error code.
*/
CURL_EXTERN CURLMcode curl_multi_add_handle(CURLM *multi_handle,
CURL *curl_handle);
/*
* Name: curl_multi_remove_handle()
*
* Desc: removes a curl handle from the multi stack again
*
* Returns: CURLMcode type, general multi error code.
*/
CURL_EXTERN CURLMcode curl_multi_remove_handle(CURLM *multi_handle,
CURL *curl_handle);
/*
* Name: curl_multi_fdset()
*
* Desc: Ask curl for its fd_set sets. The app can use these to select() or
* poll() on. We want curl_multi_perform() called as soon as one of
* them are ready.
*
* Returns: CURLMcode type, general multi error code.
*/
CURL_EXTERN CURLMcode curl_multi_fdset(CURLM *multi_handle,
fd_set *read_fd_set,
fd_set *write_fd_set,
fd_set *exc_fd_set,
int *max_fd);
/*
* Name: curl_multi_wait()
*
* Desc: Poll on all fds within a CURLM set as well as any
* additional fds passed to the function.
*
* Returns: CURLMcode type, general multi error code.
*/
CURL_EXTERN CURLMcode curl_multi_wait(CURLM *multi_handle,
struct curl_waitfd extra_fds[],
unsigned int extra_nfds,
int timeout_ms,
int *ret);
/*
* Name: curl_multi_poll()
*
* Desc: Poll on all fds within a CURLM set as well as any
* additional fds passed to the function.
*
* Returns: CURLMcode type, general multi error code.
*/
CURL_EXTERN CURLMcode curl_multi_poll(CURLM *multi_handle,
struct curl_waitfd extra_fds[],
unsigned int extra_nfds,
int timeout_ms,
int *ret);
/*
* Name: curl_multi_wakeup()
*
* Desc: wakes up a sleeping curl_multi_poll call.
*
* Returns: CURLMcode type, general multi error code.
*/
CURL_EXTERN CURLMcode curl_multi_wakeup(CURLM *multi_handle);
/*
* Name: curl_multi_perform()
*
* Desc: When the app thinks there's data available for curl it calls this
* function to read/write whatever there is right now. This returns
* as soon as the reads and writes are done. This function does not
* require that there actually is data available for reading or that
* data can be written, it can be called just in case. It returns
* the number of handles that still transfer data in the second
* argument's integer-pointer.
*
* Returns: CURLMcode type, general multi error code. *NOTE* that this only
* returns errors etc regarding the whole multi stack. There might
* still have occurred problems on individual transfers even when
* this returns OK.
*/
CURL_EXTERN CURLMcode curl_multi_perform(CURLM *multi_handle,
int *running_handles);
/*
* Name: curl_multi_cleanup()
*
* Desc: Cleans up and removes a whole multi stack. It does not free or
* touch any individual easy handles in any way. We need to define
* in what state those handles will be if this function is called
* in the middle of a transfer.
*
* Returns: CURLMcode type, general multi error code.
*/
CURL_EXTERN CURLMcode curl_multi_cleanup(CURLM *multi_handle);
/*
* Name: curl_multi_info_read()
*
* Desc: Ask the multi handle if there's any messages/informationals from
* the individual transfers. Messages include informationals such as
* error code from the transfer or just the fact that a transfer is
* completed. More details on these should be written down as well.
*
* Repeated calls to this function will return a new struct each
* time, until a special "end of msgs" struct is returned as a signal
* that there is no more to get at this point.
*
* The data the returned pointer points to will not survive calling
* curl_multi_cleanup().
*
* The 'CURLMsg' struct is meant to be very simple and only contain
* very basic information. If more involved information is wanted,
* we will provide the particular "transfer handle" in that struct
* and that should/could/would be used in subsequent
* curl_easy_getinfo() calls (or similar). The point being that we
* must never expose complex structs to applications, as then we'll
* undoubtably get backwards compatibility problems in the future.
*
* Returns: A pointer to a filled-in struct, or NULL if it failed or ran out
* of structs. It also writes the number of messages left in the
* queue (after this read) in the integer the second argument points
* to.
*/
CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle,
int *msgs_in_queue);
/*
* Name: curl_multi_strerror()
*
* Desc: The curl_multi_strerror function may be used to turn a CURLMcode
* value into the equivalent human readable error string. This is
* useful for printing meaningful error messages.
*
* Returns: A pointer to a null-terminated error message.
*/
CURL_EXTERN const char *curl_multi_strerror(CURLMcode);
/*
* Name: curl_multi_socket() and
* curl_multi_socket_all()
*
* Desc: An alternative version of curl_multi_perform() that allows the
* application to pass in one of the file descriptors that have been
* detected to have "action" on them and let libcurl perform.
* See man page for details.
*/
#define CURL_POLL_NONE 0
#define CURL_POLL_IN 1
#define CURL_POLL_OUT 2
#define CURL_POLL_INOUT 3
#define CURL_POLL_REMOVE 4
#define CURL_SOCKET_TIMEOUT CURL_SOCKET_BAD
#define CURL_CSELECT_IN 0x01
#define CURL_CSELECT_OUT 0x02
#define CURL_CSELECT_ERR 0x04
typedef int (*curl_socket_callback)(CURL *easy, /* easy handle */
curl_socket_t s, /* socket */
int what, /* see above */
void *userp, /* private callback
pointer */
void *socketp); /* private socket
pointer */
/*
* Name: curl_multi_timer_callback
*
* Desc: Called by libcurl whenever the library detects a change in the
* maximum number of milliseconds the app is allowed to wait before
* curl_multi_socket() or curl_multi_perform() must be called
* (to allow libcurl's timed events to take place).
*
* Returns: The callback should return zero.
*/
typedef int (*curl_multi_timer_callback)(CURLM *multi, /* multi handle */
long timeout_ms, /* see above */
void *userp); /* private callback
pointer */
CURL_EXTERN CURLMcode CURL_DEPRECATED(7.19.5, "Use curl_multi_socket_action()")
curl_multi_socket(CURLM *multi_handle, curl_socket_t s, int *running_handles);
CURL_EXTERN CURLMcode curl_multi_socket_action(CURLM *multi_handle,
curl_socket_t s,
int ev_bitmask,
int *running_handles);
CURL_EXTERN CURLMcode CURL_DEPRECATED(7.19.5, "Use curl_multi_socket_action()")
curl_multi_socket_all(CURLM *multi_handle, int *running_handles);
#ifndef CURL_ALLOW_OLD_MULTI_SOCKET
/* This macro below was added in 7.16.3 to push users who recompile to use
the new curl_multi_socket_action() instead of the old curl_multi_socket()
*/
#define curl_multi_socket(x,y,z) curl_multi_socket_action(x,y,0,z)
#endif
/*
* Name: curl_multi_timeout()
*
* Desc: Returns the maximum number of milliseconds the app is allowed to
* wait before curl_multi_socket() or curl_multi_perform() must be
* called (to allow libcurl's timed events to take place).
*
* Returns: CURLM error code.
*/
CURL_EXTERN CURLMcode curl_multi_timeout(CURLM *multi_handle,
long *milliseconds);
typedef enum {
/* This is the socket callback function pointer */
CURLOPT(CURLMOPT_SOCKETFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 1),
/* This is the argument passed to the socket callback */
CURLOPT(CURLMOPT_SOCKETDATA, CURLOPTTYPE_OBJECTPOINT, 2),
/* set to 1 to enable pipelining for this multi handle */
CURLOPT(CURLMOPT_PIPELINING, CURLOPTTYPE_LONG, 3),
/* This is the timer callback function pointer */
CURLOPT(CURLMOPT_TIMERFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 4),
/* This is the argument passed to the timer callback */
CURLOPT(CURLMOPT_TIMERDATA, CURLOPTTYPE_OBJECTPOINT, 5),
/* maximum number of entries in the connection cache */
CURLOPT(CURLMOPT_MAXCONNECTS, CURLOPTTYPE_LONG, 6),
/* maximum number of (pipelining) connections to one host */
CURLOPT(CURLMOPT_MAX_HOST_CONNECTIONS, CURLOPTTYPE_LONG, 7),
/* maximum number of requests in a pipeline */
CURLOPT(CURLMOPT_MAX_PIPELINE_LENGTH, CURLOPTTYPE_LONG, 8),
/* a connection with a content-length longer than this
will not be considered for pipelining */
CURLOPT(CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, CURLOPTTYPE_OFF_T, 9),
/* a connection with a chunk length longer than this
will not be considered for pipelining */
CURLOPT(CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, CURLOPTTYPE_OFF_T, 10),
/* a list of site names(+port) that are blocked from pipelining */
CURLOPT(CURLMOPT_PIPELINING_SITE_BL, CURLOPTTYPE_OBJECTPOINT, 11),
/* a list of server types that are blocked from pipelining */
CURLOPT(CURLMOPT_PIPELINING_SERVER_BL, CURLOPTTYPE_OBJECTPOINT, 12),
/* maximum number of open connections in total */
CURLOPT(CURLMOPT_MAX_TOTAL_CONNECTIONS, CURLOPTTYPE_LONG, 13),
/* This is the server push callback function pointer */
CURLOPT(CURLMOPT_PUSHFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 14),
/* This is the argument passed to the server push callback */
CURLOPT(CURLMOPT_PUSHDATA, CURLOPTTYPE_OBJECTPOINT, 15),
/* maximum number of concurrent streams to support on a connection */
CURLOPT(CURLMOPT_MAX_CONCURRENT_STREAMS, CURLOPTTYPE_LONG, 16),
CURLMOPT_LASTENTRY /* the last unused */
} CURLMoption;
/*
* Name: curl_multi_setopt()
*
* Desc: Sets options for the multi handle.
*
* Returns: CURLM error code.
*/
CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle,
CURLMoption option, ...);
/*
* Name: curl_multi_assign()
*
* Desc: This function sets an association in the multi handle between the
* given socket and a private pointer of the application. This is
* (only) useful for curl_multi_socket uses.
*
* Returns: CURLM error code.
*/
CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle,
curl_socket_t sockfd, void *sockp);
/*
* Name: curl_multi_get_handles()
*
* Desc: Returns an allocated array holding all handles currently added to
* the multi handle. Marks the final entry with a NULL pointer. If
* there is no easy handle added to the multi handle, this function
* returns an array with the first entry as a NULL pointer.
*
* Returns: NULL on failure, otherwise a CURL **array pointer
*/
CURL_EXTERN CURL **curl_multi_get_handles(CURLM *multi_handle);
/*
* Name: curl_push_callback
*
* Desc: This callback gets called when a new stream is being pushed by the
* server. It approves or denies the new stream. It can also decide
* to completely fail the connection.
*
* Returns: CURL_PUSH_OK, CURL_PUSH_DENY or CURL_PUSH_ERROROUT
*/
#define CURL_PUSH_OK 0
#define CURL_PUSH_DENY 1
#define CURL_PUSH_ERROROUT 2 /* added in 7.72.0 */
struct curl_pushheaders; /* forward declaration only */
CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h,
size_t num);
CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h,
const char *name);
typedef int (*curl_push_callback)(CURL *parent,
CURL *easy,
size_t num_headers,
struct curl_pushheaders *headers,
void *userp);
#ifdef __cplusplus
} /* end of extern "C" */
#endif
#endif

View File

@@ -0,0 +1,70 @@
#ifndef CURLINC_OPTIONS_H
#define CURLINC_OPTIONS_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* SPDX-License-Identifier: curl
*
***************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
typedef enum {
CURLOT_LONG, /* long (a range of values) */
CURLOT_VALUES, /* (a defined set or bitmask) */
CURLOT_OFF_T, /* curl_off_t (a range of values) */
CURLOT_OBJECT, /* pointer (void *) */
CURLOT_STRING, /* (char * to null-terminated buffer) */
CURLOT_SLIST, /* (struct curl_slist *) */
CURLOT_CBPTR, /* (void * passed as-is to a callback) */
CURLOT_BLOB, /* blob (struct curl_blob *) */
CURLOT_FUNCTION /* function pointer */
} curl_easytype;
/* Flag bits */
/* "alias" means it is provided for old programs to remain functional,
we prefer another name */
#define CURLOT_FLAG_ALIAS (1<<0)
/* The CURLOPTTYPE_* id ranges can still be used to figure out what type/size
to use for curl_easy_setopt() for the given id */
struct curl_easyoption {
const char *name;
CURLoption id;
curl_easytype type;
unsigned int flags;
};
CURL_EXTERN const struct curl_easyoption *
curl_easy_option_by_name(const char *name);
CURL_EXTERN const struct curl_easyoption *
curl_easy_option_by_id(CURLoption id);
CURL_EXTERN const struct curl_easyoption *
curl_easy_option_next(const struct curl_easyoption *prev);
#ifdef __cplusplus
} /* end of extern "C" */
#endif
#endif /* CURLINC_OPTIONS_H */

View File

@@ -0,0 +1,35 @@
#ifndef CURLINC_STDCHEADERS_H
#define CURLINC_STDCHEADERS_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* SPDX-License-Identifier: curl
*
***************************************************************************/
#include <sys/types.h>
size_t fread(void *, size_t, size_t, FILE *);
size_t fwrite(const void *, size_t, size_t, FILE *);
int strcasecmp(const char *, const char *);
int strncasecmp(const char *, const char *, size_t);
#endif /* CURLINC_STDCHEADERS_H */

View File

@@ -0,0 +1,496 @@
#ifndef CURLINC_SYSTEM_H
#define CURLINC_SYSTEM_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* SPDX-License-Identifier: curl
*
***************************************************************************/
/*
* Try to keep one section per platform, compiler and architecture, otherwise,
* if an existing section is reused for a different one and later on the
* original is adjusted, probably the piggybacking one can be adversely
* changed.
*
* In order to differentiate between platforms/compilers/architectures use
* only compiler built in predefined preprocessor symbols.
*
* curl_off_t
* ----------
*
* For any given platform/compiler curl_off_t must be typedef'ed to a 64-bit
* wide signed integral data type. The width of this data type must remain
* constant and independent of any possible large file support settings.
*
* As an exception to the above, curl_off_t shall be typedef'ed to a 32-bit
* wide signed integral data type if there is no 64-bit type.
*
* As a general rule, curl_off_t shall not be mapped to off_t. This rule shall
* only be violated if off_t is the only 64-bit data type available and the
* size of off_t is independent of large file support settings. Keep your
* build on the safe side avoiding an off_t gating. If you have a 64-bit
* off_t then take for sure that another 64-bit data type exists, dig deeper
* and you will find it.
*
*/
#if defined(__DJGPP__) || defined(__GO32__)
# if defined(__DJGPP__) && (__DJGPP__ > 1)
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# else
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
# define CURL_TYPEOF_CURL_SOCKLEN_T int
#elif defined(__SALFORDC__)
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# define CURL_TYPEOF_CURL_SOCKLEN_T int
#elif defined(__BORLANDC__)
# if (__BORLANDC__ < 0x520)
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# else
# define CURL_TYPEOF_CURL_OFF_T __int64
# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_SUFFIX_CURL_OFF_T i64
# define CURL_SUFFIX_CURL_OFF_TU ui64
# endif
# define CURL_TYPEOF_CURL_SOCKLEN_T int
#elif defined(__TURBOC__)
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# define CURL_TYPEOF_CURL_SOCKLEN_T int
#elif defined(__POCC__)
# if (__POCC__ < 280)
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# elif defined(_MSC_VER)
# define CURL_TYPEOF_CURL_OFF_T __int64
# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_SUFFIX_CURL_OFF_T i64
# define CURL_SUFFIX_CURL_OFF_TU ui64
# else
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# endif
# define CURL_TYPEOF_CURL_SOCKLEN_T int
#elif defined(__LCC__)
# if defined(__MCST__) /* MCST eLbrus Compiler Collection */
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
# define CURL_PULL_SYS_TYPES_H 1
# define CURL_PULL_SYS_SOCKET_H 1
# else /* Local (or Little) C Compiler */
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# define CURL_TYPEOF_CURL_SOCKLEN_T int
# endif
#elif defined(macintosh)
# include <ConditionalMacros.h>
# if TYPE_LONGLONG
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# else
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
#elif defined(__TANDEM)
# if ! defined(__LP64)
/* Required for 32-bit NonStop builds only. */
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# define CURL_TYPEOF_CURL_SOCKLEN_T int
# endif
#elif defined(_WIN32_WCE)
# define CURL_TYPEOF_CURL_OFF_T __int64
# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_SUFFIX_CURL_OFF_T i64
# define CURL_SUFFIX_CURL_OFF_TU ui64
# define CURL_TYPEOF_CURL_SOCKLEN_T int
#elif defined(__MINGW32__)
# include <inttypes.h>
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T PRId64
# define CURL_FORMAT_CURL_OFF_TU PRIu64
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# define CURL_TYPEOF_CURL_SOCKLEN_T int
# define CURL_PULL_SYS_TYPES_H 1
#elif defined(__VMS)
# if defined(__VAX)
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# else
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# endif
# define CURL_TYPEOF_CURL_SOCKLEN_T unsigned int
#elif defined(__OS400__)
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
# define CURL_PULL_SYS_TYPES_H 1
# define CURL_PULL_SYS_SOCKET_H 1
#elif defined(__MVS__)
# if defined(_LONG_LONG)
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# elif defined(_LP64)
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# else
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
# define CURL_PULL_SYS_TYPES_H 1
# define CURL_PULL_SYS_SOCKET_H 1
#elif defined(__370__)
# if defined(__IBMC__) || defined(__IBMCPP__)
# if defined(_ILP32)
# elif defined(_LP64)
# endif
# if defined(_LONG_LONG)
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# elif defined(_LP64)
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# else
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
# define CURL_PULL_SYS_TYPES_H 1
# define CURL_PULL_SYS_SOCKET_H 1
# endif
#elif defined(TPF)
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# define CURL_TYPEOF_CURL_SOCKLEN_T int
#elif defined(__TINYC__) /* also known as tcc */
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
# define CURL_PULL_SYS_TYPES_H 1
# define CURL_PULL_SYS_SOCKET_H 1
#elif defined(__SUNPRO_C) || defined(__SUNPRO_CC) /* Oracle Solaris Studio */
# if !defined(__LP64) && (defined(__ILP32) || \
defined(__i386) || \
defined(__sparcv8) || \
defined(__sparcv8plus))
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# elif defined(__LP64) || \
defined(__amd64) || defined(__sparcv9)
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
# define CURL_PULL_SYS_TYPES_H 1
# define CURL_PULL_SYS_SOCKET_H 1
#elif defined(__xlc__) /* IBM xlc compiler */
# if !defined(_LP64)
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# else
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
# define CURL_PULL_SYS_TYPES_H 1
# define CURL_PULL_SYS_SOCKET_H 1
#elif defined(__hpux) /* HP aCC compiler */
# if !defined(_LP64)
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# else
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
# define CURL_PULL_SYS_TYPES_H 1
# define CURL_PULL_SYS_SOCKET_H 1
/* ===================================== */
/* KEEP MSVC THE PENULTIMATE ENTRY */
/* ===================================== */
#elif defined(_MSC_VER)
# if (_MSC_VER >= 1800)
# include <inttypes.h>
# define CURL_TYPEOF_CURL_OFF_T __int64
# define CURL_FORMAT_CURL_OFF_T PRId64
# define CURL_FORMAT_CURL_OFF_TU PRIu64
# define CURL_SUFFIX_CURL_OFF_T i64
# define CURL_SUFFIX_CURL_OFF_TU ui64
# elif (_MSC_VER >= 900) && (_INTEGRAL_MAX_BITS >= 64)
# define CURL_TYPEOF_CURL_OFF_T __int64
# define CURL_FORMAT_CURL_OFF_T "I64d"
# define CURL_FORMAT_CURL_OFF_TU "I64u"
# define CURL_SUFFIX_CURL_OFF_T i64
# define CURL_SUFFIX_CURL_OFF_TU ui64
# else
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
# define CURL_TYPEOF_CURL_SOCKLEN_T int
/* ===================================== */
/* KEEP GENERIC GCC THE LAST ENTRY */
/* ===================================== */
#elif defined(__GNUC__) && !defined(_SCO_DS)
# if !defined(__LP64__) && \
(defined(__ILP32__) || defined(__i386__) || defined(__hppa__) || \
defined(__ppc__) || defined(__powerpc__) || defined(__arm__) || \
defined(__sparc__) || defined(__mips__) || defined(__sh__) || \
defined(__XTENSA__) || \
(defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 4) || \
(defined(__LONG_MAX__) && __LONG_MAX__ == 2147483647L))
# define CURL_TYPEOF_CURL_OFF_T long long
# define CURL_FORMAT_CURL_OFF_T "lld"
# define CURL_FORMAT_CURL_OFF_TU "llu"
# define CURL_SUFFIX_CURL_OFF_T LL
# define CURL_SUFFIX_CURL_OFF_TU ULL
# elif defined(__LP64__) || \
defined(__x86_64__) || defined(__ppc64__) || defined(__sparc64__) || \
defined(__e2k__) || \
(defined(__SIZEOF_LONG__) && __SIZEOF_LONG__ == 8) || \
(defined(__LONG_MAX__) && __LONG_MAX__ == 9223372036854775807L)
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# endif
# define CURL_TYPEOF_CURL_SOCKLEN_T socklen_t
# define CURL_PULL_SYS_TYPES_H 1
# define CURL_PULL_SYS_SOCKET_H 1
#else
/* generic "safe guess" on old 32 bit style */
# define CURL_TYPEOF_CURL_OFF_T long
# define CURL_FORMAT_CURL_OFF_T "ld"
# define CURL_FORMAT_CURL_OFF_TU "lu"
# define CURL_SUFFIX_CURL_OFF_T L
# define CURL_SUFFIX_CURL_OFF_TU UL
# define CURL_TYPEOF_CURL_SOCKLEN_T int
#endif
#ifdef _AIX
/* AIX needs <sys/poll.h> */
#define CURL_PULL_SYS_POLL_H
#endif
/* CURL_PULL_SYS_TYPES_H is defined above when inclusion of header file */
/* sys/types.h is required here to properly make type definitions below. */
#ifdef CURL_PULL_SYS_TYPES_H
# include <sys/types.h>
#endif
/* CURL_PULL_SYS_SOCKET_H is defined above when inclusion of header file */
/* sys/socket.h is required here to properly make type definitions below. */
#ifdef CURL_PULL_SYS_SOCKET_H
# include <sys/socket.h>
#endif
/* CURL_PULL_SYS_POLL_H is defined above when inclusion of header file */
/* sys/poll.h is required here to properly make type definitions below. */
#ifdef CURL_PULL_SYS_POLL_H
# include <sys/poll.h>
#endif
/* Data type definition of curl_socklen_t. */
#ifdef CURL_TYPEOF_CURL_SOCKLEN_T
typedef CURL_TYPEOF_CURL_SOCKLEN_T curl_socklen_t;
#endif
/* Data type definition of curl_off_t. */
#ifdef CURL_TYPEOF_CURL_OFF_T
typedef CURL_TYPEOF_CURL_OFF_T curl_off_t;
#endif
/*
* CURL_ISOCPP and CURL_OFF_T_C definitions are done here in order to allow
* these to be visible and exported by the external libcurl interface API,
* while also making them visible to the library internals, simply including
* curl_setup.h, without actually needing to include curl.h internally.
* If some day this section would grow big enough, all this should be moved
* to its own header file.
*/
/*
* Figure out if we can use the ## preprocessor operator, which is supported
* by ISO/ANSI C and C++. Some compilers support it without setting __STDC__
* or __cplusplus so we need to carefully check for them too.
*/
#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \
defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) || \
defined(__POCC__) || defined(__SALFORDC__) || defined(__HIGHC__) || \
defined(__ILEC400__)
/* This compiler is believed to have an ISO compatible preprocessor */
#define CURL_ISOCPP
#else
/* This compiler is believed NOT to have an ISO compatible preprocessor */
#undef CURL_ISOCPP
#endif
/*
* Macros for minimum-width signed and unsigned curl_off_t integer constants.
*/
#if defined(__BORLANDC__) && (__BORLANDC__ == 0x0551)
# define CURLINC_OFF_T_C_HLPR2(x) x
# define CURLINC_OFF_T_C_HLPR1(x) CURLINC_OFF_T_C_HLPR2(x)
# define CURL_OFF_T_C(Val) CURLINC_OFF_T_C_HLPR1(Val) ## \
CURLINC_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_T)
# define CURL_OFF_TU_C(Val) CURLINC_OFF_T_C_HLPR1(Val) ## \
CURLINC_OFF_T_C_HLPR1(CURL_SUFFIX_CURL_OFF_TU)
#else
# ifdef CURL_ISOCPP
# define CURLINC_OFF_T_C_HLPR2(Val,Suffix) Val ## Suffix
# else
# define CURLINC_OFF_T_C_HLPR2(Val,Suffix) Val/**/Suffix
# endif
# define CURLINC_OFF_T_C_HLPR1(Val,Suffix) CURLINC_OFF_T_C_HLPR2(Val,Suffix)
# define CURL_OFF_T_C(Val) CURLINC_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_T)
# define CURL_OFF_TU_C(Val) CURLINC_OFF_T_C_HLPR1(Val,CURL_SUFFIX_CURL_OFF_TU)
#endif
#endif /* CURLINC_SYSTEM_H */

View File

@@ -0,0 +1,717 @@
#ifndef CURLINC_TYPECHECK_GCC_H
#define CURLINC_TYPECHECK_GCC_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* SPDX-License-Identifier: curl
*
***************************************************************************/
/* wraps curl_easy_setopt() with typechecking */
/* To add a new kind of warning, add an
* if(curlcheck_sometype_option(_curl_opt))
* if(!curlcheck_sometype(value))
* _curl_easy_setopt_err_sometype();
* block and define curlcheck_sometype_option, curlcheck_sometype and
* _curl_easy_setopt_err_sometype below
*
* NOTE: We use two nested 'if' statements here instead of the && operator, in
* order to work around gcc bug #32061. It affects only gcc 4.3.x/4.4.x
* when compiling with -Wlogical-op.
*
* To add an option that uses the same type as an existing option, you'll just
* need to extend the appropriate _curl_*_option macro
*/
#define curl_easy_setopt(handle, option, value) \
__extension__({ \
CURLoption _curl_opt = (option); \
if(__builtin_constant_p(_curl_opt)) { \
CURL_IGNORE_DEPRECATION( \
if(curlcheck_long_option(_curl_opt)) \
if(!curlcheck_long(value)) \
_curl_easy_setopt_err_long(); \
if(curlcheck_off_t_option(_curl_opt)) \
if(!curlcheck_off_t(value)) \
_curl_easy_setopt_err_curl_off_t(); \
if(curlcheck_string_option(_curl_opt)) \
if(!curlcheck_string(value)) \
_curl_easy_setopt_err_string(); \
if(curlcheck_write_cb_option(_curl_opt)) \
if(!curlcheck_write_cb(value)) \
_curl_easy_setopt_err_write_callback(); \
if((_curl_opt) == CURLOPT_RESOLVER_START_FUNCTION) \
if(!curlcheck_resolver_start_callback(value)) \
_curl_easy_setopt_err_resolver_start_callback(); \
if((_curl_opt) == CURLOPT_READFUNCTION) \
if(!curlcheck_read_cb(value)) \
_curl_easy_setopt_err_read_cb(); \
if((_curl_opt) == CURLOPT_IOCTLFUNCTION) \
if(!curlcheck_ioctl_cb(value)) \
_curl_easy_setopt_err_ioctl_cb(); \
if((_curl_opt) == CURLOPT_SOCKOPTFUNCTION) \
if(!curlcheck_sockopt_cb(value)) \
_curl_easy_setopt_err_sockopt_cb(); \
if((_curl_opt) == CURLOPT_OPENSOCKETFUNCTION) \
if(!curlcheck_opensocket_cb(value)) \
_curl_easy_setopt_err_opensocket_cb(); \
if((_curl_opt) == CURLOPT_PROGRESSFUNCTION) \
if(!curlcheck_progress_cb(value)) \
_curl_easy_setopt_err_progress_cb(); \
if((_curl_opt) == CURLOPT_DEBUGFUNCTION) \
if(!curlcheck_debug_cb(value)) \
_curl_easy_setopt_err_debug_cb(); \
if((_curl_opt) == CURLOPT_SSL_CTX_FUNCTION) \
if(!curlcheck_ssl_ctx_cb(value)) \
_curl_easy_setopt_err_ssl_ctx_cb(); \
if(curlcheck_conv_cb_option(_curl_opt)) \
if(!curlcheck_conv_cb(value)) \
_curl_easy_setopt_err_conv_cb(); \
if((_curl_opt) == CURLOPT_SEEKFUNCTION) \
if(!curlcheck_seek_cb(value)) \
_curl_easy_setopt_err_seek_cb(); \
if(curlcheck_cb_data_option(_curl_opt)) \
if(!curlcheck_cb_data(value)) \
_curl_easy_setopt_err_cb_data(); \
if((_curl_opt) == CURLOPT_ERRORBUFFER) \
if(!curlcheck_error_buffer(value)) \
_curl_easy_setopt_err_error_buffer(); \
if((_curl_opt) == CURLOPT_STDERR) \
if(!curlcheck_FILE(value)) \
_curl_easy_setopt_err_FILE(); \
if(curlcheck_postfields_option(_curl_opt)) \
if(!curlcheck_postfields(value)) \
_curl_easy_setopt_err_postfields(); \
if((_curl_opt) == CURLOPT_HTTPPOST) \
if(!curlcheck_arr((value), struct curl_httppost)) \
_curl_easy_setopt_err_curl_httpost(); \
if((_curl_opt) == CURLOPT_MIMEPOST) \
if(!curlcheck_ptr((value), curl_mime)) \
_curl_easy_setopt_err_curl_mimepost(); \
if(curlcheck_slist_option(_curl_opt)) \
if(!curlcheck_arr((value), struct curl_slist)) \
_curl_easy_setopt_err_curl_slist(); \
if((_curl_opt) == CURLOPT_SHARE) \
if(!curlcheck_ptr((value), CURLSH)) \
_curl_easy_setopt_err_CURLSH(); \
) \
} \
curl_easy_setopt(handle, _curl_opt, value); \
})
/* wraps curl_easy_getinfo() with typechecking */
#define curl_easy_getinfo(handle, info, arg) \
__extension__({ \
CURLINFO _curl_info = (info); \
if(__builtin_constant_p(_curl_info)) { \
CURL_IGNORE_DEPRECATION( \
if(curlcheck_string_info(_curl_info)) \
if(!curlcheck_arr((arg), char *)) \
_curl_easy_getinfo_err_string(); \
if(curlcheck_long_info(_curl_info)) \
if(!curlcheck_arr((arg), long)) \
_curl_easy_getinfo_err_long(); \
if(curlcheck_double_info(_curl_info)) \
if(!curlcheck_arr((arg), double)) \
_curl_easy_getinfo_err_double(); \
if(curlcheck_slist_info(_curl_info)) \
if(!curlcheck_arr((arg), struct curl_slist *)) \
_curl_easy_getinfo_err_curl_slist(); \
if(curlcheck_tlssessioninfo_info(_curl_info)) \
if(!curlcheck_arr((arg), struct curl_tlssessioninfo *)) \
_curl_easy_getinfo_err_curl_tlssesssioninfo(); \
if(curlcheck_certinfo_info(_curl_info)) \
if(!curlcheck_arr((arg), struct curl_certinfo *)) \
_curl_easy_getinfo_err_curl_certinfo(); \
if(curlcheck_socket_info(_curl_info)) \
if(!curlcheck_arr((arg), curl_socket_t)) \
_curl_easy_getinfo_err_curl_socket(); \
if(curlcheck_off_t_info(_curl_info)) \
if(!curlcheck_arr((arg), curl_off_t)) \
_curl_easy_getinfo_err_curl_off_t(); \
) \
} \
curl_easy_getinfo(handle, _curl_info, arg); \
})
/*
* For now, just make sure that the functions are called with three arguments
*/
#define curl_share_setopt(share,opt,param) curl_share_setopt(share,opt,param)
#define curl_multi_setopt(handle,opt,param) curl_multi_setopt(handle,opt,param)
/* the actual warnings, triggered by calling the _curl_easy_setopt_err*
* functions */
/* To define a new warning, use _CURL_WARNING(identifier, "message") */
#define CURLWARNING(id, message) \
static void __attribute__((__warning__(message))) \
__attribute__((__unused__)) __attribute__((__noinline__)) \
id(void) { __asm__(""); }
CURLWARNING(_curl_easy_setopt_err_long,
"curl_easy_setopt expects a long argument for this option")
CURLWARNING(_curl_easy_setopt_err_curl_off_t,
"curl_easy_setopt expects a curl_off_t argument for this option")
CURLWARNING(_curl_easy_setopt_err_string,
"curl_easy_setopt expects a "
"string ('char *' or char[]) argument for this option"
)
CURLWARNING(_curl_easy_setopt_err_write_callback,
"curl_easy_setopt expects a curl_write_callback argument for this option")
CURLWARNING(_curl_easy_setopt_err_resolver_start_callback,
"curl_easy_setopt expects a "
"curl_resolver_start_callback argument for this option"
)
CURLWARNING(_curl_easy_setopt_err_read_cb,
"curl_easy_setopt expects a curl_read_callback argument for this option")
CURLWARNING(_curl_easy_setopt_err_ioctl_cb,
"curl_easy_setopt expects a curl_ioctl_callback argument for this option")
CURLWARNING(_curl_easy_setopt_err_sockopt_cb,
"curl_easy_setopt expects a curl_sockopt_callback argument for this option")
CURLWARNING(_curl_easy_setopt_err_opensocket_cb,
"curl_easy_setopt expects a "
"curl_opensocket_callback argument for this option"
)
CURLWARNING(_curl_easy_setopt_err_progress_cb,
"curl_easy_setopt expects a curl_progress_callback argument for this option")
CURLWARNING(_curl_easy_setopt_err_debug_cb,
"curl_easy_setopt expects a curl_debug_callback argument for this option")
CURLWARNING(_curl_easy_setopt_err_ssl_ctx_cb,
"curl_easy_setopt expects a curl_ssl_ctx_callback argument for this option")
CURLWARNING(_curl_easy_setopt_err_conv_cb,
"curl_easy_setopt expects a curl_conv_callback argument for this option")
CURLWARNING(_curl_easy_setopt_err_seek_cb,
"curl_easy_setopt expects a curl_seek_callback argument for this option")
CURLWARNING(_curl_easy_setopt_err_cb_data,
"curl_easy_setopt expects a "
"private data pointer as argument for this option")
CURLWARNING(_curl_easy_setopt_err_error_buffer,
"curl_easy_setopt expects a "
"char buffer of CURL_ERROR_SIZE as argument for this option")
CURLWARNING(_curl_easy_setopt_err_FILE,
"curl_easy_setopt expects a 'FILE *' argument for this option")
CURLWARNING(_curl_easy_setopt_err_postfields,
"curl_easy_setopt expects a 'void *' or 'char *' argument for this option")
CURLWARNING(_curl_easy_setopt_err_curl_httpost,
"curl_easy_setopt expects a 'struct curl_httppost *' "
"argument for this option")
CURLWARNING(_curl_easy_setopt_err_curl_mimepost,
"curl_easy_setopt expects a 'curl_mime *' "
"argument for this option")
CURLWARNING(_curl_easy_setopt_err_curl_slist,
"curl_easy_setopt expects a 'struct curl_slist *' argument for this option")
CURLWARNING(_curl_easy_setopt_err_CURLSH,
"curl_easy_setopt expects a CURLSH* argument for this option")
CURLWARNING(_curl_easy_getinfo_err_string,
"curl_easy_getinfo expects a pointer to 'char *' for this info")
CURLWARNING(_curl_easy_getinfo_err_long,
"curl_easy_getinfo expects a pointer to long for this info")
CURLWARNING(_curl_easy_getinfo_err_double,
"curl_easy_getinfo expects a pointer to double for this info")
CURLWARNING(_curl_easy_getinfo_err_curl_slist,
"curl_easy_getinfo expects a pointer to 'struct curl_slist *' for this info")
CURLWARNING(_curl_easy_getinfo_err_curl_tlssesssioninfo,
"curl_easy_getinfo expects a pointer to "
"'struct curl_tlssessioninfo *' for this info")
CURLWARNING(_curl_easy_getinfo_err_curl_certinfo,
"curl_easy_getinfo expects a pointer to "
"'struct curl_certinfo *' for this info")
CURLWARNING(_curl_easy_getinfo_err_curl_socket,
"curl_easy_getinfo expects a pointer to curl_socket_t for this info")
CURLWARNING(_curl_easy_getinfo_err_curl_off_t,
"curl_easy_getinfo expects a pointer to curl_off_t for this info")
/* groups of curl_easy_setops options that take the same type of argument */
/* To add a new option to one of the groups, just add
* (option) == CURLOPT_SOMETHING
* to the or-expression. If the option takes a long or curl_off_t, you don't
* have to do anything
*/
/* evaluates to true if option takes a long argument */
#define curlcheck_long_option(option) \
(0 < (option) && (option) < CURLOPTTYPE_OBJECTPOINT)
#define curlcheck_off_t_option(option) \
(((option) > CURLOPTTYPE_OFF_T) && ((option) < CURLOPTTYPE_BLOB))
/* evaluates to true if option takes a char* argument */
#define curlcheck_string_option(option) \
((option) == CURLOPT_ABSTRACT_UNIX_SOCKET || \
(option) == CURLOPT_ACCEPT_ENCODING || \
(option) == CURLOPT_ALTSVC || \
(option) == CURLOPT_CAINFO || \
(option) == CURLOPT_CAPATH || \
(option) == CURLOPT_COOKIE || \
(option) == CURLOPT_COOKIEFILE || \
(option) == CURLOPT_COOKIEJAR || \
(option) == CURLOPT_COOKIELIST || \
(option) == CURLOPT_CRLFILE || \
(option) == CURLOPT_CUSTOMREQUEST || \
(option) == CURLOPT_DEFAULT_PROTOCOL || \
(option) == CURLOPT_DNS_INTERFACE || \
(option) == CURLOPT_DNS_LOCAL_IP4 || \
(option) == CURLOPT_DNS_LOCAL_IP6 || \
(option) == CURLOPT_DNS_SERVERS || \
(option) == CURLOPT_DOH_URL || \
(option) == CURLOPT_EGDSOCKET || \
(option) == CURLOPT_FTP_ACCOUNT || \
(option) == CURLOPT_FTP_ALTERNATIVE_TO_USER || \
(option) == CURLOPT_FTPPORT || \
(option) == CURLOPT_HSTS || \
(option) == CURLOPT_HAPROXY_CLIENT_IP || \
(option) == CURLOPT_INTERFACE || \
(option) == CURLOPT_ISSUERCERT || \
(option) == CURLOPT_KEYPASSWD || \
(option) == CURLOPT_KRBLEVEL || \
(option) == CURLOPT_LOGIN_OPTIONS || \
(option) == CURLOPT_MAIL_AUTH || \
(option) == CURLOPT_MAIL_FROM || \
(option) == CURLOPT_NETRC_FILE || \
(option) == CURLOPT_NOPROXY || \
(option) == CURLOPT_PASSWORD || \
(option) == CURLOPT_PINNEDPUBLICKEY || \
(option) == CURLOPT_PRE_PROXY || \
(option) == CURLOPT_PROTOCOLS_STR || \
(option) == CURLOPT_PROXY || \
(option) == CURLOPT_PROXY_CAINFO || \
(option) == CURLOPT_PROXY_CAPATH || \
(option) == CURLOPT_PROXY_CRLFILE || \
(option) == CURLOPT_PROXY_ISSUERCERT || \
(option) == CURLOPT_PROXY_KEYPASSWD || \
(option) == CURLOPT_PROXY_PINNEDPUBLICKEY || \
(option) == CURLOPT_PROXY_SERVICE_NAME || \
(option) == CURLOPT_PROXY_SSL_CIPHER_LIST || \
(option) == CURLOPT_PROXY_SSLCERT || \
(option) == CURLOPT_PROXY_SSLCERTTYPE || \
(option) == CURLOPT_PROXY_SSLKEY || \
(option) == CURLOPT_PROXY_SSLKEYTYPE || \
(option) == CURLOPT_PROXY_TLS13_CIPHERS || \
(option) == CURLOPT_PROXY_TLSAUTH_PASSWORD || \
(option) == CURLOPT_PROXY_TLSAUTH_TYPE || \
(option) == CURLOPT_PROXY_TLSAUTH_USERNAME || \
(option) == CURLOPT_PROXYPASSWORD || \
(option) == CURLOPT_PROXYUSERNAME || \
(option) == CURLOPT_PROXYUSERPWD || \
(option) == CURLOPT_RANDOM_FILE || \
(option) == CURLOPT_RANGE || \
(option) == CURLOPT_REDIR_PROTOCOLS_STR || \
(option) == CURLOPT_REFERER || \
(option) == CURLOPT_REQUEST_TARGET || \
(option) == CURLOPT_RTSP_SESSION_ID || \
(option) == CURLOPT_RTSP_STREAM_URI || \
(option) == CURLOPT_RTSP_TRANSPORT || \
(option) == CURLOPT_SASL_AUTHZID || \
(option) == CURLOPT_SERVICE_NAME || \
(option) == CURLOPT_SOCKS5_GSSAPI_SERVICE || \
(option) == CURLOPT_SSH_HOST_PUBLIC_KEY_MD5 || \
(option) == CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256 || \
(option) == CURLOPT_SSH_KNOWNHOSTS || \
(option) == CURLOPT_SSH_PRIVATE_KEYFILE || \
(option) == CURLOPT_SSH_PUBLIC_KEYFILE || \
(option) == CURLOPT_SSLCERT || \
(option) == CURLOPT_SSLCERTTYPE || \
(option) == CURLOPT_SSLENGINE || \
(option) == CURLOPT_SSLKEY || \
(option) == CURLOPT_SSLKEYTYPE || \
(option) == CURLOPT_SSL_CIPHER_LIST || \
(option) == CURLOPT_TLS13_CIPHERS || \
(option) == CURLOPT_TLSAUTH_PASSWORD || \
(option) == CURLOPT_TLSAUTH_TYPE || \
(option) == CURLOPT_TLSAUTH_USERNAME || \
(option) == CURLOPT_UNIX_SOCKET_PATH || \
(option) == CURLOPT_URL || \
(option) == CURLOPT_USERAGENT || \
(option) == CURLOPT_USERNAME || \
(option) == CURLOPT_AWS_SIGV4 || \
(option) == CURLOPT_USERPWD || \
(option) == CURLOPT_XOAUTH2_BEARER || \
(option) == CURLOPT_SSL_EC_CURVES || \
0)
/* evaluates to true if option takes a curl_write_callback argument */
#define curlcheck_write_cb_option(option) \
((option) == CURLOPT_HEADERFUNCTION || \
(option) == CURLOPT_WRITEFUNCTION)
/* evaluates to true if option takes a curl_conv_callback argument */
#define curlcheck_conv_cb_option(option) \
((option) == CURLOPT_CONV_TO_NETWORK_FUNCTION || \
(option) == CURLOPT_CONV_FROM_NETWORK_FUNCTION || \
(option) == CURLOPT_CONV_FROM_UTF8_FUNCTION)
/* evaluates to true if option takes a data argument to pass to a callback */
#define curlcheck_cb_data_option(option) \
((option) == CURLOPT_CHUNK_DATA || \
(option) == CURLOPT_CLOSESOCKETDATA || \
(option) == CURLOPT_DEBUGDATA || \
(option) == CURLOPT_FNMATCH_DATA || \
(option) == CURLOPT_HEADERDATA || \
(option) == CURLOPT_HSTSREADDATA || \
(option) == CURLOPT_HSTSWRITEDATA || \
(option) == CURLOPT_INTERLEAVEDATA || \
(option) == CURLOPT_IOCTLDATA || \
(option) == CURLOPT_OPENSOCKETDATA || \
(option) == CURLOPT_PREREQDATA || \
(option) == CURLOPT_PROGRESSDATA || \
(option) == CURLOPT_READDATA || \
(option) == CURLOPT_SEEKDATA || \
(option) == CURLOPT_SOCKOPTDATA || \
(option) == CURLOPT_SSH_KEYDATA || \
(option) == CURLOPT_SSL_CTX_DATA || \
(option) == CURLOPT_WRITEDATA || \
(option) == CURLOPT_RESOLVER_START_DATA || \
(option) == CURLOPT_TRAILERDATA || \
(option) == CURLOPT_SSH_HOSTKEYDATA || \
0)
/* evaluates to true if option takes a POST data argument (void* or char*) */
#define curlcheck_postfields_option(option) \
((option) == CURLOPT_POSTFIELDS || \
(option) == CURLOPT_COPYPOSTFIELDS || \
0)
/* evaluates to true if option takes a struct curl_slist * argument */
#define curlcheck_slist_option(option) \
((option) == CURLOPT_HTTP200ALIASES || \
(option) == CURLOPT_HTTPHEADER || \
(option) == CURLOPT_MAIL_RCPT || \
(option) == CURLOPT_POSTQUOTE || \
(option) == CURLOPT_PREQUOTE || \
(option) == CURLOPT_PROXYHEADER || \
(option) == CURLOPT_QUOTE || \
(option) == CURLOPT_RESOLVE || \
(option) == CURLOPT_TELNETOPTIONS || \
(option) == CURLOPT_CONNECT_TO || \
0)
/* groups of curl_easy_getinfo infos that take the same type of argument */
/* evaluates to true if info expects a pointer to char * argument */
#define curlcheck_string_info(info) \
(CURLINFO_STRING < (info) && (info) < CURLINFO_LONG && \
(info) != CURLINFO_PRIVATE)
/* evaluates to true if info expects a pointer to long argument */
#define curlcheck_long_info(info) \
(CURLINFO_LONG < (info) && (info) < CURLINFO_DOUBLE)
/* evaluates to true if info expects a pointer to double argument */
#define curlcheck_double_info(info) \
(CURLINFO_DOUBLE < (info) && (info) < CURLINFO_SLIST)
/* true if info expects a pointer to struct curl_slist * argument */
#define curlcheck_slist_info(info) \
(((info) == CURLINFO_SSL_ENGINES) || ((info) == CURLINFO_COOKIELIST))
/* true if info expects a pointer to struct curl_tlssessioninfo * argument */
#define curlcheck_tlssessioninfo_info(info) \
(((info) == CURLINFO_TLS_SSL_PTR) || ((info) == CURLINFO_TLS_SESSION))
/* true if info expects a pointer to struct curl_certinfo * argument */
#define curlcheck_certinfo_info(info) ((info) == CURLINFO_CERTINFO)
/* true if info expects a pointer to struct curl_socket_t argument */
#define curlcheck_socket_info(info) \
(CURLINFO_SOCKET < (info) && (info) < CURLINFO_OFF_T)
/* true if info expects a pointer to curl_off_t argument */
#define curlcheck_off_t_info(info) \
(CURLINFO_OFF_T < (info))
/* typecheck helpers -- check whether given expression has requested type */
/* For pointers, you can use the curlcheck_ptr/curlcheck_arr macros,
* otherwise define a new macro. Search for __builtin_types_compatible_p
* in the GCC manual.
* NOTE: these macros MUST NOT EVALUATE their arguments! The argument is
* the actual expression passed to the curl_easy_setopt macro. This
* means that you can only apply the sizeof and __typeof__ operators, no
* == or whatsoever.
*/
/* XXX: should evaluate to true if expr is a pointer */
#define curlcheck_any_ptr(expr) \
(sizeof(expr) == sizeof(void *))
/* evaluates to true if expr is NULL */
/* XXX: must not evaluate expr, so this check is not accurate */
#define curlcheck_NULL(expr) \
(__builtin_types_compatible_p(__typeof__(expr), __typeof__(NULL)))
/* evaluates to true if expr is type*, const type* or NULL */
#define curlcheck_ptr(expr, type) \
(curlcheck_NULL(expr) || \
__builtin_types_compatible_p(__typeof__(expr), type *) || \
__builtin_types_compatible_p(__typeof__(expr), const type *))
/* evaluates to true if expr is one of type[], type*, NULL or const type* */
#define curlcheck_arr(expr, type) \
(curlcheck_ptr((expr), type) || \
__builtin_types_compatible_p(__typeof__(expr), type []))
/* evaluates to true if expr is a string */
#define curlcheck_string(expr) \
(curlcheck_arr((expr), char) || \
curlcheck_arr((expr), signed char) || \
curlcheck_arr((expr), unsigned char))
/* evaluates to true if expr is a long (no matter the signedness)
* XXX: for now, int is also accepted (and therefore short and char, which
* are promoted to int when passed to a variadic function) */
#define curlcheck_long(expr) \
(__builtin_types_compatible_p(__typeof__(expr), long) || \
__builtin_types_compatible_p(__typeof__(expr), signed long) || \
__builtin_types_compatible_p(__typeof__(expr), unsigned long) || \
__builtin_types_compatible_p(__typeof__(expr), int) || \
__builtin_types_compatible_p(__typeof__(expr), signed int) || \
__builtin_types_compatible_p(__typeof__(expr), unsigned int) || \
__builtin_types_compatible_p(__typeof__(expr), short) || \
__builtin_types_compatible_p(__typeof__(expr), signed short) || \
__builtin_types_compatible_p(__typeof__(expr), unsigned short) || \
__builtin_types_compatible_p(__typeof__(expr), char) || \
__builtin_types_compatible_p(__typeof__(expr), signed char) || \
__builtin_types_compatible_p(__typeof__(expr), unsigned char))
/* evaluates to true if expr is of type curl_off_t */
#define curlcheck_off_t(expr) \
(__builtin_types_compatible_p(__typeof__(expr), curl_off_t))
/* evaluates to true if expr is abuffer suitable for CURLOPT_ERRORBUFFER */
/* XXX: also check size of an char[] array? */
#define curlcheck_error_buffer(expr) \
(curlcheck_NULL(expr) || \
__builtin_types_compatible_p(__typeof__(expr), char *) || \
__builtin_types_compatible_p(__typeof__(expr), char[]))
/* evaluates to true if expr is of type (const) void* or (const) FILE* */
#if 0
#define curlcheck_cb_data(expr) \
(curlcheck_ptr((expr), void) || \
curlcheck_ptr((expr), FILE))
#else /* be less strict */
#define curlcheck_cb_data(expr) \
curlcheck_any_ptr(expr)
#endif
/* evaluates to true if expr is of type FILE* */
#define curlcheck_FILE(expr) \
(curlcheck_NULL(expr) || \
(__builtin_types_compatible_p(__typeof__(expr), FILE *)))
/* evaluates to true if expr can be passed as POST data (void* or char*) */
#define curlcheck_postfields(expr) \
(curlcheck_ptr((expr), void) || \
curlcheck_arr((expr), char) || \
curlcheck_arr((expr), unsigned char))
/* helper: __builtin_types_compatible_p distinguishes between functions and
* function pointers, hide it */
#define curlcheck_cb_compatible(func, type) \
(__builtin_types_compatible_p(__typeof__(func), type) || \
__builtin_types_compatible_p(__typeof__(func) *, type))
/* evaluates to true if expr is of type curl_resolver_start_callback */
#define curlcheck_resolver_start_callback(expr) \
(curlcheck_NULL(expr) || \
curlcheck_cb_compatible((expr), curl_resolver_start_callback))
/* evaluates to true if expr is of type curl_read_callback or "similar" */
#define curlcheck_read_cb(expr) \
(curlcheck_NULL(expr) || \
curlcheck_cb_compatible((expr), __typeof__(fread) *) || \
curlcheck_cb_compatible((expr), curl_read_callback) || \
curlcheck_cb_compatible((expr), _curl_read_callback1) || \
curlcheck_cb_compatible((expr), _curl_read_callback2) || \
curlcheck_cb_compatible((expr), _curl_read_callback3) || \
curlcheck_cb_compatible((expr), _curl_read_callback4) || \
curlcheck_cb_compatible((expr), _curl_read_callback5) || \
curlcheck_cb_compatible((expr), _curl_read_callback6))
typedef size_t (*_curl_read_callback1)(char *, size_t, size_t, void *);
typedef size_t (*_curl_read_callback2)(char *, size_t, size_t, const void *);
typedef size_t (*_curl_read_callback3)(char *, size_t, size_t, FILE *);
typedef size_t (*_curl_read_callback4)(void *, size_t, size_t, void *);
typedef size_t (*_curl_read_callback5)(void *, size_t, size_t, const void *);
typedef size_t (*_curl_read_callback6)(void *, size_t, size_t, FILE *);
/* evaluates to true if expr is of type curl_write_callback or "similar" */
#define curlcheck_write_cb(expr) \
(curlcheck_read_cb(expr) || \
curlcheck_cb_compatible((expr), __typeof__(fwrite) *) || \
curlcheck_cb_compatible((expr), curl_write_callback) || \
curlcheck_cb_compatible((expr), _curl_write_callback1) || \
curlcheck_cb_compatible((expr), _curl_write_callback2) || \
curlcheck_cb_compatible((expr), _curl_write_callback3) || \
curlcheck_cb_compatible((expr), _curl_write_callback4) || \
curlcheck_cb_compatible((expr), _curl_write_callback5) || \
curlcheck_cb_compatible((expr), _curl_write_callback6))
typedef size_t (*_curl_write_callback1)(const char *, size_t, size_t, void *);
typedef size_t (*_curl_write_callback2)(const char *, size_t, size_t,
const void *);
typedef size_t (*_curl_write_callback3)(const char *, size_t, size_t, FILE *);
typedef size_t (*_curl_write_callback4)(const void *, size_t, size_t, void *);
typedef size_t (*_curl_write_callback5)(const void *, size_t, size_t,
const void *);
typedef size_t (*_curl_write_callback6)(const void *, size_t, size_t, FILE *);
/* evaluates to true if expr is of type curl_ioctl_callback or "similar" */
#define curlcheck_ioctl_cb(expr) \
(curlcheck_NULL(expr) || \
curlcheck_cb_compatible((expr), curl_ioctl_callback) || \
curlcheck_cb_compatible((expr), _curl_ioctl_callback1) || \
curlcheck_cb_compatible((expr), _curl_ioctl_callback2) || \
curlcheck_cb_compatible((expr), _curl_ioctl_callback3) || \
curlcheck_cb_compatible((expr), _curl_ioctl_callback4))
typedef curlioerr (*_curl_ioctl_callback1)(CURL *, int, void *);
typedef curlioerr (*_curl_ioctl_callback2)(CURL *, int, const void *);
typedef curlioerr (*_curl_ioctl_callback3)(CURL *, curliocmd, void *);
typedef curlioerr (*_curl_ioctl_callback4)(CURL *, curliocmd, const void *);
/* evaluates to true if expr is of type curl_sockopt_callback or "similar" */
#define curlcheck_sockopt_cb(expr) \
(curlcheck_NULL(expr) || \
curlcheck_cb_compatible((expr), curl_sockopt_callback) || \
curlcheck_cb_compatible((expr), _curl_sockopt_callback1) || \
curlcheck_cb_compatible((expr), _curl_sockopt_callback2))
typedef int (*_curl_sockopt_callback1)(void *, curl_socket_t, curlsocktype);
typedef int (*_curl_sockopt_callback2)(const void *, curl_socket_t,
curlsocktype);
/* evaluates to true if expr is of type curl_opensocket_callback or
"similar" */
#define curlcheck_opensocket_cb(expr) \
(curlcheck_NULL(expr) || \
curlcheck_cb_compatible((expr), curl_opensocket_callback) || \
curlcheck_cb_compatible((expr), _curl_opensocket_callback1) || \
curlcheck_cb_compatible((expr), _curl_opensocket_callback2) || \
curlcheck_cb_compatible((expr), _curl_opensocket_callback3) || \
curlcheck_cb_compatible((expr), _curl_opensocket_callback4))
typedef curl_socket_t (*_curl_opensocket_callback1)
(void *, curlsocktype, struct curl_sockaddr *);
typedef curl_socket_t (*_curl_opensocket_callback2)
(void *, curlsocktype, const struct curl_sockaddr *);
typedef curl_socket_t (*_curl_opensocket_callback3)
(const void *, curlsocktype, struct curl_sockaddr *);
typedef curl_socket_t (*_curl_opensocket_callback4)
(const void *, curlsocktype, const struct curl_sockaddr *);
/* evaluates to true if expr is of type curl_progress_callback or "similar" */
#define curlcheck_progress_cb(expr) \
(curlcheck_NULL(expr) || \
curlcheck_cb_compatible((expr), curl_progress_callback) || \
curlcheck_cb_compatible((expr), _curl_progress_callback1) || \
curlcheck_cb_compatible((expr), _curl_progress_callback2))
typedef int (*_curl_progress_callback1)(void *,
double, double, double, double);
typedef int (*_curl_progress_callback2)(const void *,
double, double, double, double);
/* evaluates to true if expr is of type curl_debug_callback or "similar" */
#define curlcheck_debug_cb(expr) \
(curlcheck_NULL(expr) || \
curlcheck_cb_compatible((expr), curl_debug_callback) || \
curlcheck_cb_compatible((expr), _curl_debug_callback1) || \
curlcheck_cb_compatible((expr), _curl_debug_callback2) || \
curlcheck_cb_compatible((expr), _curl_debug_callback3) || \
curlcheck_cb_compatible((expr), _curl_debug_callback4) || \
curlcheck_cb_compatible((expr), _curl_debug_callback5) || \
curlcheck_cb_compatible((expr), _curl_debug_callback6) || \
curlcheck_cb_compatible((expr), _curl_debug_callback7) || \
curlcheck_cb_compatible((expr), _curl_debug_callback8))
typedef int (*_curl_debug_callback1) (CURL *,
curl_infotype, char *, size_t, void *);
typedef int (*_curl_debug_callback2) (CURL *,
curl_infotype, char *, size_t, const void *);
typedef int (*_curl_debug_callback3) (CURL *,
curl_infotype, const char *, size_t, void *);
typedef int (*_curl_debug_callback4) (CURL *,
curl_infotype, const char *, size_t, const void *);
typedef int (*_curl_debug_callback5) (CURL *,
curl_infotype, unsigned char *, size_t, void *);
typedef int (*_curl_debug_callback6) (CURL *,
curl_infotype, unsigned char *, size_t, const void *);
typedef int (*_curl_debug_callback7) (CURL *,
curl_infotype, const unsigned char *, size_t, void *);
typedef int (*_curl_debug_callback8) (CURL *,
curl_infotype, const unsigned char *, size_t, const void *);
/* evaluates to true if expr is of type curl_ssl_ctx_callback or "similar" */
/* this is getting even messier... */
#define curlcheck_ssl_ctx_cb(expr) \
(curlcheck_NULL(expr) || \
curlcheck_cb_compatible((expr), curl_ssl_ctx_callback) || \
curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback1) || \
curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback2) || \
curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback3) || \
curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback4) || \
curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback5) || \
curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback6) || \
curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback7) || \
curlcheck_cb_compatible((expr), _curl_ssl_ctx_callback8))
typedef CURLcode (*_curl_ssl_ctx_callback1)(CURL *, void *, void *);
typedef CURLcode (*_curl_ssl_ctx_callback2)(CURL *, void *, const void *);
typedef CURLcode (*_curl_ssl_ctx_callback3)(CURL *, const void *, void *);
typedef CURLcode (*_curl_ssl_ctx_callback4)(CURL *, const void *,
const void *);
#ifdef HEADER_SSL_H
/* hack: if we included OpenSSL's ssl.h, we know about SSL_CTX
* this will of course break if we're included before OpenSSL headers...
*/
typedef CURLcode (*_curl_ssl_ctx_callback5)(CURL *, SSL_CTX *, void *);
typedef CURLcode (*_curl_ssl_ctx_callback6)(CURL *, SSL_CTX *, const void *);
typedef CURLcode (*_curl_ssl_ctx_callback7)(CURL *, const SSL_CTX *, void *);
typedef CURLcode (*_curl_ssl_ctx_callback8)(CURL *, const SSL_CTX *,
const void *);
#else
typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback5;
typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback6;
typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback7;
typedef _curl_ssl_ctx_callback1 _curl_ssl_ctx_callback8;
#endif
/* evaluates to true if expr is of type curl_conv_callback or "similar" */
#define curlcheck_conv_cb(expr) \
(curlcheck_NULL(expr) || \
curlcheck_cb_compatible((expr), curl_conv_callback) || \
curlcheck_cb_compatible((expr), _curl_conv_callback1) || \
curlcheck_cb_compatible((expr), _curl_conv_callback2) || \
curlcheck_cb_compatible((expr), _curl_conv_callback3) || \
curlcheck_cb_compatible((expr), _curl_conv_callback4))
typedef CURLcode (*_curl_conv_callback1)(char *, size_t length);
typedef CURLcode (*_curl_conv_callback2)(const char *, size_t length);
typedef CURLcode (*_curl_conv_callback3)(void *, size_t length);
typedef CURLcode (*_curl_conv_callback4)(const void *, size_t length);
/* evaluates to true if expr is of type curl_seek_callback or "similar" */
#define curlcheck_seek_cb(expr) \
(curlcheck_NULL(expr) || \
curlcheck_cb_compatible((expr), curl_seek_callback) || \
curlcheck_cb_compatible((expr), _curl_seek_callback1) || \
curlcheck_cb_compatible((expr), _curl_seek_callback2))
typedef CURLcode (*_curl_seek_callback1)(void *, curl_off_t, int);
typedef CURLcode (*_curl_seek_callback2)(const void *, curl_off_t, int);
#endif /* CURLINC_TYPECHECK_GCC_H */

View File

@@ -0,0 +1,151 @@
#ifndef CURLINC_URLAPI_H
#define CURLINC_URLAPI_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* SPDX-License-Identifier: curl
*
***************************************************************************/
#include "curl.h"
#ifdef __cplusplus
extern "C" {
#endif
/* the error codes for the URL API */
typedef enum {
CURLUE_OK,
CURLUE_BAD_HANDLE, /* 1 */
CURLUE_BAD_PARTPOINTER, /* 2 */
CURLUE_MALFORMED_INPUT, /* 3 */
CURLUE_BAD_PORT_NUMBER, /* 4 */
CURLUE_UNSUPPORTED_SCHEME, /* 5 */
CURLUE_URLDECODE, /* 6 */
CURLUE_OUT_OF_MEMORY, /* 7 */
CURLUE_USER_NOT_ALLOWED, /* 8 */
CURLUE_UNKNOWN_PART, /* 9 */
CURLUE_NO_SCHEME, /* 10 */
CURLUE_NO_USER, /* 11 */
CURLUE_NO_PASSWORD, /* 12 */
CURLUE_NO_OPTIONS, /* 13 */
CURLUE_NO_HOST, /* 14 */
CURLUE_NO_PORT, /* 15 */
CURLUE_NO_QUERY, /* 16 */
CURLUE_NO_FRAGMENT, /* 17 */
CURLUE_NO_ZONEID, /* 18 */
CURLUE_BAD_FILE_URL, /* 19 */
CURLUE_BAD_FRAGMENT, /* 20 */
CURLUE_BAD_HOSTNAME, /* 21 */
CURLUE_BAD_IPV6, /* 22 */
CURLUE_BAD_LOGIN, /* 23 */
CURLUE_BAD_PASSWORD, /* 24 */
CURLUE_BAD_PATH, /* 25 */
CURLUE_BAD_QUERY, /* 26 */
CURLUE_BAD_SCHEME, /* 27 */
CURLUE_BAD_SLASHES, /* 28 */
CURLUE_BAD_USER, /* 29 */
CURLUE_LACKS_IDN, /* 30 */
CURLUE_TOO_LARGE, /* 31 */
CURLUE_LAST
} CURLUcode;
typedef enum {
CURLUPART_URL,
CURLUPART_SCHEME,
CURLUPART_USER,
CURLUPART_PASSWORD,
CURLUPART_OPTIONS,
CURLUPART_HOST,
CURLUPART_PORT,
CURLUPART_PATH,
CURLUPART_QUERY,
CURLUPART_FRAGMENT,
CURLUPART_ZONEID /* added in 7.65.0 */
} CURLUPart;
#define CURLU_DEFAULT_PORT (1<<0) /* return default port number */
#define CURLU_NO_DEFAULT_PORT (1<<1) /* act as if no port number was set,
if the port number matches the
default for the scheme */
#define CURLU_DEFAULT_SCHEME (1<<2) /* return default scheme if
missing */
#define CURLU_NON_SUPPORT_SCHEME (1<<3) /* allow non-supported scheme */
#define CURLU_PATH_AS_IS (1<<4) /* leave dot sequences */
#define CURLU_DISALLOW_USER (1<<5) /* no user+password allowed */
#define CURLU_URLDECODE (1<<6) /* URL decode on get */
#define CURLU_URLENCODE (1<<7) /* URL encode on set */
#define CURLU_APPENDQUERY (1<<8) /* append a form style part */
#define CURLU_GUESS_SCHEME (1<<9) /* legacy curl-style guessing */
#define CURLU_NO_AUTHORITY (1<<10) /* Allow empty authority when the
scheme is unknown. */
#define CURLU_ALLOW_SPACE (1<<11) /* Allow spaces in the URL */
#define CURLU_PUNYCODE (1<<12) /* get the host name in punycode */
#define CURLU_PUNY2IDN (1<<13) /* punycode => IDN conversion */
typedef struct Curl_URL CURLU;
/*
* curl_url() creates a new CURLU handle and returns a pointer to it.
* Must be freed with curl_url_cleanup().
*/
CURL_EXTERN CURLU *curl_url(void);
/*
* curl_url_cleanup() frees the CURLU handle and related resources used for
* the URL parsing. It will not free strings previously returned with the URL
* API.
*/
CURL_EXTERN void curl_url_cleanup(CURLU *handle);
/*
* curl_url_dup() duplicates a CURLU handle and returns a new copy. The new
* handle must also be freed with curl_url_cleanup().
*/
CURL_EXTERN CURLU *curl_url_dup(const CURLU *in);
/*
* curl_url_get() extracts a specific part of the URL from a CURLU
* handle. Returns error code. The returned pointer MUST be freed with
* curl_free() afterwards.
*/
CURL_EXTERN CURLUcode curl_url_get(const CURLU *handle, CURLUPart what,
char **part, unsigned int flags);
/*
* curl_url_set() sets a specific part of the URL in a CURLU handle. Returns
* error code. The passed in string will be copied. Passing a NULL instead of
* a part string, clears that part.
*/
CURL_EXTERN CURLUcode curl_url_set(CURLU *handle, CURLUPart what,
const char *part, unsigned int flags);
/*
* curl_url_strerror() turns a CURLUcode value into the equivalent human
* readable error string. This is useful for printing meaningful error
* messages.
*/
CURL_EXTERN const char *curl_url_strerror(CURLUcode);
#ifdef __cplusplus
} /* end of extern "C" */
#endif
#endif /* CURLINC_URLAPI_H */

View File

@@ -0,0 +1,84 @@
#ifndef CURLINC_WEBSOCKETS_H
#define CURLINC_WEBSOCKETS_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at https://curl.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* SPDX-License-Identifier: curl
*
***************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
struct curl_ws_frame {
int age; /* zero */
int flags; /* See the CURLWS_* defines */
curl_off_t offset; /* the offset of this data into the frame */
curl_off_t bytesleft; /* number of pending bytes left of the payload */
size_t len; /* size of the current data chunk */
};
/* flag bits */
#define CURLWS_TEXT (1<<0)
#define CURLWS_BINARY (1<<1)
#define CURLWS_CONT (1<<2)
#define CURLWS_CLOSE (1<<3)
#define CURLWS_PING (1<<4)
#define CURLWS_OFFSET (1<<5)
/*
* NAME curl_ws_recv()
*
* DESCRIPTION
*
* Receives data from the websocket connection. Use after successful
* curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
*/
CURL_EXTERN CURLcode curl_ws_recv(CURL *curl, void *buffer, size_t buflen,
size_t *recv,
const struct curl_ws_frame **metap);
/* flags for curl_ws_send() */
#define CURLWS_PONG (1<<6)
/*
* NAME curl_ws_send()
*
* DESCRIPTION
*
* Sends data over the websocket connection. Use after successful
* curl_easy_perform() with CURLOPT_CONNECT_ONLY option.
*/
CURL_EXTERN CURLcode curl_ws_send(CURL *curl, const void *buffer,
size_t buflen, size_t *sent,
curl_off_t fragsize,
unsigned int flags);
/* bits for the CURLOPT_WS_OPTIONS bitmask: */
#define CURLWS_RAW_MODE (1<<0)
CURL_EXTERN const struct curl_ws_frame *curl_ws_meta(CURL *curl);
#ifdef __cplusplus
}
#endif
#endif /* CURLINC_WEBSOCKETS_H */

View File

@@ -0,0 +1,111 @@
/*
* Copyright 2002-2020 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_AES_H
# define OPENSSL_AES_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_AES_H
# endif
# include <openssl/opensslconf.h>
# include <stddef.h>
# ifdef __cplusplus
extern "C" {
# endif
# define AES_BLOCK_SIZE 16
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define AES_ENCRYPT 1
# define AES_DECRYPT 0
# define AES_MAXNR 14
/* This should be a hidden type, but EVP requires that the size be known */
struct aes_key_st {
# ifdef AES_LONG
unsigned long rd_key[4 * (AES_MAXNR + 1)];
# else
unsigned int rd_key[4 * (AES_MAXNR + 1)];
# endif
int rounds;
};
typedef struct aes_key_st AES_KEY;
# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 const char *AES_options(void);
OSSL_DEPRECATEDIN_3_0
int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
AES_KEY *key);
OSSL_DEPRECATEDIN_3_0
int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
AES_KEY *key);
OSSL_DEPRECATEDIN_3_0
void AES_encrypt(const unsigned char *in, unsigned char *out,
const AES_KEY *key);
OSSL_DEPRECATEDIN_3_0
void AES_decrypt(const unsigned char *in, unsigned char *out,
const AES_KEY *key);
OSSL_DEPRECATEDIN_3_0
void AES_ecb_encrypt(const unsigned char *in, unsigned char *out,
const AES_KEY *key, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char *ivec, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char *ivec, int *num, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_cfb1_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char *ivec, int *num, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_cfb8_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char *ivec, int *num, const int enc);
OSSL_DEPRECATEDIN_3_0
void AES_ofb128_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char *ivec, int *num);
/* NB: the IV is _two_ blocks long */
OSSL_DEPRECATEDIN_3_0
void AES_ige_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key,
unsigned char *ivec, const int enc);
/* NB: the IV is _four_ blocks long */
OSSL_DEPRECATEDIN_3_0
void AES_bi_ige_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const AES_KEY *key, const AES_KEY *key2,
const unsigned char *ivec, const int enc);
OSSL_DEPRECATEDIN_3_0
int AES_wrap_key(AES_KEY *key, const unsigned char *iv,
unsigned char *out, const unsigned char *in,
unsigned int inlen);
OSSL_DEPRECATEDIN_3_0
int AES_unwrap_key(AES_KEY *key, const unsigned char *iv,
unsigned char *out, const unsigned char *in,
unsigned int inlen);
# endif
# ifdef __cplusplus
}
# endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
/*
* Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#error "This file is obsolete; please update your software."

View File

@@ -0,0 +1,140 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_ASN1ERR_H
# define OPENSSL_ASN1ERR_H
# pragma once
# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>
/*
* ASN1 reason codes.
*/
# define ASN1_R_ADDING_OBJECT 171
# define ASN1_R_ASN1_PARSE_ERROR 203
# define ASN1_R_ASN1_SIG_PARSE_ERROR 204
# define ASN1_R_AUX_ERROR 100
# define ASN1_R_BAD_OBJECT_HEADER 102
# define ASN1_R_BAD_TEMPLATE 230
# define ASN1_R_BMPSTRING_IS_WRONG_LENGTH 214
# define ASN1_R_BN_LIB 105
# define ASN1_R_BOOLEAN_IS_WRONG_LENGTH 106
# define ASN1_R_BUFFER_TOO_SMALL 107
# define ASN1_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER 108
# define ASN1_R_CONTEXT_NOT_INITIALISED 217
# define ASN1_R_DATA_IS_WRONG 109
# define ASN1_R_DECODE_ERROR 110
# define ASN1_R_DEPTH_EXCEEDED 174
# define ASN1_R_DIGEST_AND_KEY_TYPE_NOT_SUPPORTED 198
# define ASN1_R_ENCODE_ERROR 112
# define ASN1_R_ERROR_GETTING_TIME 173
# define ASN1_R_ERROR_LOADING_SECTION 172
# define ASN1_R_ERROR_SETTING_CIPHER_PARAMS 114
# define ASN1_R_EXPECTING_AN_INTEGER 115
# define ASN1_R_EXPECTING_AN_OBJECT 116
# define ASN1_R_EXPLICIT_LENGTH_MISMATCH 119
# define ASN1_R_EXPLICIT_TAG_NOT_CONSTRUCTED 120
# define ASN1_R_FIELD_MISSING 121
# define ASN1_R_FIRST_NUM_TOO_LARGE 122
# define ASN1_R_HEADER_TOO_LONG 123
# define ASN1_R_ILLEGAL_BITSTRING_FORMAT 175
# define ASN1_R_ILLEGAL_BOOLEAN 176
# define ASN1_R_ILLEGAL_CHARACTERS 124
# define ASN1_R_ILLEGAL_FORMAT 177
# define ASN1_R_ILLEGAL_HEX 178
# define ASN1_R_ILLEGAL_IMPLICIT_TAG 179
# define ASN1_R_ILLEGAL_INTEGER 180
# define ASN1_R_ILLEGAL_NEGATIVE_VALUE 226
# define ASN1_R_ILLEGAL_NESTED_TAGGING 181
# define ASN1_R_ILLEGAL_NULL 125
# define ASN1_R_ILLEGAL_NULL_VALUE 182
# define ASN1_R_ILLEGAL_OBJECT 183
# define ASN1_R_ILLEGAL_OPTIONAL_ANY 126
# define ASN1_R_ILLEGAL_OPTIONS_ON_ITEM_TEMPLATE 170
# define ASN1_R_ILLEGAL_PADDING 221
# define ASN1_R_ILLEGAL_TAGGED_ANY 127
# define ASN1_R_ILLEGAL_TIME_VALUE 184
# define ASN1_R_ILLEGAL_ZERO_CONTENT 222
# define ASN1_R_INTEGER_NOT_ASCII_FORMAT 185
# define ASN1_R_INTEGER_TOO_LARGE_FOR_LONG 128
# define ASN1_R_INVALID_BIT_STRING_BITS_LEFT 220
# define ASN1_R_INVALID_BMPSTRING_LENGTH 129
# define ASN1_R_INVALID_DIGIT 130
# define ASN1_R_INVALID_MIME_TYPE 205
# define ASN1_R_INVALID_MODIFIER 186
# define ASN1_R_INVALID_NUMBER 187
# define ASN1_R_INVALID_OBJECT_ENCODING 216
# define ASN1_R_INVALID_SCRYPT_PARAMETERS 227
# define ASN1_R_INVALID_SEPARATOR 131
# define ASN1_R_INVALID_STRING_TABLE_VALUE 218
# define ASN1_R_INVALID_UNIVERSALSTRING_LENGTH 133
# define ASN1_R_INVALID_UTF8STRING 134
# define ASN1_R_INVALID_VALUE 219
# define ASN1_R_LENGTH_TOO_LONG 231
# define ASN1_R_LIST_ERROR 188
# define ASN1_R_MIME_NO_CONTENT_TYPE 206
# define ASN1_R_MIME_PARSE_ERROR 207
# define ASN1_R_MIME_SIG_PARSE_ERROR 208
# define ASN1_R_MISSING_EOC 137
# define ASN1_R_MISSING_SECOND_NUMBER 138
# define ASN1_R_MISSING_VALUE 189
# define ASN1_R_MSTRING_NOT_UNIVERSAL 139
# define ASN1_R_MSTRING_WRONG_TAG 140
# define ASN1_R_NESTED_ASN1_STRING 197
# define ASN1_R_NESTED_TOO_DEEP 201
# define ASN1_R_NON_HEX_CHARACTERS 141
# define ASN1_R_NOT_ASCII_FORMAT 190
# define ASN1_R_NOT_ENOUGH_DATA 142
# define ASN1_R_NO_CONTENT_TYPE 209
# define ASN1_R_NO_MATCHING_CHOICE_TYPE 143
# define ASN1_R_NO_MULTIPART_BODY_FAILURE 210
# define ASN1_R_NO_MULTIPART_BOUNDARY 211
# define ASN1_R_NO_SIG_CONTENT_TYPE 212
# define ASN1_R_NULL_IS_WRONG_LENGTH 144
# define ASN1_R_OBJECT_NOT_ASCII_FORMAT 191
# define ASN1_R_ODD_NUMBER_OF_CHARS 145
# define ASN1_R_SECOND_NUMBER_TOO_LARGE 147
# define ASN1_R_SEQUENCE_LENGTH_MISMATCH 148
# define ASN1_R_SEQUENCE_NOT_CONSTRUCTED 149
# define ASN1_R_SEQUENCE_OR_SET_NEEDS_CONFIG 192
# define ASN1_R_SHORT_LINE 150
# define ASN1_R_SIG_INVALID_MIME_TYPE 213
# define ASN1_R_STREAMING_NOT_SUPPORTED 202
# define ASN1_R_STRING_TOO_LONG 151
# define ASN1_R_STRING_TOO_SHORT 152
# define ASN1_R_THE_ASN1_OBJECT_IDENTIFIER_IS_NOT_KNOWN_FOR_THIS_MD 154
# define ASN1_R_TIME_NOT_ASCII_FORMAT 193
# define ASN1_R_TOO_LARGE 223
# define ASN1_R_TOO_LONG 155
# define ASN1_R_TOO_SMALL 224
# define ASN1_R_TYPE_NOT_CONSTRUCTED 156
# define ASN1_R_TYPE_NOT_PRIMITIVE 195
# define ASN1_R_UNEXPECTED_EOC 159
# define ASN1_R_UNIVERSALSTRING_IS_WRONG_LENGTH 215
# define ASN1_R_UNKNOWN_DIGEST 229
# define ASN1_R_UNKNOWN_FORMAT 160
# define ASN1_R_UNKNOWN_MESSAGE_DIGEST_ALGORITHM 161
# define ASN1_R_UNKNOWN_OBJECT_TYPE 162
# define ASN1_R_UNKNOWN_PUBLIC_KEY_TYPE 163
# define ASN1_R_UNKNOWN_SIGNATURE_ALGORITHM 199
# define ASN1_R_UNKNOWN_TAG 194
# define ASN1_R_UNSUPPORTED_ANY_DEFINED_BY_TYPE 164
# define ASN1_R_UNSUPPORTED_CIPHER 228
# define ASN1_R_UNSUPPORTED_PUBLIC_KEY_TYPE 167
# define ASN1_R_UNSUPPORTED_TYPE 196
# define ASN1_R_WRONG_INTEGER_TYPE 225
# define ASN1_R_WRONG_PUBLIC_KEY_TYPE 200
# define ASN1_R_WRONG_TAG 168
#endif

View File

@@ -0,0 +1,946 @@
/*
* WARNING: do not edit!
* Generated by Makefile from include/openssl/asn1t.h.in
*
* Copyright 2000-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_ASN1T_H
# define OPENSSL_ASN1T_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_ASN1T_H
# endif
# include <stddef.h>
# include <openssl/e_os2.h>
# include <openssl/asn1.h>
# ifdef OPENSSL_BUILD_SHLIBCRYPTO
# undef OPENSSL_EXTERN
# define OPENSSL_EXTERN OPENSSL_EXPORT
# endif
/* ASN1 template defines, structures and functions */
#ifdef __cplusplus
extern "C" {
#endif
/*-
* These are the possible values for the itype field of the
* ASN1_ITEM structure and determine how it is interpreted.
*
* For PRIMITIVE types the underlying type
* determines the behaviour if items is NULL.
*
* Otherwise templates must contain a single
* template and the type is treated in the
* same way as the type specified in the template.
*
* For SEQUENCE types the templates field points
* to the members, the size field is the
* structure size.
*
* For CHOICE types the templates field points
* to each possible member (typically a union)
* and the 'size' field is the offset of the
* selector.
*
* The 'funcs' field is used for application-specific
* data and functions.
*
* The EXTERN type uses a new style d2i/i2d.
* The new style should be used where possible
* because it avoids things like the d2i IMPLICIT
* hack.
*
* MSTRING is a multiple string type, it is used
* for a CHOICE of character strings where the
* actual strings all occupy an ASN1_STRING
* structure. In this case the 'utype' field
* has a special meaning, it is used as a mask
* of acceptable types using the B_ASN1 constants.
*
* NDEF_SEQUENCE is the same as SEQUENCE except
* that it will use indefinite length constructed
* encoding if requested.
*
*/
# define ASN1_ITYPE_PRIMITIVE 0x0
# define ASN1_ITYPE_SEQUENCE 0x1
# define ASN1_ITYPE_CHOICE 0x2
/* unused value 0x3 */
# define ASN1_ITYPE_EXTERN 0x4
# define ASN1_ITYPE_MSTRING 0x5
# define ASN1_ITYPE_NDEF_SEQUENCE 0x6
/* Macro to obtain ASN1_ADB pointer from a type (only used internally) */
# define ASN1_ADB_ptr(iptr) ((const ASN1_ADB *)((iptr)()))
/* Macros for start and end of ASN1_ITEM definition */
# define ASN1_ITEM_start(itname) \
const ASN1_ITEM * itname##_it(void) \
{ \
static const ASN1_ITEM local_it = {
# define static_ASN1_ITEM_start(itname) \
static ASN1_ITEM_start(itname)
# define ASN1_ITEM_end(itname) \
}; \
return &local_it; \
}
/* Macros to aid ASN1 template writing */
# define ASN1_ITEM_TEMPLATE(tname) \
static const ASN1_TEMPLATE tname##_item_tt
# define ASN1_ITEM_TEMPLATE_END(tname) \
;\
ASN1_ITEM_start(tname) \
ASN1_ITYPE_PRIMITIVE,\
-1,\
&tname##_item_tt,\
0,\
NULL,\
0,\
#tname \
ASN1_ITEM_end(tname)
# define static_ASN1_ITEM_TEMPLATE_END(tname) \
;\
static_ASN1_ITEM_start(tname) \
ASN1_ITYPE_PRIMITIVE,\
-1,\
&tname##_item_tt,\
0,\
NULL,\
0,\
#tname \
ASN1_ITEM_end(tname)
/* This is a ASN1 type which just embeds a template */
/*-
* This pair helps declare a SEQUENCE. We can do:
*
* ASN1_SEQUENCE(stname) = {
* ... SEQUENCE components ...
* } ASN1_SEQUENCE_END(stname)
*
* This will produce an ASN1_ITEM called stname_it
* for a structure called stname.
*
* If you want the same structure but a different
* name then use:
*
* ASN1_SEQUENCE(itname) = {
* ... SEQUENCE components ...
* } ASN1_SEQUENCE_END_name(stname, itname)
*
* This will create an item called itname_it using
* a structure called stname.
*/
# define ASN1_SEQUENCE(tname) \
static const ASN1_TEMPLATE tname##_seq_tt[]
# define ASN1_SEQUENCE_END(stname) ASN1_SEQUENCE_END_name(stname, stname)
# define static_ASN1_SEQUENCE_END(stname) static_ASN1_SEQUENCE_END_name(stname, stname)
# define ASN1_SEQUENCE_END_name(stname, tname) \
;\
ASN1_ITEM_start(tname) \
ASN1_ITYPE_SEQUENCE,\
V_ASN1_SEQUENCE,\
tname##_seq_tt,\
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
NULL,\
sizeof(stname),\
#tname \
ASN1_ITEM_end(tname)
# define static_ASN1_SEQUENCE_END_name(stname, tname) \
;\
static_ASN1_ITEM_start(tname) \
ASN1_ITYPE_SEQUENCE,\
V_ASN1_SEQUENCE,\
tname##_seq_tt,\
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
NULL,\
sizeof(stname),\
#stname \
ASN1_ITEM_end(tname)
# define ASN1_NDEF_SEQUENCE(tname) \
ASN1_SEQUENCE(tname)
# define ASN1_NDEF_SEQUENCE_cb(tname, cb) \
ASN1_SEQUENCE_cb(tname, cb)
# define ASN1_SEQUENCE_cb(tname, cb) \
static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0, NULL}; \
ASN1_SEQUENCE(tname)
# define ASN1_SEQUENCE_const_cb(tname, const_cb) \
static const ASN1_AUX tname##_aux = \
{NULL, ASN1_AFLG_CONST_CB, 0, 0, NULL, 0, const_cb}; \
ASN1_SEQUENCE(tname)
# define ASN1_SEQUENCE_cb_const_cb(tname, cb, const_cb) \
static const ASN1_AUX tname##_aux = \
{NULL, ASN1_AFLG_CONST_CB, 0, 0, cb, 0, const_cb}; \
ASN1_SEQUENCE(tname)
# define ASN1_SEQUENCE_ref(tname, cb) \
static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_REFCOUNT, offsetof(tname, references), offsetof(tname, lock), cb, 0, NULL}; \
ASN1_SEQUENCE(tname)
# define ASN1_SEQUENCE_enc(tname, enc, cb) \
static const ASN1_AUX tname##_aux = {NULL, ASN1_AFLG_ENCODING, 0, 0, cb, offsetof(tname, enc), NULL}; \
ASN1_SEQUENCE(tname)
# define ASN1_NDEF_SEQUENCE_END(tname) \
;\
ASN1_ITEM_start(tname) \
ASN1_ITYPE_NDEF_SEQUENCE,\
V_ASN1_SEQUENCE,\
tname##_seq_tt,\
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
NULL,\
sizeof(tname),\
#tname \
ASN1_ITEM_end(tname)
# define static_ASN1_NDEF_SEQUENCE_END(tname) \
;\
static_ASN1_ITEM_start(tname) \
ASN1_ITYPE_NDEF_SEQUENCE,\
V_ASN1_SEQUENCE,\
tname##_seq_tt,\
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
NULL,\
sizeof(tname),\
#tname \
ASN1_ITEM_end(tname)
# define ASN1_SEQUENCE_END_enc(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
# define ASN1_SEQUENCE_END_cb(stname, tname) ASN1_SEQUENCE_END_ref(stname, tname)
# define static_ASN1_SEQUENCE_END_cb(stname, tname) static_ASN1_SEQUENCE_END_ref(stname, tname)
# define ASN1_SEQUENCE_END_ref(stname, tname) \
;\
ASN1_ITEM_start(tname) \
ASN1_ITYPE_SEQUENCE,\
V_ASN1_SEQUENCE,\
tname##_seq_tt,\
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
&tname##_aux,\
sizeof(stname),\
#tname \
ASN1_ITEM_end(tname)
# define static_ASN1_SEQUENCE_END_ref(stname, tname) \
;\
static_ASN1_ITEM_start(tname) \
ASN1_ITYPE_SEQUENCE,\
V_ASN1_SEQUENCE,\
tname##_seq_tt,\
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
&tname##_aux,\
sizeof(stname),\
#stname \
ASN1_ITEM_end(tname)
# define ASN1_NDEF_SEQUENCE_END_cb(stname, tname) \
;\
ASN1_ITEM_start(tname) \
ASN1_ITYPE_NDEF_SEQUENCE,\
V_ASN1_SEQUENCE,\
tname##_seq_tt,\
sizeof(tname##_seq_tt) / sizeof(ASN1_TEMPLATE),\
&tname##_aux,\
sizeof(stname),\
#stname \
ASN1_ITEM_end(tname)
/*-
* This pair helps declare a CHOICE type. We can do:
*
* ASN1_CHOICE(chname) = {
* ... CHOICE options ...
* ASN1_CHOICE_END(chname)
*
* This will produce an ASN1_ITEM called chname_it
* for a structure called chname. The structure
* definition must look like this:
* typedef struct {
* int type;
* union {
* ASN1_SOMETHING *opt1;
* ASN1_SOMEOTHER *opt2;
* } value;
* } chname;
*
* the name of the selector must be 'type'.
* to use an alternative selector name use the
* ASN1_CHOICE_END_selector() version.
*/
# define ASN1_CHOICE(tname) \
static const ASN1_TEMPLATE tname##_ch_tt[]
# define ASN1_CHOICE_cb(tname, cb) \
static const ASN1_AUX tname##_aux = {NULL, 0, 0, 0, cb, 0, NULL}; \
ASN1_CHOICE(tname)
# define ASN1_CHOICE_END(stname) ASN1_CHOICE_END_name(stname, stname)
# define static_ASN1_CHOICE_END(stname) static_ASN1_CHOICE_END_name(stname, stname)
# define ASN1_CHOICE_END_name(stname, tname) ASN1_CHOICE_END_selector(stname, tname, type)
# define static_ASN1_CHOICE_END_name(stname, tname) static_ASN1_CHOICE_END_selector(stname, tname, type)
# define ASN1_CHOICE_END_selector(stname, tname, selname) \
;\
ASN1_ITEM_start(tname) \
ASN1_ITYPE_CHOICE,\
offsetof(stname,selname) ,\
tname##_ch_tt,\
sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
NULL,\
sizeof(stname),\
#stname \
ASN1_ITEM_end(tname)
# define static_ASN1_CHOICE_END_selector(stname, tname, selname) \
;\
static_ASN1_ITEM_start(tname) \
ASN1_ITYPE_CHOICE,\
offsetof(stname,selname) ,\
tname##_ch_tt,\
sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
NULL,\
sizeof(stname),\
#stname \
ASN1_ITEM_end(tname)
# define ASN1_CHOICE_END_cb(stname, tname, selname) \
;\
ASN1_ITEM_start(tname) \
ASN1_ITYPE_CHOICE,\
offsetof(stname,selname) ,\
tname##_ch_tt,\
sizeof(tname##_ch_tt) / sizeof(ASN1_TEMPLATE),\
&tname##_aux,\
sizeof(stname),\
#stname \
ASN1_ITEM_end(tname)
/* This helps with the template wrapper form of ASN1_ITEM */
# define ASN1_EX_TEMPLATE_TYPE(flags, tag, name, type) { \
(flags), (tag), 0,\
#name, ASN1_ITEM_ref(type) }
/* These help with SEQUENCE or CHOICE components */
/* used to declare other types */
# define ASN1_EX_TYPE(flags, tag, stname, field, type) { \
(flags), (tag), offsetof(stname, field),\
#field, ASN1_ITEM_ref(type) }
/* implicit and explicit helper macros */
# define ASN1_IMP_EX(stname, field, type, tag, ex) \
ASN1_EX_TYPE(ASN1_TFLG_IMPLICIT | (ex), tag, stname, field, type)
# define ASN1_EXP_EX(stname, field, type, tag, ex) \
ASN1_EX_TYPE(ASN1_TFLG_EXPLICIT | (ex), tag, stname, field, type)
/* Any defined by macros: the field used is in the table itself */
# define ASN1_ADB_OBJECT(tblname) { ASN1_TFLG_ADB_OID, -1, 0, #tblname, tblname##_adb }
# define ASN1_ADB_INTEGER(tblname) { ASN1_TFLG_ADB_INT, -1, 0, #tblname, tblname##_adb }
/* Plain simple type */
# define ASN1_SIMPLE(stname, field, type) ASN1_EX_TYPE(0,0, stname, field, type)
/* Embedded simple type */
# define ASN1_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_EMBED,0, stname, field, type)
/* OPTIONAL simple type */
# define ASN1_OPT(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL, 0, stname, field, type)
# define ASN1_OPT_EMBED(stname, field, type) ASN1_EX_TYPE(ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED, 0, stname, field, type)
/* IMPLICIT tagged simple type */
# define ASN1_IMP(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, 0)
# define ASN1_IMP_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_EMBED)
/* IMPLICIT tagged OPTIONAL simple type */
# define ASN1_IMP_OPT(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
# define ASN1_IMP_OPT_EMBED(stname, field, type, tag) ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED)
/* Same as above but EXPLICIT */
# define ASN1_EXP(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, 0)
# define ASN1_EXP_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_EMBED)
# define ASN1_EXP_OPT(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL)
# define ASN1_EXP_OPT_EMBED(stname, field, type, tag) ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_EMBED)
/* SEQUENCE OF type */
# define ASN1_SEQUENCE_OF(stname, field, type) \
ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF, 0, stname, field, type)
/* OPTIONAL SEQUENCE OF */
# define ASN1_SEQUENCE_OF_OPT(stname, field, type) \
ASN1_EX_TYPE(ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type)
/* Same as above but for SET OF */
# define ASN1_SET_OF(stname, field, type) \
ASN1_EX_TYPE(ASN1_TFLG_SET_OF, 0, stname, field, type)
# define ASN1_SET_OF_OPT(stname, field, type) \
ASN1_EX_TYPE(ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL, 0, stname, field, type)
/* Finally compound types of SEQUENCE, SET, IMPLICIT, EXPLICIT and OPTIONAL */
# define ASN1_IMP_SET_OF(stname, field, type, tag) \
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)
# define ASN1_EXP_SET_OF(stname, field, type, tag) \
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF)
# define ASN1_IMP_SET_OF_OPT(stname, field, type, tag) \
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL)
# define ASN1_EXP_SET_OF_OPT(stname, field, type, tag) \
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SET_OF|ASN1_TFLG_OPTIONAL)
# define ASN1_IMP_SEQUENCE_OF(stname, field, type, tag) \
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)
# define ASN1_IMP_SEQUENCE_OF_OPT(stname, field, type, tag) \
ASN1_IMP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)
# define ASN1_EXP_SEQUENCE_OF(stname, field, type, tag) \
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF)
# define ASN1_EXP_SEQUENCE_OF_OPT(stname, field, type, tag) \
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_SEQUENCE_OF|ASN1_TFLG_OPTIONAL)
/* EXPLICIT using indefinite length constructed form */
# define ASN1_NDEF_EXP(stname, field, type, tag) \
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_NDEF)
/* EXPLICIT OPTIONAL using indefinite length constructed form */
# define ASN1_NDEF_EXP_OPT(stname, field, type, tag) \
ASN1_EXP_EX(stname, field, type, tag, ASN1_TFLG_OPTIONAL|ASN1_TFLG_NDEF)
/* Macros for the ASN1_ADB structure */
# define ASN1_ADB(name) \
static const ASN1_ADB_TABLE name##_adbtbl[]
# define ASN1_ADB_END(name, flags, field, adb_cb, def, none) \
;\
static const ASN1_ITEM *name##_adb(void) \
{ \
static const ASN1_ADB internal_adb = \
{\
flags,\
offsetof(name, field),\
adb_cb,\
name##_adbtbl,\
sizeof(name##_adbtbl) / sizeof(ASN1_ADB_TABLE),\
def,\
none\
}; \
return (const ASN1_ITEM *) &internal_adb; \
} \
void dummy_function(void)
# define ADB_ENTRY(val, template) {val, template}
# define ASN1_ADB_TEMPLATE(name) \
static const ASN1_TEMPLATE name##_tt
/*
* This is the ASN1 template structure that defines a wrapper round the
* actual type. It determines the actual position of the field in the value
* structure, various flags such as OPTIONAL and the field name.
*/
struct ASN1_TEMPLATE_st {
unsigned long flags; /* Various flags */
long tag; /* tag, not used if no tagging */
unsigned long offset; /* Offset of this field in structure */
const char *field_name; /* Field name */
ASN1_ITEM_EXP *item; /* Relevant ASN1_ITEM or ASN1_ADB */
};
/* Macro to extract ASN1_ITEM and ASN1_ADB pointer from ASN1_TEMPLATE */
# define ASN1_TEMPLATE_item(t) (t->item_ptr)
# define ASN1_TEMPLATE_adb(t) (t->item_ptr)
typedef struct ASN1_ADB_TABLE_st ASN1_ADB_TABLE;
typedef struct ASN1_ADB_st ASN1_ADB;
struct ASN1_ADB_st {
unsigned long flags; /* Various flags */
unsigned long offset; /* Offset of selector field */
int (*adb_cb)(long *psel); /* Application callback */
const ASN1_ADB_TABLE *tbl; /* Table of possible types */
long tblcount; /* Number of entries in tbl */
const ASN1_TEMPLATE *default_tt; /* Type to use if no match */
const ASN1_TEMPLATE *null_tt; /* Type to use if selector is NULL */
};
struct ASN1_ADB_TABLE_st {
long value; /* NID for an object or value for an int */
const ASN1_TEMPLATE tt; /* item for this value */
};
/* template flags */
/* Field is optional */
# define ASN1_TFLG_OPTIONAL (0x1)
/* Field is a SET OF */
# define ASN1_TFLG_SET_OF (0x1 << 1)
/* Field is a SEQUENCE OF */
# define ASN1_TFLG_SEQUENCE_OF (0x2 << 1)
/*
* Special case: this refers to a SET OF that will be sorted into DER order
* when encoded *and* the corresponding STACK will be modified to match the
* new order.
*/
# define ASN1_TFLG_SET_ORDER (0x3 << 1)
/* Mask for SET OF or SEQUENCE OF */
# define ASN1_TFLG_SK_MASK (0x3 << 1)
/*
* These flags mean the tag should be taken from the tag field. If EXPLICIT
* then the underlying type is used for the inner tag.
*/
/* IMPLICIT tagging */
# define ASN1_TFLG_IMPTAG (0x1 << 3)
/* EXPLICIT tagging, inner tag from underlying type */
# define ASN1_TFLG_EXPTAG (0x2 << 3)
# define ASN1_TFLG_TAG_MASK (0x3 << 3)
/* context specific IMPLICIT */
# define ASN1_TFLG_IMPLICIT (ASN1_TFLG_IMPTAG|ASN1_TFLG_CONTEXT)
/* context specific EXPLICIT */
# define ASN1_TFLG_EXPLICIT (ASN1_TFLG_EXPTAG|ASN1_TFLG_CONTEXT)
/*
* If tagging is in force these determine the type of tag to use. Otherwise
* the tag is determined by the underlying type. These values reflect the
* actual octet format.
*/
/* Universal tag */
# define ASN1_TFLG_UNIVERSAL (0x0<<6)
/* Application tag */
# define ASN1_TFLG_APPLICATION (0x1<<6)
/* Context specific tag */
# define ASN1_TFLG_CONTEXT (0x2<<6)
/* Private tag */
# define ASN1_TFLG_PRIVATE (0x3<<6)
# define ASN1_TFLG_TAG_CLASS (0x3<<6)
/*
* These are for ANY DEFINED BY type. In this case the 'item' field points to
* an ASN1_ADB structure which contains a table of values to decode the
* relevant type
*/
# define ASN1_TFLG_ADB_MASK (0x3<<8)
# define ASN1_TFLG_ADB_OID (0x1<<8)
# define ASN1_TFLG_ADB_INT (0x1<<9)
/*
* This flag when present in a SEQUENCE OF, SET OF or EXPLICIT causes
* indefinite length constructed encoding to be used if required.
*/
# define ASN1_TFLG_NDEF (0x1<<11)
/* Field is embedded and not a pointer */
# define ASN1_TFLG_EMBED (0x1 << 12)
/* This is the actual ASN1 item itself */
struct ASN1_ITEM_st {
char itype; /* The item type, primitive, SEQUENCE, CHOICE
* or extern */
long utype; /* underlying type */
const ASN1_TEMPLATE *templates; /* If SEQUENCE or CHOICE this contains
* the contents */
long tcount; /* Number of templates if SEQUENCE or CHOICE */
const void *funcs; /* further data and type-specific functions */
/* funcs can be ASN1_PRIMITIVE_FUNCS*, ASN1_EXTERN_FUNCS*, or ASN1_AUX* */
long size; /* Structure size (usually) */
const char *sname; /* Structure name */
};
/*
* Cache for ASN1 tag and length, so we don't keep re-reading it for things
* like CHOICE
*/
struct ASN1_TLC_st {
char valid; /* Values below are valid */
int ret; /* return value */
long plen; /* length */
int ptag; /* class value */
int pclass; /* class value */
int hdrlen; /* header length */
};
/* Typedefs for ASN1 function pointers */
typedef int ASN1_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
const ASN1_ITEM *it, int tag, int aclass, char opt,
ASN1_TLC *ctx);
typedef int ASN1_ex_d2i_ex(ASN1_VALUE **pval, const unsigned char **in, long len,
const ASN1_ITEM *it, int tag, int aclass, char opt,
ASN1_TLC *ctx, OSSL_LIB_CTX *libctx,
const char *propq);
typedef int ASN1_ex_i2d(const ASN1_VALUE **pval, unsigned char **out,
const ASN1_ITEM *it, int tag, int aclass);
typedef int ASN1_ex_new_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
typedef int ASN1_ex_new_ex_func(ASN1_VALUE **pval, const ASN1_ITEM *it,
OSSL_LIB_CTX *libctx, const char *propq);
typedef void ASN1_ex_free_func(ASN1_VALUE **pval, const ASN1_ITEM *it);
typedef int ASN1_ex_print_func(BIO *out, const ASN1_VALUE **pval,
int indent, const char *fname,
const ASN1_PCTX *pctx);
typedef int ASN1_primitive_i2c(const ASN1_VALUE **pval, unsigned char *cont,
int *putype, const ASN1_ITEM *it);
typedef int ASN1_primitive_c2i(ASN1_VALUE **pval, const unsigned char *cont,
int len, int utype, char *free_cont,
const ASN1_ITEM *it);
typedef int ASN1_primitive_print(BIO *out, const ASN1_VALUE **pval,
const ASN1_ITEM *it, int indent,
const ASN1_PCTX *pctx);
typedef struct ASN1_EXTERN_FUNCS_st {
void *app_data;
ASN1_ex_new_func *asn1_ex_new;
ASN1_ex_free_func *asn1_ex_free;
ASN1_ex_free_func *asn1_ex_clear;
ASN1_ex_d2i *asn1_ex_d2i;
ASN1_ex_i2d *asn1_ex_i2d;
ASN1_ex_print_func *asn1_ex_print;
ASN1_ex_new_ex_func *asn1_ex_new_ex;
ASN1_ex_d2i_ex *asn1_ex_d2i_ex;
} ASN1_EXTERN_FUNCS;
typedef struct ASN1_PRIMITIVE_FUNCS_st {
void *app_data;
unsigned long flags;
ASN1_ex_new_func *prim_new;
ASN1_ex_free_func *prim_free;
ASN1_ex_free_func *prim_clear;
ASN1_primitive_c2i *prim_c2i;
ASN1_primitive_i2c *prim_i2c;
ASN1_primitive_print *prim_print;
} ASN1_PRIMITIVE_FUNCS;
/*
* This is the ASN1_AUX structure: it handles various miscellaneous
* requirements. For example the use of reference counts and an informational
* callback. The "informational callback" is called at various points during
* the ASN1 encoding and decoding. It can be used to provide minor
* customisation of the structures used. This is most useful where the
* supplied routines *almost* do the right thing but need some extra help at
* a few points. If the callback returns zero then it is assumed a fatal
* error has occurred and the main operation should be abandoned. If major
* changes in the default behaviour are required then an external type is
* more appropriate.
* For the operations ASN1_OP_I2D_PRE, ASN1_OP_I2D_POST, ASN1_OP_PRINT_PRE, and
* ASN1_OP_PRINT_POST, meanwhile a variant of the callback with const parameter
* 'in' is provided to make clear statically that its input is not modified. If
* and only if this variant is in use the flag ASN1_AFLG_CONST_CB must be set.
*/
typedef int ASN1_aux_cb(int operation, ASN1_VALUE **in, const ASN1_ITEM *it,
void *exarg);
typedef int ASN1_aux_const_cb(int operation, const ASN1_VALUE **in,
const ASN1_ITEM *it, void *exarg);
typedef struct ASN1_AUX_st {
void *app_data;
int flags;
int ref_offset; /* Offset of reference value */
int ref_lock; /* Offset of lock value */
ASN1_aux_cb *asn1_cb;
int enc_offset; /* Offset of ASN1_ENCODING structure */
ASN1_aux_const_cb *asn1_const_cb; /* for ASN1_OP_I2D_ and ASN1_OP_PRINT_ */
} ASN1_AUX;
/* For print related callbacks exarg points to this structure */
typedef struct ASN1_PRINT_ARG_st {
BIO *out;
int indent;
const ASN1_PCTX *pctx;
} ASN1_PRINT_ARG;
/* For streaming related callbacks exarg points to this structure */
typedef struct ASN1_STREAM_ARG_st {
/* BIO to stream through */
BIO *out;
/* BIO with filters appended */
BIO *ndef_bio;
/* Streaming I/O boundary */
unsigned char **boundary;
} ASN1_STREAM_ARG;
/* Flags in ASN1_AUX */
/* Use a reference count */
# define ASN1_AFLG_REFCOUNT 1
/* Save the encoding of structure (useful for signatures) */
# define ASN1_AFLG_ENCODING 2
/* The Sequence length is invalid */
# define ASN1_AFLG_BROKEN 4
/* Use the new asn1_const_cb */
# define ASN1_AFLG_CONST_CB 8
/* operation values for asn1_cb */
# define ASN1_OP_NEW_PRE 0
# define ASN1_OP_NEW_POST 1
# define ASN1_OP_FREE_PRE 2
# define ASN1_OP_FREE_POST 3
# define ASN1_OP_D2I_PRE 4
# define ASN1_OP_D2I_POST 5
# define ASN1_OP_I2D_PRE 6
# define ASN1_OP_I2D_POST 7
# define ASN1_OP_PRINT_PRE 8
# define ASN1_OP_PRINT_POST 9
# define ASN1_OP_STREAM_PRE 10
# define ASN1_OP_STREAM_POST 11
# define ASN1_OP_DETACHED_PRE 12
# define ASN1_OP_DETACHED_POST 13
# define ASN1_OP_DUP_PRE 14
# define ASN1_OP_DUP_POST 15
# define ASN1_OP_GET0_LIBCTX 16
# define ASN1_OP_GET0_PROPQ 17
/* Macro to implement a primitive type */
# define IMPLEMENT_ASN1_TYPE(stname) IMPLEMENT_ASN1_TYPE_ex(stname, stname, 0)
# define IMPLEMENT_ASN1_TYPE_ex(itname, vname, ex) \
ASN1_ITEM_start(itname) \
ASN1_ITYPE_PRIMITIVE, V_##vname, NULL, 0, NULL, ex, #itname \
ASN1_ITEM_end(itname)
/* Macro to implement a multi string type */
# define IMPLEMENT_ASN1_MSTRING(itname, mask) \
ASN1_ITEM_start(itname) \
ASN1_ITYPE_MSTRING, mask, NULL, 0, NULL, sizeof(ASN1_STRING), #itname \
ASN1_ITEM_end(itname)
# define IMPLEMENT_EXTERN_ASN1(sname, tag, fptrs) \
ASN1_ITEM_start(sname) \
ASN1_ITYPE_EXTERN, \
tag, \
NULL, \
0, \
&fptrs, \
0, \
#sname \
ASN1_ITEM_end(sname)
/* Macro to implement standard functions in terms of ASN1_ITEM structures */
# define IMPLEMENT_ASN1_FUNCTIONS(stname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, stname, stname)
# define IMPLEMENT_ASN1_FUNCTIONS_name(stname, itname) IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, itname)
# define IMPLEMENT_ASN1_FUNCTIONS_ENCODE_name(stname, itname) \
IMPLEMENT_ASN1_FUNCTIONS_ENCODE_fname(stname, itname, itname)
# define IMPLEMENT_STATIC_ASN1_ALLOC_FUNCTIONS(stname) \
IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(static, stname, stname, stname)
# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS(stname) \
IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, stname, stname)
# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_pfname(pre, stname, itname, fname) \
pre stname *fname##_new(void) \
{ \
return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
} \
pre void fname##_free(stname *a) \
{ \
ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
}
# define IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname) \
stname *fname##_new(void) \
{ \
return (stname *)ASN1_item_new(ASN1_ITEM_rptr(itname)); \
} \
void fname##_free(stname *a) \
{ \
ASN1_item_free((ASN1_VALUE *)a, ASN1_ITEM_rptr(itname)); \
}
# define IMPLEMENT_ASN1_FUNCTIONS_fname(stname, itname, fname) \
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
IMPLEMENT_ASN1_ALLOC_FUNCTIONS_fname(stname, itname, fname)
# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname) \
stname *d2i_##fname(stname **a, const unsigned char **in, long len) \
{ \
return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, ASN1_ITEM_rptr(itname));\
} \
int i2d_##fname(const stname *a, unsigned char **out) \
{ \
return ASN1_item_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(itname));\
}
# define IMPLEMENT_ASN1_NDEF_FUNCTION(stname) \
int i2d_##stname##_NDEF(const stname *a, unsigned char **out) \
{ \
return ASN1_item_ndef_i2d((const ASN1_VALUE *)a, out, ASN1_ITEM_rptr(stname));\
}
# define IMPLEMENT_STATIC_ASN1_ENCODE_FUNCTIONS(stname) \
static stname *d2i_##stname(stname **a, \
const unsigned char **in, long len) \
{ \
return (stname *)ASN1_item_d2i((ASN1_VALUE **)a, in, len, \
ASN1_ITEM_rptr(stname)); \
} \
static int i2d_##stname(const stname *a, unsigned char **out) \
{ \
return ASN1_item_i2d((const ASN1_VALUE *)a, out, \
ASN1_ITEM_rptr(stname)); \
}
# define IMPLEMENT_ASN1_DUP_FUNCTION(stname) \
stname * stname##_dup(const stname *x) \
{ \
return ASN1_item_dup(ASN1_ITEM_rptr(stname), x); \
}
# define IMPLEMENT_ASN1_PRINT_FUNCTION(stname) \
IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, stname, stname)
# define IMPLEMENT_ASN1_PRINT_FUNCTION_fname(stname, itname, fname) \
int fname##_print_ctx(BIO *out, const stname *x, int indent, \
const ASN1_PCTX *pctx) \
{ \
return ASN1_item_print(out, (const ASN1_VALUE *)x, indent, \
ASN1_ITEM_rptr(itname), pctx); \
}
/* external definitions for primitive types */
DECLARE_ASN1_ITEM(ASN1_BOOLEAN)
DECLARE_ASN1_ITEM(ASN1_TBOOLEAN)
DECLARE_ASN1_ITEM(ASN1_FBOOLEAN)
DECLARE_ASN1_ITEM(ASN1_SEQUENCE)
DECLARE_ASN1_ITEM(CBIGNUM)
DECLARE_ASN1_ITEM(BIGNUM)
DECLARE_ASN1_ITEM(INT32)
DECLARE_ASN1_ITEM(ZINT32)
DECLARE_ASN1_ITEM(UINT32)
DECLARE_ASN1_ITEM(ZUINT32)
DECLARE_ASN1_ITEM(INT64)
DECLARE_ASN1_ITEM(ZINT64)
DECLARE_ASN1_ITEM(UINT64)
DECLARE_ASN1_ITEM(ZUINT64)
# ifndef OPENSSL_NO_DEPRECATED_3_0
/*
* LONG and ZLONG are strongly discouraged for use as stored data, as the
* underlying C type (long) differs in size depending on the architecture.
* They are designed with 32-bit longs in mind.
*/
DECLARE_ASN1_ITEM(LONG)
DECLARE_ASN1_ITEM(ZLONG)
# endif
SKM_DEFINE_STACK_OF_INTERNAL(ASN1_VALUE, ASN1_VALUE, ASN1_VALUE)
#define sk_ASN1_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_ASN1_VALUE_sk_type(sk))
#define sk_ASN1_VALUE_value(sk, idx) ((ASN1_VALUE *)OPENSSL_sk_value(ossl_check_const_ASN1_VALUE_sk_type(sk), (idx)))
#define sk_ASN1_VALUE_new(cmp) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new(ossl_check_ASN1_VALUE_compfunc_type(cmp)))
#define sk_ASN1_VALUE_new_null() ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_null())
#define sk_ASN1_VALUE_new_reserve(cmp, n) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_ASN1_VALUE_compfunc_type(cmp), (n)))
#define sk_ASN1_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_ASN1_VALUE_sk_type(sk), (n))
#define sk_ASN1_VALUE_free(sk) OPENSSL_sk_free(ossl_check_ASN1_VALUE_sk_type(sk))
#define sk_ASN1_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_ASN1_VALUE_sk_type(sk))
#define sk_ASN1_VALUE_delete(sk, i) ((ASN1_VALUE *)OPENSSL_sk_delete(ossl_check_ASN1_VALUE_sk_type(sk), (i)))
#define sk_ASN1_VALUE_delete_ptr(sk, ptr) ((ASN1_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr)))
#define sk_ASN1_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
#define sk_ASN1_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
#define sk_ASN1_VALUE_pop(sk) ((ASN1_VALUE *)OPENSSL_sk_pop(ossl_check_ASN1_VALUE_sk_type(sk)))
#define sk_ASN1_VALUE_shift(sk) ((ASN1_VALUE *)OPENSSL_sk_shift(ossl_check_ASN1_VALUE_sk_type(sk)))
#define sk_ASN1_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_ASN1_VALUE_sk_type(sk),ossl_check_ASN1_VALUE_freefunc_type(freefunc))
#define sk_ASN1_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), (idx))
#define sk_ASN1_VALUE_set(sk, idx, ptr) ((ASN1_VALUE *)OPENSSL_sk_set(ossl_check_ASN1_VALUE_sk_type(sk), (idx), ossl_check_ASN1_VALUE_type(ptr)))
#define sk_ASN1_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
#define sk_ASN1_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr))
#define sk_ASN1_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_type(ptr), pnum)
#define sk_ASN1_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_ASN1_VALUE_sk_type(sk))
#define sk_ASN1_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_ASN1_VALUE_sk_type(sk))
#define sk_ASN1_VALUE_dup(sk) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_dup(ossl_check_const_ASN1_VALUE_sk_type(sk)))
#define sk_ASN1_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(ASN1_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_copyfunc_type(copyfunc), ossl_check_ASN1_VALUE_freefunc_type(freefunc)))
#define sk_ASN1_VALUE_set_cmp_func(sk, cmp) ((sk_ASN1_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_ASN1_VALUE_sk_type(sk), ossl_check_ASN1_VALUE_compfunc_type(cmp)))
/* Functions used internally by the ASN1 code */
int ASN1_item_ex_new(ASN1_VALUE **pval, const ASN1_ITEM *it);
void ASN1_item_ex_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
const ASN1_ITEM *it, int tag, int aclass, char opt,
ASN1_TLC *ctx);
int ASN1_item_ex_i2d(const ASN1_VALUE **pval, unsigned char **out,
const ASN1_ITEM *it, int tag, int aclass);
/* Legacy compatibility */
# define IMPLEMENT_ASN1_FUNCTIONS_const(name) IMPLEMENT_ASN1_FUNCTIONS(name)
# define IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(stname, itname, fname) \
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_fname(stname, itname, fname)
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,104 @@
/*
* Copyright 2015-2022 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#include <stdlib.h>
#ifndef OPENSSL_ASYNC_H
# define OPENSSL_ASYNC_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_ASYNC_H
# endif
#if defined(_WIN32)
# if defined(BASETYPES) || defined(_WINDEF_H)
/* application has to include <windows.h> to use this */
#define OSSL_ASYNC_FD HANDLE
#define OSSL_BAD_ASYNC_FD INVALID_HANDLE_VALUE
# endif
#else
#define OSSL_ASYNC_FD int
#define OSSL_BAD_ASYNC_FD -1
#endif
# include <openssl/asyncerr.h>
# ifdef __cplusplus
extern "C" {
# endif
typedef struct async_job_st ASYNC_JOB;
typedef struct async_wait_ctx_st ASYNC_WAIT_CTX;
typedef int (*ASYNC_callback_fn)(void *arg);
#define ASYNC_ERR 0
#define ASYNC_NO_JOBS 1
#define ASYNC_PAUSE 2
#define ASYNC_FINISH 3
#define ASYNC_STATUS_UNSUPPORTED 0
#define ASYNC_STATUS_ERR 1
#define ASYNC_STATUS_OK 2
#define ASYNC_STATUS_EAGAIN 3
int ASYNC_init_thread(size_t max_size, size_t init_size);
void ASYNC_cleanup_thread(void);
#ifdef OSSL_ASYNC_FD
ASYNC_WAIT_CTX *ASYNC_WAIT_CTX_new(void);
void ASYNC_WAIT_CTX_free(ASYNC_WAIT_CTX *ctx);
int ASYNC_WAIT_CTX_set_wait_fd(ASYNC_WAIT_CTX *ctx, const void *key,
OSSL_ASYNC_FD fd,
void *custom_data,
void (*cleanup)(ASYNC_WAIT_CTX *, const void *,
OSSL_ASYNC_FD, void *));
int ASYNC_WAIT_CTX_get_fd(ASYNC_WAIT_CTX *ctx, const void *key,
OSSL_ASYNC_FD *fd, void **custom_data);
int ASYNC_WAIT_CTX_get_all_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *fd,
size_t *numfds);
int ASYNC_WAIT_CTX_get_callback(ASYNC_WAIT_CTX *ctx,
ASYNC_callback_fn *callback,
void **callback_arg);
int ASYNC_WAIT_CTX_set_callback(ASYNC_WAIT_CTX *ctx,
ASYNC_callback_fn callback,
void *callback_arg);
int ASYNC_WAIT_CTX_set_status(ASYNC_WAIT_CTX *ctx, int status);
int ASYNC_WAIT_CTX_get_status(ASYNC_WAIT_CTX *ctx);
int ASYNC_WAIT_CTX_get_changed_fds(ASYNC_WAIT_CTX *ctx, OSSL_ASYNC_FD *addfd,
size_t *numaddfds, OSSL_ASYNC_FD *delfd,
size_t *numdelfds);
int ASYNC_WAIT_CTX_clear_fd(ASYNC_WAIT_CTX *ctx, const void *key);
#endif
int ASYNC_is_capable(void);
typedef void *(*ASYNC_stack_alloc_fn)(size_t *num);
typedef void (*ASYNC_stack_free_fn)(void *addr);
int ASYNC_set_mem_functions(ASYNC_stack_alloc_fn alloc_fn,
ASYNC_stack_free_fn free_fn);
void ASYNC_get_mem_functions(ASYNC_stack_alloc_fn *alloc_fn,
ASYNC_stack_free_fn *free_fn);
int ASYNC_start_job(ASYNC_JOB **job, ASYNC_WAIT_CTX *ctx, int *ret,
int (*func)(void *), void *args, size_t size);
int ASYNC_pause_job(void);
ASYNC_JOB *ASYNC_get_current_job(void);
ASYNC_WAIT_CTX *ASYNC_get_wait_ctx(ASYNC_JOB *job);
void ASYNC_block_pause(void);
void ASYNC_unblock_pause(void);
# ifdef __cplusplus
}
# endif
#endif

View File

@@ -0,0 +1,29 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_ASYNCERR_H
# define OPENSSL_ASYNCERR_H
# pragma once
# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>
/*
* ASYNC reason codes.
*/
# define ASYNC_R_FAILED_TO_SET_POOL 101
# define ASYNC_R_FAILED_TO_SWAP_CONTEXT 102
# define ASYNC_R_INIT_FAILED 105
# define ASYNC_R_INVALID_POOL_SIZE 103
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,72 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_BIOERR_H
# define OPENSSL_BIOERR_H
# pragma once
# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>
/*
* BIO reason codes.
*/
# define BIO_R_ACCEPT_ERROR 100
# define BIO_R_ADDRINFO_ADDR_IS_NOT_AF_INET 141
# define BIO_R_AMBIGUOUS_HOST_OR_SERVICE 129
# define BIO_R_BAD_FOPEN_MODE 101
# define BIO_R_BROKEN_PIPE 124
# define BIO_R_CONNECT_ERROR 103
# define BIO_R_CONNECT_TIMEOUT 147
# define BIO_R_GETHOSTBYNAME_ADDR_IS_NOT_AF_INET 107
# define BIO_R_GETSOCKNAME_ERROR 132
# define BIO_R_GETSOCKNAME_TRUNCATED_ADDRESS 133
# define BIO_R_GETTING_SOCKTYPE 134
# define BIO_R_INVALID_ARGUMENT 125
# define BIO_R_INVALID_SOCKET 135
# define BIO_R_IN_USE 123
# define BIO_R_LENGTH_TOO_LONG 102
# define BIO_R_LISTEN_V6_ONLY 136
# define BIO_R_LOCAL_ADDR_NOT_AVAILABLE 111
# define BIO_R_LOOKUP_RETURNED_NOTHING 142
# define BIO_R_MALFORMED_HOST_OR_SERVICE 130
# define BIO_R_NBIO_CONNECT_ERROR 110
# define BIO_R_NON_FATAL 112
# define BIO_R_NO_ACCEPT_ADDR_OR_SERVICE_SPECIFIED 143
# define BIO_R_NO_HOSTNAME_OR_SERVICE_SPECIFIED 144
# define BIO_R_NO_PORT_DEFINED 113
# define BIO_R_NO_SUCH_FILE 128
# define BIO_R_NULL_PARAMETER 115 /* unused */
# define BIO_R_TFO_DISABLED 106
# define BIO_R_TFO_NO_KERNEL_SUPPORT 108
# define BIO_R_TRANSFER_ERROR 104
# define BIO_R_TRANSFER_TIMEOUT 105
# define BIO_R_UNABLE_TO_BIND_SOCKET 117
# define BIO_R_UNABLE_TO_CREATE_SOCKET 118
# define BIO_R_UNABLE_TO_KEEPALIVE 137
# define BIO_R_UNABLE_TO_LISTEN_SOCKET 119
# define BIO_R_UNABLE_TO_NODELAY 138
# define BIO_R_UNABLE_TO_REUSEADDR 139
# define BIO_R_UNABLE_TO_TFO 109
# define BIO_R_UNAVAILABLE_IP_FAMILY 145
# define BIO_R_UNINITIALIZED 120
# define BIO_R_UNKNOWN_INFO_TYPE 140
# define BIO_R_UNSUPPORTED_IP_FAMILY 146
# define BIO_R_UNSUPPORTED_METHOD 121
# define BIO_R_UNSUPPORTED_PROTOCOL_FAMILY 131
# define BIO_R_WRITE_TO_READ_ONLY_BIO 126
# define BIO_R_WSASTARTUP 122
# define BIO_R_PORT_MISMATCH 150
# define BIO_R_PEER_ADDR_NOT_AVAILABLE 151
#endif

View File

@@ -0,0 +1,78 @@
/*
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_BLOWFISH_H
# define OPENSSL_BLOWFISH_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_BLOWFISH_H
# endif
# include <openssl/opensslconf.h>
# ifndef OPENSSL_NO_BF
# include <openssl/e_os2.h>
# ifdef __cplusplus
extern "C" {
# endif
# define BF_BLOCK 8
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define BF_ENCRYPT 1
# define BF_DECRYPT 0
/*-
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* ! BF_LONG has to be at least 32 bits wide. !
* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
*/
# define BF_LONG unsigned int
# define BF_ROUNDS 16
typedef struct bf_key_st {
BF_LONG P[BF_ROUNDS + 2];
BF_LONG S[4 * 256];
} BF_KEY;
# endif /* OPENSSL_NO_DEPRECATED_3_0 */
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 void BF_set_key(BF_KEY *key, int len,
const unsigned char *data);
OSSL_DEPRECATEDIN_3_0 void BF_encrypt(BF_LONG *data, const BF_KEY *key);
OSSL_DEPRECATEDIN_3_0 void BF_decrypt(BF_LONG *data, const BF_KEY *key);
OSSL_DEPRECATEDIN_3_0 void BF_ecb_encrypt(const unsigned char *in,
unsigned char *out, const BF_KEY *key,
int enc);
OSSL_DEPRECATEDIN_3_0 void BF_cbc_encrypt(const unsigned char *in,
unsigned char *out, long length,
const BF_KEY *schedule,
unsigned char *ivec, int enc);
OSSL_DEPRECATEDIN_3_0 void BF_cfb64_encrypt(const unsigned char *in,
unsigned char *out,
long length, const BF_KEY *schedule,
unsigned char *ivec, int *num,
int enc);
OSSL_DEPRECATEDIN_3_0 void BF_ofb64_encrypt(const unsigned char *in,
unsigned char *out,
long length, const BF_KEY *schedule,
unsigned char *ivec, int *num);
OSSL_DEPRECATEDIN_3_0 const char *BF_options(void);
# endif
# ifdef __cplusplus
}
# endif
# endif
#endif

View File

@@ -0,0 +1,590 @@
/*
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_BN_H
# define OPENSSL_BN_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_BN_H
# endif
# include <openssl/e_os2.h>
# ifndef OPENSSL_NO_STDIO
# include <stdio.h>
# endif
# include <openssl/opensslconf.h>
# include <openssl/types.h>
# include <openssl/crypto.h>
# include <openssl/bnerr.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* 64-bit processor with LP64 ABI
*/
# ifdef SIXTY_FOUR_BIT_LONG
# define BN_ULONG unsigned long
# define BN_BYTES 8
# endif
/*
* 64-bit processor other than LP64 ABI
*/
# ifdef SIXTY_FOUR_BIT
# define BN_ULONG unsigned long long
# define BN_BYTES 8
# endif
# ifdef THIRTY_TWO_BIT
# define BN_ULONG unsigned int
# define BN_BYTES 4
# endif
# define BN_BITS2 (BN_BYTES * 8)
# define BN_BITS (BN_BITS2 * 2)
# define BN_TBIT ((BN_ULONG)1 << (BN_BITS2 - 1))
# define BN_FLG_MALLOCED 0x01
# define BN_FLG_STATIC_DATA 0x02
/*
* avoid leaking exponent information through timing,
* BN_mod_exp_mont() will call BN_mod_exp_mont_consttime,
* BN_div() will call BN_div_no_branch,
* BN_mod_inverse() will call bn_mod_inverse_no_branch.
*/
# define BN_FLG_CONSTTIME 0x04
# define BN_FLG_SECURE 0x08
# ifndef OPENSSL_NO_DEPRECATED_0_9_8
/* deprecated name for the flag */
# define BN_FLG_EXP_CONSTTIME BN_FLG_CONSTTIME
# define BN_FLG_FREE 0x8000 /* used for debugging */
# endif
void BN_set_flags(BIGNUM *b, int n);
int BN_get_flags(const BIGNUM *b, int n);
/* Values for |top| in BN_rand() */
#define BN_RAND_TOP_ANY -1
#define BN_RAND_TOP_ONE 0
#define BN_RAND_TOP_TWO 1
/* Values for |bottom| in BN_rand() */
#define BN_RAND_BOTTOM_ANY 0
#define BN_RAND_BOTTOM_ODD 1
/*
* get a clone of a BIGNUM with changed flags, for *temporary* use only (the
* two BIGNUMs cannot be used in parallel!). Also only for *read only* use. The
* value |dest| should be a newly allocated BIGNUM obtained via BN_new() that
* has not been otherwise initialised or used.
*/
void BN_with_flags(BIGNUM *dest, const BIGNUM *b, int flags);
/* Wrapper function to make using BN_GENCB easier */
int BN_GENCB_call(BN_GENCB *cb, int a, int b);
BN_GENCB *BN_GENCB_new(void);
void BN_GENCB_free(BN_GENCB *cb);
/* Populate a BN_GENCB structure with an "old"-style callback */
void BN_GENCB_set_old(BN_GENCB *gencb, void (*callback) (int, int, void *),
void *cb_arg);
/* Populate a BN_GENCB structure with a "new"-style callback */
void BN_GENCB_set(BN_GENCB *gencb, int (*callback) (int, int, BN_GENCB *),
void *cb_arg);
void *BN_GENCB_get_arg(BN_GENCB *cb);
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define BN_prime_checks 0 /* default: select number of iterations based
* on the size of the number */
/*
* BN_prime_checks_for_size() returns the number of Miller-Rabin iterations
* that will be done for checking that a random number is probably prime. The
* error rate for accepting a composite number as prime depends on the size of
* the prime |b|. The error rates used are for calculating an RSA key with 2 primes,
* and so the level is what you would expect for a key of double the size of the
* prime.
*
* This table is generated using the algorithm of FIPS PUB 186-4
* Digital Signature Standard (DSS), section F.1, page 117.
* (https://dx.doi.org/10.6028/NIST.FIPS.186-4)
*
* The following magma script was used to generate the output:
* securitybits:=125;
* k:=1024;
* for t:=1 to 65 do
* for M:=3 to Floor(2*Sqrt(k-1)-1) do
* S:=0;
* // Sum over m
* for m:=3 to M do
* s:=0;
* // Sum over j
* for j:=2 to m do
* s+:=(RealField(32)!2)^-(j+(k-1)/j);
* end for;
* S+:=2^(m-(m-1)*t)*s;
* end for;
* A:=2^(k-2-M*t);
* B:=8*(Pi(RealField(32))^2-6)/3*2^(k-2)*S;
* pkt:=2.00743*Log(2)*k*2^-k*(A+B);
* seclevel:=Floor(-Log(2,pkt));
* if seclevel ge securitybits then
* printf "k: %5o, security: %o bits (t: %o, M: %o)\n",k,seclevel,t,M;
* break;
* end if;
* end for;
* if seclevel ge securitybits then break; end if;
* end for;
*
* It can be run online at:
* http://magma.maths.usyd.edu.au/calc
*
* And will output:
* k: 1024, security: 129 bits (t: 6, M: 23)
*
* k is the number of bits of the prime, securitybits is the level we want to
* reach.
*
* prime length | RSA key size | # MR tests | security level
* -------------+--------------|------------+---------------
* (b) >= 6394 | >= 12788 | 3 | 256 bit
* (b) >= 3747 | >= 7494 | 3 | 192 bit
* (b) >= 1345 | >= 2690 | 4 | 128 bit
* (b) >= 1080 | >= 2160 | 5 | 128 bit
* (b) >= 852 | >= 1704 | 5 | 112 bit
* (b) >= 476 | >= 952 | 5 | 80 bit
* (b) >= 400 | >= 800 | 6 | 80 bit
* (b) >= 347 | >= 694 | 7 | 80 bit
* (b) >= 308 | >= 616 | 8 | 80 bit
* (b) >= 55 | >= 110 | 27 | 64 bit
* (b) >= 6 | >= 12 | 34 | 64 bit
*/
# define BN_prime_checks_for_size(b) ((b) >= 3747 ? 3 : \
(b) >= 1345 ? 4 : \
(b) >= 476 ? 5 : \
(b) >= 400 ? 6 : \
(b) >= 347 ? 7 : \
(b) >= 308 ? 8 : \
(b) >= 55 ? 27 : \
/* b >= 6 */ 34)
# endif
# define BN_num_bytes(a) ((BN_num_bits(a)+7)/8)
int BN_abs_is_word(const BIGNUM *a, const BN_ULONG w);
int BN_is_zero(const BIGNUM *a);
int BN_is_one(const BIGNUM *a);
int BN_is_word(const BIGNUM *a, const BN_ULONG w);
int BN_is_odd(const BIGNUM *a);
# define BN_one(a) (BN_set_word((a),1))
void BN_zero_ex(BIGNUM *a);
# if OPENSSL_API_LEVEL > 908
# define BN_zero(a) BN_zero_ex(a)
# else
# define BN_zero(a) (BN_set_word((a),0))
# endif
const BIGNUM *BN_value_one(void);
char *BN_options(void);
BN_CTX *BN_CTX_new_ex(OSSL_LIB_CTX *ctx);
BN_CTX *BN_CTX_new(void);
BN_CTX *BN_CTX_secure_new_ex(OSSL_LIB_CTX *ctx);
BN_CTX *BN_CTX_secure_new(void);
void BN_CTX_free(BN_CTX *c);
void BN_CTX_start(BN_CTX *ctx);
BIGNUM *BN_CTX_get(BN_CTX *ctx);
void BN_CTX_end(BN_CTX *ctx);
int BN_rand_ex(BIGNUM *rnd, int bits, int top, int bottom,
unsigned int strength, BN_CTX *ctx);
int BN_rand(BIGNUM *rnd, int bits, int top, int bottom);
int BN_priv_rand_ex(BIGNUM *rnd, int bits, int top, int bottom,
unsigned int strength, BN_CTX *ctx);
int BN_priv_rand(BIGNUM *rnd, int bits, int top, int bottom);
int BN_rand_range_ex(BIGNUM *r, const BIGNUM *range, unsigned int strength,
BN_CTX *ctx);
int BN_rand_range(BIGNUM *rnd, const BIGNUM *range);
int BN_priv_rand_range_ex(BIGNUM *r, const BIGNUM *range,
unsigned int strength, BN_CTX *ctx);
int BN_priv_rand_range(BIGNUM *rnd, const BIGNUM *range);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom);
OSSL_DEPRECATEDIN_3_0
int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range);
# endif
int BN_num_bits(const BIGNUM *a);
int BN_num_bits_word(BN_ULONG l);
int BN_security_bits(int L, int N);
BIGNUM *BN_new(void);
BIGNUM *BN_secure_new(void);
void BN_clear_free(BIGNUM *a);
BIGNUM *BN_copy(BIGNUM *a, const BIGNUM *b);
void BN_swap(BIGNUM *a, BIGNUM *b);
BIGNUM *BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret);
BIGNUM *BN_signed_bin2bn(const unsigned char *s, int len, BIGNUM *ret);
int BN_bn2bin(const BIGNUM *a, unsigned char *to);
int BN_bn2binpad(const BIGNUM *a, unsigned char *to, int tolen);
int BN_signed_bn2bin(const BIGNUM *a, unsigned char *to, int tolen);
BIGNUM *BN_lebin2bn(const unsigned char *s, int len, BIGNUM *ret);
BIGNUM *BN_signed_lebin2bn(const unsigned char *s, int len, BIGNUM *ret);
int BN_bn2lebinpad(const BIGNUM *a, unsigned char *to, int tolen);
int BN_signed_bn2lebin(const BIGNUM *a, unsigned char *to, int tolen);
BIGNUM *BN_native2bn(const unsigned char *s, int len, BIGNUM *ret);
BIGNUM *BN_signed_native2bn(const unsigned char *s, int len, BIGNUM *ret);
int BN_bn2nativepad(const BIGNUM *a, unsigned char *to, int tolen);
int BN_signed_bn2native(const BIGNUM *a, unsigned char *to, int tolen);
BIGNUM *BN_mpi2bn(const unsigned char *s, int len, BIGNUM *ret);
int BN_bn2mpi(const BIGNUM *a, unsigned char *to);
int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
int BN_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
int BN_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
int BN_sqr(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
/** BN_set_negative sets sign of a BIGNUM
* \param b pointer to the BIGNUM object
* \param n 0 if the BIGNUM b should be positive and a value != 0 otherwise
*/
void BN_set_negative(BIGNUM *b, int n);
/** BN_is_negative returns 1 if the BIGNUM is negative
* \param b pointer to the BIGNUM object
* \return 1 if a < 0 and 0 otherwise
*/
int BN_is_negative(const BIGNUM *b);
int BN_div(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m, const BIGNUM *d,
BN_CTX *ctx);
# define BN_mod(rem,m,d,ctx) BN_div(NULL,(rem),(m),(d),(ctx))
int BN_nnmod(BIGNUM *r, const BIGNUM *m, const BIGNUM *d, BN_CTX *ctx);
int BN_mod_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
BN_CTX *ctx);
int BN_mod_add_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
const BIGNUM *m);
int BN_mod_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
BN_CTX *ctx);
int BN_mod_sub_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
const BIGNUM *m);
int BN_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, const BIGNUM *m,
BN_CTX *ctx);
int BN_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m, BN_CTX *ctx);
int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a, const BIGNUM *m);
int BN_mod_lshift(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m,
BN_CTX *ctx);
int BN_mod_lshift_quick(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m);
BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w);
BN_ULONG BN_div_word(BIGNUM *a, BN_ULONG w);
int BN_mul_word(BIGNUM *a, BN_ULONG w);
int BN_add_word(BIGNUM *a, BN_ULONG w);
int BN_sub_word(BIGNUM *a, BN_ULONG w);
int BN_set_word(BIGNUM *a, BN_ULONG w);
BN_ULONG BN_get_word(const BIGNUM *a);
int BN_cmp(const BIGNUM *a, const BIGNUM *b);
void BN_free(BIGNUM *a);
int BN_is_bit_set(const BIGNUM *a, int n);
int BN_lshift(BIGNUM *r, const BIGNUM *a, int n);
int BN_lshift1(BIGNUM *r, const BIGNUM *a);
int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
int BN_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
const BIGNUM *m, BN_CTX *ctx);
int BN_mod_exp_mont(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
const BIGNUM *m, BN_CTX *ctx,
BN_MONT_CTX *in_mont);
int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p,
const BIGNUM *m, BN_CTX *ctx, BN_MONT_CTX *m_ctx);
int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1, const BIGNUM *p1,
const BIGNUM *a2, const BIGNUM *p2, const BIGNUM *m,
BN_CTX *ctx, BN_MONT_CTX *m_ctx);
int BN_mod_exp_simple(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
const BIGNUM *m, BN_CTX *ctx);
int BN_mod_exp_mont_consttime_x2(BIGNUM *rr1, const BIGNUM *a1, const BIGNUM *p1,
const BIGNUM *m1, BN_MONT_CTX *in_mont1,
BIGNUM *rr2, const BIGNUM *a2, const BIGNUM *p2,
const BIGNUM *m2, BN_MONT_CTX *in_mont2,
BN_CTX *ctx);
int BN_mask_bits(BIGNUM *a, int n);
# ifndef OPENSSL_NO_STDIO
int BN_print_fp(FILE *fp, const BIGNUM *a);
# endif
int BN_print(BIO *bio, const BIGNUM *a);
int BN_reciprocal(BIGNUM *r, const BIGNUM *m, int len, BN_CTX *ctx);
int BN_rshift(BIGNUM *r, const BIGNUM *a, int n);
int BN_rshift1(BIGNUM *r, const BIGNUM *a);
void BN_clear(BIGNUM *a);
BIGNUM *BN_dup(const BIGNUM *a);
int BN_ucmp(const BIGNUM *a, const BIGNUM *b);
int BN_set_bit(BIGNUM *a, int n);
int BN_clear_bit(BIGNUM *a, int n);
char *BN_bn2hex(const BIGNUM *a);
char *BN_bn2dec(const BIGNUM *a);
int BN_hex2bn(BIGNUM **a, const char *str);
int BN_dec2bn(BIGNUM **a, const char *str);
int BN_asc2bn(BIGNUM **a, const char *str);
int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
int BN_kronecker(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx); /* returns
* -2 for
* error */
int BN_are_coprime(BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
BIGNUM *BN_mod_inverse(BIGNUM *ret,
const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx);
BIGNUM *BN_mod_sqrt(BIGNUM *ret,
const BIGNUM *a, const BIGNUM *n, BN_CTX *ctx);
void BN_consttime_swap(BN_ULONG swap, BIGNUM *a, BIGNUM *b, int nwords);
/* Deprecated versions */
# ifndef OPENSSL_NO_DEPRECATED_0_9_8
OSSL_DEPRECATEDIN_0_9_8
BIGNUM *BN_generate_prime(BIGNUM *ret, int bits, int safe,
const BIGNUM *add, const BIGNUM *rem,
void (*callback) (int, int, void *),
void *cb_arg);
OSSL_DEPRECATEDIN_0_9_8
int BN_is_prime(const BIGNUM *p, int nchecks,
void (*callback) (int, int, void *),
BN_CTX *ctx, void *cb_arg);
OSSL_DEPRECATEDIN_0_9_8
int BN_is_prime_fasttest(const BIGNUM *p, int nchecks,
void (*callback) (int, int, void *),
BN_CTX *ctx, void *cb_arg,
int do_trial_division);
# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
int BN_is_prime_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx, BN_GENCB *cb);
OSSL_DEPRECATEDIN_3_0
int BN_is_prime_fasttest_ex(const BIGNUM *p, int nchecks, BN_CTX *ctx,
int do_trial_division, BN_GENCB *cb);
# endif
/* Newer versions */
int BN_generate_prime_ex2(BIGNUM *ret, int bits, int safe,
const BIGNUM *add, const BIGNUM *rem, BN_GENCB *cb,
BN_CTX *ctx);
int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add,
const BIGNUM *rem, BN_GENCB *cb);
int BN_check_prime(const BIGNUM *p, BN_CTX *ctx, BN_GENCB *cb);
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
int BN_X931_generate_Xpq(BIGNUM *Xp, BIGNUM *Xq, int nbits, BN_CTX *ctx);
OSSL_DEPRECATEDIN_3_0
int BN_X931_derive_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2,
const BIGNUM *Xp, const BIGNUM *Xp1,
const BIGNUM *Xp2, const BIGNUM *e, BN_CTX *ctx,
BN_GENCB *cb);
OSSL_DEPRECATEDIN_3_0
int BN_X931_generate_prime_ex(BIGNUM *p, BIGNUM *p1, BIGNUM *p2, BIGNUM *Xp1,
BIGNUM *Xp2, const BIGNUM *Xp, const BIGNUM *e,
BN_CTX *ctx, BN_GENCB *cb);
# endif
BN_MONT_CTX *BN_MONT_CTX_new(void);
int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
BN_MONT_CTX *mont, BN_CTX *ctx);
int BN_to_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont,
BN_CTX *ctx);
int BN_from_montgomery(BIGNUM *r, const BIGNUM *a, BN_MONT_CTX *mont,
BN_CTX *ctx);
void BN_MONT_CTX_free(BN_MONT_CTX *mont);
int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod, BN_CTX *ctx);
BN_MONT_CTX *BN_MONT_CTX_copy(BN_MONT_CTX *to, BN_MONT_CTX *from);
BN_MONT_CTX *BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_RWLOCK *lock,
const BIGNUM *mod, BN_CTX *ctx);
/* BN_BLINDING flags */
# define BN_BLINDING_NO_UPDATE 0x00000001
# define BN_BLINDING_NO_RECREATE 0x00000002
BN_BLINDING *BN_BLINDING_new(const BIGNUM *A, const BIGNUM *Ai, BIGNUM *mod);
void BN_BLINDING_free(BN_BLINDING *b);
int BN_BLINDING_update(BN_BLINDING *b, BN_CTX *ctx);
int BN_BLINDING_convert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
int BN_BLINDING_invert(BIGNUM *n, BN_BLINDING *b, BN_CTX *ctx);
int BN_BLINDING_convert_ex(BIGNUM *n, BIGNUM *r, BN_BLINDING *b, BN_CTX *);
int BN_BLINDING_invert_ex(BIGNUM *n, const BIGNUM *r, BN_BLINDING *b,
BN_CTX *);
int BN_BLINDING_is_current_thread(BN_BLINDING *b);
void BN_BLINDING_set_current_thread(BN_BLINDING *b);
int BN_BLINDING_lock(BN_BLINDING *b);
int BN_BLINDING_unlock(BN_BLINDING *b);
unsigned long BN_BLINDING_get_flags(const BN_BLINDING *);
void BN_BLINDING_set_flags(BN_BLINDING *, unsigned long);
BN_BLINDING *BN_BLINDING_create_param(BN_BLINDING *b,
const BIGNUM *e, BIGNUM *m, BN_CTX *ctx,
int (*bn_mod_exp) (BIGNUM *r,
const BIGNUM *a,
const BIGNUM *p,
const BIGNUM *m,
BN_CTX *ctx,
BN_MONT_CTX *m_ctx),
BN_MONT_CTX *m_ctx);
# ifndef OPENSSL_NO_DEPRECATED_0_9_8
OSSL_DEPRECATEDIN_0_9_8
void BN_set_params(int mul, int high, int low, int mont);
OSSL_DEPRECATEDIN_0_9_8
int BN_get_params(int which); /* 0, mul, 1 high, 2 low, 3 mont */
# endif
BN_RECP_CTX *BN_RECP_CTX_new(void);
void BN_RECP_CTX_free(BN_RECP_CTX *recp);
int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *rdiv, BN_CTX *ctx);
int BN_mod_mul_reciprocal(BIGNUM *r, const BIGNUM *x, const BIGNUM *y,
BN_RECP_CTX *recp, BN_CTX *ctx);
int BN_mod_exp_recp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
const BIGNUM *m, BN_CTX *ctx);
int BN_div_recp(BIGNUM *dv, BIGNUM *rem, const BIGNUM *m,
BN_RECP_CTX *recp, BN_CTX *ctx);
# ifndef OPENSSL_NO_EC2M
/*
* Functions for arithmetic over binary polynomials represented by BIGNUMs.
* The BIGNUM::neg property of BIGNUMs representing binary polynomials is
* ignored. Note that input arguments are not const so that their bit arrays
* can be expanded to the appropriate size if needed.
*/
/*
* r = a + b
*/
int BN_GF2m_add(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
# define BN_GF2m_sub(r, a, b) BN_GF2m_add(r, a, b)
/*
* r=a mod p
*/
int BN_GF2m_mod(BIGNUM *r, const BIGNUM *a, const BIGNUM *p);
/* r = (a * b) mod p */
int BN_GF2m_mod_mul(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
const BIGNUM *p, BN_CTX *ctx);
/* r = (a * a) mod p */
int BN_GF2m_mod_sqr(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
/* r = (1 / b) mod p */
int BN_GF2m_mod_inv(BIGNUM *r, const BIGNUM *b, const BIGNUM *p, BN_CTX *ctx);
/* r = (a / b) mod p */
int BN_GF2m_mod_div(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
const BIGNUM *p, BN_CTX *ctx);
/* r = (a ^ b) mod p */
int BN_GF2m_mod_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
const BIGNUM *p, BN_CTX *ctx);
/* r = sqrt(a) mod p */
int BN_GF2m_mod_sqrt(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
BN_CTX *ctx);
/* r^2 + r = a mod p */
int BN_GF2m_mod_solve_quad(BIGNUM *r, const BIGNUM *a, const BIGNUM *p,
BN_CTX *ctx);
# define BN_GF2m_cmp(a, b) BN_ucmp((a), (b))
/*-
* Some functions allow for representation of the irreducible polynomials
* as an unsigned int[], say p. The irreducible f(t) is then of the form:
* t^p[0] + t^p[1] + ... + t^p[k]
* where m = p[0] > p[1] > ... > p[k] = 0.
*/
/* r = a mod p */
int BN_GF2m_mod_arr(BIGNUM *r, const BIGNUM *a, const int p[]);
/* r = (a * b) mod p */
int BN_GF2m_mod_mul_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
const int p[], BN_CTX *ctx);
/* r = (a * a) mod p */
int BN_GF2m_mod_sqr_arr(BIGNUM *r, const BIGNUM *a, const int p[],
BN_CTX *ctx);
/* r = (1 / b) mod p */
int BN_GF2m_mod_inv_arr(BIGNUM *r, const BIGNUM *b, const int p[],
BN_CTX *ctx);
/* r = (a / b) mod p */
int BN_GF2m_mod_div_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
const int p[], BN_CTX *ctx);
/* r = (a ^ b) mod p */
int BN_GF2m_mod_exp_arr(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
const int p[], BN_CTX *ctx);
/* r = sqrt(a) mod p */
int BN_GF2m_mod_sqrt_arr(BIGNUM *r, const BIGNUM *a,
const int p[], BN_CTX *ctx);
/* r^2 + r = a mod p */
int BN_GF2m_mod_solve_quad_arr(BIGNUM *r, const BIGNUM *a,
const int p[], BN_CTX *ctx);
int BN_GF2m_poly2arr(const BIGNUM *a, int p[], int max);
int BN_GF2m_arr2poly(const int p[], BIGNUM *a);
# endif
/*
* faster mod functions for the 'NIST primes' 0 <= a < p^2
*/
int BN_nist_mod_192(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
int BN_nist_mod_224(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
int BN_nist_mod_256(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
int BN_nist_mod_384(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
int BN_nist_mod_521(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx);
const BIGNUM *BN_get0_nist_prime_192(void);
const BIGNUM *BN_get0_nist_prime_224(void);
const BIGNUM *BN_get0_nist_prime_256(void);
const BIGNUM *BN_get0_nist_prime_384(void);
const BIGNUM *BN_get0_nist_prime_521(void);
int (*BN_nist_mod_func(const BIGNUM *p)) (BIGNUM *r, const BIGNUM *a,
const BIGNUM *field, BN_CTX *ctx);
int BN_generate_dsa_nonce(BIGNUM *out, const BIGNUM *range,
const BIGNUM *priv, const unsigned char *message,
size_t message_len, BN_CTX *ctx);
/* Primes from RFC 2409 */
BIGNUM *BN_get_rfc2409_prime_768(BIGNUM *bn);
BIGNUM *BN_get_rfc2409_prime_1024(BIGNUM *bn);
/* Primes from RFC 3526 */
BIGNUM *BN_get_rfc3526_prime_1536(BIGNUM *bn);
BIGNUM *BN_get_rfc3526_prime_2048(BIGNUM *bn);
BIGNUM *BN_get_rfc3526_prime_3072(BIGNUM *bn);
BIGNUM *BN_get_rfc3526_prime_4096(BIGNUM *bn);
BIGNUM *BN_get_rfc3526_prime_6144(BIGNUM *bn);
BIGNUM *BN_get_rfc3526_prime_8192(BIGNUM *bn);
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
# define get_rfc2409_prime_768 BN_get_rfc2409_prime_768
# define get_rfc2409_prime_1024 BN_get_rfc2409_prime_1024
# define get_rfc3526_prime_1536 BN_get_rfc3526_prime_1536
# define get_rfc3526_prime_2048 BN_get_rfc3526_prime_2048
# define get_rfc3526_prime_3072 BN_get_rfc3526_prime_3072
# define get_rfc3526_prime_4096 BN_get_rfc3526_prime_4096
# define get_rfc3526_prime_6144 BN_get_rfc3526_prime_6144
# define get_rfc3526_prime_8192 BN_get_rfc3526_prime_8192
# endif
int BN_bntest_rand(BIGNUM *rnd, int bits, int top, int bottom);
# ifdef __cplusplus
}
# endif
#endif

View File

@@ -0,0 +1,47 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_BNERR_H
# define OPENSSL_BNERR_H
# pragma once
# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>
/*
* BN reason codes.
*/
# define BN_R_ARG2_LT_ARG3 100
# define BN_R_BAD_RECIPROCAL 101
# define BN_R_BIGNUM_TOO_LONG 114
# define BN_R_BITS_TOO_SMALL 118
# define BN_R_CALLED_WITH_EVEN_MODULUS 102
# define BN_R_DIV_BY_ZERO 103
# define BN_R_ENCODING_ERROR 104
# define BN_R_EXPAND_ON_STATIC_BIGNUM_DATA 105
# define BN_R_INPUT_NOT_REDUCED 110
# define BN_R_INVALID_LENGTH 106
# define BN_R_INVALID_RANGE 115
# define BN_R_INVALID_SHIFT 119
# define BN_R_NOT_A_SQUARE 111
# define BN_R_NOT_INITIALIZED 107
# define BN_R_NO_INVERSE 108
# define BN_R_NO_PRIME_CANDIDATE 121
# define BN_R_NO_SOLUTION 116
# define BN_R_NO_SUITABLE_DIGEST 120
# define BN_R_PRIVATE_KEY_TOO_LARGE 117
# define BN_R_P_IS_NOT_PRIME 112
# define BN_R_TOO_MANY_ITERATIONS 113
# define BN_R_TOO_MANY_TEMPORARY_VARIABLES 109
#endif

View File

@@ -0,0 +1,62 @@
/*
* Copyright 1995-2018 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_BUFFER_H
# define OPENSSL_BUFFER_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_BUFFER_H
# endif
# include <openssl/types.h>
# ifndef OPENSSL_CRYPTO_H
# include <openssl/crypto.h>
# endif
# include <openssl/buffererr.h>
#ifdef __cplusplus
extern "C" {
#endif
# include <stddef.h>
# include <sys/types.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define BUF_strdup(s) OPENSSL_strdup(s)
# define BUF_strndup(s, size) OPENSSL_strndup(s, size)
# define BUF_memdup(data, size) OPENSSL_memdup(data, size)
# define BUF_strlcpy(dst, src, size) OPENSSL_strlcpy(dst, src, size)
# define BUF_strlcat(dst, src, size) OPENSSL_strlcat(dst, src, size)
# define BUF_strnlen(str, maxlen) OPENSSL_strnlen(str, maxlen)
# endif
struct buf_mem_st {
size_t length; /* current number of bytes */
char *data;
size_t max; /* size of buffer */
unsigned long flags;
};
# define BUF_MEM_FLAG_SECURE 0x01
BUF_MEM *BUF_MEM_new(void);
BUF_MEM *BUF_MEM_new_ex(unsigned long flags);
void BUF_MEM_free(BUF_MEM *a);
size_t BUF_MEM_grow(BUF_MEM *str, size_t len);
size_t BUF_MEM_grow_clean(BUF_MEM *str, size_t len);
void BUF_reverse(unsigned char *out, const unsigned char *in, size_t siz);
# ifdef __cplusplus
}
# endif
#endif

View File

@@ -0,0 +1,25 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_BUFFERERR_H
# define OPENSSL_BUFFERERR_H
# pragma once
# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>
/*
* BUF reason codes.
*/
#endif

View File

@@ -0,0 +1,117 @@
/*
* Copyright 2006-2020 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CAMELLIA_H
# define OPENSSL_CAMELLIA_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_CAMELLIA_H
# endif
# include <openssl/opensslconf.h>
# ifndef OPENSSL_NO_CAMELLIA
# include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
# define CAMELLIA_BLOCK_SIZE 16
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define CAMELLIA_ENCRYPT 1
# define CAMELLIA_DECRYPT 0
/*
* Because array size can't be a const in C, the following two are macros.
* Both sizes are in bytes.
*/
/* This should be a hidden type, but EVP requires that the size be known */
# define CAMELLIA_TABLE_BYTE_LEN 272
# define CAMELLIA_TABLE_WORD_LEN (CAMELLIA_TABLE_BYTE_LEN / 4)
typedef unsigned int KEY_TABLE_TYPE[CAMELLIA_TABLE_WORD_LEN]; /* to match
* with WORD */
struct camellia_key_st {
union {
double d; /* ensures 64-bit align */
KEY_TABLE_TYPE rd_key;
} u;
int grand_rounds;
};
typedef struct camellia_key_st CAMELLIA_KEY;
# endif /* OPENSSL_NO_DEPRECATED_3_0 */
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 int Camellia_set_key(const unsigned char *userKey,
const int bits,
CAMELLIA_KEY *key);
OSSL_DEPRECATEDIN_3_0 void Camellia_encrypt(const unsigned char *in,
unsigned char *out,
const CAMELLIA_KEY *key);
OSSL_DEPRECATEDIN_3_0 void Camellia_decrypt(const unsigned char *in,
unsigned char *out,
const CAMELLIA_KEY *key);
OSSL_DEPRECATEDIN_3_0 void Camellia_ecb_encrypt(const unsigned char *in,
unsigned char *out,
const CAMELLIA_KEY *key,
const int enc);
OSSL_DEPRECATEDIN_3_0 void Camellia_cbc_encrypt(const unsigned char *in,
unsigned char *out,
size_t length,
const CAMELLIA_KEY *key,
unsigned char *ivec,
const int enc);
OSSL_DEPRECATEDIN_3_0 void Camellia_cfb128_encrypt(const unsigned char *in,
unsigned char *out,
size_t length,
const CAMELLIA_KEY *key,
unsigned char *ivec,
int *num,
const int enc);
OSSL_DEPRECATEDIN_3_0 void Camellia_cfb1_encrypt(const unsigned char *in,
unsigned char *out,
size_t length,
const CAMELLIA_KEY *key,
unsigned char *ivec,
int *num,
const int enc);
OSSL_DEPRECATEDIN_3_0 void Camellia_cfb8_encrypt(const unsigned char *in,
unsigned char *out,
size_t length,
const CAMELLIA_KEY *key,
unsigned char *ivec,
int *num,
const int enc);
OSSL_DEPRECATEDIN_3_0 void Camellia_ofb128_encrypt(const unsigned char *in,
unsigned char *out,
size_t length,
const CAMELLIA_KEY *key,
unsigned char *ivec,
int *num);
OSSL_DEPRECATEDIN_3_0
void Camellia_ctr128_encrypt(const unsigned char *in, unsigned char *out,
size_t length, const CAMELLIA_KEY *key,
unsigned char ivec[CAMELLIA_BLOCK_SIZE],
unsigned char ecount_buf[CAMELLIA_BLOCK_SIZE],
unsigned int *num);
# endif
# ifdef __cplusplus
}
# endif
# endif
#endif

View File

@@ -0,0 +1,71 @@
/*
* Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CAST_H
# define OPENSSL_CAST_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_CAST_H
# endif
# include <openssl/opensslconf.h>
# ifndef OPENSSL_NO_CAST
# ifdef __cplusplus
extern "C" {
# endif
# define CAST_BLOCK 8
# define CAST_KEY_LENGTH 16
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define CAST_ENCRYPT 1
# define CAST_DECRYPT 0
# define CAST_LONG unsigned int
typedef struct cast_key_st {
CAST_LONG data[32];
int short_key; /* Use reduced rounds for short key */
} CAST_KEY;
# endif /* OPENSSL_NO_DEPRECATED_3_0 */
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0
void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data);
OSSL_DEPRECATEDIN_3_0
void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out,
const CAST_KEY *key, int enc);
OSSL_DEPRECATEDIN_3_0
void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key);
OSSL_DEPRECATEDIN_3_0
void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key);
OSSL_DEPRECATEDIN_3_0
void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out,
long length, const CAST_KEY *ks, unsigned char *iv,
int enc);
OSSL_DEPRECATEDIN_3_0
void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out,
long length, const CAST_KEY *schedule,
unsigned char *ivec, int *num, int enc);
OSSL_DEPRECATEDIN_3_0
void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out,
long length, const CAST_KEY *schedule,
unsigned char *ivec, int *num);
# endif
# ifdef __cplusplus
}
# endif
# endif
#endif

View File

@@ -0,0 +1,52 @@
/*
* Copyright 2010-2020 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CMAC_H
# define OPENSSL_CMAC_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_CMAC_H
# endif
# ifndef OPENSSL_NO_CMAC
# ifdef __cplusplus
extern "C" {
# endif
# include <openssl/evp.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
/* Opaque */
typedef struct CMAC_CTX_st CMAC_CTX;
# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 CMAC_CTX *CMAC_CTX_new(void);
OSSL_DEPRECATEDIN_3_0 void CMAC_CTX_cleanup(CMAC_CTX *ctx);
OSSL_DEPRECATEDIN_3_0 void CMAC_CTX_free(CMAC_CTX *ctx);
OSSL_DEPRECATEDIN_3_0 EVP_CIPHER_CTX *CMAC_CTX_get0_cipher_ctx(CMAC_CTX *ctx);
OSSL_DEPRECATEDIN_3_0 int CMAC_CTX_copy(CMAC_CTX *out, const CMAC_CTX *in);
OSSL_DEPRECATEDIN_3_0 int CMAC_Init(CMAC_CTX *ctx,
const void *key, size_t keylen,
const EVP_CIPHER *cipher, ENGINE *impl);
OSSL_DEPRECATEDIN_3_0 int CMAC_Update(CMAC_CTX *ctx,
const void *data, size_t dlen);
OSSL_DEPRECATEDIN_3_0 int CMAC_Final(CMAC_CTX *ctx,
unsigned char *out, size_t *poutlen);
OSSL_DEPRECATEDIN_3_0 int CMAC_resume(CMAC_CTX *ctx);
# endif
# ifdef __cplusplus
}
# endif
# endif
#endif

View File

@@ -0,0 +1,629 @@
/*
* WARNING: do not edit!
* Generated by Makefile from include/openssl/cmp.h.in
*
* Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved.
* Copyright Nokia 2007-2019
* Copyright Siemens AG 2015-2019
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CMP_H
# define OPENSSL_CMP_H
# include <openssl/opensslconf.h>
# ifndef OPENSSL_NO_CMP
# include <openssl/crmf.h>
# include <openssl/cmperr.h>
# include <openssl/cmp_util.h>
# include <openssl/http.h>
/* explicit #includes not strictly needed since implied by the above: */
# include <openssl/types.h>
# include <openssl/safestack.h>
# include <openssl/x509.h>
# include <openssl/x509v3.h>
# ifdef __cplusplus
extern "C" {
# endif
# define OSSL_CMP_PVNO_2 2
# define OSSL_CMP_PVNO_3 3
# define OSSL_CMP_PVNO OSSL_CMP_PVNO_2 /* v2 is the default */
/*-
* PKIFailureInfo ::= BIT STRING {
* -- since we can fail in more than one way!
* -- More codes may be added in the future if/when required.
* badAlg (0),
* -- unrecognized or unsupported Algorithm Identifier
* badMessageCheck (1),
* -- integrity check failed (e.g., signature did not verify)
* badRequest (2),
* -- transaction not permitted or supported
* badTime (3),
* -- messageTime was not sufficiently close to the system time,
* -- as defined by local policy
* badCertId (4),
* -- no certificate could be found matching the provided criteria
* badDataFormat (5),
* -- the data submitted has the wrong format
* wrongAuthority (6),
* -- the authority indicated in the request is different from the
* -- one creating the response token
* incorrectData (7),
* -- the requester's data is incorrect (for notary services)
* missingTimeStamp (8),
* -- when the timestamp is missing but should be there
* -- (by policy)
* badPOP (9),
* -- the proof-of-possession failed
* certRevoked (10),
* -- the certificate has already been revoked
* certConfirmed (11),
* -- the certificate has already been confirmed
* wrongIntegrity (12),
* -- invalid integrity, password based instead of signature or
* -- vice versa
* badRecipientNonce (13),
* -- invalid recipient nonce, either missing or wrong value
* timeNotAvailable (14),
* -- the TSA's time source is not available
* unacceptedPolicy (15),
* -- the requested TSA policy is not supported by the TSA.
* unacceptedExtension (16),
* -- the requested extension is not supported by the TSA.
* addInfoNotAvailable (17),
* -- the additional information requested could not be
* -- understood or is not available
* badSenderNonce (18),
* -- invalid sender nonce, either missing or wrong size
* badCertTemplate (19),
* -- invalid cert. template or missing mandatory information
* signerNotTrusted (20),
* -- signer of the message unknown or not trusted
* transactionIdInUse (21),
* -- the transaction identifier is already in use
* unsupportedVersion (22),
* -- the version of the message is not supported
* notAuthorized (23),
* -- the sender was not authorized to make the preceding
* -- request or perform the preceding action
* systemUnavail (24),
* -- the request cannot be handled due to system unavailability
* systemFailure (25),
* -- the request cannot be handled due to system failure
* duplicateCertReq (26)
* -- certificate cannot be issued because a duplicate
* -- certificate already exists
* }
*/
# define OSSL_CMP_PKIFAILUREINFO_badAlg 0
# define OSSL_CMP_PKIFAILUREINFO_badMessageCheck 1
# define OSSL_CMP_PKIFAILUREINFO_badRequest 2
# define OSSL_CMP_PKIFAILUREINFO_badTime 3
# define OSSL_CMP_PKIFAILUREINFO_badCertId 4
# define OSSL_CMP_PKIFAILUREINFO_badDataFormat 5
# define OSSL_CMP_PKIFAILUREINFO_wrongAuthority 6
# define OSSL_CMP_PKIFAILUREINFO_incorrectData 7
# define OSSL_CMP_PKIFAILUREINFO_missingTimeStamp 8
# define OSSL_CMP_PKIFAILUREINFO_badPOP 9
# define OSSL_CMP_PKIFAILUREINFO_certRevoked 10
# define OSSL_CMP_PKIFAILUREINFO_certConfirmed 11
# define OSSL_CMP_PKIFAILUREINFO_wrongIntegrity 12
# define OSSL_CMP_PKIFAILUREINFO_badRecipientNonce 13
# define OSSL_CMP_PKIFAILUREINFO_timeNotAvailable 14
# define OSSL_CMP_PKIFAILUREINFO_unacceptedPolicy 15
# define OSSL_CMP_PKIFAILUREINFO_unacceptedExtension 16
# define OSSL_CMP_PKIFAILUREINFO_addInfoNotAvailable 17
# define OSSL_CMP_PKIFAILUREINFO_badSenderNonce 18
# define OSSL_CMP_PKIFAILUREINFO_badCertTemplate 19
# define OSSL_CMP_PKIFAILUREINFO_signerNotTrusted 20
# define OSSL_CMP_PKIFAILUREINFO_transactionIdInUse 21
# define OSSL_CMP_PKIFAILUREINFO_unsupportedVersion 22
# define OSSL_CMP_PKIFAILUREINFO_notAuthorized 23
# define OSSL_CMP_PKIFAILUREINFO_systemUnavail 24
# define OSSL_CMP_PKIFAILUREINFO_systemFailure 25
# define OSSL_CMP_PKIFAILUREINFO_duplicateCertReq 26
# define OSSL_CMP_PKIFAILUREINFO_MAX 26
# define OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN \
((1 << (OSSL_CMP_PKIFAILUREINFO_MAX + 1)) - 1)
# if OSSL_CMP_PKIFAILUREINFO_MAX_BIT_PATTERN > INT_MAX
# error CMP_PKIFAILUREINFO_MAX bit pattern does not fit in type int
# endif
typedef ASN1_BIT_STRING OSSL_CMP_PKIFAILUREINFO;
# define OSSL_CMP_CTX_FAILINFO_badAlg (1 << 0)
# define OSSL_CMP_CTX_FAILINFO_badMessageCheck (1 << 1)
# define OSSL_CMP_CTX_FAILINFO_badRequest (1 << 2)
# define OSSL_CMP_CTX_FAILINFO_badTime (1 << 3)
# define OSSL_CMP_CTX_FAILINFO_badCertId (1 << 4)
# define OSSL_CMP_CTX_FAILINFO_badDataFormat (1 << 5)
# define OSSL_CMP_CTX_FAILINFO_wrongAuthority (1 << 6)
# define OSSL_CMP_CTX_FAILINFO_incorrectData (1 << 7)
# define OSSL_CMP_CTX_FAILINFO_missingTimeStamp (1 << 8)
# define OSSL_CMP_CTX_FAILINFO_badPOP (1 << 9)
# define OSSL_CMP_CTX_FAILINFO_certRevoked (1 << 10)
# define OSSL_CMP_CTX_FAILINFO_certConfirmed (1 << 11)
# define OSSL_CMP_CTX_FAILINFO_wrongIntegrity (1 << 12)
# define OSSL_CMP_CTX_FAILINFO_badRecipientNonce (1 << 13)
# define OSSL_CMP_CTX_FAILINFO_timeNotAvailable (1 << 14)
# define OSSL_CMP_CTX_FAILINFO_unacceptedPolicy (1 << 15)
# define OSSL_CMP_CTX_FAILINFO_unacceptedExtension (1 << 16)
# define OSSL_CMP_CTX_FAILINFO_addInfoNotAvailable (1 << 17)
# define OSSL_CMP_CTX_FAILINFO_badSenderNonce (1 << 18)
# define OSSL_CMP_CTX_FAILINFO_badCertTemplate (1 << 19)
# define OSSL_CMP_CTX_FAILINFO_signerNotTrusted (1 << 20)
# define OSSL_CMP_CTX_FAILINFO_transactionIdInUse (1 << 21)
# define OSSL_CMP_CTX_FAILINFO_unsupportedVersion (1 << 22)
# define OSSL_CMP_CTX_FAILINFO_notAuthorized (1 << 23)
# define OSSL_CMP_CTX_FAILINFO_systemUnavail (1 << 24)
# define OSSL_CMP_CTX_FAILINFO_systemFailure (1 << 25)
# define OSSL_CMP_CTX_FAILINFO_duplicateCertReq (1 << 26)
/*-
* PKIStatus ::= INTEGER {
* accepted (0),
* -- you got exactly what you asked for
* grantedWithMods (1),
* -- you got something like what you asked for; the
* -- requester is responsible for ascertaining the differences
* rejection (2),
* -- you don't get it, more information elsewhere in the message
* waiting (3),
* -- the request body part has not yet been processed; expect to
* -- hear more later (note: proper handling of this status
* -- response MAY use the polling req/rep PKIMessages specified
* -- in Section 5.3.22; alternatively, polling in the underlying
* -- transport layer MAY have some utility in this regard)
* revocationWarning (4),
* -- this message contains a warning that a revocation is
* -- imminent
* revocationNotification (5),
* -- notification that a revocation has occurred
* keyUpdateWarning (6)
* -- update already done for the oldCertId specified in
* -- CertReqMsg
* }
*/
# define OSSL_CMP_PKISTATUS_request -3
# define OSSL_CMP_PKISTATUS_trans -2
# define OSSL_CMP_PKISTATUS_unspecified -1
# define OSSL_CMP_PKISTATUS_accepted 0
# define OSSL_CMP_PKISTATUS_grantedWithMods 1
# define OSSL_CMP_PKISTATUS_rejection 2
# define OSSL_CMP_PKISTATUS_waiting 3
# define OSSL_CMP_PKISTATUS_revocationWarning 4
# define OSSL_CMP_PKISTATUS_revocationNotification 5
# define OSSL_CMP_PKISTATUS_keyUpdateWarning 6
typedef ASN1_INTEGER OSSL_CMP_PKISTATUS;
DECLARE_ASN1_ITEM(OSSL_CMP_PKISTATUS)
# define OSSL_CMP_CERTORENCCERT_CERTIFICATE 0
# define OSSL_CMP_CERTORENCCERT_ENCRYPTEDCERT 1
/* data type declarations */
typedef struct ossl_cmp_ctx_st OSSL_CMP_CTX;
typedef struct ossl_cmp_pkiheader_st OSSL_CMP_PKIHEADER;
DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKIHEADER)
typedef struct ossl_cmp_msg_st OSSL_CMP_MSG;
DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_MSG)
DECLARE_ASN1_ENCODE_FUNCTIONS(OSSL_CMP_MSG, OSSL_CMP_MSG, OSSL_CMP_MSG)
typedef struct ossl_cmp_certstatus_st OSSL_CMP_CERTSTATUS;
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS, OSSL_CMP_CERTSTATUS)
#define sk_OSSL_CMP_CERTSTATUS_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))
#define sk_OSSL_CMP_CERTSTATUS_value(sk, idx) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx)))
#define sk_OSSL_CMP_CERTSTATUS_new(cmp) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp)))
#define sk_OSSL_CMP_CERTSTATUS_new_null() ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_null())
#define sk_OSSL_CMP_CERTSTATUS_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp), (n)))
#define sk_OSSL_CMP_CERTSTATUS_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (n))
#define sk_OSSL_CMP_CERTSTATUS_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))
#define sk_OSSL_CMP_CERTSTATUS_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))
#define sk_OSSL_CMP_CERTSTATUS_delete(sk, i) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (i)))
#define sk_OSSL_CMP_CERTSTATUS_delete_ptr(sk, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)))
#define sk_OSSL_CMP_CERTSTATUS_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))
#define sk_OSSL_CMP_CERTSTATUS_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))
#define sk_OSSL_CMP_CERTSTATUS_pop(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)))
#define sk_OSSL_CMP_CERTSTATUS_shift(sk) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk)))
#define sk_OSSL_CMP_CERTSTATUS_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk),ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc))
#define sk_OSSL_CMP_CERTSTATUS_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), (idx))
#define sk_OSSL_CMP_CERTSTATUS_set(sk, idx, ptr) ((OSSL_CMP_CERTSTATUS *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr)))
#define sk_OSSL_CMP_CERTSTATUS_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))
#define sk_OSSL_CMP_CERTSTATUS_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr))
#define sk_OSSL_CMP_CERTSTATUS_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_type(ptr), pnum)
#define sk_OSSL_CMP_CERTSTATUS_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk))
#define sk_OSSL_CMP_CERTSTATUS_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk))
#define sk_OSSL_CMP_CERTSTATUS_dup(sk) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk)))
#define sk_OSSL_CMP_CERTSTATUS_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTSTATUS) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTSTATUS_freefunc_type(freefunc)))
#define sk_OSSL_CMP_CERTSTATUS_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTSTATUS_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTSTATUS_sk_type(sk), ossl_check_OSSL_CMP_CERTSTATUS_compfunc_type(cmp)))
typedef struct ossl_cmp_itav_st OSSL_CMP_ITAV;
DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_ITAV)
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_ITAV, OSSL_CMP_ITAV, OSSL_CMP_ITAV)
#define sk_OSSL_CMP_ITAV_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))
#define sk_OSSL_CMP_ITAV_value(sk, idx) ((OSSL_CMP_ITAV *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), (idx)))
#define sk_OSSL_CMP_ITAV_new(cmp) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp)))
#define sk_OSSL_CMP_ITAV_new_null() ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_null())
#define sk_OSSL_CMP_ITAV_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp), (n)))
#define sk_OSSL_CMP_ITAV_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (n))
#define sk_OSSL_CMP_ITAV_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk))
#define sk_OSSL_CMP_ITAV_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_ITAV_sk_type(sk))
#define sk_OSSL_CMP_ITAV_delete(sk, i) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (i)))
#define sk_OSSL_CMP_ITAV_delete_ptr(sk, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr)))
#define sk_OSSL_CMP_ITAV_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))
#define sk_OSSL_CMP_ITAV_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))
#define sk_OSSL_CMP_ITAV_pop(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_ITAV_sk_type(sk)))
#define sk_OSSL_CMP_ITAV_shift(sk) ((OSSL_CMP_ITAV *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_ITAV_sk_type(sk)))
#define sk_OSSL_CMP_ITAV_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_ITAV_sk_type(sk),ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc))
#define sk_OSSL_CMP_ITAV_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), (idx))
#define sk_OSSL_CMP_ITAV_set(sk, idx, ptr) ((OSSL_CMP_ITAV *)OPENSSL_sk_set(ossl_check_OSSL_CMP_ITAV_sk_type(sk), (idx), ossl_check_OSSL_CMP_ITAV_type(ptr)))
#define sk_OSSL_CMP_ITAV_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))
#define sk_OSSL_CMP_ITAV_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr))
#define sk_OSSL_CMP_ITAV_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_type(ptr), pnum)
#define sk_OSSL_CMP_ITAV_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_ITAV_sk_type(sk))
#define sk_OSSL_CMP_ITAV_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk))
#define sk_OSSL_CMP_ITAV_dup(sk) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk)))
#define sk_OSSL_CMP_ITAV_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_ITAV) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_ITAV_freefunc_type(freefunc)))
#define sk_OSSL_CMP_ITAV_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_ITAV_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_ITAV_sk_type(sk), ossl_check_OSSL_CMP_ITAV_compfunc_type(cmp)))
typedef struct ossl_cmp_revrepcontent_st OSSL_CMP_REVREPCONTENT;
typedef struct ossl_cmp_pkisi_st OSSL_CMP_PKISI;
DECLARE_ASN1_FUNCTIONS(OSSL_CMP_PKISI)
DECLARE_ASN1_DUP_FUNCTION(OSSL_CMP_PKISI)
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_PKISI, OSSL_CMP_PKISI, OSSL_CMP_PKISI)
#define sk_OSSL_CMP_PKISI_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))
#define sk_OSSL_CMP_PKISI_value(sk, idx) ((OSSL_CMP_PKISI *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), (idx)))
#define sk_OSSL_CMP_PKISI_new(cmp) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp)))
#define sk_OSSL_CMP_PKISI_new_null() ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_null())
#define sk_OSSL_CMP_PKISI_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp), (n)))
#define sk_OSSL_CMP_PKISI_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (n))
#define sk_OSSL_CMP_PKISI_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk))
#define sk_OSSL_CMP_PKISI_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_PKISI_sk_type(sk))
#define sk_OSSL_CMP_PKISI_delete(sk, i) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (i)))
#define sk_OSSL_CMP_PKISI_delete_ptr(sk, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr)))
#define sk_OSSL_CMP_PKISI_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))
#define sk_OSSL_CMP_PKISI_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))
#define sk_OSSL_CMP_PKISI_pop(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_PKISI_sk_type(sk)))
#define sk_OSSL_CMP_PKISI_shift(sk) ((OSSL_CMP_PKISI *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_PKISI_sk_type(sk)))
#define sk_OSSL_CMP_PKISI_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_PKISI_sk_type(sk),ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc))
#define sk_OSSL_CMP_PKISI_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), (idx))
#define sk_OSSL_CMP_PKISI_set(sk, idx, ptr) ((OSSL_CMP_PKISI *)OPENSSL_sk_set(ossl_check_OSSL_CMP_PKISI_sk_type(sk), (idx), ossl_check_OSSL_CMP_PKISI_type(ptr)))
#define sk_OSSL_CMP_PKISI_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))
#define sk_OSSL_CMP_PKISI_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr))
#define sk_OSSL_CMP_PKISI_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_type(ptr), pnum)
#define sk_OSSL_CMP_PKISI_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_PKISI_sk_type(sk))
#define sk_OSSL_CMP_PKISI_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk))
#define sk_OSSL_CMP_PKISI_dup(sk) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk)))
#define sk_OSSL_CMP_PKISI_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_PKISI) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_PKISI_freefunc_type(freefunc)))
#define sk_OSSL_CMP_PKISI_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_PKISI_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_PKISI_sk_type(sk), ossl_check_OSSL_CMP_PKISI_compfunc_type(cmp)))
typedef struct ossl_cmp_certrepmessage_st OSSL_CMP_CERTREPMESSAGE;
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE, OSSL_CMP_CERTREPMESSAGE)
#define sk_OSSL_CMP_CERTREPMESSAGE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))
#define sk_OSSL_CMP_CERTREPMESSAGE_value(sk, idx) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx)))
#define sk_OSSL_CMP_CERTREPMESSAGE_new(cmp) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp)))
#define sk_OSSL_CMP_CERTREPMESSAGE_new_null() ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_null())
#define sk_OSSL_CMP_CERTREPMESSAGE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp), (n)))
#define sk_OSSL_CMP_CERTREPMESSAGE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (n))
#define sk_OSSL_CMP_CERTREPMESSAGE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))
#define sk_OSSL_CMP_CERTREPMESSAGE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))
#define sk_OSSL_CMP_CERTREPMESSAGE_delete(sk, i) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (i)))
#define sk_OSSL_CMP_CERTREPMESSAGE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)))
#define sk_OSSL_CMP_CERTREPMESSAGE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))
#define sk_OSSL_CMP_CERTREPMESSAGE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))
#define sk_OSSL_CMP_CERTREPMESSAGE_pop(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)))
#define sk_OSSL_CMP_CERTREPMESSAGE_shift(sk) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)))
#define sk_OSSL_CMP_CERTREPMESSAGE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk),ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc))
#define sk_OSSL_CMP_CERTREPMESSAGE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), (idx))
#define sk_OSSL_CMP_CERTREPMESSAGE_set(sk, idx, ptr) ((OSSL_CMP_CERTREPMESSAGE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr)))
#define sk_OSSL_CMP_CERTREPMESSAGE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))
#define sk_OSSL_CMP_CERTREPMESSAGE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr))
#define sk_OSSL_CMP_CERTREPMESSAGE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_type(ptr), pnum)
#define sk_OSSL_CMP_CERTREPMESSAGE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))
#define sk_OSSL_CMP_CERTREPMESSAGE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk))
#define sk_OSSL_CMP_CERTREPMESSAGE_dup(sk) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk)))
#define sk_OSSL_CMP_CERTREPMESSAGE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTREPMESSAGE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTREPMESSAGE_freefunc_type(freefunc)))
#define sk_OSSL_CMP_CERTREPMESSAGE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTREPMESSAGE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTREPMESSAGE_sk_type(sk), ossl_check_OSSL_CMP_CERTREPMESSAGE_compfunc_type(cmp)))
typedef struct ossl_cmp_pollrep_st OSSL_CMP_POLLREP;
typedef STACK_OF(OSSL_CMP_POLLREP) OSSL_CMP_POLLREPCONTENT;
typedef struct ossl_cmp_certresponse_st OSSL_CMP_CERTRESPONSE;
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE, OSSL_CMP_CERTRESPONSE)
#define sk_OSSL_CMP_CERTRESPONSE_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))
#define sk_OSSL_CMP_CERTRESPONSE_value(sk, idx) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_value(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx)))
#define sk_OSSL_CMP_CERTRESPONSE_new(cmp) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp)))
#define sk_OSSL_CMP_CERTRESPONSE_new_null() ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_null())
#define sk_OSSL_CMP_CERTRESPONSE_new_reserve(cmp, n) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp), (n)))
#define sk_OSSL_CMP_CERTRESPONSE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (n))
#define sk_OSSL_CMP_CERTRESPONSE_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))
#define sk_OSSL_CMP_CERTRESPONSE_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))
#define sk_OSSL_CMP_CERTRESPONSE_delete(sk, i) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (i)))
#define sk_OSSL_CMP_CERTRESPONSE_delete_ptr(sk, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)))
#define sk_OSSL_CMP_CERTRESPONSE_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))
#define sk_OSSL_CMP_CERTRESPONSE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))
#define sk_OSSL_CMP_CERTRESPONSE_pop(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_pop(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)))
#define sk_OSSL_CMP_CERTRESPONSE_shift(sk) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_shift(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk)))
#define sk_OSSL_CMP_CERTRESPONSE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk),ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc))
#define sk_OSSL_CMP_CERTRESPONSE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), (idx))
#define sk_OSSL_CMP_CERTRESPONSE_set(sk, idx, ptr) ((OSSL_CMP_CERTRESPONSE *)OPENSSL_sk_set(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), (idx), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr)))
#define sk_OSSL_CMP_CERTRESPONSE_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))
#define sk_OSSL_CMP_CERTRESPONSE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr))
#define sk_OSSL_CMP_CERTRESPONSE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_type(ptr), pnum)
#define sk_OSSL_CMP_CERTRESPONSE_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk))
#define sk_OSSL_CMP_CERTRESPONSE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk))
#define sk_OSSL_CMP_CERTRESPONSE_dup(sk) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk)))
#define sk_OSSL_CMP_CERTRESPONSE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CMP_CERTRESPONSE) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_copyfunc_type(copyfunc), ossl_check_OSSL_CMP_CERTRESPONSE_freefunc_type(freefunc)))
#define sk_OSSL_CMP_CERTRESPONSE_set_cmp_func(sk, cmp) ((sk_OSSL_CMP_CERTRESPONSE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CMP_CERTRESPONSE_sk_type(sk), ossl_check_OSSL_CMP_CERTRESPONSE_compfunc_type(cmp)))
typedef STACK_OF(ASN1_UTF8STRING) OSSL_CMP_PKIFREETEXT;
/*
* function DECLARATIONS
*/
/* from cmp_asn.c */
OSSL_CMP_ITAV *OSSL_CMP_ITAV_create(ASN1_OBJECT *type, ASN1_TYPE *value);
void OSSL_CMP_ITAV_set0(OSSL_CMP_ITAV *itav, ASN1_OBJECT *type,
ASN1_TYPE *value);
ASN1_OBJECT *OSSL_CMP_ITAV_get0_type(const OSSL_CMP_ITAV *itav);
ASN1_TYPE *OSSL_CMP_ITAV_get0_value(const OSSL_CMP_ITAV *itav);
int OSSL_CMP_ITAV_push0_stack_item(STACK_OF(OSSL_CMP_ITAV) **itav_sk_p,
OSSL_CMP_ITAV *itav);
void OSSL_CMP_ITAV_free(OSSL_CMP_ITAV *itav);
OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_caCerts(const STACK_OF(X509) *caCerts);
int OSSL_CMP_ITAV_get0_caCerts(const OSSL_CMP_ITAV *itav, STACK_OF(X509) **out);
OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaCert(const X509 *rootCaCert);
int OSSL_CMP_ITAV_get0_rootCaCert(const OSSL_CMP_ITAV *itav, X509 **out);
OSSL_CMP_ITAV *OSSL_CMP_ITAV_new_rootCaKeyUpdate(const X509 *newWithNew,
const X509 *newWithOld,
const X509 *oldWithNew);
int OSSL_CMP_ITAV_get0_rootCaKeyUpdate(const OSSL_CMP_ITAV *itav,
X509 **newWithNew,
X509 **newWithOld,
X509 **oldWithNew);
void OSSL_CMP_MSG_free(OSSL_CMP_MSG *msg);
/* from cmp_ctx.c */
OSSL_CMP_CTX *OSSL_CMP_CTX_new(OSSL_LIB_CTX *libctx, const char *propq);
void OSSL_CMP_CTX_free(OSSL_CMP_CTX *ctx);
int OSSL_CMP_CTX_reinit(OSSL_CMP_CTX *ctx);
OSSL_LIB_CTX *OSSL_CMP_CTX_get0_libctx(const OSSL_CMP_CTX *ctx);
const char *OSSL_CMP_CTX_get0_propq(const OSSL_CMP_CTX *ctx);
/* CMP general options: */
# define OSSL_CMP_OPT_LOG_VERBOSITY 0
/* CMP transfer options: */
# define OSSL_CMP_OPT_KEEP_ALIVE 10
# define OSSL_CMP_OPT_MSG_TIMEOUT 11
# define OSSL_CMP_OPT_TOTAL_TIMEOUT 12
# define OSSL_CMP_OPT_USE_TLS 13
/* CMP request options: */
# define OSSL_CMP_OPT_VALIDITY_DAYS 20
# define OSSL_CMP_OPT_SUBJECTALTNAME_NODEFAULT 21
# define OSSL_CMP_OPT_SUBJECTALTNAME_CRITICAL 22
# define OSSL_CMP_OPT_POLICIES_CRITICAL 23
# define OSSL_CMP_OPT_POPO_METHOD 24
# define OSSL_CMP_OPT_IMPLICIT_CONFIRM 25
# define OSSL_CMP_OPT_DISABLE_CONFIRM 26
# define OSSL_CMP_OPT_REVOCATION_REASON 27
/* CMP protection options: */
# define OSSL_CMP_OPT_UNPROTECTED_SEND 30
# define OSSL_CMP_OPT_UNPROTECTED_ERRORS 31
# define OSSL_CMP_OPT_OWF_ALGNID 32
# define OSSL_CMP_OPT_MAC_ALGNID 33
# define OSSL_CMP_OPT_DIGEST_ALGNID 34
# define OSSL_CMP_OPT_IGNORE_KEYUSAGE 35
# define OSSL_CMP_OPT_PERMIT_TA_IN_EXTRACERTS_FOR_IR 36
int OSSL_CMP_CTX_set_option(OSSL_CMP_CTX *ctx, int opt, int val);
int OSSL_CMP_CTX_get_option(const OSSL_CMP_CTX *ctx, int opt);
/* CMP-specific callback for logging and outputting the error queue: */
int OSSL_CMP_CTX_set_log_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_log_cb_t cb);
# define OSSL_CMP_CTX_set_log_verbosity(ctx, level) \
OSSL_CMP_CTX_set_option(ctx, OSSL_CMP_OPT_LOG_VERBOSITY, level)
void OSSL_CMP_CTX_print_errors(const OSSL_CMP_CTX *ctx);
/* message transfer: */
int OSSL_CMP_CTX_set1_serverPath(OSSL_CMP_CTX *ctx, const char *path);
int OSSL_CMP_CTX_set1_server(OSSL_CMP_CTX *ctx, const char *address);
int OSSL_CMP_CTX_set_serverPort(OSSL_CMP_CTX *ctx, int port);
int OSSL_CMP_CTX_set1_proxy(OSSL_CMP_CTX *ctx, const char *name);
int OSSL_CMP_CTX_set1_no_proxy(OSSL_CMP_CTX *ctx, const char *names);
# ifndef OPENSSL_NO_HTTP
int OSSL_CMP_CTX_set_http_cb(OSSL_CMP_CTX *ctx, OSSL_HTTP_bio_cb_t cb);
int OSSL_CMP_CTX_set_http_cb_arg(OSSL_CMP_CTX *ctx, void *arg);
void *OSSL_CMP_CTX_get_http_cb_arg(const OSSL_CMP_CTX *ctx);
# endif
typedef OSSL_CMP_MSG *(*OSSL_CMP_transfer_cb_t) (OSSL_CMP_CTX *ctx,
const OSSL_CMP_MSG *req);
int OSSL_CMP_CTX_set_transfer_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_transfer_cb_t cb);
int OSSL_CMP_CTX_set_transfer_cb_arg(OSSL_CMP_CTX *ctx, void *arg);
void *OSSL_CMP_CTX_get_transfer_cb_arg(const OSSL_CMP_CTX *ctx);
/* server authentication: */
int OSSL_CMP_CTX_set1_srvCert(OSSL_CMP_CTX *ctx, X509 *cert);
int OSSL_CMP_CTX_set1_expected_sender(OSSL_CMP_CTX *ctx, const X509_NAME *name);
int OSSL_CMP_CTX_set0_trustedStore(OSSL_CMP_CTX *ctx, X509_STORE *store);
# define OSSL_CMP_CTX_set0_trusted OSSL_CMP_CTX_set0_trustedStore
X509_STORE *OSSL_CMP_CTX_get0_trustedStore(const OSSL_CMP_CTX *ctx);
# define OSSL_CMP_CTX_get0_trusted OSSL_CMP_CTX_get0_trustedStore
int OSSL_CMP_CTX_set1_untrusted(OSSL_CMP_CTX *ctx, STACK_OF(X509) *certs);
STACK_OF(X509) *OSSL_CMP_CTX_get0_untrusted(const OSSL_CMP_CTX *ctx);
/* client authentication: */
int OSSL_CMP_CTX_set1_cert(OSSL_CMP_CTX *ctx, X509 *cert);
int OSSL_CMP_CTX_build_cert_chain(OSSL_CMP_CTX *ctx, X509_STORE *own_trusted,
STACK_OF(X509) *candidates);
int OSSL_CMP_CTX_set1_pkey(OSSL_CMP_CTX *ctx, EVP_PKEY *pkey);
int OSSL_CMP_CTX_set1_referenceValue(OSSL_CMP_CTX *ctx,
const unsigned char *ref, int len);
int OSSL_CMP_CTX_set1_secretValue(OSSL_CMP_CTX *ctx,
const unsigned char *sec, int len);
/* CMP message header and extra certificates: */
int OSSL_CMP_CTX_set1_recipient(OSSL_CMP_CTX *ctx, const X509_NAME *name);
int OSSL_CMP_CTX_push0_geninfo_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav);
int OSSL_CMP_CTX_reset_geninfo_ITAVs(OSSL_CMP_CTX *ctx);
int OSSL_CMP_CTX_set1_extraCertsOut(OSSL_CMP_CTX *ctx,
STACK_OF(X509) *extraCertsOut);
/* certificate template: */
int OSSL_CMP_CTX_set0_newPkey(OSSL_CMP_CTX *ctx, int priv, EVP_PKEY *pkey);
EVP_PKEY *OSSL_CMP_CTX_get0_newPkey(const OSSL_CMP_CTX *ctx, int priv);
int OSSL_CMP_CTX_set1_issuer(OSSL_CMP_CTX *ctx, const X509_NAME *name);
int OSSL_CMP_CTX_set1_serialNumber(OSSL_CMP_CTX *ctx, const ASN1_INTEGER *sn);
int OSSL_CMP_CTX_set1_subjectName(OSSL_CMP_CTX *ctx, const X509_NAME *name);
int OSSL_CMP_CTX_push1_subjectAltName(OSSL_CMP_CTX *ctx,
const GENERAL_NAME *name);
int OSSL_CMP_CTX_set0_reqExtensions(OSSL_CMP_CTX *ctx, X509_EXTENSIONS *exts);
int OSSL_CMP_CTX_reqExtensions_have_SAN(OSSL_CMP_CTX *ctx);
int OSSL_CMP_CTX_push0_policy(OSSL_CMP_CTX *ctx, POLICYINFO *pinfo);
int OSSL_CMP_CTX_set1_oldCert(OSSL_CMP_CTX *ctx, X509 *cert);
int OSSL_CMP_CTX_set1_p10CSR(OSSL_CMP_CTX *ctx, const X509_REQ *csr);
/* misc body contents: */
int OSSL_CMP_CTX_push0_genm_ITAV(OSSL_CMP_CTX *ctx, OSSL_CMP_ITAV *itav);
/* certificate confirmation: */
typedef int (*OSSL_CMP_certConf_cb_t) (OSSL_CMP_CTX *ctx, X509 *cert,
int fail_info, const char **txt);
int OSSL_CMP_certConf_cb(OSSL_CMP_CTX *ctx, X509 *cert, int fail_info,
const char **text);
int OSSL_CMP_CTX_set_certConf_cb(OSSL_CMP_CTX *ctx, OSSL_CMP_certConf_cb_t cb);
int OSSL_CMP_CTX_set_certConf_cb_arg(OSSL_CMP_CTX *ctx, void *arg);
void *OSSL_CMP_CTX_get_certConf_cb_arg(const OSSL_CMP_CTX *ctx);
/* result fetching: */
int OSSL_CMP_CTX_get_status(const OSSL_CMP_CTX *ctx);
OSSL_CMP_PKIFREETEXT *OSSL_CMP_CTX_get0_statusString(const OSSL_CMP_CTX *ctx);
int OSSL_CMP_CTX_get_failInfoCode(const OSSL_CMP_CTX *ctx);
# define OSSL_CMP_PKISI_BUFLEN 1024
X509 *OSSL_CMP_CTX_get0_validatedSrvCert(const OSSL_CMP_CTX *ctx);
X509 *OSSL_CMP_CTX_get0_newCert(const OSSL_CMP_CTX *ctx);
STACK_OF(X509) *OSSL_CMP_CTX_get1_newChain(const OSSL_CMP_CTX *ctx);
STACK_OF(X509) *OSSL_CMP_CTX_get1_caPubs(const OSSL_CMP_CTX *ctx);
STACK_OF(X509) *OSSL_CMP_CTX_get1_extraCertsIn(const OSSL_CMP_CTX *ctx);
int OSSL_CMP_CTX_set1_transactionID(OSSL_CMP_CTX *ctx,
const ASN1_OCTET_STRING *id);
int OSSL_CMP_CTX_set1_senderNonce(OSSL_CMP_CTX *ctx,
const ASN1_OCTET_STRING *nonce);
/* from cmp_status.c */
char *OSSL_CMP_CTX_snprint_PKIStatus(const OSSL_CMP_CTX *ctx, char *buf,
size_t bufsize);
char *OSSL_CMP_snprint_PKIStatusInfo(const OSSL_CMP_PKISI *statusInfo,
char *buf, size_t bufsize);
OSSL_CMP_PKISI *
OSSL_CMP_STATUSINFO_new(int status, int fail_info, const char *text);
/* from cmp_hdr.c */
ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_transactionID(const
OSSL_CMP_PKIHEADER *hdr);
ASN1_OCTET_STRING *OSSL_CMP_HDR_get0_recipNonce(const OSSL_CMP_PKIHEADER *hdr);
/* from cmp_msg.c */
OSSL_CMP_PKIHEADER *OSSL_CMP_MSG_get0_header(const OSSL_CMP_MSG *msg);
int OSSL_CMP_MSG_get_bodytype(const OSSL_CMP_MSG *msg);
int OSSL_CMP_MSG_update_transactionID(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg);
int OSSL_CMP_MSG_update_recipNonce(OSSL_CMP_CTX *ctx, OSSL_CMP_MSG *msg);
OSSL_CRMF_MSG *OSSL_CMP_CTX_setup_CRM(OSSL_CMP_CTX *ctx, int for_KUR, int rid);
OSSL_CMP_MSG *OSSL_CMP_MSG_read(const char *file, OSSL_LIB_CTX *libctx,
const char *propq);
int OSSL_CMP_MSG_write(const char *file, const OSSL_CMP_MSG *msg);
OSSL_CMP_MSG *d2i_OSSL_CMP_MSG_bio(BIO *bio, OSSL_CMP_MSG **msg);
int i2d_OSSL_CMP_MSG_bio(BIO *bio, const OSSL_CMP_MSG *msg);
/* from cmp_vfy.c */
int OSSL_CMP_validate_msg(OSSL_CMP_CTX *ctx, const OSSL_CMP_MSG *msg);
int OSSL_CMP_validate_cert_path(const OSSL_CMP_CTX *ctx,
X509_STORE *trusted_store, X509 *cert);
/* from cmp_http.c */
# ifndef OPENSSL_NO_HTTP
OSSL_CMP_MSG *OSSL_CMP_MSG_http_perform(OSSL_CMP_CTX *ctx,
const OSSL_CMP_MSG *req);
# endif
/* from cmp_server.c */
typedef struct ossl_cmp_srv_ctx_st OSSL_CMP_SRV_CTX;
OSSL_CMP_MSG *OSSL_CMP_SRV_process_request(OSSL_CMP_SRV_CTX *srv_ctx,
const OSSL_CMP_MSG *req);
OSSL_CMP_MSG * OSSL_CMP_CTX_server_perform(OSSL_CMP_CTX *client_ctx,
const OSSL_CMP_MSG *req);
OSSL_CMP_SRV_CTX *OSSL_CMP_SRV_CTX_new(OSSL_LIB_CTX *libctx, const char *propq);
void OSSL_CMP_SRV_CTX_free(OSSL_CMP_SRV_CTX *srv_ctx);
typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_cert_request_cb_t)
(OSSL_CMP_SRV_CTX *srv_ctx, const OSSL_CMP_MSG *req, int certReqId,
const OSSL_CRMF_MSG *crm, const X509_REQ *p10cr,
X509 **certOut, STACK_OF(X509) **chainOut, STACK_OF(X509) **caPubs);
typedef OSSL_CMP_PKISI *(*OSSL_CMP_SRV_rr_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
const OSSL_CMP_MSG *req,
const X509_NAME *issuer,
const ASN1_INTEGER *serial);
typedef int (*OSSL_CMP_SRV_genm_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
const OSSL_CMP_MSG *req,
const STACK_OF(OSSL_CMP_ITAV) *in,
STACK_OF(OSSL_CMP_ITAV) **out);
typedef void (*OSSL_CMP_SRV_error_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
const OSSL_CMP_MSG *req,
const OSSL_CMP_PKISI *statusInfo,
const ASN1_INTEGER *errorCode,
const OSSL_CMP_PKIFREETEXT *errDetails);
typedef int (*OSSL_CMP_SRV_certConf_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
const OSSL_CMP_MSG *req,
int certReqId,
const ASN1_OCTET_STRING *certHash,
const OSSL_CMP_PKISI *si);
typedef int (*OSSL_CMP_SRV_pollReq_cb_t)(OSSL_CMP_SRV_CTX *srv_ctx,
const OSSL_CMP_MSG *req, int certReqId,
OSSL_CMP_MSG **certReq,
int64_t *check_after);
int OSSL_CMP_SRV_CTX_init(OSSL_CMP_SRV_CTX *srv_ctx, void *custom_ctx,
OSSL_CMP_SRV_cert_request_cb_t process_cert_request,
OSSL_CMP_SRV_rr_cb_t process_rr,
OSSL_CMP_SRV_genm_cb_t process_genm,
OSSL_CMP_SRV_error_cb_t process_error,
OSSL_CMP_SRV_certConf_cb_t process_certConf,
OSSL_CMP_SRV_pollReq_cb_t process_pollReq);
OSSL_CMP_CTX *OSSL_CMP_SRV_CTX_get0_cmp_ctx(const OSSL_CMP_SRV_CTX *srv_ctx);
void *OSSL_CMP_SRV_CTX_get0_custom_ctx(const OSSL_CMP_SRV_CTX *srv_ctx);
int OSSL_CMP_SRV_CTX_set_send_unprotected_errors(OSSL_CMP_SRV_CTX *srv_ctx,
int val);
int OSSL_CMP_SRV_CTX_set_accept_unprotected(OSSL_CMP_SRV_CTX *srv_ctx, int val);
int OSSL_CMP_SRV_CTX_set_accept_raverified(OSSL_CMP_SRV_CTX *srv_ctx, int val);
int OSSL_CMP_SRV_CTX_set_grant_implicit_confirm(OSSL_CMP_SRV_CTX *srv_ctx,
int val);
/* from cmp_client.c */
X509 *OSSL_CMP_exec_certreq(OSSL_CMP_CTX *ctx, int req_type,
const OSSL_CRMF_MSG *crm);
# define OSSL_CMP_IR 0
# define OSSL_CMP_CR 2
# define OSSL_CMP_P10CR 4
# define OSSL_CMP_KUR 7
# define OSSL_CMP_exec_IR_ses(ctx) \
OSSL_CMP_exec_certreq(ctx, OSSL_CMP_IR, NULL)
# define OSSL_CMP_exec_CR_ses(ctx) \
OSSL_CMP_exec_certreq(ctx, OSSL_CMP_CR, NULL)
# define OSSL_CMP_exec_P10CR_ses(ctx) \
OSSL_CMP_exec_certreq(ctx, OSSL_CMP_P10CR, NULL)
# define OSSL_CMP_exec_KUR_ses(ctx) \
OSSL_CMP_exec_certreq(ctx, OSSL_CMP_KUR, NULL)
int OSSL_CMP_try_certreq(OSSL_CMP_CTX *ctx, int req_type,
const OSSL_CRMF_MSG *crm, int *checkAfter);
int OSSL_CMP_exec_RR_ses(OSSL_CMP_CTX *ctx);
STACK_OF(OSSL_CMP_ITAV) *OSSL_CMP_exec_GENM_ses(OSSL_CMP_CTX *ctx);
/* from cmp_genm.c */
int OSSL_CMP_get1_caCerts(OSSL_CMP_CTX *ctx, STACK_OF(X509) **out);
int OSSL_CMP_get1_rootCaKeyUpdate(OSSL_CMP_CTX *ctx,
const X509 *oldWithOld, X509 **newWithNew,
X509 **newWithOld, X509 **oldWithNew);
# ifdef __cplusplus
}
# endif
# endif /* !defined(OPENSSL_NO_CMP) */
#endif /* !defined(OPENSSL_CMP_H) */

View File

@@ -0,0 +1,56 @@
/*
* Copyright 2007-2021 The OpenSSL Project Authors. All Rights Reserved.
* Copyright Nokia 2007-2019
* Copyright Siemens AG 2015-2019
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CMP_UTIL_H
# define OPENSSL_CMP_UTIL_H
# pragma once
# include <openssl/opensslconf.h>
# ifndef OPENSSL_NO_CMP
# include <openssl/macros.h>
# include <openssl/trace.h>
# ifdef __cplusplus
extern "C" {
# endif
int OSSL_CMP_log_open(void);
void OSSL_CMP_log_close(void);
# define OSSL_CMP_LOG_PREFIX "CMP "
/*
* generalized logging/error callback mirroring the severity levels of syslog.h
*/
typedef int OSSL_CMP_severity;
# define OSSL_CMP_LOG_EMERG 0
# define OSSL_CMP_LOG_ALERT 1
# define OSSL_CMP_LOG_CRIT 2
# define OSSL_CMP_LOG_ERR 3
# define OSSL_CMP_LOG_WARNING 4
# define OSSL_CMP_LOG_NOTICE 5
# define OSSL_CMP_LOG_INFO 6
# define OSSL_CMP_LOG_DEBUG 7
# define OSSL_CMP_LOG_TRACE 8
# define OSSL_CMP_LOG_MAX OSSL_CMP_LOG_TRACE
typedef int (*OSSL_CMP_log_cb_t)(const char *func, const char *file, int line,
OSSL_CMP_severity level, const char *msg);
int OSSL_CMP_print_to_bio(BIO *bio, const char *component, const char *file,
int line, OSSL_CMP_severity level, const char *msg);
/* use of the logging callback for outputting error queue */
void OSSL_CMP_print_errors_cb(OSSL_CMP_log_cb_t log_fn);
# ifdef __cplusplus
}
# endif
# endif /* !defined(OPENSSL_NO_CMP) */
#endif /* !defined(OPENSSL_CMP_UTIL_H) */

View File

@@ -0,0 +1,120 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
* Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CMPERR_H
# define OPENSSL_CMPERR_H
# pragma once
# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>
# ifndef OPENSSL_NO_CMP
/*
* CMP reason codes.
*/
# define CMP_R_ALGORITHM_NOT_SUPPORTED 139
# define CMP_R_BAD_CHECKAFTER_IN_POLLREP 167
# define CMP_R_BAD_REQUEST_ID 108
# define CMP_R_CERTHASH_UNMATCHED 156
# define CMP_R_CERTID_NOT_FOUND 109
# define CMP_R_CERTIFICATE_NOT_ACCEPTED 169
# define CMP_R_CERTIFICATE_NOT_FOUND 112
# define CMP_R_CERTREQMSG_NOT_FOUND 157
# define CMP_R_CERTRESPONSE_NOT_FOUND 113
# define CMP_R_CERT_AND_KEY_DO_NOT_MATCH 114
# define CMP_R_CHECKAFTER_OUT_OF_RANGE 181
# define CMP_R_ENCOUNTERED_KEYUPDATEWARNING 176
# define CMP_R_ENCOUNTERED_WAITING 162
# define CMP_R_ERROR_CALCULATING_PROTECTION 115
# define CMP_R_ERROR_CREATING_CERTCONF 116
# define CMP_R_ERROR_CREATING_CERTREP 117
# define CMP_R_ERROR_CREATING_CERTREQ 163
# define CMP_R_ERROR_CREATING_ERROR 118
# define CMP_R_ERROR_CREATING_GENM 119
# define CMP_R_ERROR_CREATING_GENP 120
# define CMP_R_ERROR_CREATING_PKICONF 122
# define CMP_R_ERROR_CREATING_POLLREP 123
# define CMP_R_ERROR_CREATING_POLLREQ 124
# define CMP_R_ERROR_CREATING_RP 125
# define CMP_R_ERROR_CREATING_RR 126
# define CMP_R_ERROR_PARSING_PKISTATUS 107
# define CMP_R_ERROR_PROCESSING_MESSAGE 158
# define CMP_R_ERROR_PROTECTING_MESSAGE 127
# define CMP_R_ERROR_SETTING_CERTHASH 128
# define CMP_R_ERROR_UNEXPECTED_CERTCONF 160
# define CMP_R_ERROR_VALIDATING_PROTECTION 140
# define CMP_R_ERROR_VALIDATING_SIGNATURE 171
# define CMP_R_FAILED_BUILDING_OWN_CHAIN 164
# define CMP_R_FAILED_EXTRACTING_PUBKEY 141
# define CMP_R_FAILURE_OBTAINING_RANDOM 110
# define CMP_R_FAIL_INFO_OUT_OF_RANGE 129
# define CMP_R_GETTING_GENP 192
# define CMP_R_INVALID_ARGS 100
# define CMP_R_INVALID_GENP 193
# define CMP_R_INVALID_OPTION 174
# define CMP_R_INVALID_ROOTCAKEYUPDATE 195
# define CMP_R_MISSING_CERTID 165
# define CMP_R_MISSING_KEY_INPUT_FOR_CREATING_PROTECTION 130
# define CMP_R_MISSING_KEY_USAGE_DIGITALSIGNATURE 142
# define CMP_R_MISSING_P10CSR 121
# define CMP_R_MISSING_PBM_SECRET 166
# define CMP_R_MISSING_PRIVATE_KEY 131
# define CMP_R_MISSING_PRIVATE_KEY_FOR_POPO 190
# define CMP_R_MISSING_PROTECTION 143
# define CMP_R_MISSING_PUBLIC_KEY 183
# define CMP_R_MISSING_REFERENCE_CERT 168
# define CMP_R_MISSING_SECRET 178
# define CMP_R_MISSING_SENDER_IDENTIFICATION 111
# define CMP_R_MISSING_TRUST_ANCHOR 179
# define CMP_R_MISSING_TRUST_STORE 144
# define CMP_R_MULTIPLE_REQUESTS_NOT_SUPPORTED 161
# define CMP_R_MULTIPLE_RESPONSES_NOT_SUPPORTED 170
# define CMP_R_MULTIPLE_SAN_SOURCES 102
# define CMP_R_NO_STDIO 194
# define CMP_R_NO_SUITABLE_SENDER_CERT 145
# define CMP_R_NULL_ARGUMENT 103
# define CMP_R_PKIBODY_ERROR 146
# define CMP_R_PKISTATUSINFO_NOT_FOUND 132
# define CMP_R_POLLING_FAILED 172
# define CMP_R_POTENTIALLY_INVALID_CERTIFICATE 147
# define CMP_R_RECEIVED_ERROR 180
# define CMP_R_RECIPNONCE_UNMATCHED 148
# define CMP_R_REQUEST_NOT_ACCEPTED 149
# define CMP_R_REQUEST_REJECTED_BY_SERVER 182
# define CMP_R_SENDER_GENERALNAME_TYPE_NOT_SUPPORTED 150
# define CMP_R_SRVCERT_DOES_NOT_VALIDATE_MSG 151
# define CMP_R_TOTAL_TIMEOUT 184
# define CMP_R_TRANSACTIONID_UNMATCHED 152
# define CMP_R_TRANSFER_ERROR 159
# define CMP_R_UNCLEAN_CTX 191
# define CMP_R_UNEXPECTED_PKIBODY 133
# define CMP_R_UNEXPECTED_PKISTATUS 185
# define CMP_R_UNEXPECTED_PVNO 153
# define CMP_R_UNKNOWN_ALGORITHM_ID 134
# define CMP_R_UNKNOWN_CERT_TYPE 135
# define CMP_R_UNKNOWN_PKISTATUS 186
# define CMP_R_UNSUPPORTED_ALGORITHM 136
# define CMP_R_UNSUPPORTED_KEY_TYPE 137
# define CMP_R_UNSUPPORTED_PROTECTION_ALG_DHBASEDMAC 154
# define CMP_R_VALUE_TOO_LARGE 175
# define CMP_R_VALUE_TOO_SMALL 177
# define CMP_R_WRONG_ALGORITHM_OID 138
# define CMP_R_WRONG_CERTID 189
# define CMP_R_WRONG_CERTID_IN_RP 187
# define CMP_R_WRONG_PBM_VALUE 155
# define CMP_R_WRONG_RP_COMPONENT_COUNT 188
# define CMP_R_WRONG_SERIAL_IN_RP 173
# endif
#endif

View File

@@ -0,0 +1,508 @@
/*
* WARNING: do not edit!
* Generated by Makefile from include/openssl/cms.h.in
*
* Copyright 2008-2022 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CMS_H
# define OPENSSL_CMS_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_CMS_H
# endif
# include <openssl/opensslconf.h>
# ifndef OPENSSL_NO_CMS
# include <openssl/x509.h>
# include <openssl/x509v3.h>
# include <openssl/cmserr.h>
# ifdef __cplusplus
extern "C" {
# endif
typedef struct CMS_EnvelopedData_st CMS_EnvelopedData;
typedef struct CMS_ContentInfo_st CMS_ContentInfo;
typedef struct CMS_SignerInfo_st CMS_SignerInfo;
typedef struct CMS_SignedData_st CMS_SignedData;
typedef struct CMS_CertificateChoices CMS_CertificateChoices;
typedef struct CMS_RevocationInfoChoice_st CMS_RevocationInfoChoice;
typedef struct CMS_RecipientInfo_st CMS_RecipientInfo;
typedef struct CMS_ReceiptRequest_st CMS_ReceiptRequest;
typedef struct CMS_Receipt_st CMS_Receipt;
typedef struct CMS_RecipientEncryptedKey_st CMS_RecipientEncryptedKey;
typedef struct CMS_OtherKeyAttribute_st CMS_OtherKeyAttribute;
SKM_DEFINE_STACK_OF_INTERNAL(CMS_SignerInfo, CMS_SignerInfo, CMS_SignerInfo)
#define sk_CMS_SignerInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_SignerInfo_sk_type(sk))
#define sk_CMS_SignerInfo_value(sk, idx) ((CMS_SignerInfo *)OPENSSL_sk_value(ossl_check_const_CMS_SignerInfo_sk_type(sk), (idx)))
#define sk_CMS_SignerInfo_new(cmp) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new(ossl_check_CMS_SignerInfo_compfunc_type(cmp)))
#define sk_CMS_SignerInfo_new_null() ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_null())
#define sk_CMS_SignerInfo_new_reserve(cmp, n) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_SignerInfo_compfunc_type(cmp), (n)))
#define sk_CMS_SignerInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_SignerInfo_sk_type(sk), (n))
#define sk_CMS_SignerInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_SignerInfo_sk_type(sk))
#define sk_CMS_SignerInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_SignerInfo_sk_type(sk))
#define sk_CMS_SignerInfo_delete(sk, i) ((CMS_SignerInfo *)OPENSSL_sk_delete(ossl_check_CMS_SignerInfo_sk_type(sk), (i)))
#define sk_CMS_SignerInfo_delete_ptr(sk, ptr) ((CMS_SignerInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr)))
#define sk_CMS_SignerInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))
#define sk_CMS_SignerInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))
#define sk_CMS_SignerInfo_pop(sk) ((CMS_SignerInfo *)OPENSSL_sk_pop(ossl_check_CMS_SignerInfo_sk_type(sk)))
#define sk_CMS_SignerInfo_shift(sk) ((CMS_SignerInfo *)OPENSSL_sk_shift(ossl_check_CMS_SignerInfo_sk_type(sk)))
#define sk_CMS_SignerInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_SignerInfo_sk_type(sk),ossl_check_CMS_SignerInfo_freefunc_type(freefunc))
#define sk_CMS_SignerInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), (idx))
#define sk_CMS_SignerInfo_set(sk, idx, ptr) ((CMS_SignerInfo *)OPENSSL_sk_set(ossl_check_CMS_SignerInfo_sk_type(sk), (idx), ossl_check_CMS_SignerInfo_type(ptr)))
#define sk_CMS_SignerInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))
#define sk_CMS_SignerInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr))
#define sk_CMS_SignerInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_type(ptr), pnum)
#define sk_CMS_SignerInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_SignerInfo_sk_type(sk))
#define sk_CMS_SignerInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_SignerInfo_sk_type(sk))
#define sk_CMS_SignerInfo_dup(sk) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_SignerInfo_sk_type(sk)))
#define sk_CMS_SignerInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_SignerInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_copyfunc_type(copyfunc), ossl_check_CMS_SignerInfo_freefunc_type(freefunc)))
#define sk_CMS_SignerInfo_set_cmp_func(sk, cmp) ((sk_CMS_SignerInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_SignerInfo_sk_type(sk), ossl_check_CMS_SignerInfo_compfunc_type(cmp)))
SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey, CMS_RecipientEncryptedKey)
#define sk_CMS_RecipientEncryptedKey_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))
#define sk_CMS_RecipientEncryptedKey_value(sk, idx) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), (idx)))
#define sk_CMS_RecipientEncryptedKey_new(cmp) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp)))
#define sk_CMS_RecipientEncryptedKey_new_null() ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_null())
#define sk_CMS_RecipientEncryptedKey_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp), (n)))
#define sk_CMS_RecipientEncryptedKey_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (n))
#define sk_CMS_RecipientEncryptedKey_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))
#define sk_CMS_RecipientEncryptedKey_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))
#define sk_CMS_RecipientEncryptedKey_delete(sk, i) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (i)))
#define sk_CMS_RecipientEncryptedKey_delete_ptr(sk, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr)))
#define sk_CMS_RecipientEncryptedKey_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))
#define sk_CMS_RecipientEncryptedKey_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))
#define sk_CMS_RecipientEncryptedKey_pop(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_pop(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)))
#define sk_CMS_RecipientEncryptedKey_shift(sk) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_shift(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk)))
#define sk_CMS_RecipientEncryptedKey_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk),ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc))
#define sk_CMS_RecipientEncryptedKey_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), (idx))
#define sk_CMS_RecipientEncryptedKey_set(sk, idx, ptr) ((CMS_RecipientEncryptedKey *)OPENSSL_sk_set(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), (idx), ossl_check_CMS_RecipientEncryptedKey_type(ptr)))
#define sk_CMS_RecipientEncryptedKey_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))
#define sk_CMS_RecipientEncryptedKey_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr))
#define sk_CMS_RecipientEncryptedKey_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_type(ptr), pnum)
#define sk_CMS_RecipientEncryptedKey_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk))
#define sk_CMS_RecipientEncryptedKey_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk))
#define sk_CMS_RecipientEncryptedKey_dup(sk) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk)))
#define sk_CMS_RecipientEncryptedKey_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientEncryptedKey) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_copyfunc_type(copyfunc), ossl_check_CMS_RecipientEncryptedKey_freefunc_type(freefunc)))
#define sk_CMS_RecipientEncryptedKey_set_cmp_func(sk, cmp) ((sk_CMS_RecipientEncryptedKey_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientEncryptedKey_sk_type(sk), ossl_check_CMS_RecipientEncryptedKey_compfunc_type(cmp)))
SKM_DEFINE_STACK_OF_INTERNAL(CMS_RecipientInfo, CMS_RecipientInfo, CMS_RecipientInfo)
#define sk_CMS_RecipientInfo_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RecipientInfo_sk_type(sk))
#define sk_CMS_RecipientInfo_value(sk, idx) ((CMS_RecipientInfo *)OPENSSL_sk_value(ossl_check_const_CMS_RecipientInfo_sk_type(sk), (idx)))
#define sk_CMS_RecipientInfo_new(cmp) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new(ossl_check_CMS_RecipientInfo_compfunc_type(cmp)))
#define sk_CMS_RecipientInfo_new_null() ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_null())
#define sk_CMS_RecipientInfo_new_reserve(cmp, n) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RecipientInfo_compfunc_type(cmp), (n)))
#define sk_CMS_RecipientInfo_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RecipientInfo_sk_type(sk), (n))
#define sk_CMS_RecipientInfo_free(sk) OPENSSL_sk_free(ossl_check_CMS_RecipientInfo_sk_type(sk))
#define sk_CMS_RecipientInfo_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RecipientInfo_sk_type(sk))
#define sk_CMS_RecipientInfo_delete(sk, i) ((CMS_RecipientInfo *)OPENSSL_sk_delete(ossl_check_CMS_RecipientInfo_sk_type(sk), (i)))
#define sk_CMS_RecipientInfo_delete_ptr(sk, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr)))
#define sk_CMS_RecipientInfo_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))
#define sk_CMS_RecipientInfo_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))
#define sk_CMS_RecipientInfo_pop(sk) ((CMS_RecipientInfo *)OPENSSL_sk_pop(ossl_check_CMS_RecipientInfo_sk_type(sk)))
#define sk_CMS_RecipientInfo_shift(sk) ((CMS_RecipientInfo *)OPENSSL_sk_shift(ossl_check_CMS_RecipientInfo_sk_type(sk)))
#define sk_CMS_RecipientInfo_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RecipientInfo_sk_type(sk),ossl_check_CMS_RecipientInfo_freefunc_type(freefunc))
#define sk_CMS_RecipientInfo_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), (idx))
#define sk_CMS_RecipientInfo_set(sk, idx, ptr) ((CMS_RecipientInfo *)OPENSSL_sk_set(ossl_check_CMS_RecipientInfo_sk_type(sk), (idx), ossl_check_CMS_RecipientInfo_type(ptr)))
#define sk_CMS_RecipientInfo_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))
#define sk_CMS_RecipientInfo_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr))
#define sk_CMS_RecipientInfo_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_type(ptr), pnum)
#define sk_CMS_RecipientInfo_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RecipientInfo_sk_type(sk))
#define sk_CMS_RecipientInfo_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RecipientInfo_sk_type(sk))
#define sk_CMS_RecipientInfo_dup(sk) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_dup(ossl_check_const_CMS_RecipientInfo_sk_type(sk)))
#define sk_CMS_RecipientInfo_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RecipientInfo) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_copyfunc_type(copyfunc), ossl_check_CMS_RecipientInfo_freefunc_type(freefunc)))
#define sk_CMS_RecipientInfo_set_cmp_func(sk, cmp) ((sk_CMS_RecipientInfo_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RecipientInfo_sk_type(sk), ossl_check_CMS_RecipientInfo_compfunc_type(cmp)))
SKM_DEFINE_STACK_OF_INTERNAL(CMS_RevocationInfoChoice, CMS_RevocationInfoChoice, CMS_RevocationInfoChoice)
#define sk_CMS_RevocationInfoChoice_num(sk) OPENSSL_sk_num(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))
#define sk_CMS_RevocationInfoChoice_value(sk, idx) ((CMS_RevocationInfoChoice *)OPENSSL_sk_value(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), (idx)))
#define sk_CMS_RevocationInfoChoice_new(cmp) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp)))
#define sk_CMS_RevocationInfoChoice_new_null() ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_null())
#define sk_CMS_RevocationInfoChoice_new_reserve(cmp, n) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_new_reserve(ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp), (n)))
#define sk_CMS_RevocationInfoChoice_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (n))
#define sk_CMS_RevocationInfoChoice_free(sk) OPENSSL_sk_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))
#define sk_CMS_RevocationInfoChoice_zero(sk) OPENSSL_sk_zero(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))
#define sk_CMS_RevocationInfoChoice_delete(sk, i) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (i)))
#define sk_CMS_RevocationInfoChoice_delete_ptr(sk, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_delete_ptr(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr)))
#define sk_CMS_RevocationInfoChoice_push(sk, ptr) OPENSSL_sk_push(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))
#define sk_CMS_RevocationInfoChoice_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))
#define sk_CMS_RevocationInfoChoice_pop(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_pop(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)))
#define sk_CMS_RevocationInfoChoice_shift(sk) ((CMS_RevocationInfoChoice *)OPENSSL_sk_shift(ossl_check_CMS_RevocationInfoChoice_sk_type(sk)))
#define sk_CMS_RevocationInfoChoice_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CMS_RevocationInfoChoice_sk_type(sk),ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc))
#define sk_CMS_RevocationInfoChoice_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), (idx))
#define sk_CMS_RevocationInfoChoice_set(sk, idx, ptr) ((CMS_RevocationInfoChoice *)OPENSSL_sk_set(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), (idx), ossl_check_CMS_RevocationInfoChoice_type(ptr)))
#define sk_CMS_RevocationInfoChoice_find(sk, ptr) OPENSSL_sk_find(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))
#define sk_CMS_RevocationInfoChoice_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr))
#define sk_CMS_RevocationInfoChoice_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_type(ptr), pnum)
#define sk_CMS_RevocationInfoChoice_sort(sk) OPENSSL_sk_sort(ossl_check_CMS_RevocationInfoChoice_sk_type(sk))
#define sk_CMS_RevocationInfoChoice_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk))
#define sk_CMS_RevocationInfoChoice_dup(sk) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_dup(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk)))
#define sk_CMS_RevocationInfoChoice_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CMS_RevocationInfoChoice) *)OPENSSL_sk_deep_copy(ossl_check_const_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_copyfunc_type(copyfunc), ossl_check_CMS_RevocationInfoChoice_freefunc_type(freefunc)))
#define sk_CMS_RevocationInfoChoice_set_cmp_func(sk, cmp) ((sk_CMS_RevocationInfoChoice_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CMS_RevocationInfoChoice_sk_type(sk), ossl_check_CMS_RevocationInfoChoice_compfunc_type(cmp)))
DECLARE_ASN1_ITEM(CMS_EnvelopedData)
DECLARE_ASN1_ALLOC_FUNCTIONS(CMS_SignedData)
DECLARE_ASN1_FUNCTIONS(CMS_ContentInfo)
DECLARE_ASN1_FUNCTIONS(CMS_ReceiptRequest)
DECLARE_ASN1_PRINT_FUNCTION(CMS_ContentInfo)
CMS_ContentInfo *CMS_ContentInfo_new_ex(OSSL_LIB_CTX *libctx, const char *propq);
# define CMS_SIGNERINFO_ISSUER_SERIAL 0
# define CMS_SIGNERINFO_KEYIDENTIFIER 1
# define CMS_RECIPINFO_NONE -1
# define CMS_RECIPINFO_TRANS 0
# define CMS_RECIPINFO_AGREE 1
# define CMS_RECIPINFO_KEK 2
# define CMS_RECIPINFO_PASS 3
# define CMS_RECIPINFO_OTHER 4
/* S/MIME related flags */
# define CMS_TEXT 0x1
# define CMS_NOCERTS 0x2
# define CMS_NO_CONTENT_VERIFY 0x4
# define CMS_NO_ATTR_VERIFY 0x8
# define CMS_NOSIGS \
(CMS_NO_CONTENT_VERIFY|CMS_NO_ATTR_VERIFY)
# define CMS_NOINTERN 0x10
# define CMS_NO_SIGNER_CERT_VERIFY 0x20
# define CMS_NOVERIFY 0x20
# define CMS_DETACHED 0x40
# define CMS_BINARY 0x80
# define CMS_NOATTR 0x100
# define CMS_NOSMIMECAP 0x200
# define CMS_NOOLDMIMETYPE 0x400
# define CMS_CRLFEOL 0x800
# define CMS_STREAM 0x1000
# define CMS_NOCRL 0x2000
# define CMS_PARTIAL 0x4000
# define CMS_REUSE_DIGEST 0x8000
# define CMS_USE_KEYID 0x10000
# define CMS_DEBUG_DECRYPT 0x20000
# define CMS_KEY_PARAM 0x40000
# define CMS_ASCIICRLF 0x80000
# define CMS_CADES 0x100000
# define CMS_USE_ORIGINATOR_KEYID 0x200000
const ASN1_OBJECT *CMS_get0_type(const CMS_ContentInfo *cms);
BIO *CMS_dataInit(CMS_ContentInfo *cms, BIO *icont);
int CMS_dataFinal(CMS_ContentInfo *cms, BIO *bio);
ASN1_OCTET_STRING **CMS_get0_content(CMS_ContentInfo *cms);
int CMS_is_detached(CMS_ContentInfo *cms);
int CMS_set_detached(CMS_ContentInfo *cms, int detached);
# ifdef OPENSSL_PEM_H
DECLARE_PEM_rw(CMS, CMS_ContentInfo)
# endif
int CMS_stream(unsigned char ***boundary, CMS_ContentInfo *cms);
CMS_ContentInfo *d2i_CMS_bio(BIO *bp, CMS_ContentInfo **cms);
int i2d_CMS_bio(BIO *bp, CMS_ContentInfo *cms);
BIO *BIO_new_CMS(BIO *out, CMS_ContentInfo *cms);
int i2d_CMS_bio_stream(BIO *out, CMS_ContentInfo *cms, BIO *in, int flags);
int PEM_write_bio_CMS_stream(BIO *out, CMS_ContentInfo *cms, BIO *in,
int flags);
CMS_ContentInfo *SMIME_read_CMS(BIO *bio, BIO **bcont);
CMS_ContentInfo *SMIME_read_CMS_ex(BIO *bio, int flags, BIO **bcont, CMS_ContentInfo **ci);
int SMIME_write_CMS(BIO *bio, CMS_ContentInfo *cms, BIO *data, int flags);
int CMS_final(CMS_ContentInfo *cms, BIO *data, BIO *dcont,
unsigned int flags);
int CMS_final_digest(CMS_ContentInfo *cms,
const unsigned char *md, unsigned int mdlen, BIO *dcont,
unsigned int flags);
CMS_ContentInfo *CMS_sign(X509 *signcert, EVP_PKEY *pkey,
STACK_OF(X509) *certs, BIO *data,
unsigned int flags);
CMS_ContentInfo *CMS_sign_ex(X509 *signcert, EVP_PKEY *pkey,
STACK_OF(X509) *certs, BIO *data,
unsigned int flags, OSSL_LIB_CTX *libctx,
const char *propq);
CMS_ContentInfo *CMS_sign_receipt(CMS_SignerInfo *si,
X509 *signcert, EVP_PKEY *pkey,
STACK_OF(X509) *certs, unsigned int flags);
int CMS_data(CMS_ContentInfo *cms, BIO *out, unsigned int flags);
CMS_ContentInfo *CMS_data_create(BIO *in, unsigned int flags);
CMS_ContentInfo *CMS_data_create_ex(BIO *in, unsigned int flags,
OSSL_LIB_CTX *libctx, const char *propq);
int CMS_digest_verify(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
unsigned int flags);
CMS_ContentInfo *CMS_digest_create(BIO *in, const EVP_MD *md,
unsigned int flags);
CMS_ContentInfo *CMS_digest_create_ex(BIO *in, const EVP_MD *md,
unsigned int flags, OSSL_LIB_CTX *libctx,
const char *propq);
int CMS_EncryptedData_decrypt(CMS_ContentInfo *cms,
const unsigned char *key, size_t keylen,
BIO *dcont, BIO *out, unsigned int flags);
CMS_ContentInfo *CMS_EncryptedData_encrypt(BIO *in, const EVP_CIPHER *cipher,
const unsigned char *key,
size_t keylen, unsigned int flags);
CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher,
const unsigned char *key,
size_t keylen, unsigned int flags,
OSSL_LIB_CTX *libctx,
const char *propq);
int CMS_EncryptedData_set1_key(CMS_ContentInfo *cms, const EVP_CIPHER *ciph,
const unsigned char *key, size_t keylen);
int CMS_verify(CMS_ContentInfo *cms, STACK_OF(X509) *certs,
X509_STORE *store, BIO *dcont, BIO *out, unsigned int flags);
int CMS_verify_receipt(CMS_ContentInfo *rcms, CMS_ContentInfo *ocms,
STACK_OF(X509) *certs,
X509_STORE *store, unsigned int flags);
STACK_OF(X509) *CMS_get0_signers(CMS_ContentInfo *cms);
CMS_ContentInfo *CMS_encrypt(STACK_OF(X509) *certs, BIO *in,
const EVP_CIPHER *cipher, unsigned int flags);
CMS_ContentInfo *CMS_encrypt_ex(STACK_OF(X509) *certs, BIO *in,
const EVP_CIPHER *cipher, unsigned int flags,
OSSL_LIB_CTX *libctx, const char *propq);
int CMS_decrypt(CMS_ContentInfo *cms, EVP_PKEY *pkey, X509 *cert,
BIO *dcont, BIO *out, unsigned int flags);
int CMS_decrypt_set1_pkey(CMS_ContentInfo *cms, EVP_PKEY *pk, X509 *cert);
int CMS_decrypt_set1_pkey_and_peer(CMS_ContentInfo *cms, EVP_PKEY *pk,
X509 *cert, X509 *peer);
int CMS_decrypt_set1_key(CMS_ContentInfo *cms,
unsigned char *key, size_t keylen,
const unsigned char *id, size_t idlen);
int CMS_decrypt_set1_password(CMS_ContentInfo *cms,
unsigned char *pass, ossl_ssize_t passlen);
STACK_OF(CMS_RecipientInfo) *CMS_get0_RecipientInfos(CMS_ContentInfo *cms);
int CMS_RecipientInfo_type(CMS_RecipientInfo *ri);
EVP_PKEY_CTX *CMS_RecipientInfo_get0_pkey_ctx(CMS_RecipientInfo *ri);
CMS_ContentInfo *CMS_AuthEnvelopedData_create(const EVP_CIPHER *cipher);
CMS_ContentInfo *
CMS_AuthEnvelopedData_create_ex(const EVP_CIPHER *cipher, OSSL_LIB_CTX *libctx,
const char *propq);
CMS_ContentInfo *CMS_EnvelopedData_create(const EVP_CIPHER *cipher);
CMS_ContentInfo *CMS_EnvelopedData_create_ex(const EVP_CIPHER *cipher,
OSSL_LIB_CTX *libctx,
const char *propq);
BIO *CMS_EnvelopedData_decrypt(CMS_EnvelopedData *env, BIO *detached_data,
EVP_PKEY *pkey, X509 *cert,
ASN1_OCTET_STRING *secret, unsigned int flags,
OSSL_LIB_CTX *libctx, const char *propq);
CMS_RecipientInfo *CMS_add1_recipient_cert(CMS_ContentInfo *cms,
X509 *recip, unsigned int flags);
CMS_RecipientInfo *CMS_add1_recipient(CMS_ContentInfo *cms, X509 *recip,
EVP_PKEY *originatorPrivKey, X509 * originator, unsigned int flags);
int CMS_RecipientInfo_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pkey);
int CMS_RecipientInfo_ktri_cert_cmp(CMS_RecipientInfo *ri, X509 *cert);
int CMS_RecipientInfo_ktri_get0_algs(CMS_RecipientInfo *ri,
EVP_PKEY **pk, X509 **recip,
X509_ALGOR **palg);
int CMS_RecipientInfo_ktri_get0_signer_id(CMS_RecipientInfo *ri,
ASN1_OCTET_STRING **keyid,
X509_NAME **issuer,
ASN1_INTEGER **sno);
CMS_RecipientInfo *CMS_add0_recipient_key(CMS_ContentInfo *cms, int nid,
unsigned char *key, size_t keylen,
unsigned char *id, size_t idlen,
ASN1_GENERALIZEDTIME *date,
ASN1_OBJECT *otherTypeId,
ASN1_TYPE *otherType);
int CMS_RecipientInfo_kekri_get0_id(CMS_RecipientInfo *ri,
X509_ALGOR **palg,
ASN1_OCTET_STRING **pid,
ASN1_GENERALIZEDTIME **pdate,
ASN1_OBJECT **potherid,
ASN1_TYPE **pothertype);
int CMS_RecipientInfo_set0_key(CMS_RecipientInfo *ri,
unsigned char *key, size_t keylen);
int CMS_RecipientInfo_kekri_id_cmp(CMS_RecipientInfo *ri,
const unsigned char *id, size_t idlen);
int CMS_RecipientInfo_set0_password(CMS_RecipientInfo *ri,
unsigned char *pass,
ossl_ssize_t passlen);
CMS_RecipientInfo *CMS_add0_recipient_password(CMS_ContentInfo *cms,
int iter, int wrap_nid,
int pbe_nid,
unsigned char *pass,
ossl_ssize_t passlen,
const EVP_CIPHER *kekciph);
int CMS_RecipientInfo_decrypt(CMS_ContentInfo *cms, CMS_RecipientInfo *ri);
int CMS_RecipientInfo_encrypt(const CMS_ContentInfo *cms, CMS_RecipientInfo *ri);
int CMS_uncompress(CMS_ContentInfo *cms, BIO *dcont, BIO *out,
unsigned int flags);
CMS_ContentInfo *CMS_compress(BIO *in, int comp_nid, unsigned int flags);
int CMS_set1_eContentType(CMS_ContentInfo *cms, const ASN1_OBJECT *oid);
const ASN1_OBJECT *CMS_get0_eContentType(CMS_ContentInfo *cms);
CMS_CertificateChoices *CMS_add0_CertificateChoices(CMS_ContentInfo *cms);
int CMS_add0_cert(CMS_ContentInfo *cms, X509 *cert);
int CMS_add1_cert(CMS_ContentInfo *cms, X509 *cert);
STACK_OF(X509) *CMS_get1_certs(CMS_ContentInfo *cms);
CMS_RevocationInfoChoice *CMS_add0_RevocationInfoChoice(CMS_ContentInfo *cms);
int CMS_add0_crl(CMS_ContentInfo *cms, X509_CRL *crl);
int CMS_add1_crl(CMS_ContentInfo *cms, X509_CRL *crl);
STACK_OF(X509_CRL) *CMS_get1_crls(CMS_ContentInfo *cms);
int CMS_SignedData_init(CMS_ContentInfo *cms);
CMS_SignerInfo *CMS_add1_signer(CMS_ContentInfo *cms,
X509 *signer, EVP_PKEY *pk, const EVP_MD *md,
unsigned int flags);
EVP_PKEY_CTX *CMS_SignerInfo_get0_pkey_ctx(CMS_SignerInfo *si);
EVP_MD_CTX *CMS_SignerInfo_get0_md_ctx(CMS_SignerInfo *si);
STACK_OF(CMS_SignerInfo) *CMS_get0_SignerInfos(CMS_ContentInfo *cms);
void CMS_SignerInfo_set1_signer_cert(CMS_SignerInfo *si, X509 *signer);
int CMS_SignerInfo_get0_signer_id(CMS_SignerInfo *si,
ASN1_OCTET_STRING **keyid,
X509_NAME **issuer, ASN1_INTEGER **sno);
int CMS_SignerInfo_cert_cmp(CMS_SignerInfo *si, X509 *cert);
int CMS_set1_signers_certs(CMS_ContentInfo *cms, STACK_OF(X509) *certs,
unsigned int flags);
void CMS_SignerInfo_get0_algs(CMS_SignerInfo *si, EVP_PKEY **pk,
X509 **signer, X509_ALGOR **pdig,
X509_ALGOR **psig);
ASN1_OCTET_STRING *CMS_SignerInfo_get0_signature(CMS_SignerInfo *si);
int CMS_SignerInfo_sign(CMS_SignerInfo *si);
int CMS_SignerInfo_verify(CMS_SignerInfo *si);
int CMS_SignerInfo_verify_content(CMS_SignerInfo *si, BIO *chain);
BIO *CMS_SignedData_verify(CMS_SignedData *sd, BIO *detached_data,
STACK_OF(X509) *scerts, X509_STORE *store,
STACK_OF(X509) *extra, STACK_OF(X509_CRL) *crls,
unsigned int flags,
OSSL_LIB_CTX *libctx, const char *propq);
int CMS_add_smimecap(CMS_SignerInfo *si, STACK_OF(X509_ALGOR) *algs);
int CMS_add_simple_smimecap(STACK_OF(X509_ALGOR) **algs,
int algnid, int keysize);
int CMS_add_standard_smimecap(STACK_OF(X509_ALGOR) **smcap);
int CMS_signed_get_attr_count(const CMS_SignerInfo *si);
int CMS_signed_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
int lastpos);
int CMS_signed_get_attr_by_OBJ(const CMS_SignerInfo *si, const ASN1_OBJECT *obj,
int lastpos);
X509_ATTRIBUTE *CMS_signed_get_attr(const CMS_SignerInfo *si, int loc);
X509_ATTRIBUTE *CMS_signed_delete_attr(CMS_SignerInfo *si, int loc);
int CMS_signed_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
int CMS_signed_add1_attr_by_OBJ(CMS_SignerInfo *si,
const ASN1_OBJECT *obj, int type,
const void *bytes, int len);
int CMS_signed_add1_attr_by_NID(CMS_SignerInfo *si,
int nid, int type,
const void *bytes, int len);
int CMS_signed_add1_attr_by_txt(CMS_SignerInfo *si,
const char *attrname, int type,
const void *bytes, int len);
void *CMS_signed_get0_data_by_OBJ(const CMS_SignerInfo *si,
const ASN1_OBJECT *oid,
int lastpos, int type);
int CMS_unsigned_get_attr_count(const CMS_SignerInfo *si);
int CMS_unsigned_get_attr_by_NID(const CMS_SignerInfo *si, int nid,
int lastpos);
int CMS_unsigned_get_attr_by_OBJ(const CMS_SignerInfo *si,
const ASN1_OBJECT *obj, int lastpos);
X509_ATTRIBUTE *CMS_unsigned_get_attr(const CMS_SignerInfo *si, int loc);
X509_ATTRIBUTE *CMS_unsigned_delete_attr(CMS_SignerInfo *si, int loc);
int CMS_unsigned_add1_attr(CMS_SignerInfo *si, X509_ATTRIBUTE *attr);
int CMS_unsigned_add1_attr_by_OBJ(CMS_SignerInfo *si,
const ASN1_OBJECT *obj, int type,
const void *bytes, int len);
int CMS_unsigned_add1_attr_by_NID(CMS_SignerInfo *si,
int nid, int type,
const void *bytes, int len);
int CMS_unsigned_add1_attr_by_txt(CMS_SignerInfo *si,
const char *attrname, int type,
const void *bytes, int len);
void *CMS_unsigned_get0_data_by_OBJ(CMS_SignerInfo *si, ASN1_OBJECT *oid,
int lastpos, int type);
int CMS_get1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest **prr);
CMS_ReceiptRequest *CMS_ReceiptRequest_create0(
unsigned char *id, int idlen, int allorfirst,
STACK_OF(GENERAL_NAMES) *receiptList,
STACK_OF(GENERAL_NAMES) *receiptsTo);
CMS_ReceiptRequest *CMS_ReceiptRequest_create0_ex(
unsigned char *id, int idlen, int allorfirst,
STACK_OF(GENERAL_NAMES) *receiptList,
STACK_OF(GENERAL_NAMES) *receiptsTo,
OSSL_LIB_CTX *libctx);
int CMS_add1_ReceiptRequest(CMS_SignerInfo *si, CMS_ReceiptRequest *rr);
void CMS_ReceiptRequest_get0_values(CMS_ReceiptRequest *rr,
ASN1_STRING **pcid,
int *pallorfirst,
STACK_OF(GENERAL_NAMES) **plist,
STACK_OF(GENERAL_NAMES) **prto);
int CMS_RecipientInfo_kari_get0_alg(CMS_RecipientInfo *ri,
X509_ALGOR **palg,
ASN1_OCTET_STRING **pukm);
STACK_OF(CMS_RecipientEncryptedKey)
*CMS_RecipientInfo_kari_get0_reks(CMS_RecipientInfo *ri);
int CMS_RecipientInfo_kari_get0_orig_id(CMS_RecipientInfo *ri,
X509_ALGOR **pubalg,
ASN1_BIT_STRING **pubkey,
ASN1_OCTET_STRING **keyid,
X509_NAME **issuer,
ASN1_INTEGER **sno);
int CMS_RecipientInfo_kari_orig_id_cmp(CMS_RecipientInfo *ri, X509 *cert);
int CMS_RecipientEncryptedKey_get0_id(CMS_RecipientEncryptedKey *rek,
ASN1_OCTET_STRING **keyid,
ASN1_GENERALIZEDTIME **tm,
CMS_OtherKeyAttribute **other,
X509_NAME **issuer, ASN1_INTEGER **sno);
int CMS_RecipientEncryptedKey_cert_cmp(CMS_RecipientEncryptedKey *rek,
X509 *cert);
int CMS_RecipientInfo_kari_set0_pkey(CMS_RecipientInfo *ri, EVP_PKEY *pk);
int CMS_RecipientInfo_kari_set0_pkey_and_peer(CMS_RecipientInfo *ri, EVP_PKEY *pk, X509 *peer);
EVP_CIPHER_CTX *CMS_RecipientInfo_kari_get0_ctx(CMS_RecipientInfo *ri);
int CMS_RecipientInfo_kari_decrypt(CMS_ContentInfo *cms,
CMS_RecipientInfo *ri,
CMS_RecipientEncryptedKey *rek);
int CMS_SharedInfo_encode(unsigned char **pder, X509_ALGOR *kekalg,
ASN1_OCTET_STRING *ukm, int keylen);
/* Backward compatibility for spelling errors. */
# define CMS_R_UNKNOWN_DIGEST_ALGORITM CMS_R_UNKNOWN_DIGEST_ALGORITHM
# define CMS_R_UNSUPPORTED_RECPIENTINFO_TYPE \
CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE
# ifdef __cplusplus
}
# endif
# endif
#endif

View File

@@ -0,0 +1,125 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
* Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CMSERR_H
# define OPENSSL_CMSERR_H
# pragma once
# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>
# ifndef OPENSSL_NO_CMS
/*
* CMS reason codes.
*/
# define CMS_R_ADD_SIGNER_ERROR 99
# define CMS_R_ATTRIBUTE_ERROR 161
# define CMS_R_CERTIFICATE_ALREADY_PRESENT 175
# define CMS_R_CERTIFICATE_HAS_NO_KEYID 160
# define CMS_R_CERTIFICATE_VERIFY_ERROR 100
# define CMS_R_CIPHER_AEAD_SET_TAG_ERROR 184
# define CMS_R_CIPHER_GET_TAG 185
# define CMS_R_CIPHER_INITIALISATION_ERROR 101
# define CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR 102
# define CMS_R_CMS_DATAFINAL_ERROR 103
# define CMS_R_CMS_LIB 104
# define CMS_R_CONTENTIDENTIFIER_MISMATCH 170
# define CMS_R_CONTENT_NOT_FOUND 105
# define CMS_R_CONTENT_TYPE_MISMATCH 171
# define CMS_R_CONTENT_TYPE_NOT_COMPRESSED_DATA 106
# define CMS_R_CONTENT_TYPE_NOT_ENVELOPED_DATA 107
# define CMS_R_CONTENT_TYPE_NOT_SIGNED_DATA 108
# define CMS_R_CONTENT_VERIFY_ERROR 109
# define CMS_R_CTRL_ERROR 110
# define CMS_R_CTRL_FAILURE 111
# define CMS_R_DECODE_ERROR 187
# define CMS_R_DECRYPT_ERROR 112
# define CMS_R_ERROR_GETTING_PUBLIC_KEY 113
# define CMS_R_ERROR_READING_MESSAGEDIGEST_ATTRIBUTE 114
# define CMS_R_ERROR_SETTING_KEY 115
# define CMS_R_ERROR_SETTING_RECIPIENTINFO 116
# define CMS_R_ESS_SIGNING_CERTID_MISMATCH_ERROR 183
# define CMS_R_INVALID_ENCRYPTED_KEY_LENGTH 117
# define CMS_R_INVALID_KEY_ENCRYPTION_PARAMETER 176
# define CMS_R_INVALID_KEY_LENGTH 118
# define CMS_R_INVALID_LABEL 190
# define CMS_R_INVALID_OAEP_PARAMETERS 191
# define CMS_R_KDF_PARAMETER_ERROR 186
# define CMS_R_MD_BIO_INIT_ERROR 119
# define CMS_R_MESSAGEDIGEST_ATTRIBUTE_WRONG_LENGTH 120
# define CMS_R_MESSAGEDIGEST_WRONG_LENGTH 121
# define CMS_R_MSGSIGDIGEST_ERROR 172
# define CMS_R_MSGSIGDIGEST_VERIFICATION_FAILURE 162
# define CMS_R_MSGSIGDIGEST_WRONG_LENGTH 163
# define CMS_R_NEED_ONE_SIGNER 164
# define CMS_R_NOT_A_SIGNED_RECEIPT 165
# define CMS_R_NOT_ENCRYPTED_DATA 122
# define CMS_R_NOT_KEK 123
# define CMS_R_NOT_KEY_AGREEMENT 181
# define CMS_R_NOT_KEY_TRANSPORT 124
# define CMS_R_NOT_PWRI 177
# define CMS_R_NOT_SUPPORTED_FOR_THIS_KEY_TYPE 125
# define CMS_R_NO_CIPHER 126
# define CMS_R_NO_CONTENT 127
# define CMS_R_NO_CONTENT_TYPE 173
# define CMS_R_NO_DEFAULT_DIGEST 128
# define CMS_R_NO_DIGEST_SET 129
# define CMS_R_NO_KEY 130
# define CMS_R_NO_KEY_OR_CERT 174
# define CMS_R_NO_MATCHING_DIGEST 131
# define CMS_R_NO_MATCHING_RECIPIENT 132
# define CMS_R_NO_MATCHING_SIGNATURE 166
# define CMS_R_NO_MSGSIGDIGEST 167
# define CMS_R_NO_PASSWORD 178
# define CMS_R_NO_PRIVATE_KEY 133
# define CMS_R_NO_PUBLIC_KEY 134
# define CMS_R_NO_RECEIPT_REQUEST 168
# define CMS_R_NO_SIGNERS 135
# define CMS_R_OPERATION_UNSUPPORTED 182
# define CMS_R_PEER_KEY_ERROR 188
# define CMS_R_PRIVATE_KEY_DOES_NOT_MATCH_CERTIFICATE 136
# define CMS_R_RECEIPT_DECODE_ERROR 169
# define CMS_R_RECIPIENT_ERROR 137
# define CMS_R_SHARED_INFO_ERROR 189
# define CMS_R_SIGNER_CERTIFICATE_NOT_FOUND 138
# define CMS_R_SIGNFINAL_ERROR 139
# define CMS_R_SMIME_TEXT_ERROR 140
# define CMS_R_STORE_INIT_ERROR 141
# define CMS_R_TYPE_NOT_COMPRESSED_DATA 142
# define CMS_R_TYPE_NOT_DATA 143
# define CMS_R_TYPE_NOT_DIGESTED_DATA 144
# define CMS_R_TYPE_NOT_ENCRYPTED_DATA 145
# define CMS_R_TYPE_NOT_ENVELOPED_DATA 146
# define CMS_R_UNABLE_TO_FINALIZE_CONTEXT 147
# define CMS_R_UNKNOWN_CIPHER 148
# define CMS_R_UNKNOWN_DIGEST_ALGORITHM 149
# define CMS_R_UNKNOWN_ID 150
# define CMS_R_UNSUPPORTED_COMPRESSION_ALGORITHM 151
# define CMS_R_UNSUPPORTED_CONTENT_ENCRYPTION_ALGORITHM 194
# define CMS_R_UNSUPPORTED_CONTENT_TYPE 152
# define CMS_R_UNSUPPORTED_ENCRYPTION_TYPE 192
# define CMS_R_UNSUPPORTED_KEK_ALGORITHM 153
# define CMS_R_UNSUPPORTED_KEY_ENCRYPTION_ALGORITHM 179
# define CMS_R_UNSUPPORTED_LABEL_SOURCE 193
# define CMS_R_UNSUPPORTED_RECIPIENTINFO_TYPE 155
# define CMS_R_UNSUPPORTED_RECIPIENT_TYPE 154
# define CMS_R_UNSUPPORTED_SIGNATURE_ALGORITHM 195
# define CMS_R_UNSUPPORTED_TYPE 156
# define CMS_R_UNWRAP_ERROR 157
# define CMS_R_UNWRAP_FAILURE 180
# define CMS_R_VERIFICATION_FAILURE 158
# define CMS_R_WRAP_ERROR 159
# endif
#endif

View File

@@ -0,0 +1,64 @@
/*
* Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_COMP_H
# define OPENSSL_COMP_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_COMP_H
# endif
# include <openssl/opensslconf.h>
# ifndef OPENSSL_NO_COMP
# include <openssl/crypto.h>
# include <openssl/comperr.h>
# ifdef __cplusplus
extern "C" {
# endif
COMP_CTX *COMP_CTX_new(COMP_METHOD *meth);
const COMP_METHOD *COMP_CTX_get_method(const COMP_CTX *ctx);
int COMP_CTX_get_type(const COMP_CTX* comp);
int COMP_get_type(const COMP_METHOD *meth);
const char *COMP_get_name(const COMP_METHOD *meth);
void COMP_CTX_free(COMP_CTX *ctx);
int COMP_compress_block(COMP_CTX *ctx, unsigned char *out, int olen,
unsigned char *in, int ilen);
int COMP_expand_block(COMP_CTX *ctx, unsigned char *out, int olen,
unsigned char *in, int ilen);
COMP_METHOD *COMP_zlib(void);
COMP_METHOD *COMP_zlib_oneshot(void);
COMP_METHOD *COMP_brotli(void);
COMP_METHOD *COMP_brotli_oneshot(void);
COMP_METHOD *COMP_zstd(void);
COMP_METHOD *COMP_zstd_oneshot(void);
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
# define COMP_zlib_cleanup() while(0) continue
#endif
# ifdef OPENSSL_BIO_H
const BIO_METHOD *BIO_f_zlib(void);
const BIO_METHOD *BIO_f_brotli(void);
const BIO_METHOD *BIO_f_zstd(void);
# endif
# ifdef __cplusplus
}
# endif
# endif
#endif

View File

@@ -0,0 +1,38 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_COMPERR_H
# define OPENSSL_COMPERR_H
# pragma once
# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>
# ifndef OPENSSL_NO_COMP
/*
* COMP reason codes.
*/
# define COMP_R_BROTLI_DECODE_ERROR 102
# define COMP_R_BROTLI_ENCODE_ERROR 103
# define COMP_R_BROTLI_NOT_SUPPORTED 104
# define COMP_R_ZLIB_DEFLATE_ERROR 99
# define COMP_R_ZLIB_INFLATE_ERROR 100
# define COMP_R_ZLIB_NOT_SUPPORTED 101
# define COMP_R_ZSTD_COMPRESS_ERROR 105
# define COMP_R_ZSTD_DECODE_ERROR 106
# define COMP_R_ZSTD_DECOMPRESS_ERROR 107
# define COMP_R_ZSTD_NOT_SUPPORTED 108
# endif
#endif

View File

@@ -0,0 +1,214 @@
/*
* WARNING: do not edit!
* Generated by Makefile from include/openssl/conf.h.in
*
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CONF_H
# define OPENSSL_CONF_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_CONF_H
# endif
# include <openssl/bio.h>
# include <openssl/lhash.h>
# include <openssl/safestack.h>
# include <openssl/e_os2.h>
# include <openssl/types.h>
# include <openssl/conferr.h>
# ifndef OPENSSL_NO_STDIO
# include <stdio.h>
# endif
#ifdef __cplusplus
extern "C" {
#endif
typedef struct {
char *section;
char *name;
char *value;
} CONF_VALUE;
SKM_DEFINE_STACK_OF_INTERNAL(CONF_VALUE, CONF_VALUE, CONF_VALUE)
#define sk_CONF_VALUE_num(sk) OPENSSL_sk_num(ossl_check_const_CONF_VALUE_sk_type(sk))
#define sk_CONF_VALUE_value(sk, idx) ((CONF_VALUE *)OPENSSL_sk_value(ossl_check_const_CONF_VALUE_sk_type(sk), (idx)))
#define sk_CONF_VALUE_new(cmp) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new(ossl_check_CONF_VALUE_compfunc_type(cmp)))
#define sk_CONF_VALUE_new_null() ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_null())
#define sk_CONF_VALUE_new_reserve(cmp, n) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_new_reserve(ossl_check_CONF_VALUE_compfunc_type(cmp), (n)))
#define sk_CONF_VALUE_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_CONF_VALUE_sk_type(sk), (n))
#define sk_CONF_VALUE_free(sk) OPENSSL_sk_free(ossl_check_CONF_VALUE_sk_type(sk))
#define sk_CONF_VALUE_zero(sk) OPENSSL_sk_zero(ossl_check_CONF_VALUE_sk_type(sk))
#define sk_CONF_VALUE_delete(sk, i) ((CONF_VALUE *)OPENSSL_sk_delete(ossl_check_CONF_VALUE_sk_type(sk), (i)))
#define sk_CONF_VALUE_delete_ptr(sk, ptr) ((CONF_VALUE *)OPENSSL_sk_delete_ptr(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr)))
#define sk_CONF_VALUE_push(sk, ptr) OPENSSL_sk_push(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))
#define sk_CONF_VALUE_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))
#define sk_CONF_VALUE_pop(sk) ((CONF_VALUE *)OPENSSL_sk_pop(ossl_check_CONF_VALUE_sk_type(sk)))
#define sk_CONF_VALUE_shift(sk) ((CONF_VALUE *)OPENSSL_sk_shift(ossl_check_CONF_VALUE_sk_type(sk)))
#define sk_CONF_VALUE_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_CONF_VALUE_sk_type(sk),ossl_check_CONF_VALUE_freefunc_type(freefunc))
#define sk_CONF_VALUE_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), (idx))
#define sk_CONF_VALUE_set(sk, idx, ptr) ((CONF_VALUE *)OPENSSL_sk_set(ossl_check_CONF_VALUE_sk_type(sk), (idx), ossl_check_CONF_VALUE_type(ptr)))
#define sk_CONF_VALUE_find(sk, ptr) OPENSSL_sk_find(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))
#define sk_CONF_VALUE_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr))
#define sk_CONF_VALUE_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_type(ptr), pnum)
#define sk_CONF_VALUE_sort(sk) OPENSSL_sk_sort(ossl_check_CONF_VALUE_sk_type(sk))
#define sk_CONF_VALUE_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_CONF_VALUE_sk_type(sk))
#define sk_CONF_VALUE_dup(sk) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_dup(ossl_check_const_CONF_VALUE_sk_type(sk)))
#define sk_CONF_VALUE_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(CONF_VALUE) *)OPENSSL_sk_deep_copy(ossl_check_const_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_copyfunc_type(copyfunc), ossl_check_CONF_VALUE_freefunc_type(freefunc)))
#define sk_CONF_VALUE_set_cmp_func(sk, cmp) ((sk_CONF_VALUE_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_CONF_VALUE_sk_type(sk), ossl_check_CONF_VALUE_compfunc_type(cmp)))
DEFINE_LHASH_OF_INTERNAL(CONF_VALUE);
#define lh_CONF_VALUE_new(hfn, cmp) ((LHASH_OF(CONF_VALUE) *)OPENSSL_LH_new(ossl_check_CONF_VALUE_lh_hashfunc_type(hfn), ossl_check_CONF_VALUE_lh_compfunc_type(cmp)))
#define lh_CONF_VALUE_free(lh) OPENSSL_LH_free(ossl_check_CONF_VALUE_lh_type(lh))
#define lh_CONF_VALUE_flush(lh) OPENSSL_LH_flush(ossl_check_CONF_VALUE_lh_type(lh))
#define lh_CONF_VALUE_insert(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_insert(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_plain_type(ptr)))
#define lh_CONF_VALUE_delete(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_delete(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr)))
#define lh_CONF_VALUE_retrieve(lh, ptr) ((CONF_VALUE *)OPENSSL_LH_retrieve(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_const_CONF_VALUE_lh_plain_type(ptr)))
#define lh_CONF_VALUE_error(lh) OPENSSL_LH_error(ossl_check_CONF_VALUE_lh_type(lh))
#define lh_CONF_VALUE_num_items(lh) OPENSSL_LH_num_items(ossl_check_CONF_VALUE_lh_type(lh))
#define lh_CONF_VALUE_node_stats_bio(lh, out) OPENSSL_LH_node_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out)
#define lh_CONF_VALUE_node_usage_stats_bio(lh, out) OPENSSL_LH_node_usage_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out)
#define lh_CONF_VALUE_stats_bio(lh, out) OPENSSL_LH_stats_bio(ossl_check_const_CONF_VALUE_lh_type(lh), out)
#define lh_CONF_VALUE_get_down_load(lh) OPENSSL_LH_get_down_load(ossl_check_CONF_VALUE_lh_type(lh))
#define lh_CONF_VALUE_set_down_load(lh, dl) OPENSSL_LH_set_down_load(ossl_check_CONF_VALUE_lh_type(lh), dl)
#define lh_CONF_VALUE_doall(lh, dfn) OPENSSL_LH_doall(ossl_check_CONF_VALUE_lh_type(lh), ossl_check_CONF_VALUE_lh_doallfunc_type(dfn))
struct conf_st;
struct conf_method_st;
typedef struct conf_method_st CONF_METHOD;
# ifndef OPENSSL_NO_DEPRECATED_3_0
# include <openssl/conftypes.h>
# endif
/* Module definitions */
typedef struct conf_imodule_st CONF_IMODULE;
typedef struct conf_module_st CONF_MODULE;
STACK_OF(CONF_MODULE);
STACK_OF(CONF_IMODULE);
/* DSO module function typedefs */
typedef int conf_init_func (CONF_IMODULE *md, const CONF *cnf);
typedef void conf_finish_func (CONF_IMODULE *md);
# define CONF_MFLAGS_IGNORE_ERRORS 0x1
# define CONF_MFLAGS_IGNORE_RETURN_CODES 0x2
# define CONF_MFLAGS_SILENT 0x4
# define CONF_MFLAGS_NO_DSO 0x8
# define CONF_MFLAGS_IGNORE_MISSING_FILE 0x10
# define CONF_MFLAGS_DEFAULT_SECTION 0x20
int CONF_set_default_method(CONF_METHOD *meth);
void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash);
LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file,
long *eline);
# ifndef OPENSSL_NO_STDIO
LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp,
long *eline);
# endif
LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp,
long *eline);
STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf,
const char *section);
char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf, const char *group,
const char *name);
long CONF_get_number(LHASH_OF(CONF_VALUE) *conf, const char *group,
const char *name);
void CONF_free(LHASH_OF(CONF_VALUE) *conf);
#ifndef OPENSSL_NO_STDIO
int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out);
#endif
int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out);
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
OSSL_DEPRECATEDIN_1_1_0 void OPENSSL_config(const char *config_name);
#endif
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
# define OPENSSL_no_config() \
OPENSSL_init_crypto(OPENSSL_INIT_NO_LOAD_CONFIG, NULL)
#endif
/*
* New conf code. The semantics are different from the functions above. If
* that wasn't the case, the above functions would have been replaced
*/
CONF *NCONF_new_ex(OSSL_LIB_CTX *libctx, CONF_METHOD *meth);
OSSL_LIB_CTX *NCONF_get0_libctx(const CONF *conf);
CONF *NCONF_new(CONF_METHOD *meth);
CONF_METHOD *NCONF_default(void);
#ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 CONF_METHOD *NCONF_WIN32(void);
#endif
void NCONF_free(CONF *conf);
void NCONF_free_data(CONF *conf);
int NCONF_load(CONF *conf, const char *file, long *eline);
# ifndef OPENSSL_NO_STDIO
int NCONF_load_fp(CONF *conf, FILE *fp, long *eline);
# endif
int NCONF_load_bio(CONF *conf, BIO *bp, long *eline);
STACK_OF(OPENSSL_CSTRING) *NCONF_get_section_names(const CONF *conf);
STACK_OF(CONF_VALUE) *NCONF_get_section(const CONF *conf,
const char *section);
char *NCONF_get_string(const CONF *conf, const char *group, const char *name);
int NCONF_get_number_e(const CONF *conf, const char *group, const char *name,
long *result);
#ifndef OPENSSL_NO_STDIO
int NCONF_dump_fp(const CONF *conf, FILE *out);
#endif
int NCONF_dump_bio(const CONF *conf, BIO *out);
#define NCONF_get_number(c,g,n,r) NCONF_get_number_e(c,g,n,r)
/* Module functions */
int CONF_modules_load(const CONF *cnf, const char *appname,
unsigned long flags);
int CONF_modules_load_file_ex(OSSL_LIB_CTX *libctx, const char *filename,
const char *appname, unsigned long flags);
int CONF_modules_load_file(const char *filename, const char *appname,
unsigned long flags);
void CONF_modules_unload(int all);
void CONF_modules_finish(void);
#ifndef OPENSSL_NO_DEPRECATED_1_1_0
# define CONF_modules_free() while(0) continue
#endif
int CONF_module_add(const char *name, conf_init_func *ifunc,
conf_finish_func *ffunc);
const char *CONF_imodule_get_name(const CONF_IMODULE *md);
const char *CONF_imodule_get_value(const CONF_IMODULE *md);
void *CONF_imodule_get_usr_data(const CONF_IMODULE *md);
void CONF_imodule_set_usr_data(CONF_IMODULE *md, void *usr_data);
CONF_MODULE *CONF_imodule_get_module(const CONF_IMODULE *md);
unsigned long CONF_imodule_get_flags(const CONF_IMODULE *md);
void CONF_imodule_set_flags(CONF_IMODULE *md, unsigned long flags);
void *CONF_module_get_usr_data(CONF_MODULE *pmod);
void CONF_module_set_usr_data(CONF_MODULE *pmod, void *usr_data);
char *CONF_get1_default_config_file(void);
int CONF_parse_list(const char *list, int sep, int nospc,
int (*list_cb) (const char *elem, int len, void *usr),
void *arg);
void OPENSSL_load_builtin_modules(void);
# ifdef __cplusplus
}
# endif
#endif

View File

@@ -0,0 +1,46 @@
/*
* Copyright 1995-2016 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CONF_API_H
# define OPENSSL_CONF_API_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_CONF_API_H
# endif
# include <openssl/lhash.h>
# include <openssl/conf.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Up until OpenSSL 0.9.5a, this was new_section */
CONF_VALUE *_CONF_new_section(CONF *conf, const char *section);
/* Up until OpenSSL 0.9.5a, this was get_section */
CONF_VALUE *_CONF_get_section(const CONF *conf, const char *section);
/* Up until OpenSSL 0.9.5a, this was CONF_get_section */
STACK_OF(CONF_VALUE) *_CONF_get_section_values(const CONF *conf,
const char *section);
int _CONF_add_string(CONF *conf, CONF_VALUE *section, CONF_VALUE *value);
char *_CONF_get_string(const CONF *conf, const char *section,
const char *name);
long _CONF_get_number(const CONF *conf, const char *section,
const char *name);
int _CONF_new_data(CONF *conf);
void _CONF_free_data(CONF *conf);
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,51 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CONFERR_H
# define OPENSSL_CONFERR_H
# pragma once
# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>
/*
* CONF reason codes.
*/
# define CONF_R_ERROR_LOADING_DSO 110
# define CONF_R_INVALID_PRAGMA 122
# define CONF_R_LIST_CANNOT_BE_NULL 115
# define CONF_R_MANDATORY_BRACES_IN_VARIABLE_EXPANSION 123
# define CONF_R_MISSING_CLOSE_SQUARE_BRACKET 100
# define CONF_R_MISSING_EQUAL_SIGN 101
# define CONF_R_MISSING_INIT_FUNCTION 112
# define CONF_R_MODULE_INITIALIZATION_ERROR 109
# define CONF_R_NO_CLOSE_BRACE 102
# define CONF_R_NO_CONF 105
# define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE 106
# define CONF_R_NO_SECTION 107
# define CONF_R_NO_SUCH_FILE 114
# define CONF_R_NO_VALUE 108
# define CONF_R_NUMBER_TOO_LARGE 121
# define CONF_R_OPENSSL_CONF_REFERENCES_MISSING_SECTION 124
# define CONF_R_RECURSIVE_DIRECTORY_INCLUDE 111
# define CONF_R_RELATIVE_PATH 125
# define CONF_R_SSL_COMMAND_SECTION_EMPTY 117
# define CONF_R_SSL_COMMAND_SECTION_NOT_FOUND 118
# define CONF_R_SSL_SECTION_EMPTY 119
# define CONF_R_SSL_SECTION_NOT_FOUND 120
# define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 103
# define CONF_R_UNKNOWN_MODULE_NAME 113
# define CONF_R_VARIABLE_EXPANSION_TOO_LONG 116
# define CONF_R_VARIABLE_HAS_NO_VALUE 104
#endif

View File

@@ -0,0 +1,161 @@
/*
* WARNING: do not edit!
* Generated by configdata.pm from Configurations/common0.tmpl, Configurations/unix-Makefile.tmpl
* via Makefile.in
*
* Copyright 2016-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CONFIGURATION_H
# define OPENSSL_CONFIGURATION_H
# pragma once
# ifdef __cplusplus
extern "C" {
# endif
# ifdef OPENSSL_ALGORITHM_DEFINES
# error OPENSSL_ALGORITHM_DEFINES no longer supported
# endif
/*
* OpenSSL was configured with the following options:
*/
# define OPENSSL_CONFIGURED_API 30200
# ifndef OPENSSL_RAND_SEED_OS
# define OPENSSL_RAND_SEED_OS
# endif
# ifndef OPENSSL_THREADS
# define OPENSSL_THREADS
# endif
# ifndef OPENSSL_NO_ACVP_TESTS
# define OPENSSL_NO_ACVP_TESTS
# endif
# ifndef OPENSSL_NO_ASAN
# define OPENSSL_NO_ASAN
# endif
# ifndef OPENSSL_NO_BROTLI
# define OPENSSL_NO_BROTLI
# endif
# ifndef OPENSSL_NO_BROTLI_DYNAMIC
# define OPENSSL_NO_BROTLI_DYNAMIC
# endif
# ifndef OPENSSL_NO_CRYPTO_MDEBUG
# define OPENSSL_NO_CRYPTO_MDEBUG
# endif
# ifndef OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
# define OPENSSL_NO_CRYPTO_MDEBUG_BACKTRACE
# endif
# ifndef OPENSSL_NO_DEVCRYPTOENG
# define OPENSSL_NO_DEVCRYPTOENG
# endif
# ifndef OPENSSL_NO_EC_NISTP_64_GCC_128
# define OPENSSL_NO_EC_NISTP_64_GCC_128
# endif
# ifndef OPENSSL_NO_EGD
# define OPENSSL_NO_EGD
# endif
# ifndef OPENSSL_NO_EXTERNAL_TESTS
# define OPENSSL_NO_EXTERNAL_TESTS
# endif
# ifndef OPENSSL_NO_FIPS_SECURITYCHECKS
# define OPENSSL_NO_FIPS_SECURITYCHECKS
# endif
# ifndef OPENSSL_NO_FUZZ_AFL
# define OPENSSL_NO_FUZZ_AFL
# endif
# ifndef OPENSSL_NO_FUZZ_LIBFUZZER
# define OPENSSL_NO_FUZZ_LIBFUZZER
# endif
# ifndef OPENSSL_NO_KTLS
# define OPENSSL_NO_KTLS
# endif
# ifndef OPENSSL_NO_MD2
# define OPENSSL_NO_MD2
# endif
# ifndef OPENSSL_NO_MSAN
# define OPENSSL_NO_MSAN
# endif
# ifndef OPENSSL_NO_RC5
# define OPENSSL_NO_RC5
# endif
# ifndef OPENSSL_NO_SCTP
# define OPENSSL_NO_SCTP
# endif
# ifndef OPENSSL_NO_SSL3
# define OPENSSL_NO_SSL3
# endif
# ifndef OPENSSL_NO_SSL3_METHOD
# define OPENSSL_NO_SSL3_METHOD
# endif
# ifndef OPENSSL_NO_TFO
# define OPENSSL_NO_TFO
# endif
# ifndef OPENSSL_NO_TRACE
# define OPENSSL_NO_TRACE
# endif
# ifndef OPENSSL_NO_UBSAN
# define OPENSSL_NO_UBSAN
# endif
# ifndef OPENSSL_NO_UNIT_TEST
# define OPENSSL_NO_UNIT_TEST
# endif
# ifndef OPENSSL_NO_UPLINK
# define OPENSSL_NO_UPLINK
# endif
# ifndef OPENSSL_NO_WEAK_SSL_CIPHERS
# define OPENSSL_NO_WEAK_SSL_CIPHERS
# endif
# ifndef OPENSSL_NO_WINSTORE
# define OPENSSL_NO_WINSTORE
# endif
# ifndef OPENSSL_NO_ZLIB
# define OPENSSL_NO_ZLIB
# endif
# ifndef OPENSSL_NO_ZLIB_DYNAMIC
# define OPENSSL_NO_ZLIB_DYNAMIC
# endif
# ifndef OPENSSL_NO_ZSTD
# define OPENSSL_NO_ZSTD
# endif
# ifndef OPENSSL_NO_ZSTD_DYNAMIC
# define OPENSSL_NO_ZSTD_DYNAMIC
# endif
# ifndef OPENSSL_NO_STATIC_ENGINE
# define OPENSSL_NO_STATIC_ENGINE
# endif
/* Generate 80386 code? */
# undef I386_ONLY
/*
* The following are cipher-specific, but are part of the public API.
*/
# if !defined(OPENSSL_SYS_UEFI)
# undef BN_LLONG
/* Only one for the following should be defined */
# define SIXTY_FOUR_BIT_LONG
# undef SIXTY_FOUR_BIT
# undef THIRTY_TWO_BIT
# endif
# define RC4_INT unsigned char
# if defined(OPENSSL_NO_COMP) || (defined(OPENSSL_NO_BROTLI) && defined(OPENSSL_NO_ZSTD) && defined(OPENSSL_NO_ZLIB))
# define OPENSSL_NO_COMP_ALG
# else
# undef OPENSSL_NO_COMP_ALG
# endif
# ifdef __cplusplus
}
# endif
#endif /* OPENSSL_CONFIGURATION_H */

View File

@@ -0,0 +1,44 @@
/*
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CONFTYPES_H
# define OPENSSL_CONFTYPES_H
# pragma once
#ifndef OPENSSL_CONF_H
# include <openssl/conf.h>
#endif
/*
* The contents of this file are deprecated and will be made opaque
*/
struct conf_method_st {
const char *name;
CONF *(*create) (CONF_METHOD *meth);
int (*init) (CONF *conf);
int (*destroy) (CONF *conf);
int (*destroy_data) (CONF *conf);
int (*load_bio) (CONF *conf, BIO *bp, long *eline);
int (*dump) (const CONF *conf, BIO *bp);
int (*is_number) (const CONF *conf, char c);
int (*to_int) (const CONF *conf, char c);
int (*load) (CONF *conf, const char *name, long *eline);
};
struct conf_st {
CONF_METHOD *meth;
void *meth_data;
LHASH_OF(CONF_VALUE) *data;
int flag_dollarid;
int flag_abspath;
char *includedir;
OSSL_LIB_CTX *libctx;
};
#endif

View File

@@ -0,0 +1,236 @@
/*
* Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CORE_H
# define OPENSSL_CORE_H
# pragma once
# include <stddef.h>
# include <openssl/types.h>
# ifdef __cplusplus
extern "C" {
# endif
/*-
* Base types
* ----------
*
* These are the types that the OpenSSL core and providers have in common
* to communicate data between them.
*/
/* Opaque handles to be used with core upcall functions from providers */
typedef struct ossl_core_handle_st OSSL_CORE_HANDLE;
typedef struct openssl_core_ctx_st OPENSSL_CORE_CTX;
typedef struct ossl_core_bio_st OSSL_CORE_BIO;
/*
* Dispatch table element. function_id numbers and the functions are defined
* in core_dispatch.h, see macros with 'OSSL_CORE_MAKE_FUNC' in their names.
*
* An array of these is always terminated by function_id == 0
*/
struct ossl_dispatch_st {
int function_id;
void (*function)(void);
};
# define OSSL_DISPATCH_END \
{ 0, NULL }
/*
* Other items, essentially an int<->pointer map element.
*
* We make this type distinct from OSSL_DISPATCH to ensure that dispatch
* tables remain tables with function pointers only.
*
* This is used whenever we need to pass things like a table of error reason
* codes <-> reason string maps, ...
*
* Usage determines which field works as key if any, rather than field order.
*
* An array of these is always terminated by id == 0 && ptr == NULL
*/
struct ossl_item_st {
unsigned int id;
void *ptr;
};
/*
* Type to tie together algorithm names, property definition string and
* the algorithm implementation in the form of a dispatch table.
*
* An array of these is always terminated by algorithm_names == NULL
*/
struct ossl_algorithm_st {
const char *algorithm_names; /* key */
const char *property_definition; /* key */
const OSSL_DISPATCH *implementation;
const char *algorithm_description;
};
/*
* Type to pass object data in a uniform way, without exposing the object
* structure.
*
* An array of these is always terminated by key == NULL
*/
struct ossl_param_st {
const char *key; /* the name of the parameter */
unsigned int data_type; /* declare what kind of content is in buffer */
void *data; /* value being passed in or out */
size_t data_size; /* data size */
size_t return_size; /* returned content size */
};
/* Currently supported OSSL_PARAM data types */
/*
* OSSL_PARAM_INTEGER and OSSL_PARAM_UNSIGNED_INTEGER
* are arbitrary length and therefore require an arbitrarily sized buffer,
* since they may be used to pass numbers larger than what is natively
* available.
*
* The number must be buffered in native form, i.e. MSB first on B_ENDIAN
* systems and LSB first on L_ENDIAN systems. This means that arbitrary
* native integers can be stored in the buffer, just make sure that the
* buffer size is correct and the buffer itself is properly aligned (for
* example by having the buffer field point at a C integer).
*/
# define OSSL_PARAM_INTEGER 1
# define OSSL_PARAM_UNSIGNED_INTEGER 2
/*-
* OSSL_PARAM_REAL
* is a C binary floating point values in native form and alignment.
*/
# define OSSL_PARAM_REAL 3
/*-
* OSSL_PARAM_UTF8_STRING
* is a printable string. It is expected to be printed as it is.
*/
# define OSSL_PARAM_UTF8_STRING 4
/*-
* OSSL_PARAM_OCTET_STRING
* is a string of bytes with no further specification. It is expected to be
* printed as a hexdump.
*/
# define OSSL_PARAM_OCTET_STRING 5
/*-
* OSSL_PARAM_UTF8_PTR
* is a pointer to a printable string. It is expected to be printed as it is.
*
* The difference between this and OSSL_PARAM_UTF8_STRING is that only pointers
* are manipulated for this type.
*
* This is more relevant for parameter requests, where the responding
* function doesn't need to copy the data to the provided buffer, but
* sets the provided buffer to point at the actual data instead.
*
* WARNING! Using these is FRAGILE, as it assumes that the actual
* data and its location are constant.
*
* EXTRA WARNING! If you are not completely sure you most likely want
* to use the OSSL_PARAM_UTF8_STRING type.
*/
# define OSSL_PARAM_UTF8_PTR 6
/*-
* OSSL_PARAM_OCTET_PTR
* is a pointer to a string of bytes with no further specification. It is
* expected to be printed as a hexdump.
*
* The difference between this and OSSL_PARAM_OCTET_STRING is that only pointers
* are manipulated for this type.
*
* This is more relevant for parameter requests, where the responding
* function doesn't need to copy the data to the provided buffer, but
* sets the provided buffer to point at the actual data instead.
*
* WARNING! Using these is FRAGILE, as it assumes that the actual
* data and its location are constant.
*
* EXTRA WARNING! If you are not completely sure you most likely want
* to use the OSSL_PARAM_OCTET_STRING type.
*/
# define OSSL_PARAM_OCTET_PTR 7
/*
* Typedef for the thread stop handling callback. Used both internally and by
* providers.
*
* Providers may register for notifications about threads stopping by
* registering a callback to hear about such events. Providers register the
* callback using the OSSL_FUNC_CORE_THREAD_START function in the |in| dispatch
* table passed to OSSL_provider_init(). The arg passed back to a provider will
* be the provider side context object.
*/
typedef void (*OSSL_thread_stop_handler_fn)(void *arg);
/*-
* Provider entry point
* --------------------
*
* This function is expected to be present in any dynamically loadable
* provider module. By definition, if this function doesn't exist in a
* module, that module is not an OpenSSL provider module.
*/
/*-
* |handle| pointer to opaque type OSSL_CORE_HANDLE. This can be used
* together with some functions passed via |in| to query data.
* |in| is the array of functions that the Core passes to the provider.
* |out| will be the array of base functions that the provider passes
* back to the Core.
* |provctx| a provider side context object, optionally created if the
* provider needs it. This value is passed to other provider
* functions, notably other context constructors.
*/
typedef int (OSSL_provider_init_fn)(const OSSL_CORE_HANDLE *handle,
const OSSL_DISPATCH *in,
const OSSL_DISPATCH **out,
void **provctx);
# ifdef __VMS
# pragma names save
# pragma names uppercase,truncated
# endif
OPENSSL_EXPORT OSSL_provider_init_fn OSSL_provider_init;
# ifdef __VMS
# pragma names restore
# endif
/*
* Generic callback function signature.
*
* The expectation is that any provider function that wants to offer
* a callback / hook can do so by taking an argument with this type,
* as well as a pointer to caller-specific data. When calling the
* callback, the provider function can populate an OSSL_PARAM array
* with data of its choice and pass that in the callback call, along
* with the caller data argument.
*
* libcrypto may use the OSSL_PARAM array to create arguments for an
* application callback it knows about.
*/
typedef int (OSSL_CALLBACK)(const OSSL_PARAM params[], void *arg);
typedef int (OSSL_INOUT_CALLBACK)(const OSSL_PARAM in_params[],
OSSL_PARAM out_params[], void *arg);
/*
* Passphrase callback function signature
*
* This is similar to the generic callback function above, but adds a
* result parameter.
*/
typedef int (OSSL_PASSPHRASE_CALLBACK)(char *pass, size_t pass_size,
size_t *pass_len,
const OSSL_PARAM params[], void *arg);
# ifdef __cplusplus
}
# endif
#endif

View File

@@ -0,0 +1,984 @@
/*
* Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CORE_NUMBERS_H
# define OPENSSL_CORE_NUMBERS_H
# pragma once
# include <stdarg.h>
# include <openssl/core.h>
# ifdef __cplusplus
extern "C" {
# endif
/*-
* Identities
* ----------
*
* All series start with 1, to allow 0 to be an array terminator.
* For any FUNC identity, we also provide a function signature typedef
* and a static inline function to extract a function pointer from a
* OSSL_DISPATCH element in a type safe manner.
*
* Names:
* for any function base name 'foo' (uppercase form 'FOO'), we will have
* the following:
* - a macro for the identity with the name OSSL_FUNC_'FOO' or derivatives
* thereof (to be specified further down)
* - a function signature typedef with the name OSSL_FUNC_'foo'_fn
* - a function pointer extractor function with the name OSSL_FUNC_'foo'
*/
/*
* Helper macro to create the function signature typedef and the extractor
* |type| is the return-type of the function, |name| is the name of the
* function to fetch, and |args| is a parenthesized list of parameters
* for the function (that is, it is |name|'s function signature).
* Note: This is considered a "reserved" internal macro. Applications should
* not use this or assume its existence.
*/
#define OSSL_CORE_MAKE_FUNC(type,name,args) \
typedef type (OSSL_FUNC_##name##_fn)args; \
static ossl_unused ossl_inline \
OSSL_FUNC_##name##_fn *OSSL_FUNC_##name(const OSSL_DISPATCH *opf) \
{ \
return (OSSL_FUNC_##name##_fn *)opf->function; \
}
/*
* Core function identities, for the two OSSL_DISPATCH tables being passed
* in the OSSL_provider_init call.
*
* 0 serves as a marker for the end of the OSSL_DISPATCH array, and must
* therefore NEVER be used as a function identity.
*/
/* Functions provided by the Core to the provider, reserved numbers 1-1023 */
# define OSSL_FUNC_CORE_GETTABLE_PARAMS 1
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,
core_gettable_params,(const OSSL_CORE_HANDLE *prov))
# define OSSL_FUNC_CORE_GET_PARAMS 2
OSSL_CORE_MAKE_FUNC(int,core_get_params,(const OSSL_CORE_HANDLE *prov,
OSSL_PARAM params[]))
# define OSSL_FUNC_CORE_THREAD_START 3
OSSL_CORE_MAKE_FUNC(int,core_thread_start,(const OSSL_CORE_HANDLE *prov,
OSSL_thread_stop_handler_fn handfn,
void *arg))
# define OSSL_FUNC_CORE_GET_LIBCTX 4
OSSL_CORE_MAKE_FUNC(OPENSSL_CORE_CTX *,core_get_libctx,
(const OSSL_CORE_HANDLE *prov))
# define OSSL_FUNC_CORE_NEW_ERROR 5
OSSL_CORE_MAKE_FUNC(void,core_new_error,(const OSSL_CORE_HANDLE *prov))
# define OSSL_FUNC_CORE_SET_ERROR_DEBUG 6
OSSL_CORE_MAKE_FUNC(void,core_set_error_debug,
(const OSSL_CORE_HANDLE *prov,
const char *file, int line, const char *func))
# define OSSL_FUNC_CORE_VSET_ERROR 7
OSSL_CORE_MAKE_FUNC(void,core_vset_error,
(const OSSL_CORE_HANDLE *prov,
uint32_t reason, const char *fmt, va_list args))
# define OSSL_FUNC_CORE_SET_ERROR_MARK 8
OSSL_CORE_MAKE_FUNC(int, core_set_error_mark, (const OSSL_CORE_HANDLE *prov))
# define OSSL_FUNC_CORE_CLEAR_LAST_ERROR_MARK 9
OSSL_CORE_MAKE_FUNC(int, core_clear_last_error_mark,
(const OSSL_CORE_HANDLE *prov))
# define OSSL_FUNC_CORE_POP_ERROR_TO_MARK 10
OSSL_CORE_MAKE_FUNC(int, core_pop_error_to_mark, (const OSSL_CORE_HANDLE *prov))
/* Functions to access the OBJ database */
#define OSSL_FUNC_CORE_OBJ_ADD_SIGID 11
#define OSSL_FUNC_CORE_OBJ_CREATE 12
OSSL_CORE_MAKE_FUNC(int, core_obj_add_sigid,
(const OSSL_CORE_HANDLE *prov, const char *sign_name,
const char *digest_name, const char *pkey_name))
OSSL_CORE_MAKE_FUNC(int, core_obj_create,
(const OSSL_CORE_HANDLE *prov, const char *oid,
const char *sn, const char *ln))
/* Memory allocation, freeing, clearing. */
#define OSSL_FUNC_CRYPTO_MALLOC 20
OSSL_CORE_MAKE_FUNC(void *,
CRYPTO_malloc, (size_t num, const char *file, int line))
#define OSSL_FUNC_CRYPTO_ZALLOC 21
OSSL_CORE_MAKE_FUNC(void *,
CRYPTO_zalloc, (size_t num, const char *file, int line))
#define OSSL_FUNC_CRYPTO_FREE 22
OSSL_CORE_MAKE_FUNC(void,
CRYPTO_free, (void *ptr, const char *file, int line))
#define OSSL_FUNC_CRYPTO_CLEAR_FREE 23
OSSL_CORE_MAKE_FUNC(void,
CRYPTO_clear_free, (void *ptr, size_t num, const char *file, int line))
#define OSSL_FUNC_CRYPTO_REALLOC 24
OSSL_CORE_MAKE_FUNC(void *,
CRYPTO_realloc, (void *addr, size_t num, const char *file, int line))
#define OSSL_FUNC_CRYPTO_CLEAR_REALLOC 25
OSSL_CORE_MAKE_FUNC(void *,
CRYPTO_clear_realloc, (void *addr, size_t old_num, size_t num,
const char *file, int line))
#define OSSL_FUNC_CRYPTO_SECURE_MALLOC 26
OSSL_CORE_MAKE_FUNC(void *,
CRYPTO_secure_malloc, (size_t num, const char *file, int line))
#define OSSL_FUNC_CRYPTO_SECURE_ZALLOC 27
OSSL_CORE_MAKE_FUNC(void *,
CRYPTO_secure_zalloc, (size_t num, const char *file, int line))
#define OSSL_FUNC_CRYPTO_SECURE_FREE 28
OSSL_CORE_MAKE_FUNC(void,
CRYPTO_secure_free, (void *ptr, const char *file, int line))
#define OSSL_FUNC_CRYPTO_SECURE_CLEAR_FREE 29
OSSL_CORE_MAKE_FUNC(void,
CRYPTO_secure_clear_free, (void *ptr, size_t num, const char *file,
int line))
#define OSSL_FUNC_CRYPTO_SECURE_ALLOCATED 30
OSSL_CORE_MAKE_FUNC(int,
CRYPTO_secure_allocated, (const void *ptr))
#define OSSL_FUNC_OPENSSL_CLEANSE 31
OSSL_CORE_MAKE_FUNC(void,
OPENSSL_cleanse, (void *ptr, size_t len))
/* Bio functions provided by the core */
#define OSSL_FUNC_BIO_NEW_FILE 40
#define OSSL_FUNC_BIO_NEW_MEMBUF 41
#define OSSL_FUNC_BIO_READ_EX 42
#define OSSL_FUNC_BIO_WRITE_EX 43
#define OSSL_FUNC_BIO_UP_REF 44
#define OSSL_FUNC_BIO_FREE 45
#define OSSL_FUNC_BIO_VPRINTF 46
#define OSSL_FUNC_BIO_VSNPRINTF 47
#define OSSL_FUNC_BIO_PUTS 48
#define OSSL_FUNC_BIO_GETS 49
#define OSSL_FUNC_BIO_CTRL 50
OSSL_CORE_MAKE_FUNC(OSSL_CORE_BIO *, BIO_new_file, (const char *filename,
const char *mode))
OSSL_CORE_MAKE_FUNC(OSSL_CORE_BIO *, BIO_new_membuf, (const void *buf, int len))
OSSL_CORE_MAKE_FUNC(int, BIO_read_ex, (OSSL_CORE_BIO *bio, void *data,
size_t data_len, size_t *bytes_read))
OSSL_CORE_MAKE_FUNC(int, BIO_write_ex, (OSSL_CORE_BIO *bio, const void *data,
size_t data_len, size_t *written))
OSSL_CORE_MAKE_FUNC(int, BIO_gets, (OSSL_CORE_BIO *bio, char *buf, int size))
OSSL_CORE_MAKE_FUNC(int, BIO_puts, (OSSL_CORE_BIO *bio, const char *str))
OSSL_CORE_MAKE_FUNC(int, BIO_up_ref, (OSSL_CORE_BIO *bio))
OSSL_CORE_MAKE_FUNC(int, BIO_free, (OSSL_CORE_BIO *bio))
OSSL_CORE_MAKE_FUNC(int, BIO_vprintf, (OSSL_CORE_BIO *bio, const char *format,
va_list args))
OSSL_CORE_MAKE_FUNC(int, BIO_vsnprintf,
(char *buf, size_t n, const char *fmt, va_list args))
OSSL_CORE_MAKE_FUNC(int, BIO_ctrl, (OSSL_CORE_BIO *bio,
int cmd, long num, void *ptr))
/* New seeding functions prototypes with the 101-104 series */
#define OSSL_FUNC_CLEANUP_USER_ENTROPY 96
#define OSSL_FUNC_CLEANUP_USER_NONCE 97
#define OSSL_FUNC_GET_USER_ENTROPY 98
#define OSSL_FUNC_GET_USER_NONCE 99
#define OSSL_FUNC_SELF_TEST_CB 100
OSSL_CORE_MAKE_FUNC(void, self_test_cb, (OPENSSL_CORE_CTX *ctx, OSSL_CALLBACK **cb,
void **cbarg))
/* Functions to get seed material from the operating system */
#define OSSL_FUNC_GET_ENTROPY 101
#define OSSL_FUNC_CLEANUP_ENTROPY 102
#define OSSL_FUNC_GET_NONCE 103
#define OSSL_FUNC_CLEANUP_NONCE 104
OSSL_CORE_MAKE_FUNC(size_t, get_entropy, (const OSSL_CORE_HANDLE *handle,
unsigned char **pout, int entropy,
size_t min_len, size_t max_len))
OSSL_CORE_MAKE_FUNC(size_t, get_user_entropy, (const OSSL_CORE_HANDLE *handle,
unsigned char **pout, int entropy,
size_t min_len, size_t max_len))
OSSL_CORE_MAKE_FUNC(void, cleanup_entropy, (const OSSL_CORE_HANDLE *handle,
unsigned char *buf, size_t len))
OSSL_CORE_MAKE_FUNC(void, cleanup_user_entropy, (const OSSL_CORE_HANDLE *handle,
unsigned char *buf, size_t len))
OSSL_CORE_MAKE_FUNC(size_t, get_nonce, (const OSSL_CORE_HANDLE *handle,
unsigned char **pout, size_t min_len,
size_t max_len, const void *salt,
size_t salt_len))
OSSL_CORE_MAKE_FUNC(size_t, get_user_nonce, (const OSSL_CORE_HANDLE *handle,
unsigned char **pout, size_t min_len,
size_t max_len, const void *salt,
size_t salt_len))
OSSL_CORE_MAKE_FUNC(void, cleanup_nonce, (const OSSL_CORE_HANDLE *handle,
unsigned char *buf, size_t len))
OSSL_CORE_MAKE_FUNC(void, cleanup_user_nonce, (const OSSL_CORE_HANDLE *handle,
unsigned char *buf, size_t len))
/* Functions to access the core's providers */
#define OSSL_FUNC_PROVIDER_REGISTER_CHILD_CB 105
#define OSSL_FUNC_PROVIDER_DEREGISTER_CHILD_CB 106
#define OSSL_FUNC_PROVIDER_NAME 107
#define OSSL_FUNC_PROVIDER_GET0_PROVIDER_CTX 108
#define OSSL_FUNC_PROVIDER_GET0_DISPATCH 109
#define OSSL_FUNC_PROVIDER_UP_REF 110
#define OSSL_FUNC_PROVIDER_FREE 111
OSSL_CORE_MAKE_FUNC(int, provider_register_child_cb,
(const OSSL_CORE_HANDLE *handle,
int (*create_cb)(const OSSL_CORE_HANDLE *provider, void *cbdata),
int (*remove_cb)(const OSSL_CORE_HANDLE *provider, void *cbdata),
int (*global_props_cb)(const char *props, void *cbdata),
void *cbdata))
OSSL_CORE_MAKE_FUNC(void, provider_deregister_child_cb,
(const OSSL_CORE_HANDLE *handle))
OSSL_CORE_MAKE_FUNC(const char *, provider_name,
(const OSSL_CORE_HANDLE *prov))
OSSL_CORE_MAKE_FUNC(void *, provider_get0_provider_ctx,
(const OSSL_CORE_HANDLE *prov))
OSSL_CORE_MAKE_FUNC(const OSSL_DISPATCH *, provider_get0_dispatch,
(const OSSL_CORE_HANDLE *prov))
OSSL_CORE_MAKE_FUNC(int, provider_up_ref,
(const OSSL_CORE_HANDLE *prov, int activate))
OSSL_CORE_MAKE_FUNC(int, provider_free,
(const OSSL_CORE_HANDLE *prov, int deactivate))
/* Functions provided by the provider to the Core, reserved numbers 1024-1535 */
# define OSSL_FUNC_PROVIDER_TEARDOWN 1024
OSSL_CORE_MAKE_FUNC(void,provider_teardown,(void *provctx))
# define OSSL_FUNC_PROVIDER_GETTABLE_PARAMS 1025
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,
provider_gettable_params,(void *provctx))
# define OSSL_FUNC_PROVIDER_GET_PARAMS 1026
OSSL_CORE_MAKE_FUNC(int,provider_get_params,(void *provctx,
OSSL_PARAM params[]))
# define OSSL_FUNC_PROVIDER_QUERY_OPERATION 1027
OSSL_CORE_MAKE_FUNC(const OSSL_ALGORITHM *,provider_query_operation,
(void *provctx, int operation_id, int *no_store))
# define OSSL_FUNC_PROVIDER_UNQUERY_OPERATION 1028
OSSL_CORE_MAKE_FUNC(void, provider_unquery_operation,
(void *provctx, int operation_id, const OSSL_ALGORITHM *))
# define OSSL_FUNC_PROVIDER_GET_REASON_STRINGS 1029
OSSL_CORE_MAKE_FUNC(const OSSL_ITEM *,provider_get_reason_strings,
(void *provctx))
# define OSSL_FUNC_PROVIDER_GET_CAPABILITIES 1030
OSSL_CORE_MAKE_FUNC(int, provider_get_capabilities, (void *provctx,
const char *capability, OSSL_CALLBACK *cb, void *arg))
# define OSSL_FUNC_PROVIDER_SELF_TEST 1031
OSSL_CORE_MAKE_FUNC(int, provider_self_test, (void *provctx))
/* Operations */
# define OSSL_OP_DIGEST 1
# define OSSL_OP_CIPHER 2 /* Symmetric Ciphers */
# define OSSL_OP_MAC 3
# define OSSL_OP_KDF 4
# define OSSL_OP_RAND 5
# define OSSL_OP_KEYMGMT 10
# define OSSL_OP_KEYEXCH 11
# define OSSL_OP_SIGNATURE 12
# define OSSL_OP_ASYM_CIPHER 13
# define OSSL_OP_KEM 14
/* New section for non-EVP operations */
# define OSSL_OP_ENCODER 20
# define OSSL_OP_DECODER 21
# define OSSL_OP_STORE 22
/* Highest known operation number */
# define OSSL_OP__HIGHEST 22
/* Digests */
# define OSSL_FUNC_DIGEST_NEWCTX 1
# define OSSL_FUNC_DIGEST_INIT 2
# define OSSL_FUNC_DIGEST_UPDATE 3
# define OSSL_FUNC_DIGEST_FINAL 4
# define OSSL_FUNC_DIGEST_DIGEST 5
# define OSSL_FUNC_DIGEST_FREECTX 6
# define OSSL_FUNC_DIGEST_DUPCTX 7
# define OSSL_FUNC_DIGEST_GET_PARAMS 8
# define OSSL_FUNC_DIGEST_SET_CTX_PARAMS 9
# define OSSL_FUNC_DIGEST_GET_CTX_PARAMS 10
# define OSSL_FUNC_DIGEST_GETTABLE_PARAMS 11
# define OSSL_FUNC_DIGEST_SETTABLE_CTX_PARAMS 12
# define OSSL_FUNC_DIGEST_GETTABLE_CTX_PARAMS 13
OSSL_CORE_MAKE_FUNC(void *, digest_newctx, (void *provctx))
OSSL_CORE_MAKE_FUNC(int, digest_init, (void *dctx, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, digest_update,
(void *dctx, const unsigned char *in, size_t inl))
OSSL_CORE_MAKE_FUNC(int, digest_final,
(void *dctx,
unsigned char *out, size_t *outl, size_t outsz))
OSSL_CORE_MAKE_FUNC(int, digest_digest,
(void *provctx, const unsigned char *in, size_t inl,
unsigned char *out, size_t *outl, size_t outsz))
OSSL_CORE_MAKE_FUNC(void, digest_freectx, (void *dctx))
OSSL_CORE_MAKE_FUNC(void *, digest_dupctx, (void *dctx))
OSSL_CORE_MAKE_FUNC(int, digest_get_params, (OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, digest_set_ctx_params,
(void *vctx, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, digest_get_ctx_params,
(void *vctx, OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, digest_gettable_params,
(void *provctx))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, digest_settable_ctx_params,
(void *dctx, void *provctx))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, digest_gettable_ctx_params,
(void *dctx, void *provctx))
/* Symmetric Ciphers */
# define OSSL_FUNC_CIPHER_NEWCTX 1
# define OSSL_FUNC_CIPHER_ENCRYPT_INIT 2
# define OSSL_FUNC_CIPHER_DECRYPT_INIT 3
# define OSSL_FUNC_CIPHER_UPDATE 4
# define OSSL_FUNC_CIPHER_FINAL 5
# define OSSL_FUNC_CIPHER_CIPHER 6
# define OSSL_FUNC_CIPHER_FREECTX 7
# define OSSL_FUNC_CIPHER_DUPCTX 8
# define OSSL_FUNC_CIPHER_GET_PARAMS 9
# define OSSL_FUNC_CIPHER_GET_CTX_PARAMS 10
# define OSSL_FUNC_CIPHER_SET_CTX_PARAMS 11
# define OSSL_FUNC_CIPHER_GETTABLE_PARAMS 12
# define OSSL_FUNC_CIPHER_GETTABLE_CTX_PARAMS 13
# define OSSL_FUNC_CIPHER_SETTABLE_CTX_PARAMS 14
OSSL_CORE_MAKE_FUNC(void *, cipher_newctx, (void *provctx))
OSSL_CORE_MAKE_FUNC(int, cipher_encrypt_init, (void *cctx,
const unsigned char *key,
size_t keylen,
const unsigned char *iv,
size_t ivlen,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, cipher_decrypt_init, (void *cctx,
const unsigned char *key,
size_t keylen,
const unsigned char *iv,
size_t ivlen,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, cipher_update,
(void *cctx,
unsigned char *out, size_t *outl, size_t outsize,
const unsigned char *in, size_t inl))
OSSL_CORE_MAKE_FUNC(int, cipher_final,
(void *cctx,
unsigned char *out, size_t *outl, size_t outsize))
OSSL_CORE_MAKE_FUNC(int, cipher_cipher,
(void *cctx,
unsigned char *out, size_t *outl, size_t outsize,
const unsigned char *in, size_t inl))
OSSL_CORE_MAKE_FUNC(void, cipher_freectx, (void *cctx))
OSSL_CORE_MAKE_FUNC(void *, cipher_dupctx, (void *cctx))
OSSL_CORE_MAKE_FUNC(int, cipher_get_params, (OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, cipher_get_ctx_params, (void *cctx,
OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, cipher_set_ctx_params, (void *cctx,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, cipher_gettable_params,
(void *provctx))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, cipher_settable_ctx_params,
(void *cctx, void *provctx))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, cipher_gettable_ctx_params,
(void *cctx, void *provctx))
/* MACs */
# define OSSL_FUNC_MAC_NEWCTX 1
# define OSSL_FUNC_MAC_DUPCTX 2
# define OSSL_FUNC_MAC_FREECTX 3
# define OSSL_FUNC_MAC_INIT 4
# define OSSL_FUNC_MAC_UPDATE 5
# define OSSL_FUNC_MAC_FINAL 6
# define OSSL_FUNC_MAC_GET_PARAMS 7
# define OSSL_FUNC_MAC_GET_CTX_PARAMS 8
# define OSSL_FUNC_MAC_SET_CTX_PARAMS 9
# define OSSL_FUNC_MAC_GETTABLE_PARAMS 10
# define OSSL_FUNC_MAC_GETTABLE_CTX_PARAMS 11
# define OSSL_FUNC_MAC_SETTABLE_CTX_PARAMS 12
OSSL_CORE_MAKE_FUNC(void *, mac_newctx, (void *provctx))
OSSL_CORE_MAKE_FUNC(void *, mac_dupctx, (void *src))
OSSL_CORE_MAKE_FUNC(void, mac_freectx, (void *mctx))
OSSL_CORE_MAKE_FUNC(int, mac_init, (void *mctx, const unsigned char *key,
size_t keylen, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, mac_update,
(void *mctx, const unsigned char *in, size_t inl))
OSSL_CORE_MAKE_FUNC(int, mac_final,
(void *mctx,
unsigned char *out, size_t *outl, size_t outsize))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, mac_gettable_params, (void *provctx))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, mac_gettable_ctx_params,
(void *mctx, void *provctx))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, mac_settable_ctx_params,
(void *mctx, void *provctx))
OSSL_CORE_MAKE_FUNC(int, mac_get_params, (OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, mac_get_ctx_params,
(void *mctx, OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, mac_set_ctx_params,
(void *mctx, const OSSL_PARAM params[]))
/* KDFs and PRFs */
# define OSSL_FUNC_KDF_NEWCTX 1
# define OSSL_FUNC_KDF_DUPCTX 2
# define OSSL_FUNC_KDF_FREECTX 3
# define OSSL_FUNC_KDF_RESET 4
# define OSSL_FUNC_KDF_DERIVE 5
# define OSSL_FUNC_KDF_GETTABLE_PARAMS 6
# define OSSL_FUNC_KDF_GETTABLE_CTX_PARAMS 7
# define OSSL_FUNC_KDF_SETTABLE_CTX_PARAMS 8
# define OSSL_FUNC_KDF_GET_PARAMS 9
# define OSSL_FUNC_KDF_GET_CTX_PARAMS 10
# define OSSL_FUNC_KDF_SET_CTX_PARAMS 11
OSSL_CORE_MAKE_FUNC(void *, kdf_newctx, (void *provctx))
OSSL_CORE_MAKE_FUNC(void *, kdf_dupctx, (void *src))
OSSL_CORE_MAKE_FUNC(void, kdf_freectx, (void *kctx))
OSSL_CORE_MAKE_FUNC(void, kdf_reset, (void *kctx))
OSSL_CORE_MAKE_FUNC(int, kdf_derive, (void *kctx, unsigned char *key,
size_t keylen, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kdf_gettable_params, (void *provctx))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kdf_gettable_ctx_params,
(void *kctx, void *provctx))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kdf_settable_ctx_params,
(void *kctx, void *provctx))
OSSL_CORE_MAKE_FUNC(int, kdf_get_params, (OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, kdf_get_ctx_params,
(void *kctx, OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, kdf_set_ctx_params,
(void *kctx, const OSSL_PARAM params[]))
/* RAND */
# define OSSL_FUNC_RAND_NEWCTX 1
# define OSSL_FUNC_RAND_FREECTX 2
# define OSSL_FUNC_RAND_INSTANTIATE 3
# define OSSL_FUNC_RAND_UNINSTANTIATE 4
# define OSSL_FUNC_RAND_GENERATE 5
# define OSSL_FUNC_RAND_RESEED 6
# define OSSL_FUNC_RAND_NONCE 7
# define OSSL_FUNC_RAND_ENABLE_LOCKING 8
# define OSSL_FUNC_RAND_LOCK 9
# define OSSL_FUNC_RAND_UNLOCK 10
# define OSSL_FUNC_RAND_GETTABLE_PARAMS 11
# define OSSL_FUNC_RAND_GETTABLE_CTX_PARAMS 12
# define OSSL_FUNC_RAND_SETTABLE_CTX_PARAMS 13
# define OSSL_FUNC_RAND_GET_PARAMS 14
# define OSSL_FUNC_RAND_GET_CTX_PARAMS 15
# define OSSL_FUNC_RAND_SET_CTX_PARAMS 16
# define OSSL_FUNC_RAND_VERIFY_ZEROIZATION 17
# define OSSL_FUNC_RAND_GET_SEED 18
# define OSSL_FUNC_RAND_CLEAR_SEED 19
OSSL_CORE_MAKE_FUNC(void *,rand_newctx,
(void *provctx, void *parent,
const OSSL_DISPATCH *parent_calls))
OSSL_CORE_MAKE_FUNC(void,rand_freectx, (void *vctx))
OSSL_CORE_MAKE_FUNC(int,rand_instantiate,
(void *vdrbg, unsigned int strength,
int prediction_resistance,
const unsigned char *pstr, size_t pstr_len,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int,rand_uninstantiate, (void *vdrbg))
OSSL_CORE_MAKE_FUNC(int,rand_generate,
(void *vctx, unsigned char *out, size_t outlen,
unsigned int strength, int prediction_resistance,
const unsigned char *addin, size_t addin_len))
OSSL_CORE_MAKE_FUNC(int,rand_reseed,
(void *vctx, int prediction_resistance,
const unsigned char *ent, size_t ent_len,
const unsigned char *addin, size_t addin_len))
OSSL_CORE_MAKE_FUNC(size_t,rand_nonce,
(void *vctx, unsigned char *out, unsigned int strength,
size_t min_noncelen, size_t max_noncelen))
OSSL_CORE_MAKE_FUNC(int,rand_enable_locking, (void *vctx))
OSSL_CORE_MAKE_FUNC(int,rand_lock, (void *vctx))
OSSL_CORE_MAKE_FUNC(void,rand_unlock, (void *vctx))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,rand_gettable_params, (void *provctx))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,rand_gettable_ctx_params,
(void *vctx, void *provctx))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,rand_settable_ctx_params,
(void *vctx, void *provctx))
OSSL_CORE_MAKE_FUNC(int,rand_get_params, (OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int,rand_get_ctx_params,
(void *vctx, OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int,rand_set_ctx_params,
(void *vctx, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(void,rand_set_callbacks,
(void *vctx, OSSL_INOUT_CALLBACK *get_entropy,
OSSL_CALLBACK *cleanup_entropy,
OSSL_INOUT_CALLBACK *get_nonce,
OSSL_CALLBACK *cleanup_nonce, void *arg))
OSSL_CORE_MAKE_FUNC(int,rand_verify_zeroization,
(void *vctx))
OSSL_CORE_MAKE_FUNC(size_t,rand_get_seed,
(void *vctx, unsigned char **buffer,
int entropy, size_t min_len, size_t max_len,
int prediction_resistance,
const unsigned char *adin, size_t adin_len))
OSSL_CORE_MAKE_FUNC(void,rand_clear_seed,
(void *vctx, unsigned char *buffer, size_t b_len))
/*-
* Key management
*
* The Key Management takes care of provider side key objects, and includes
* all current functionality to create them, destroy them, set parameters
* and key material, etc, essentially everything that manipulates the keys
* themselves and their parameters.
*
* The key objects are commonly referred to as |keydata|, and it MUST be able
* to contain parameters if the key has any, the public key and the private
* key. All parts are optional, but their presence determines what can be
* done with the key object in terms of encryption, signature, and so on.
* The assumption from libcrypto is that the key object contains any of the
* following data combinations:
*
* - parameters only
* - public key only
* - public key + private key
* - parameters + public key
* - parameters + public key + private key
*
* What "parameters", "public key" and "private key" means in detail is left
* to the implementation. In the case of DH and DSA, they would typically
* include domain parameters, while for certain variants of RSA, they would
* typically include PSS or OAEP parameters.
*
* Key objects are created with OSSL_FUNC_keymgmt_new() and destroyed with
* OSSL_FUNC_keymgmt_free(). Key objects can have data filled in with
* OSSL_FUNC_keymgmt_import().
*
* Three functions are made available to check what selection of data is
* present in a key object: OSSL_FUNC_keymgmt_has_parameters(),
* OSSL_FUNC_keymgmt_has_public_key(), and OSSL_FUNC_keymgmt_has_private_key(),
*/
/* Key data subset selection - individual bits */
# define OSSL_KEYMGMT_SELECT_PRIVATE_KEY 0x01
# define OSSL_KEYMGMT_SELECT_PUBLIC_KEY 0x02
# define OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS 0x04
# define OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS 0x80
/* Key data subset selection - combinations */
# define OSSL_KEYMGMT_SELECT_ALL_PARAMETERS \
( OSSL_KEYMGMT_SELECT_DOMAIN_PARAMETERS \
| OSSL_KEYMGMT_SELECT_OTHER_PARAMETERS)
# define OSSL_KEYMGMT_SELECT_KEYPAIR \
( OSSL_KEYMGMT_SELECT_PRIVATE_KEY | OSSL_KEYMGMT_SELECT_PUBLIC_KEY )
# define OSSL_KEYMGMT_SELECT_ALL \
( OSSL_KEYMGMT_SELECT_KEYPAIR | OSSL_KEYMGMT_SELECT_ALL_PARAMETERS )
# define OSSL_KEYMGMT_VALIDATE_FULL_CHECK 0
# define OSSL_KEYMGMT_VALIDATE_QUICK_CHECK 1
/* Basic key object creation */
# define OSSL_FUNC_KEYMGMT_NEW 1
OSSL_CORE_MAKE_FUNC(void *, keymgmt_new, (void *provctx))
/* Generation, a more complex constructor */
# define OSSL_FUNC_KEYMGMT_GEN_INIT 2
# define OSSL_FUNC_KEYMGMT_GEN_SET_TEMPLATE 3
# define OSSL_FUNC_KEYMGMT_GEN_SET_PARAMS 4
# define OSSL_FUNC_KEYMGMT_GEN_SETTABLE_PARAMS 5
# define OSSL_FUNC_KEYMGMT_GEN 6
# define OSSL_FUNC_KEYMGMT_GEN_CLEANUP 7
OSSL_CORE_MAKE_FUNC(void *, keymgmt_gen_init,
(void *provctx, int selection, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, keymgmt_gen_set_template,
(void *genctx, void *templ))
OSSL_CORE_MAKE_FUNC(int, keymgmt_gen_set_params,
(void *genctx, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *,
keymgmt_gen_settable_params,
(void *genctx, void *provctx))
OSSL_CORE_MAKE_FUNC(void *, keymgmt_gen,
(void *genctx, OSSL_CALLBACK *cb, void *cbarg))
OSSL_CORE_MAKE_FUNC(void, keymgmt_gen_cleanup, (void *genctx))
/* Key loading by object reference */
# define OSSL_FUNC_KEYMGMT_LOAD 8
OSSL_CORE_MAKE_FUNC(void *, keymgmt_load,
(const void *reference, size_t reference_sz))
/* Basic key object destruction */
# define OSSL_FUNC_KEYMGMT_FREE 10
OSSL_CORE_MAKE_FUNC(void, keymgmt_free, (void *keydata))
/* Key object information, with discovery */
#define OSSL_FUNC_KEYMGMT_GET_PARAMS 11
#define OSSL_FUNC_KEYMGMT_GETTABLE_PARAMS 12
OSSL_CORE_MAKE_FUNC(int, keymgmt_get_params,
(void *keydata, OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_gettable_params,
(void *provctx))
#define OSSL_FUNC_KEYMGMT_SET_PARAMS 13
#define OSSL_FUNC_KEYMGMT_SETTABLE_PARAMS 14
OSSL_CORE_MAKE_FUNC(int, keymgmt_set_params,
(void *keydata, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_settable_params,
(void *provctx))
/* Key checks - discovery of supported operations */
# define OSSL_FUNC_KEYMGMT_QUERY_OPERATION_NAME 20
OSSL_CORE_MAKE_FUNC(const char *, keymgmt_query_operation_name,
(int operation_id))
/* Key checks - key data content checks */
# define OSSL_FUNC_KEYMGMT_HAS 21
OSSL_CORE_MAKE_FUNC(int, keymgmt_has, (const void *keydata, int selection))
/* Key checks - validation */
# define OSSL_FUNC_KEYMGMT_VALIDATE 22
OSSL_CORE_MAKE_FUNC(int, keymgmt_validate, (const void *keydata, int selection,
int checktype))
/* Key checks - matching */
# define OSSL_FUNC_KEYMGMT_MATCH 23
OSSL_CORE_MAKE_FUNC(int, keymgmt_match,
(const void *keydata1, const void *keydata2,
int selection))
/* Import and export functions, with discovery */
# define OSSL_FUNC_KEYMGMT_IMPORT 40
# define OSSL_FUNC_KEYMGMT_IMPORT_TYPES 41
# define OSSL_FUNC_KEYMGMT_EXPORT 42
# define OSSL_FUNC_KEYMGMT_EXPORT_TYPES 43
OSSL_CORE_MAKE_FUNC(int, keymgmt_import,
(void *keydata, int selection, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_import_types,
(int selection))
OSSL_CORE_MAKE_FUNC(int, keymgmt_export,
(void *keydata, int selection,
OSSL_CALLBACK *param_cb, void *cbarg))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types,
(int selection))
/* Dup function, constructor */
# define OSSL_FUNC_KEYMGMT_DUP 44
OSSL_CORE_MAKE_FUNC(void *, keymgmt_dup,
(const void *keydata_from, int selection))
/* Extended import and export functions */
# define OSSL_FUNC_KEYMGMT_IMPORT_TYPES_EX 45
# define OSSL_FUNC_KEYMGMT_EXPORT_TYPES_EX 46
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_import_types_ex,
(void *provctx, int selection))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keymgmt_export_types_ex,
(void *provctx, int selection))
/* Key Exchange */
# define OSSL_FUNC_KEYEXCH_NEWCTX 1
# define OSSL_FUNC_KEYEXCH_INIT 2
# define OSSL_FUNC_KEYEXCH_DERIVE 3
# define OSSL_FUNC_KEYEXCH_SET_PEER 4
# define OSSL_FUNC_KEYEXCH_FREECTX 5
# define OSSL_FUNC_KEYEXCH_DUPCTX 6
# define OSSL_FUNC_KEYEXCH_SET_CTX_PARAMS 7
# define OSSL_FUNC_KEYEXCH_SETTABLE_CTX_PARAMS 8
# define OSSL_FUNC_KEYEXCH_GET_CTX_PARAMS 9
# define OSSL_FUNC_KEYEXCH_GETTABLE_CTX_PARAMS 10
OSSL_CORE_MAKE_FUNC(void *, keyexch_newctx, (void *provctx))
OSSL_CORE_MAKE_FUNC(int, keyexch_init, (void *ctx, void *provkey,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, keyexch_derive, (void *ctx, unsigned char *secret,
size_t *secretlen, size_t outlen))
OSSL_CORE_MAKE_FUNC(int, keyexch_set_peer, (void *ctx, void *provkey))
OSSL_CORE_MAKE_FUNC(void, keyexch_freectx, (void *ctx))
OSSL_CORE_MAKE_FUNC(void *, keyexch_dupctx, (void *ctx))
OSSL_CORE_MAKE_FUNC(int, keyexch_set_ctx_params, (void *ctx,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keyexch_settable_ctx_params,
(void *ctx, void *provctx))
OSSL_CORE_MAKE_FUNC(int, keyexch_get_ctx_params, (void *ctx,
OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, keyexch_gettable_ctx_params,
(void *ctx, void *provctx))
/* Signature */
# define OSSL_FUNC_SIGNATURE_NEWCTX 1
# define OSSL_FUNC_SIGNATURE_SIGN_INIT 2
# define OSSL_FUNC_SIGNATURE_SIGN 3
# define OSSL_FUNC_SIGNATURE_VERIFY_INIT 4
# define OSSL_FUNC_SIGNATURE_VERIFY 5
# define OSSL_FUNC_SIGNATURE_VERIFY_RECOVER_INIT 6
# define OSSL_FUNC_SIGNATURE_VERIFY_RECOVER 7
# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN_INIT 8
# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN_UPDATE 9
# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN_FINAL 10
# define OSSL_FUNC_SIGNATURE_DIGEST_SIGN 11
# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_INIT 12
# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_UPDATE 13
# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY_FINAL 14
# define OSSL_FUNC_SIGNATURE_DIGEST_VERIFY 15
# define OSSL_FUNC_SIGNATURE_FREECTX 16
# define OSSL_FUNC_SIGNATURE_DUPCTX 17
# define OSSL_FUNC_SIGNATURE_GET_CTX_PARAMS 18
# define OSSL_FUNC_SIGNATURE_GETTABLE_CTX_PARAMS 19
# define OSSL_FUNC_SIGNATURE_SET_CTX_PARAMS 20
# define OSSL_FUNC_SIGNATURE_SETTABLE_CTX_PARAMS 21
# define OSSL_FUNC_SIGNATURE_GET_CTX_MD_PARAMS 22
# define OSSL_FUNC_SIGNATURE_GETTABLE_CTX_MD_PARAMS 23
# define OSSL_FUNC_SIGNATURE_SET_CTX_MD_PARAMS 24
# define OSSL_FUNC_SIGNATURE_SETTABLE_CTX_MD_PARAMS 25
OSSL_CORE_MAKE_FUNC(void *, signature_newctx, (void *provctx,
const char *propq))
OSSL_CORE_MAKE_FUNC(int, signature_sign_init, (void *ctx, void *provkey,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, signature_sign, (void *ctx, unsigned char *sig,
size_t *siglen, size_t sigsize,
const unsigned char *tbs,
size_t tbslen))
OSSL_CORE_MAKE_FUNC(int, signature_verify_init, (void *ctx, void *provkey,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, signature_verify, (void *ctx,
const unsigned char *sig,
size_t siglen,
const unsigned char *tbs,
size_t tbslen))
OSSL_CORE_MAKE_FUNC(int, signature_verify_recover_init,
(void *ctx, void *provkey, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, signature_verify_recover,
(void *ctx, unsigned char *rout, size_t *routlen,
size_t routsize, const unsigned char *sig, size_t siglen))
OSSL_CORE_MAKE_FUNC(int, signature_digest_sign_init,
(void *ctx, const char *mdname, void *provkey,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, signature_digest_sign_update,
(void *ctx, const unsigned char *data, size_t datalen))
OSSL_CORE_MAKE_FUNC(int, signature_digest_sign_final,
(void *ctx, unsigned char *sig, size_t *siglen,
size_t sigsize))
OSSL_CORE_MAKE_FUNC(int, signature_digest_sign,
(void *ctx, unsigned char *sigret, size_t *siglen,
size_t sigsize, const unsigned char *tbs, size_t tbslen))
OSSL_CORE_MAKE_FUNC(int, signature_digest_verify_init,
(void *ctx, const char *mdname, void *provkey,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, signature_digest_verify_update,
(void *ctx, const unsigned char *data, size_t datalen))
OSSL_CORE_MAKE_FUNC(int, signature_digest_verify_final,
(void *ctx, const unsigned char *sig, size_t siglen))
OSSL_CORE_MAKE_FUNC(int, signature_digest_verify,
(void *ctx, const unsigned char *sig, size_t siglen,
const unsigned char *tbs, size_t tbslen))
OSSL_CORE_MAKE_FUNC(void, signature_freectx, (void *ctx))
OSSL_CORE_MAKE_FUNC(void *, signature_dupctx, (void *ctx))
OSSL_CORE_MAKE_FUNC(int, signature_get_ctx_params,
(void *ctx, OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_gettable_ctx_params,
(void *ctx, void *provctx))
OSSL_CORE_MAKE_FUNC(int, signature_set_ctx_params,
(void *ctx, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_settable_ctx_params,
(void *ctx, void *provctx))
OSSL_CORE_MAKE_FUNC(int, signature_get_ctx_md_params,
(void *ctx, OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_gettable_ctx_md_params,
(void *ctx))
OSSL_CORE_MAKE_FUNC(int, signature_set_ctx_md_params,
(void *ctx, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, signature_settable_ctx_md_params,
(void *ctx))
/* Asymmetric Ciphers */
# define OSSL_FUNC_ASYM_CIPHER_NEWCTX 1
# define OSSL_FUNC_ASYM_CIPHER_ENCRYPT_INIT 2
# define OSSL_FUNC_ASYM_CIPHER_ENCRYPT 3
# define OSSL_FUNC_ASYM_CIPHER_DECRYPT_INIT 4
# define OSSL_FUNC_ASYM_CIPHER_DECRYPT 5
# define OSSL_FUNC_ASYM_CIPHER_FREECTX 6
# define OSSL_FUNC_ASYM_CIPHER_DUPCTX 7
# define OSSL_FUNC_ASYM_CIPHER_GET_CTX_PARAMS 8
# define OSSL_FUNC_ASYM_CIPHER_GETTABLE_CTX_PARAMS 9
# define OSSL_FUNC_ASYM_CIPHER_SET_CTX_PARAMS 10
# define OSSL_FUNC_ASYM_CIPHER_SETTABLE_CTX_PARAMS 11
OSSL_CORE_MAKE_FUNC(void *, asym_cipher_newctx, (void *provctx))
OSSL_CORE_MAKE_FUNC(int, asym_cipher_encrypt_init, (void *ctx, void *provkey,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, asym_cipher_encrypt, (void *ctx, unsigned char *out,
size_t *outlen,
size_t outsize,
const unsigned char *in,
size_t inlen))
OSSL_CORE_MAKE_FUNC(int, asym_cipher_decrypt_init, (void *ctx, void *provkey,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, asym_cipher_decrypt, (void *ctx, unsigned char *out,
size_t *outlen,
size_t outsize,
const unsigned char *in,
size_t inlen))
OSSL_CORE_MAKE_FUNC(void, asym_cipher_freectx, (void *ctx))
OSSL_CORE_MAKE_FUNC(void *, asym_cipher_dupctx, (void *ctx))
OSSL_CORE_MAKE_FUNC(int, asym_cipher_get_ctx_params,
(void *ctx, OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, asym_cipher_gettable_ctx_params,
(void *ctx, void *provctx))
OSSL_CORE_MAKE_FUNC(int, asym_cipher_set_ctx_params,
(void *ctx, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, asym_cipher_settable_ctx_params,
(void *ctx, void *provctx))
/* Asymmetric Key encapsulation */
# define OSSL_FUNC_KEM_NEWCTX 1
# define OSSL_FUNC_KEM_ENCAPSULATE_INIT 2
# define OSSL_FUNC_KEM_ENCAPSULATE 3
# define OSSL_FUNC_KEM_DECAPSULATE_INIT 4
# define OSSL_FUNC_KEM_DECAPSULATE 5
# define OSSL_FUNC_KEM_FREECTX 6
# define OSSL_FUNC_KEM_DUPCTX 7
# define OSSL_FUNC_KEM_GET_CTX_PARAMS 8
# define OSSL_FUNC_KEM_GETTABLE_CTX_PARAMS 9
# define OSSL_FUNC_KEM_SET_CTX_PARAMS 10
# define OSSL_FUNC_KEM_SETTABLE_CTX_PARAMS 11
# define OSSL_FUNC_KEM_AUTH_ENCAPSULATE_INIT 12
# define OSSL_FUNC_KEM_AUTH_DECAPSULATE_INIT 13
OSSL_CORE_MAKE_FUNC(void *, kem_newctx, (void *provctx))
OSSL_CORE_MAKE_FUNC(int, kem_encapsulate_init, (void *ctx, void *provkey,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, kem_auth_encapsulate_init, (void *ctx, void *provkey,
void *authprivkey,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, kem_encapsulate, (void *ctx,
unsigned char *out, size_t *outlen,
unsigned char *secret,
size_t *secretlen))
OSSL_CORE_MAKE_FUNC(int, kem_decapsulate_init, (void *ctx, void *provkey,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, kem_auth_decapsulate_init, (void *ctx, void *provkey,
void *authpubkey,
const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, kem_decapsulate, (void *ctx,
unsigned char *out, size_t *outlen,
const unsigned char *in, size_t inlen))
OSSL_CORE_MAKE_FUNC(void, kem_freectx, (void *ctx))
OSSL_CORE_MAKE_FUNC(void *, kem_dupctx, (void *ctx))
OSSL_CORE_MAKE_FUNC(int, kem_get_ctx_params, (void *ctx, OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kem_gettable_ctx_params,
(void *ctx, void *provctx))
OSSL_CORE_MAKE_FUNC(int, kem_set_ctx_params,
(void *ctx, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, kem_settable_ctx_params,
(void *ctx, void *provctx))
/* Encoders and decoders */
# define OSSL_FUNC_ENCODER_NEWCTX 1
# define OSSL_FUNC_ENCODER_FREECTX 2
# define OSSL_FUNC_ENCODER_GET_PARAMS 3
# define OSSL_FUNC_ENCODER_GETTABLE_PARAMS 4
# define OSSL_FUNC_ENCODER_SET_CTX_PARAMS 5
# define OSSL_FUNC_ENCODER_SETTABLE_CTX_PARAMS 6
# define OSSL_FUNC_ENCODER_DOES_SELECTION 10
# define OSSL_FUNC_ENCODER_ENCODE 11
# define OSSL_FUNC_ENCODER_IMPORT_OBJECT 20
# define OSSL_FUNC_ENCODER_FREE_OBJECT 21
OSSL_CORE_MAKE_FUNC(void *, encoder_newctx, (void *provctx))
OSSL_CORE_MAKE_FUNC(void, encoder_freectx, (void *ctx))
OSSL_CORE_MAKE_FUNC(int, encoder_get_params, (OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, encoder_gettable_params,
(void *provctx))
OSSL_CORE_MAKE_FUNC(int, encoder_set_ctx_params,
(void *ctx, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, encoder_settable_ctx_params,
(void *provctx))
OSSL_CORE_MAKE_FUNC(int, encoder_does_selection,
(void *provctx, int selection))
OSSL_CORE_MAKE_FUNC(int, encoder_encode,
(void *ctx, OSSL_CORE_BIO *out,
const void *obj_raw, const OSSL_PARAM obj_abstract[],
int selection,
OSSL_PASSPHRASE_CALLBACK *cb, void *cbarg))
OSSL_CORE_MAKE_FUNC(void *, encoder_import_object,
(void *ctx, int selection, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(void, encoder_free_object, (void *obj))
# define OSSL_FUNC_DECODER_NEWCTX 1
# define OSSL_FUNC_DECODER_FREECTX 2
# define OSSL_FUNC_DECODER_GET_PARAMS 3
# define OSSL_FUNC_DECODER_GETTABLE_PARAMS 4
# define OSSL_FUNC_DECODER_SET_CTX_PARAMS 5
# define OSSL_FUNC_DECODER_SETTABLE_CTX_PARAMS 6
# define OSSL_FUNC_DECODER_DOES_SELECTION 10
# define OSSL_FUNC_DECODER_DECODE 11
# define OSSL_FUNC_DECODER_EXPORT_OBJECT 20
OSSL_CORE_MAKE_FUNC(void *, decoder_newctx, (void *provctx))
OSSL_CORE_MAKE_FUNC(void, decoder_freectx, (void *ctx))
OSSL_CORE_MAKE_FUNC(int, decoder_get_params, (OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, decoder_gettable_params,
(void *provctx))
OSSL_CORE_MAKE_FUNC(int, decoder_set_ctx_params,
(void *ctx, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, decoder_settable_ctx_params,
(void *provctx))
OSSL_CORE_MAKE_FUNC(int, decoder_does_selection,
(void *provctx, int selection))
OSSL_CORE_MAKE_FUNC(int, decoder_decode,
(void *ctx, OSSL_CORE_BIO *in, int selection,
OSSL_CALLBACK *data_cb, void *data_cbarg,
OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg))
OSSL_CORE_MAKE_FUNC(int, decoder_export_object,
(void *ctx, const void *objref, size_t objref_sz,
OSSL_CALLBACK *export_cb, void *export_cbarg))
/*-
* Store
*
* Objects are scanned by using the 'open', 'load', 'eof' and 'close'
* functions, which implement an OSSL_STORE loader.
*
* store_load() works in a way that's very similar to the decoders, in
* that they pass an abstract object through a callback, either as a DER
* octet string or as an object reference, which libcrypto will have to
* deal with.
*/
#define OSSL_FUNC_STORE_OPEN 1
#define OSSL_FUNC_STORE_ATTACH 2
#define OSSL_FUNC_STORE_SETTABLE_CTX_PARAMS 3
#define OSSL_FUNC_STORE_SET_CTX_PARAMS 4
#define OSSL_FUNC_STORE_LOAD 5
#define OSSL_FUNC_STORE_EOF 6
#define OSSL_FUNC_STORE_CLOSE 7
#define OSSL_FUNC_STORE_EXPORT_OBJECT 8
#define OSSL_FUNC_STORE_DELETE 9
#define OSSL_FUNC_STORE_OPEN_EX 10
OSSL_CORE_MAKE_FUNC(void *, store_open, (void *provctx, const char *uri))
OSSL_CORE_MAKE_FUNC(void *, store_attach, (void *provctx, OSSL_CORE_BIO *in))
OSSL_CORE_MAKE_FUNC(const OSSL_PARAM *, store_settable_ctx_params,
(void *provctx))
OSSL_CORE_MAKE_FUNC(int, store_set_ctx_params,
(void *loaderctx, const OSSL_PARAM params[]))
OSSL_CORE_MAKE_FUNC(int, store_load,
(void *loaderctx,
OSSL_CALLBACK *object_cb, void *object_cbarg,
OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg))
OSSL_CORE_MAKE_FUNC(int, store_eof, (void *loaderctx))
OSSL_CORE_MAKE_FUNC(int, store_close, (void *loaderctx))
OSSL_CORE_MAKE_FUNC(int, store_export_object,
(void *loaderctx, const void *objref, size_t objref_sz,
OSSL_CALLBACK *export_cb, void *export_cbarg))
OSSL_CORE_MAKE_FUNC(int, store_delete,
(void *provctx, const char *uri, const OSSL_PARAM params[],
OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg))
OSSL_CORE_MAKE_FUNC(void *, store_open_ex,
(void *provctx, const char *uri, const OSSL_PARAM params[],
OSSL_PASSPHRASE_CALLBACK *pw_cb, void *pw_cbarg))
# ifdef __cplusplus
}
# endif
#endif

View File

@@ -0,0 +1,475 @@
/*
* WARNING: do not edit!
* Generated by Makefile from include/openssl/core_names.h.in
*
* Copyright 2019-2023 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CORE_NAMES_H
# define OPENSSL_CORE_NAMES_H
# pragma once
# ifdef __cplusplus
extern "C" {
# endif
/* OSSL_CIPHER_PARAM_CTS_MODE Values */
# define OSSL_CIPHER_CTS_MODE_CS1 "CS1"
# define OSSL_CIPHER_CTS_MODE_CS2 "CS2"
# define OSSL_CIPHER_CTS_MODE_CS3 "CS3"
/* Known CIPHER names (not a complete list) */
# define OSSL_CIPHER_NAME_AES_128_GCM_SIV "AES-128-GCM-SIV"
# define OSSL_CIPHER_NAME_AES_192_GCM_SIV "AES-192-GCM-SIV"
# define OSSL_CIPHER_NAME_AES_256_GCM_SIV "AES-256-GCM-SIV"
/* Known DIGEST names (not a complete list) */
# define OSSL_DIGEST_NAME_MD5 "MD5"
# define OSSL_DIGEST_NAME_MD5_SHA1 "MD5-SHA1"
# define OSSL_DIGEST_NAME_SHA1 "SHA1"
# define OSSL_DIGEST_NAME_SHA2_224 "SHA2-224"
# define OSSL_DIGEST_NAME_SHA2_256 "SHA2-256"
# define OSSL_DIGEST_NAME_SHA2_256_192 "SHA2-256/192"
# define OSSL_DIGEST_NAME_SHA2_384 "SHA2-384"
# define OSSL_DIGEST_NAME_SHA2_512 "SHA2-512"
# define OSSL_DIGEST_NAME_SHA2_512_224 "SHA2-512/224"
# define OSSL_DIGEST_NAME_SHA2_512_256 "SHA2-512/256"
# define OSSL_DIGEST_NAME_MD2 "MD2"
# define OSSL_DIGEST_NAME_MD4 "MD4"
# define OSSL_DIGEST_NAME_MDC2 "MDC2"
# define OSSL_DIGEST_NAME_RIPEMD160 "RIPEMD160"
# define OSSL_DIGEST_NAME_SHA3_224 "SHA3-224"
# define OSSL_DIGEST_NAME_SHA3_256 "SHA3-256"
# define OSSL_DIGEST_NAME_SHA3_384 "SHA3-384"
# define OSSL_DIGEST_NAME_SHA3_512 "SHA3-512"
# define OSSL_DIGEST_NAME_KECCAK_KMAC128 "KECCAK-KMAC-128"
# define OSSL_DIGEST_NAME_KECCAK_KMAC256 "KECCAK-KMAC-256"
# define OSSL_DIGEST_NAME_SM3 "SM3"
/* Known MAC names */
# define OSSL_MAC_NAME_BLAKE2BMAC "BLAKE2BMAC"
# define OSSL_MAC_NAME_BLAKE2SMAC "BLAKE2SMAC"
# define OSSL_MAC_NAME_CMAC "CMAC"
# define OSSL_MAC_NAME_GMAC "GMAC"
# define OSSL_MAC_NAME_HMAC "HMAC"
# define OSSL_MAC_NAME_KMAC128 "KMAC128"
# define OSSL_MAC_NAME_KMAC256 "KMAC256"
# define OSSL_MAC_NAME_POLY1305 "POLY1305"
# define OSSL_MAC_NAME_SIPHASH "SIPHASH"
/* Known KDF names */
# define OSSL_KDF_NAME_HKDF "HKDF"
# define OSSL_KDF_NAME_TLS1_3_KDF "TLS13-KDF"
# define OSSL_KDF_NAME_PBKDF1 "PBKDF1"
# define OSSL_KDF_NAME_PBKDF2 "PBKDF2"
# define OSSL_KDF_NAME_SCRYPT "SCRYPT"
# define OSSL_KDF_NAME_SSHKDF "SSHKDF"
# define OSSL_KDF_NAME_SSKDF "SSKDF"
# define OSSL_KDF_NAME_TLS1_PRF "TLS1-PRF"
# define OSSL_KDF_NAME_X942KDF_ASN1 "X942KDF-ASN1"
# define OSSL_KDF_NAME_X942KDF_CONCAT "X942KDF-CONCAT"
# define OSSL_KDF_NAME_X963KDF "X963KDF"
# define OSSL_KDF_NAME_KBKDF "KBKDF"
# define OSSL_KDF_NAME_KRB5KDF "KRB5KDF"
# define OSSL_KDF_NAME_HMACDRBGKDF "HMAC-DRBG-KDF"
/* RSA padding modes */
# define OSSL_PKEY_RSA_PAD_MODE_NONE "none"
# define OSSL_PKEY_RSA_PAD_MODE_PKCSV15 "pkcs1"
# define OSSL_PKEY_RSA_PAD_MODE_OAEP "oaep"
# define OSSL_PKEY_RSA_PAD_MODE_X931 "x931"
# define OSSL_PKEY_RSA_PAD_MODE_PSS "pss"
/* RSA pss padding salt length */
# define OSSL_PKEY_RSA_PSS_SALT_LEN_DIGEST "digest"
# define OSSL_PKEY_RSA_PSS_SALT_LEN_MAX "max"
# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO "auto"
# define OSSL_PKEY_RSA_PSS_SALT_LEN_AUTO_DIGEST_MAX "auto-digestmax"
/* OSSL_PKEY_PARAM_EC_ENCODING values */
# define OSSL_PKEY_EC_ENCODING_EXPLICIT "explicit"
# define OSSL_PKEY_EC_ENCODING_GROUP "named_curve"
# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_UNCOMPRESSED "uncompressed"
# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_COMPRESSED "compressed"
# define OSSL_PKEY_EC_POINT_CONVERSION_FORMAT_HYBRID "hybrid"
# define OSSL_PKEY_EC_GROUP_CHECK_DEFAULT "default"
# define OSSL_PKEY_EC_GROUP_CHECK_NAMED "named"
# define OSSL_PKEY_EC_GROUP_CHECK_NAMED_NIST "named-nist"
/* OSSL_KEM_PARAM_OPERATION values */
#define OSSL_KEM_PARAM_OPERATION_RSASVE "RSASVE"
#define OSSL_KEM_PARAM_OPERATION_DHKEM "DHKEM"
/* Parameter name definitions - generated by util/perl/OpenSSL/paramnames.pm */
# define OSSL_ALG_PARAM_CIPHER "cipher"
# define OSSL_ALG_PARAM_DIGEST "digest"
# define OSSL_ALG_PARAM_ENGINE "engine"
# define OSSL_ALG_PARAM_MAC "mac"
# define OSSL_ALG_PARAM_PROPERTIES "properties"
# define OSSL_ASYM_CIPHER_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST
# define OSSL_ASYM_CIPHER_PARAM_ENGINE OSSL_PKEY_PARAM_ENGINE
# define OSSL_ASYM_CIPHER_PARAM_IMPLICIT_REJECTION "implicit-rejection"
# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST
# define OSSL_ASYM_CIPHER_PARAM_MGF1_DIGEST_PROPS OSSL_PKEY_PARAM_MGF1_PROPERTIES
# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST OSSL_ALG_PARAM_DIGEST
# define OSSL_ASYM_CIPHER_PARAM_OAEP_DIGEST_PROPS "digest-props"
# define OSSL_ASYM_CIPHER_PARAM_OAEP_LABEL "oaep-label"
# define OSSL_ASYM_CIPHER_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE
# define OSSL_ASYM_CIPHER_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES
# define OSSL_ASYM_CIPHER_PARAM_TLS_CLIENT_VERSION "tls-client-version"
# define OSSL_ASYM_CIPHER_PARAM_TLS_NEGOTIATED_VERSION "tls-negotiated-version"
# define OSSL_CAPABILITY_TLS_GROUP_ALG "tls-group-alg"
# define OSSL_CAPABILITY_TLS_GROUP_ID "tls-group-id"
# define OSSL_CAPABILITY_TLS_GROUP_IS_KEM "tls-group-is-kem"
# define OSSL_CAPABILITY_TLS_GROUP_MAX_DTLS "tls-max-dtls"
# define OSSL_CAPABILITY_TLS_GROUP_MAX_TLS "tls-max-tls"
# define OSSL_CAPABILITY_TLS_GROUP_MIN_DTLS "tls-min-dtls"
# define OSSL_CAPABILITY_TLS_GROUP_MIN_TLS "tls-min-tls"
# define OSSL_CAPABILITY_TLS_GROUP_NAME "tls-group-name"
# define OSSL_CAPABILITY_TLS_GROUP_NAME_INTERNAL "tls-group-name-internal"
# define OSSL_CAPABILITY_TLS_GROUP_SECURITY_BITS "tls-group-sec-bits"
# define OSSL_CAPABILITY_TLS_SIGALG_CODE_POINT "tls-sigalg-code-point"
# define OSSL_CAPABILITY_TLS_SIGALG_HASH_NAME "tls-sigalg-hash-name"
# define OSSL_CAPABILITY_TLS_SIGALG_HASH_OID "tls-sigalg-hash-oid"
# define OSSL_CAPABILITY_TLS_SIGALG_IANA_NAME "tls-sigalg-iana-name"
# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE "tls-sigalg-keytype"
# define OSSL_CAPABILITY_TLS_SIGALG_KEYTYPE_OID "tls-sigalg-keytype-oid"
# define OSSL_CAPABILITY_TLS_SIGALG_MAX_TLS "tls-max-tls"
# define OSSL_CAPABILITY_TLS_SIGALG_MIN_TLS "tls-min-tls"
# define OSSL_CAPABILITY_TLS_SIGALG_NAME "tls-sigalg-name"
# define OSSL_CAPABILITY_TLS_SIGALG_OID "tls-sigalg-oid"
# define OSSL_CAPABILITY_TLS_SIGALG_SECURITY_BITS "tls-sigalg-sec-bits"
# define OSSL_CAPABILITY_TLS_SIGALG_SIG_NAME "tls-sigalg-sig-name"
# define OSSL_CAPABILITY_TLS_SIGALG_SIG_OID "tls-sigalg-sig-oid"
# define OSSL_CIPHER_PARAM_AEAD "aead"
# define OSSL_CIPHER_PARAM_AEAD_IVLEN OSSL_CIPHER_PARAM_IVLEN
# define OSSL_CIPHER_PARAM_AEAD_MAC_KEY "mackey"
# define OSSL_CIPHER_PARAM_AEAD_TAG "tag"
# define OSSL_CIPHER_PARAM_AEAD_TAGLEN "taglen"
# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD "tlsaad"
# define OSSL_CIPHER_PARAM_AEAD_TLS1_AAD_PAD "tlsaadpad"
# define OSSL_CIPHER_PARAM_AEAD_TLS1_GET_IV_GEN "tlsivgen"
# define OSSL_CIPHER_PARAM_AEAD_TLS1_IV_FIXED "tlsivfixed"
# define OSSL_CIPHER_PARAM_AEAD_TLS1_SET_IV_INV "tlsivinv"
# define OSSL_CIPHER_PARAM_ALGORITHM_ID_PARAMS "alg_id_param"
# define OSSL_CIPHER_PARAM_BLOCK_SIZE "blocksize"
# define OSSL_CIPHER_PARAM_CTS "cts"
# define OSSL_CIPHER_PARAM_CTS_MODE "cts_mode"
# define OSSL_CIPHER_PARAM_CUSTOM_IV "custom-iv"
# define OSSL_CIPHER_PARAM_HAS_RAND_KEY "has-randkey"
# define OSSL_CIPHER_PARAM_IV "iv"
# define OSSL_CIPHER_PARAM_IVLEN "ivlen"
# define OSSL_CIPHER_PARAM_KEYLEN "keylen"
# define OSSL_CIPHER_PARAM_MODE "mode"
# define OSSL_CIPHER_PARAM_NUM "num"
# define OSSL_CIPHER_PARAM_PADDING "padding"
# define OSSL_CIPHER_PARAM_RANDOM_KEY "randkey"
# define OSSL_CIPHER_PARAM_RC2_KEYBITS "keybits"
# define OSSL_CIPHER_PARAM_ROUNDS "rounds"
# define OSSL_CIPHER_PARAM_SPEED "speed"
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK "tls-multi"
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD "tls1multi_aad"
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_AAD_PACKLEN "tls1multi_aadpacklen"
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC "tls1multi_enc"
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_IN "tls1multi_encin"
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_ENC_LEN "tls1multi_enclen"
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_INTERLEAVE "tls1multi_interleave"
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_BUFSIZE "tls1multi_maxbufsz"
# define OSSL_CIPHER_PARAM_TLS1_MULTIBLOCK_MAX_SEND_FRAGMENT "tls1multi_maxsndfrag"
# define OSSL_CIPHER_PARAM_TLS_MAC "tls-mac"
# define OSSL_CIPHER_PARAM_TLS_MAC_SIZE "tls-mac-size"
# define OSSL_CIPHER_PARAM_TLS_VERSION "tls-version"
# define OSSL_CIPHER_PARAM_UPDATED_IV "updated-iv"
# define OSSL_CIPHER_PARAM_USE_BITS "use-bits"
# define OSSL_CIPHER_PARAM_XTS_STANDARD "xts_standard"
# define OSSL_DECODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
# define OSSL_DIGEST_PARAM_ALGID_ABSENT "algid-absent"
# define OSSL_DIGEST_PARAM_BLOCK_SIZE "blocksize"
# define OSSL_DIGEST_PARAM_MICALG "micalg"
# define OSSL_DIGEST_PARAM_PAD_TYPE "pad-type"
# define OSSL_DIGEST_PARAM_SIZE "size"
# define OSSL_DIGEST_PARAM_SSL3_MS "ssl3-ms"
# define OSSL_DIGEST_PARAM_XOF "xof"
# define OSSL_DIGEST_PARAM_XOFLEN "xoflen"
# define OSSL_DRBG_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER
# define OSSL_DRBG_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST
# define OSSL_DRBG_PARAM_ENTROPY_REQUIRED "entropy_required"
# define OSSL_DRBG_PARAM_MAC OSSL_ALG_PARAM_MAC
# define OSSL_DRBG_PARAM_MAX_ADINLEN "max_adinlen"
# define OSSL_DRBG_PARAM_MAX_ENTROPYLEN "max_entropylen"
# define OSSL_DRBG_PARAM_MAX_LENGTH "maxium_length"
# define OSSL_DRBG_PARAM_MAX_NONCELEN "max_noncelen"
# define OSSL_DRBG_PARAM_MAX_PERSLEN "max_perslen"
# define OSSL_DRBG_PARAM_MIN_ENTROPYLEN "min_entropylen"
# define OSSL_DRBG_PARAM_MIN_LENGTH "minium_length"
# define OSSL_DRBG_PARAM_MIN_NONCELEN "min_noncelen"
# define OSSL_DRBG_PARAM_PREDICTION_RESISTANCE "prediction_resistance"
# define OSSL_DRBG_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
# define OSSL_DRBG_PARAM_RANDOM_DATA "random_data"
# define OSSL_DRBG_PARAM_RESEED_COUNTER "reseed_counter"
# define OSSL_DRBG_PARAM_RESEED_REQUESTS "reseed_requests"
# define OSSL_DRBG_PARAM_RESEED_TIME "reseed_time"
# define OSSL_DRBG_PARAM_RESEED_TIME_INTERVAL "reseed_time_interval"
# define OSSL_DRBG_PARAM_SIZE "size"
# define OSSL_DRBG_PARAM_USE_DF "use_derivation_function"
# define OSSL_ENCODER_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER
# define OSSL_ENCODER_PARAM_ENCRYPT_LEVEL "encrypt-level"
# define OSSL_ENCODER_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
# define OSSL_ENCODER_PARAM_SAVE_PARAMETERS "save-parameters"
# define OSSL_EXCHANGE_PARAM_EC_ECDH_COFACTOR_MODE "ecdh-cofactor-mode"
# define OSSL_EXCHANGE_PARAM_KDF_DIGEST "kdf-digest"
# define OSSL_EXCHANGE_PARAM_KDF_DIGEST_PROPS "kdf-digest-props"
# define OSSL_EXCHANGE_PARAM_KDF_OUTLEN "kdf-outlen"
# define OSSL_EXCHANGE_PARAM_KDF_TYPE "kdf-type"
# define OSSL_EXCHANGE_PARAM_KDF_UKM "kdf-ukm"
# define OSSL_EXCHANGE_PARAM_PAD "pad"
# define OSSL_GEN_PARAM_ITERATION "iteration"
# define OSSL_GEN_PARAM_POTENTIAL "potential"
# define OSSL_KDF_PARAM_ARGON2_AD "ad"
# define OSSL_KDF_PARAM_ARGON2_LANES "lanes"
# define OSSL_KDF_PARAM_ARGON2_MEMCOST "memcost"
# define OSSL_KDF_PARAM_ARGON2_VERSION "version"
# define OSSL_KDF_PARAM_CEK_ALG "cekalg"
# define OSSL_KDF_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER
# define OSSL_KDF_PARAM_CONSTANT "constant"
# define OSSL_KDF_PARAM_DATA "data"
# define OSSL_KDF_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST
# define OSSL_KDF_PARAM_EARLY_CLEAN "early_clean"
# define OSSL_KDF_PARAM_HMACDRBG_ENTROPY "entropy"
# define OSSL_KDF_PARAM_HMACDRBG_NONCE "nonce"
# define OSSL_KDF_PARAM_INFO "info"
# define OSSL_KDF_PARAM_ITER "iter"
# define OSSL_KDF_PARAM_KBKDF_R "r"
# define OSSL_KDF_PARAM_KBKDF_USE_L "use-l"
# define OSSL_KDF_PARAM_KBKDF_USE_SEPARATOR "use-separator"
# define OSSL_KDF_PARAM_KEY "key"
# define OSSL_KDF_PARAM_LABEL "label"
# define OSSL_KDF_PARAM_MAC OSSL_ALG_PARAM_MAC
# define OSSL_KDF_PARAM_MAC_SIZE "maclen"
# define OSSL_KDF_PARAM_MODE "mode"
# define OSSL_KDF_PARAM_PASSWORD "pass"
# define OSSL_KDF_PARAM_PKCS12_ID "id"
# define OSSL_KDF_PARAM_PKCS5 "pkcs5"
# define OSSL_KDF_PARAM_PREFIX "prefix"
# define OSSL_KDF_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
# define OSSL_KDF_PARAM_SALT "salt"
# define OSSL_KDF_PARAM_SCRYPT_MAXMEM "maxmem_bytes"
# define OSSL_KDF_PARAM_SCRYPT_N "n"
# define OSSL_KDF_PARAM_SCRYPT_P "p"
# define OSSL_KDF_PARAM_SCRYPT_R "r"
# define OSSL_KDF_PARAM_SECRET "secret"
# define OSSL_KDF_PARAM_SEED "seed"
# define OSSL_KDF_PARAM_SIZE "size"
# define OSSL_KDF_PARAM_SSHKDF_SESSION_ID "session_id"
# define OSSL_KDF_PARAM_SSHKDF_TYPE "type"
# define OSSL_KDF_PARAM_SSHKDF_XCGHASH "xcghash"
# define OSSL_KDF_PARAM_THREADS "threads"
# define OSSL_KDF_PARAM_UKM "ukm"
# define OSSL_KDF_PARAM_X942_ACVPINFO "acvp-info"
# define OSSL_KDF_PARAM_X942_PARTYUINFO "partyu-info"
# define OSSL_KDF_PARAM_X942_PARTYVINFO "partyv-info"
# define OSSL_KDF_PARAM_X942_SUPP_PRIVINFO "supp-privinfo"
# define OSSL_KDF_PARAM_X942_SUPP_PUBINFO "supp-pubinfo"
# define OSSL_KDF_PARAM_X942_USE_KEYBITS "use-keybits"
# define OSSL_KEM_PARAM_IKME "ikme"
# define OSSL_KEM_PARAM_OPERATION "operation"
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_BLOCK_PADDING "block_padding"
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_EARLY_DATA "max_early_data"
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MAX_FRAG_LEN "max_frag_len"
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_MODE "mode"
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_OPTIONS "options"
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_READ_AHEAD "read_ahead"
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_STREAM_MAC "stream_mac"
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_TLSTREE "tlstree"
# define OSSL_LIBSSL_RECORD_LAYER_PARAM_USE_ETM "use_etm"
# define OSSL_LIBSSL_RECORD_LAYER_READ_BUFFER_LEN "read_buffer_len"
# define OSSL_MAC_PARAM_BLOCK_SIZE "block-size"
# define OSSL_MAC_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER
# define OSSL_MAC_PARAM_CUSTOM "custom"
# define OSSL_MAC_PARAM_C_ROUNDS "c-rounds"
# define OSSL_MAC_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST
# define OSSL_MAC_PARAM_DIGEST_NOINIT "digest-noinit"
# define OSSL_MAC_PARAM_DIGEST_ONESHOT "digest-oneshot"
# define OSSL_MAC_PARAM_D_ROUNDS "d-rounds"
# define OSSL_MAC_PARAM_IV "iv"
# define OSSL_MAC_PARAM_KEY "key"
# define OSSL_MAC_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
# define OSSL_MAC_PARAM_SALT "salt"
# define OSSL_MAC_PARAM_SIZE "size"
# define OSSL_MAC_PARAM_TLS_DATA_SIZE "tls-data-size"
# define OSSL_MAC_PARAM_XOF "xof"
# define OSSL_OBJECT_PARAM_DATA "data"
# define OSSL_OBJECT_PARAM_DATA_STRUCTURE "data-structure"
# define OSSL_OBJECT_PARAM_DATA_TYPE "data-type"
# define OSSL_OBJECT_PARAM_DESC "desc"
# define OSSL_OBJECT_PARAM_REFERENCE "reference"
# define OSSL_OBJECT_PARAM_TYPE "type"
# define OSSL_PASSPHRASE_PARAM_INFO "info"
# define OSSL_PKEY_PARAM_BITS "bits"
# define OSSL_PKEY_PARAM_CIPHER OSSL_ALG_PARAM_CIPHER
# define OSSL_PKEY_PARAM_DEFAULT_DIGEST "default-digest"
# define OSSL_PKEY_PARAM_DHKEM_IKM "dhkem-ikm"
# define OSSL_PKEY_PARAM_DH_GENERATOR "safeprime-generator"
# define OSSL_PKEY_PARAM_DH_PRIV_LEN "priv_len"
# define OSSL_PKEY_PARAM_DIGEST OSSL_ALG_PARAM_DIGEST
# define OSSL_PKEY_PARAM_DIGEST_SIZE "digest-size"
# define OSSL_PKEY_PARAM_DIST_ID "distid"
# define OSSL_PKEY_PARAM_EC_A "a"
# define OSSL_PKEY_PARAM_EC_B "b"
# define OSSL_PKEY_PARAM_EC_CHAR2_M "m"
# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K1 "k1"
# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K2 "k2"
# define OSSL_PKEY_PARAM_EC_CHAR2_PP_K3 "k3"
# define OSSL_PKEY_PARAM_EC_CHAR2_TP_BASIS "tp"
# define OSSL_PKEY_PARAM_EC_CHAR2_TYPE "basis-type"
# define OSSL_PKEY_PARAM_EC_COFACTOR "cofactor"
# define OSSL_PKEY_PARAM_EC_DECODED_FROM_EXPLICIT_PARAMS "decoded-from-explicit"
# define OSSL_PKEY_PARAM_EC_ENCODING "encoding"
# define OSSL_PKEY_PARAM_EC_FIELD_TYPE "field-type"
# define OSSL_PKEY_PARAM_EC_GENERATOR "generator"
# define OSSL_PKEY_PARAM_EC_GROUP_CHECK_TYPE "group-check"
# define OSSL_PKEY_PARAM_EC_INCLUDE_PUBLIC "include-public"
# define OSSL_PKEY_PARAM_EC_ORDER "order"
# define OSSL_PKEY_PARAM_EC_P "p"
# define OSSL_PKEY_PARAM_EC_POINT_CONVERSION_FORMAT "point-format"
# define OSSL_PKEY_PARAM_EC_PUB_X "qx"
# define OSSL_PKEY_PARAM_EC_PUB_Y "qy"
# define OSSL_PKEY_PARAM_EC_SEED "seed"
# define OSSL_PKEY_PARAM_ENCODED_PUBLIC_KEY "encoded-pub-key"
# define OSSL_PKEY_PARAM_ENGINE OSSL_ALG_PARAM_ENGINE
# define OSSL_PKEY_PARAM_FFC_COFACTOR "j"
# define OSSL_PKEY_PARAM_FFC_DIGEST OSSL_PKEY_PARAM_DIGEST
# define OSSL_PKEY_PARAM_FFC_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES
# define OSSL_PKEY_PARAM_FFC_G "g"
# define OSSL_PKEY_PARAM_FFC_GINDEX "gindex"
# define OSSL_PKEY_PARAM_FFC_H "hindex"
# define OSSL_PKEY_PARAM_FFC_P "p"
# define OSSL_PKEY_PARAM_FFC_PBITS "pbits"
# define OSSL_PKEY_PARAM_FFC_PCOUNTER "pcounter"
# define OSSL_PKEY_PARAM_FFC_Q "q"
# define OSSL_PKEY_PARAM_FFC_QBITS "qbits"
# define OSSL_PKEY_PARAM_FFC_SEED "seed"
# define OSSL_PKEY_PARAM_FFC_TYPE "type"
# define OSSL_PKEY_PARAM_FFC_VALIDATE_G "validate-g"
# define OSSL_PKEY_PARAM_FFC_VALIDATE_LEGACY "validate-legacy"
# define OSSL_PKEY_PARAM_FFC_VALIDATE_PQ "validate-pq"
# define OSSL_PKEY_PARAM_GROUP_NAME "group"
# define OSSL_PKEY_PARAM_IMPLICIT_REJECTION "implicit-rejection"
# define OSSL_PKEY_PARAM_MANDATORY_DIGEST "mandatory-digest"
# define OSSL_PKEY_PARAM_MASKGENFUNC "mgf"
# define OSSL_PKEY_PARAM_MAX_SIZE "max-size"
# define OSSL_PKEY_PARAM_MGF1_DIGEST "mgf1-digest"
# define OSSL_PKEY_PARAM_MGF1_PROPERTIES "mgf1-properties"
# define OSSL_PKEY_PARAM_PAD_MODE "pad-mode"
# define OSSL_PKEY_PARAM_PRIV_KEY "priv"
# define OSSL_PKEY_PARAM_PROPERTIES OSSL_ALG_PARAM_PROPERTIES
# define OSSL_PKEY_PARAM_PUB_KEY "pub"
# define OSSL_PKEY_PARAM_RSA_BITS OSSL_PKEY_PARAM_BITS
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT "rsa-coefficient"
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT1 "rsa-coefficient1"
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT2 "rsa-coefficient2"
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT3 "rsa-coefficient3"
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT4 "rsa-coefficient4"
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT5 "rsa-coefficient5"
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT6 "rsa-coefficient6"
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT7 "rsa-coefficient7"
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT8 "rsa-coefficient8"
# define OSSL_PKEY_PARAM_RSA_COEFFICIENT9 "rsa-coefficient9"
# define OSSL_PKEY_PARAM_RSA_D "d"
# define OSSL_PKEY_PARAM_RSA_DIGEST OSSL_PKEY_PARAM_DIGEST
# define OSSL_PKEY_PARAM_RSA_DIGEST_PROPS OSSL_PKEY_PARAM_PROPERTIES
# define OSSL_PKEY_PARAM_RSA_E "e"
# define OSSL_PKEY_PARAM_RSA_EXPONENT "rsa-exponent"
# define OSSL_PKEY_PARAM_RSA_EXPONENT1 "rsa-exponent1"
# define OSSL_PKEY_PARAM_RSA_EXPONENT10 "rsa-exponent10"
# define OSSL_PKEY_PARAM_RSA_EXPONENT2 "rsa-exponent2"
# define OSSL_PKEY_PARAM_RSA_EXPONENT3 "rsa-exponent3"
# define OSSL_PKEY_PARAM_RSA_EXPONENT4 "rsa-exponent4"
# define OSSL_PKEY_PARAM_RSA_EXPONENT5 "rsa-exponent5"
# define OSSL_PKEY_PARAM_RSA_EXPONENT6 "rsa-exponent6"
# define OSSL_PKEY_PARAM_RSA_EXPONENT7 "rsa-exponent7"
# define OSSL_PKEY_PARAM_RSA_EXPONENT8 "rsa-exponent8"
# define OSSL_PKEY_PARAM_RSA_EXPONENT9 "rsa-exponent9"
# define OSSL_PKEY_PARAM_RSA_FACTOR "rsa-factor"
# define OSSL_PKEY_PARAM_RSA_FACTOR1 "rsa-factor1"
# define OSSL_PKEY_PARAM_RSA_FACTOR10 "rsa-factor10"
# define OSSL_PKEY_PARAM_RSA_FACTOR2 "rsa-factor2"
# define OSSL_PKEY_PARAM_RSA_FACTOR3 "rsa-factor3"
# define OSSL_PKEY_PARAM_RSA_FACTOR4 "rsa-factor4"
# define OSSL_PKEY_PARAM_RSA_FACTOR5 "rsa-factor5"
# define OSSL_PKEY_PARAM_RSA_FACTOR6 "rsa-factor6"
# define OSSL_PKEY_PARAM_RSA_FACTOR7 "rsa-factor7"
# define OSSL_PKEY_PARAM_RSA_FACTOR8 "rsa-factor8"
# define OSSL_PKEY_PARAM_RSA_FACTOR9 "rsa-factor9"
# define OSSL_PKEY_PARAM_RSA_MASKGENFUNC OSSL_PKEY_PARAM_MASKGENFUNC
# define OSSL_PKEY_PARAM_RSA_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST
# define OSSL_PKEY_PARAM_RSA_N "n"
# define OSSL_PKEY_PARAM_RSA_PRIMES "primes"
# define OSSL_PKEY_PARAM_RSA_PSS_SALTLEN "saltlen"
# define OSSL_PKEY_PARAM_RSA_TEST_P1 "p1"
# define OSSL_PKEY_PARAM_RSA_TEST_P2 "p2"
# define OSSL_PKEY_PARAM_RSA_TEST_Q1 "q1"
# define OSSL_PKEY_PARAM_RSA_TEST_Q2 "q2"
# define OSSL_PKEY_PARAM_RSA_TEST_XP "xp"
# define OSSL_PKEY_PARAM_RSA_TEST_XP1 "xp1"
# define OSSL_PKEY_PARAM_RSA_TEST_XP2 "xp2"
# define OSSL_PKEY_PARAM_RSA_TEST_XQ "xq"
# define OSSL_PKEY_PARAM_RSA_TEST_XQ1 "xq1"
# define OSSL_PKEY_PARAM_RSA_TEST_XQ2 "xq2"
# define OSSL_PKEY_PARAM_SECURITY_BITS "security-bits"
# define OSSL_PKEY_PARAM_USE_COFACTOR_ECDH OSSL_PKEY_PARAM_USE_COFACTOR_FLAG
# define OSSL_PKEY_PARAM_USE_COFACTOR_FLAG "use-cofactor-flag"
# define OSSL_PROV_PARAM_BUILDINFO "buildinfo"
# define OSSL_PROV_PARAM_CORE_MODULE_FILENAME "module-filename"
# define OSSL_PROV_PARAM_CORE_PROV_NAME "provider-name"
# define OSSL_PROV_PARAM_CORE_VERSION "openssl-version"
# define OSSL_PROV_PARAM_DRBG_TRUNC_DIGEST "drbg-no-trunc-md"
# define OSSL_PROV_PARAM_NAME "name"
# define OSSL_PROV_PARAM_SECURITY_CHECKS "security-checks"
# define OSSL_PROV_PARAM_SELF_TEST_DESC "st-desc"
# define OSSL_PROV_PARAM_SELF_TEST_PHASE "st-phase"
# define OSSL_PROV_PARAM_SELF_TEST_TYPE "st-type"
# define OSSL_PROV_PARAM_STATUS "status"
# define OSSL_PROV_PARAM_TLS1_PRF_EMS_CHECK "tls1-prf-ems-check"
# define OSSL_PROV_PARAM_VERSION "version"
# define OSSL_RAND_PARAM_GENERATE "generate"
# define OSSL_RAND_PARAM_MAX_REQUEST "max_request"
# define OSSL_RAND_PARAM_STATE "state"
# define OSSL_RAND_PARAM_STRENGTH "strength"
# define OSSL_RAND_PARAM_TEST_ENTROPY "test_entropy"
# define OSSL_RAND_PARAM_TEST_NONCE "test_nonce"
# define OSSL_SIGNATURE_PARAM_ALGORITHM_ID "algorithm-id"
# define OSSL_SIGNATURE_PARAM_CONTEXT_STRING "context-string"
# define OSSL_SIGNATURE_PARAM_DIGEST OSSL_PKEY_PARAM_DIGEST
# define OSSL_SIGNATURE_PARAM_DIGEST_SIZE OSSL_PKEY_PARAM_DIGEST_SIZE
# define OSSL_SIGNATURE_PARAM_INSTANCE "instance"
# define OSSL_SIGNATURE_PARAM_KAT "kat"
# define OSSL_SIGNATURE_PARAM_MGF1_DIGEST OSSL_PKEY_PARAM_MGF1_DIGEST
# define OSSL_SIGNATURE_PARAM_MGF1_PROPERTIES OSSL_PKEY_PARAM_MGF1_PROPERTIES
# define OSSL_SIGNATURE_PARAM_NONCE_TYPE "nonce-type"
# define OSSL_SIGNATURE_PARAM_PAD_MODE OSSL_PKEY_PARAM_PAD_MODE
# define OSSL_SIGNATURE_PARAM_PROPERTIES OSSL_PKEY_PARAM_PROPERTIES
# define OSSL_SIGNATURE_PARAM_PSS_SALTLEN "saltlen"
# define OSSL_STORE_PARAM_ALIAS "alias"
# define OSSL_STORE_PARAM_DIGEST "digest"
# define OSSL_STORE_PARAM_EXPECT "expect"
# define OSSL_STORE_PARAM_FINGERPRINT "fingerprint"
# define OSSL_STORE_PARAM_INPUT_TYPE "input-type"
# define OSSL_STORE_PARAM_ISSUER "name"
# define OSSL_STORE_PARAM_PROPERTIES "properties"
# define OSSL_STORE_PARAM_SERIAL "serial"
# define OSSL_STORE_PARAM_SUBJECT "subject"
# ifdef __cplusplus
}
# endif
#endif

View File

@@ -0,0 +1,41 @@
/*
* Copyright 2020-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CORE_OBJECT_H
# define OPENSSL_CORE_OBJECT_H
# pragma once
# ifdef __cplusplus
extern "C" {
# endif
/*-
* Known object types
*
* These numbers are used as values for the OSSL_PARAM parameter
* OSSL_OBJECT_PARAM_TYPE.
*
* For most of these types, there's a corresponding libcrypto object type.
* The corresponding type is indicated with a comment after the number.
*/
# define OSSL_OBJECT_UNKNOWN 0
# define OSSL_OBJECT_NAME 1 /* char * */
# define OSSL_OBJECT_PKEY 2 /* EVP_PKEY * */
# define OSSL_OBJECT_CERT 3 /* X509 * */
# define OSSL_OBJECT_CRL 4 /* X509_CRL * */
/*
* The rest of the associated OSSL_PARAM elements is described in core_names.h
*/
# ifdef __cplusplus
}
# endif
#endif

View File

@@ -0,0 +1,229 @@
/*-
* WARNING: do not edit!
* Generated by Makefile from include/openssl/crmf.h.in
*
* Copyright 2007-2023 The OpenSSL Project Authors. All Rights Reserved.
* Copyright Nokia 2007-2019
* Copyright Siemens AG 2015-2019
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*
* CRMF (RFC 4211) implementation by M. Peylo, M. Viljanen, and D. von Oheimb.
*/
#ifndef OPENSSL_CRMF_H
# define OPENSSL_CRMF_H
# include <openssl/opensslconf.h>
# ifndef OPENSSL_NO_CRMF
# include <openssl/opensslv.h>
# include <openssl/safestack.h>
# include <openssl/crmferr.h>
# include <openssl/x509v3.h> /* for GENERAL_NAME etc. */
/* explicit #includes not strictly needed since implied by the above: */
# include <openssl/types.h>
# include <openssl/x509.h>
# ifdef __cplusplus
extern "C" {
# endif
# define OSSL_CRMF_POPOPRIVKEY_THISMESSAGE 0
# define OSSL_CRMF_POPOPRIVKEY_SUBSEQUENTMESSAGE 1
# define OSSL_CRMF_POPOPRIVKEY_DHMAC 2
# define OSSL_CRMF_POPOPRIVKEY_AGREEMAC 3
# define OSSL_CRMF_POPOPRIVKEY_ENCRYPTEDKEY 4
# define OSSL_CRMF_SUBSEQUENTMESSAGE_ENCRCERT 0
# define OSSL_CRMF_SUBSEQUENTMESSAGE_CHALLENGERESP 1
typedef struct ossl_crmf_encryptedvalue_st OSSL_CRMF_ENCRYPTEDVALUE;
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_ENCRYPTEDVALUE)
typedef struct ossl_crmf_msg_st OSSL_CRMF_MSG;
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSG)
DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_MSG)
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_MSG, OSSL_CRMF_MSG, OSSL_CRMF_MSG)
#define sk_OSSL_CRMF_MSG_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))
#define sk_OSSL_CRMF_MSG_value(sk, idx) ((OSSL_CRMF_MSG *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), (idx)))
#define sk_OSSL_CRMF_MSG_new(cmp) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp)))
#define sk_OSSL_CRMF_MSG_new_null() ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_null())
#define sk_OSSL_CRMF_MSG_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp), (n)))
#define sk_OSSL_CRMF_MSG_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (n))
#define sk_OSSL_CRMF_MSG_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk))
#define sk_OSSL_CRMF_MSG_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_MSG_sk_type(sk))
#define sk_OSSL_CRMF_MSG_delete(sk, i) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (i)))
#define sk_OSSL_CRMF_MSG_delete_ptr(sk, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr)))
#define sk_OSSL_CRMF_MSG_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))
#define sk_OSSL_CRMF_MSG_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))
#define sk_OSSL_CRMF_MSG_pop(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_MSG_sk_type(sk)))
#define sk_OSSL_CRMF_MSG_shift(sk) ((OSSL_CRMF_MSG *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_MSG_sk_type(sk)))
#define sk_OSSL_CRMF_MSG_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_MSG_sk_type(sk),ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc))
#define sk_OSSL_CRMF_MSG_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), (idx))
#define sk_OSSL_CRMF_MSG_set(sk, idx, ptr) ((OSSL_CRMF_MSG *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_MSG_sk_type(sk), (idx), ossl_check_OSSL_CRMF_MSG_type(ptr)))
#define sk_OSSL_CRMF_MSG_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))
#define sk_OSSL_CRMF_MSG_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr))
#define sk_OSSL_CRMF_MSG_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_type(ptr), pnum)
#define sk_OSSL_CRMF_MSG_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_MSG_sk_type(sk))
#define sk_OSSL_CRMF_MSG_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk))
#define sk_OSSL_CRMF_MSG_dup(sk) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk)))
#define sk_OSSL_CRMF_MSG_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_MSG) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_MSG_freefunc_type(freefunc)))
#define sk_OSSL_CRMF_MSG_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_MSG_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_MSG_sk_type(sk), ossl_check_OSSL_CRMF_MSG_compfunc_type(cmp)))
typedef struct ossl_crmf_attributetypeandvalue_st OSSL_CRMF_ATTRIBUTETYPEANDVALUE;
typedef struct ossl_crmf_pbmparameter_st OSSL_CRMF_PBMPARAMETER;
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PBMPARAMETER)
typedef struct ossl_crmf_poposigningkey_st OSSL_CRMF_POPOSIGNINGKEY;
typedef struct ossl_crmf_certrequest_st OSSL_CRMF_CERTREQUEST;
typedef struct ossl_crmf_certid_st OSSL_CRMF_CERTID;
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTID)
DECLARE_ASN1_DUP_FUNCTION(OSSL_CRMF_CERTID)
SKM_DEFINE_STACK_OF_INTERNAL(OSSL_CRMF_CERTID, OSSL_CRMF_CERTID, OSSL_CRMF_CERTID)
#define sk_OSSL_CRMF_CERTID_num(sk) OPENSSL_sk_num(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))
#define sk_OSSL_CRMF_CERTID_value(sk, idx) ((OSSL_CRMF_CERTID *)OPENSSL_sk_value(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), (idx)))
#define sk_OSSL_CRMF_CERTID_new(cmp) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp)))
#define sk_OSSL_CRMF_CERTID_new_null() ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_null())
#define sk_OSSL_CRMF_CERTID_new_reserve(cmp, n) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_new_reserve(ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp), (n)))
#define sk_OSSL_CRMF_CERTID_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (n))
#define sk_OSSL_CRMF_CERTID_free(sk) OPENSSL_sk_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))
#define sk_OSSL_CRMF_CERTID_zero(sk) OPENSSL_sk_zero(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))
#define sk_OSSL_CRMF_CERTID_delete(sk, i) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (i)))
#define sk_OSSL_CRMF_CERTID_delete_ptr(sk, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_delete_ptr(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr)))
#define sk_OSSL_CRMF_CERTID_push(sk, ptr) OPENSSL_sk_push(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))
#define sk_OSSL_CRMF_CERTID_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))
#define sk_OSSL_CRMF_CERTID_pop(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_pop(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)))
#define sk_OSSL_CRMF_CERTID_shift(sk) ((OSSL_CRMF_CERTID *)OPENSSL_sk_shift(ossl_check_OSSL_CRMF_CERTID_sk_type(sk)))
#define sk_OSSL_CRMF_CERTID_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_OSSL_CRMF_CERTID_sk_type(sk),ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc))
#define sk_OSSL_CRMF_CERTID_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), (idx))
#define sk_OSSL_CRMF_CERTID_set(sk, idx, ptr) ((OSSL_CRMF_CERTID *)OPENSSL_sk_set(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), (idx), ossl_check_OSSL_CRMF_CERTID_type(ptr)))
#define sk_OSSL_CRMF_CERTID_find(sk, ptr) OPENSSL_sk_find(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))
#define sk_OSSL_CRMF_CERTID_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr))
#define sk_OSSL_CRMF_CERTID_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_type(ptr), pnum)
#define sk_OSSL_CRMF_CERTID_sort(sk) OPENSSL_sk_sort(ossl_check_OSSL_CRMF_CERTID_sk_type(sk))
#define sk_OSSL_CRMF_CERTID_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk))
#define sk_OSSL_CRMF_CERTID_dup(sk) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_dup(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk)))
#define sk_OSSL_CRMF_CERTID_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(OSSL_CRMF_CERTID) *)OPENSSL_sk_deep_copy(ossl_check_const_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_copyfunc_type(copyfunc), ossl_check_OSSL_CRMF_CERTID_freefunc_type(freefunc)))
#define sk_OSSL_CRMF_CERTID_set_cmp_func(sk, cmp) ((sk_OSSL_CRMF_CERTID_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_OSSL_CRMF_CERTID_sk_type(sk), ossl_check_OSSL_CRMF_CERTID_compfunc_type(cmp)))
typedef struct ossl_crmf_pkipublicationinfo_st OSSL_CRMF_PKIPUBLICATIONINFO;
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_PKIPUBLICATIONINFO)
typedef struct ossl_crmf_singlepubinfo_st OSSL_CRMF_SINGLEPUBINFO;
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_SINGLEPUBINFO)
typedef struct ossl_crmf_certtemplate_st OSSL_CRMF_CERTTEMPLATE;
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_CERTTEMPLATE)
typedef STACK_OF(OSSL_CRMF_MSG) OSSL_CRMF_MSGS;
DECLARE_ASN1_FUNCTIONS(OSSL_CRMF_MSGS)
typedef struct ossl_crmf_optionalvalidity_st OSSL_CRMF_OPTIONALVALIDITY;
/* crmf_pbm.c */
OSSL_CRMF_PBMPARAMETER *OSSL_CRMF_pbmp_new(OSSL_LIB_CTX *libctx, size_t slen,
int owfnid, size_t itercnt,
int macnid);
int OSSL_CRMF_pbm_new(OSSL_LIB_CTX *libctx, const char *propq,
const OSSL_CRMF_PBMPARAMETER *pbmp,
const unsigned char *msg, size_t msglen,
const unsigned char *sec, size_t seclen,
unsigned char **mac, size_t *maclen);
/* crmf_lib.c */
int OSSL_CRMF_MSG_set1_regCtrl_regToken(OSSL_CRMF_MSG *msg,
const ASN1_UTF8STRING *tok);
ASN1_UTF8STRING
*OSSL_CRMF_MSG_get0_regCtrl_regToken(const OSSL_CRMF_MSG *msg);
int OSSL_CRMF_MSG_set1_regCtrl_authenticator(OSSL_CRMF_MSG *msg,
const ASN1_UTF8STRING *auth);
ASN1_UTF8STRING
*OSSL_CRMF_MSG_get0_regCtrl_authenticator(const OSSL_CRMF_MSG *msg);
int
OSSL_CRMF_MSG_PKIPublicationInfo_push0_SinglePubInfo(OSSL_CRMF_PKIPUBLICATIONINFO *pi,
OSSL_CRMF_SINGLEPUBINFO *spi);
# define OSSL_CRMF_PUB_METHOD_DONTCARE 0
# define OSSL_CRMF_PUB_METHOD_X500 1
# define OSSL_CRMF_PUB_METHOD_WEB 2
# define OSSL_CRMF_PUB_METHOD_LDAP 3
int OSSL_CRMF_MSG_set0_SinglePubInfo(OSSL_CRMF_SINGLEPUBINFO *spi,
int method, GENERAL_NAME *nm);
# define OSSL_CRMF_PUB_ACTION_DONTPUBLISH 0
# define OSSL_CRMF_PUB_ACTION_PLEASEPUBLISH 1
int OSSL_CRMF_MSG_set_PKIPublicationInfo_action(OSSL_CRMF_PKIPUBLICATIONINFO *pi,
int action);
int OSSL_CRMF_MSG_set1_regCtrl_pkiPublicationInfo(OSSL_CRMF_MSG *msg,
const OSSL_CRMF_PKIPUBLICATIONINFO *pi);
OSSL_CRMF_PKIPUBLICATIONINFO
*OSSL_CRMF_MSG_get0_regCtrl_pkiPublicationInfo(const OSSL_CRMF_MSG *msg);
int OSSL_CRMF_MSG_set1_regCtrl_protocolEncrKey(OSSL_CRMF_MSG *msg,
const X509_PUBKEY *pubkey);
X509_PUBKEY
*OSSL_CRMF_MSG_get0_regCtrl_protocolEncrKey(const OSSL_CRMF_MSG *msg);
int OSSL_CRMF_MSG_set1_regCtrl_oldCertID(OSSL_CRMF_MSG *msg,
const OSSL_CRMF_CERTID *cid);
OSSL_CRMF_CERTID
*OSSL_CRMF_MSG_get0_regCtrl_oldCertID(const OSSL_CRMF_MSG *msg);
OSSL_CRMF_CERTID *OSSL_CRMF_CERTID_gen(const X509_NAME *issuer,
const ASN1_INTEGER *serial);
int OSSL_CRMF_MSG_set1_regInfo_utf8Pairs(OSSL_CRMF_MSG *msg,
const ASN1_UTF8STRING *utf8pairs);
ASN1_UTF8STRING
*OSSL_CRMF_MSG_get0_regInfo_utf8Pairs(const OSSL_CRMF_MSG *msg);
int OSSL_CRMF_MSG_set1_regInfo_certReq(OSSL_CRMF_MSG *msg,
const OSSL_CRMF_CERTREQUEST *cr);
OSSL_CRMF_CERTREQUEST
*OSSL_CRMF_MSG_get0_regInfo_certReq(const OSSL_CRMF_MSG *msg);
int OSSL_CRMF_MSG_set0_validity(OSSL_CRMF_MSG *crm,
ASN1_TIME *notBefore, ASN1_TIME *notAfter);
int OSSL_CRMF_MSG_set_certReqId(OSSL_CRMF_MSG *crm, int rid);
int OSSL_CRMF_MSG_get_certReqId(const OSSL_CRMF_MSG *crm);
int OSSL_CRMF_MSG_set0_extensions(OSSL_CRMF_MSG *crm, X509_EXTENSIONS *exts);
int OSSL_CRMF_MSG_push0_extension(OSSL_CRMF_MSG *crm, X509_EXTENSION *ext);
# define OSSL_CRMF_POPO_NONE -1
# define OSSL_CRMF_POPO_RAVERIFIED 0
# define OSSL_CRMF_POPO_SIGNATURE 1
# define OSSL_CRMF_POPO_KEYENC 2
# define OSSL_CRMF_POPO_KEYAGREE 3
int OSSL_CRMF_MSG_create_popo(int meth, OSSL_CRMF_MSG *crm,
EVP_PKEY *pkey, const EVP_MD *digest,
OSSL_LIB_CTX *libctx, const char *propq);
int OSSL_CRMF_MSGS_verify_popo(const OSSL_CRMF_MSGS *reqs,
int rid, int acceptRAVerified,
OSSL_LIB_CTX *libctx, const char *propq);
OSSL_CRMF_CERTTEMPLATE *OSSL_CRMF_MSG_get0_tmpl(const OSSL_CRMF_MSG *crm);
X509_PUBKEY
*OSSL_CRMF_CERTTEMPLATE_get0_publicKey(const OSSL_CRMF_CERTTEMPLATE *tmpl);
const X509_NAME
*OSSL_CRMF_CERTTEMPLATE_get0_subject(const OSSL_CRMF_CERTTEMPLATE *tmpl);
const X509_NAME
*OSSL_CRMF_CERTTEMPLATE_get0_issuer(const OSSL_CRMF_CERTTEMPLATE *tmpl);
const ASN1_INTEGER
*OSSL_CRMF_CERTTEMPLATE_get0_serialNumber(const OSSL_CRMF_CERTTEMPLATE *tmpl);
X509_EXTENSIONS
*OSSL_CRMF_CERTTEMPLATE_get0_extensions(const OSSL_CRMF_CERTTEMPLATE *tmpl);
const X509_NAME
*OSSL_CRMF_CERTID_get0_issuer(const OSSL_CRMF_CERTID *cid);
const ASN1_INTEGER
*OSSL_CRMF_CERTID_get0_serialNumber(const OSSL_CRMF_CERTID *cid);
int OSSL_CRMF_CERTTEMPLATE_fill(OSSL_CRMF_CERTTEMPLATE *tmpl,
EVP_PKEY *pubkey,
const X509_NAME *subject,
const X509_NAME *issuer,
const ASN1_INTEGER *serial);
X509
*OSSL_CRMF_ENCRYPTEDVALUE_get1_encCert(const OSSL_CRMF_ENCRYPTEDVALUE *ecert,
OSSL_LIB_CTX *libctx, const char *propq,
EVP_PKEY *pkey);
# ifdef __cplusplus
}
# endif
# endif /* !defined(OPENSSL_NO_CRMF) */
#endif /* !defined(OPENSSL_CRMF_H) */

View File

@@ -0,0 +1,50 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
* Copyright 1995-2021 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CRMFERR_H
# define OPENSSL_CRMFERR_H
# pragma once
# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>
# ifndef OPENSSL_NO_CRMF
/*
* CRMF reason codes.
*/
# define CRMF_R_BAD_PBM_ITERATIONCOUNT 100
# define CRMF_R_CRMFERROR 102
# define CRMF_R_ERROR 103
# define CRMF_R_ERROR_DECODING_CERTIFICATE 104
# define CRMF_R_ERROR_DECRYPTING_CERTIFICATE 105
# define CRMF_R_ERROR_DECRYPTING_SYMMETRIC_KEY 106
# define CRMF_R_FAILURE_OBTAINING_RANDOM 107
# define CRMF_R_ITERATIONCOUNT_BELOW_100 108
# define CRMF_R_MALFORMED_IV 101
# define CRMF_R_NULL_ARGUMENT 109
# define CRMF_R_POPOSKINPUT_NOT_SUPPORTED 113
# define CRMF_R_POPO_INCONSISTENT_PUBLIC_KEY 117
# define CRMF_R_POPO_MISSING 121
# define CRMF_R_POPO_MISSING_PUBLIC_KEY 118
# define CRMF_R_POPO_MISSING_SUBJECT 119
# define CRMF_R_POPO_RAVERIFIED_NOT_ACCEPTED 120
# define CRMF_R_SETTING_MAC_ALGOR_FAILURE 110
# define CRMF_R_SETTING_OWF_ALGOR_FAILURE 111
# define CRMF_R_UNSUPPORTED_ALGORITHM 112
# define CRMF_R_UNSUPPORTED_CIPHER 114
# define CRMF_R_UNSUPPORTED_METHOD_FOR_CREATING_POPO 115
# define CRMF_R_UNSUPPORTED_POPO_METHOD 116
# endif
#endif

View File

@@ -0,0 +1,561 @@
/*
* WARNING: do not edit!
* Generated by Makefile from include/openssl/crypto.h.in
*
* Copyright 1995-2023 The OpenSSL Project Authors. All Rights Reserved.
* Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CRYPTO_H
# define OPENSSL_CRYPTO_H
# pragma once
# include <openssl/macros.h>
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define HEADER_CRYPTO_H
# endif
# include <stdlib.h>
# include <time.h>
# include <openssl/e_os2.h>
# ifndef OPENSSL_NO_STDIO
# include <stdio.h>
# endif
# include <openssl/safestack.h>
# include <openssl/opensslv.h>
# include <openssl/types.h>
# include <openssl/opensslconf.h>
# include <openssl/cryptoerr.h>
# include <openssl/core.h>
# ifdef CHARSET_EBCDIC
# include <openssl/ebcdic.h>
# endif
/*
* Resolve problems on some operating systems with symbol names that clash
* one way or another
*/
# include <openssl/symhacks.h>
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
# include <openssl/opensslv.h>
# endif
#ifdef __cplusplus
extern "C" {
#endif
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
# define SSLeay OpenSSL_version_num
# define SSLeay_version OpenSSL_version
# define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER
# define SSLEAY_VERSION OPENSSL_VERSION
# define SSLEAY_CFLAGS OPENSSL_CFLAGS
# define SSLEAY_BUILT_ON OPENSSL_BUILT_ON
# define SSLEAY_PLATFORM OPENSSL_PLATFORM
# define SSLEAY_DIR OPENSSL_DIR
/*
* Old type for allocating dynamic locks. No longer used. Use the new thread
* API instead.
*/
typedef struct {
int dummy;
} CRYPTO_dynlock;
# endif /* OPENSSL_NO_DEPRECATED_1_1_0 */
typedef void CRYPTO_RWLOCK;
CRYPTO_RWLOCK *CRYPTO_THREAD_lock_new(void);
__owur int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock);
__owur int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock);
int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock);
void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock);
int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock);
int CRYPTO_atomic_or(uint64_t *val, uint64_t op, uint64_t *ret,
CRYPTO_RWLOCK *lock);
int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock);
int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock);
/* No longer needed, so this is a no-op */
#define OPENSSL_malloc_init() while(0) continue
# define OPENSSL_malloc(num) \
CRYPTO_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_zalloc(num) \
CRYPTO_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_realloc(addr, num) \
CRYPTO_realloc(addr, num, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_clear_realloc(addr, old_num, num) \
CRYPTO_clear_realloc(addr, old_num, num, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_clear_free(addr, num) \
CRYPTO_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_free(addr) \
CRYPTO_free(addr, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_memdup(str, s) \
CRYPTO_memdup((str), s, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_strdup(str) \
CRYPTO_strdup(str, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_strndup(str, n) \
CRYPTO_strndup(str, n, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_secure_malloc(num) \
CRYPTO_secure_malloc(num, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_secure_zalloc(num) \
CRYPTO_secure_zalloc(num, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_secure_free(addr) \
CRYPTO_secure_free(addr, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_secure_clear_free(addr, num) \
CRYPTO_secure_clear_free(addr, num, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_secure_actual_size(ptr) \
CRYPTO_secure_actual_size(ptr)
size_t OPENSSL_strlcpy(char *dst, const char *src, size_t siz);
size_t OPENSSL_strlcat(char *dst, const char *src, size_t siz);
size_t OPENSSL_strnlen(const char *str, size_t maxlen);
int OPENSSL_buf2hexstr_ex(char *str, size_t str_n, size_t *strlength,
const unsigned char *buf, size_t buflen,
const char sep);
char *OPENSSL_buf2hexstr(const unsigned char *buf, long buflen);
int OPENSSL_hexstr2buf_ex(unsigned char *buf, size_t buf_n, size_t *buflen,
const char *str, const char sep);
unsigned char *OPENSSL_hexstr2buf(const char *str, long *buflen);
int OPENSSL_hexchar2int(unsigned char c);
int OPENSSL_strcasecmp(const char *s1, const char *s2);
int OPENSSL_strncasecmp(const char *s1, const char *s2, size_t n);
# define OPENSSL_MALLOC_MAX_NELEMS(type) (((1U<<(sizeof(int)*8-1))-1)/sizeof(type))
/*
* These functions return the values of OPENSSL_VERSION_MAJOR,
* OPENSSL_VERSION_MINOR, OPENSSL_VERSION_PATCH, OPENSSL_VERSION_PRE_RELEASE
* and OPENSSL_VERSION_BUILD_METADATA, respectively.
*/
unsigned int OPENSSL_version_major(void);
unsigned int OPENSSL_version_minor(void);
unsigned int OPENSSL_version_patch(void);
const char *OPENSSL_version_pre_release(void);
const char *OPENSSL_version_build_metadata(void);
unsigned long OpenSSL_version_num(void);
const char *OpenSSL_version(int type);
# define OPENSSL_VERSION 0
# define OPENSSL_CFLAGS 1
# define OPENSSL_BUILT_ON 2
# define OPENSSL_PLATFORM 3
# define OPENSSL_DIR 4
# define OPENSSL_ENGINES_DIR 5
# define OPENSSL_VERSION_STRING 6
# define OPENSSL_FULL_VERSION_STRING 7
# define OPENSSL_MODULES_DIR 8
# define OPENSSL_CPU_INFO 9
const char *OPENSSL_info(int type);
/*
* The series starts at 1001 to avoid confusion with the OpenSSL_version
* types.
*/
# define OPENSSL_INFO_CONFIG_DIR 1001
# define OPENSSL_INFO_ENGINES_DIR 1002
# define OPENSSL_INFO_MODULES_DIR 1003
# define OPENSSL_INFO_DSO_EXTENSION 1004
# define OPENSSL_INFO_DIR_FILENAME_SEPARATOR 1005
# define OPENSSL_INFO_LIST_SEPARATOR 1006
# define OPENSSL_INFO_SEED_SOURCE 1007
# define OPENSSL_INFO_CPU_SETTINGS 1008
int OPENSSL_issetugid(void);
struct crypto_ex_data_st {
OSSL_LIB_CTX *ctx;
STACK_OF(void) *sk;
};
SKM_DEFINE_STACK_OF_INTERNAL(void, void, void)
#define sk_void_num(sk) OPENSSL_sk_num(ossl_check_const_void_sk_type(sk))
#define sk_void_value(sk, idx) ((void *)OPENSSL_sk_value(ossl_check_const_void_sk_type(sk), (idx)))
#define sk_void_new(cmp) ((STACK_OF(void) *)OPENSSL_sk_new(ossl_check_void_compfunc_type(cmp)))
#define sk_void_new_null() ((STACK_OF(void) *)OPENSSL_sk_new_null())
#define sk_void_new_reserve(cmp, n) ((STACK_OF(void) *)OPENSSL_sk_new_reserve(ossl_check_void_compfunc_type(cmp), (n)))
#define sk_void_reserve(sk, n) OPENSSL_sk_reserve(ossl_check_void_sk_type(sk), (n))
#define sk_void_free(sk) OPENSSL_sk_free(ossl_check_void_sk_type(sk))
#define sk_void_zero(sk) OPENSSL_sk_zero(ossl_check_void_sk_type(sk))
#define sk_void_delete(sk, i) ((void *)OPENSSL_sk_delete(ossl_check_void_sk_type(sk), (i)))
#define sk_void_delete_ptr(sk, ptr) ((void *)OPENSSL_sk_delete_ptr(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr)))
#define sk_void_push(sk, ptr) OPENSSL_sk_push(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))
#define sk_void_unshift(sk, ptr) OPENSSL_sk_unshift(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))
#define sk_void_pop(sk) ((void *)OPENSSL_sk_pop(ossl_check_void_sk_type(sk)))
#define sk_void_shift(sk) ((void *)OPENSSL_sk_shift(ossl_check_void_sk_type(sk)))
#define sk_void_pop_free(sk, freefunc) OPENSSL_sk_pop_free(ossl_check_void_sk_type(sk),ossl_check_void_freefunc_type(freefunc))
#define sk_void_insert(sk, ptr, idx) OPENSSL_sk_insert(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), (idx))
#define sk_void_set(sk, idx, ptr) ((void *)OPENSSL_sk_set(ossl_check_void_sk_type(sk), (idx), ossl_check_void_type(ptr)))
#define sk_void_find(sk, ptr) OPENSSL_sk_find(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))
#define sk_void_find_ex(sk, ptr) OPENSSL_sk_find_ex(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr))
#define sk_void_find_all(sk, ptr, pnum) OPENSSL_sk_find_all(ossl_check_void_sk_type(sk), ossl_check_void_type(ptr), pnum)
#define sk_void_sort(sk) OPENSSL_sk_sort(ossl_check_void_sk_type(sk))
#define sk_void_is_sorted(sk) OPENSSL_sk_is_sorted(ossl_check_const_void_sk_type(sk))
#define sk_void_dup(sk) ((STACK_OF(void) *)OPENSSL_sk_dup(ossl_check_const_void_sk_type(sk)))
#define sk_void_deep_copy(sk, copyfunc, freefunc) ((STACK_OF(void) *)OPENSSL_sk_deep_copy(ossl_check_const_void_sk_type(sk), ossl_check_void_copyfunc_type(copyfunc), ossl_check_void_freefunc_type(freefunc)))
#define sk_void_set_cmp_func(sk, cmp) ((sk_void_compfunc)OPENSSL_sk_set_cmp_func(ossl_check_void_sk_type(sk), ossl_check_void_compfunc_type(cmp)))
/*
* Per class, we have a STACK of function pointers.
*/
# define CRYPTO_EX_INDEX_SSL 0
# define CRYPTO_EX_INDEX_SSL_CTX 1
# define CRYPTO_EX_INDEX_SSL_SESSION 2
# define CRYPTO_EX_INDEX_X509 3
# define CRYPTO_EX_INDEX_X509_STORE 4
# define CRYPTO_EX_INDEX_X509_STORE_CTX 5
# define CRYPTO_EX_INDEX_DH 6
# define CRYPTO_EX_INDEX_DSA 7
# define CRYPTO_EX_INDEX_EC_KEY 8
# define CRYPTO_EX_INDEX_RSA 9
# define CRYPTO_EX_INDEX_ENGINE 10
# define CRYPTO_EX_INDEX_UI 11
# define CRYPTO_EX_INDEX_BIO 12
# define CRYPTO_EX_INDEX_APP 13
# define CRYPTO_EX_INDEX_UI_METHOD 14
# define CRYPTO_EX_INDEX_RAND_DRBG 15
# define CRYPTO_EX_INDEX_DRBG CRYPTO_EX_INDEX_RAND_DRBG
# define CRYPTO_EX_INDEX_OSSL_LIB_CTX 16
# define CRYPTO_EX_INDEX_EVP_PKEY 17
# define CRYPTO_EX_INDEX__COUNT 18
typedef void CRYPTO_EX_new (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
int idx, long argl, void *argp);
typedef void CRYPTO_EX_free (void *parent, void *ptr, CRYPTO_EX_DATA *ad,
int idx, long argl, void *argp);
typedef int CRYPTO_EX_dup (CRYPTO_EX_DATA *to, const CRYPTO_EX_DATA *from,
void **from_d, int idx, long argl, void *argp);
__owur int CRYPTO_get_ex_new_index(int class_index, long argl, void *argp,
CRYPTO_EX_new *new_func,
CRYPTO_EX_dup *dup_func,
CRYPTO_EX_free *free_func);
/* No longer use an index. */
int CRYPTO_free_ex_index(int class_index, int idx);
/*
* Initialise/duplicate/free CRYPTO_EX_DATA variables corresponding to a
* given class (invokes whatever per-class callbacks are applicable)
*/
int CRYPTO_new_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
int CRYPTO_dup_ex_data(int class_index, CRYPTO_EX_DATA *to,
const CRYPTO_EX_DATA *from);
void CRYPTO_free_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad);
/* Allocate a single item in the CRYPTO_EX_DATA variable */
int CRYPTO_alloc_ex_data(int class_index, void *obj, CRYPTO_EX_DATA *ad,
int idx);
/*
* Get/set data in a CRYPTO_EX_DATA variable corresponding to a particular
* index (relative to the class type involved)
*/
int CRYPTO_set_ex_data(CRYPTO_EX_DATA *ad, int idx, void *val);
void *CRYPTO_get_ex_data(const CRYPTO_EX_DATA *ad, int idx);
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
/*
* This function cleans up all "ex_data" state. It mustn't be called under
* potential race-conditions.
*/
# define CRYPTO_cleanup_all_ex_data() while(0) continue
/*
* The old locking functions have been removed completely without compatibility
* macros. This is because the old functions either could not properly report
* errors, or the returned error values were not clearly documented.
* Replacing the locking functions with no-ops would cause race condition
* issues in the affected applications. It is far better for them to fail at
* compile time.
* On the other hand, the locking callbacks are no longer used. Consequently,
* the callback management functions can be safely replaced with no-op macros.
*/
# define CRYPTO_num_locks() (1)
# define CRYPTO_set_locking_callback(func)
# define CRYPTO_get_locking_callback() (NULL)
# define CRYPTO_set_add_lock_callback(func)
# define CRYPTO_get_add_lock_callback() (NULL)
/*
* These defines where used in combination with the old locking callbacks,
* they are not called anymore, but old code that's not called might still
* use them.
*/
# define CRYPTO_LOCK 1
# define CRYPTO_UNLOCK 2
# define CRYPTO_READ 4
# define CRYPTO_WRITE 8
/* This structure is no longer used */
typedef struct crypto_threadid_st {
int dummy;
} CRYPTO_THREADID;
/* Only use CRYPTO_THREADID_set_[numeric|pointer]() within callbacks */
# define CRYPTO_THREADID_set_numeric(id, val)
# define CRYPTO_THREADID_set_pointer(id, ptr)
# define CRYPTO_THREADID_set_callback(threadid_func) (0)
# define CRYPTO_THREADID_get_callback() (NULL)
# define CRYPTO_THREADID_current(id)
# define CRYPTO_THREADID_cmp(a, b) (-1)
# define CRYPTO_THREADID_cpy(dest, src)
# define CRYPTO_THREADID_hash(id) (0UL)
# ifndef OPENSSL_NO_DEPRECATED_1_0_0
# define CRYPTO_set_id_callback(func)
# define CRYPTO_get_id_callback() (NULL)
# define CRYPTO_thread_id() (0UL)
# endif /* OPENSSL_NO_DEPRECATED_1_0_0 */
# define CRYPTO_set_dynlock_create_callback(dyn_create_function)
# define CRYPTO_set_dynlock_lock_callback(dyn_lock_function)
# define CRYPTO_set_dynlock_destroy_callback(dyn_destroy_function)
# define CRYPTO_get_dynlock_create_callback() (NULL)
# define CRYPTO_get_dynlock_lock_callback() (NULL)
# define CRYPTO_get_dynlock_destroy_callback() (NULL)
# endif /* OPENSSL_NO_DEPRECATED_1_1_0 */
typedef void *(*CRYPTO_malloc_fn)(size_t num, const char *file, int line);
typedef void *(*CRYPTO_realloc_fn)(void *addr, size_t num, const char *file,
int line);
typedef void (*CRYPTO_free_fn)(void *addr, const char *file, int line);
int CRYPTO_set_mem_functions(CRYPTO_malloc_fn malloc_fn,
CRYPTO_realloc_fn realloc_fn,
CRYPTO_free_fn free_fn);
void CRYPTO_get_mem_functions(CRYPTO_malloc_fn *malloc_fn,
CRYPTO_realloc_fn *realloc_fn,
CRYPTO_free_fn *free_fn);
OSSL_CRYPTO_ALLOC void *CRYPTO_malloc(size_t num, const char *file, int line);
OSSL_CRYPTO_ALLOC void *CRYPTO_zalloc(size_t num, const char *file, int line);
OSSL_CRYPTO_ALLOC void *CRYPTO_memdup(const void *str, size_t siz, const char *file, int line);
OSSL_CRYPTO_ALLOC char *CRYPTO_strdup(const char *str, const char *file, int line);
OSSL_CRYPTO_ALLOC char *CRYPTO_strndup(const char *str, size_t s, const char *file, int line);
void CRYPTO_free(void *ptr, const char *file, int line);
void CRYPTO_clear_free(void *ptr, size_t num, const char *file, int line);
void *CRYPTO_realloc(void *addr, size_t num, const char *file, int line);
void *CRYPTO_clear_realloc(void *addr, size_t old_num, size_t num,
const char *file, int line);
int CRYPTO_secure_malloc_init(size_t sz, size_t minsize);
int CRYPTO_secure_malloc_done(void);
OSSL_CRYPTO_ALLOC void *CRYPTO_secure_malloc(size_t num, const char *file, int line);
OSSL_CRYPTO_ALLOC void *CRYPTO_secure_zalloc(size_t num, const char *file, int line);
void CRYPTO_secure_free(void *ptr, const char *file, int line);
void CRYPTO_secure_clear_free(void *ptr, size_t num,
const char *file, int line);
int CRYPTO_secure_allocated(const void *ptr);
int CRYPTO_secure_malloc_initialized(void);
size_t CRYPTO_secure_actual_size(void *ptr);
size_t CRYPTO_secure_used(void);
void OPENSSL_cleanse(void *ptr, size_t len);
# ifndef OPENSSL_NO_CRYPTO_MDEBUG
/*
* The following can be used to detect memory leaks in the library. If
* used, it turns on malloc checking
*/
# define CRYPTO_MEM_CHECK_OFF 0x0 /* Control only */
# define CRYPTO_MEM_CHECK_ON 0x1 /* Control and mode bit */
# define CRYPTO_MEM_CHECK_ENABLE 0x2 /* Control and mode bit */
# define CRYPTO_MEM_CHECK_DISABLE 0x3 /* Control only */
void CRYPTO_get_alloc_counts(int *mcount, int *rcount, int *fcount);
# ifndef OPENSSL_NO_DEPRECATED_3_0
# define OPENSSL_mem_debug_push(info) \
CRYPTO_mem_debug_push(info, OPENSSL_FILE, OPENSSL_LINE)
# define OPENSSL_mem_debug_pop() \
CRYPTO_mem_debug_pop()
# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 int CRYPTO_set_mem_debug(int flag);
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_ctrl(int mode);
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_push(const char *info,
const char *file, int line);
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_debug_pop(void);
OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_malloc(void *addr, size_t num,
int flag,
const char *file, int line);
OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_realloc(void *addr1, void *addr2,
size_t num, int flag,
const char *file, int line);
OSSL_DEPRECATEDIN_3_0 void CRYPTO_mem_debug_free(void *addr, int flag,
const char *file, int line);
OSSL_DEPRECATEDIN_3_0
int CRYPTO_mem_leaks_cb(int (*cb)(const char *str, size_t len, void *u),
void *u);
# endif
# ifndef OPENSSL_NO_STDIO
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks_fp(FILE *);
# endif
# endif
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 int CRYPTO_mem_leaks(BIO *bio);
# endif
# endif /* OPENSSL_NO_CRYPTO_MDEBUG */
/* die if we have to */
ossl_noreturn void OPENSSL_die(const char *assertion, const char *file, int line);
# ifndef OPENSSL_NO_DEPRECATED_1_1_0
# define OpenSSLDie(f,l,a) OPENSSL_die((a),(f),(l))
# endif
# define OPENSSL_assert(e) \
(void)((e) ? 0 : (OPENSSL_die("assertion failed: " #e, OPENSSL_FILE, OPENSSL_LINE), 1))
int OPENSSL_isservice(void);
void OPENSSL_init(void);
# ifdef OPENSSL_SYS_UNIX
# ifndef OPENSSL_NO_DEPRECATED_3_0
OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_prepare(void);
OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_parent(void);
OSSL_DEPRECATEDIN_3_0 void OPENSSL_fork_child(void);
# endif
# endif
struct tm *OPENSSL_gmtime(const time_t *timer, struct tm *result);
int OPENSSL_gmtime_adj(struct tm *tm, int offset_day, long offset_sec);
int OPENSSL_gmtime_diff(int *pday, int *psec,
const struct tm *from, const struct tm *to);
/*
* CRYPTO_memcmp returns zero iff the |len| bytes at |a| and |b| are equal.
* It takes an amount of time dependent on |len|, but independent of the
* contents of |a| and |b|. Unlike memcmp, it cannot be used to put elements
* into a defined order as the return value when a != b is undefined, other
* than to be non-zero.
*/
int CRYPTO_memcmp(const void * in_a, const void * in_b, size_t len);
/* Standard initialisation options */
# define OPENSSL_INIT_NO_LOAD_CRYPTO_STRINGS 0x00000001L
# define OPENSSL_INIT_LOAD_CRYPTO_STRINGS 0x00000002L
# define OPENSSL_INIT_ADD_ALL_CIPHERS 0x00000004L
# define OPENSSL_INIT_ADD_ALL_DIGESTS 0x00000008L
# define OPENSSL_INIT_NO_ADD_ALL_CIPHERS 0x00000010L
# define OPENSSL_INIT_NO_ADD_ALL_DIGESTS 0x00000020L
# define OPENSSL_INIT_LOAD_CONFIG 0x00000040L
# define OPENSSL_INIT_NO_LOAD_CONFIG 0x00000080L
# define OPENSSL_INIT_ASYNC 0x00000100L
# define OPENSSL_INIT_ENGINE_RDRAND 0x00000200L
# define OPENSSL_INIT_ENGINE_DYNAMIC 0x00000400L
# define OPENSSL_INIT_ENGINE_OPENSSL 0x00000800L
# define OPENSSL_INIT_ENGINE_CRYPTODEV 0x00001000L
# define OPENSSL_INIT_ENGINE_CAPI 0x00002000L
# define OPENSSL_INIT_ENGINE_PADLOCK 0x00004000L
# define OPENSSL_INIT_ENGINE_AFALG 0x00008000L
/* FREE: 0x00010000L */
# define OPENSSL_INIT_ATFORK 0x00020000L
/* OPENSSL_INIT_BASE_ONLY 0x00040000L */
# define OPENSSL_INIT_NO_ATEXIT 0x00080000L
/* OPENSSL_INIT flag range 0x03f00000 reserved for OPENSSL_init_ssl() */
/* FREE: 0x04000000L */
/* FREE: 0x08000000L */
/* FREE: 0x10000000L */
/* FREE: 0x20000000L */
/* FREE: 0x40000000L */
/* FREE: 0x80000000L */
/* Max OPENSSL_INIT flag value is 0x80000000 */
/* openssl and dasync not counted as builtin */
# define OPENSSL_INIT_ENGINE_ALL_BUILTIN \
(OPENSSL_INIT_ENGINE_RDRAND | OPENSSL_INIT_ENGINE_DYNAMIC \
| OPENSSL_INIT_ENGINE_CRYPTODEV | OPENSSL_INIT_ENGINE_CAPI | \
OPENSSL_INIT_ENGINE_PADLOCK)
/* Library initialisation functions */
void OPENSSL_cleanup(void);
int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings);
int OPENSSL_atexit(void (*handler)(void));
void OPENSSL_thread_stop(void);
void OPENSSL_thread_stop_ex(OSSL_LIB_CTX *ctx);
/* Low-level control of initialization */
OPENSSL_INIT_SETTINGS *OPENSSL_INIT_new(void);
# ifndef OPENSSL_NO_STDIO
int OPENSSL_INIT_set_config_filename(OPENSSL_INIT_SETTINGS *settings,
const char *config_filename);
void OPENSSL_INIT_set_config_file_flags(OPENSSL_INIT_SETTINGS *settings,
unsigned long flags);
int OPENSSL_INIT_set_config_appname(OPENSSL_INIT_SETTINGS *settings,
const char *config_appname);
# endif
void OPENSSL_INIT_free(OPENSSL_INIT_SETTINGS *settings);
# if defined(OPENSSL_THREADS) && !defined(CRYPTO_TDEBUG)
# if defined(_WIN32)
# if defined(BASETYPES) || defined(_WINDEF_H)
/* application has to include <windows.h> in order to use this */
typedef DWORD CRYPTO_THREAD_LOCAL;
typedef DWORD CRYPTO_THREAD_ID;
typedef LONG CRYPTO_ONCE;
# define CRYPTO_ONCE_STATIC_INIT 0
# endif
# else
# if defined(__TANDEM) && defined(_SPT_MODEL_)
# define SPT_THREAD_SIGNAL 1
# define SPT_THREAD_AWARE 1
# include <spthread.h>
# else
# include <pthread.h>
# endif
typedef pthread_once_t CRYPTO_ONCE;
typedef pthread_key_t CRYPTO_THREAD_LOCAL;
typedef pthread_t CRYPTO_THREAD_ID;
# define CRYPTO_ONCE_STATIC_INIT PTHREAD_ONCE_INIT
# endif
# endif
# if !defined(CRYPTO_ONCE_STATIC_INIT)
typedef unsigned int CRYPTO_ONCE;
typedef unsigned int CRYPTO_THREAD_LOCAL;
typedef unsigned int CRYPTO_THREAD_ID;
# define CRYPTO_ONCE_STATIC_INIT 0
# endif
int CRYPTO_THREAD_run_once(CRYPTO_ONCE *once, void (*init)(void));
int CRYPTO_THREAD_init_local(CRYPTO_THREAD_LOCAL *key, void (*cleanup)(void *));
void *CRYPTO_THREAD_get_local(CRYPTO_THREAD_LOCAL *key);
int CRYPTO_THREAD_set_local(CRYPTO_THREAD_LOCAL *key, void *val);
int CRYPTO_THREAD_cleanup_local(CRYPTO_THREAD_LOCAL *key);
CRYPTO_THREAD_ID CRYPTO_THREAD_get_current_id(void);
int CRYPTO_THREAD_compare_id(CRYPTO_THREAD_ID a, CRYPTO_THREAD_ID b);
OSSL_LIB_CTX *OSSL_LIB_CTX_new(void);
OSSL_LIB_CTX *OSSL_LIB_CTX_new_from_dispatch(const OSSL_CORE_HANDLE *handle,
const OSSL_DISPATCH *in);
OSSL_LIB_CTX *OSSL_LIB_CTX_new_child(const OSSL_CORE_HANDLE *handle,
const OSSL_DISPATCH *in);
int OSSL_LIB_CTX_load_config(OSSL_LIB_CTX *ctx, const char *config_file);
void OSSL_LIB_CTX_free(OSSL_LIB_CTX *);
OSSL_LIB_CTX *OSSL_LIB_CTX_get0_global_default(void);
OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx);
void OSSL_sleep(uint64_t millis);
# ifdef __cplusplus
}
# endif
#endif

View File

@@ -0,0 +1,55 @@
/*
* Generated by util/mkerr.pl DO NOT EDIT
* Copyright 1995-2022 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the Apache License 2.0 (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
* in the file LICENSE in the source distribution or at
* https://www.openssl.org/source/license.html
*/
#ifndef OPENSSL_CRYPTOERR_H
# define OPENSSL_CRYPTOERR_H
# pragma once
# include <openssl/opensslconf.h>
# include <openssl/symhacks.h>
# include <openssl/cryptoerr_legacy.h>
/*
* CRYPTO reason codes.
*/
# define CRYPTO_R_BAD_ALGORITHM_NAME 117
# define CRYPTO_R_CONFLICTING_NAMES 118
# define CRYPTO_R_HEX_STRING_TOO_SHORT 121
# define CRYPTO_R_ILLEGAL_HEX_DIGIT 102
# define CRYPTO_R_INSUFFICIENT_DATA_SPACE 106
# define CRYPTO_R_INSUFFICIENT_PARAM_SIZE 107
# define CRYPTO_R_INSUFFICIENT_SECURE_DATA_SPACE 108
# define CRYPTO_R_INTEGER_OVERFLOW 127
# define CRYPTO_R_INVALID_NEGATIVE_VALUE 122
# define CRYPTO_R_INVALID_NULL_ARGUMENT 109
# define CRYPTO_R_INVALID_OSSL_PARAM_TYPE 110
# define CRYPTO_R_NO_PARAMS_TO_MERGE 131
# define CRYPTO_R_NO_SPACE_FOR_TERMINATING_NULL 128
# define CRYPTO_R_ODD_NUMBER_OF_DIGITS 103
# define CRYPTO_R_PARAM_CANNOT_BE_REPRESENTED_EXACTLY 123
# define CRYPTO_R_PARAM_NOT_INTEGER_TYPE 124
# define CRYPTO_R_PARAM_OF_INCOMPATIBLE_TYPE 129
# define CRYPTO_R_PARAM_UNSIGNED_INTEGER_NEGATIVE_VALUE_UNSUPPORTED 125
# define CRYPTO_R_PARAM_UNSUPPORTED_FLOATING_POINT_FORMAT 130
# define CRYPTO_R_PARAM_VALUE_TOO_LARGE_FOR_DESTINATION 126
# define CRYPTO_R_PROVIDER_ALREADY_EXISTS 104
# define CRYPTO_R_PROVIDER_SECTION_ERROR 105
# define CRYPTO_R_RANDOM_SECTION_ERROR 119
# define CRYPTO_R_SECURE_MALLOC_FAILURE 111
# define CRYPTO_R_STRING_TOO_LONG 112
# define CRYPTO_R_TOO_MANY_BYTES 113
# define CRYPTO_R_TOO_MANY_RECORDS 114
# define CRYPTO_R_TOO_SMALL_BUFFER 116
# define CRYPTO_R_UNKNOWN_NAME_IN_RANDOM_SECTION 120
# define CRYPTO_R_ZERO_LENGTH_NUMBER 115
#endif

Some files were not shown because too many files have changed in this diff Show More