diff --git a/api/api.gen.go b/api/api.gen.go index f7e510a8b1..8166599454 100644 --- a/api/api.gen.go +++ b/api/api.gen.go @@ -1090,6 +1090,48 @@ func (e FeatureOrderBy) Valid() bool { } } +// Defines values for FeatureUnitConfigOperation. +const ( + FeatureUnitConfigOperationDivide FeatureUnitConfigOperation = "divide" + FeatureUnitConfigOperationMultiply FeatureUnitConfigOperation = "multiply" +) + +// Valid indicates whether the value is a known member of the FeatureUnitConfigOperation enum. +func (e FeatureUnitConfigOperation) Valid() bool { + switch e { + case FeatureUnitConfigOperationDivide: + return true + case FeatureUnitConfigOperationMultiply: + return true + default: + return false + } +} + +// Defines values for FeatureUnitConfigRoundingMode. +const ( + FeatureUnitConfigRoundingModeCeiling FeatureUnitConfigRoundingMode = "ceiling" + FeatureUnitConfigRoundingModeFloor FeatureUnitConfigRoundingMode = "floor" + FeatureUnitConfigRoundingModeHalfUp FeatureUnitConfigRoundingMode = "half_up" + FeatureUnitConfigRoundingModeNone FeatureUnitConfigRoundingMode = "none" +) + +// Valid indicates whether the value is a known member of the FeatureUnitConfigRoundingMode enum. +func (e FeatureUnitConfigRoundingMode) Valid() bool { + switch e { + case FeatureUnitConfigRoundingModeCeiling: + return true + case FeatureUnitConfigRoundingModeFloor: + return true + case FeatureUnitConfigRoundingModeHalfUp: + return true + case FeatureUnitConfigRoundingModeNone: + return true + default: + return false + } +} + // Defines values for FeatureUnitCostType. const ( FeatureUnitCostTypeLlm FeatureUnitCostType = "llm" @@ -5327,6 +5369,11 @@ type Feature struct { MeterSlug *string `json:"meterSlug,omitempty"` Name string `json:"name"` + // UnitConfig Optional unit conversion configuration. + // Transforms raw metered quantities into billing-ready units before pricing. + // Example: divide by 1e9 to convert bytes to GB, or multiply by 1.2 for a 20% margin. + UnitConfig *FeatureUnitConfig `json:"unitConfig,omitempty"` + // UnitCost Optional per-unit cost configuration. // Use "manual" for a fixed per-unit cost, or "llm" to look up cost // from the LLM cost database based on meter group-by properties. @@ -5360,6 +5407,11 @@ type FeatureCreateInputs struct { MeterSlug *string `json:"meterSlug,omitempty"` Name string `json:"name"` + // UnitConfig Optional unit conversion configuration. + // Transforms raw metered quantities into billing-ready units before pricing. + // Example: divide by 1e9 to convert bytes to GB, or multiply by 1.2 for a 20% margin. + UnitConfig *FeatureUnitConfig `json:"unitConfig,omitempty"` + // UnitCost Optional per-unit cost configuration. // Use "manual" for a fixed per-unit cost, or "llm" to look up cost // from the LLM cost database based on meter group-by properties. @@ -5467,6 +5519,31 @@ type FeaturePaginatedResponse struct { TotalCount int `json:"totalCount"` } +// FeatureUnitConfig Unit conversion configuration. +// Transforms raw metered quantities into billing-ready units before pricing. +type FeatureUnitConfig struct { + // ConversionFactor The factor used in the conversion operation. Must be positive and non-zero. + ConversionFactor Numeric `json:"conversion_factor"` + + // DisplayUnit A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens"). + DisplayUnit *string `json:"display_unit,omitempty"` + + // Operation The arithmetic operation to apply to the raw metered quantity. + Operation FeatureUnitConfigOperation `json:"operation"` + + // Precision The number of decimal places to retain after rounding. + Precision *int `json:"precision,omitempty"` + + // Rounding The rounding mode applied to the converted quantity for invoicing. + Rounding *FeatureUnitConfigRoundingMode `json:"rounding,omitempty"` +} + +// FeatureUnitConfigOperation The arithmetic operation used to convert raw metered units into billing units. +type FeatureUnitConfigOperation string + +// FeatureUnitConfigRoundingMode The rounding mode applied to the converted quantity for invoicing. +type FeatureUnitConfigRoundingMode string + // FeatureUnitCost Per-unit cost configuration for a feature. // Either a fixed manual amount or a dynamic LLM cost lookup. type FeatureUnitCost struct { @@ -6204,6 +6281,11 @@ type InvoiceLine struct { // UpdatedAt Timestamp of when the resource was last updated. UpdatedAt time.Time `json:"updatedAt"` + + // UsageQuantityDetail Usage quantity details when UnitConfig is in effect. + // Provides the audit trail from raw meter output to the invoiced amount. + // Only present when a UnitConfig was applied to this line. + UsageQuantityDetail *InvoiceUsageQuantityDetail `json:"usageQuantityDetail,omitempty"` } // InvoiceLineType Type of the line. @@ -6749,6 +6831,22 @@ type InvoiceUsageBasedRateCard struct { TaxConfig *TaxConfig `json:"taxConfig,omitempty"` } +// InvoiceUsageQuantityDetail Usage quantity details when UnitConfig is in effect. +// Provides the full audit trail from raw meter output to the invoiced amount. +type InvoiceUsageQuantityDetail struct { + // AppliedUnitConfig Snapshot of the UnitConfig that was in effect at billing time. + AppliedUnitConfig FeatureUnitConfig `json:"appliedUnitConfig"` + + // ConvertedQuantity The precise value after applying conversion, before rounding. + ConvertedQuantity Numeric `json:"convertedQuantity"` + + // InvoicedQuantity The quantity after rounding, used for pricing. + InvoicedQuantity Numeric `json:"invoicedQuantity"` + + // RawQuantity The raw quantity as reported by the meter (native units). + RawQuantity Numeric `json:"rawQuantity"` +} + // InvoiceWorkflowInvoicingSettingsReplaceUpdate InvoiceWorkflowInvoicingSettingsReplaceUpdate represents the update model for the invoicing settings of an invoice workflow. type InvoiceWorkflowInvoicingSettingsReplaceUpdate struct { // AutoAdvance Whether to automatically issue the invoice after the draftPeriod has passed. @@ -8410,6 +8508,10 @@ type RateCardUsageBased struct { // Type The type of the RateCard. Type RateCardUsageBasedType `json:"type"` + + // UnitConfig Optional unit conversion configuration. + // Transforms raw metered quantities into billing-ready units before pricing. + UnitConfig *FeatureUnitConfig `json:"unitConfig,omitempty"` } // RateCardUsageBasedType The type of the RateCard. @@ -22657,1257 +22759,1270 @@ func HandlerWithOptions(si ServerInterface, options ChiServerOptions) http.Handl // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/client/go/client.gen.go b/api/client/go/client.gen.go index d9c9f2b5f5..b795ce2eb0 100644 --- a/api/client/go/client.gen.go +++ b/api/client/go/client.gen.go @@ -972,6 +972,48 @@ func (e FeatureOrderBy) Valid() bool { } } +// Defines values for FeatureUnitConfigOperation. +const ( + FeatureUnitConfigOperationDivide FeatureUnitConfigOperation = "divide" + FeatureUnitConfigOperationMultiply FeatureUnitConfigOperation = "multiply" +) + +// Valid indicates whether the value is a known member of the FeatureUnitConfigOperation enum. +func (e FeatureUnitConfigOperation) Valid() bool { + switch e { + case FeatureUnitConfigOperationDivide: + return true + case FeatureUnitConfigOperationMultiply: + return true + default: + return false + } +} + +// Defines values for FeatureUnitConfigRoundingMode. +const ( + FeatureUnitConfigRoundingModeCeiling FeatureUnitConfigRoundingMode = "ceiling" + FeatureUnitConfigRoundingModeFloor FeatureUnitConfigRoundingMode = "floor" + FeatureUnitConfigRoundingModeHalfUp FeatureUnitConfigRoundingMode = "half_up" + FeatureUnitConfigRoundingModeNone FeatureUnitConfigRoundingMode = "none" +) + +// Valid indicates whether the value is a known member of the FeatureUnitConfigRoundingMode enum. +func (e FeatureUnitConfigRoundingMode) Valid() bool { + switch e { + case FeatureUnitConfigRoundingModeCeiling: + return true + case FeatureUnitConfigRoundingModeFloor: + return true + case FeatureUnitConfigRoundingModeHalfUp: + return true + case FeatureUnitConfigRoundingModeNone: + return true + default: + return false + } +} + // Defines values for FlatPriceType. const ( FlatPriceTypeFlat FlatPriceType = "flat" @@ -4846,6 +4888,11 @@ type Feature struct { MeterSlug *string `json:"meterSlug,omitempty"` Name string `json:"name"` + // UnitConfig Optional unit conversion configuration. + // Transforms raw metered quantities into billing-ready units before pricing. + // Example: divide by 1e9 to convert bytes to GB, or multiply by 1.2 for a 20% margin. + UnitConfig *FeatureUnitConfig `json:"unitConfig,omitempty"` + // UnitCost Optional per-unit cost configuration. // Use "manual" for a fixed per-unit cost, or "llm" to look up cost // from the LLM cost database based on meter group-by properties. @@ -4879,6 +4926,11 @@ type FeatureCreateInputs struct { MeterSlug *string `json:"meterSlug,omitempty"` Name string `json:"name"` + // UnitConfig Optional unit conversion configuration. + // Transforms raw metered quantities into billing-ready units before pricing. + // Example: divide by 1e9 to convert bytes to GB, or multiply by 1.2 for a 20% margin. + UnitConfig *FeatureUnitConfig `json:"unitConfig,omitempty"` + // UnitCost Optional per-unit cost configuration. // Use "manual" for a fixed per-unit cost, or "llm" to look up cost // from the LLM cost database based on meter group-by properties. @@ -4986,6 +5038,31 @@ type FeaturePaginatedResponse struct { TotalCount int `json:"totalCount"` } +// FeatureUnitConfig Unit conversion configuration. +// Transforms raw metered quantities into billing-ready units before pricing. +type FeatureUnitConfig struct { + // ConversionFactor The factor used in the conversion operation. Must be positive and non-zero. + ConversionFactor Numeric `json:"conversion_factor"` + + // DisplayUnit A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens"). + DisplayUnit *string `json:"display_unit,omitempty"` + + // Operation The arithmetic operation to apply to the raw metered quantity. + Operation FeatureUnitConfigOperation `json:"operation"` + + // Precision The number of decimal places to retain after rounding. + Precision *int `json:"precision,omitempty"` + + // Rounding The rounding mode applied to the converted quantity for invoicing. + Rounding *FeatureUnitConfigRoundingMode `json:"rounding,omitempty"` +} + +// FeatureUnitConfigOperation The arithmetic operation used to convert raw metered units into billing units. +type FeatureUnitConfigOperation string + +// FeatureUnitConfigRoundingMode The rounding mode applied to the converted quantity for invoicing. +type FeatureUnitConfigRoundingMode string + // FeatureUnitCost Per-unit cost configuration for a feature. // Either a fixed manual amount or a dynamic LLM cost lookup. type FeatureUnitCost struct { @@ -5632,6 +5709,11 @@ type InvoiceLine struct { // UpdatedAt Timestamp of when the resource was last updated. UpdatedAt time.Time `json:"updatedAt"` + + // UsageQuantityDetail Usage quantity details when UnitConfig is in effect. + // Provides the audit trail from raw meter output to the invoiced amount. + // Only present when a UnitConfig was applied to this line. + UsageQuantityDetail *InvoiceUsageQuantityDetail `json:"usageQuantityDetail,omitempty"` } // InvoiceLineType Type of the line. @@ -6097,6 +6179,22 @@ type InvoiceUsageBasedRateCard struct { TaxConfig *TaxConfig `json:"taxConfig,omitempty"` } +// InvoiceUsageQuantityDetail Usage quantity details when UnitConfig is in effect. +// Provides the full audit trail from raw meter output to the invoiced amount. +type InvoiceUsageQuantityDetail struct { + // AppliedUnitConfig Snapshot of the UnitConfig that was in effect at billing time. + AppliedUnitConfig FeatureUnitConfig `json:"appliedUnitConfig"` + + // ConvertedQuantity The precise value after applying conversion, before rounding. + ConvertedQuantity Numeric `json:"convertedQuantity"` + + // InvoicedQuantity The quantity after rounding, used for pricing. + InvoicedQuantity Numeric `json:"invoicedQuantity"` + + // RawQuantity The raw quantity as reported by the meter (native units). + RawQuantity Numeric `json:"rawQuantity"` +} + // InvoiceWorkflowInvoicingSettingsReplaceUpdate InvoiceWorkflowInvoicingSettingsReplaceUpdate represents the update model for the invoicing settings of an invoice workflow. type InvoiceWorkflowInvoicingSettingsReplaceUpdate struct { // AutoAdvance Whether to automatically issue the invoice after the draftPeriod has passed. @@ -7690,6 +7788,10 @@ type RateCardUsageBased struct { // Type The type of the RateCard. Type RateCardUsageBasedType `json:"type"` + + // UnitConfig Optional unit conversion configuration. + // Transforms raw metered quantities into billing-ready units before pricing. + UnitConfig *FeatureUnitConfig `json:"unitConfig,omitempty"` } // RateCardUsageBasedType The type of the RateCard. @@ -45856,1222 +45958,1235 @@ func ParseListGrantsV2Response(rsp *http.Response) (*ListGrantsV2Response, error // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "H4sIAAAAAAAC/+y963IcN7Ig/CqI3tmwdE6zTUm251hfTJygSHnMHV14SMr+Zqb10WAV2I1RNVADoEi2", - "HYrYN9jfu7/2MfZ5zgvsK3yBTACFqkJ1V/OimztiYix2VQGJRCKR9/xtlMlFKQUTRo+e/jYqqaILZpiC", - "v/byXIrXKmfq2RL+w8VsIu0/7NOc6Uzx0nApRk9Hp3NG4BHJuWKZ/XUyGo/YdVnInI2eXtBCs/GI23f/", - "WTG1HI1Hgi7Y6OkIRxyPdDZnC2qHpkXx+mL09O+/jf6g2MXo6ei/fF3D+TW+p78+kcoAWKP3b8ejnF3Q", - "qjCjp6O9k/3R+/FIm2Vhh7+QamH/7l/Ns+Wq9ZwvyQVnRb7Rcp4tGwtatYwYrhTcz3hRcDE7UvKCF2y/", - "0kYumHp9yZTiOftitucGy/y4+zYI4PUrfcG1aX+sj+w51JPzxpvdxf7AC4MrdW+SEl+1a06tsTVgvFRu", - "2EJ3p3jz4vCAPHgj+CVTmhbFkrwR/J8VIy/YNc/kTNFyzjN4YDecnheMHOZMGH7BmXqIyKeLEjCw++jP", - "3337tz9+++3eDz/v/eXH548ev/rr7v5/fP/Dj6PxqKTGMGXn/P/+vrvzx7d/3935fm/nx//2l5evjnZO", - "f9r5G92Z/+PdQpQ75nLn17e/Pf72/R9G45FZlnZobSxdWPS6H6hS9Jboz9zvh/kq1Pu3CM/70B4NtEX5", - "IJT/hS0H4fwdWw483vHI8SZ0FnN74F/BjAOgt6BNNoQfBr/nBRwpvqBq+XxBeTFoISV+QBh8sdmCGpPd", - "88L0z9zMZWWOuBAs7+Wrr0WxJIqZSomwRk2u8FtSwsdtlqsn5HTONeGLsuAZN8WSaGY04SIrqpztFcV+", - "GMlIYlTF1rGLNLQJFJ1LWTAqbocjdl1SkeB0z+F3YuaMKKZLKTQDVBCa59y+QwuSM0N5ofsW5IZO8r6b", - "X7EI2N3yn8RudTFyiC8lSCMcCOnHnUzFVBxeWFqw2w7ngUhLXxah9Qi6ZBm/cGydai0zTg3LHabbxEau", - "eFGQc+aIlOWtaSx1jQkXJKN2uguYzIlg7bHGhBZFYy2toXs2NYWqeIeDxAfAbEyqX6hg+8kLsisE1/1K", - "aamO6IwLCojO4Ic07PiM0At7V1zNeTa3hKkNVQaosayHGXxhwGwbXREdkAu+4CYNMTzyh2Vz8HDk5Al4", - "tLs7Hi3oNV9UC/8XF+6vcDS4MGxmqSq1DMeuvpRDsXJBH/c4tEBbBf1JdR5g/OK2Zu3iPo1tSoCZWtVz", - "Ybgp2IIJ88Xs1Lo1fdwN6kKXWsMPjJpKfTm3/ar1fNz9aEKWgv3Pin5Bp6N/NR93H2K4UnAfikvJM9BS", - "vPaqmNUF9qwotUod5/glce8TwxdsMhWgrmh+2a9vxuPHy6jNSI93Hz/Z2X20s/vodPfRU/jfZHf30d9G", - "Y4Cb2n3IqWE7ds6UiWjwKp+xC6nYPS7TTfDx1tmvWCYsK4cH64wEv0+TYhevffaLn+fUkJIqo71sX3Bt", - "iKxMWYGyjB9abdk+4GKm79iM4WAdbq9ILc4wkbP8xFBTaaaHnA//jVW68KO+ZbXGTi7wDnbIWQwOWMEM", - "y/vtKjm+4BeiBzLi1vCb2ckS0GpdbcB08fXBzCge/aOxIgRiOMe90Ro/Nr8tmeLSErcyazcT3/VWioHL", - "7EzwKSx1/abedq0fe1/1AFZoub0nXny/b2F6JfMbwN2Re27AGL8YQXvVej6uqN2ELAX7C77g5vXFhWam", - "zzT4qlqcM2VlByAHKzGgaRxs7gfOqM41ebS7ex+2wo2NhfGaJPxn0KL0O162lzR4QW6e5IriBewOWcBL", - "qt4xUxY0Y3sl/wtbHgptaFEcs39WTJsJjpAiK/vES3m0LO2yOH4bzn1JzbyGG4YajxT7Z8WVlUnQWTEw", - "cqcsT+3375swf17Qvt6rzPyxg9n+Wyr+K/ukgWfmC7KE96/m4/LOGK5euP/DzjGh+SUVGcvhpz8rWZXP", - "lngHw+WZSWGYACZEy7LgGbhVvv6Htiv6LcZvcCgfKVkyZThbe/viPCdBbgjSRWeq8QjskXYnHLwEQh3J", - "zEKM+ESY31sqa0UElM7TTVd/O5mKv8qKZFSQSjNi5hx4Kz4lF1KRS1pULKii0SjP3Ib2iiir0NzckKzg", - "TJhU2NI+PCGHB1PxRrOLqkBvMc3ekVLJmWIaQKME5h7smfPzxcS1oNcvmJiZ+ejpk+/gCvB/Phog70Wr", - "QeTtrw3G4mJmd2JRFYaXReRch1vtB6mIk0+fkn9vj/kn//LOo2m1u/v4u/4XHvdsTwfMYWr0gl4f4kO4", - "+dcJjx28OEJApJSKZdTUzLWJphNuVx8ToydfjGCw+MkMWVCTzXtx5ub7+yUTuVRv/yRLJiiPkebfWMic", - "FW//NCvNzjc7plLn0o75n//rf//f//M/yNnZQYD27OwpeaMZ+WUFhf8Ctwuj+Urse2SMB3CVPoOGPP8H", - "y0yM+5yx8nX4Nd4BJRddagTtiATthnBBjn/YJ0+ePPmeIHvCaI2gayVQreTiT493H3/rdajd//pkz/3f", - "ZHd39299WLAAfSCNLMLDLKbBhkXngghpfHALywklmotZwQidzRSbUdMNZQHCZDSbE10B0gmEH1lMXnGR", - "y6vJVPziHv1ihVRKFNNMXbK8ZsfAZROIdZD+yX2PZOt/BILtwewsQVk3t41FuHOQDGVq7vUUT3OP/No8", - "J2v/3Me/PCB3vkIjE0FlIr/dCTHSnY/Hm5wPIz/C6UCqPeG/svUHZFyfkErT2dpzYmUIJgxXzCy9TFGf", - "NmfiSR4oIOgEYmto/3Sw99eBAkC0xKHy5c/1J0PQd8oX7G9S9CgjcNwtL7DrtzB5XAB5/SoFI1STnF1w", - "AXZleHa492qP2HGJHZgcUEPPqWbkwdyY8unXX19dXU04FXQi1exrO9COHUg/nECkXWvb7IBvTvdhQpjP", - "b1elXXReCs1+VX96c7q/EaoDOpIa9wiHW0ukr6SBmEOLyf05FYIVX4xeNXRtH1fL6ody3ZqeX35JoSzD", - "Vvbp7FUM47r1HFdfUDTroIV9OvsUgZhaDRq/vNULT6HMGYRoPFdKKu9+tf9OSDH2Z5LJ3Eoox86whaoU", - "XMzw2AfND10uzjV0sWtXgGazWy79rLHu3/qMI/NqQcWOYjSHCALDrg0plbzkuRVjo3wBLlCq4lKMp8Je", - "kcRIQrXmGqOD0aJAcnbJCqu02Tu7EjlT2lABo9UINnNqiMyySimWb4TlxrI2iiveDHuV4iuwVilOOAZb", - "LAFPbTxesXNSWmHQUtZURMgj9FxWpsbFmHhcItpZhMypqLHZzt9YMeRG+LQLvTM8nlRZxnRI4QEI2khs", - "fAkn0cea10QEklhBDbPyVzanYsZAJKaCUJiBGPmOieQR1gjDxocYoL0nTGhDTQIVAXiOou8UfJpsOiIh", - "q5tcUU1Kqy0L46VghyTaQKRy5v+psGwbzUIoYyuWMW5V7QslF9EAT62Ii0FFY6KoyOWiWJIZE0xRYwVk", - "WVJ4ZnUPIcXOrGJaA3kjTvAYc0000OrVnAn0TcOREACgPSNZA0IY7pIWPMdsGftVqaTFlmcSm24donej", - "vYvyC+w57e7NkT29XOTsuuM0HAoWDJz2GG7qIGyBm9ZM7cY7NyQRLW+hZSH2y1t4QMPE9+QEPSqo+LLq", - "F6xe0ccVudqw9cH/RW3GJ7oPK7agiDIf98rygBrq7pS0n9cF0oRg1JwaatcA/t5lOZilOtfvhq7eLvww", - "rF/An1NxDd1gzzolsxXwecdBnh6s4VGejdW84Np8wiGsd7G6TcM/a//d7QNAw4F2n68PCO3C/25FTYI6", - "ffZ8Sd6x5WQq9qlmO1xoJjQ3/JLBBnJaOP/awDW927RcQRdusaocQQNwqEdwV5CLjQsVdEEvCyr+MhTt", - "kLZZUGHx784JV0RX+tx/OFg4cdPeFvohZRQaS2jUUbiznShvXGGhu6Y17qrmcpwLwxjFzysQ293nd7a0", - "lNNq2KrAw3AjvoQFsj4CU3rvP66rcyU04jzfsVp8Ucgr7XIArCqkozxJ5+63fJ4abnUwS/G6YxawqltG", - "FYaklA3vORVCGtAh9HAhay/6CMWsht+cQfb1O7bcQV2zpFxpsqCCzljuT7heasMWE7IPEJBzRhYyR3cX", - "UBxTE4gyo/lrUSxD9QEf+hNDMA6ZT6mMcL5g2tBFaWECvdIpk7JSGQNN2n3dzI55vPv4m008iX2Q7tvB", - "7ZE57fE4gr1LZMvh6N93X+xbmm2KuW9ODkbjdBY/fIKmFR/uByQ2iSKq/MgjCJwCSr8hTkumFtSCXSz9", - "gbsf/MKBXIXfYSbP6GePHr+eCXnp9OdHu4+/IdmcKpp51hFFR9mnMVyxSbIDFbu4sArRJfshGXti98yu", - "PoqZ8GjGXSPnLJMLpkkYaEJ+tq8k/JnuCwixyBW9MJ2deHIXO/HcQ+JyEXK0v/Qv/VTeZOFcEyFJIcWM", - "qc1WH14GE84FF9ywYnnfyGAuRCKFCp64pvZIhTl9PCTuhRCBQJL3nsjXty7IY+yuQ2hDRcZOnfo58Bqx", - "N99h/Gn3MjmFzI/6lSbv0nB/2MtjOsJwi+mISEWmIx9oMx3F/K052XiUVAX2iGYLvjNsF6Lz/9037ejI", - "GPd059fdne/f/uuDf396Fv54+C9/iKBDUbUbWcgMtRr7cMS+9F908blXSwV+3OS6RFUU9NyC1dz/MHQi", - "zi6toPzYdIJAVEdnRvKMmSvGBHkEB//xt9/189nH33bDUD3T5bosKCpAKVRaQWjfCkJpxmMfExCUulfk", - "IPX62I0PirWD6TgMOkpp25BttNmR8SlKycOCI7bgn4p9uSgrK/WeU81yIpGlshbLtrj3/Eo/nYodvC/I", - "nyzLbVxZ9hnFT//UfEKm1e7uk8x+cuX+TSKWDx+qbA7Oh/jbUxl/uYIF1RlaVZnfQuwrqDbEDXE/sskL", - "O8MbmKFXPHFODy4F+BsTlPkCbEQXpH4TPXp6MFn+1JwDzmrrfPct4af2pAkivmRKB+mqdmY0V/ETvtQi", - "THIoMgW1RbzXp3llR9sT+w16oXWQdD0L7+OMlb/bi3fsLRu18hBT1NiZbC7DkI1LLpLbwymO+UtiY98m", - "WCacZ1ARkp5AR60IIbF6G24FRLh2lblPV5X4FEXwrdCyFVq2QsvGQkuLkzqokVn2s8h6Eb1s8LB1Hjc5", - "U5OpOMFwa/+OP2yQw3UOf2JETWxAwwqe0r5+NedF/RFY0EKwPuRINsZZSAUxOQI+BulB2Lvp7+5E2813", - "X0cLrve04WTtskTvZJTOzAdhLo55RHPBLda+ptx1dkaj+8z+0QuGCyNg+bGLsEjGPeArIQqjc/f0VKyB", - "bYNgAx+nAjRhMO5gKImijTThrUqHaZxi4UcfqhHLdsmgg1tGTzTG302mRhtpaLEvK9FTsxKet2doDPxt", - "auDWWYxmGftAkyhAA1Hde/6OGSQSo7y6QhpBmlovjWxv/bu89bcX6u/rQm1dpQPuz5NgSxhmFQh5NM4j", - "09TiwRQQ6eb12Y5vIDAPjMYjNAXYfzjVvu+6UUzrpLMLHnQUGm4S1+M+N2C17bpSLOtTm6g/+EGk/TTm", - "waeo6HBB/n548po8efTddzuP3kJykfbZRVpCchHXcgeeO0B27Jd6MjeL4iGhRTmnO499YhzG8Qj2KOWC", - "VdoQ+zDaMIuf5KLte48T2asskyIfPEo5l4JhNZHE9W8futsp/bXUcPOkQnuP4BlG16eTmZLXjaVmZhkk", - "REA7Iav1cSrZd6/gM7Fg/qJdnUkdXiaZFBd8VrkbDeQtDEKQqiExdq+5c448Ur+stIEBh8z885yZOVNQ", - "s/2ZG8HJFfbkeRaiyaLShlA77GQqangXjApMkztSPGNfaeLKf+/TnFl5tv4OVnMuzZzkfn12CiqyuWXA", - "fBGjNjitk7htOYvTGdnv79MhHOSh36DenRK0OMzBB/L9o28eZ9kO3X303c4fv/+O7vzbo0dPdh7R7795", - "fMGy/PF3eTI5fK8sE/yoLCdT8RqOzlMIbAYmnHP70sKKwphGsqBlaSkRbC/ayMUZVqmC31ZFYB361+z0", - "45GmIj+X171BjfjYvYvQ9L0KT+2b7wOhLl9F4XvvxyMp2JBIymikNW/W4K17NbH692/Tu7JPS3rOi+QN", - "sFeWJAvPIXw5vM6ZRrWOXXMN4fF4tomWls6WJJfiK+MiKoDygmQbBNmIytpcySKFlHRpT6EmmSwKlhlN", - "ZGVCSotil0xUrruG+8LH03ylQ/8GN4iVwOYSTJxg2XEbfOaGPnOv1ZEo+/iAHDkg6sPrPgkP3m8kkoNx", - "LyA1FsyTfDtphkJr0J3Yl9rzpeXKFtC+E09PnvtgcT8mvxXifjQzxtF2NDKU3lBHd5JdPMxa2k8bQ5r0", - "X8fwOqlMsVIq80ajBoh/QaajpZWMFllVUMNO6TXImVBbLe790SajpChXlp+D3QD54NZqcD9Wg7I8ZhdM", - "WXkjTaPKP0YOLXwiPaGaUKLnUpn6HUgdFBCU7lKfLqqigL9xTgz9MEQwlqNPqEVKeRpNhwdRgbMPXgO5", - "63nqxeVK+4vFZ+MV8tLVObkfsaQJzgYySufDYQJL87M7k17aww4VZTb7bh36+oScPp3dbrYrwxcKPzc5", - "PM3tlVIJn/DXp3K7LIzuwWjW/WuYsL2867d83CWj1FzPaO7qDR4peV6wRXwxDLt43wh2XbLMQJu0xhA9", - "0Q5MXTJFMtQZpMIkUftvlz3oDEyYZJhXwGS0tCJXnKtYMuXSIY0EI79Pp8TM5AdsMpuMyYIWVnmH2wwH", - "1Eth6PWYcAHe3vD7gmkImb5QdMHFbGwhy1nGSgiY8G8pWRkuZg8nKTPaM1pQkbEfuTZSLbHKSpq9neOb", - "ZI6v+upKXUUV39szUNgqPRarm32EcSlmEWOEiG+rBBVpundYHR4hq/MiGRuBC8VLC445DLU2Iwrfej8e", - "QTD6qvsQo9UdoBfYLcNLEXcGd4uru0V46MZtZKeOv1fYQ//Eni6G/oXQW44smLKKs28Say9X6Fnou8px", - "TYKUF2f4trvaEd8QsN2WjkfXsibOTOv0FjddpbEqYi4Z3spzemkHXJJ3XOQW/SHYBsshjqN2eTVwWEYx", - "EZdelhuERTVbn+2VpX6tatEkzTqiwpIahRIwRHDdacJrF+y6J2pmIC2LzCwOBQoqPHSHRHZzNZcFi+UW", - "qcg/KlcR4fAgQm03xP39eKQrCxna4TZbPlVm2bNaMLjbFWRSGGplqahUgDfE+5mTaCCKuZRznYL6Sqp3", - "FwXyqI2g/tl/mAbcQ+HHr7cAoa7JvgtV65AGxEbQjpHSVpzPA67BnHtk7whhksxnD28QeEpy90EiPkcq", - "xQrAebKoZ/3YkonflTBeOOdch/oQBRfvwhua0ExJrUnOL4DETOi9QB74uqD2BvJIrTSD1pIPfd9Jd3Ne", - "8tyHT4crnzAx474gFq2M3PFVAYgUPv6a5dwn+vt67QUXbDwVZcGotmrRO0tnCi7id4yVSHiWOrPm8n23", - "S7c2e4i4IIlVTIVmpip183W6QIws+GwO1kQuYILMfIQuKGWDdoYdj4je0icjIrkWrpyrLNWmcLd2ScUT", - "dK8z/2jAyThmVPcZlBQ869LyGrXFQX+mSybyPgw153e+4hP4Ah1mGVX5WYz7IeMcuw8j9ESjOeljk4HQ", - "DnNbhWbFYtcpJ2vXd7MB3LoGEMgb3cM1UVTbMswtw2wxzH9W1GoiG7hyX1ULpnjWwyv9eB5JLcKzm/nS", - "SmjnjJQSE1njYAxH6i0uGYAccARSOn6N+/Pahts8ADe5OPrllrX3SH0SY0XrRtPW3KE7Y/vYJ52NbrzD", - "pn36uWtydYCdyrtYHfQZ5sI5O7eLPEItBU0CVLHAMCJHUZCIraDtm6UD2/Fcw7Ecpr3Wg/K20z5fl0xA", - "vnKtysWDxDrauAYEctqM4pmBbvauOpT/IPR0MpoVFwlFCp3+qf46x2xWFVRZijckvAcjX80ZKM21jqDn", - "sipye0Cw6tRFZIYdGsMHMR7NWuld43zKivumN6wZt+IBvyD0knJwoz/s197XeK/2hIu4pIVPwqtrEPRN", - "NSwmqSdMOu3UesFmtHD1b1Wtd9E4SE6qGRWuzlfa40Wv8c7cXIc8tZ8y5G3pE4wPv9KkAFAPDzBIBs4M", - "bA29JmWlSqmZnpDTOVuSBV2CjWAqJEQ+oCVFj8l5ZcgV+0q5fvpcGKaYNr7Ar9QMU1+6AwcutVeXJtgk", - "9wGP2pv2CN0lv0TJFDwU7kXX84HljpsZ2Ti/7cuDNCZoXSSdNay4UFDJT3jaLHHWKjqhlq9b0Vsqcl5p", - "LpjWbtu2TGLLJH5PTOL9mtN014HPn91p2tL574LO45V0q+O4J0QbqZwh2wunQeg0MlS4tRqr+6INigWV", - "1iKuC4ZNaff55vpFWEQot54O3n1lj1HBf7VQ02vcET2XV8LnPkvFZxyK5vqV5zKrFmydQtLrp2k+b97F", - "LVv61t1ROw4+59o9IVu2c5qcdyzym3n8/vsoVSFqW23nXpN+vpA6K9skoDtLAvoMvKxfSIWLz8AzPKQc", - "xArvcX0RvF0rN8RBk3qdENF4OZYocKvDkwc8H4MF+aG3Q1i4wjW/Xv6I4gM3iJFeJ3PUrhArHdTysN2a", - "CIcdkcCHvN8lLD7afjNIDL2+UyisKLoJBO1Q3Shk225WjapBhDeE3jpklhQc74uiPgFC+qj082mSTV+B", - "mr432yTERVkZgBuYKzZHaRHQV5o4XrqCjm5MGR/SfTkeXe/M5E43CKQmxhuS16ewCkfRN6DRjw/9HR+L", - "WOmGUrrLG+nua8MvVgkQXX6RBrB9JCvhdK+Y81vJNTXLVGBCbNtS0EXLME5xcy5x54YTB3CvzWSNreSu", - "jQCfovK8VTp/Z0rnrRW2lYdquNo26auNEali/vBtFNLr2ZDz1b524fArQu9DxHxfvPp5Y+TDnky0Nt5h", - "tWFsrgnVWmYce2BxM/dRZmxRmmWKj9hvCinfsZxUJcmXgi54Rot2VeMPErP1eRdhD+3+0ynGnhB4vn7T", - "PjzqP38zUeug9xlhon3a/Hz3CSdHdFlImrdFD8GuiFSIGBeiCSUF7L87qTQfmiN04049Z+jk8miSzaVm", - "4L0JztqPkQa74XY97+milH4vlH3XwT8d6h0F5PoOS3G2o9M6Q+BOMrNxJaCb1fFrtkNyQER0XYPyyhkk", - "3Z/oNc9CulijGYz/eT8cnM3X8TM38964ym4WWrjAPbmmrkWq2bMbHoSa6x7VpNw6Dj45EToFyAsCTVvg", - "jGStxflATCQPdl0WPOOGuJwDK4TUlQbalz5S7IQcXviM0amAK3mMNSAhNjSxUpIW/j/G3eype+PouL7K", - "Fx5JTYZ1zgppRTkjJ/G0sYR1E02tI6mtAaotrnXEKJdBiY8hyjbKSWyUSO/s3fv4DIZQgI1W1U75TAQc", - "InztQxH62Wad0xgdwvZlmjyEm1+fEXv4DEp/DGd12wIh91UgpLkHffd56q0QenQFLRMd+fsQ/aj1Y+MW", - "X3/l9V7VyddaMoV0HUIb17mDTceXeY/wWuuqoMeuh/azO2bbs/SBzlIjZNUys58jm80qym5WkOm1wNZK", - "T/sOcgkuaBuFA+mrb5z7CNnctfstlmPQObCmj+vYzjXJmYZoQlCxpsKf7jrcNbIFtOuXbU2tW1Pr1tR6", - "h7ExNzSyrmBR6QjdLk9NvYaJeeI2sbsNAnryuEM/PVfuWgbqX2gzzQZmaQfzqbBnn3Z4cwN7GOLEzd6n", - "EdUpjl0KCJv5fnyTcI0WTKH41RqQao/9aog2jt1owePKF66BxvvdV8OyURhHC45Ter0GBkvjq+ZfYTrr", - "EkSr/nHHpRkqCIMtyn0GpbAYKV2PWSga7WVDrMrn0kxBkz5AdqDb3TTG5GrOs3moTUwNuWKgXBvpexih", - "WdUnrbJLppZovDFzNhW02Z0Dqyph5SlNHmCiLaH5JdSlAgAfEqkIE3n0WClGlXaP1xWawCrILN/44AU8", - "7/kRLMs8j/F9wwFP4lFuWzZi4+luO1xAx6rCEEO+X8eHV3zb0ts2pPmpaBN9h4UrZpUlKyyE4mXDeMNx", - "88OfHvewhDCBPwNeuAhrmcRVbRM8xZX3i96PlGWP47fr/DCufm17vTfb2gal3WB74+/vfYtviNoGCxiG", - "3o2QGa6SDmhBPonv/ICkubwCLuxqR/dwexBhAlK6wTbx3XJLwaW+pxpt5+q27y0uePdXGYo9hqlLWjSU", - "y9HR6aMfE73vuCYzRTNfRdB3hPKFInJm9RHTlLpCvcQOOKFNMeFiKmpiahWtuaiKMRQxpxqoLjSlajaC", - "n9NLEKkKPptDFlAoaBMUEAC6abEYHT06iH25hyev/+273Ucbee9aQR930MVwKx9v5eM7lo+7yF93/3S+", - "6BrLUIZdo/91mWhl5B6KsA2us6pLiGVclZELajC6h3CtK9YAg14Y5spfKXph8KImc6pJSbVGY1rKDAaz", - "n9LrfWiSMHwX60+6m+YUBKe8x41V7ELKslj6NJVQNweAqQFv8ePddCvSlmzkUYE1fN+xEly62MHYNUCy", - "ry6oqGhBFLvk7OqG/HA8yiu2Z1HegvTJalBxl1BNalTv0SSvrHb1MzdzKFBcnzxZVMjjufnKtbZwORnn", - "BYtXFDGzuqdEtDaEbcjioqJh7lisJdUTtN6miqad27u6kFepuPB/72k946x8Qahpn7bR+jPfZnDrTnzr", - "/fZ5T3LCAee93pWXsCmbdKdqfdls0JvNqZqxswZjGK3i4UgU7eMySSO8vdwBCI85+TpkR++2Ed1h9wOQ", - "zIQ9DPlaKn0O79XMFFmUc/3bg4MRcvTankhdlaVUpm5RRKEt0A9SEXeqxo0eL+HKwFEcTGM/XFz1mFP/", - "0Sm9TrNmJi6kylpruqCFTiwK3rzJWn5uAFrXJwtl1OHgxvabuk6hXbqsTHvayVQ4gIB+eFxcsWQKHEdj", - "2NeARIcKCh0jQDvSIcJhaqV2rC0NMxUyi1YHpiH0U5WU551WXUNYS0xvKSrfn7PsnazMiWVrUmAowSm7", - "NsD/T6rzBTdHVNGUk9WtrDXExJXTN+zadOWDetS+KCxiP0QDW+00y9EhwvJIFPCHGC5h76c4r4xJNTJz", - "Retd+dVgMn8ceTVXqQN6zsGq1tvkbxjsED/EweCP4/kyOdH1dvew3wrdAeQPjXLD1EK/vjhh6pJnbC/L", - "WGloshnLoIVwQcA5HCqJejHOTmN/1DgRoTPF8HTbAe94We/XH8E3hy+TLqWe01bxM6tqRlYatjhneQ42", - "27nUpqd3xj70gMAuHcr0x2D4J1GlfeweYRnag5qpntPsHRM55GhjNwUoCrlXmfljkvYVVapIG6HeHL9I", - "DuPbgSDdgedspqgwYfzVBik7X8oetZ8QYtq1eJtvtG1PscZUO/rxI5aTB/WVfKmdQPswjqlJCzuaifzM", - "m6veRgH/bVE4JeVa/aXg2YfrVuIbf2SwfhczYceFii2+PQkF3mEBi+P9MDZHY1fMCycoqRkzDV9+YuPq", - "DqedPbubhqZZ1CZ1MhWe1VzJnYIZS/fxCxhsSQstI5EE7XfikgnORLvqypuTVkxAw6P7uBkju7fzt7e/", - "PU7HwKKBqsUcwAu937A4tega5R7fxs99TTR+DsIDFPzqv5sasmlCGO0MQfIKTP9+sgmJPW4gAqZFxvok", - "D1YxBuDk2I+aUvTtX+dMW2kM+5n65fCobNjK9Qh2yVQ3CsFjLcmNNoH61jsa1tFovX9xFuh3NB7BItKX", - "CMyGk7UgdiqRE5hWEeEJ8NJlwPJ+ABpZaWzW94Lzf/73/1lHn0Stf4MTqDJyFOF8Q+D3LZ8TZuXRcaaf", - "ELjpNc8A/onHuSQzivQDjaQtN4Cah3CjNjImWvWxUdrCK+eYVZrtedlk00MwbJVHKyZMnQ8rO3Hhk1Kg", - "tLjrv3vJNXf9G0NNxYaeruzokazlwjTfHHq9TTPjLYNeh4JNz/3pAi3OeShcvXn3zZznORPjIdOCzIg1", - "7IsrutR2QPw8gsgZjRaybg5896ivx+9i+vCiiQ5kHzrhjgmh84HGMIoXxwYz2mJRCV/yZILhjh2SBYzk", - "fn/DyTTSC9RWVcZAYfujBGOkkfFMU9GYqhYfF0xlcyu05cw7jqToHm6rChdsQl6DSdBndtnZ3pyEMdC0", - "2tQU7md/TptzrNojz3TG2GmqpfLDtQB82V4nbeUDHpzLa3LOLqRi5JwBg3MrL+kSd0y5FtjQzQ1LZnaG", - "skK0S/xZykr5K+GA6vm5pKqufziZCi8e5f7hBNvkTTK5+Nq/93VZnRc861Fi7ojNbHqhrT7fCZ7quNS6", - "0O87Ws+Rn+4+kXYUrWkj5HkmEfGQmjV6TCWuVeSQt75Ujxo89baQ1xw6AbGQgt0a3tMOn7ktzO1DG0MO", - "IN9ChPEF4HsKP+9LYZT0SShOhpGChFRIHwDgot6dZbV9VfQWiL4bNtxYxDM2p5dcqkGyei1F0kt3Vbbk", - "RSLtleX58sRLkVNxKr004EVPit16WwOMoWOO+/HM/XgWaUvNaEKvC9QB5p8YfrAMdQMp0HK8bxneiPmJ", - "LSXYVuP49eay/Cu42X6XUx/iHvsnwzd5U3afXv3GLMYfXlfN/dwNlOKIN1Hqjhkmv7wW+2jYucmto9wg", - "BHiiH6YBIpy+0dgqooH/3RhkMEvdAEr4rmGu+a2Raoxmq2wJZpwDn/j2dLS3//L5mByKbDJKd/DQFZDE", - "X9hS29Uuljt1ld7RW0s6LgcvqrSQ0KNHEWo6sGQd9h/4cqAABBf+AjdBljGt3xy/GD0dWYHw6ddfu5Vb", - "MXDk6sw3deJg/kF/ZG3jaNoQ3r9/n6htlcqWX1n9IXKl+aZnkIK1/NhJ54OKo+3XZRCGddzGqghD3+2t", - "S3SEuCS0Zg+HB0Qq6HhgJDC4uPxHbdMP/HIqUI1sj+Nqorcj4MN3oyYt3/qScIf5ddmnKbsnLizIAuZo", - "Bhyqof4JaJutE49XGs66omCO5xc1KiedmiUxCmEx2iGm/bFUU1Fpd/128f6VbpN+PO36OjN1ux6/CW83", - "u5Za+N6Uh7pZp+KEMRJ0TJnpWL2kJf/af/m1+1J/jXjrqzuTtCremrp6TZZdOrszm2XDWmxZMdZgoCJj", - "BbDi35J2hnE9o7PIQCMGmr1z7lhM5As2B28sw5sXTwaEKr05foGND9iS5CwDR68kOH9dt1NYzdpUCqw9", - "YE24YueaGzbxzbmpotAyyjLmEFqB/Nl5KO0T75pMtjFBv2IozHh4sKKsPX6F1hZfBDKpnhAAz+kyDQ44", - "tn9SZeCfUhHNF7ygaoyYa0Y/K5ZJkfnKLTpYycwcsQGR1oIWRC+1z5zuri9lVL57S1WCWu/BVv0+ljmG", - "l13BL3q6mpzOFWPer3Z48pr4GcC5BoHilqhURnVcquSUXW9iDx8e8JLQPbz1s84+BguyxScQQn3iKl2X", - "0nKRBO+TYtndKk7p3b8bTf+9FbJKrpje60nAe17KbI4pb1wQbU9Nrgk1UVBo2taM49qb1ITDKpbYNQpI", - "78kuWXBR2avUSPL4GzKXldIuGqgzZuZK4k3Is6W/QsfI8KAqjuVFYQwkbf9FHETKhfnum1GqngJap+OM", - "jnSae6CTo0T+TV9nkdEJM0ReWPlsB8EtKVcu6XApK8AQNYZalELWh6vh5JhxzbwuqgJoUxup3K3j6TZW", - "juk5hLrNfTEo1+PIqCozlevHuaB2/EOR80ueV7Sw0NVTCc2g0WspdSgnB/WIEH4MiF5MpmKv2PhLj9Bk", - "CEDDR3a6LFmyF23BtQmBBfYl+0fTdKzJAzaZTcb2TsgfIq106coiHiKRGjVEunWkW2VCVI/efAcCcWLg", - "FGdt3NEQYY0nyV3OT+uruSmRgCY+mYoXjCpBFlKxiFqCJu/tDBatfiB/TdrzH3kYWtKf2wRdi4DIInec", - "OrpT0hn7d/fWTsX/5IffsTSJuLWCSVJWimKJAqgNNo0Sk12njypcQpCR1cYzCEZRXhYyc8ZVoBnnsWqS", - "EAh40CrKShM9wlGIG0hLRk7WQmB3sFhXm1CpYj6s1QOia2tsolhErdivwBCyaCfKOzFWs6YUaZWogAJF", - "oNM2RP+6MJ+bioOgQS1l9Z///X/mpODvmNdLGyUovAfRLcgyt84Jlc7bZclmTBSj2Nx4VkGpO28h479a", - "VgMvusHgg6e3pNPe5nw3l/nWRPSsuO3XR95AcVX+cqNGdelgxXRE2JtDyILzjDeI5DGDwQjFzQ2mx0wn", - "a+U0NdIOefg6UonEvH6Vax85wJvjF4P0lvwu9JbmVf6RFRdY4AnLFOuR+1xIqIZX/H53DCwd8QR7Lgpu", - "OBREcbs2+YeOBGoYeQcikLllMgvfHnNy4zLNDXm0Y7RYVa/5ySb1ghMmw09DYWIKC6v2lkH9yrJmyovg", - "KQuGrWBQm9yk0HTXwuXsWB/YdrtKixlKJZHWcrdUcn/6A6oM3viTsoAmePBio+shyat7rgj7s1UIwNP6", - "C8gSv8DBF/JqskayO0ZrVB9LdgvqLXje3s2kNdUOY6ryUBgmzOChnEwEH/WOC/ma6QFdLmcfD00Pt85o", - "bQceZEFeLS2eOFmpD+3JgH4fzO8D5QcsqceODfWjO4uNd7u9Zc2Gd0DKay3gvnytVIYWjoLXZEAFnJbw", - "UQiFBzFYp4oARGnDfft1eAB1OOK67O1sYyshh6RTh4XxVOBY5+DJNppcVCJDJsLNEoSEC0atXq9rz0Wo", - "1zBuCArBN+HdEA0QoJrDWtO+w80Z4qZt4f8v+B/39Mw93WnMM4pTH1q/t0mwNswkMPr89AdSUDGr6IwR", - "Q2f+lOFHnW2E7L46fwixdV5Q8c6KXRiK2THwlyDYKZaf4ajavnuu5JVuBDZ6B6bH4dN7QKLDRdSpIPzQ", - "RptjtWsScoIS3ajS3FSfIZsxpH1MBerN7kRY/Tbzkaf3tm5czJnlRvXaj8MKB2Wf7du1mlfSsNeuHB8m", - "wLJje/kNvQ7dN39mgimeHbgyfnaIhOK2Ysbg7u4oDnWxQF8fYE6NVRBgNHu2gdR81e8uL4JiC0mB+dA+", - "2TN2QqtB6roWPXAEtxiQl3GQ2wlCnfYanQ76UJ12Y+S/ws+6CH9wwhSnxUPyKpS9bXQezRt1F7vdD9M1", - "lFz9pEYOeqN6cs7Nmd2WM791jRSvQVfqCy7eeSHO1Z+JQQ3orRRfj9h0UazeXLlIh2krD073yEOAFq0V", - "kkaKdtADbts2f61+xGoIQD+SOZv0l3htvA+hb2kJ6bwS3KTEAXwShDc3VHNPuDBPHiedCnq5OJfFGrDw", - "pQFCEyaF+nqnOHQE/KrN7alpGmubfz88ef3N40d/7E+ts093PNiN3LqGlhol1cXjN965SV7dQatWaiOx", - "7kkise5JT2IdABeqH+yVZW8C8mGjXWds5sDqjYapC+pqCxAqllE1JFmbltESU1fKsmM5/VsT0JWMJAsq", - "eAn1FkKVGZDsvJlyTObyil0yXwzDsBnKTFMBiQOKFUsiBXkl6xK1muwdHYIHmMHFgfW70Nrvbxesc50S", - "aT/j/lg5A1nlhrCXTC2oZUuFZX0w0v2s44Chf2fFOj7Fst/oqThQ9MKcLEX2o5TverNFoZzRRC9FRuZS", - "vvOtTSyM9m/vTaiLj0SJ1z7ExRfpqe0cgl375OJGinVfaRI7uBV+uJithZjjex8ZZr7K5lwHlyYrpN+v", - "7a2PmA8PktobarobVIin6h0zUNjhhfs2LQYs6heJmwVFZdCdudCGFoVldxhbGsvLHclvW8j+7grZB0vY", - "4C7iJ/hJIiavYTmDK1gKUSeuD5Xg8eOvNNZC5Zq0RIBua7OzuoDi299DA0Oe15JlXz8Yf5TDHo+9apG6", - "EPrYblpKbUtkjb4fK4p0uqyItUU6txfp7/Ui3bL2O2PtH4a7ptt73A+n8a6BvbI8cDSyRg8MIZZ7ZUkO", - "XAxbJw9m076FDWW0r86uF2hcBCpv6KYg9AA9xj0NE1ckz3u3MJn5ADnvcBgrjXbCWSHPgVmiAyGUerdQ", - "LMsP0S7S0esegHzvjYn8I1eotW6wz7pb4bCmJmvPS7BGrTwa0UpP8QTcsEJ7i87CCZorKfivLO9NqjuM", - "4rWMJBdcYGRHKN0bet+hb6u3Qv0NSlK3gLbwuiihvoJV9qG/unVYnosuSbsFmnP84NaXh19uhJmaIjbC", - "jjdt35lF3NewqC/Wr7RvCudvWFfkoo6lxrwpJsypDAzS9OWttMaG1IIoMReCLvonusM4i00215VeuNHW", - "eqvewI1l1xiP1ZMa2cWgH99/SA4PVmPwFni4BW0zL80FUp80aNgLd5DaBG2Hm710WkQ4Y8KK8CwnDw5f", - "/bQDTld+/fA+2Ej/Eb8ZV7lBbfuBdDkEntrIfANu94ILdsA1VLx7Hgj1Zd1vqHUTuu7T507chPYQufse", - "zdUR1erNDsMp9LmuaR6C97s3LBrTv9Lk8ODhJG1xqtfUN08D8I8Rsda6tlswj2NEvR22jTfcvk9p11bu", - "1qexSTfYHHemTxWfzZhKtcTFA2zwBWwXzLLKQHQ7Dbw3T3mfSwqWG8cEzi4oL1j8QyV8tPh5waLf5SVT", - "eWV/weiNuCjDpeQ9tWl6xbF190fNnLpXyH4zeFgbqSKSQs3y8ED7vAh/f0iF9HsHN25Npje9c8efnvxW", - "JFm7HoiSJoOM2cOKaYODsxOyHse3hMECT4CemJz5zs5TERH6oK7OG91qiWSuosE/N8LRZ4iaASgZIDo0", - "erAkjSb1saobq/SHh3S6rfpYAixoGDdWddWYwf1eKmYG6eO1Mu3HHhZwMYDDo5Xa9+MA23ivYO2M8kFq", - "Qw+HL02T4IfduIBIR3CfP8BaGJgI1TALce0KDtrhEtK0qW+lG0murcutpyFSfbOdM3+55S2G3i2p62Hr", - "34GjgopDUVYtyTsBAVuUgMILqYhccCh/SGpUTO6id1y7RVzDcByavzVDfr3xrCwoqhKumsQ+zVmyMv5p", - "FLrrK09k+DLmBTfarGHKOvZPtjNAZSuQ+ubyisgLw0SUDEgV1j5jufvQtdwheQQuZg0/RzlMPyXT0dGj", - "l9MRebCQwsyL5cOx/ekJ/PTPiirDlP/x0V/tj1SIihbF8mG7ldHLhqLfjRR+1lzuveXj+IY1GHG0InAr", - "i1LhcAOjEBUPybZ5+5fvGCnnVLOe7A9LGARegJAwhbxZQT5SUcgrjRFYrilMQcVXmijLqjKqck0kRHzx", - "BSNUk3a/Ye8a05Op2HOT6CtusjmRWVYp334LJRcmcjBWtVosjgkTGvNIXaSxPfutjo1Nt5yQhnCRFVUO", - "8WNqxlzNhah1DgBjl4vcdZCwYvn5kf0Q6JOLQ/wo2omjgM2o902Q40olj6Ec1Kbd4Y5aH7Z6fLZqomEC", - "lZ1NQaw6LLKbs+XbypVK7iiayPdYz68jhnLUM0qfwyywws6dEui1e7F2K40VYNssK9e1FOWrBmX4Ohvk", - "ge+w9I5hUsolU5pL8TDd6QGGinvk7kMkYkKchN9DxmynaVK6nhT0DE4fyVCxCd4Jhr14WAJH1+dIgsjm", - "hfuo2z/NMqlyl/4b1yP1N3LwWFPFIEbT7Qrz1aBdQxS+YBOSLJRXKnbJZaWbOG+toFE4/a4zXL2gtamM", - "WAtnfWHcsJvAH+O7D1M0cyenQJp5Y8OhJ9ZiIwNwPMApfpuACR70yGcYJTuuA3rwB6+NGPqOEXZxgSVb", - "frAnpWbqzZ7z4CqFgiMsR+VQu7rpofJD43Q10rO6MjKuprFPb4edtp7+t/u+7N/v8bQ1UF+//bs7YOvS", - "vjGTMc4ZmxBflJJx7CwwZ3ARSMhLJT9SSKTTDLdKXtavfMRSn39hy/QCAfKNVrhemOyE09wVF/MKC18s", - "WM6xyOJ98bZY/+SahCknPTm+gSPFofseqf1yQcpQvteuUtqu5FsnLKwKpOT5OiqLqv6Gor91wOeqsQfV", - "Bj5zv5y9Y0ssDtwyPQghsSDGJmG00UeJQNp0+YAFFXRWW89cngrZBwgsv1vIHHNGzpeW96nJipjTBgTj", - "Vl3PDRbiPkjztE7B99YZnYo3PjvH0GuQQnkch9a2JYTZxp91vsud1yEJqX8rEOz2Yrwa07EhxLWFixnZ", - "+hvmpKGGNsGBhuFSfMSsh33X6a4BZToobZuUdJ/mrC8lYeZdSiTZ85WXaeGXlJJQpuI5iiZOLGlfR5Po", - "LgrthrwEjEf7oiq6fqlw3Lho+6h0u8M01HjKqaHnVLNhgpHDhxXGtnbKe7VTKr6gatlTKwqVMHijVSyq", - "TWcNsxR+gGOmc6trA1dPgZyGDaxL1NAwLPQW/aXx+i+EXZcWZzJoqINMjTG/xnIZ6UN60gC/a3L8/DOB", - "0lLrJoooU2/aIySiqF3wkZGEuhcZgYqS4G6C+i2ysfO342YRjQJ0pAHexulPb1eoKntQQ6m/+Bo+j6oo", - "YNlmV7KnK9BQfB8D+NvNWWFRkBG+qpzYqk17Xo/xk1UGupbrlxRoNp5sFZSoFdpd4vieW5r9Ce0qoUQz", - "+iHCsO7Bv3Z+x3ujp85F1Hq72YI1ws3K/Vqd7RFemIoTI/0O0bL0NZUy0rg3GpyKEXnxlGDRmzHRVOTn", - "8npMOsH941HO7dQLLqhB09mijtvrvD7MG99e4HjkAOjlgvg48R0sYE1NuNZXtSK7fIUaNOzA+/FICja8", - "0lxn1DVfpZcwrMdKL+beD6AfNGW8dmXaDw1bbCnqTikqgeB7obHkPJ8q1R3Rmd1glvc3+A+vhOK43Sh6", - "LyMlEs3sI98r1zdyL+ls05izBmPoeGrprCe4xT4hXOTsuiEQPUqV17HvnvBfe0ZaOCVThGJQuLSSqbCe", - "evzd3dQMRhpaQFP69BzwvD1DY+BvUwO3vTj1LA410do80lfRRp8zJ+RJu2ZOa/OkPz+r3edh+fo0bSZb", - "W8PW1vAl2Rq2iizsxqqb4jlYS/oFVXweqsdql2OmTGdnMFGlRPaHRVehJ0tlysrEOSpNC1B/Ykna3bym", - "IR2YhVoVkFuiTmLQNy8OD8iDN4JfMqVpUSzJG+R0L9g1z+RM0XKORSXIiVQGTtNhsCE//NiZSDxfucdJ", - "r/ZGeHRe+SYi3W2xGjTwaa6A7bXKmXqWgA8ekPOlbzEYxZs5vuTpKW2sWUVXn5HMvBWW711YvuvaQluZ", - "eSszb2Xmrcy8lZm/UJk59gHeTH5pujgbjfGhKesPCoLh8I9TuVKYeZPYsNti2xmas7h/KJT9/5UpadEP", - "bQIdyvV4Ks4rQ6QIP8EHkGuC1afs+FI0KbJ5aTai4nqcwv9wNeqpwWrRfi15AnyXNYmNJsHZKmQ9Bnyu", - "tcw4iHjBlxzD1yPenQRACdeEYot1C1JUwN+Flywx2NuHJq4N/wwe5oCJRB5uTKkx0lIE65Oej5jKmDBJ", - "sbF+FvK7u7tTNgYYmENTf5OWaOpBPcOKAXACqBMuF1zgX7sRK4smaCEmgncVXo4Z1VI4oeCkZKIn+EzB", - "e+EaCHnwQABeUtb2+0RGrSv65Q+4e/0MXl9f7q63gFdzDcfUsIyqfNVOr12JcoNEO5PKz1aKFb19bfbr", - "x+TwoDNRnfgeHZeCi3dx2ZhMSa2j3LFQ//yBz3Djl7VAXGlGMqrZQ1+AqBvGHxV0EDMuXPw+rYzc8XWG", - "IGqQ/GwZBbMiB/ap9VluBRdsPBVlwayQtKDvLD9SwDbfMVZitKyVFLLm8lt0TaBIPEmsYiqgrZFuvk4X", - "iJEFn80NprjDBK1Q5w8TI//J84Bx56x5gj5L8oPV7TE2YiH++MFdfJuTB7fx9tBtD507dP+sqDDcbKCa", - "v6oWTPGs57z58TySUPprEMpLLzxLza342RGeV540GHDwIQvLW3XEeg7Vmy7ozZ/IglGhfQ14Ri640oa8", - "coYsCn3nGZsQK2zHOdC6ZCB3TwUk3kajULF0GINKTCFYw8c3QZ9koXkOkvUuqYThhSvF6oCaCq4Ju57T", - "SrsYv+ZJ/zQ3vLV7g7YtITv7R5BgAm2ULBohX/pORM6EvLv22qnvG6/8bj6fw1JyqhbC07V0DpaCLnh2", - "ZDHxMzfzfblYcBOi+lpYxJcRb6i7gDBJsvqrLmG5u3Rv4e2xd0FdtaFJk4IvuNPFEBxqyEJqPHvIVGPK", - "8qY4fOIS/O8XQsRPG0Z7vfQCiSDFQFaF4WXBN6mR04TQZ+c9ShYTqccHdb0si2VIbw0VFHwLH7i3YmqA", - "8xxqsUzFDtmd7D51ieP2Q65Bhccn37aefLv7Xz2bqOeyrz7qDBLuXqqT77eHfpQcOy7CdOu1r66wbKKu", - "bYiqyOjixrmFNvY85400pr08TwcA7uW5L3xq2ALWifUruidWlvENS/P8zH6StAXBCH9J+uPGcDfvU5Wv", - "czkd+/faq5blKJoiGnAgJrCExwpUwNgD1o/v9SJgkxh/gMmFSfWvd9AKj9lCXvbEe+IzkGrtdkNRlN4N", - "t6/0bWITGQqGvRE9rNlbD8Pwhffsrl/5oM1161mzv3240XN+YdZSdw3siX1/CDJw4CGoODGKmWzegwv3", - "tBcZ7NowkaMVOVnxajU1aBz+Zuhbg4IA2hAsvBEW23lVMPskIbKH5xpkaav0uUpBDUf5EH5YhbHO7DDr", - "ebcs02uoswQQ4FKxjJq6uk+7l0mdlOCryKEy4RVrLKTQzmDAuuC+6toPPtfDfiidUBLwwBJzjN1Nu4RP", - "cI4QaBPqQ03WRH37PijrM0GeuTfBn8cAhWu/eenexIZAPBvwyQm+eNsw7gQQ60KvU0AM/sJj5/0aivLv", - "3ZCwXHkuHCQmi0R9wtpvlO4u6mqiYBGTtmP8bkuYBLfVSkhc+bH7hOPuCydAs476Db+A1tZERSgadW2g", - "1ISuzs8ePX7STTL8ImoOoC58BJXkNrIT2/dX9fc1TpPGInWTLymB3pmP+kofeOuSqb2gVqVyNAd3TqU7", - "eet7x3978urg+V9OT3765vj4hx/+47vv//ztD3s/3aFx0gHWWzTnJoC7f+24b3fegRQShVN8903bkxov", - "h+78urvz/dt/ffDvT8/CHw//5Q9DKwQcM5qD39pF7UBgaF0t4P6RvLZH+gcLr3E7MHFJ287R3BPvWNdT", - "eMcC8nz/cucCn4pXr0+fPyUnsRceqxHXl+OYOHu/7y5l9cNgxNk7OmwGCIbKTTuP7otM2qZuL0N9mX0g", - "nQ10UwZ+DLXVuJit5ORebI05eeIK7fMW9DWibMTMQDRwRK8NNhXz2mGiG5oIoKyaHiLGubBqKJGJMT8J", - "8a0jvd3NDRBipOoVExn+OsztNx6tn+91cfNVfsC75aNw6Y041R2c8uhsrHR+uIOeCrhqCM7Dra2dY/rT", - "41Tb0a1GtdWothrVBhrVujqfkZzXlPH8hx/+VllbunOlbJqEuyFTfrFl27Za51br/LS1zq3m9flpXj3K", - "VuNqWSPSdVWu1QpWU7G6U/dHA5QbuEJa32/oFml8ffcuktbwG7pLbvp1CrPr3Ch/VnSYd86S+sy+nBDn", - "F/2JqPgMIkvgY3ISmorREBbnElW7ia81H5AVdlVsRCrjuoTr6HcvMjTgJ5aimxIz17piexeGqWOmmXGy", - "8WcuHH8pYhhWUueXLLWS5/4hNkGw3A4oFLu0ug4K9lflbwH3PBSndz0lQseCjHEnBAEzs19ccZHLqxP+", - "KyMPFlxUhj28Y7Ux4tB94qaTfGLXN0hBIXoX1gXR8k0zwgbC0Voph12X3AVdDD6Zz8M3Ky9gBL+eAG9k", - "7suNwgOm9/oy5fmCRVhwb99ul9Zi4zOVVOn1sSwKecnUXsTyXdTlbpJ1oitCSWh1B60oqLH8gpkxoZZv", - "uh4ZEH8RciFplC1xTgsqMkYsgVCFB+zKke6SzGnuW444TsTMZCqeuY9wivAEQlVpkUGTx5xQ/ZS4N8+A", - "iZ8BFyd/Ii8PXz142V7umLzc+38f+A+ewaz4xZi85KL58sOHA26zzg12p8pAfTj8sG17D1QocY0lLfsY", - "lfzsm9dq7938xeWSz7n8vvz20fx7zn8Qz0CAXbSXuSWBuyYBwa7Nceink2Za9p0254JrCC+rO75jSsWl", - "cokTyTx5eOp1Hifnua0Hc/Scz+ZM1W9CjnBZFpzlmDoymYoj/xCytoJkmLOML0IpEz0hP9sBC3nFlP+N", - "cJHzDPu1uZn4opTK2D1q12SgDXgf2dkg4bpSMzBmz6lovfN4MhU/O0nHwq0Y0eySKVoEgeGSciiREFRt", - "iN92FpJx1PCDaFa4TOt625y9HkDXJsw9mYpDAZlg2kpaivnp9Jx6G4ydJsBasEtWjKOhs0JqO6KRhBsd", - "35Bxk6WwA4eupg70T7wg5kr6GeFA4lWU0cLPyENH+/rmpYbpxoJhJu9wRrBA7oikXAdAq6pOIM2KC/Nv", - "ccbi42+/jfSAZAEe1Tg/d6ntR52umqq+042+EHvJpbQC7kCZyYKNH9wp42k3OeozlCxcgaJY3G8InM5+", - "0hSVh+jFsRduExW5btQItpRPWGP+XahIH0312ArMW4F5KzDfNwlsxdOtePq7E0/XBwh5B21LPm1JVeul", - "pw0FpVS40GcoGH0EV4LAaoJnoeCgI5rWj++3Yts9im2uW3H8kOtW+RVHylgGDf20UBkWxmDFcrJC9vs0", - "LnsS95bFvWb/rGih3dpcuv5WLNyKhVuxcCsWbsXCrVjY05ivLQmuFP+28t4N5b1tNMk2mmQbTfLF6Abb", - "kJR7DknZallbLWurZW2jVbZ631bv20arbKNVPvlolc0DVHwxrgFxKe7VZs00V1ftoiqADyyoWEZ3mC9C", - "rsdYO00zAxyrKl2e0zm1hzE0prc8DEe2b1l6Ldi1PTI5N1F7JNeen2uSW5gWkDiFQ0kR0gtxhkpD0fL6", - "OnXXoD25D+x2TjGri9CikFf2lekoCONQBnnOCORn5J4zcE2mo/NKCUNyeSWmI/8aDPRwm6i+TVT/nSeq", - "J7C3TcreJmX/7pKyuT6RF+YFX/CmznhBC925Xw8viPZv/8kO2NgLqyN6kdLvFbtkgvAOlyNxA4MxmVPt", - "Lkzs71Fc0aW2grCdI66lbmHFIvH1DviEXFjMG+FKyKcXs1p8OIgqiPGZkKq+Xs9p9o6JfEKO6spiEeoI", - "F9owmv8/2KjhgrMiD9I8FiYOhVYvKkxOTy+glWXZJqi/ygrwjBKeEwsqIxfUuN7CtJBipnneqR6L8r8j", - "N6IzJqjiklx5VwNGrIAkAre8/acTSSbQnsWqYAvfb8Y3c86J1YGsAhepu340Kzj1gVNrWPVQwU50anWR", - "aEDUdMxXGuwVYKxwghp0y7jgs0ohhim5oq6ZGloYGM3mzsQQuq6O3Z6ivOU0dFMp3CCp+IwLWvjVNpc6", - "mYqXVFSA64AyXUFlZgcxYHTB0GQCTfNAiMPhpqMxmXYNNvZnq7VNu5a+6QgJSlsBEE6F0zEno7XeH3du", - "DgU33GvGJIjmHSNHi/6OGhYGd5gedY/NBRcsVp6D7hu6CDnbYHCObaJG+jVY2PwKYGtxV4MZJKVxWrWt", - "5yg1NCZQ73C8OS1LJm6rNA2ohkF1pRjIO/1yNwAIigka4/DEY0cZ+3nuTPUxlUoRos/GHvOgusSnL8Sn", - "2RnufakfofBHaXdTXbLXl0xBc8uIDNbccbAMZAX4MXo/cLw8mEkB9ThG1BYHKsdZOjKS7Da7puIAYVA/", - "TvIm2FbLjNodOgvAtmbLZnaxH9m6Wi0JPehDlM2M+XJS80uwxyaahtmMblF4U2FdmEXXorQtvPmlF97c", - "6kRbnWirE211oi9UJ0ppHkPF8taXXaEjXviHUl62KsaNVIyNxOzPpdTzTcTEVCjv1pW4dSVuXYlbV+LN", - "XInbGtjbGthbd+vW3fqlmxZ0tUEk32FLke/yWFRnIkVm1FZ14md9toHVBo2ttWBrLfgUrAXrzG5bn+rW", - "p7r1qX48g8fWr/hp+RXvzZW4SVuJYDDatL/E1o/4O/QjogWtL1HTErZhC3g+sO9FogTV+5olhGEdIFQp", - "utwqHVulY6t0bJWOz13p2DottzL81mlpx3itcqaeJcQneEDOl0SW6BJqNTbDOE6Ht7TgncJiNPURtRzW", - "sPyY6VIKnUiDD6/YPcR32nJukHoSPgb7yAcFeW9LSWfAMzeVlmpyqUUhO1ZPvjwQqcjZdTvlucuM7Lsn", - "/NeekRwHdHnwVjvCZZVMhbU0yw90ZzDS0GK/v2QUPG/P0Bj429TAbeKrZ3GoidbmEb6GHE9cP7r1QtAe", - "wd5125bJvwP3MUh3abz9t5PXr0hJlYbaDPhman5yOufalZPhVorS0sl7lrvOmSDZnGXvrKQW37MuvsJK", - "ZRxk3ihiwwud9ht75e/MFIV4CvdRkE6dW9NdnOM6VAPF1aWsFJFXwoVpTMiPFL45t0gleE6aNPAbmeIx", - "RFFWT0dPyd+noxk38+p8OnpL3sfU8A8N3Ry6TtqtV36DTtRbD/PWw7ztsvwhlIpttlKtkbgGvVunwgdv", - "MI0yx10nKw2Sf2+RaeQ8BF3ZuCMab4WqexGqtn6XL8zv8lGuwE2ugc/HLuVYziAemAqj3+r8W51/ez1t", - "df4PpvNvI++3kfdbu8jWLvL5CYVb28CnZRvoDTgcHi546rZ/bT/lZcn6pLGWn3scnOHjXmoaj653ZnJn", - "lSc3JatHj4lhi7KghoWcV+A6uAltMEGQpKQsqJhMxQ+IKfxQLriBUtJKLjqRRH6OMaEaS8bbT/xGOyew", - "svSWUQVUnXML74ILaqSyC1jQsrSLe/pbQMt6v/AzfPOnxxAb6ooLr/2qzhUOiF//UVCM3geVZ/mKLuy2", - "wO68H4+kYEN6eqQAeT8e/FEEyOBvajy9X0Pnm8fDNs1cd7qvDVButMOtETbc7cbX97HvrQk2pIGbfp3C", - "7nq6+LwiRlw87TZm5J5jRn6y+v3KCwivD9hTqeBufF0yAUfA6+0LKugsWA3Y0t9OdX2FC38VgX3deZUm", - "pDGNa2DkuMSYOHYzJsEk3zVXuQjURASWlYCbbScSgf96QnqrS5xXvDCEKlmJvKeOAzadaNZ9gOIQeZU1", - "7tpGHYeJb6dCFIOQPeHaXSi2oFxEUcMJQWSMQbxolhHskiliKiU0EWxGrdw0pCtdj4ReR7H22Y8SWO0a", - "FTU2IRpqZ2rZad6x5VMyHcECpyOwy6xVKEJAexfin+cMjOSxAjenOiLNWFEgJ3PonkOzTEmN4cINOWlZ", - "tppiIUQ9EEbBki6i8haE6qJE20SDVOc7hoivDMnsXFhDBAluTNhkNvF5ATUWLFkjJ2qSsLwgj3Z3PSd3", - "Av555ZoJXVmaBwUTRmc5+bfdsWv9EkLhH+/6GNIGtm5GjQDjnkcR5Fb0Nd4ajE1sS7lYhJh5kJyLEOCN", - "XdSoIf+smFpiKPLRizcnDueNzzS3Z5UL95E75XdxDmE/brHKY4bMwYQ7p8WsWpd1KKMR3UM3ALx1T9XH", - "c8hltEYfcu84U7RO2Z4tS2JggUY26WL/wQLtrXE6kyXLyU+PQ6DC9mLZXizJtDGHVPT9BGvTUTNhcH3X", - "slswqqyQurV7kJQTM5wmr4IMIAY2ah5nkRwewLmwPwTPTpJCJv3oqY/u9t7d3rvbe/dzvXeVkur5tWFC", - "+562aebW4V1/ZoIpnpHmCIRqy5VhZ348PT06UvK8YItJeEFP/n5iqKn0vszZ20RIVd6rkWdzq07a1QPi", - "o1cC47ewNFk+F5e04PmZQ/0Z+mHW8nyQFvqMDGYeWJd9rTkhzXMp9Nelkl8ralhGVa6/NvIdE183LNgD", - "HCRa91o65tWCik1xIaQhFyBweEI8X5JBCGnRFGJnjLtVQ5oksEuWYhX7haxyeKbJCebtZSj1wMV+Arag", - "qZiK16Xz69R0AvKTqAo8fzTLpMohPRT3JB5ax0M/nYrXR6eHr1/tvYB8QW8Mp8Yofl4ZpsnLvb9iNWTH", - "5aHzKaEwG0IGF2YrLAMiMb7NHu1e0JztPMq+Zzvf5N9lO//2+I/f7mTfPs6efPfHJ4/yJ9loPEIfkUUt", - "U5c8YzuCgu/GQnrJFJ7C0aPJbh0NGfuPwRMCnqGVIS1uG0olF6WJjJ7ulAW/28CzbimOXaIlb1lImk/q", - "jRnbq82hi3BDFpU22Ckf8FXHYfgd6xUkLFSZFIYJY4KjpkE0+BAEAU/m8W6D2w83iACXriWc6QgaqSIh", - "fP0PLcV0hAEthbzy/XYtw4p9PO1PLIFHB739tHeJkaefGop2zu7qDr13Fm8MfA1lC1gYze0tb6WmZp6v", - "4qO2J3ktHCmXcWt+2O8m/xhI4k1YOnP7E7BmfqCEa2NvSUz8pcLRYLp4Ues8xfjZUQxKwmZsAHTxOYxy", - "cN2R7J4L93KKHhvcp+7e7JZR6XZrdZxiHYCeKfzWSZq2f5178nGCpr8NYEovcTjUNp6VSuZVxhR5EMIE", - "QIrF7XrYE8UP/GgNxMiuhjnRZRb6xoZtJi8tS0Hyt0z++Id98uTJk+9vF+C39oz08yDKhb0UkLPg43Nf", - "n8DzJkSqYtg+211NriQC1DqoV9pCrVxM3F8TLRcMBlqH5Nb9jLH0eM6aJD32DnhPRp07u+msRi7w3MEQ", - "nuxg52iLHisOjZ66ILpJJhdfZ/YIwIf6a52/25nJry8ff43reO9FggNW8EumlnvGsEVp+t1R2E0YnzYp", - "NndD2AvcjpGw38i8J6THPokCRmH0yYpoCw8feWaHTHH2CoMKX/b4xfzz9qT2TC54UXDNMilyPQiIAzdY", - "sjKDDuJ1FxIUvYmV27qAXNRazSoo3Bj7KPt1569U0Z34zfELZ8+q9++KaqIdW/LdtIU0NcfM5lQIVmCE", - "9BU7n0v5Dg7YKvDeHL9Y2yP5HDcx2rOk6Boadgd8J7c2buztdxlEiFqS+PH1m+PReHSw99fRePTz8+d/", - "GY1HL1+/Ov1xNB799fnecTrRP4xbh/B0Z0eVOYaBXXDBHXm0tateZ2TthgRtuxLcBDduNHhCSX30uFV1", - "5MnjuOzIo12rfq/uQ55H+B0WpJTYm56oe8FNWJUPCUssqE0ieX3EEGspCnGxNanwu2AmolH4IDXev8mE", - "PWY5kYrkXOO/LXQhbOeNttevNHP4GS9n+7WhhZxhP/lWJYlWCH9+SUXGcjBA/1nJqny2/IEXhqmVJsxV", - "OMfPT6Kw1YZZxCtqfma0ipCZndsKEhc4+2QqfPUlTBnk6BuGp7BYuFdDNHw0yrOls+K39K+FzBnwnD9w", - "YfduVpqdb0Zj/K8cvY0u8z+wfwLpQZpGVKtrbzXQo8TmU5XN+eWNIwT953dcl9KvB0anRX8k+Gccxf6l", - "xEt/noG771Jh0nvey0A94PgBMj1MAAEx2C1lSWgjUedOAqMd3h3bt0BYoBwfcVz4HvLTIk4EuEHvUlwJ", - "MPDGMNN7Fwg3nDMnTsHqINZ40jQffoNJOTxmtOAStRt2riTNwXdDre5KTX2PKZq9s98/7y2CR91o8CoU", - "wysKAkZQYPog0DVZeribgZmPp8L4w+unzWDw6J6AN/8ETH4yFVPxn//rf//f//M/yNlZ3SPt7OwpeaMZ", - "WXEb+rZoySslXCVBZoGLo97Zl4OvC0DISVHN7v7w1AwBUKzPwNtwx6cKV6rtAhJHCKwulkqjMwg26p1g", - "o7avDDiMVmDbl9oMP4xOCnvjP+wKgrURmakdkAgzqU3IRIPbBs8DFA4UFS2mIyePXfBrljc/hGC06ago", - "FtOR3ZbC6iVVCc+mIrjlX7x4ifPYE39uFZzQJSg6kjvny8i2HRdie+Pn+zLSEVoCdl/gP/ojnBWP56vk", - "7tVBzlsZ/MuXwbeyyFYW2coiW1lkK4t8OFmkdY9H9/WKq/rFi5dvImQ2URKAs8AD7E1cvKSlboOZ84UL", - "KLGr7i6vvqSad3K4p7qGcZ7hMSaHB86384BNZpMxmeLRw5LTWUGrnO082fl2R0shmJmOHrr9gnv0qs0r", - "kEURSjQXs8IxFbuqymD5a3adFZXml44X/QIvOIa7/CXehZcAfOrWiD/paZ7Z2WJX33suLcsL7I4cHiSX", - "g/iH6L3ELtRMcO3KuisKAKWWViqeudSzjY5gRHFHbojuYTxmWhaX7kzhneDmI/1HZzIVEF1QyrJC9x4X", - "wY3SJYCvOrTrOPNUoIPY4olmxvf9VCBZ4l6gGLbGJ+RW4BcJFA8D9ZK5XVKYrUXqsmSCcqR1KsxcyZJn", - "m9K4H3wVMfh3kpR+5JeQpIjmhzem9xgNN6X5TVaaXOFK4geSPE06ot1WItGC1xkjXzbZpuhjt/9gegTJ", - "Ah/qhyBblQwizpEcn+ILYyIrA//NaDZnZ5ZCx0QxqqXgYuZ/vlLcsDEUoWL2ugre1qn4xf34C8gbgtCC", - "UxS+foEZfhmTX/zriXdw+l9WYT7gL0lkp2H5K3F/azqr0XxTKmuMsH61PatcTWqt0ghFsUh4JVPZ/MOu", - "/aOaj98FD+76Ni21HTOaHzEFSx5+Y7yqFkzxLHE/WMAh5xNGh3hLtxdckDcnBzGe9+tX7BfwGnha7O8/", - "21Nwj5DBKVsDGr7TgA2O2b2AFfGQBEBgs2mCgqf5XmDBoXuBeY2PG9AENnYvAIXRe2E6Dm9EYLWjfBqb", - "18HgimOJnVf6BfK9lKbh28p0zVwhHeC2CPqhd9aAolTLCVjNQGY19uCuQg8zifhM6MAEWfHOrhjieWrz", - "Ym10hWA/LrKiypl216rRXqeuHXqaPOD52CrdidbtKQfhm/YIDQg+QPUkR6EOV8TBE6I3kyLbu77SSt7Y", - "IAhfLCoDynmVWmEsxqAJYq5kNZtLzIwhe0eH46mAUhbOEgT3KxeGKZpBxB1cktRHRn6lu704AuJmpfnm", - "DAWgxJIxgH9ACJ5d9go626xziM+ejyOUwyzBYj68j4gD4jOoCOHDbLa1IO6rFkTbbNUlgX5jlbdNOQYU", - "KtJ6cxWy55CxZR/kS0EXTg+NDD/rSgpZkXSw0g8mR7gYVn/SugtvWyCmb9RNbRbpWi5oJz48eH5Ns557", - "O5ikKTk8IA/evDg8eIjWMEx2gNhjex2xf1a04AbqBcNFZbWN7h0E/pxkVTwY06d7+HxF1GpzUnANcXe1", - "BaOHRUCAy4M3gl8ypUGtcTfKC3bNMzlTtJy7nnwnUuENUV82D9sX3p+/+/Zvf/z2270fft77y4/PHz1+", - "9dfd/f/4/ocf77BcYE/kOPKk8eh6R1pBYVGaqNVqz046R966jXQm+JBt1tohKhJygrMvEBq2wpmdXI3U", - "TC7OobCXuxYLObNoJnuvDoYz5pY3cmPMjNEZuJ68gFh9GH0gspCMtTqYv2fmmRky8wwuVOd7utPZ2cbT", - "W+nmHhDBC/5uPTALalz+SnPaMeEzIYFAM6eZ3wyKu+Yztz+449EfboWaG+OiGESaBSTR3zFdFsPosp77", - "nohSrAdDyHvjDWLYmbAQ3Pe5EAMOhsPEhz4c4tZIujFWpLq7K+/18Ye78fplgdNkmlxLEsA0hk9TDoAF", - "3JCS7uwuvkGu3we9oO8Ovru5I+4Snju/OO4OuI/KLm58MJLMoqDgS0kg2z4C3wm7TyMtdK0I5VfALhfN", - "25s4exolx+JuOzi9LcuOcidGXI+gn7mZH9ElFH5marEKX7jFJb5MDFOLj4rBsgn1wP4M9vN4vTixz1/n", - "4sxFniXT2OO1J6CaioOojTYXPortk9hwqc55njPhis3EhsxhqHsjmHNxt4dIbx70x1akEjlT2kiZu4hr", - "8GZDsSbFLioNxRoIrcxcKv4rIxycJx34oabSs0qJA3klfuTaSLU8YbNFsnDKHtH4yKMV8z/PKyVILq8E", - "meMAEIW4R2b8konwSbJ6FbgP3CjMXDHm6ixoFyw9p2LGcsJ4KOXVnjJ0pZdgt3bBk3b0KF80WVlvzzwX", - "PXmtceUvX/KMGlffLZSaT+Wj3rDcUwDpxFCVwPwKgBp9kO4QpEbluYCrOys/B4nwbiXnitF3sJt9deWS", - "mH9KgHoPD576soPN2NUVBjmLlfcD6su1kBB25yOiIbHfHwoR0LonWWqPZ3NX/QyrxNHMhYnYg2rwpDar", - "ylEBFT4goLp27g4SbP4cYDlmmVT5qH8BwVfTX4XvkinMQ1hRR+9ODlR5lz2Pmk0vHI+drKgcVzt6Auet", - "2Wlja+5gsa1r1K3cw1bvRofx9Zy4cZNnJ5lTk0bf9t11m/k9o+2PvZ7DHZ0w5+dV+B5A3vo7783f2WFf", - "XbcUnFD3tE0GQJL9Hc0aB/vD+6dWcJ9G4cnAEtZxmtWcxSPDT9yL78+t+4QDensM7+0YHh4cs95ycOEZ", - "ZiNBaJXX1KkghwfD4qX2EvFEPr8rnbh0H4e0L3z/8GBIJFESd2LGtMFKc89cnSsqlkNq52AlrvFvA0+E", - "e711CJIiUVxWyymRTiuO40Jc9DlWgQKz9jm4B3zZND2pF8jyngqie1aaxTd8PSlLGdKnV0HZV1eMqVMK", - "9TcsbPaZFO/069wzqz+0in/vW4/xrU4t0HUNOkMv/8MDn53pignqThdjGt7+CGEZYUcHVpBCsk6SsavT", - "V4SyiYj/SXszkoXefNsBcNU0q53VA91pa+J63zcFCL+8Y3Dqkwe1odNQtY9nk7YuKC/QEeBemqxlk75O", - "YrQ/EWb6OahjMPuV0lINEFD26op52EvCfmcvZCjsmIqgGiqvxHUIB3HmJod8Dzm2h/hhLA8EqUWwa7fO", - "vqMOa3H8G2pGWDg8fAXXZv0+rLjthTa0KF4yM08Vs3OPyQKeeyiiKruxCmjZzZmklZk/Ho3xL1pyV91b", - "yLNMMbjuaaHPAnQp5fBQWOZDixMw6QLBfmgzMhNQYQ7MHVSQKoxCMinQxoWmkVIBkTNoqg25MRdVccGL", - "whcf9XftKIn9S5n0GrkHsXGY2rsVf3V773psJyoKFgXL7Eh97Ae4Tsh18sNe8aIg5+zrOdXknDFB3EB3", - "Xg/ty+venS2HU+S++wKKdSYSUtxjDC4oirA9BReOOYEf4WVVGE789P4tV4hdGqKrspTKEuaSmUbb7+Gg", - "PkM6dtS4776HvgE5yw+YobxINdF/wWbU9QlZEsUyxi/9cZhJmWtoHIfiGsqVX0r1uAbov/VVGUh0Bgha", - "D3npVMxHu4+/IdmcKppBOY5muQb7NIarnicFlaIX5o0wvFjBDir7vMEPONyC8DHBArZAeK/9b/69zJ8R", - "DgKob5cUd0O6kurdRSGviGbGcDHDkQ4vQiB6WSp5SQv7vb8aoIUKqWFHMLm2Y9yxdJRXLEV6B5XDjfe9", - "ImePPX0eBw/iSr0P75lfsmu8Hw9zPfwsu0O8V5bPo8+7Z9c/JYcHur1KLohEfbEsNdFVNidUkxOjeKr+", - "b081xc9P+R+PsJvXyuu0cZNavQI+ATo/YCUTOQb5e1+VqTrYhQzkjAqyYPb/LH8vC/hZzPTTqdjBwzAm", - "M2o3gYvZU5KeHi9y34MsVBXpO4k77s2+4erV3C9d2xtOp5L8MBIovgh1LRpZvIJX0KMT5Hcti1DiPVaA", - "BwrxMNMLLpIJTh+sTX58HDqBSnXdHRw6IV866/CmPOKVMyp3YMUHvoeC62rQanvzji1DPaLQ4wFp2w0P", - "Z+I0IjBn67Skj5ENXsLFe6acU800dEC/YiDf0KKQGZbsN2xRSkXVEl+eiuagegyhH9BB7wLMB1bDltgU", - "KSbyGTPuDf4ry8kDd3agY+FDgPioYFSDbOW8oqYu0c01eZC3T3lVaqMYXYSj9tAHbDgG6LZ5Kq7msmBE", - "qhkV/FeXwtp+K1DxGJODkEGQBxq470PouVMJYyerSt2Zwj1OcmkXZ7QxnUSBTamb5FAgG4DlQOtEMSZz", - "eTVGy4ckV3PfLNFtgp77AmEl5Xka1nvwFscggI9bT8hhkzdbnUjISAZ3XRlB0nbydWkl3TyZO/QXZiX0", - "Gh2KzSg2SLL6I5eVjgR4kZNSGtSUQaIFMRsI1uJsGXWdy6RSQUPbhLUdyKyye3fMLoaECfyzoiDMnwha", - "6rk0a+7CIKb774h2H2p/OJrMHBZj6Dsm7vmKsRfGqfSazEYXOrRFMLLHnHr3kIKMsPGZxE4QfcaNlNzh", - "2DHXLigYEhEzCS1RsC7Noiyw9Qx+P3aFpRRztAnVlmrixrARP5vTEusA+c6Rbrx3wwX366JgbnUwuIV7", - "J2RgO6jcJGGryrLgN9CZj6gyfR4ZQ6/hqnQKMsyxXK0ggztvc+Sc4mddME6qxcJemq7HY0MMhW/GrlAC", - "gEWvmSYPasXuYRJXPuR0Mwghk7eLpihIlbfEBh/A6gHOmWFqAXwEXOiVKqVufw1sdS6vrJJaXzNzKvLC", - "SeknwWACTU1B4NaGipyq/CnZszy7KqgimVwsmMo4rU0zueOmIViTEk84MG9gGXbMTLGcmzMrRzwlx+yi", - "YJlBZ+pFJUJMZ0mV5f+WECzyCmaioF13z4R5J2TPDYviCbu4YBAiVyzJvzAw1+h/8d/idRM+Te3k51/Y", - "OPZ4HFpRLqFX/FS7O0DaA50CKeB82WT/TmkafMv+1Jx8yBV7KXm+oYqJn3hTSvrpGEVvZO1eMdTMeN1o", - "1cD3e8F5pG7MMn52H544sbqHywZNt+0RbfOUQ/SbFld0CfedE1X8cetozD7i1JuG2nYw6KU7FYhyrmv3", - "t9WjY+7DrsuCZ9wUS+8l8CCy69LyDRdyN0lXMumr1h26ibmrK7L8BpUwMlyHyyXIHO0rOdqrt/1ejJZl", - "qc+n0XwN+t5B7zbsAXRz21PLvwdfJWXx0+ZEiXnqP6E0cVmu78PVqYdYq1Q3md1nftxobkOvbzqvodc3", - "mfP9Cqrww+yBRyqS8tLU0XzdaytOfmvlSrTEunDTZ74EylQIKXaCuSzoWF16UUxbdVrMrDjZE/wFtoCu", - "oU2B8cm5yt3clp/YCxiYDhX5VKAnxwoqLLe8iGjDSvTW6Ap6QV9UBbCjH6J6SZjRA1SI9o0zd+jbIFjo", - "IQXIvYZ29TNvVz8TjOX1V5ONuwu38PN28IY3d/CD7Xt6zwfCPBjMDmTU/Ry3NCiZshdkbYKNNiHZm2Bz", - "m376jKVsjTBBS9xHQxa7NqsUIaSk+4QNJ4j93IBFR4W67SpKQonev/sDEhyATfw9AH3Z8hlnMgyGHLf/", - "ziOZ1pl4HQFwG4hbpyxli3NnhHRORgosxYxa3h8aj+3wjYgGrSsLkmWKuO0YbZTWyZ2A9h9oXPKH514g", - "9QYvb8niDBMgMGgbPSuRYz4FrhWm7w/AnyTPsQavnXhJmkSYAGjFXX3grDng9+hjgfFLjfiUGg+hL0HK", - "CYPN2/EwF0tCc3svXbBk9VjDZvIGdBiDuC+12fcDNbNvnULfSb31rzdSbh2End3dxq50A9YwIgWwxzWQ", - "xTbI4/6DPLgGD8/mzNAek4PwdeLS88+8uVdjBKDvoe332Aqvr9gVCZD4GxDP+CWn8cX5lY5e3Ds6HEO3", - "I5rxglsRcyrqp8BOwO+Hdi0xq73j4D9InszbRElYlHz8SIlaTcMz9MHDt28qnRyH3v5pHtGIeIAb45wV", - "Usw0MXISTexZxepGRpF9zJEijlkbWtxwdx1UvaCCzlj+bHkj+noZvu4iKYwc+dp5TQr2bm3doP500ZIT", - "qYgbgJwvyeuSCSiKn6S7zyeWgaZKMf2Y6CHUmZE8c2b5R2CNf/ztd/089/G333X6+nsGzHVZ0CVxCSZ9", - "Np/7rBCy+iAcJeqFhNu3ZOqN4GbvVhVT1swPZVuiMBxyzkCql0U+udNU76NGmnd95PFewsZ5UhGIza4s", - "JWRyhv3XSamqUmqGEYjOWeeNv8ZKTNqFBYDHHasK4DJcQdZL5toM5u730PJhErvK7wfF/+Ed6iuwrKhh", - "+1Tlt5Kbj/0gaQ5u5yAZVXmzBxkevVjou6Eb24LQ68o+abixg+wR7uOMFkUw6KOIjWkrKC2M3dUMZAO+", - "PhAuIpYJETPnjjaYmNkX5cUaTqqr84ZcuPl6owFW3aDxewA5Mjv3gfYKl4PHlLVFKrogNVEMg3TtlZvy", - "5tLrfSgpPXwtp+GTIaR8Sq9d0Wriey55E3S3lnWTqMAhndAiwE/dkE3bbu2bhACeYgbPECfeXbvp8UEb", - "Ayt872uRHvnVg1AZ1X46u2Bg3V3rZPjiet+urNU/Ro9bLfBFvrKUIy2k8deC7Li/Mc86s8UQU0z8QRwR", - "wZs2DJ+3jaEM9oe8AhtwpcM/6VRkcrHgxscHeAKpDSb1854Erv77ZMhi/Mtt83p96zzgwjBhHvpC9355", - "nqablqQb6MZOMlilF0NkUUJJbfKfWgBTG6lSvSXzekIZY9kr4GkyFT/bA2gF7nGjX0cdYGRJ4kIx1krG", - "9qX1Ro92d0ct4RbEUqUYjVuZQum49/3CPRZITJD/bSWmTeQjDMcH6fopeTS6m3suEd/lb7a+DalEzi64", - "8Fku3S+ifUKXF8CceLEsqPDyV6PFWHizW3cIdmIVJ4qiQ4fbBiEA6ZU07LVL1a6tAf0eiWiquJMtvgud", - "gqMgckmoIOyaaxNHP1lmAGM9XOXjiyZKN+9Lv0dwn1zTOHd7hpm98IsUFiDNY64ZxXud+ST2M29ZWcE9", - "n0MMSC+c+LgVi19SZbp5JdLHk0RJw64BVwwopl/Eccx14MeElqVeBe2fmbBHskU5LdvoghtIC4M+sE+n", - "wpdps7TqYrG5cH2aglCrWF4jfE7B24EBbiFV7P9n71uT47bVBbeC6rlTiXNbkl/JSVx1KyVLdqKT2Nax", - "5PicG6VkiER344oNMAQoqZPxGub//JplzHpmA7OFKXwfAIIkyGbLkl/hqZkbuYk3Pnzvh+HZlVziOyrY", - "3DAgIKQhy2BkPWBI1CNyxChajn3IGQSpoUSAHviKBkbcpRH4GQLlGR4duFyxK/2InGiIhVQ+L1aV/44k", - "MmXBGGfMrzZCn/o0yoFSxbuCn7kSS91ufJGrwhJnHUqUKoKjprkW1uMcBAb3ELkiC4bIyZyNS87rUNB6", - "D5XreIo2H3C/06iHmPqjbBvDoqUTfUm8DtiOo6oYbsJaIfhIE3ifmNPnC3R9cmWuurBWrykO8mE9puod", - "jHE+NgwMmhEb3IJnacE6st2j8z5CpfNfhjkD7gLVEhtGJ4SGyAFi12iEG41woxFuNMK9qxHOMt0/ucqI", - "6+1OvoqzCwi02fyUx6wNcPrmYdO8EBrr6NYfd7e+++3fv/z+0an/x52v4sa50WLYbTEc7YN/NfsgVOxm", - "6WEBh4cGon/coGbh2FUFZ2kV1hhqGYAf5AbXzmQRANsXzqAErv2GcadiFaBdi8aDUAQhxdYfrICc/gnF", - "UKa8kPOCKTA/WcvE1BFpw9wt5KWC+KZlWYXCIzIyhNu5h5muHW51dnM3fWbRs8Ji7C7PkDtWBwr2uOxB", - "1k8L02jbI4tt4xOwE/8FrKD5bT7D7ufX+fbe6+uCMg9iZRu0XroPwjPIGYJo0zIJ0uVw5XcYD4HfTJHs", - "lOmVtIia2I0t+rCdLeRrYnbn39/HNTd0ubd4zNc2o1cHfRNGdBf1WjVOaA5Fpy2vq4N0RGgFMA+zOo5Z", - "UPsjvL7RPD+a50fz/Kdjnof3ewrvd7TQfxgLPWgkwC7q1DGdutl200YyT1tsrEmV8N4xRY4L13ZPxnE3", - "5h3dZi20p1Aj3lEQt1ItYSGrMBGEETpzViSQ0h83d2e7587xROrFAJJVQ2/zqWt0/xIq1mN2pWvq1Vp6", - "ogp4gD3uEtduOLfhx+a1b4THOVjJ3HF8gLyG3UbAaznCvMTusZg+8wHMnp9pTpEGOeqlQ/aUe2skdkNt", - "L1H5S+RP+KhyGNRtM32XU1lpmiHrLem0wf8C229km1XeWym2oVBFeopCXeccXgTrau6k45ANwTI0Nbcy", - "x5FuyqE3WKZIRs2O8kivgijb9bvraB3bXK3WGx498la4X8fggGhG6wrHTTcPq+re+xqwexaaEDrB7lnE", - "HHC5kFZmVlFxoiYPTyeYTB456JJmfa4+4KHJ8owmDPFl79pqLVvVTvHXpUxZhg40grx6fFh7FVV+OnC/", - "WtJzpuD1OyOvYUyzTF5i7QfgzsScCHZp/RMMUxXUhsQ5N3TC+WAW5U/eJGmW9LGYJT8u6+AYeTdaVDax", - "qHycWv+/hJr849W2xnVkEe3WGgnkyBsCmsnXhc8bW/c1Vm01f8BegEIfYlbRlQ8qsmVcr2Ms4lr2PgYj", - "2qMuF3Vq3/OqkE+P8r1RJt0meL3JRNTOmNEoXxwscpscWHNla/kGSr9QzTG4Iimfwb71ifCcb9iz1amd", - "LNIeI3Rdv0jCtWLZrJnGbBqYWiGt6i5ZSqEXmbOY1gehIlnIAhn8+3fvf41UFvu1Nu5GSCnPVmgR9NnT", - "4DYvgYwv6AULfQvkrBr6fm2iBz4zPJTZUrUJMJv82nM8EU51W60/nOTBvbg2yXDgw9FoVaizw2cKPS2G", - "25Qg0f4NLgDGiwLzDRro1i1izbwN/NmQivBE7M1MG09/DUY9pleP2YJe8Fhpt3g77+C/kJce/zs4bIi9", - "hkK5CvHg3OC5iCWjFu9Bd2UzOTMf/1Hv+uSqsyO6jkUmDAt/u3mBO3Z/r8HyzmYXsxHuWTKopSPebQpI", - "YYUZer0bQf3CRQfVJMc27g4uZGPVcnihkXgm1bgxfx+ACP0/ZrHDbKeVusmQNHpF8kJe8JQV9bPsqrCQ", - "bFQN4hA70DmLc9RgHQrDqHLfATIRe09FfAAYuYrKmhPho+fOWcvyBL97sxPZJYJn3hwFWettBI4ZhivL", - "TS3PpIHtr75iV2yZ66++smoherV9MrkTx0wFqvJvwrh2JJcGokuhC858tSuwCFYynJ+xf8sbZXdrK6P6", - "sFKtZcN0GbLIlZWwQyuH+ffT0idGTWWlbnPMOMpKc1lwvQiRXSQgZTQMjobB0TB4C4bBW3XZrPvoeYfJ", - "BtLw1QlAVLRhJVhzMFsBreBRX02DMZigZxlmW675wdNgsD7XBLQeeJ9DyyqVgleKY5GyAgt1gMfybfg8", - "4jk5V4ubX+9o/X2v1l8PHj2ywnNfpC1KjJ/7CmO0p3CiRVRTMmeCFVQHjpI1S6wnyTiUYEoRLFwGlZko", - "ybDwwYwmWhZYBIXmuat9QL60S8gRFwZlyswvLqz0junmo8Ogf8IELbhU5Mvwd+XWG2bqrqo0KLoEpDDj", - "V3dq137w/Jet6uq37t5br0rukEZeFCkresxr9ntD9yXNr1DqDSs0wD1UogfEANdyALgCMFY/5+tJhl5q", - "HRCFKoUjTYte5dmAMum+iS9rfu266K6EUm6jhjexisYMwHnU/gtKBDBeiZRd1V5+daVcaDZH7GbaHvE/", - "OkZaWuucrdkHYdhmSzmU25nX7VJhsfZgBrCK78W552NvNW/MUBv469jAzTj0ahZ7NMHepr3l3NuF+SJg", - "gGkCvYq0XmHO6R66i/LVQUa7WQZKi/1FA+EQzTcIy7ArbWC57V6z+SFWYYSkSPCkOt92q2XTPG2d02vm", - "6ZrDxjvF1o8G53c3OI923dGuO9p1R7vuaNcdQgkPRF7qmySHxJU87le7v4ccJy4ZDWYi8nq+7qrix11d", - "NmNm29zGW8B2BzjGvYi/X02MrEJTcJ2bXGc3p7+uRyuxovvd24ntXbv7BZTJRJpLjsqqmLvw5mkf1mR7", - "sByqSy3kal91pxvhyknN7LJ9Kq8XDJR4zXKHgl1mqxAAOnRlZ1JmjIphQGVQGtZovh5gDct91AAnl8Kt", - "Ku1TO5FhwKWw5sxTnhlqPhhnRLrV3FF5sqgenDVJ1r3FI5jDdIh6xGP57gA4UZbrHHpK+AyqdVtLWIqq", - "jSyr9ca0BBe+1ynV5KS8e/dBQqh6MfMRWc6iasb4NaaQlCJb/QbDxysFtUYiZQ5qP/ViNjUAeSJCghXp", - "qDSEwwasmSeDbhHJKskY+ETYbR7sK2c8CnMBTsmyVBqTl2HePPi3Z5GBEaSYNQ/WZ+e0BddgRTPKsxqI", - "Nzy5fz7YJ1++EvyCFQqMfa9QbfQzu+KJnBc0X/AEPhzJQsOMB17NdecDuIwOdtNuP4GOJ2OZR1fhqWpq", - "WB8EVfOPmhdzJXBaI3+91GhQuNRLm063HnkdDoHa8rYWTpA0mPU/XrnK6CfCvEJbzvTJMgcNsytQXzB4", - "SeB0HbPRGSDpEcgQkqosj1URMI8rbUnb8L1Oa3onGCjIenqD8puT3w86nJm9fH+wD3dlNyIdyWzgs/cM", - "tjNEvxtT4jX4PxYkCp+rsFBQ3XvAratrAEIckrTv4MUFKwqeRrgX98Xy9G3s6rTRvp67L699IvYw3ZnP", - "zsiVQSY7aB6KG48Cx7qzUnFQimdyzpMT4asPct2iIHWnuELOeAYJR3oW7JC3T9bbYCxa3KEHxR7S3eMm", - "+bKRO7eTzq733H9vIL3WUCm8wWQjCLd2ljjHWWlsG3vtdxfjay5mSJDMxgEynZfoyzxvat47pIVe1Vfb", - "JXNZ3NfA28BR2ExsH6dacy3D3nSSC055U7a9cZJta8cnoyL0NcRvDaLcDHUpvvMybqJu/JBltYu+R20Q", - "ddfRWL11J5ENqaB+xJc26rBf6Gq0a7OPyjaoM5C3r5ZxnxFTQcXrwFiCtjBDo5+VmeaVAqfFWZqjlIXh", - "VFdM9ylxfg4UOE2YqSzh13zK1TE7Wbz5jt8jJXoXxVFjI+vBqp1OOiqM1spcI/S58Ao/VI/SaLR/vY8c", - "sMTKUU4VkxKuq8wypZZb/qHA24TyFPXwad/Vxoc47UAlmilZ7d47eSWQVN7njNdj3OdoHxztg596Js1p", - "M9GwjY8KxN5s9VFbNt93nsrRmvrpWFOHuWx2BcvWPvvCIM1w2TpL7lwE51QvwKdwMp2kBZ1p6yaIv6DD", - "YFWH6zQvZGJeG3yVF6xIS/QSAwfUUiQyy1iiucH508mFNHS6z30Q14yFN9btzLZq5bixPzd853HjmH/m", - "8MBAZYFsBROJLAuwYmhJCpatiLTi3nJZgg1gZwbBwzv0gmbc/ICqSRuiqrD8io0Ywlghwa40UZrlER9+", - "pRn1SJ5daSZSltrLggEjqmyXQchOvPH73W0OEH+9NAlqDlmOOmeF4ShQq9+UguvLb1/YE/vdwR0XyJ1U", - "r6NHzRVjizGKuw0YqhkoQQm2hZnZ94PMqf7C107AUg4Nh4zbVNb5Sfx2Wuc4bd94Dx449vlEo3lBazHo", - "qlwuKYR8GRSQZfUkQ5Erua3sjpWb6gXNymgWJMgwOQ2lAJGSquZj3PaOQS0K9n5T67SpJ+UsslZfkMSV", - "rQxqb+FSosv0m/pgC/Ur6Ersy5SPyb3RReKtV0uFqYLCLhDta3CNhFgM27CWmLR7yT7++H0uuanz6V/i", - "e1jZgFTAt7aINuTRmWbFdV5zA3Na5NN44623FIeEOEjXrsSdSh+q7avZCGmTG9yIq9UYms+P27+HtXKB", - "6S0LI841mQdzZAt5SbgOFAQLKtKsXuxRaSpSw6RPw7qPfYxXhMFfX+9t0wK5oqXA+0iL5Da1b926tsAY", - "BdF/oDNIbSnjG1O4WUXEUzvtOVtF9RA3KeneTmXfugJorHsbRTLOQnTgQuaOrPVnmCV3WPe1Jt56+lRv", - "gKpJjt5AFeEUSy130wvqHQLgBOMCtfeIlKAKNvIBOmGBvFnHgEhLzJ0Y6dRqzBaQXFF1uDNM3ezHNwts", - "+y2ocIK/90app1dVaJmuFl47mcnh3f1J9OnhJhvMubU3nbMcvOhgVCdmzbC2VkkzUrALzi7rwV+Tw3v7", - "oaL44OjFt99A9GI7yL5ku+bIGyt90L9UvKWob1VaGiL4musF1sp1wVVKZiUKIVCVVIrMxmWj31+wI6dT", - "kFCyaSEbmnG7tvWbe7v+BW724K7rQlG9IshYZXUKnrl08iIUoSYFW8qLMIksjLhNIDVpYOwhjcU5JNB+", - "qe9syY6jpzUW7bpasNPAOMRg3VzH2otyDZt31Da3oxJ6VROKfSJYCIZOMilY0+W1csNqD2ntU2D0CRhA", - "50t5IiDu2HMV0nqhgRyveMqipZuhLvbG3hG4yt08Vy+KdaUPIUwa3ckD7zGDhGSRLJjSRcPrMNh8PNEW", - "2GjqS4k5O0bb7Ttvg8aJY6Voh3b84V/SwArqWHDXhSuiBM3VQkJZcCladzKtITTuVWM0w4pxXGDwOmRF", - "ORFecW3Hx2x0H95jbfOHbk/dvZt1b9qpXqtX0/e0OwBgeq03vwZTP7MoNO5Q03BvfgHMiNXt1pWe4Yt2", - "biIWPQMruQKmF5yLKVlwpWXRrCsSDHEiqK6cqA1GWJMC/1roeQ0b2Rf7UuP8PLL29/PWGwKuDVI2Dtuj", - "7g7hwzEJPWtpqln9uVWLjMKTYTGBxXnJFIt5OwEPigiggCZD0+LjOXLNaUbmBfU1bGo2elmiKnjJBV8a", - "6f1uWPg92tnuwbr9oOAnC2tK9EzavQ4pDlp6mIxszq+t5EJ/iyIsLu3+118HCw0s5HhGdpnVYH66ydpc", - "Az0FKn7mSj9BwRoURS+Zgg22vbCUdhI4NDSLMC2nEymYBc1BnlfBbBF/q8F927kw3v5m92Ml+f69WCH0", - "+vuws2y8B9uvY/3PaHHONKCQA6E0zbKX7PeSKX1IV5mkERIe9AD7F80yyDjHlDZP23TqSrFWJw9rJcmD", - "GYGfCW1xBo5tcdEnTpzCdDTmcWAiLUgU4z2TMiUh4xNVNUVAc3A+q8WFuGbAIR5RkZ5JqAYSl07jHi7P", - "6dLzlVYQcrKlPUMfn0IxCqUWFWCX4FMNL4M7sKlhvlDQdXuYaBS79q7Az/iFY+so87oOknfzPJDjn8pi", - "j+b0jGdcr45Xecwn0wnnEMfkGnMMSxzydnbzvD5HNBqrhsLyfNK3xN/6D/VnvJRIdZXY3W2fiJdOeIGs", - "jc5eiEVnhAObWt+6oyRcS6X8lMWcCv4HBluBe2zQE7h/kMkhPA+CVawHhES+J5XiC23N2TCeS4hrBdSQ", - "/f1zUrsRg8+atTvhJYISzSWexMSZuSxCH8xKsTKdnLOVBeGcnfpup5peTdwbm+y5n83YFdz71uZXgx2j", - "y/EOwk44szmi0jJMolpbhgvg9D2qpbggur3gkyeS8Kn60rkky9kopxRRRJYatP8GOzlHMVil7eFW8oXy", - "WMpxV5U2pX6UOPSpmys4TfxCDqsv7kDxi/8QK89qz1SzudWaQSSfIitZQhybHdxvMdgF+FAjAD+DRSvQ", - "FXC9OJW01Iv7Roow/6I5PzWb+c2vGQeoozx83A3yU4PQP+MS8Reqhlu2r4VcYi7d/bkt/eTB79txx9P6", - "GbX1Ioib8ebROwZYDzlzvwX0xpPL4R7swfRRz/Uo5av210Geqkqmw2SO3TxHDN6l2fgCq/q0M2CtAFSs", - "o1Zac9luEpX6UQ9D9p9AtrQIhRoTp91W4rRnjKqyQAvr00JGMpPbFta5f2bahGJBv/92ffBDFPjWCQPN", - "bpCXEgWB+ICP2rTK1r1aYgcgNjZlYWC03nv18uWT58enh09eHrzYPz063n15PJlOnr943TZcTydXW6bf", - "1gUtzOsE/I9xP9a0gpkKp5Pn8nISWyxso7XUX18+3Xvw4MF3v3250DpXj3Z2tJSZ2uZMz7ZlMd9Z6GW2", - "U8wS0wis2ksKWkPva09whebNvTreu2Gn/Weh0753NDqsJ8LrzZM8OWJwFedstYWeGjnlhcH8bmzHIDr1", - "LmTAD92aQh8+eiZLDYaJysk/YPOqbMmg8/zu3sP7SbJF7977Zutv331Dt769d+/B1j363cP7M5ak978J", - "iYR9Feam53LL/rik+a+4s99qpxLLXLqL+Watmr5unzOMsMsFD5kGJVlSnSzAw4LO5wWbGybR8E9aNTbl", - "PtvzfPWsljWzNxlsY4EH5FieM0EAKM0kZjp0MTEofpmb7c8LWeaYGhQ46cmjyb9t41/+rP5tW1sJhafr", - "tMuWD4KZFXGeLyor55NHEw2/nmr7a5Avt29bAEgWCle4HBinzVXVzm6DwBNW7AY9O+h41QLda9AJwwv6", - "S1eUv3qQ5vLeTidUCKnphp61u0GnCHsbfWa2FKI3KWG5w22yByswr24pUwyPOluBj3IsaqazrHWwoghx", - "GXPWf+Q56z9YsCHgnTi/AY5TBhUqDvkb3Dty/mcuzZHFlCfilWKzEqphqnOeE5ml1bdmDOAUPJDRTMIT", - "mtmWNZ/KG6agAYqN1vW9gBQCFnt4QlBfhEfNa3I7B5j7msT6OV2ylPz96MXzQ6oXhF3lENsELvqSsCtt", - "Lh/DjM1cBmkAtlGVewDuyBB2kO5+YqsqctLmzEZHTKFA8AO/iyxfUIEun/AVcrirxDACdYgLyGKLFLUQ", - "UCxMdLcnm3iUqXg/plNn19gfQydjoZMnYr+hXjb8g8tM49/3zYVYInvSBTxTsqjvKQJMSP1PxDMD++8K", - "7U0+6Vaiqj/9YgUtzrC5jwhmayI25J48OuNizpQRuACvfaEAsxHLZK68b4dvZrvLghy9ejYlu7/8MCXP", - "Dp5P4aKf7f4z5BqtR4+T/gtCnTBXi4eihZWMXFNfaPDV84N/vHpyuvfi1fPjcOBpfem4JoeE3STbxAzR", - "6lsdgjtGqKU2F7JoXqxnu9dQpnb2oO60//DwpjW+PSSicSVGg12PK/gGc+tWPYCCFpzPZDoJj3oynez+", - "8sNkOnl28Nz8391/TqaTn3ePnxwdD9QcHJVLM7bV2GBOQPev3QvT6Rk3G38GRoOfqWZKW62CZkVXfncn", - "gIYJawfIkrcvJG4iAn7qst3IcY8c91+W4x451ZFTfQ+c6sjlffxc3nUZuc7KVPDB4L+w+BTArgrZNoxV", - "s6+lPnuc5/wtbvdgxT9KVqysq1k3s/W7aeW8yyK+RhiSlMKIPyC5eBokq+2gGr3ectD9qIOgeBbDzWzX", - "6cmHTZW7fSL+JUsAv1LZjDda2q9wtpbOWPYkGOXxyjorN+iD5QT/nPwbF5DbI9dbDw2zaP4rgX91dvR/", - "Y7+DPROS7MYoSZJxJnTMP38PvpCD/ZATMS/73CfjgaAxvJk6LM/+9pB9/S1Lt757mLCth3cf3tui7O43", - "W8ns4dcP7999+PU9+qCOtB6sL6mGR7bXkz8Zb8w8+bNVVSDO++jU1mjko617UFJv674BTm81b+uFsJy0", - "qlufvY0c1/XDehale4ZeN5HJEYd68wHIOCCzzjPsyuBbMHTFQcXCyJYuizMZQIqb+VfHif0Wg5FZlJ9F", - "629lH+WCvHy6Rx48ePCdtZ/WC4ffMPsZsIQtV9F6QjpqOO55xgL7n3MDLZguC2GdRhlNFkSVsG2s82m2", - "dclFChFcb+ynN0hnCgYRAWmDX2zAWE1Uexcgs5MPhXnbvAny9meAe/f3uwG/lpHkMCL9cHCB9+W8TYYx", - "x6+rPpHK621RywEUOmusASsQHYTmBavc8yvgDGJAW/AHkFU/nv3df1WbPOZL9p9S1L2nJ6+O96IhnMi3", - "2PAqETghwy39IQVEt9j4aedadLD7fBeUgMRMRPapplBbHtwoHu3sXF5ebnMqKPhQmIG2zEDqTlRENQO+", - "Ot6DCWG+Zr7yap+4iSHeywEHEXe5P0ahosw0kquAnWggS5Sofv0zpnWp409dU9OEz9Mn54U3Bmc+eXTv", - "vruyJyINgfz+8d27j+D//efEgy44uNRfgm9kwBPRcfw7Psg1E8DbcKDUyNJghcrOEsso/cLdIvNukKHz", - "UTZ8OWFQzgEQhPno3sJwx7TqRjEUqUVvO9Uryjkk6SpkuZYx1dw6t0G2nSAabY1BiWzOhXClAWxY1w3i", - "rhgyBV2KSIfsSsvhe8J6MM2aFx87LoaoRGhAFP8jlhPXI+N0/VlUbSEaN8DU9pjbsY3wPn7rx0PyMibF", - "FPLSIdVh2OgjRkJdlQGG1DTRISlq3MD25Hq6v5Zmql8XeBzR8g1cVpi7voMhw7TzSMV7R+2Cz64OoOIN", - "Gbu127Y332emcQqN7WjwYisiMQCgNYjKPtN153rz2AYhdy15eN/rayASvJr6osPjrQCsegGdeKcrOtrp", - "TsIcFRgJLbKVi2W376imJbNam7r5ALVk9kCmlc41dK3kUpgxrNNbzEz95zo72LubvN5+GqngR6PGaNT4", - "oEaN2CU8l/qpLEV6WMizjC3D+JVhd/JKsKucJZq1hoizc7Lgcy4wvUJBUp7CXmfcIBXPm/p8LvUMs5oW", - "c6Yr/xhZuHDZSxvHa/NhZlJZZtGInViJMErVn0vNZzYid29BhWCbJFNsd37NzhZSnkf2HjY2MGBaD12S", - "q7bqVebvur76gO3FvhLeQI+J6qGhquqxCXZpzr21I9RPJqzQlOMAQ/doHmAsTMa+ZUBELpWHYaRFx3mu", - "L0TmC0Fa1UjHQKGn4u7L/3zwfP/JT8dHvzx8+fLp0398890PXz/d/eXmPRXtabh6llXRynePnoscekc0", - "XQxWq8tsrPQ4FnAHvki6yyAVWclm5qnYndWsVdX8m5inIuv6BCL7YjhsDO27rdC+rlfUXqvNDNuLYyy4", - "vn7y+McXL34a6OXmiMxv8eW4z+1MFJ0I+xK7+DfesLV+3GE1Q8JoPvGwGVSo/Mhousa+vUaAQGMq+fH4", - "+JAscDQstgh5NwNh2cJDYH73aw2GcAuKPJPPJtAHC77WM3zOaKa6k58umH9cXLmKsSlBslXbRpz077sp", - "o6UNPmuG5hMXCV8pVpBZwZlIs1XN5ha9Bq+1tc9tsJjnzvR5l+8anwvIE5cU0Thu/EwUfK8yeDZePbmg", - "GU8RjKR7pAnjF1BVSqTOkWpJ9SPy5owq9s3DN1CGJTW8EBWpXJKzlWbK8m6QCjgv2IxfsRQJz5vLhWLJ", - "6Ztt8pIlcrm0RUb4H+wRuf+wdlrY8uib+f0ffxbHl+l3u4sfL18dPHs6n/9y9N2LmTyks+ff1gH4S+x0", - "5/tf6dYfu1v/eXfru3/f+Y/f/nxwf3rv7t23YU5udyj20Hq47Q145Rh9j7HPn2nUSFlk7dVb9oS8evmz", - "WbzNvl5DWrYEcH3hLpDf/rKdyOVO9XDcsoLR1+pku2IlQuHBalLMTgZyg1ERO1JKG98YvAIsdpnTgqLf", - "Xb1of7+s3c+6fYKMw0dGcEeSNJKkkSR9Cuh8c4z95IJFtQxdkjsYT/7S8rHnNtrnEorJMSfAdzKuvkvC", - "CX7BilVXYTuI0rJtgqKK3Ve/sUoOgGy/voy3vRIpLsaXkGsq8oaG3/duIxQG/37/p+eH9/51/M9/vPzn", - "j8f7f3/40+HLvx3+592bFwbhLNbIgHmVfXZzvTZM4PLXRgxQNwTIrST4RZldUxP/0vTsqN1eW5uZwmau", - "r2rRQ3iBv9R2dbBrGwie+IiSyNrW4sf++19jMahr7OFkW++4ApNBOP4xzahI2PGiYGohs7Qzw7H90DYy", - "WMgABiHMTb19hkNvazf2mw5WfDMmcugW9uOMpg0+pd6NsMrO3HU3bus44uZZPiLHFcxMzlgmxVwRLT8c", - "+qkxRkNwkXb44rOiiXoze0VFMyzr2A//5kVucAFxZrMHOVR3Mu12z9zo+bRzTrdfzm1gBCdsDccKLhgK", - "Xnzn/ftG0/Cqhs8SpL4HdzOW9s7XyLJvs90Pn85nt++ZI8iAHzhiDhv/yHboG9+3mU4qQL42PW8C2y/g", - "/Nc3v29ac+Pc+LrWTxQ0JrZ1462FIFPdZuif6HwZa09+/RN0nO2u1myZ6zW8OMVWm8hhxcbOS7F19fgv", - "uU9VwI8VxCKIoWAJz/kafuhaA8Ij0NYB9JrcRF0eOdLxAjLwO9wAW7RuppmlY2/vydFRz157BxtMbC04", - "9C/mpijp2mnXEi68p+kk8AyptrnRq7kxAfZz1F3Y61AdBVjkrHVz6t1l+d0KdNcK87tugW1xPrkBt0Nw", - "nhvqxxUBGKqUTDhwqYah2R7KQwfuRoJd6W7M3nxIpnX7EZODGVSgJVyTJaNY6r6o4gaFJEtZsPhlvofn", - "H111jMMuGFVdCbPwmy+sTZUf0t6H86Ovb+op5bbIR8pVDjmOrS83loG3BWMKwopC9r4dRMQvcYkxVf17", - "oS37IQj2CB4+bC1mruiiOtexn9qn0LSevjexbb1BtZO22JsMbZgOqwS48Rrk5khH40xaNGfD+/OZ4Nzt", - "Pd09+PnJ/mQ6OXryfP/g+Q+T6eTQ//Xyifv1tw41afusOrLDJQlTBgfjYzLzMaiwYubzf71kyv79W+yE", - "muy2lSQf05hvqPmVeDMfFSsvT2Iih4AbD//2IVqjwPjxC4yfhrg26PXbWkbou/COWlJXidOqv25GLWoX", - "OGo8R43n+9R4NmD541Rx2reBLMQNPV7LUoyPd3y8n/zjtbD8cT7e24h/qsyo64KdrNn8kwp1QuedMdDp", - "fQQ61dwq3l0FmXLTfWlASYIws6R5bmumrjEuvqO5fDKtT2ArnQ0cFCqLVyM1uYKhw8S57GkLUW04XoPw", - "V1kRVs8xaYKLxB9WZq5/9+uqzQ2+kI0Hip/edYdpHtqgl4Aagp4UplHmguogYdyWiqrjHS4f5tQJaQPQ", - "JajK7WDTi9dn6cDKr34+2CdfvhLm6SrwhbVhOj+zK57IeUHzBU/gw5EsNCQ6qFiQO7df0CXC4tR8VdsK", - "9bdDL1DfoBMQoJFbcvzp0zeNnPTISX8oxx8knR8lM318uw5OUR6izQ5MY5JHLxv+sszWufObJrfPQsWc", - "WK7NOpnBAiT2suO4Bo5UJ//X45qCcSz9v1FuKXp6mzAo0RPbdIDGQV2zuz+fdQ8vuul+WEaP5oYdJAKx", - "n3dagk6Oz7kuiDjnt2B4gDTPMwj9lu+SMQQ9CNr8FaFK8blAy/PLMswSWHkwjAVJP9E8BQBAG8VMGhDo", - "D5i0JijVk3kP8jiRRApNOUS4ZRbUXd93gm5r+nMQveTCJTRvmQeHhtf0ZVgoLEX+MOkV4D7+CrkVMCd1", - "VzDrmhuxhIlUJKVgNFkABA+Lb4Vz7gpu9cP2YPGqTQXcqsxzyFQnDRHRBZ/PWbFB6uyBfsf1pP4dLyK0", - "NLvjOq72FakEsD72FDbZDDxdHz1QO/PPNz/C9bMRJIHyo7qi63Bot5il4B25u3fmi7iyxCNtEo9PXQcW", - "fb+dCrFPkjcwoAWlKbCeFyMqkSi91279bOVYhm1yoMmSrhxXUbESZyvCYfHnbHWLYHAids0MWCzGKsvC", - "emRcYVYDLZ0ObYVVZZBWQim0F/svHmFIJ4yi2TKXBS1WRMms1LbcGhCNQpMzqRcEVk1FSn4yU1tHRkMX", - "Vc4SfKAyZXMmtm+iZtz/uAW47eHERo5l5Fg+G46lN1mFDpftKd91CPovXSUAHBihXgPoclA9ClAKQ1qs", - "2sT4+nHknWscEFvuT6X+NKCex+mFg5SOogcwSf9IYJePFEFoxuRZz8tWeYSOFP+D0t72n0uv7hoJM+L6", - "sxaasFnDcZZHJ+Ir8sY2wiN78yho7Ko/WcVWwZZWIHfjIrScUUO5pHAFsAQWpEEHBTkj84IK3fLswMZY", - "WQXWgReXsyJhQtN571J8Z9uWGDijBRLQ60++9giwn60QsWbI56+ePX7y8g358quvUpYXLDE8+1df3XlE", - "FGP1GaH94ZOXe0+eH6/pEJxPgINs38l0grNOppPatRqhodHd/1Q5AMcsM20Q0jEEFvWoP8TJzKrwTUwd", - "4XJPBqo8HIZrgl/w82+RR7FGItk8M3klhzTTkr9/G0p9czdpUGmOfCPWla5B38nU0sg9f8t2l+Zs72aE", - "ebfR+g733cwz7Xz+a4lPy750LVsNwOxonxntM6N9ZrTPjPaZ0T7zcWo7bkLw9/5Oo3liqHniOnzI+7dI", - "9PEwoxVitEKMVojRCjHS5c+CLvcq4TciWw3vyqHCc0MtM0rOo+Q8Ss6fiuQ8Sp4jhXtPFC6ScGIUO29S", - "7OzTxd+S0DmM9o8S52cocY4Y9jPBsDcuQLj4qk0FCJedcBQgRgFiFCBGAWIUIEbytibp1ShA3IIAEXXA", - "uWUBwtH+UYIYJYgRxX5iKPbmJIjbSBkYKcBWIc0h6Us+sSSCWH1vzCF4WzkEyyUreBJ5XfiBFCwvmDLX", - "Q6ggtDjjGkzNecESrgyo4tq360Tg5GTr+1/ROHxyso1/3fk+ivJf7JZ6cd/8H1nwP1Cukyn7oaBCPykK", - "WcQDLrAboWE/sGJjvAFWWajCZQKcQDOenhbeZ7oUbgyWniYZR3d5CpnoT1MmOKCxUvgYnFP3Kk7tY3Rj", - "gvPBZDpRrLhgxSmswOzY2ud5tjotBb2gHHF27LUe0uScztlhwRP2muvFnlwuuQY7auydQmOSm9bIgaic", - "iZQkVa+I6mHpoHFgsJAFkXgqM5xbzogU5unBgsKi4rs4GwaMmde0e6PTu4T7hppnfMk1Cvt4DFSTpVSY", - "7Ax3Ha7smX3dtFohF7e7QryX5hozRrsXiUsKFvl7SYXmenXICnv/N7VSN7LFb62r/Efke0/SsgUSZJ/n", - "zgBK+BLdCL8NpMD2CKInEENth3RlXsB+yfajNTLq351DEKI5mAodcqpsjTnlXo025xdMEFcE5rYe2I/y", - "kizLZEEEY6myMZ3hMtwCWsVVkO4mq00KUWAPg3sjSzmYkZTPZgyo+ayQS5tCEP6dyqQ0Z/mFgkg04maP", - "Li0tWUx4fe3k1RzvBfjzkt1wIr4mvhVSR93MQFRImaYcc3hqem6YCi0JTRIADseOp2XXNcRKJ9twrMG3", - "EgRmte+k+ujDKIGb6IHbDoBpvDi8Iv/kel7XMSuW615Y0MYG86Eoq1mxRNbXXbkUhPr4yI7XhZcSwTdY", - "+sl8dKeRLKRiwo8O8w26ps1BdBBf28BITXG3Y1me5e2A1f3qX37jUqD8WDveQVtfk4ESrgzxkNVAhCg9", - "LdmpubXBOB0Peg18HQilaYx/brdZD18FSxjHqpVOPPwgIPbxXya3xz7sLtfcoTV6rYagvPbNr4u9iyCj", - "CLYMVtMPJ9uw+ArzrheOqLswGkREn4gT8fXd/26whG/IUkIV+fpuXcCLBrnXQtmnk6utudxyPNOjyZzr", - "RXm2ncjljsyZAEUll9XfO/n5fGcpU1SbQWc7Iv64HVIW2C2X0bTCGE6N0gUlStNCgyexYV4NlW0/H8Md", - "RB4rjoMDuI7Xp+xtWJedc4ZLbc54/7ozNh4BbBpWEX0JGY0UGzS/KlcX0DpyZ4ZKGlhU5ZlvG5PiMj4X", - "mxUB2/VdIgpH982gmxmflwWCtONy8owKeBZnPMu4mO/RlImks/IcKGKJbUsSbNzeFikVOr5zhTOciH37", - "MBfyksiZZsILUIrQgsGYLLUdD45efPvN3XskDZa7pHr7RDzBa1aPyMnk8N6zkwn5cimFXmSrO1Pz0wP4", - "6feSFpoV7sd7/zI/UiFKmmWrhvr78N6zGmTYKQP56HF9uzEg/ZStzTciUlgN/eTV0f4kLi1jF9TkONER", - "gC8sh2dX8jnZwMOld0a9pG32wJsDiFNo3Lt7/yFJFrSgiWaFaoR0mK/huqp5IqtisxlLNL9gT6M43eay", - "twlH+JJVx2zujJyxRC6ZIn6YbQI8tJDasfksnVbtIZwlLejslvKvP3HrsGQojVWmDLd9LDffNFdESJJJ", - "MWfFJjv3TUF5PeOCa5atbvsgDG3sOoZN6wyElqnbtRt27etgP7aPc7aKbUSxJd8atpt3DokKsNdPbPUZ", - "umj8WC6p2DL3AlZkMB62ZiSPmb5kTJB78Hjuf/1NN57qMRbuc5VnFC2UsaPMF1SxDusUvDZoQAzDX/DE", - "kOzCUAmaZfJSgeltbn6k0PgLRQrQD9IiVUResAIfPTW4KuRmDCM3L5hSTEGUH06iLrlOFkQmSVkoIkW2", - "IhSVveblgcTg2CTktKeECVVWAYGUGFYHcoAFc1nZFevVGKTCRZKVKVTxLeZMoYqu0tjhYkAHO7ywuuFP", - "DxdQxqTDMn/oTzNmnM8L+RJ8JvaAp9xA69XoWOMd/pwwYW3+CLRGoJk8MrOZizrFTbZo6mTfcqV5IbcK", - "dOVo87r97Gnwig87RnH1ucsN/DrNKWI55w7NfL1kl+WU9+QyL41A6ZN/AVQ1SJwT1QyOV49OxBbSV/If", - "hkjVyLv5RrHrf9S/kJPy7t0Hielyaf8mAYmEjkWy4BcsJTuEi/YoxzIcw3Qwe09Lw8rHhw3mDYdZUzW9", - "VJ+HixQkzeMpFkwpCln0+ApVLdHmOfx9/1KfA5B7gyB0beGX5qSR53/BCuXZWft47zXB+xdsVINtciCS", - "AoJHWdpmroKrsQa7uPbUrdSuYq0NHdwrnJtHh0/aOdDuCz+kl4lagrHHAp4cRe60S1Wwm6YxMcCgAv/Z", - "ygJnVolFlZIJt+HulsoiAQMUQNN0S4qIGsHNNFCFAM2j/MaWuUTYRa8DOQ4w/Vwc4Efv8Q8uORtOp+JU", - "oo/mnK1CBGO5IW/FxMfhpVXvoYE64bJITPPtWuLRQQPZrrSm0A04fnrlTOpD/Y+g2lY4VQJStl9kWlfY", - "nYgDjfKoRg1/4reF/ZX1GkEOEzX+SeVIF7hKVN4B9iBxgEnM5+mDiDIt0WVkBD4ORmCguzdSouZz3pRo", - "opt31I4BpBBfDcYFobobOrg0pR0E8qCjpq4drq1D4AJTrsSKCd6KH3VFXqMLGvHmiDcH482IZSt8kO5F", - "9L7DzVyf42+z7fzcYr8Rl5zSAJmYf0Q9K93SPgEH6EoGGD2fb8vz2Z/xS5Zn1MUJxSKDLEuA8EUMECC9", - "A0N63Pw94tURr26GV7tAtIuh8WBpGZi1YDk6DHySDgMfqdH9YzRWj2a+0cw3mvlGM9/7MfM1qLkFUpRQ", - "+swC9hi76P3mgtPNi0mfiIQ0Cke3Khz1yC/vB7tG/PI/RrbDM3Zx1tahHcdWOdktZBT/1cEodtHt/YCX", - "HLmgvzYXZN7VnnlWcfgLn12dsR+EZ1/a0cP0Wi/9kOt0/UiI7MoDuK7W3IV8XjLgaJKo5Gs/Qagmu6KJ", - "9ntqUKC0B30d7H+A9CbRx+mXZDPP38j7a5mRQmeM6Oy2xfZAT4k6k7H2Hg9EXurhl+lUAsCYyRqfYL2L", - "guXWb/3zOGOzi+5DvVmN5aga+hRVQx8nNzRS9lG/Meo3Plv9xqbqjCPvCt3n1Uz9unwkeUFnmIbHEHvz", - "h3Uwnkwn3nW4U4FxFGx/z7yDyEvH3+vg6D2p4/zkDdPJ1/AuPLFUTJt7QHNabVk2lcOCXrCQbu6KZIFl", - "cdtn6x4jhTYO84ejbhNM3wPBp+gfjs/wjBFhKFPG/2AppLso0oANaxJi+7NgtGBKk4JZ5RcjZ2wmCxZG", - "/JIDSG3oZ7UBUAW74LJUjbuo78AtrVQRZ6x3ixzuJaRhQL4jBCF4bd8+EfQ5tzwNdM6+zMZlt+62P89f", - "mNmvtpfm/VQWauhia1NFt5zbCOfhEQ8N0aAjvZSZvHAtDbAl+G613LahFoV5NQON7UA+tHQwuWiRo+0T", - "EYXRWjOARRzC6jBnvFCOOjXE7Abtb4Wt86UtaD3s5ML7Osa+kZODDx3sNx7gtHJ6tCdqsQxkusGIi+0T", - "8VQWIScRHgMeDE0SlhtABJdrRVIGaa1sNErt2GrL2W4rK3E3FpQ6CUqI2jts4/j7iNo/PGqv79W3vk1s", - "7kS8Lp/Ng32fWMW23CaHNgUD4z5FLGCNghzsb5MfqSKQvgNPBXlnbPIBVEhu1T91qTkCfDdwh+sllpFk", - "jiTz8yOZzi+GL5cs5RgEf1uENNRlcUX8lG066MlfGMhjnfrgW4wyykLT7FieMxEz/iRSqHLJCpJDO6JN", - "Q6glat33ZUFSyZT4QhN5xlbErQf26lz/SUUyT8QRY4/IQutcPdrZCZIRKS3zjM8XmssdlbNEFzTb4UqV", - "TO3cu/+3hxHKm8lLlj5jmhVHWTnvKfo6JXxmMzelqIMAOHPpFIjN1u6Iix25hqN/ncDe1SmYRs0xexVC", - "R/asQaVCfn35dO/Bgwff/falOxItZaa2OdOzbVnMdxZ6me0Us8Q0umNVi9rSZiBlrggsF+TV8d4tZz1k", - "VzlC259dbYPE5thYfQbbjtmDPvoU+Wt3pUpEA4/+DFbiKP/WvXiurCiiQMeDcwZhtvC+CqbLwrw2aiNl", - "LPmuJpLLU0Qqpwe7Yv/BYf769f3d+6+Lb5ff/dfsD/Zj9sM/v71a7v3z8oft1de/Pzza2n39+9Pym9//", - "a0af/nH3j3/8/vDJH/e/fanE6pfLv89m//z696tnF3L9vhtI0x1CVGwomM+h95TyjKWHhTzL2DJ0bxlG", - "Sl4JdmWQWnuINi1+IUA3uzSMcpDDDzPHchdvhmUnFoymrMCi1oowI0tRmyYYihlYGsOUriL9Mcv0dpQc", - "FDxhQb67Lo+YKmkhauFmGdU2Ue+JgPXPHhEuTml6AX7YsoB/FQWjRSOrtmsD6bBdk7iCzox/zFkRjdKC", - "dNKas2L7ROy63MiQWxq++DvBrHqWSnFBGE0W2K/tkJ9RDZMOv+envkucx6oOKliRy8FqF9FllHga6Ru7", - "xFLwTZf9yneJL9sMed1lv4r0jS47P5Y3l0H7VW7eABWptQx4aZWrKgLAEXybwhkBwu8J2dMyy6b+N8Bv", - "ORNbTKSWOXe7hPncyG2ffQ8X4f3EkU7LaNBQUrR4ykCjf8YW9ILLCDB7o0GQVAEvKl7uJBiUK2J7WxY2", - "Yg94Ag2CXvFaJ2Cq2NgM8qztkt6wdsQSYGtJFlSktVXBBuoGJ8t9qw7rBiy5eZ3uMO2Oeu/xmd1zww+y", - "PkPNORNWDbfZuVCfC71+DHG0iWa56BrgS5ARgnorHiJ2TdV5BDECMWwPiETSwAuofxpujmDOs10DTqzk", - "Qn/zMBp/o0ooptCe6Ag/9M4EnVk6eDJk7Ic7VRr4ygsJCxw2Q19UOSCYJbN2DXsFzWDym1R4tfigxO3E", - "3RAeSLxMTAXn3tErQpS94biWNtcZnTHDkK/3bzkJRnVZAMdg+BSbZjnlZuAlF0biNDMtaZ5bWd6g1tMZ", - "Y+s80Qz5fMoAASs6Z6eg2F3X6ZVp+hhavvWvYAX1hh7hWbydTqRgA7BZcx3rchPHltB3AY8RzT6pTrR9", - "JcHHKmksGuGxd3gh7Xf/3nw0LBRsh7moHcpz5OT66aXdiW18VOj9UypksBGmrS+DbxzapU/EU9wIdpS2", - "hocPs2SROaaEwjNZQRentHBsv3tQ6x6FO6Q1sBWBGdCosmL903iGzep9laaaJ+u6HkGrsOdNPa7Iooa+", - "s9iihvWMnGLvS3UYIIIxQT6YMRZBndRIM6j7cFGyBktSa14B5oZFsmoPcZZrGnCcw5cHtxOBWUjLLCNc", - "kyWjQpk/uF0XEi87/yYe6Z+sv5p5fUZY2SAL1b7vEpey3JDt4ydPZRGBDatsqTLH+yEQ4fjKUyCVZ6sg", - "Ihz0AiiVcUUUqxUPChZqWE0P1scWRw3fcgzVxjff4ASa4BdbvqUSP7GV38Pb6aT6NQ7rjsPQjRpLdgGA", - "2kt14wENlhKQ83hgwxh98Rfz0bymXuk114tQQbemuFonFp+GfFbAbZuXMCtYPdKoKk01uXf3LqikAxVh", - "qLfzOzXIKpYOqpKweYjtq6vT9GpTd8lj3yV+GppeWUtc55GUwnJaVtfT6hGclA4scu2GPtukqiuIjn3L", - "4aXPHPYMJX4v7vxWD6wx7YjeoDBpLcam7Z7ZqaDqYbWiG4oxua4qiGU1+6UOro7kTP/Ml1yvr9Z7MCPK", - "tf4PA3LOpGyWD1lGSsVqN8pArT5rMeSGJFwtaKm0gYoFVbuocwClIc0u6UqRM0bMHOE9m7ViRcF4oXil", - "SrY706x4yRSLHNm/ZAnLxGKUIKoSWmq5NNwpmJNoJsVc8bQleiDs2ldLVMIELbgkl66el69EbcuxgIoJ", - "K/CisrOqYGfoqTePLlhhxBK7JK80Ratm93ICfwk/lC1UeCKOF1SHAy7oBSNcf6FIIbMMXGW885OzoqMc", - "RMklXVnfcHOOqMEvzGlWESt4FHZzOAOapOB3WfA5N4TH7ra+1e0T8Yxi+EV1ZKpMFtURwIkaJtisG32k", - "GTmxWPJkMiUnhiy8tDvZ9T8binJiKEjzk7PgUDxbODS6bHDTrsKPz157N0hgL7jmNLML9CUP68WA2vB3", - "WHBZ+Lw9Xbl29wPtDU6Q235VNTuLEOHzdlMh9u3El/E0VPPregZevwezNrcDuFq8VTfZh83RE+okwKur", - "uGAvLlhB52xXB495DXYCMohQiJ3NW3Pjgb0UNg3+QTgGNEZEALYrcyRakrt1hTUO4Ad140SRUFOl4iT+", - "mPoYJu6q8gQx+UKz4oL6ymYxnA4hVeZcVJfLYIswr4lzAq0Yset6Z01QW/bfQHWGOo9+GpZ0GHPMAf79", - "6MVzktMC8ms1uIlwUHK84ArdZUHuzpSs7OwgECULlpybUw2xMBYkRlOYtpzJrMwArh1mBeUBF2xrXqAd", - "zHaq/E9l+AamhBsSYxNtc0FWsiyIvBQ+SfKP1BeIC7M7V9rrP8kJvmK8WXUyeUR+PbHVyU4mv5G3IQD8", - "l/rAQWN9Ckmr8xpautCCQh84BirfWB0V83UL/ZJjaiJk/r3fMjS/JbXQ5xqMeIvKHRWTQU7E0y7ljtXh", - "RJU8o85m1NmMOpuPVWfTxuZ9LjY3o7KpH/yoTlmrTgltwR9ao9IElLjzXQgnKBU0WIF1tsF0Jeiy20i3", - "j5+9tnFPLpdcg2nTkPsMiP1mSsrppKo/21GHFz53zKl5nz3yGL52dC0F12ud3prd3tUY2a2snQ50w2uv", - "aM2T7T6DdV37rnt9+eTua4tbQJ2pMhQo84Il4N0S9UfzXeoFhUUld0KZGmHD2pp6axsP1+ct4wYyFGD3", - "X8EPB0cvIOfGfgARLvigI85uN/BQt3F2RgyiVudYNDfT9Ire2KnHl5fBuTpi26otDiZe9Zs6cAP0+Ifa", - "tM6ePLtJt8mPrCy4cvrLJc0VOTh6ARlTuJYCREWDkF0sKMSOGMEWVU6urY8B8zovt6jGnf256RKNDOvy", - "uFSlF6KiTS8h8Oc8dRBSX9mAN4FRO51Zj97zYxgB/10APwqrXSAzADYOwt34mviBnHD45fePTk7Sf4f/", - "bJu/7nz/rzvfR359Fv31dfTXffj1OPLlxw3GPrrz/Z3vY5Gp17qPJ4Z/i9TqR+hKmyF3VQhyz7HCmJsj", - "jyDk4U1KV2+m5M0lY+fmv5Du6c3UILQ3K0aLNyHricTm9ZMnP02mk2cvnh//OJlO/vVk92VUD9tY8y/3", - "bwQ7jI/7I6Zqa4lLHGUs5QWDGN2jBZ9px/RHFFIFS1oZRokynVBXQ+1PYHUwo9YkJ8GuIDtswS46AFYx", - "HeiQQLrppGtg56EFxVDMdvSCq+TZ6zxNzcJ5snDaAaYhmNaVyJ46OROuRshLzHeADRNf1s/FGZeg8a2n", - "RPDad12UInGhVmD24KLUjKQlBD0v5CVZcKVlYcADbSIE1CVcEfPzjacvaJikYtH1mhVL0BFf2hiPTiuU", - "BHUVRJxNoUXBU2fmDJR+X6gqzZ4LPDkRW2Stmcu1CgxcQTM39XbUeFUwTbnoSnTRsUsUlC16sigMwNrG", - "/ciiMqzVquHu2jQVrW2tGTGyw84effNGjuBt5NUfUZGeyavdPI8ES+A3QvPclVkpfYUVpsC8/SJnAhw6", - "nGZGgVYaapXluSu9UjkQiJVe2PBbdmW4D5pZ248ymy2dc6iiM2aVs2a+E3HBCj5bdUzZNpuNZTI/eJnM", - "j9NCw+OmsUFa9/ccd+3o+n5sHxlXeqOkFM9occ405HH92faNcy/LqiGxs6DXDMTvQYkkyGJq37ezF7aL", - "2I5GhJs0Imxa4303zztLvB/VyrsDfpdCIFcXvcduPTnN8y8Uasu5IpZkhOyewp/iPiKffLnUa5T0di83", - "KNjd6WdSkeebTsE8JvP9zPHFrTzZeI7WdeC7Zy3vu3m+by83zmm6hmQ3z4lpGlE1IKc6MBFTxd3GaV1F", - "zVTA7AKhA3A5Y+CkCpmsImixK9+/GeRgP5anilu3VedMPM/kGbwzlIYcsMAqbA3C91TIF5a8MSAB+HXB", - "TjD08WBzaBSO0GD9SninkPeSUOXYJz0xD8WWA8hWpMScBVWegDCzihXkKTj7ScgJZ0TUTFKQFn0uYbKk", - "XGgmqEggpRdPFggaGT9n2crmk2IXmEIO3VqVXDLD1dNVNAvLkSw0VG2KX5eEgk5efRPe2u7R3mQ62X9y", - "tBel00e64DnbPTz4ia06NDFmAmxGdg8PIKEbNy23T8QrG/dKS70w/HXiHfl1rVP7sSuWFEzjvJGMWc1Q", - "9LB1FIxwGzFZdzdABXZFBrojHog14bKP0zDIof/JBjx8QnN6xjOOO/+1hSBxSeC8QLOkxKBiTa8gwVpA", - "nW1+c6Aj4GYEh5WzU9/tVNMrx6Q8muy5n83YFUz51ubXt9OO5bjJgioHcK3mCViH/eYybJdT36NayoFN", - "zb4XfPJu2/Cp+tK5JBtgpEgis4wlWhFZaqWpADVUwS6YKC3w2R5uJYFOyuUpWjK9kGn7KHHoUzdXcJr4", - "hRxWX9yB4hf/IcaT2zP1vq0usf5KlpBU0Q7utxjsAlLTIwA/g0UbIJqYBqfSPLv7kyn+i+b81Fb6sGvG", - "Aeq4GZ0WMn7BMPGKzRdP1TlL3WucqPNT0+L0q+B/9CyZtEd2ogsQ0BX8AA8xAcfDA/NOaJLo03v3Hzz8", - "+pu/fftdazU1UaH70b0d9UCjHmjUA318eqAKlTTP/Gf7ZQoqchdPZ8fkUBwkLRMvyW53J+oL00XVMFW8", - "pKJp4VgV53OsFgbfVslivwUJDfQMDxpwtzZL4ijKfh6qrxat6uF8KbayKa7XgshgEd3T+Cp0BMjiqFNb", - "o1NrX1+Aixp4oldiGNVvI87aDGc1RNd10nLNbzCnSl3KIp28H6SxqVYPxtlbsORclvqIKcWliGcrtHts", - "tN22z88vjOky71E8rNcf2mli6sNAcFe10UDuSEp1elX7X0wSehcVpNc5rNVAVmqHUQFZJ//Na+t5Tj7K", - "C2lwx2A2qtiK4ygyrxk4rhzommZDpWn1Mq+lM42cUc/Drb+mx9GiDF0vijy21aQbirpP7oqausNrnx/6", - "Xb8okDU40Gz5ofHTiBRGpHBdpIB1PSyd7gRkf562vIeydP1ENOp0pDJR27gMKNZBc77jOts0/ju2s9qx", - "a4qnQLAOr7H7qCe2dlk2cRr+RyP4Fye9kZX+N1uHwP58ir9u1ctaxgoqdSsl91xuHH2rK8RZbtaPlA8u", - "f3UbUNOxU57GdWbrtFG3uaZA/mxrrjKZ0CxKj41Yu30iCNn56it0sDx4cvyUZFTMSzpnRFMf+4qDtM7b", - "8JQotUDyjVvdI24jcvboyf6qyGJCNCRaevXy59tcGi7gtCyy65OVCqZVHSFG0X4Z22x1i+3ycObnVy9/", - "NlisYGivrT8gLa1BGPL9QgosI3qAlv9E6AXjhbNHQ04WyJSyPUzT0jqBaQsD13QooUqmulwPybj9bsJz", - "HMaZ98aMGy6kEmqbNKIjV35aJi46fMir1vTK/P8t01rV8KO+StLTe3fxf3XGBj6dnKR/flvjXY7trGuP", - "PekqBYC7fc3OFlKeP7mIpheyFPkSG0FSOt3pD92RaO8CSudb0qOdkrCmkeBCP7gfzaOVRiXyatw06sYj", - "XQmh5mHI7rI6vHf9HTxXP673NoXuXFdd8zlGeMCTsuxY+9FM7PGtvfzQz6X3/gvbMOo4dfAplqPaqN7m", - "p7ebJVPKht20vhmJQOU0YZ/DViNKRre3qQXO6DOoio2ti/jf9ek6Ibt43JZLXWpMrQt+VmKp3hXhWllD", - "oJ3QZlFiV1z5CpKJFAnLIbQPArO4mIcdIFW/U90bCQTrKFKRkktZnBOqCBRKKHiyAGnRydVu2edsBd5f", - "jk17Tpds6pXnU8J00pzP5mQDY85KlvBbwcApSMztVgFfWXcRn3DNjAiBmAf75KzU5JIKjYGHhQuEc8uy", - "OVcXEe26LPzybO3mpVQa9AgJVUxNsYSzuxRz/xc0YzgVrTgeQ5j/7//63//v//xPcnq67+/59PQRqbar", - "yJIKOofZIZiM2/oIZ8xs1oAHhW5TXEDdKSk85DYIcKE0o2m/p9fXHQJS4Klhmz2INqtu1Yh6jpl7jur2", - "9e5i6ITkC+0BaQktNovyTOUS/WnQlSbO0YJS6e/PXmSJVj/98m3buebrrbv3P3PnGuvMieG8T8SgjCKY", - "uSyt2HUYwgXmNR5zLEoTD/XuI/h/mxSYDtZ6pGmhh64W699ee733rrfez8ZxKXyvbV+hBj5MA4Ng/+E2", - "X37LAPquvkrRWT9IqdCOTHe49GnzCHu2YmRljnW7VrnLZ10jYkDbvYTcKpXu0WZ6tsXTrXv3H6w1gHv7", - "9WGI9poebd5O3Xv8Xdi54+4r/ieukFj/9Nua737waNGEtVD52TmadDmXAKE97/IQwcN8lStW3CyXygoD", - "08DorD5WBqmfpbkthqXNiYzU/Pao+cdCBUda8rnSkgYe7kG1PU5z4VdArYKwK5pos8Tgg1Aa6la09WOQ", - "PuNpITtSOblc1rVXGPcKf2dbGq7lWPavJMBet7WOjM+FS2s/0PfWd4l4BLpvJGnVInY5WyGtM6TUwfzu", - "G8wcdIr4/TK4tHO22sJcPDnlhSWYLCVnKwRnm4Z+zyf1WcoUK3ycrYAmb/dwHLUV+EyuXRlnzFUKcw0Z", - "/4OlLmW6ze/izEsB7L7b3Xat+XFt3hgQXCfhe4AefFOF1Rwgxc5CXhI500wETAgwKhxc4UplBnOJFcOk", - "bEuwjD/BY1CPyMnk8N6zkwn5EjKmZas7U/PTA/jp95IWmhXux3v/Mj9SgRVaGgrQw3vPOhI3rju4nhz1", - "n76CJFkNf397tsdeu+j2q6P9SYywuEnAThaF+RPx2pYNKtgFxwgTcz6M0DQlyzLTvBrFprwPk6K5Ra0z", - "HBwv6vRt7ft7L8aBMQRsDAFbHwI2eu3fXKb+jIrhx3iYUfGSzZjNDxpPz59REccmKMVirf9NU+0fNjrW", - "0O2fEwYJCjxHj/bvZs3/t/FqAnKrwFxtcR6tTtF7YPWwY6TrBHSFvH1nZJcVkYPorib2brnP/yVjpQJB", - "JwiXSmoOP45qRsoR1LnadXLabprGcP5uXSqjabolxZQUDDI9Yvy+SAqmmZfYsD66a2u1ZJDusXXPH41g", - "t1Y//oEEvfXril/bIS00B31JLnPID5G6+6jOPFKIc60bHQ7y/vzK44TUgdqxdf0ZKHeaszoIu/ZE+pjr", - "DEuLVBvvpPm1kT+W4kFdq+0oJnTBisqhvKtapDkk29Adzy4Cl03OaytSqSAC3apywqqQXUv7xa6h7cQW", - "Q6JYk+XC96nBRuiTDy8lggXH1BOj3DHKHaPcMUju+L2kYOeL00n3tUE0yC4Wk4bSI0RxMc8CKoONVA1o", - "7sVrAP/DzR7z73WTx5DBU1lY3JxLLtBPji8x4sYv2qAEc57ZBQTmtFABelV9vd401QWd/6hWGAs4sEWy", - "VPxsw7KJTZLMNVtCt6GyCRADV5ULox3iS37pZ62WTIuCgp4qZGcHRCC8VxVV14bCU+hII8iXLOOCdafh", - "N1+bII559m2tWrR1oqZYyQK4T5EaUUFzUcqyDuy/1ln/mgNfAGoVC161uF9rUT3Oe2+nXYPeXzvog45B", - "73YP+qBzHb9dFzqP7UEfsTlaabrv1DWNgOgoOFPL9/0eIp/fA0RaHV7jPYcoaZD4jEGBA4Vo53V8JtNV", - "RBaOy3XH/sVVfssftRi37i6HMOhjCpaRqfpQTJXmy42StoU44Rj7dtRYhY9uTz4N0TbZdfGCDkHIwqLg", - "KaFEsEvChC5WmAfgjPlwMBv64NBZrZSqXUg8fUwdF2JyJkQ/g5Ce56IiaK8qXo5awAgajKA+qJDC0hqn", - "otnyoIszPNiPKpIJ0N0gE161mnqyFk+fP/UQpU53B3ui7eMxZxfhGorgTjcrhdwB7bXStS3eugWZfv5p", - "LzQMgs8mHzWQOnfEZ47ORzeDvj2tQcMACgx92HqdTLleW1jjCv2aB8HQ2mxyTVQ95pUbmZqRqXlfTE3/", - "Aw5dI7vcHFOmKc+UDapkaZX13rlvO8e5ClPV37P5boBOPSuVhoGHOO2+thXsaJaRx3YEy7cY2HRUVZFl", - "qTQBL8/tk2pLZMmoLTYJJbq/UORxzQwc9AOIOpOQ9d2lLRe+TF1XKTrvBg9zstQOX1X3HugGge3jUNNx", - "xAQy/S6ocjUZYyyews1ZBROi+O31QPGYpi8x7caTopBFd9R+UFnC1o+UBUKpTcyVMKViZSWUXDKsoAcM", - "KAdrS8I46lahaARJMm72zcwSyJdse749JUuaGarLUj+gWglNr6aEiwua8ep3G5BOZgU1LwFq0KYsYbk5", - "A9+qkKXmYn5nm/xCC059fDHs+8mVZgJSsRCVs4TPeAJrb7qONEmXeSwDYgzYVZ5RgbAWjg/cuExcwV5f", - "nhTrfNS5k+PgaM9kukKIhuP7+9GL50HhhxYGZn5310N1jSPqp3DVETW26veF5uQlhYoh1n1iO7Rmx070", - "1csDUjjPJQtKTsZAuPOzDTzQshCP7IE+gtQvO1UEwBYkTbkXcn5lwfszPbffy4/Hx4fOwQf8RedMGEpQ", - "eW/Lgs+5cA8LKfRgkHh4924938m9b5BoIxH8+rvvApIIjWMUUGfR86ZELWShW1EqqlwuoULMrHWl9eN9", - "TFNiUUt/ZjnnckvPZKkfnWVUnLddbw3EJFJoyoUiFKAhBgPdy6mP3n+r8dx0eFRT9+oDcF3HOu8tqIjV", - "qcXfG+oAs2wp2EBnvsg068qMYzRNrONv0XU7mvBYpqso5w9fEScBsxbSpQSGiKT3QVJ3PXy0hnzWFnDG", - "ZrKwGfX8Wuq+1vUewFSzq2su7clVTkXKuii8YfAMQoi6jlcZsiJLPW4rdSomEVobctqOELXnbPe0FlKl", - "mGU8GcIMOFqUyDJLiY098Tm9qqJSiR2yzUnWDkLTYs50JZyciJFMj2R6JNMjmX5/ZLrDarlnsyLdFJnG", - "aa5Bpm3HJpl+knK9JrqUpVzb6nYRUoxpZ6voxfpAj6lOFk7CQ+f45ZKKFKrXkyUVHBxroVpZKYT5bzOI", - "zryyc7ay4XBGBnyzky+oYmrnT/jvT2z19o2R2yK/74AaYOdP8x9ody1HF3NIL5weBivuXB3gIPeCN+c1", - "/7eiGnod1OmvC/nmGRs6CmFjoDNn6TaO0whrMEQ1y+Sl1+ch9VeAvem5K6xPqCYpnwEmxgL7ajvCHdSu", - "ft0DqZ9hvGKjV/eibJ+zwkrxUkSdf1Ju/rnkgmoMOV3SPHcnn6anHNKTx8/crKehooZs5mC2OwUA2qDr", - "IbQ3B7SUF2yjiV9CFzu37b/R9DiAW4HSBdPJYrMhjrCTG6MUrm7nKQP8MGyUV74bYJUqb4XLmCFz8+Mw", - "zNd1P+tQX8/xbtrV3+v15rxe39pVbNq5eQNrH2WD62s9S2hAKubSI44ahYBWEeYZVG3UT4RuNUOQb31d", - "FS/hUGwDFbXmWbtvJ2m1N2y/1MW60YB5K9kT4haGvkwKm5sYxvwKY36FMb/CmF9hzK8wxjmNcU5jnNN7", - "za8A6og4esBvXZhhYxUFyAuVAaGtkxhzPYy5HsZcDxvkevDPd50wGS+CB0EmiS5pBkptyPJgLy/sPCWX", - "6FrNMAfqnGlV/bYiOV1hJvzt0Y12yDquI164FXn36hPx2jwLQ5Sm9U+YxVYKXADJyyJZ2BKRMW6/i6x9", - "5tz+yGjeJqOZcgXlvTegMvu+S5y4+CEJzfOMo3ed7go5CEabTmaM6rJgnXWf7fcvoOAI+ZLPnDn4zk0l", - "5/hsOXEukqy0WsrNuQmI73AjtK8dgeyMKSQ2NAEfTK7InHLBUnLBaYtYWS16PCkLJH2pDte+BOd8i5Vc", - "aiP5cBeSUGFkct8ba7QuqMG13iHg0Yk4Efe2ycGMUPIUoQrQsVIy4WBx98rA5lQwHlfBDE5FZwcyI98j", - "B9othQojtvu5pxh65XLsNtK2uMV8af9QMEpiHbSSQirluqg7Zqb74UzkJ7YKZ8IMAxRd2OF35V4jpIPR", - "5EsktkQWhAv8+064Jlrt6kTcb5+YkHqjU/OL86cGftJm9NeMKLoiJ5OuNhNSsDkt0sxAl5yBqo4S4NMJ", - "14pls/oMMGcis0z+XmLupSU9Z4ooJhS6BMN0OV2hV7CZ3xBiGNBz8hSyMnAxP5lskwNBcoN2OTiVcBWY", - "S1NWgC/xrJBLeAdfKDOU0JXNkYsLaXpmXLAtI5bdGtoaBe+bE7wNOGwed/dK0Tl7TBVLAXi75F6AtfVM", - "o6V85pkqVlwAxCsyKxhr5DenS0NNJ48m92ytRaiufMyKJTjynNKiYLQIQgxnGdXRFOheQIXVTyc6LDc5", - "7CyqCpUd0SlVicqIOEMM3nBHUYoUFPTp1HrpNXsGJ2T+6cpLtxuCqoErqHa83So6iasdZV6Xxqsl2OJz", - "GCLHHgQsR/0E3ZdKmoXabU8E7M4A7NTdoyU1bYGVVY2HA2QwQwdIBsN2w2TAqw6f2+6kY14HvrVitVy5", - "9QATXSrWdp1x61h3I4d0zoW56W5vWt/E18JsJ7KIR2YDvwZBUq7en6uxQdF7eGMdZFTtSOcdUrj5QrhI", - "2VUzFK/twmjaHvE/Okay7pBElMsz5DxxXzkr/Gaq8TucJKWm2R7i4WjGHvO9OUNt4K9jAzfdDKtZ7NEE", - "e3MnvhYqFlSxLn/DGuCDAssFC3Z48PXKuCAbtsXb3Ok83q9sajkyrJvQIY565Usc3g3qSsHD3Cp/7Y4E", - "u7S7OhH77hswpnh5Fc3AM/XBa2fMcuZKV8cyxBDsV99TOr8j+SV4MmerHonWr+RWGNU4/wcOCFAlcx2Q", - "gD4SglljZEaz4oJmQTxDLXIB+qJAVFChuHMXrGZs8WF4Y7YjXy5ZauSebNU/RfMe/7Whig9qHeEUa+l8", - "cCCOhsMZD8IEG/oy4XFsrEsGdacVk1zFVDxYI4LbiNH3qFEuheZZsJbDW13LqIwdlbEfQBk7hOB9NspO", - "zZYuy4zqKSK2OVvqtJZN1jQq3yjIIuC0dQ6EkJ+UgjCaLMg5W00JKmfB1y3LIEZCTYnzvk2dY31gu2sX", - "+F/Hl9cIKUEjcFEmTo03y8y9CBcKb+4IhGFZLB1FPDRy8+7hgQ2jcBkg0Duu6k+TRBawF9tvJrNMXmJU", - "RsbUoxOxVYUMODHBLAsp7BtY75sqegeKiWu0gPIL3A8M4M7PDZh7vkmtGwpYrM6BZiUcy7ChZrxQLS1u", - "a+jriEBdsHZtTu6mM5mPWsfb0zr+JfVP+FBqWih8NU2Uvo6ZPeqIsjxq8ObaJr4V5bJKSAWhev7PhIqE", - "Zcys3mPkYP7qxiKBVwNi4WyCHqvcrK7TBVNZ+0IQULV9Ig58MOUFt2q0wAfJWmWsy2ngQV5zFaHCpjm5", - "9F6smCt4eEBhe8dPzEG+nTa3/evLp3sPHjz47rcvF1rn6tHOjpYyU9uc6dm2LOY7C73MdopZYhrdsc7U", - "ELztIJHgORMuyKvjvRvlyH+L3h3sZPD9OUHRS4TTMANNRcJrgXGB+OgFTXalXb6gVZINGsZ6/JiulTeK", - "6RxCtp/LBuCf2pan0DIKz8f06jFb0AsejRCgV+TMfoUKy1AX1szmVOtgX4MQ65WBagw3pFdgOXXqX6ss", - "tEaQgrAr+wGEQ/+pthHTV+HThObwd8f6K3tFNOLCvp8iCDz3NoBIBNJZcBqD7R/+CCP8efMMD2b4cHE1", - "5gjD8MxCznjGwuNNmWbFkgvmTSLBcK3B7GE3xpuGmKT4QnnDiRuqy1TiT8O7rx+AdXOjYNW9esc+exE2", - "tSZUYC/9XdW96jubVXV8N3CCgPZ967IVfuOraX2MJ8I65qywdsJn4IQa1UwHgQgaOrRfx4XMSsBx84Km", - "JWQ5iz6Nar7XXC/25HLJ9ZJZybPJbVRT2WrnOYPU8b5T+6lYLfru0inBh53283LJCp50plWpzCIZX3Lt", - "kYxIDRZcSoWoEG2g4T04Yd1aR9/6RAe3t0I8n+YaM0a7F4lLChdpgWEgtmlAUcxPB2OceAVF5okAZHFF", - "EHq2zigEsxTEAxHIbAeCvMEWb2wT2x9RiDOcVMUruF5wQagLLPfYyqZeYIURVbQFYjeDn/NNNbxpgR6O", - "lSeMqlfKmBfyUtUOE07A/JsVqksNyQoVfVEnYtddlRSOPvkTr+nyuZXjTf/Bhi64I3NdFhJd/H+YS5EV", - "sTzAVRqM1m6C0lhuFyfiBdSFeATy+RTOGy2rsNsQc+AvEWwRT24BkOlON8aNv/r5YP8FhN0WgmbWo4+K", - "lYXjTzyxc1s77veJXr2ZlIoVoVrAlsJfIx02WNPpzR4UsfHXZqlOT2DXdbU1l1stQvFK0FIvZMH/MIgF", - "cqWE5uNheOmVYFc5pIxuDtGRmtpmLVpQZc1iTHhf0jOW0FIxwjXJaHIOqSh5SswyzTYTFIGSgsGuaVZF", - "mTcTO8X0At1L7VYitrR/u8R2Jvs2whgnIF++fLpH/vbt3b/dMRjm3VMgfSb5pYYe600cWOApJY1Isqt1", - "wc9KDWBgfviFZqXBbO10A7/+OUkwQqj6dgoitHnWmPpz8mjyi/+I8jUKmG2F7Zi7asxd9TnkrqqTDsit", - "rrZR/2bRYNhkiy9zWQDDnVND9CZzrhfl2XYilzsyZ2JpuEQuq7938vP5Dg4Lq30luD50LpkN6lixk22b", - "9I0y+jiaA4yAjd2URws4MDPKYP7LbifKebkDWivaVec1WLB7j8c4ypA3IkN+YGj8pU5H2ytp0ktllVGo", - "FTfoh6UxSzxXqoy9c0fQbyw9S8B3VINH42STbt0NTRZcGIbJkpbIhmD3dURuE4yfWh/PU7SPrC1BPeMs", - "S7scJfXCG2ZNswblSFMp1E5eyB1Du6HM4o6W50zsBLFZA5bg+aHYIoDMbnoWRhKYyVKk3lX2bEUGHUjT", - "YRZOx95WtdJ+4D0w0NYHvNCAJDTHoB0qVqRiExFYFSkYFv62F2DDQVD3iy0QD7MLVnC9IieTpOBGqMlO", - "JminyQsog1OLJgFl+RkD84gZJVILIQ6ZzyxUcmE5C7gO4N6c0AQDTgmfEXpBOdhZt4fcv39lkSyWXo9S", - "MMMLuNgb/6DXDz56UH1wD6oeHAOfXJUve6+oM3PQXwcowgWKjICcbCalIXAQc1eqEuQkCyPwQw0G6+P0", - "AdyUBuPFlozeR/IGTHM7jhgQr3Gl6+ghSgsdDhu+ggYuPXIDdKSwcDiy/2w+R0+KLu8J8LDw5x7i4I2o", - "3FFwc73UzjW0oHrmdBPBzdAWEbwVYueYVjfAZDq5pIUwhxczf/0ieYo2R7ab9CVcto1Me2wYbHUhLw0d", - "X1CRZmiAvZDgjAG1mH1IR9szWm6QOidY6c9c1FfbIVIl3oudnjPn9Rmu6e10AoVvhLaIaHDBINenPfOP", - "8pIsy2ThrSkQ4VLNapPw4gl9j5V1yL27d/+7rZdEs8zia3QnxIZ3WqAfLHzqDjMK0vEbjmdX+ZhvGX0A", - "x5seftMHIi91rDwIqqq1hCkJFQ6l3OT1XfuBRqDq7XQiL1hR8DSW9uuQFVVr4ht6yozTRN1KrEcrtnjj", - "/b+CbB3mkuoAPsis2ToIA80v7NKiMcbNKqeMqq5wK/wG+zOH5aUGK0OtpZr2Vv0kg4CptoE2Pay/W9ew", - "E33QSm9fXR2vpwYALsRucPu2QPP6WAXA0vyrK1NltbGDfTOKg8wPXdncrnkoLmlR23WXv4ZyXOfq+zLS", - "m29QDngQRdnH1rvuCeRMpDDQoN6H2LqO21r52OE0B2dk713gukzlQ9a34f3GOYO/9B278IOP+Z49Ilt3", - "1/WJ1110rfVabpCHhLtx4W0U3q2PX4t6K0HHgcYwBf2A84m9oXWnVOtzw6ck2JV2hEv3RJFSHcRtVsNX", - "WXnsDCmhc8pr/JDznp82+lb+8Fu+s5CXNxwFeiNg4N74bYLBIMw4gsKnDwqvuUjlZTwzxu58XrA5qnEu", - "oR1R/I+awfDZwfNXx08m08mPL169nEwn+7v/mkwnz148P/6xvajp5GrLdNy6oIWgS3PRv06ecVFCgMKP", - "sizMCHRlRpBCLya/+QWy9DHNqEjYj1xpWXQkj7u0bckZNiYLbB3x6i8L01R0DvdDQYUmrlk40CChCLo/", - "LguxX01yxOaYgqYtArmFX2934EWrMTgR43kUKeQlioXYSxkeBBPNFKjiLBWdowNuNTYK5z7YwgaZ8MLm", - "f6UiJT76ovrIROrHAcWphRXrh6WWNMsgSwJFSA5ACYZ0sSFuVCiOzUQ6XAStwwZCzNqSL80zn7aAov1e", - "QMWdlAXXqyMzNwLTXibLdE/Kc852S72IGL9MA7J7eEAu2ZkRuUkCrWGDpgH+04XKPZqcniqmVC1gnOb8", - "JwbAAqMdykLT7FieM9E3ZyKFKpesIDm0J2DV3bZRbTDVY0aLMMHEQuvcz7J2fLOnoWO+BQe4mYzF3jPx", - "jGl0f6AkgaEFhcBfgFOCDkJi7vKg2XDkqqNZCBQmU2QlS4M8uZgzpQkok9WU/F6yYoXj4JhTAD6st+K1", - "/wBzGU+Y9f6097Gb02TByP3tu5PppCwyu6dHOzuXl5fbFL5CSJvtqnZ+Pth78vzoydb97bvbC73MABxZ", - "sVQvZke4BTuGerRTuT1tw9Z3oOGWnG3Z3QauHtWO/QVMphPrcTx5NLm3fXf7LnDqORM055NHkwfwE0jY", - "C4DXHZrznYt7O2j3N7/MWYTG/syhZn1GaJpu2YTmvsDaQWpb7OIgZviCwiZUxNfbxsY786Ub0rABLusU", - "kGbIn/eIvPneRovtY/v/0EXJ3gABzjOwas9opph9PXC11eOpd3VwSWu+eLZ7u8y+0is4Z0PEIy7fT3lm", - "zv5sReDwtnlauYdMOpZTX0JHzP4n5wzfomEbntw5W609OnT0WHt2u5AYGFCHdW+3caOu5L8LnbO+lCtI", - "CnvLUfE3cTwitf9yEQWBn1Pnif1icUF4cGszYUT8ZqMxKAHn6DaUMpa/cL+2MHvFk/g377PFzvkF8wHZ", - "1es3vMSb7/Hn/8CI7DeP3CA+A4NNIpGtXIYIO3ytd1rQmY50ht+jPWiRLPgFSyOd3CfXr+MKfNWACNz2", - "+qOZm3YFHN4ZfnwNonVvLChnsOGC6/WVBqw4NlhFNXZsIkIuxTYkttu8C4gxA7rBUb8oUlY8XsF/uJhv", - "S/PHu/V+jH4LjqLBCd6/exd9sSDnJTzGPM9syMrOf1nLR3X0a0GkndIROKv+iBpVJgljKcNydg9712Rd", - "zP99s7U9pqm1trXifeLLsyEBCVa2cykJrGAOqcSDKHhX0F3JJYO0zB63g8kQniXaIA37yJnQNs8BmCKn", - "ZEkzWwjWDahWQtOrKbHelv536zNBZgVdQhyiLEjKEpYDknGtCllqLuZ37HHeu/Hj7IvBGnDftxlBBTt+", - "cOM7fiqLM56mTGwGP6VIWaG0lGkNXs5Ks+RZqbA0sT9MwrGK/MN79298B4cFS6RASvsUXJgHbAViNQuy", - "lAXEf2BvZWkjF7VNLRhNWYGudoqwC5qVzrMUGFrrzYRZI1zFYzgm2PPXt/DsIduioNkRTAPe3pvdHxPg", - "pQdxuFSQ0sfiVaeBb936BbHUwDA4BM3KbGbzGgSnZLd68wBq5bZXwvswbrZTrgKmpYQqVA01aQPZUaLZ", - "MpcFRCNdsCKTFCK0qxxhSwr5SGmQ9h+waMbPWQbaF5pl7AKz9GOySoNBjRhGV9vomeoLY90w/uoM/2wf", - "0m7t3hFxe7EQtS4YlOWlUs+BaToHNeJhIdMy0WSPaprJOagOc6l0Tz19wS7tQG3JFhsBvZ2g2ogp/Vim", - "q5ul5c5uWddNWRfGBhtx72an3ohrQFEETsz7SZoGQGKsZyKxxTZUmemRyxi5jJHLGLmMkcsYuYxPkstw", - "TILTWvVyGm+nDZX6zp/w34P0LbIfGYsm2pczbRXidhZytiI8tSlcEkNl7O9cec05146YnTFASz4eqM7B", - "oPrbcTAN5TwogiAU2+uB7IonTUYkVAu9X1e+tiblYdQw6kpSuboiQMGZSKtsAxbip4CvzRNAFKecibJU", - "bFZm22TkWkauZeRaJg/xod3oDp5L/VSWYuh91dOGpDyFW5txEENc/uiC2Rwv9SrMjUshmM3Q9L90dFxC", - "dGAmlU20IgUj7IorrUa2bWTbRrbtU2Xb9kNuao12KOrz8APTNV7MnOg5W21b5yYonpmXZxlXC5b6RG/A", - "YmAeZcJnBLLi11Ko1lmzH5i+Wb7snQ3Y/+MdGLWuLHLRX7v8QuzRNhLqO+5XKM2or/vtT10406/SVMf9", - "R36Gca/jPoI938l75NZNgaPlb+RuR+525G5H7nbkbkfu9rPnbivmdJ3hMxYLb5ON1DSNLdYUG33yWsNb", - "Mte+ZHlGE4aHNMxqO3J8I8c3cnwjxzdyfCPHN3J8I8e3GcdX49mua4PesYELkH476hK3iw0qe7NVsbX5", - "Q9vy8zIrjzzayKONPNrIo4082sijjTzayKNtxqN55qnGOl2bWbPW5W5m7RAbDGDWbMuRWRuZtZFZG5m1", - "kVkbmbWRWRuZtb8ys+aZp800anm+Lk1SnnflRzJ9W8zXe0qFcavsU56PqShGbmrkpsYg0ZGZGJmJv2wq", - "CqTvjo8Act9iHnawvqfNJ8zFfOdPm1r4IH27A9nIdtRKJItCCoNmQ+1PwwCX53sw1oEbat/0Pgo7D1H1", - "+Ok/f9etdeflajgP8ucaQ1BHnmjkiUaeaOSJRp5o5InaPNFRebbk2iZYrVgaxF+YHKrBLj0iSKCJp9Cb", - "8k9cqdL8dl0O6gD7jzzUYB7qKRc0G3mnkXcaeaeRdxp5p5F3Gnmnm+OdLDvzvrinnK6WTOgdm7d+A74J", - "vdMPsf+RS3s/8k3dfFPkxEYOauSgRg5q5KBGDmrkoEYO6mbi5SxLQ3wpnk0Zpj95f+rWV4ILpaE2GmDR", - "SCIF12I3z4cxRWPq1ZHzGDmP0bN69KweWa+R9RpZr0+N9apYIuB4Gg5RPflWIdNnjIf6genPhHu6Ua/r", - "0cl6ZKxGxmpkrEbGamSsRsbqr5H1M85S9eb57FJMYYbPT5avuoXUnnn+YRN7jizdyNKNLN3I0o0s3cjS", - "jSzdXyitZ4yri5kidwwLlDPz+9Y5A87Hs355wRJzNI45izKD5mKOYAyye3gAFY1OxIn4v//rf/+///M/", - "yenpvh/m9PQReaUY+fXN4atj0lrJm9++/G+azvGHvNStBndctZ4uzhOXsXt48BNbjSyoe5bBoRwIc7ej", - "O9jIaI6M5ugONvJZI5818lnvxmfVOZ+mOxh+XcN5XbKzhZTn3Vk5f8SbwebENkfEGM8NtZvnOPNrO/TI", - "C4W8kD2VJ+YZv2+FXG0FY2qrkXMaOadRRTeq6EbWcWQdP3fWkSVlwfXK8F+GvwliM2uM3RAe8gxhxgZf", - "AlPXl0HUNYMrKHjKFCmVgzmVs4TPDIWZ8cwwiKC+Q3KE68cLsbWroU9rQEOMSqYIFYjEl6yYG5plYTsv", - "5IxnrhVMcIAFt+2ou1m25/ZioEwxUC0BEwrtMtiHFJpyoQxI+DWobXK84IosZcoIVycCNUyAaOdMa7dP", - "h4/ZbMawtLdb3aUszmeZvDSzmuaWtc4yUiqznoLNaZFmTKkTwWHZK7KgF+ExFP5gZWGQeDxf62Oc8BBP", - "w234heu7cSrX+nhmhtaYh6a12j6rtRyS83X42P4iXnO9kKU+5ELAm7n5qSLQcjt7OUhvZ9znRta6lZF/", - "YqvbGfiw4AZPPVlSnt3sDOwqp+IaB90c70WRsuLxCv7DxXxbmj9uadjHq2skTP4ocyz3b9685X2mKc/U", - "mIl5FFdHcXVU9I/S2iit/VUzMbclqEBMs5R0jYi282fFXPYGgO/D76BBakpZZ6vqR55aQY0rvIOCLeVF", - "l3zmBDP/BbqcMaLKs/9iCUpbC3NRcD0noiG6faEq6YjOKY+UBMN197MVgywRARM+hq2PjNPIOI16/lHP", - "P3KOI+c4co6fFOfYzchFmceeMPbBvOD7Udq3R7IobWaQ6jRkJEmbj3SzFmaxuiwES60K/4wt6AWXxYmg", - "WSYvVU2HT9363LoqtTyRXesCNMqEIYaRDACfK686tUv9vWTFqlqr1beG6+KaLdW7aQqfOC2uWwYtCroy", - "/1Z6BVs2/NxHosscVZcjBz5y4CMHPnLgIwc+cuB/jfwGg9nvaMqD4yhfmVBhVXXwoHIuCLXP0DeGS2mw", - "vyci5bMZA3QFYBmyylKwSqXbmMG8U2iM7iuG461GakxiGOmZQRFLem7hfXkiGjOBpwp4sVTjxB1hLO+K", - "f5vHlxdcscD/JhKNp1ihP2tN8M37pvcf117BPkD6iJGvHvnqka8e+eqRrx756pGvHvlqx1cjN0IoEezS", - "HEZpk04MZLUHu0ns2HI+aidnIuVivpVxwVR3qGRtYbYPMX0I12xJvkwWBmndCdnsLDNA4fjspH8Ah/sq", - "zfuMOHYMO52IOdUL8BgldvXe1wIHR139LszQ0YLw2aMTsWWm8v4ErikXpJpBaaqZbWkBO1k5dXi17FQy", - "Jb7QZEl1smi1pWLlRleR4VvsPR7yIR4Oljr4/+y9+3Ibt5L4/yoo/nYr9i5FUXKcxKpKnZLlS3R8kWPJ", - "yUkirwPOgCSOhsBkgJE08TfPsP/vX/sY+zz7AvsKv0I3MJwhhzeJknXpqlQskoM7Bvh0o7shXktFSD+9", - "LkPf+J5yXYRdt0IYjq0rr8yFrHrhzAhfknL/dw8A74VJzA3j/mYxQn5CfkJ+Il4iXiLe20y8U0Ro1gW4", - "Ro7yhKM9cDPbHvon3HwNMAiOiiWNTmAtjIlZmIr1uBm/uNMtLE1Lxpmi3Qau09ryhPGRe5sCeIZygmHJ", - "OC98pwLteuuUOCw4Pt20Qjk03TMMgWYz2/lucr22PGF2110L0gUTGBIYEhgSGBIY3oOL1Rfy1bKEGFBw", - "fiyPUlFXo7bZQTzQ6JPpFBfUulVBMA/mMc5snjCp3MaEy++DnjAQ1KIKdf6lB7Zz7GceHqtyXfB9xF5U", - "7AZ6BeTv3wqsz/egxw21qmaPP8wixLIE17yXk4pWn44nZ7wwzAz1WS3yRw4bacSTCEas7Lx+UjTH69gP", - "I7JqYI5SKWqsj3WA18WKpcJVTKcW51aoWMSHl8pFGpOLeNe9dpfJ4CkYl1wsh1RkUrtmZPYS9ajkcpnK", - "eD3lJSric7hMJZYPgtFQ/CpBUBqGE18udFOIrzOuxdK1vXBoj3npnxZXa40eNO0UN4MEIxKMSDAiwYgE", - "o3saN0OOCXolGSj8saSlRyl4BZPqmVpsCXJBnriFlmmVFKDVBosLWEih1zPBjVbsTDAlgqDkNdoVC5fc", - "OuEo6LyVk5qS0hQ7KqIEpZSfh+FIHLwYSymxPaOipewz4tkJnqL7FHGpUJ9lNnIm7XCmVj4UNe6Ot002", - "LmYq17DBIHaznrBnbsdS+uzBw7JKSpzbeuu/MqwnBlK5L8A8CMRiVTBANFgexKh+uODEU3+2MMoTK534", - "OLZM6c/qMZ6BWczYkN1bt0jRYJw+bQdhdiOYVNdlBOLLuzIrkKWcOktl/aTfJlmBENMS0xLTEtMS0xLT", - "1pl2fxoDFxhPrAy+n/1fSwaJK3HScdSB49mSl2DiejQC57+M9y17oDMmeJZIkT1kqJUOpwJYFpon70/l", - "4jCc9aXiifyTl4cJgNA9wU61BKVVc1C4Vew2yvZT8DciJSIlcpEjFzlCRUJFQsXbGfytBLSVY76N7Ul6", - "Bdt/dvUmDy+Fve2gtnzks3JC/dZCn8KP7ZUUZ8uGPWu7LkgTHYvWDix+7cYa1s/iQUvYXF2fhy+0p3Ui", - "uLreaGtk50tAS0BLQEtAS0BLQHuvYqktotnGEGr+qux5ukqpvHpyrJ2cUE5iiIm4KdhYzO+IhvHKDp/f", - "izThkcCuIrcwwkXCRcJFwkXCRcJFwsWrwcUp6LvMSfgmj09d5802B93FB6rWkV8ZjF8VrjYDC0WEyrrV", - "YYiOdez6Mwt3qAVWbbXdRIZzbl+Luj/cdO7BUtFmXBl8M86CySnPrR5xK6OyCjyqeuZ5a1RcIKbakhsf", - "b/Urn8zgIhNuxoYkxy1fz+OWf2oamn13eTQr7R/vyuk8wSvBK8ErwSvBK8ErwSvB66rwuhpNXo5sETnn", - "kK1n0oo9AFexKzqzTJyLCHZJND/lxah6j8NkmFtlLIeJYYSKGym2NGvNTcg00qovB3nWcDMcT9PpSLq4", - "6blF5WzsNxXCH0BU299B1fv7TqMrk/Fmk9XatMOTSe7zEm6z1SNhGMYkgGxHXOU8+YQ9ypNPCmjsIuWU", - "dZ4sZxqkcXQIpAmkCaQJpAmkCaQJpAmkCaR9dDQx4bE+QVyXQudM2KyYDc7v3c9eZxtmXUnQ0Luc9eHF", - "Zw6fRqm9Sp0sVHaORhZqSxhJGEkYSRhJGEkYSRhJGEkYiRh5AZS7FFkaxVMz1Hbjj5wrK62cd+fYoX+Y", - "jR+GNQt9rzA+QFMcqsodDSEH166JXNxDzTlN3powpYkFm4VSHYta184Zl24X/9TX2adIJ4kA1vzdo6yb", - "UCITXvEbfvWRn46VB2JzItNUxKWSWJqZWBs658eyVcS4xLjEuMS4xLjEuMS4xLjEuF5VuhJGXgpvLT8X", - "ZjMTZVyAeUrU8qGKBcJXhll+7uOLGvZgbC3A05QZYcMLHvS8X5lJ44GHEIBUW7HD8FJew0ZyMLSwsxVt", - "FosQTMu/767ANNOnMnZv/bT6tKynx6cjfk6MSYxJjEmMSYxJjEmMSYxJetQlaO5SZHmqZTwbJn/SMl4c", - "snTIT4XfgJJM8NibXobTeB9p1CV2+dWD6uMIjnh24iY6N/5pNOzMDTKDvy2tYBAtqzaJ8PGqunaKNF2h", - "d0iHuf6YA1MdRJfREuAS4BLgEuAS4BLgEuBeIeBOEOayLOt1kguu3uVJMqnFNGzEbTQMk+waruGdVqOu", - "fvkuT9Pa3bvwGSrTK5oKOVYL7+NtvD/X9/m70LtToLxCZNTdLBo6krlUVNTlw8MuFQq23r4VIsLemGtW", - "6y248G2rS2Rz1Zeu1qtAd6+SHEByAN1TRRhMGHxf716dRNVZIVsXX686hYPH6ukkB/NMTMjjhul+5aas", - "iglABW47bK+8UPVUZJnj3NLONKzLMMyTwQes9lm7BasKrT0x5KdSZ2g+G5g8KisyzarY2DpBXNFtoPVC", - "sOCruAN0+TrQjZ9EUkRSRFJEUkRSRFKTJDWPg1bVLm5+lstd6jnFOr2CSTzyhvNyk0fDaU1k/RbP8uJO", - "CLmkvHOR73+mlQhfp1Ipz1iqmAwAFTXA2QY6FsExvb8PFBSC5U3/TTeATsHVEkfmdAMokRORE51F01k0", - "oSOhI6HjLb0BdClsnHcR6BwcvJdHyy+Fve04eSMOoq/vOJZOX4l8iXyJfIl8iXyJfO/HVaFLYu/cG0MX", - "kC/ApQ+2iXv0+KJQFstMRDYp2kz23azlacqiIVcD0NDFwkiYzkyJs2MV8jfDcFGTP8ycdd/ondBnXvXx", - "du3a0Z+lHf7sLya4bmcgolGiUaJRolGiUaJRotF7ehPpqsf34ex7gVdQ+VizD8xemcsUI94YL5BQxwv7", - "f8zN4GmxTBagCQ35uI7reIUwqtHji+VxIi5YODD7hVKmmXQT7/mIy+RiOZi8908R2QsWn3D16qKt9vrn", - "K9UMhwLJRYewnLCcDEuJSolK76uLTlSBw8CiY2Bc0jtnkV/L3viupatQ+YXsv4wvS9k48mIh2CDYINgg", - "2CDYINho9mJpuHWxShtNuq/Nz+HP/fggeyWK5RxYSr+RXsH2n3VmOIVUyGTx8elEPeaepc7t5Nf7zw6y", - "5+f4CoKqhLw7iCiIKOhUkU4VCakIqQipVvDuWIBUc9066pDkevREFI3uDjcGlFY8VHop7PUcJtHZEcEX", - "wRfBF8EXwRfB171wMFhIXvM9CxZpqPDBm6WhurrDu5ql/nVb5xPEEcQRxBHEEcQRxBHE3Te7/LUcSm7y", - "yO20My31HTC6cXGdz5OE4eP1AMVzNW+7mP/NO6hcP4b5phKMEYwRjBGMEYwRjBGM3SeNmqejCpA9V1ba", - "RIwE3g98ET5L02X9KCFSR8wtn+9QuZumz7jlt+BI9PocOZPp/nnnfjUdiP9xPfgYyiX3PgJKAkoCSgJK", - "AkoCynvt31giXaOSr93adXQ458zWiKwhs6ZDW/fkTSPES5zdLhX9d6K96OxxkKF+dd+K0XQo4PUf8F6k", - "ps31IkQkRCREJEQkRCREJES80wfAzVw3HxJXUDhufuZpur/UnWtLwGXdZ/UGqR8bSoR20/VpRIdEh0SH", - "RIdEh0SHRIe32sF2vXQoKgfam5/7gts8E/CLe9fEzJPqvaFwm8rESTmOIb7JPi/2oFewE1E87LDdJGGV", - "8phjI8PMkGc4GYbcoMmdA4JUZLbwy4HMGNSm7CKEnlGeWJkmgmk7FFlIJIVhLsdM2DxTbifkZrw4TJY/", - "19axctr/E/TGzWTc8ajNLWzEz18LNbDD1s43X7dbI6nCx6063vKNP7sbTz7++4O/7XwqPzz8txWub7Ny", - "JFrNkL3d3X600d3a6G4ddbd24L9Ot7v1a6vdwtv4WjutmFux4fOYKPE6r26bGn7SyhJ3E3cTdxN3E3cT", - "d98rS9AqN556FlyfUaijm1TMddrBR0r4hwWq4rJzrA5UUnjoNfiI7MNYjx28J+6Qk4YlUp3ga80rJcyF", - "4kN47EaZFFwR/2FLp47qCQIJAgkCCQIJAgkCCQLvEwROMNiqAXfgkH85jsO7e9fPcXW70BuIcuuP7NNI", - "cU+5ufboPoSThJOEk4SThJOEk4STZOm5PFGupEXcTHVmeeKaOPfONMSRcVUwGTPCGKnVpELxw/vXF+dQ", - "uGasgrjH6gMYJ7rnMhHLTES2nrXV8HlGHa1mI67cRo/GASkvQDHr8ELHpn2soiFX5c+hnjyOM4cmcOlZ", - "FChFZg4jtIwEG0pjdVYsuj8Oa/UO6nKI3XVnw2JCw+vkWms4etVf92V3cypE998RgBOAE4ATgBOAE4AT", - "gDdfADgffi+J4XmvrN38UE/G9S+rPT+pD54b+emwVtJNMU6dsAU1ltvc1KxBl3KRrzbuEPOY8pKftAZd", - "HBiqqesOslhkTwv4R6pBR7s/1prZ06J1jeGxrtQmotJUimxFLE0sTSxNLE0sTSx93yNbmQkYXUDQsejl", - "g82RsJmMZlPy+2DP6p5m/mn2QCp2kAr1xn9Gx6GH0Ncweiof9UTGdJ9JNcB3EGasYUaqSLCRVLGSg6Fl", - "H472QCHtJkc1yz18Ex6Yh675wrr0WcFiXjBu2UhWkjcZyz5z9fV5tRbimBXndjNNuJwY1UlvK4IrgiuC", - "q5XgitiC2ILY4nbaXcJECJt+hShgc63TRNWNvQYTaSYi1y1BvdUQb53X3dK9Ci5J8L3Ke/8UkcVDY+9o", - "bTrsaCgNEypOtVSwP8EAxQLj8/B4JJU01jHBqWBpnqXarVBaJUXnWB1p1hc2Gk46pPtreEwqItmXUSib", - "pYngBgL6QIrQ5lC1zc/+r1eiOMj2n9Wd+stado7Vfp+lbtOT4GF/Kl194aWz/ES470TkNoZIQGtdWWlQ", - "8ZQDxSD0ELrWAzn973/99//9z3+yT5+elZ396dMO+2AE++33l8+PfH23a7X6/eOD/8/yQT38wEDYpmcf", - "MqmMFTxuVoZOeF9N6EDr4/1CJhbUcqxXjMMHlMOKlgl8IHbY73/z337v/93YOs673e1vJr/e/r3VbtR7", - "+geaFZ9TXu0L9ZrLNCTMiHpD/LffB1IPLZn6fmZT/JPX2ZSpOBH1NlV+PipS8T2MuIixYZM/9rROBFez", - "Wjfx+Oqa6ucTGazeB8/PoySPBZOKR7Bk1N7gEg/8G/jADrURlf3BrTkJd8u+zpjgWSJF9rDVbonzNNGx", - "aO0ANsxoPRa970uutb7cNXx63yrfnxdRv1/fDRCv5Ujag37fCNvR8M+qqRL39zKJKuN/4aOERXk8La5W", - "rz+5kr4HexeSOUnmJJmTZE6SOUnmvCf67ElpcFach4/t1vmG9FPUW7zOEEg3P1c++Si8SwqoIAZXUBjv", - "6L+w2DVZk1XEsMm0c8Syl6LKEk8LiMC72Dillv+Njtl7JTHGCLYItgi2yHqCrCeINok278cJxyTazaTN", - "GlueTh1zTB1qTNo9nEm33bqRkCPBMq4GAjByH336YBqCZpABp4VVqDwmkJb5HoZ1OOHGsm+32VDnmZmh", - "lz9dRiO/h5v8/rOqT6DNeHTiyh6Avx6cikDlOksqNREdACIb498++mYy/u2CMLNTGttDyzPLykC1boF7", - "/2KPPXr06Ik3R8HuVVGSG3kKcYabahrGade+yPSoVt+LhMOd1iyreK21PNLrr6NbWvCsz8s2u5HjNOOm", - "omMY9/WSAy/rQ37xmvgjj8bqhN+WrFPT6cnFK1baW2GnNM7+0si/+SxjIi7N6/1n7MEHJU9FZniSFOyD", - "kn/kgr0W5zLSg4ynQxnBD4c6s7Da7wNd9qXIHmIvXKM4tvLhyrpe1f4NfkHtFbyWb0sjOr+HgLe2zTO1", - "7MzHE5TGE6WtbrftVmQ5ykfhk1T+U1lXBwUDOEBZc9jvpc719v2qBzsZXdFI0jpJ63Q0QsIqCav39Ghk", - "QqasyqqnXkptz4g5g1upcXMNMVZnrMdtNKzgRV8niT4L82ov0TnuvKa0iEMrkClpEzMv5c3l4qBELn8s", - "ecVO9jjwV3tWfhvQsn+/IHXMoo32JU4Zqj0E/bJUvBa6mZCgiKCIoIigiKCIoGgainBXnUNDFZ19sDGf", - "r7UvLdEbNeovQh5LWbmDObV75DDJBzPURtXfr8C0G9RWsWA8i4awL4b2udVk3KtLqnYxs12fFxkqr26o", - "7CfQhY2U56W/DgPl8AKQcTLBJsEmwSbBJsHmvdLA9ccEGGDzXabjPLJsj1ue6MEcHVzYPeF2ZCHhzmTv", - "Nwe9a7mVUYftljc3S1P+Lvtjlqy5j3KLcXIxZPQLPc6yZL1C5263Yyk3hvEY5zZPWB8w1eAsh+HriXLd", - "hjc64kmUJ9ztOGWlcrdLteuXOkORXxk2yHSePi38QtE5Vm+AW8D4hR1+eNNmewcf3h612Ye3+z9+eP4J", - "PoGv6+vdo+eHR4wPBpkYcFyKXDeZPE11Zr2PXcVRtOxMv4/3hL+zJUZPvDY4+5bkOyuk9IvSSfQqojf7", - "3LGofZXm9tojNYcGUlRmYjtiO2I7YjtiO2K75qDE44gRs+GuQaW4+dn/5V3LYpEIK6b5z2vOGC9ZauxN", - "dgBBP6rkV+rspK0yjiqJhu33m1O0YeeuRTAYZxC2b7cSS39EiAnDlA85xlrgms/7fRFZ9HlwD1Vz7hwr", - "CMUyElyZtsNUR5tnHI8lsTCPEiFfgEFYRfhIsBNRtEO0kwAX09FgXE0hHEomTqXOTf2JIT8VfqfGvo9Z", - "X2bGuuWKu828jOTS40Y2KHefQaoxCy52lStHfK6b3GJHNjriJTIjMiMvNfJSIzQlNCU0nUJTRJOl0LTd", - "fLD9Utgp5GyKGPAl8Kf7RfVcpLciOiI6IjoiOiI6Ijq6rT78K2rtBhm/YIxiTDk7OnFNL7bGCMW+3Hps", - "4mrkgkvFJ66FlTrIPEe5p3y5NyZ+MdZnUcgsfGpBzOKXOAkoWvGti1YcTFq9onc129VnZSIyXV3RdBXe", - "mAsbrs5OvQ6zVa6Kgz6KqiuGi4Z6NczC+RlAqobL9z6S8EnCJwmfZDRBshfJXvfDIHYQQHpx1DR8dPMz", - "/LvAVOInLWM3mzgWgOYFbrrhsXii1UBkuHK2ITSaFkZ9hXIIhIlyL2w/z8DGtscTNy5ja1atTIdNFlGa", - "O2TCZhovY0gKzFGABUQbqgFpVIF2sPhCuHWeJ5ngceHXemsz2cv9ilDKcDglMuEmC57c9/OxTW3FSKOX", - "Z1CjM4XvV5mDN/H18Z5KewswgODMSDVIQllu1yh0PrYHrkqMYIPB3bImIaIWH7lX34mYW90u2mMYt5Rl", - "7Juur11pAOrza1fa9SCIe9UypDUi6T9kZzpP4lDFMBa6z77uggmLqz/Yfpxq6aVJyLRdPtsTkR4Jw7pj", - "a4dvumNTEKxeySzuVYPhajL6dYOOzLfMKYefqSudcTRGDoPQUtz6hWHcb2YIfdMT0HiQh9/kxoZ2+E3H", - "TxLXxyP3a0+EaILu16AcxW5IRSZ17Lp3Yjg6x+pZJX5gNSUGvupDqV6/gH3XJEnxulw3jjy23d1+tNHd", - "2uhuHXW3duC/Tre79WurfaFoWGQqQzxOPE6HQV/gMKj7ZO0dsKdVP5GRXXHCRrA9BMtN7VZaxxQllUY+", - "27FNZegdY7kVYRtonKgkdpHYRWLX7RO7HMIiPi4ldUnV15vY7ZFcFP6CJ0nF426cqvkQZW+c63VEA/XF", - "FRQIlCiPKI+0rrT90/Z/T7WuTXt0hQZea32Sp2xfoeLFFTLNBOF2h83PcuJGtEnj4fBkk9Hwu/Fvi/Vp", - "8uaYC5f1JnggeCB4IBUR2QsTPRE93Qd74QrOLAtMI56dCJsmPBKbCXrBL9KkhFF2m4gJiliepqySV7Na", - "5c34gdehrCm6uiYTxKtEsOl2NpjUEZ0RnRGdkWqH4ITg5H5cf18Dhwqj7LqPC6lk87MtUjFfn8OrDMJ8", - "StYrmEva6Bo+vVUvpe8Bhc48jc+8bt5N0yOX/q9rhhBiDmIOYg5iDmIOYo77oRDhacpiYblMTKCAi3LH", - "plTG8iRx7Zl1ER084CanK7c0b5+rFqns0rtp6rNYWSlSycVn4bfYDjQZOWP9QaBnFvuOF24OLhcRunul", - "9SF1C6EPoQ+hD6EPoc/9uT3Ok0iaXhZ33KMnoliKeqq6F0dAp5Kz3Xf77JUoFoHP7rv9V6JYA/7spnKc", - "0dogKM1c5a23MuZQRqPPFrT3RBTlzuCDyWST7o3ut0ObybRM0mnyHMOo0U/xDX6X6b5MRC20R1NYn/0+", - "g68ZZz3/7qeYtLwLpRor2x/fQbzrslJu/MqLUxKjmXE4jbzhC5/KXPZrjhrhMWkYZ4dcxT19DgW1mkKR", - "oGJtskvf8pGoHDGGIXJvvp+gEOJlv89c+mDsUEbwiSf8Ahu0g18ZSNrQ+zV0/S2M+sfyOY2xYIhxiXGJ", - "cYlxiXGJcYlxvwTjlqDpQPWyvKvdErE985RxQsnnSj7Yze2wc6zeQ+g/Bzsf3r+GTcryDP3y4RG23emy", - "fqLP5sIwPLrti3kp7If3r+/KieQebMi7aXroOoawhbCFsIWwhbCFsOV+nUriFh8UGAx3+HVQy2a5Tszk", - "l91yJfG1iHQsOsfqJ5HJvhSmgivuF4z+fB4NuRoICFMGIZ6Z1SdudVZu4+lnwgzxm6XBpqzGyro+zCak", - "h5L2dCwg9NWhwwRj3rmnTQcChSxjH758lq5LLpsjLjKYH8yVtWf4qTrka888z+QymS4c+QblbIU7H+EK", - "WJ+870UsMxH5dhEHEgcSBxIHEgcSB9569RXukfM50DPSPOc8fGaG9x2m/1IOd0sgg/vnwoH4Z6d+WiyT", - "HqKBQiauszoT9ypcWjG2VCAoKJ6iQBEYERgRGBEYERjdU1fBUUCVQEOeXT7+1Z5hhrYX7uOHpNMAhL/j", - "/npFxvAubyxmOZugrfUWvRImgOqOMyXOxsFiyjD4wTiMG8bdz3liCSsIKwgrCCsIKwgrbiVWeD4YeQCY", - "4oopPcvmZ/h3Pz7IDpN8MPdOH3+T/Uz4wN8DfCy25amVPNeoZ8TPXws1sMPWzjdft1sjqcLHLVeQdW9Z", - "a6f1H7/xjT+7G08+/vuDv+18Kj88/Ld/+X//8Vt349uPv3U3nuxu/PD3V2/evts4+mnjV74x/OfJSKUb", - "9nTjz4+ftx//9S8NFtJ0lQlxCHEIcQhxCHEIccgyHOJRYSaHtOcGN3JPsV7B9p9BRyb5oDmo0X0gje4X", - "VJ+QOoQwhDCEwmUThxGHEYfdVjvsORCW5g0Q9iGN554x4e93Fb6u6MQMO+3avegJ+Qj5CPlI80TEQ8Rz", - "P4jH08vFT8A2B5nO041esfkZ/npavBLFX5vuZRLLmCUzSMV6BcMkc6yUX2L+P2HWd4ql2o3VH3foSvfI", - "tSd7GzzrmRvoDStHwq2D71/ssUePHj1heAMMxktSUZIbeSo67FklRNL212yo88wwPtDwXCVk1Q77m1s7", - "vt/ubj/e6G5tdLeOut1/fbTr/9fpdru/ttrYNjClHjfOpWtVm+GzbO20trvbj0JuWzvwX6fb3XI5YXVb", - "O62yNU0BsowtICP3dGu6P56reJXemG6z1b7F26u02Orrae/ajNKnyiEDdOJk4mTiZOJk4uT7aoA+CawX", - "o2ZEg1l4/KP71RfnFsTc7Q3TZPxj6Zx252h4Gbc+aH4H9939uLVaMsDP1ZJYvWKCM6lifbaSo2M14ZEc", - "iV+1WjWxyX0I0tX6QyZWZHu5sXrkZsmFknsJbcW0PD51S0lcFfJeQH5mxZwGofwrNwyA8t6DFwSsFFac", - "283InNazmZzYBMwEzATMZEtAtgQkMZDEcLclhgrDz3dZncX079zvZDGwGpBB7l/EbqBOhER6RHpEekR6", - "RHpEekR695r0FiuDvcZugblEeMoH251hblpaSxyGTO+aanidtg1uivfEQCrlXlndZy4PMnIgIwcyciCS", - "J5InIwcCWQLZ+2jkYMb0OA9olbayH1oTDblSIlmAsRx3ojIZC8maWfZt5dG9UMAU0k5exwVRehlG5omb", - "i3MLQNkRjn4+uL1ph/3+t3qQ3+8dAf/earfEeZroWLR2YD1opp+J+MBVEipng08+fdnpAqArWyWNm98X", - "bpZP/j3UY9WG+cSXbdmNiS7dML0uHGt62byu2kChoR6+d0RM96sR2BLYEtgS2BLY3jOwbcSlCt9Wt82l", - "gkorcdaY6aw40w378hVFnW4oCauw0gH51lXWhwJTE7AQsBCwELAQsBCwzAhMzRv5Yg6zLFLNbX72f+3H", - "c2NXH+q+9eqzxiqwXsFkDPqlAxXNqqibDEEHJ23YBHsCljP4elZU7GZUWnyOXbZu7hn2+FCyu/Xym8e/", - "fvv48e6Ln3df/fB8a/vtL929H5+8+KFVP82mcNhEP0Q/ZFFIFoWEf4R/hH/XEg98ZfybGyd8Dsc1hQu/", - "2wjWvTG6LdJVEa0RrRGtEa0RrRGt3dao4SuD2rxY4ssdKuLDdw7TbuppKBEjESMRIxEjESMRIxEjEeMa", - "oq6v7XgXJtWqfheYaLHXxXPMfIHPxVJ+uGN301vpL7uw+tfl/DpVeQyX6BaRXsFGeWJlmgjWF9zmmWAy", - "Nu6VOxGFqbuE+Ae+9/9ubB3n3e72N5Nfb/8+a7jwgVqjl3WsvWCbvGPS7Db5B773/4Y2TX49s00hfOY1", - "tinLExikekPct993t/7+3d+3//HLr9tvH//89JdX3SfPn/364unhr2+wWeOHvn7/9U+//rD1XffV+1c/", - "fvPo7dPtn3Yfz2qkS9bcwgmB9PX+M/bgg5KnIjM8SQr2Qck/csFei3MZ6UHG06GM4IdDnVnYDvYBP/tS", - "ZA874F10jSLkmgaktF+ZHBP/Q+jxf/zw7bff/eNp9/E3fz/sfvfdu71fjnBY6s8dbr3fevnk+U9vv9l+", - "/3L70e6TN9/8fdbIjDeB+zg4N9IvDDbAtXiFzc7pOn3CoBbkEUYqCFJBkIE1SeAkgZNHWCkOX1j43vwM", - "/3q76mXNcCDNkkY4sG0vdbbja7LSpWHXCh/EGsQaxBp03EHHHQRbBFv3z0BGeJS5LGptwkITu4Y1R9N/", - "D79fHUXdOfsY6B7stZWsY7YbXdpqGzxu7pHjEoFObZ6agFnc7jf+XBJBISxzVfbegkSCRIJEgkSCRIJE", - "gkSCt48E34sNcGlfCw1meSJWNXqBNIttXt5D1pcJMwoF3bEYo0u26SYEGF3RPGbzmm1j1nuQf6x22Yko", - "3BrFWY5JUWgoSTM3uNNITFZgqCyEItfso4NnBzsYZQJyGa9dRic5ruOamTxNdWZZT9shg1pzFbNXrmi/", - "X/GRYCYVEWz2kY7FQCj3un3ZayPWZBaCLwOP6jFOZtuI7L7/9dHbZ89fHR3+9PX79y9e/PjNk5ePX+z+", - "1GAjsv3L4398/fbtyx8PH23vvfhu6+cnj58/upCNyB0xunAr8FpsLmZmdJ0mF64SZHFBsi/JvmRxQaIf", - "iX5kcRHEibUG4HU5LhN99z2aP1+1Mt0Vc2Pi7kKbKeguEQoRChEKEQoRChHKUkF3vavUhZTTm5/dPxeN", - "tQtuYfMD7aLn2Dqi7HokWmwWgS2i+LoEOgQ6ZIZAZghEekR6RHp3Ib7uAtJbPrhuBdwWOfXcJezq3gy9", - "FemhCM8IzwjPCM8IzwjP7oS/0EIyWzqabvMJ4XQo3VvOZTfyXJP4kPiQ+JD4kPiQ+JD4kPhwzeFz13JQ", - "u+nenKo/+cRQuqGZoe0zQsVuHnJ4+3xonzNphyzjKtYjFnPLp9nTZXlXNYJbNySEEJmyESISIhIiEiIS", - "IhIi3gdEBFC7IB6mCVdL+JXDY82u5O8ghxXdxyG/W+cxjp6yjn9d/Ttut7Q2k73cihneqzKmyPPTHXci", - "ioU9dyKKZbruUs7g6/DVvqLeUfiOdNyMcG902V1mdn/9hM/Wuo3HuGHw5F3m3l0rUV6ZdKF2i+YAHI6n", - "au8/a7wqotKcWIj0IHz7eWoTTwqWCZtnyr/tIB66NR03cmO5zavu5Mdqg/3+N/z6ex45uv59J2ShXXYu", - "8Xi/wEcg81rSOON925ASvp9+nGfR0EkLDSnCT9iAWXdoQDbNc3UuGiVcHWLaS08Z7JRo8VsVHly9uns+", - "5Z5bgG+Vp73r6At7189MfNUe9a5g8qInwZ4Ee/JRI7mW5Nr76kUf0CvIsu8yHeeRZXvc8kQPlnWdB0ya", - "4S3vttor8pB3WWMh1+0OD42icwPCC8ILwgvCC8ILwotZLvAp7v+zCWNSX7752f2zHx9kr0Tx16YS5xNm", - "FGkmItdTwUphDpigViqo+WA2Aqscq33rFVLGN0T23diiazdPMsHjwtfevd6Ykc4Y1o3FWuDqnYm+yISK", - "cGYkHCw20ryXSDMUcSh6Go7einPr0WixgUalQ+ZaaXzR2Jjt1vnGQG9M6Wubvv1IbEZsRmxGNh1k00Fw", - "SnBKcHq9cPq2RMML0+nSgZiAIMdGDdUATAiXF425tCI9UpwlIjYiNiI2IjYiNiI2IrZbGWdpIa7NDa0U", - "UExCf56IosOO5ijtGACGzTPlZl/fPWdxQHMjmgMyrZPJbo0yb+bdT75jQ3dq0LCyd6hSNVa4eY3flT2u", - "guGhsdw22y2/hlwvYraMKS9ltXzVRmlkg0ZYS1hLWEtYS1hLWHsv4lMtwbTzglKNoXZWNKpbrii8GrvB", - "9yJNeCSwh6476hSRHpEekR6RHpEekR6R3v2KNHXxE+dNHsd6mXgC5UAzHscb7rXse8vF2UEGdjHvu6C7", - "/GvObfSVCAm+cxg3Rg7UyE2DWxYnAeZDLVBChyIlrNJ1tVAJHYqV0Ng/Dmzg03S0hM6NDZdwo/zjYW29", - "lJP87Byuw1MeSid3eRJgSYAlAZYEWBJgSYC9p/EC5kuXlwkkoMTZtEA2R24dBxcAOqHzjSZm+3LBEXBQ", - "yAuPiJKIkojyaomy+2TtHbCnVT+RkV1xwkY6T2I/ZZnLFrWNJVZEPttxtMbQO2DuGKwhGycqcTNxM3Hz", - "rQ2EMZ9vL3UghJ+BuBb4JYbbimdz9lq9E28xmbdnVtP3M7lTEnoTehN6kzKXoJSglKD0VrpTXhBI5zlZ", - "zsxxlo2695pcKyt+efOjS8DjF678tRgTkO0A4SbhJuEm4SbhJuHmvXBzvDBrznN+XMViYOwMSXrJO2Hd", - "8MVdOAllCWUJZQllCWUJZQll75cf59qP8vE21PpNF7VK4gPhYH7mxRL+ubsUHZgCbxCwEbARsBGwEbAR", - "sBGwrQRsgZuq1HRBRvMRgmcz2jt8YCGj+eeI0YjRiNGI0YjRiNGI0YjR7i2jBW5aSX+mM8uTTR8k5zP8", - "e5jkg782MRjRrChpP7pfGTwOS0+klclHImOYYYcdDaVhQsWplgq3Y1e7KCmYOE+1CUMc0pkOW3+WU8QI", - "RbyD7N64cpbCxrJPrtbesPmYekFUI2gFtKqDcLMft1ZL5paLFZNYvWKCM6lifbZsrKephEdyJH7VatXE", - "fQjDtZcbq0ciW71jIPnLTOfp02LFtDw+dQtPDF/5LDAqmFkxp0Eo/yplhXF57yEoAKwrVpzbzcic1rOZ", - "nKIkX5B8QfIFyRckX5B8QfLFnZQvRJRn0haAx3uJzmME6CN9ItRu7gj3t48OT8aCSJXkK39XZRLIolEU", - "sS7fBeGZ8ZkZYZjHtWsIxLxM2OFEjuSM+822H0OIWTnKR62drW4XQN9/ajcEXl3vtWdlhNe5S+G4/dOh", - "X4nXiNeI11bjNcIVwhXClVsaanNCiejJoYlEFkTW5M1ZzQypWdmFr8iBo7rPX7PXxmTRhBSEFIQUhBSE", - "FIQU9yAKYSMJrKLd2PQLP7dzXBX2y2fMDIxhvYLtP4NRyeHSlmkaGWcyoRe5KJKk9Ttn4nn1ZrxWX6xu", - "p+mGHV//+ZklyUTz3S7Bq22fOkCdvOlmGU6isH8EQQRBBEEEQQRBBEHTEFTZkhcqVSoA5DblVGxGQxGd", - "6NxuGmGM9BdxztW8hBTMp5ilcjmEAvb804f48BUpX+aU6Pfg674uZG6NvFEPXSNCUENQQ8Y9ZNxDVEdU", - "R1TXpNqagK0K1O2m6Q5DwJggO1TA1G120kxErnuCpXyDFU9IB9dl/O9//ff//c9/sk+fnpVJP33aYYf+", - "GQcbI674AIbXbSZWCsN4JlhPuJnqSuSQrM3cjhR5u2+DtwT5suB26Rx24nD/snsRpDJW8LjZoChUoXUd", - "1ju+MLLcIRgjGCMNE7EIscg9tdwx4203EEi5E9etdeajxofUiMwBRHlQxJB1jOvnPMUDtvCbQ5F9vD8w", - "IEOshVFfWZRy2m5mQv/3RFCEdKaSoEBUezblmVtz3bSAIuPx7YVppk9lLGL/0t9gHMK+DIxycdXaKiiE", - "ZTYD0XpNngjQCNAI0AjQCNAI0AjQ5odvdXtyoIhmQmtQEG1+9n/txwfZK1FM3bI6n+T8dVuBXUrjpxNR", - "3GBmwlqPmWlxwIl6J82NOkGXmBLKEMoQyhDKEMoQylziDs+5KNNe9ljrpbC3DU9eCvvF2GR9HmmlVoa0", - "MIQuhC5ks0Q2S8RuxG734ELMS+ugNgG1EjFydV7VhIknCaumn3BJYy90hiZVbmJWHmQ8cvs6gpwb7k33", - "AotKdFPPa3PA8YMR7LffXz4/YtjG7c2SCDc/R2XYy4ZW/v7xwf9n+aD23eZA2FXzebiU4dTzav9eMWO2", - "l4vwJFWU5LFA9o+bQz355L6EntaJ4OoLxXSqdCEdPBLyEvKSto6Ij4jvfluG1cCrwn813ljFUuwgFQpC", - "YcMiaoeZEMxttYbpfq2wHYxnKeI281zQBoc540TTqMPcsLuEzAdLKFjsnh9JJXBfgx/rmWIqWM+Swk3q", - "vuA2z9DtDjc319HcSjdzStuxKlNCriYVkey7RX9i+fB7IQ91ryVVQsSG8bJQboyO5NhMzad6CDy6wZ5i", - "q+voG4u+VMJ3wjgnD7qudHbc2nNvuRHs8PBgYvs5bnVc1oeYvJZzIiwrdM5SbgzjiVYDDMfVl4McmdNN", - "/0SwQcaV25knS/1gcJmQpqwXNOsf7BdmhHVJzHGLPXAFjHsOS3gI1Xoz3WmGDfmpYCOuCtTHciNMGxcn", - "nynLU9TFbvS4yxir5YZTjlLMxT3lBjYR57ABSwcnxkFhh7HneB3VDsyNgOIOmqDArW6322W7+yEcRpxn", - "YTVEBXAqMqljN9EmpgoM467fZsLr5LLVKimwWVq5sQPseaC02sBj+vhhbdqkbj/CDn0lig7b78M42ayA", - "ixhC5DQlzmrJUEgaJ8QlnieZ4HEBE56rUHglXbs2n2Gp63OZhBn6dfcJrh7QugMVCVaforAGe99VV00P", - "nyMdy37BpG1j87GlDhUWCl/vDg7XJH25NWqN4hdauFbFhutQ7q/fz7rSAmzSvkpza67bubomf5EbNcln", - "JJ9d8ZHEk7W3YE+rfiIju+J4RTpPYj9ifqN2L20J6ZHPdoxk4bzCgZAIm2/jOJEUSlIoSaG31leaN0mi", - "swXRlQ8jNj9XPrknXpTE/NcmiDoXOq/AlEwakws0+KxjMkqiVW52kkFPeAEvZkLaochYzzGzYRLmQ0UK", - "uJIjiyX6Yl2nGksUteDgozLwL3GYrv7YoyHDmc244UcqS5aos1hkT4taUTxJDvrQwfMWBhiUA5/ciS5l", - "DVveOW/XfvmTHqglHfeQOEHiBB33EGgTaNNxT0mkg4BVlz70QUALhxec9cSQn0qdOcG9PE5AdTqqrRuO", - "T4CYC8Bk0J2DmkBCoSwTOA9AGx2zTCeJG16W5YkwbTfb1QmsWjiiXi89rs+ZjAXLuBqAKsEfIPj7hE1Q", - "fRupBuH4w+1ybKSNxQMJyDHW6iuLdbPaHwvICKIReCW9Eme+UzvsF18H0IaDmBBkBugB1Ms3dIMJxwru", - "Yd8Cw7hf3vjIvfquEdib8J57ycKHN4/LfWhKHME8pXGNE/0+GNgLe+Z2PSeE4FeuXhgqXMX49Xkq/QGR", - "+77DDuF0DM7XetoOXYYjrmJudVZA4ZV+cI3xswN6jrM0kzqTtiiPd6AN9bM9mTEAU2yo6LDX+kxkTOWj", - "nsh8TkM5cAJUyK6Nw9j1dv7gbOeeMLZ8pFqZcprx6uQKVYI1IsZ9gudWj1x/uCxHXOU8YZlwI+qeDBPc", - "oJmawLOmNuMs5jIpqplLw8QfOUR6rWQArTd8FEZHnIqsYDEv2AM5UBoOo8r5Ho7Z8Ajx/eTXYcKfuTyH", - "PE2FgrcCV0q39MGY8cQtf/Am+EK5Re25sB32FH/+tOsWv0/v3Zfse/Zm/+2DN/w8FLkL87DN3uz+40FI", - "8FT0dSYwRZu9kar+8MOH9e4P2sChey3d5huVsUBqZ0ixv7NcQlOEMnnm531oiDTl9JHGyohlYsCzOHEv", - "ue7jFi9h3jvhR4r4is6kLipeX+TY6nLyNepeUDa6xVL11Z+XQRdVDs2+4JmZl2Tp4IwkXZJ06eCMDs5I", - "nid5/h4fnM2U6K/r8MwNSCZjvHwrX844FJOAcWHdqizy0QQb7NzcRK9F+JNgvoTGorpvvZxg/EPiVOrc", - "TJnK1XLwbd4IdowplxkY3s3MQprStM6LJW4eajsU2Zk0AuMbluENXTahe8Y2diB2gCwz9lAyPgYM1DFP", - "BxmPhWmzWJ+p8Hcox4tKXgyqWFDC4uCZtKEDvd2r5z3YKP4UmYYyrByJJaShD2sWhkLfNItDub2SwubI", - "Q35eXqet3+2Wi8iOkMQhEocotMH9CG1A8iDJgyQPkjx4M+XBAK9f0pASAi+sYEdZl4LMEJY1DIjprSnx", - "jBbCPqCoJ1RfZ5E/zdyth4zwHoZmyDOcN0Nudv0pb/AexJVDZgyDRITexNicozyxMk2El7TG9zND6LBM", - "2DxTDg3AAc2vI5PlgxwFsSq0OhVKwqFfJrjRyrRDbIoznZ34E2c4O631KbTzixqBQiWvxQYUSno4N6Ra", - "Zcb+BPPrdhuANplfOvm7ZnvpD5BbO63t7vajje7WRnfrqLu1A/91ut2tX1ttMKXktrXTirkVGz6P6evA", - "12p4uaREhgNF9pUkZpGYRWIWRZAjAYQEkHsUQa4Gxace2q5IArnIxQcNJ0+ZONUnDvTLsBJu3CuxOzyQ", - "d9iuGVuJzo73MDu0QxsXg+PWSA4c6arBcSv8jCamwbjUR0+AY6RkIl4GN+xMJEnnWO2WlQ5xU/JSYvI2", - "oUNprM5kxBNv+2bamHlDR6Q6zRMeDtL8KdeuZY4vjeWjtMN+dvX3RnTektf9ynpg+geLQntKNpKGGete", - "gUgrI2NcVsDOtF2NIAFtz4TNtDeOrRx3hUgk+D5Jw+QIbs3Hs7024yOtBl52AxgzbcZzt1SpwWIp6tnz", - "18+Pnq9VkGoUobBL11nMw0U3ZtysAy26hYMEERJESBAhQYQEERJESBC52mtIljsHWelakirW9gom45sa", - "nHplNl2zen9pxf7tp9LuFzdsIg06gSuBK4ErgSuBK4HrHdKgX6HufBM1w8UKNjvvwQrGVHXKwQObq9gH", - "JIi55bMDEATVsS8ctNQmhTjFUaaNGdvhgDM6g5cDgwg8zTMV6zP1g0+a+dqAzaOVSuemzFb3mREDaDfo", - "3L1RUPgObHqMACp122jhy/HRFLxDug/QZsu4CT1fg3EEA9/MapxoqOvP0j0o4sm6nvnvm/rKh5kWKpPu", - "TfAmQsHDXaHJh1s3XF+7BIk0dhx+AOt+JsqLDl1tLfh44ILrfoXiv4BVkR+Xa7Er8mUtLYD4Mbptckh7", - "UhN+aHkG8wEOZDDWidXwxhXVF3GHlUZDbmK8f7HHHj169IThBOuwZ7h2lgdhCTc2hIZ4Kdz3Wa6isEOH", - "tyNPOL4RaF9cicAPPeoGocn8ye1412P+NNVfz1W85t5S8G7t9wHZlD5zPaHYYN19ZvUX6jFc1Yz80yVe", - "JrYgrjeHmGD21J634/48zmJxBeHGCDkSfzosBktSQMeIJ1GecBuQCqtlOiu14kiOxK9aieaYjK0PR3tf", - "1gQvbDk+GEtY1UiNQGoEUiOQGoHUCKRGIDXCfTXEG5YyzpWpE0BCgEgQS4aMxMByI56d4G5ugvyCHtq1", - "u5ca9AkYnVBJK8FiDSX0ECevw3btZKY+K8xXGgiBEDOdY05eiAZnH5246QOB9ar+PjKbjsPXYfuWnYHz", - "ki1SHwyyJxxBREGGh3r4TmU9/0762kAkB3Br8hWbKNDkvbLPQG7/EKrvoxL6IlFb4rqpKaLkZK7Vvg1G", - "UVV3LJ4k+gz2Rgx3WBYgMVKgKgCzvTlgrF2DjK5qMbiKhhj90zZHwQ9KFtmHW9O+TEg+aNT1ROSDoubo", - "JOBtqLyUMM638mx0/WEnGvtmhWh8ZDZIYhOJTSQ2kdhEYhOJTSQ2TYlNKIpc4vy1LNhUJaCmkMuHlYdb", - "V4NL1SKw0OsO0FVr5K2M0FVtwRjDYCm6HxDGfuKZBJEYZFho+fNzK5SBrcTfjx1B3avzn+iNYh43r0Q+", - "MNVS79AVR7s6Vpea3YR5hHmEebc5bnIVwQLgHdYwbjbhgV68/NjghT7lcw5RjWuaXHagkqIyGLUCxheF", - "4u0nMzx7J0hyKUVhpdpzFXtjm5Lu1stvHv/67ePHuy9+3n31w/Ot7be/dPd+fPLiBygTLlBq7bT+47fu", - "xrcff+tuPNnd+OHvr968fbdx9NPGr3xj+M+TkUo37OnGnx8/bz/+61+mrSTukKMvYSNhIyn9KDYscTNx", - "M3EzcfNd86pehptLf+opo/u7Q6wzLY8Zt35SeKuP8qFKjNtwCSHzpuLlrSTVhRgtzuF2kHiWJTi3tz90", - "aHVSPD9PuYpFTFbLdPxOJE4kTsfvxJfEl/fFank5uEy5jYbT6sGn7uuwz7rpE+nRiKsYV/0RVzINLmBZ", - "ruAa7LqEeqzcuJ6Iwrv2ubH9fTMdciPM5mf4F2LnuNFq+H5TWjEym5/dP/DctNr2eSztHVPaXq3xguuw", - "5UwXul/edIFMEUinTCRLJEs6ZdIpE/MT8xPzz2V+x3Zrt8TY5HHsbXDLkEbVCr6WBpzbGD6HfoF1w4z9", - "8Kr6C78gyA4MxggkDBhPIyzLlfwjF6xXYGb7DXYarrhqW3axdnfMVmM19gYxaZW9CjrNTXFfE55lnMJa", - "kIKYsJqwmhTEBIsEi3cfFoHbaofpPKDUHEVxGYeiWqy3AUYfo+ks2yHqI57Jh2l2IspYjzIOkiwkmKa+", - "aT8vRBjS9i4Bel/eX83z5m10WiMeJR4lHr3fat6g2l1xwl6Rcpeom6ibqPvuuMsh865RVVv/fhc1qX/N", - "VOC+FHZCY4s18ncxNUX6vmMg3l5YXd+Jd0hnfHXoTihOKE4oTihOkEqQSpB6F2yHFxLqTAviD2nMp0M1", - "eL584EPiQtjaMMP+yLmy0hY7LM2zaMjB7hjeXKmMdaNg3PhE7q/xvAxrWfnMwylsxaoQud4btTcO+Je0", - "dSZ2JnYmdiZ2JnYmdiZ2vh/sjNRxVQpexN76jSA1Swz43UwFSugcq59dx+NhuXtveRgm9OvzJ1ESjpwy", - "AXd2aDDaqIdRG4+t2+7hIhAcN6BwhHJcC+Eyi2lDDniEPPbcCGaua6xEBrXS8QykSpKDPnTEspx5hGld", - "ZerToSkWRm1mSuMHzS1bo5GI3auYFDipfVs1RHAmn0HyGSSfQaJwMiYhn0HyGSR5heSVO2KQAvi3fq9B", - "vItujqTiFl2w322IHALWvyBdGG8E7BZmHkU6i/26De+iX5K4F3H2MMYzXFLtNoE8HWQ8FqYNN/aHv13e", - "acKVvy7PNAgp8AMJKavsZDjcX1BIwBqE1wIaSmIDiQ0kNpDYQGIDiQ0kNpDYQGLD+sQGoK31iw0jOci4", - "nSM3vMEH6kcc0rrp6S/LDsruU5G5JSgsXGE1c+jfOVb7fZZqY2QvEW34HUt2CWDseoLFblmvasUhldJ2", - "VoLa4Qje0R1PFl+/q3xa9vDtI+Fj6oTE99wu3ILeeJdN2bn1m9LrwWiOqnMEzurC8CmdjXjiqHBa1Aw5", - "RzwWKhLhayV4BrArcHwjwXqi7zYRPBvDG90njmHafp6KU6lzUxd8J1oQqhYClq81GjnPHKC/G3IjmrsT", - "PLSxDyEm5/jMb/ogSZVvx0Q7a49BezALv6n2ZWaszz6U5d7QVrs1kuq1UAM7bO1sNTQASeQnfMubGzCx", - "BIDUb7V/c11zlq/0OA08kLg1yM5dY7AFcpSPqvV3O8VAZNCAdR35+b2jVa5Vran9Dx4HxpODPKsDb7mQ", - "tT251BY3H2Lf8hPBRL8vIjvuNJOnqc7cbtErpvqtzb7udssZHII/3bCjRdIakNaAtAakNSCtAWkNSGtA", - "WgPSGlyl1sALt+tXGzghTGcTaoM0E5HrvCAB1+v9HpMYt4gFE7gJk8ldVUxcNzVt/egEgbGc5q+XhTNG", - "uDx1WpCAdVRZqXL3NqhY9KWSaHQ3qQvwVbzLl9LeZYNB8rkhACcAJ58bwkrCSsLKK8RKz0nrx8pchX7d", - "QEbk1uual3C/KUekknSa8T6URexVSiDKI7cQ0tQSKBIokqaWNLWE1ITUhNTX68ZeYmkVX5eB6u3NKDdW", - "j0RmNj+HP/fjgwxudHU7pE3EyLVi8ZVS1adh/XaLO+bYYS90xqKhiE7czKw8yXjk2KnNcoPjveneYDDG", - "SrX0QaIEn3G31J7P/3ml6J+2lwLyicbOJfK5g/p6/9kBrLHulXc5QaAncZ4mOhatHViE2liDP3KRFeMq", - "SBUleSyeoRq6VS2xnII+uaf2ntaJ4AotggqQERwmtlyJTZUcd8PmOz6QCsWalA/EBZIcyj+XSlYZjIMs", - "FtnTAv6RatDR7o915PG0aF2p5FIp/6dt3w8iXgVMSWNNGmsSRKqCCNEl0SXR5S29eyrgUo3yKoT5vP51", - "ALN5F1EdpEK9cds9rJ92mAnBHOfAraTVYnYYUIGI28wDUDv4HFsZoZG4S8i8CXrBYvf8SCrveQA/1jPF", - "VLCUJYWbz33BbZ7hvUW4r7k+5la6SVNK4VVyhVy9RA3WAbUZ5bdBHupeS6qEiA3jZaHcGB3hnIGifKqH", - "nWN1rDbYU2x1nbDBFkH4Thjn5HHalc6OW3vuBTeCHR4eTOw8x62Oy/oQk9dyToRlhc5Zyo1hPNFq4DUS", - "Y2vks6FMBBtkXFkwgK+X+sHgCiFNWS9o1j/YL8wI65KY4xZ74AoY9xyW8BCq9Wa60wwb8lPBRlwV0KSI", - "G2HauC75TFmestyxxEaPG3QMAKrRTI5SzAUNq92nc9h7peMSY8XIdBh7jpr3HZgb5YyPfB9udbvdLtvd", - "Z1afCGVYnGdhIYRCvZdI0M1UJ5sbxl2/w9Ty1SopsF3oMw/I80BpteGNUx7W5k3q9iLs0VeiAF8FN1A2", - "K1wjo+rNbtVkKIyNE+LyzpNM8LiAGc9VKLySrl2b0LDM9blMwhT9uvsEVw5o3oGKBKvPUVh//e1frpoe", - "PEc6lv2CSdvG5mNLAROab5JrkPJugJB3RX76tUZi+/dVmltz3VfC1XubroMjCYkkpKs+qqHb0EgOJDmQ", - "5MCbfBsab5QFlxMFL3DusPm58sk98aLE2L9QpnRL07R0CVp1dM6tMWkmTvWJMBXZAG4yHgtgHpM7bBdu", - "wpBqkIh50D6bz72H5nHL+2eqwXEr/GyAiCETqwMCu5roZELq4YadiSTpHKvdstZB+s0NHqpAYFg36YbS", - "WJ3JiCfsj1xkEsJpzeiJVKd5Unrne3ljF92gjeWjtMN+dvXHjGIvRbhfg9u0Wx3aU3KxNMxY9y5EWhkZ", - "4/oCwkW7KgZA2zNhM+0lDx/hC94/L0/iiyWNk990ZjnKMm3GR04oxZDHgF6mzXju1iw1mJYi8IDlZkoR", - "zXeCzJzyc8se8fPggv3N15Me2VVzMb7xZ3fjycd/f/C3nU/lh4f/9i//b82WZF83OnpnAk04mF/2gKGF", - "ij3dSRNW4zYQk5teuP0aNuKFd7Dv50mHkdxAcgPJDWTiRSIFiRQkUtxCkQLJ7BICRXv2LclVJO0V5UHE", - "iSjWYI0EQVUqCnVpIOpPIwy7hS05FXG54IX1cAzaTdc2E69eO692b4DynJThBLUEtQS1BLUEtQS1t/VC", - "5hujIt8EG50lrPfxOSaNyYOuV00bTFXR1quc0Q4pZkKCOrZXMOnygXlQsVVZ1n7/JdSDSHedpHu//RFe", - "y5G0B/2+Ebaj4Z9VUyXu72USweS9sNPD7NRX7e4AJZOjA0kuJLmQowOBO4E7OTrUUNdD9KXcHRBsg9k+", - "Zz0x5KcSA9+XhvRoSI6WFg2OAwDhBZA3mE+AZZ6EuInVqPZcxSzTSeJGlmV5IkzbTXR1AgsWDqa3xBjX", - "50zGgmVwUYTuB0MTz6Ym2Hx7cxior9vg2Ei7PuPGG7TEWn1lS7MWNIiXEU+SIlinK3Hmu7PDfvF1AIMa", - "kDyCGAI9gGYhDd1ggkG9e9i3wDDuVzY+cm+9awT2JrziXliJtDL5qKKLn5JwME9pXOMwgjrrCXvmNjwn", - "1+BXrl5wG4Hrafj6PJXeNcJ932GH4BcCniU9bcGGZcRVzK3OCii80g+uMX52QM9xlmZSZ9IWpWMDtKHu", - "1SIzBmyIDRUd9lqfiYypfNQTmc9pKAdOJgvZtXEYu6wnwsoGTxhbPlKtTDnNeHVyhSrB8hDjFsFzq0fc", - "WzCNuMp5wjLhRtQ9GSa4wYMXH9+ozTiLuUyKaubSMPGHS211JQNoveGjMDriVGQFi3nBHsiB0uCGUc73", - "4GCCzjPvJ78OE/7M5TnkaSpUaQWWCbfqwZjxxK188Cb4QrlFg3VhO+wp/vxp1617n967L9n37M3+2wdv", - "+HkochfmYZu92f3Hg5DgKRhOYYo2eyNV/eGHD+vdHwxwwTLK7buRCAb0NeeJ2M1dN2ehKUKZ3FtnlQ2R", - "ppw+0lgZsUwMeBYn7iXXfdzdJcx7b+61gjOGlx5IYl/z2dSVOpfAoFX8S8Ix1RdxMAkziLxMSDwl8ZS8", - "TMjLhIRwEsLvs5fJbDH8yxyjoWNFMfMc7T3cmGWqDhgBvR2noCQac8tnS57Bz8IXBeKXScEzO8q0MWyU", - "J1amiUAphMHrgtLj0zxTsT5TP/ikma8N97cX6NyU2eo+M2IALQYHlUz4dWTg/U0y9wHIH68Kw3K8GO0l", - "EX/YZ0uBuedrMBZdfTOrrvFQ15+le1DEk3U989839ZX3rBcqk+7dwP2gFG0U3qEXrqKHG9+ksWO5E+t+", - "5pqKkq+rrYV75nEJdr9C8cta4vnKk9Cz5mPK+kt1CJd2uF1ejoJuymp4UYrq+7PDyssT3Xi+f7HHHj16", - "9IThvOiwZ7gImvF9gHALJIjyL4X7PstVFLbaMKnzhONERsqoxAqB0XZTpekU1W1dreZ4zmu4BnLikLXe", - "X8/9Dabr6y2lz8YXCCp95npCscG6+8zqL9RjuBgZ+aeA+zoXn5HjMnGICS72Fv88zmJxBSG2jRyJP7XC", - "i0WRASOeRHnCbWAjrJbprNSKIzkSv2olmk/6Wx+O9hb36FWeSoedwivP/JpLZ9Ik9JPQT9a0ZE1L+gDS", - "B9xba9ogz34ZdYAbnkzGeIdh3hTcEB9oCLuARxOmKUybm+S2euO9hMhfGO5B960/7TP1K+knI73VcghN", - "3Aj+bymXGQSOm5mHNGVouHBDos4w2MKZNILFWhgHHG5xRYe30BvjGHEg6cOR5Nh1zni/fahkng4yHkN4", - "Cn2mwt+hnGosiFowDFgZPHY39KAP3OgPf0BL8KfINJQBt/tPifd+nO5BdAiKb0fx7UgIISGEhJA7dRUR", - "Hb2SqEWiFolaaxC1AgvfIO9FOKSZfYUnWl6OeHbir/EMB0ZIZ7Ww3A3nrmi+q6SVIJHhSWYwJO2wXTuZ", - "qc8K85UGhIuY6Rxz8oeNPBOQiVso3OTEWOS4Zshs2lC1w/YtO4P12Bapt5buCUdLUZBibCUguWE9/2r6", - "6oCQ1NduT8KaTZQ4cVH+sfoQ6u/tdn2ZeKzs+qnJ5noy12rnhkhtVXmPJ4k+AxBAg+CyAIm2tKqAgw0f", - "ZDDWrkFGV497uYqGaB9vm11Pw2m07ENE/SajVZghDcIddAEd394Cm1UYwcmRA5FxOYmRghCScEfCHQl3", - "dMJEYg+JPST2TIk9KETcHJkHQg7ONDTd8/G+Q3XHccyD/2M46XnQK9iJKB522G79dlZ/y5YZcm/7OeRm", - "1/t7hhu0ZMB8DIAY+g5pqDRExcMan0gKL/uAQafbIisCw1T5S8c8dOUTqK/ZzrLRCA9N6K7BDO+6Ii/6", - "qUMGY4TzhPOE84TzhPOE8/fWYAy5elWkr913uzCKYk1hDkFMkmRCec9VeceQ8WEbqjZSZVgNSB1jvAZH", - "yaeCpXmWardia5UUnWN1pFlf2GjqalqDpxX+btqImbz3TxFZliaCGzEObr6i1FLWszmYY7U/m4C93mUv", - "ZGIhwh3rFWOBouyY8phih/3+N//t9/7fja3jvNvd/mby6+3fZ7nk4AM1uJVWjGBAp1jVf8GzjBdLeGg0", - "N6Ts03pLwtevRGG+L23zfHuaf3w0q1XVx29Q0/Zj831369XXP+/+2P37kye//tp98+zbxz/84/3W1vYP", - "39VbOvfZJ4savh9fa7unJOh6+ys/HxWp+N6foWGDJ3/0gTNntXDi8eZWLikFQQar98HzcwgGyqSavhjY", - "jLkD12D2wA4dSI03Hrd6JdztJzpjgmeJFNnDJb2TBBa970umQKSrByKtjP+Fw5EuyuOqg5LWDDQpNClJ", - "9STVU2hSEmpJqL2voUknBcxZsuxM+XXi2OmvmfJsw/1Z+88aT2wqBT8t9uMlD2pq1Zh7VDI+g+huvfzm", - "8a/fPn68++Ln3Vc/PN/afvtLd+/HJy9+aNUPTehKKKIXohc6k6AzCcI3wjfCtxtyJjHFU8vh2+nigwep", - "Bvj2+EhtGKs9PuXgP9AvlZlcxW4wjc5YOtZgNevyT2dp8RcojfYg/4qCDAtcRt80lXSs7ZowgUJY2H92", - "rD6gR7nVzGY8OnEYMsh8TGuOoa+WjYmECLJfv/eoYqnz6JtJS53FwaaWBsfSimbqsXZrbF4FE75Ufi/c", - "nGHg9589P+eR68aWXDLJYdmgMLN27XIpj+QIg1rBDrdqaf6YatVkYHO0UvVw4FYp5a8ZqyS+XGPfolN/", - "ThbpGH3A/3548JbhDJkZMA7yuFpd6r4fSHivay8aaVRJJiGZhDSqhOSE5PdOozpBzlUiP51m8RWvUp1t", - "/lO7ymiNJkC+4LrxT1XuuKQB0BIXzY5thCBsbOodjct4VPAKWn4i3HcictuED5ENjr+BScaWBeCJiQ4F", - "zaLK7Atj76fBEXswvol3/5l7z8EJpNFWZ6YJ0viH7UVWOKsbpzS4V6zcCft4V22IULakjEc33NINtyT0", - "kNBDQg8JPST0kNBzL4We+ZfZfoQijIjyTNoCOHov0Xl8pE+E2s3tsLXz20e31cO3e1qfSFF+/dGldOPV", - "BOCQoNVu5VnS2mkNrU3NzuamToXCuyEi+H0a9V7riCdT6ba2v+10O93O1s533333HcCDb8/0HQ92yA4r", - "MZBMu7z9VnAjkwJDPLXdN5FI2iCOjLhyO1npSVINojR5kSlIN0Zq5d+mkVs/KiJYmnDl5h43Rg7gIcyW", - "ZXDVEc9iuLnBQ2qtqg398b//9d//9z//yT59eiacCOWm56dPO66F/xSRNYwbrDy8IyCwBc9svPwmFmnG", - "I7xD1O1qY8kBDo6Cs8iJKHyMJ25tJns5rCZSGSt43GFOnqiUmVWKwpuC8KbdcuvD+4HPpBlCSCgYcXY0", - "FK4CXPnrSmBlyo3ITNu/+AZHw+DyAdtRLOBPvDQpFq5L4VKjUJcgQbv6QtipgVAik1GbCbduuC7oJ+Jc", - "uu6pvKuM4y1LpzyDkMhQRQhKFQnlvnMlhvhcbTe8vqO473TOciX/yAWTgAF9KTLoUalc0zNmCmPFyF/u", - "7BrppkTo/A57A4gMPckHg0wM8HYPf6TQBzP6qBye+nyBhjedlGnVl4M8E9UpDZVJMx3n4BLE3fuQZjKC", - "ySvHXV6Zhkz3+9AZpsPGBb/zeexxyxM9aLxexccu28PZkLF3OrM8Gb+AvVwmMZNqg6cpdMpGn0NNYm6G", - "Pe1eDX9JFVQb5gYkxPO+aigyqVgmeLKBUcV8rzAT6VTELIVymXWrmAnxw2BicL/fQ/49MeRJH/aPJNEQ", - "39dmElbWcaAF16CDVCgYMbb7br8yGNi+hq54q92UwKlW6kPKi5NjZjM5GMBL6DCkUXvjL7wylRvF7DAT", - "Zqgd0WDoBe62tzZeAVySPjStroIyPHFvk+AjP+WSM14Yf5eWiDsM6ltMpJIeWHzCelUrAOZyHAnbhr0U", - "a+Uq8+3jf22zrW73X3GGbT3u/quP7iYdxCk7TMo1x3W/a22H/fZe8BgY7+OD6V1D6s1YR2ZzkMtYmE1V", - "7WYI034qxdnDygjVBqJhoPx7iM0q2FCfwXTwr6SovpAhDh/Eg1Y8KayMTKmiK1/p8d3j+DL6mH6l6qZ8", - "3bVyvTbUsfHxBHWe4kv3Jjw7qmfpg00HcQPuyIYKgodS04rXsKyN+wYr3LgH65M8rV215so0llsZ4V1t", - "MNT+Im8pzDhTn3Z/nLbJ3ei0vHwObjkqT/RxOuh+fdlyZeOW0GGVpF74haPXQkXDTCudGwdzBV5NDu1r", - "+ziDBYRy8zFw5WgkYsd6ScFKRoVGgg7Jn9/6Jnnt8IwFr8pT7amL9kH/W43WCLoX02bSwQS86H/k2vIN", - "DJ/iV+YalIyXoqC+ZGGTqWxo1fpWCW+61s9ELx8Mwkx2IhDsPF6TW50g8GTTSzOHllgi+yIqosSvXEBD", - "iEJeAz7Of+yEO7MMXKdDBMxM92XIWKpTjWQwzvApPtioQbQi6/PILaIyi1nKMe6NyyN0RcoLGBDcuqsd", - "sZumOwxry/ZDmoZSDvPUbT0wkQ5tJlMR6j6ZGf46u91u7R1kfv8AHDi3QsENE+Vm9JVh/VxFSD7SFtWe", - "2E1T0/rr41//fwAAAP//j1uP9sUmDAA=", + "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", + "NQwA", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/api/client/javascript/src/client/schemas.ts b/api/client/javascript/src/client/schemas.ts index 010763727b..4b3625f15e 100644 --- a/api/client/javascript/src/client/schemas.ts +++ b/api/client/javascript/src/client/schemas.ts @@ -6098,6 +6098,13 @@ export interface components { * from the LLM cost database based on meter group-by properties. */ unitCost?: components['schemas']['FeatureUnitCost'] + /** + * Unit config + * @description Optional unit conversion configuration. + * Transforms raw metered quantities into billing-ready units before pricing. + * Example: divide by 1e9 to convert bytes to GB, or multiply by 1.2 for a 20% margin. + */ + unitConfig?: components['schemas']['FeatureUnitConfig'] /** * @description Readonly unique ULID identifier. * @example 01ARZ3NDEKTSV4RRFFQ69G5FAV @@ -6172,6 +6179,13 @@ export interface components { * from the LLM cost database based on meter group-by properties. */ unitCost?: components['schemas']['FeatureUnitCost'] + /** + * Unit config + * @description Optional unit conversion configuration. + * Transforms raw metered quantities into billing-ready units before pricing. + * Example: divide by 1e9 to convert bytes to GB, or multiply by 1.2 for a 20% margin. + */ + unitConfig?: components['schemas']['FeatureUnitConfig'] } /** * @description LLM cost lookup configuration. @@ -6314,6 +6328,49 @@ export interface components { /** @description The items in the current page. */ items: components['schemas']['Feature'][] } + /** + * @description Unit conversion configuration. + * Transforms raw metered quantities into billing-ready units before pricing. + */ + FeatureUnitConfig: { + /** + * Conversion operation + * @description The arithmetic operation to apply to the raw metered quantity. + */ + operation: components['schemas']['FeatureUnitConfigOperation'] + /** + * Conversion factor + * @description The factor used in the conversion operation. Must be positive and non-zero. + */ + conversion_factor: components['schemas']['Numeric'] + /** + * Rounding mode + * @description The rounding mode applied to the converted quantity for invoicing. + * @default none + */ + rounding?: components['schemas']['FeatureUnitConfigRoundingMode'] + /** + * Rounding precision + * @description The number of decimal places to retain after rounding. + * @default 0 + */ + precision?: number + /** + * Display unit label + * @description A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens"). + */ + display_unit?: string + } + /** + * @description The arithmetic operation used to convert raw metered units into billing units. + * @enum {string} + */ + FeatureUnitConfigOperation: 'divide' | 'multiply' + /** + * @description The rounding mode applied to the converted quantity for invoicing. + * @enum {string} + */ + FeatureUnitConfigRoundingMode: 'ceiling' | 'floor' | 'half_up' | 'none' /** * @description Per-unit cost configuration for a feature. * Either a fixed manual amount or a dynamic LLM cost lookup. @@ -7104,6 +7161,12 @@ export interface components { * It is non-zero in case of progressive billing, when this shows how much of the usage was already billed. */ readonly meteredPreLinePeriodQuantity?: components['schemas']['Numeric'] + /** + * @description Usage quantity details when UnitConfig is in effect. + * Provides the audit trail from raw meter output to the invoiced amount. + * Only present when a UnitConfig was applied to this line. + */ + readonly usageQuantityDetail?: components['schemas']['InvoiceUsageQuantityDetail'] } /** @description InvoiceLineAmountDiscount represents an amount deducted from the line, and will be applied before taxes. */ InvoiceLineAmountDiscount: { @@ -7668,6 +7731,32 @@ export interface components { /** @description The discounts that are applied to the line. */ discounts?: components['schemas']['BillingDiscounts'] } + /** + * @description Usage quantity details when UnitConfig is in effect. + * Provides the full audit trail from raw meter output to the invoiced amount. + */ + InvoiceUsageQuantityDetail: { + /** + * Raw metered quantity + * @description The raw quantity as reported by the meter (native units). + */ + readonly rawQuantity: components['schemas']['Numeric'] + /** + * Converted quantity (precise) + * @description The precise value after applying conversion, before rounding. + */ + readonly convertedQuantity: components['schemas']['Numeric'] + /** + * Invoiced quantity (rounded) + * @description The quantity after rounding, used for pricing. + */ + readonly invoicedQuantity: components['schemas']['Numeric'] + /** + * Applied unit config + * @description Snapshot of the UnitConfig that was in effect at billing time. + */ + readonly appliedUnitConfig: components['schemas']['FeatureUnitConfig'] + } /** @description InvoiceWorkflowInvoicingSettingsReplaceUpdate represents the update model for the invoicing settings of an invoice workflow. */ InvoiceWorkflowInvoicingSettingsReplaceUpdate: { /** @@ -10180,6 +10269,12 @@ export interface components { * When null, the feature or service is free. */ price: components['schemas']['RateCardUsageBasedPrice'] | null + /** + * Unit config + * @description Optional unit conversion configuration. + * Transforms raw metered quantities into billing-ready units before pricing. + */ + unitConfig?: components['schemas']['FeatureUnitConfig'] /** * Discounts * @description The discounts of the rate card. @@ -12551,6 +12646,11 @@ export type FeatureMeta = components['schemas']['FeatureMeta'] export type FeatureOrderBy = components['schemas']['FeatureOrderBy'] export type FeaturePaginatedResponse = components['schemas']['FeaturePaginatedResponse'] +export type FeatureUnitConfig = components['schemas']['FeatureUnitConfig'] +export type FeatureUnitConfigOperation = + components['schemas']['FeatureUnitConfigOperation'] +export type FeatureUnitConfigRoundingMode = + components['schemas']['FeatureUnitConfigRoundingMode'] export type FeatureUnitCost = components['schemas']['FeatureUnitCost'] export type FilterIdExact = components['schemas']['FilterIDExact'] export type FilterString = components['schemas']['FilterString'] @@ -12642,6 +12742,8 @@ export type InvoiceTotals = components['schemas']['InvoiceTotals'] export type InvoiceType = components['schemas']['InvoiceType'] export type InvoiceUsageBasedRateCard = components['schemas']['InvoiceUsageBasedRateCard'] +export type InvoiceUsageQuantityDetail = + components['schemas']['InvoiceUsageQuantityDetail'] export type InvoiceWorkflowInvoicingSettingsReplaceUpdate = components['schemas']['InvoiceWorkflowInvoicingSettingsReplaceUpdate'] export type InvoiceWorkflowReplaceUpdate = diff --git a/api/client/javascript/src/zod/index.ts b/api/client/javascript/src/zod/index.ts index 382b7db3dc..aa8972c1b3 100644 --- a/api/client/javascript/src/zod/index.ts +++ b/api/client/javascript/src/zod/index.ts @@ -222,6 +222,12 @@ export const createAddonBodyRateCardsItemTwoPriceOneFiveMinimumAmountOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ export const createAddonBodyRateCardsItemTwoPriceOneFiveMaximumAmountOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ +export const createAddonBodyRateCardsItemTwoUnitConfigOneConversionFactorOneRegExp = + /^-?[0-9]+(\.[0-9]+)?$/ +export const createAddonBodyRateCardsItemTwoUnitConfigOneRoundingDefault = + 'none' as const +export const createAddonBodyRateCardsItemTwoUnitConfigOnePrecisionDefault = + 0 as const export const createAddonBodyRateCardsItemTwoDiscountsOneUsageOneQuantityOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ @@ -1035,6 +1041,60 @@ export const CreateAddonBody = zod type: zod .enum(['usage_based']) .describe('The type of the RateCard.'), + unitConfig: zod + .object({ + conversion_factor: zod.coerce + .string() + .regex( + createAddonBodyRateCardsItemTwoUnitConfigOneConversionFactorOneRegExp, + ) + .describe( + 'Numeric represents an arbitrary precision number.', + ) + .describe( + 'The factor used in the conversion operation. Must be positive and non-zero.', + ), + display_unit: zod.coerce + .string() + .optional() + .describe( + 'A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens").', + ), + operation: zod + .enum(['divide', 'multiply']) + .describe( + 'The arithmetic operation used to convert raw metered units into billing units.', + ) + .describe( + 'The arithmetic operation to apply to the raw metered quantity.', + ), + precision: zod.coerce + .number() + .default( + createAddonBodyRateCardsItemTwoUnitConfigOnePrecisionDefault, + ) + .describe( + 'The number of decimal places to retain after rounding.', + ), + rounding: zod + .enum(['ceiling', 'floor', 'half_up', 'none']) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ) + .default( + createAddonBodyRateCardsItemTwoUnitConfigOneRoundingDefault, + ) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ), + }) + .describe( + 'Unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ) + .optional() + .describe( + 'Optional unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ), }) .describe( 'A usage-based rate card defines a price based on usage.', @@ -1158,6 +1218,12 @@ export const updateAddonBodyRateCardsItemTwoPriceOneFiveMinimumAmountOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ export const updateAddonBodyRateCardsItemTwoPriceOneFiveMaximumAmountOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ +export const updateAddonBodyRateCardsItemTwoUnitConfigOneConversionFactorOneRegExp = + /^-?[0-9]+(\.[0-9]+)?$/ +export const updateAddonBodyRateCardsItemTwoUnitConfigOneRoundingDefault = + 'none' as const +export const updateAddonBodyRateCardsItemTwoUnitConfigOnePrecisionDefault = + 0 as const export const updateAddonBodyRateCardsItemTwoDiscountsOneUsageOneQuantityOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ @@ -1955,6 +2021,60 @@ export const UpdateAddonBody = zod type: zod .enum(['usage_based']) .describe('The type of the RateCard.'), + unitConfig: zod + .object({ + conversion_factor: zod.coerce + .string() + .regex( + updateAddonBodyRateCardsItemTwoUnitConfigOneConversionFactorOneRegExp, + ) + .describe( + 'Numeric represents an arbitrary precision number.', + ) + .describe( + 'The factor used in the conversion operation. Must be positive and non-zero.', + ), + display_unit: zod.coerce + .string() + .optional() + .describe( + 'A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens").', + ), + operation: zod + .enum(['divide', 'multiply']) + .describe( + 'The arithmetic operation used to convert raw metered units into billing units.', + ) + .describe( + 'The arithmetic operation to apply to the raw metered quantity.', + ), + precision: zod.coerce + .number() + .default( + updateAddonBodyRateCardsItemTwoUnitConfigOnePrecisionDefault, + ) + .describe( + 'The number of decimal places to retain after rounding.', + ), + rounding: zod + .enum(['ceiling', 'floor', 'half_up', 'none']) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ) + .default( + updateAddonBodyRateCardsItemTwoUnitConfigOneRoundingDefault, + ) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ), + }) + .describe( + 'Unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ) + .optional() + .describe( + 'Optional unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ), }) .describe( 'A usage-based rate card defines a price based on usage.', @@ -8348,6 +8468,10 @@ export const createFeatureBodyUnitCostOneTwoPricingOneReasoningPerTokenOneRegExp /^-?[0-9]+(\.[0-9]+)?$/ export const createFeatureBodyUnitCostOneTwoPricingOneCacheWritePerTokenOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ +export const createFeatureBodyUnitConfigOneConversionFactorOneRegExp = + /^-?[0-9]+(\.[0-9]+)?$/ +export const createFeatureBodyUnitConfigOneRoundingDefault = 'none' as const +export const createFeatureBodyUnitConfigOnePrecisionDefault = 0 as const export const CreateFeatureBody = zod .object({ @@ -8463,6 +8587,50 @@ export const CreateFeatureBody = zod 'A key is a unique string that is used to identify a resource.', ), name: zod.coerce.string(), + unitConfig: zod + .object({ + conversion_factor: zod.coerce + .string() + .regex(createFeatureBodyUnitConfigOneConversionFactorOneRegExp) + .describe('Numeric represents an arbitrary precision number.') + .describe( + 'The factor used in the conversion operation. Must be positive and non-zero.', + ), + display_unit: zod.coerce + .string() + .optional() + .describe( + 'A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens").', + ), + operation: zod + .enum(['divide', 'multiply']) + .describe( + 'The arithmetic operation used to convert raw metered units into billing units.', + ) + .describe( + 'The arithmetic operation to apply to the raw metered quantity.', + ), + precision: zod.coerce + .number() + .default(createFeatureBodyUnitConfigOnePrecisionDefault) + .describe('The number of decimal places to retain after rounding.'), + rounding: zod + .enum(['ceiling', 'floor', 'half_up', 'none']) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ) + .default(createFeatureBodyUnitConfigOneRoundingDefault) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ), + }) + .describe( + 'Unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ) + .optional() + .describe( + 'Optional unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.\nExample: divide by 1e9 to convert bytes to GB, or multiply by 1.2 for a 20% margin.', + ), unitCost: zod .union([ zod @@ -10494,6 +10662,12 @@ export const createPlanBodyPhasesItemRateCardsItemTwoPriceOneFiveMinimumAmountOn /^-?[0-9]+(\.[0-9]+)?$/ export const createPlanBodyPhasesItemRateCardsItemTwoPriceOneFiveMaximumAmountOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ +export const createPlanBodyPhasesItemRateCardsItemTwoUnitConfigOneConversionFactorOneRegExp = + /^-?[0-9]+(\.[0-9]+)?$/ +export const createPlanBodyPhasesItemRateCardsItemTwoUnitConfigOneRoundingDefault = + 'none' as const +export const createPlanBodyPhasesItemRateCardsItemTwoUnitConfigOnePrecisionDefault = + 0 as const export const createPlanBodyPhasesItemRateCardsItemTwoDiscountsOneUsageOneQuantityOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ @@ -11397,6 +11571,60 @@ export const CreatePlanBody = zod type: zod .enum(['usage_based']) .describe('The type of the RateCard.'), + unitConfig: zod + .object({ + conversion_factor: zod.coerce + .string() + .regex( + createPlanBodyPhasesItemRateCardsItemTwoUnitConfigOneConversionFactorOneRegExp, + ) + .describe( + 'Numeric represents an arbitrary precision number.', + ) + .describe( + 'The factor used in the conversion operation. Must be positive and non-zero.', + ), + display_unit: zod.coerce + .string() + .optional() + .describe( + 'A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens").', + ), + operation: zod + .enum(['divide', 'multiply']) + .describe( + 'The arithmetic operation used to convert raw metered units into billing units.', + ) + .describe( + 'The arithmetic operation to apply to the raw metered quantity.', + ), + precision: zod.coerce + .number() + .default( + createPlanBodyPhasesItemRateCardsItemTwoUnitConfigOnePrecisionDefault, + ) + .describe( + 'The number of decimal places to retain after rounding.', + ), + rounding: zod + .enum(['ceiling', 'floor', 'half_up', 'none']) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ) + .default( + createPlanBodyPhasesItemRateCardsItemTwoUnitConfigOneRoundingDefault, + ) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ), + }) + .describe( + 'Unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ) + .optional() + .describe( + 'Optional unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ), }) .describe( 'A usage-based rate card defines a price based on usage.', @@ -11583,6 +11811,12 @@ export const updatePlanBodyPhasesItemRateCardsItemTwoPriceOneFiveMinimumAmountOn /^-?[0-9]+(\.[0-9]+)?$/ export const updatePlanBodyPhasesItemRateCardsItemTwoPriceOneFiveMaximumAmountOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ +export const updatePlanBodyPhasesItemRateCardsItemTwoUnitConfigOneConversionFactorOneRegExp = + /^-?[0-9]+(\.[0-9]+)?$/ +export const updatePlanBodyPhasesItemRateCardsItemTwoUnitConfigOneRoundingDefault = + 'none' as const +export const updatePlanBodyPhasesItemRateCardsItemTwoUnitConfigOnePrecisionDefault = + 0 as const export const updatePlanBodyPhasesItemRateCardsItemTwoDiscountsOneUsageOneQuantityOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ @@ -12470,6 +12704,60 @@ export const UpdatePlanBody = zod type: zod .enum(['usage_based']) .describe('The type of the RateCard.'), + unitConfig: zod + .object({ + conversion_factor: zod.coerce + .string() + .regex( + updatePlanBodyPhasesItemRateCardsItemTwoUnitConfigOneConversionFactorOneRegExp, + ) + .describe( + 'Numeric represents an arbitrary precision number.', + ) + .describe( + 'The factor used in the conversion operation. Must be positive and non-zero.', + ), + display_unit: zod.coerce + .string() + .optional() + .describe( + 'A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens").', + ), + operation: zod + .enum(['divide', 'multiply']) + .describe( + 'The arithmetic operation used to convert raw metered units into billing units.', + ) + .describe( + 'The arithmetic operation to apply to the raw metered quantity.', + ), + precision: zod.coerce + .number() + .default( + updatePlanBodyPhasesItemRateCardsItemTwoUnitConfigOnePrecisionDefault, + ) + .describe( + 'The number of decimal places to retain after rounding.', + ), + rounding: zod + .enum(['ceiling', 'floor', 'half_up', 'none']) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ) + .default( + updatePlanBodyPhasesItemRateCardsItemTwoUnitConfigOneRoundingDefault, + ) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ), + }) + .describe( + 'Unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ) + .optional() + .describe( + 'Optional unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ), }) .describe( 'A usage-based rate card defines a price based on usage.', @@ -14376,6 +14664,12 @@ export const createSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwo /^-?[0-9]+(\.[0-9]+)?$/ export const createSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoPriceOneFiveMaximumAmountOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ +export const createSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoUnitConfigOneConversionFactorOneRegExp = + /^-?[0-9]+(\.[0-9]+)?$/ +export const createSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoUnitConfigOneRoundingDefault = + 'none' as const +export const createSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoUnitConfigOnePrecisionDefault = + 0 as const export const createSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoDiscountsOneUsageOneQuantityOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ @@ -15465,6 +15759,65 @@ export const CreateSubscriptionBody = zod type: zod .enum(['usage_based']) .describe('The type of the RateCard.'), + unitConfig: zod + .object({ + conversion_factor: zod.coerce + .string() + .regex( + createSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoUnitConfigOneConversionFactorOneRegExp, + ) + .describe( + 'Numeric represents an arbitrary precision number.', + ) + .describe( + 'The factor used in the conversion operation. Must be positive and non-zero.', + ), + display_unit: zod.coerce + .string() + .optional() + .describe( + 'A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens").', + ), + operation: zod + .enum(['divide', 'multiply']) + .describe( + 'The arithmetic operation used to convert raw metered units into billing units.', + ) + .describe( + 'The arithmetic operation to apply to the raw metered quantity.', + ), + precision: zod.coerce + .number() + .default( + createSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoUnitConfigOnePrecisionDefault, + ) + .describe( + 'The number of decimal places to retain after rounding.', + ), + rounding: zod + .enum([ + 'ceiling', + 'floor', + 'half_up', + 'none', + ]) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ) + .default( + createSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoUnitConfigOneRoundingDefault, + ) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ), + }) + .describe( + 'Unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ) + .optional() + .describe( + 'Optional unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ), }) .describe( 'A usage-based rate card defines a price based on usage.', @@ -15682,6 +16035,12 @@ export const editSubscriptionBodyCustomizationsItemOneRateCardTwoPriceOneFiveMin /^-?[0-9]+(\.[0-9]+)?$/ export const editSubscriptionBodyCustomizationsItemOneRateCardTwoPriceOneFiveMaximumAmountOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ +export const editSubscriptionBodyCustomizationsItemOneRateCardTwoUnitConfigOneConversionFactorOneRegExp = + /^-?[0-9]+(\.[0-9]+)?$/ +export const editSubscriptionBodyCustomizationsItemOneRateCardTwoUnitConfigOneRoundingDefault = + 'none' as const +export const editSubscriptionBodyCustomizationsItemOneRateCardTwoUnitConfigOnePrecisionDefault = + 0 as const export const editSubscriptionBodyCustomizationsItemOneRateCardTwoDiscountsOneUsageOneQuantityOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ export const editSubscriptionBodyCustomizationsItemThreePhaseDiscountsOneUsageOneQuantityOneRegExp = @@ -16518,6 +16877,60 @@ export const EditSubscriptionBody = zod type: zod .enum(['usage_based']) .describe('The type of the RateCard.'), + unitConfig: zod + .object({ + conversion_factor: zod.coerce + .string() + .regex( + editSubscriptionBodyCustomizationsItemOneRateCardTwoUnitConfigOneConversionFactorOneRegExp, + ) + .describe( + 'Numeric represents an arbitrary precision number.', + ) + .describe( + 'The factor used in the conversion operation. Must be positive and non-zero.', + ), + display_unit: zod.coerce + .string() + .optional() + .describe( + 'A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens").', + ), + operation: zod + .enum(['divide', 'multiply']) + .describe( + 'The arithmetic operation used to convert raw metered units into billing units.', + ) + .describe( + 'The arithmetic operation to apply to the raw metered quantity.', + ), + precision: zod.coerce + .number() + .default( + editSubscriptionBodyCustomizationsItemOneRateCardTwoUnitConfigOnePrecisionDefault, + ) + .describe( + 'The number of decimal places to retain after rounding.', + ), + rounding: zod + .enum(['ceiling', 'floor', 'half_up', 'none']) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ) + .default( + editSubscriptionBodyCustomizationsItemOneRateCardTwoUnitConfigOneRoundingDefault, + ) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ), + }) + .describe( + 'Unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ) + .optional() + .describe( + 'Optional unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ), }) .describe( 'A usage-based rate card defines a price based on usage.', @@ -17056,6 +17469,12 @@ export const changeSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwo /^-?[0-9]+(\.[0-9]+)?$/ export const changeSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoPriceOneFiveMaximumAmountOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ +export const changeSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoUnitConfigOneConversionFactorOneRegExp = + /^-?[0-9]+(\.[0-9]+)?$/ +export const changeSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoUnitConfigOneRoundingDefault = + 'none' as const +export const changeSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoUnitConfigOnePrecisionDefault = + 0 as const export const changeSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoDiscountsOneUsageOneQuantityOneRegExp = /^-?[0-9]+(\.[0-9]+)?$/ @@ -18113,6 +18532,65 @@ export const ChangeSubscriptionBody = zod type: zod .enum(['usage_based']) .describe('The type of the RateCard.'), + unitConfig: zod + .object({ + conversion_factor: zod.coerce + .string() + .regex( + changeSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoUnitConfigOneConversionFactorOneRegExp, + ) + .describe( + 'Numeric represents an arbitrary precision number.', + ) + .describe( + 'The factor used in the conversion operation. Must be positive and non-zero.', + ), + display_unit: zod.coerce + .string() + .optional() + .describe( + 'A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens").', + ), + operation: zod + .enum(['divide', 'multiply']) + .describe( + 'The arithmetic operation used to convert raw metered units into billing units.', + ) + .describe( + 'The arithmetic operation to apply to the raw metered quantity.', + ), + precision: zod.coerce + .number() + .default( + changeSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoUnitConfigOnePrecisionDefault, + ) + .describe( + 'The number of decimal places to retain after rounding.', + ), + rounding: zod + .enum([ + 'ceiling', + 'floor', + 'half_up', + 'none', + ]) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ) + .default( + changeSubscriptionBodyTwoCustomPlanOneOnePhasesItemRateCardsItemTwoUnitConfigOneRoundingDefault, + ) + .describe( + 'The rounding mode applied to the converted quantity for invoicing.', + ), + }) + .describe( + 'Unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ) + .optional() + .describe( + 'Optional unit conversion configuration.\nTransforms raw metered quantities into billing-ready units before pricing.', + ), }) .describe( 'A usage-based rate card defines a price based on usage.', diff --git a/api/client/python/openmeter/_generated/models/__init__.py b/api/client/python/openmeter/_generated/models/__init__.py index 00283be2d4..dd39a81d78 100644 --- a/api/client/python/openmeter/_generated/models/__init__.py +++ b/api/client/python/openmeter/_generated/models/__init__.py @@ -131,6 +131,7 @@ FeatureManualUnitCost, FeatureMeta, FeaturePaginatedResponse, + FeatureUnitConfig, FilterIDExact, FilterString, FilterTime, @@ -175,6 +176,7 @@ InvoiceStatusDetails, InvoiceTotals, InvoiceUsageBasedRateCard, + InvoiceUsageQuantityDetail, InvoiceWorkflowInvoicingSettingsReplaceUpdate, InvoiceWorkflowReplaceUpdate, InvoiceWorkflowSettings, @@ -333,6 +335,8 @@ EntitlementType, ExpirationDuration, FeatureOrderBy, + FeatureUnitConfigOperation, + FeatureUnitConfigRoundingMode, FeatureUnitCostType, GrantOrderBy, InstallMethod, @@ -505,6 +509,7 @@ "FeatureManualUnitCost", "FeatureMeta", "FeaturePaginatedResponse", + "FeatureUnitConfig", "FilterIDExact", "FilterString", "FilterTime", @@ -549,6 +554,7 @@ "InvoiceStatusDetails", "InvoiceTotals", "InvoiceUsageBasedRateCard", + "InvoiceUsageQuantityDetail", "InvoiceWorkflowInvoicingSettingsReplaceUpdate", "InvoiceWorkflowReplaceUpdate", "InvoiceWorkflowSettings", @@ -704,6 +710,8 @@ "EntitlementType", "ExpirationDuration", "FeatureOrderBy", + "FeatureUnitConfigOperation", + "FeatureUnitConfigRoundingMode", "FeatureUnitCostType", "GrantOrderBy", "InstallMethod", diff --git a/api/client/python/openmeter/_generated/models/_enums.py b/api/client/python/openmeter/_generated/models/_enums.py index 63e57694fe..9b7320289d 100644 --- a/api/client/python/openmeter/_generated/models/_enums.py +++ b/api/client/python/openmeter/_generated/models/_enums.py @@ -359,6 +359,28 @@ class FeatureOrderBy(str, Enum, metaclass=CaseInsensitiveEnumMeta): """UPDATED_AT.""" +class FeatureUnitConfigOperation(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The arithmetic operation used to convert raw metered units into billing units.""" + + DIVIDE = "divide" + """DIVIDE.""" + MULTIPLY = "multiply" + """MULTIPLY.""" + + +class FeatureUnitConfigRoundingMode(str, Enum, metaclass=CaseInsensitiveEnumMeta): + """The rounding mode applied to the converted quantity for invoicing.""" + + CEILING = "ceiling" + """CEILING.""" + FLOOR = "floor" + """FLOOR.""" + HALF_UP = "half_up" + """HALF_UP.""" + NONE = "none" + """NONE.""" + + class FeatureUnitCostType(str, Enum, metaclass=CaseInsensitiveEnumMeta): """The type of unit cost.""" diff --git a/api/client/python/openmeter/_generated/models/_models.py b/api/client/python/openmeter/_generated/models/_models.py index 28c35c7c8a..00537eb3c9 100644 --- a/api/client/python/openmeter/_generated/models/_models.py +++ b/api/client/python/openmeter/_generated/models/_models.py @@ -6392,6 +6392,8 @@ class Feature(_Model): type. :vartype unit_cost: ~openmeter._generated.models.FeatureManualUnitCost or ~openmeter._generated.models.FeatureLLMUnitCost + :ivar unit_config: Unit config. + :vartype unit_config: ~openmeter._generated.models.FeatureUnitConfig :ivar id: Readonly unique ULID identifier. Required. :vartype id: str """ @@ -6424,6 +6426,10 @@ class Feature(_Model): name="unitCost", visibility=["read", "create", "update", "delete", "query"] ) """Unit cost. Is either a FeatureManualUnitCost type or a FeatureLLMUnitCost type.""" + unit_config: Optional["_models.FeatureUnitConfig"] = rest_field( + name="unitConfig", visibility=["read", "create", "update", "delete", "query"] + ) + """Unit config.""" id: str = rest_field(visibility=["read"]) """Readonly unique ULID identifier. Required.""" @@ -6438,6 +6444,7 @@ def __init__( meter_group_by_filters: Optional[dict[str, str]] = None, advanced_meter_group_by_filters: Optional[dict[str, "_models.FilterString"]] = None, unit_cost: Optional["_types.FeatureUnitCost"] = None, + unit_config: Optional["_models.FeatureUnitConfig"] = None, ) -> None: ... @overload @@ -6471,6 +6478,8 @@ class FeatureCreateInputs(_Model): type. :vartype unit_cost: ~openmeter._generated.models.FeatureManualUnitCost or ~openmeter._generated.models.FeatureLLMUnitCost + :ivar unit_config: Unit config. + :vartype unit_config: ~openmeter._generated.models.FeatureUnitConfig """ key: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) @@ -6493,6 +6502,10 @@ class FeatureCreateInputs(_Model): name="unitCost", visibility=["read", "create", "update", "delete", "query"] ) """Unit cost. Is either a FeatureManualUnitCost type or a FeatureLLMUnitCost type.""" + unit_config: Optional["_models.FeatureUnitConfig"] = rest_field( + name="unitConfig", visibility=["read", "create", "update", "delete", "query"] + ) + """Unit config.""" @overload def __init__( @@ -6505,6 +6518,7 @@ def __init__( meter_group_by_filters: Optional[dict[str, str]] = None, advanced_meter_group_by_filters: Optional[dict[str, "_models.FilterString"]] = None, unit_cost: Optional["_types.FeatureUnitCost"] = None, + unit_config: Optional["_models.FeatureUnitConfig"] = None, ) -> None: ... @overload @@ -6754,6 +6768,59 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class FeatureUnitConfig(_Model): + """Unit conversion configuration. Transforms raw metered quantities into billing-ready units + before pricing. + + :ivar operation: Conversion operation. Required. Known values are: "divide" and "multiply". + :vartype operation: str or ~openmeter.models.FeatureUnitConfigOperation + :ivar conversion_factor: Conversion factor. Required. + :vartype conversion_factor: str + :ivar rounding: Rounding mode. Known values are: "ceiling", "floor", "half_up", and "none". + :vartype rounding: str or ~openmeter.models.FeatureUnitConfigRoundingMode + :ivar precision: Rounding precision. + :vartype precision: int + :ivar display_unit: Display unit label. + :vartype display_unit: str + """ + + operation: Union[str, "_models.FeatureUnitConfigOperation"] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Conversion operation. Required. Known values are: \"divide\" and \"multiply\".""" + conversion_factor: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Conversion factor. Required.""" + rounding: Optional[Union[str, "_models.FeatureUnitConfigRoundingMode"]] = rest_field( + visibility=["read", "create", "update", "delete", "query"] + ) + """Rounding mode. Known values are: \"ceiling\", \"floor\", \"half_up\", and \"none\".""" + precision: Optional[int] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Rounding precision.""" + display_unit: Optional[str] = rest_field(visibility=["read", "create", "update", "delete", "query"]) + """Display unit label.""" + + @overload + def __init__( + self, + *, + operation: Union[str, "_models.FeatureUnitConfigOperation"], + conversion_factor: str, + rounding: Optional[Union[str, "_models.FeatureUnitConfigRoundingMode"]] = None, + precision: Optional[int] = None, + display_unit: Optional[str] = None, + ) -> None: ... + + @overload + def __init__(self, mapping: Mapping[str, Any]) -> None: + """ + :param mapping: raw JSON to initialize the model. + :type mapping: Mapping[str, Any] + """ + + def __init__(self, *args: Any, **kwargs: Any) -> None: + super().__init__(*args, **kwargs) + + class FilterIDExact(_Model): """A filter for a ID (ULID) field allowing only equality or inclusion. @@ -8013,6 +8080,10 @@ class InvoiceLine(_Model): It is non-zero in case of progressive billing, when this shows how much of the usage was already billed. :vartype metered_pre_line_period_quantity: str + :ivar usage_quantity_detail: Usage quantity details when UnitConfig is in effect. Provides the + audit trail from raw meter output to the invoiced amount. Only present when a UnitConfig was + applied to this line. + :vartype usage_quantity_detail: ~openmeter._generated.models.InvoiceUsageQuantityDetail """ name: str = rest_field(visibility=["read", "create", "update", "delete", "query"]) @@ -8103,6 +8174,11 @@ class InvoiceLine(_Model): It is non-zero in case of progressive billing, when this shows how much of the usage was already billed.""" + usage_quantity_detail: Optional["_models.InvoiceUsageQuantityDetail"] = rest_field( + name="usageQuantityDetail", visibility=["read"] + ) + """Usage quantity details when UnitConfig is in effect. Provides the audit trail from raw meter + output to the invoiced amount. Only present when a UnitConfig was applied to this line.""" @overload def __init__( # pylint: disable=too-many-locals @@ -9123,6 +9199,30 @@ def __init__(self, *args: Any, **kwargs: Any) -> None: super().__init__(*args, **kwargs) +class InvoiceUsageQuantityDetail(_Model): + """Usage quantity details when UnitConfig is in effect. Provides the full audit trail from raw + meter output to the invoiced amount. + + :ivar raw_quantity: Raw metered quantity. Required. + :vartype raw_quantity: str + :ivar converted_quantity: Converted quantity (precise). Required. + :vartype converted_quantity: str + :ivar invoiced_quantity: Invoiced quantity (rounded). Required. + :vartype invoiced_quantity: str + :ivar applied_unit_config: Applied unit config. Required. + :vartype applied_unit_config: ~openmeter._generated.models.FeatureUnitConfig + """ + + raw_quantity: str = rest_field(name="rawQuantity", visibility=["read"]) + """Raw metered quantity. Required.""" + converted_quantity: str = rest_field(name="convertedQuantity", visibility=["read"]) + """Converted quantity (precise). Required.""" + invoiced_quantity: str = rest_field(name="invoicedQuantity", visibility=["read"]) + """Invoiced quantity (rounded). Required.""" + applied_unit_config: "_models.FeatureUnitConfig" = rest_field(name="appliedUnitConfig", visibility=["read"]) + """Applied unit config. Required.""" + + class InvoiceWorkflowInvoicingSettingsReplaceUpdate(_Model): # pylint: disable=name-too-long """InvoiceWorkflowInvoicingSettingsReplaceUpdate represents the update model for the invoicing settings of an invoice workflow. @@ -12696,6 +12796,8 @@ class RateCardUsageBased(_Model): ~openmeter._generated.models.TieredPriceWithCommitments or ~openmeter._generated.models.DynamicPriceWithCommitments or ~openmeter._generated.models.PackagePriceWithCommitments + :ivar unit_config: Unit config. + :vartype unit_config: ~openmeter._generated.models.FeatureUnitConfig :ivar discounts: Discounts. :vartype discounts: ~openmeter._generated.models.Discounts """ @@ -12726,6 +12828,10 @@ class RateCardUsageBased(_Model): """The price of the rate card. When null, the feature or service is free. Required. Is one of the following types: FlatPriceWithPaymentTerm, UnitPriceWithCommitments, TieredPriceWithCommitments, DynamicPriceWithCommitments, PackagePriceWithCommitments""" + unit_config: Optional["_models.FeatureUnitConfig"] = rest_field( + name="unitConfig", visibility=["read", "create", "update", "delete", "query"] + ) + """Unit config.""" discounts: Optional["_models.Discounts"] = rest_field(visibility=["read", "create", "update", "delete", "query"]) """Discounts.""" @@ -12743,6 +12849,7 @@ def __init__( feature_key: Optional[str] = None, entitlement_template: Optional["_types.RateCardEntitlement"] = None, tax_config: Optional["_models.TaxConfig"] = None, + unit_config: Optional["_models.FeatureUnitConfig"] = None, discounts: Optional["_models.Discounts"] = None, ) -> None: ... diff --git a/api/openapi.cloud.yaml b/api/openapi.cloud.yaml index 651c6ebd1c..03556cb159 100644 --- a/api/openapi.cloud.yaml +++ b/api/openapi.cloud.yaml @@ -17475,6 +17475,14 @@ components: Use "manual" for a fixed per-unit cost, or "llm" to look up cost from the LLM cost database based on meter group-by properties. title: Unit cost + unitConfig: + allOf: + - $ref: '#/components/schemas/FeatureUnitConfig' + description: |- + Optional unit conversion configuration. + Transforms raw metered quantities into billing-ready units before pricing. + Example: divide by 1e9 to convert bytes to GB, or multiply by 1.2 for a 20% margin. + title: Unit config id: type: string pattern: ^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$ @@ -17553,6 +17561,14 @@ components: Use "manual" for a fixed per-unit cost, or "llm" to look up cost from the LLM cost database based on meter group-by properties. title: Unit cost + unitConfig: + allOf: + - $ref: '#/components/schemas/FeatureUnitConfig' + description: |- + Optional unit conversion configuration. + Transforms raw metered quantities into billing-ready units before pricing. + Example: divide by 1e9 to convert bytes to GB, or multiply by 1.2 for a 20% margin. + title: Unit config description: |- Represents a feature that can be enabled or disabled for a plan. Used both for product catalog and entitlements. @@ -17723,6 +17739,54 @@ components: $ref: '#/components/schemas/Feature' description: The items in the current page. description: Paginated response + FeatureUnitConfig: + type: object + required: + - operation + - conversion_factor + properties: + operation: + allOf: + - $ref: '#/components/schemas/FeatureUnitConfigOperation' + description: The arithmetic operation to apply to the raw metered quantity. + title: Conversion operation + conversion_factor: + allOf: + - $ref: '#/components/schemas/Numeric' + description: The factor used in the conversion operation. Must be positive and non-zero. + title: Conversion factor + rounding: + allOf: + - $ref: '#/components/schemas/FeatureUnitConfigRoundingMode' + description: The rounding mode applied to the converted quantity for invoicing. + title: Rounding mode + default: none + precision: + type: integer + description: The number of decimal places to retain after rounding. + title: Rounding precision + default: 0 + display_unit: + type: string + description: A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens"). + title: Display unit label + description: |- + Unit conversion configuration. + Transforms raw metered quantities into billing-ready units before pricing. + FeatureUnitConfigOperation: + type: string + enum: + - divide + - multiply + description: The arithmetic operation used to convert raw metered units into billing units. + FeatureUnitConfigRoundingMode: + type: string + enum: + - ceiling + - floor + - half_up + - none + description: The rounding mode applied to the converted quantity for invoicing. FeatureUnitCost: type: object oneOf: @@ -18880,6 +18944,14 @@ components: It is non-zero in case of progressive billing, when this shows how much of the usage was already billed. readOnly: true + usageQuantityDetail: + allOf: + - $ref: '#/components/schemas/InvoiceUsageQuantityDetail' + description: |- + Usage quantity details when UnitConfig is in effect. + Provides the audit trail from raw meter output to the invoiced amount. + Only present when a UnitConfig was applied to this line. + readOnly: true description: InvoiceUsageBasedLine represents a line item that is sold to the customer based on usage. InvoiceLineAmountDiscount: type: object @@ -19694,6 +19766,41 @@ components: - $ref: '#/components/schemas/BillingDiscounts' description: The discounts that are applied to the line. description: InvoiceUsageBasedRateCard represents the rate card (intent) for an usage-based line. + InvoiceUsageQuantityDetail: + type: object + required: + - rawQuantity + - convertedQuantity + - invoicedQuantity + - appliedUnitConfig + properties: + rawQuantity: + allOf: + - $ref: '#/components/schemas/Numeric' + description: The raw quantity as reported by the meter (native units). + title: Raw metered quantity + readOnly: true + convertedQuantity: + allOf: + - $ref: '#/components/schemas/Numeric' + description: The precise value after applying conversion, before rounding. + title: Converted quantity (precise) + readOnly: true + invoicedQuantity: + allOf: + - $ref: '#/components/schemas/Numeric' + description: The quantity after rounding, used for pricing. + title: Invoiced quantity (rounded) + readOnly: true + appliedUnitConfig: + allOf: + - $ref: '#/components/schemas/FeatureUnitConfig' + description: Snapshot of the UnitConfig that was in effect at billing time. + title: Applied unit config + readOnly: true + description: |- + Usage quantity details when UnitConfig is in effect. + Provides the full audit trail from raw meter output to the invoiced amount. InvoiceWorkflowInvoicingSettingsReplaceUpdate: type: object properties: @@ -22955,6 +23062,13 @@ components: description: |- The price of the rate card. When null, the feature or service is free. + unitConfig: + allOf: + - $ref: '#/components/schemas/FeatureUnitConfig' + description: |- + Optional unit conversion configuration. + Transforms raw metered quantities into billing-ready units before pricing. + title: Unit config discounts: allOf: - $ref: '#/components/schemas/Discounts' diff --git a/api/openapi.yaml b/api/openapi.yaml index b08e94e3af..8526ecb281 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -17849,6 +17849,14 @@ components: Use "manual" for a fixed per-unit cost, or "llm" to look up cost from the LLM cost database based on meter group-by properties. title: Unit cost + unitConfig: + allOf: + - $ref: '#/components/schemas/FeatureUnitConfig' + description: |- + Optional unit conversion configuration. + Transforms raw metered quantities into billing-ready units before pricing. + Example: divide by 1e9 to convert bytes to GB, or multiply by 1.2 for a 20% margin. + title: Unit config id: type: string pattern: ^[0-7][0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{25}$ @@ -17927,6 +17935,14 @@ components: Use "manual" for a fixed per-unit cost, or "llm" to look up cost from the LLM cost database based on meter group-by properties. title: Unit cost + unitConfig: + allOf: + - $ref: '#/components/schemas/FeatureUnitConfig' + description: |- + Optional unit conversion configuration. + Transforms raw metered quantities into billing-ready units before pricing. + Example: divide by 1e9 to convert bytes to GB, or multiply by 1.2 for a 20% margin. + title: Unit config description: |- Represents a feature that can be enabled or disabled for a plan. Used both for product catalog and entitlements. @@ -18097,6 +18113,54 @@ components: $ref: '#/components/schemas/Feature' description: The items in the current page. description: Paginated response + FeatureUnitConfig: + type: object + required: + - operation + - conversion_factor + properties: + operation: + allOf: + - $ref: '#/components/schemas/FeatureUnitConfigOperation' + description: The arithmetic operation to apply to the raw metered quantity. + title: Conversion operation + conversion_factor: + allOf: + - $ref: '#/components/schemas/Numeric' + description: The factor used in the conversion operation. Must be positive and non-zero. + title: Conversion factor + rounding: + allOf: + - $ref: '#/components/schemas/FeatureUnitConfigRoundingMode' + description: The rounding mode applied to the converted quantity for invoicing. + title: Rounding mode + default: none + precision: + type: integer + description: The number of decimal places to retain after rounding. + title: Rounding precision + default: 0 + display_unit: + type: string + description: A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens"). + title: Display unit label + description: |- + Unit conversion configuration. + Transforms raw metered quantities into billing-ready units before pricing. + FeatureUnitConfigOperation: + type: string + enum: + - divide + - multiply + description: The arithmetic operation used to convert raw metered units into billing units. + FeatureUnitConfigRoundingMode: + type: string + enum: + - ceiling + - floor + - half_up + - none + description: The rounding mode applied to the converted quantity for invoicing. FeatureUnitCost: type: object oneOf: @@ -19421,6 +19485,14 @@ components: It is non-zero in case of progressive billing, when this shows how much of the usage was already billed. readOnly: true + usageQuantityDetail: + allOf: + - $ref: '#/components/schemas/InvoiceUsageQuantityDetail' + description: |- + Usage quantity details when UnitConfig is in effect. + Provides the audit trail from raw meter output to the invoiced amount. + Only present when a UnitConfig was applied to this line. + readOnly: true description: InvoiceUsageBasedLine represents a line item that is sold to the customer based on usage. InvoiceLineAmountDiscount: type: object @@ -20383,6 +20455,41 @@ components: - $ref: '#/components/schemas/BillingDiscounts' description: The discounts that are applied to the line. description: InvoiceUsageBasedRateCard represents the rate card (intent) for an usage-based line. + InvoiceUsageQuantityDetail: + type: object + required: + - rawQuantity + - convertedQuantity + - invoicedQuantity + - appliedUnitConfig + properties: + rawQuantity: + allOf: + - $ref: '#/components/schemas/Numeric' + description: The raw quantity as reported by the meter (native units). + title: Raw metered quantity + readOnly: true + convertedQuantity: + allOf: + - $ref: '#/components/schemas/Numeric' + description: The precise value after applying conversion, before rounding. + title: Converted quantity (precise) + readOnly: true + invoicedQuantity: + allOf: + - $ref: '#/components/schemas/Numeric' + description: The quantity after rounding, used for pricing. + title: Invoiced quantity (rounded) + readOnly: true + appliedUnitConfig: + allOf: + - $ref: '#/components/schemas/FeatureUnitConfig' + description: Snapshot of the UnitConfig that was in effect at billing time. + title: Applied unit config + readOnly: true + description: |- + Usage quantity details when UnitConfig is in effect. + Provides the full audit trail from raw meter output to the invoiced amount. InvoiceWorkflowInvoicingSettingsReplaceUpdate: type: object properties: @@ -23763,6 +23870,13 @@ components: description: |- The price of the rate card. When null, the feature or service is free. + unitConfig: + allOf: + - $ref: '#/components/schemas/FeatureUnitConfig' + description: |- + Optional unit conversion configuration. + Transforms raw metered quantities into billing-ready units before pricing. + title: Unit config discounts: allOf: - $ref: '#/components/schemas/Discounts' diff --git a/api/spec/packages/legacy/src/billing/invoices/invoice.tsp b/api/spec/packages/legacy/src/billing/invoices/invoice.tsp index f3f0f1f0fc..c4e92e6e91 100644 --- a/api/spec/packages/legacy/src/billing/invoices/invoice.tsp +++ b/api/spec/packages/legacy/src/billing/invoices/invoice.tsp @@ -637,6 +637,33 @@ model InvoiceReference { number?: InvoiceNumber; } +/** + * Usage quantity details when UnitConfig is in effect. + * Provides the full audit trail from raw meter output to the invoiced amount. + */ +@friendlyName("InvoiceUsageQuantityDetail") +model InvoiceUsageQuantityDetail { + /** The raw quantity as reported by the meter (native units). */ + @visibility(Lifecycle.Read) + @summary("Raw metered quantity") + rawQuantity: Numeric; + + /** The precise value after applying conversion, before rounding. */ + @visibility(Lifecycle.Read) + @summary("Converted quantity (precise)") + convertedQuantity: Numeric; + + /** The quantity after rounding, used for pricing. */ + @visibility(Lifecycle.Read) + @summary("Invoiced quantity (rounded)") + invoicedQuantity: Numeric; + + /** Snapshot of the UnitConfig that was in effect at billing time. */ + @visibility(Lifecycle.Read) + @summary("Applied unit config") + appliedUnitConfig: FeatureUnitConfig; +} + /** * InvoiceUsageBasedRateCard represents the rate card (intent) for an usage-based line. */ @@ -725,6 +752,14 @@ model InvoiceLine { */ @visibility(Lifecycle.Read) meteredPreLinePeriodQuantity?: Numeric; + + /** + * Usage quantity details when UnitConfig is in effect. + * Provides the audit trail from raw meter output to the invoiced amount. + * Only present when a UnitConfig was applied to this line. + */ + @visibility(Lifecycle.Read) + usageQuantityDetail?: InvoiceUsageQuantityDetail; } /** diff --git a/api/spec/packages/legacy/src/productcatalog/features.tsp b/api/spec/packages/legacy/src/productcatalog/features.tsp index 04edfed635..0edc05cc87 100644 --- a/api/spec/packages/legacy/src/productcatalog/features.tsp +++ b/api/spec/packages/legacy/src/productcatalog/features.tsp @@ -79,6 +79,14 @@ model FeatureCreateInputs { */ @summary("Unit cost") unitCost?: FeatureUnitCost; + + /** + * Optional unit conversion configuration. + * Transforms raw metered quantities into billing-ready units before pricing. + * Example: divide by 1e9 to convert bytes to GB, or multiply by 1.2 for a 20% margin. + */ + @summary("Unit config") + unitConfig?: FeatureUnitConfig; } /** @@ -209,6 +217,56 @@ union FeatureUnitCost { llm: FeatureLLMUnitCost, } +/** + * The arithmetic operation used to convert raw metered units into billing units. + */ +@friendlyName("FeatureUnitConfigOperation") +enum FeatureUnitConfigOperation { + divide: "divide", + multiply: "multiply", +} + +/** + * The rounding mode applied to the converted quantity for invoicing. + */ +@friendlyName("FeatureUnitConfigRoundingMode") +enum FeatureUnitConfigRoundingMode { + ceiling: "ceiling", + floor: "floor", + #suppress "@openmeter/api-spec-legacy/casing" "Use existing values" + half_up: "half_up", + none: "none", +} + +/** + * Unit conversion configuration. + * Transforms raw metered quantities into billing-ready units before pricing. + */ +@friendlyName("FeatureUnitConfig") +model FeatureUnitConfig { + /** The arithmetic operation to apply to the raw metered quantity. */ + @summary("Conversion operation") + operation: FeatureUnitConfigOperation; + + /** The factor used in the conversion operation. Must be positive and non-zero. */ + @summary("Conversion factor") + @encodedName("application/json", "conversion_factor") + conversionFactor: Numeric; + + /** The rounding mode applied to the converted quantity for invoicing. */ + @summary("Rounding mode") + rounding?: FeatureUnitConfigRoundingMode = FeatureUnitConfigRoundingMode.none; + + /** The number of decimal places to retain after rounding. */ + @summary("Rounding precision") + precision?: integer = 0; + + /** A human-readable label for the converted unit (e.g., "GB", "hours", "M tokens"). */ + @summary("Display unit label") + @encodedName("application/json", "display_unit") + displayUnit?: string; +} + /** * List features result */ diff --git a/api/spec/packages/legacy/src/productcatalog/ratecards.tsp b/api/spec/packages/legacy/src/productcatalog/ratecards.tsp index c0abe34b4e..edc8b9207f 100644 --- a/api/spec/packages/legacy/src/productcatalog/ratecards.tsp +++ b/api/spec/packages/legacy/src/productcatalog/ratecards.tsp @@ -150,6 +150,13 @@ model RateCardUsageBased { @visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update) price: RateCardUsageBasedPrice | null; + /** + * Optional unit conversion configuration. + * Transforms raw metered quantities into billing-ready units before pricing. + */ + @summary("Unit config") + unitConfig?: FeatureUnitConfig; + /** * The discounts of the rate card. * diff --git a/openmeter/billing/adapter/gatheringlines.go b/openmeter/billing/adapter/gatheringlines.go index e0cd58bffb..32a4b3551d 100644 --- a/openmeter/billing/adapter/gatheringlines.go +++ b/openmeter/billing/adapter/gatheringlines.go @@ -160,6 +160,10 @@ func (a *adapter) updateGatheringLines(ctx context.Context, lines billing.Gather SetFeatureKey(line.FeatureKey). SetID(line.UBPConfigID) + if line.UnitConfig != nil { + create.SetUnitConfig(line.UnitConfig) + } + return create, nil }, UpsertItems: func(ctx context.Context, tx *db.Client, items []*db.BillingInvoiceUsageBasedLineConfigCreate) error { @@ -307,6 +311,7 @@ func (a *adapter) mapGatheringInvoiceLineFromDB(schemaLevel int, dbLine *db.Bill UBPConfigID: ubpLine.ID, FeatureKey: lo.FromPtr(ubpLine.FeatureKey), Price: lo.FromPtr(ubpLine.Price), + UnitConfig: ubpLine.UnitConfig, }, } diff --git a/openmeter/billing/adapter/stdinvoicelinemapper.go b/openmeter/billing/adapter/stdinvoicelinemapper.go index de17edd3d7..3bccbc989e 100644 --- a/openmeter/billing/adapter/stdinvoicelinemapper.go +++ b/openmeter/billing/adapter/stdinvoicelinemapper.go @@ -128,6 +128,23 @@ func (a *adapter) mapStandardInvoiceLineWithoutReferences(dbLine *db.BillingInvo MeteredQuantity: ubpLine.MeteredQuantity, PreLinePeriodQuantity: ubpLine.PreLinePeriodQuantity, MeteredPreLinePeriodQuantity: ubpLine.MeteredPreLinePeriodQuantity, + UnitConfig: ubpLine.UnitConfig, + } + + // Compute UsageQuantityDetail from persisted UnitConfig and MeteredQuantity + if invoiceLine.UsageBased.UnitConfig != nil && invoiceLine.UsageBased.MeteredQuantity != nil { + rawQty := *invoiceLine.UsageBased.MeteredQuantity + uc := invoiceLine.UsageBased.UnitConfig + convertedQty := uc.Convert(rawQty) + invoicedQty := uc.Round(convertedQty) + + invoiceLine.UsageBased.UsageQuantityDetail = &billing.UsageQuantityDetail{ + RawQuantity: rawQty, + ConvertedQuantity: convertedQty, + InvoicedQuantity: invoicedQty, + DisplayUnit: uc.DisplayUnit, + AppliedUnitConfig: uc.Clone(), + } } if len(dbLine.Edges.LineUsageDiscounts) > 0 { diff --git a/openmeter/billing/adapter/stdinvoicelines.go b/openmeter/billing/adapter/stdinvoicelines.go index b84c7275b3..92e4938ebd 100644 --- a/openmeter/billing/adapter/stdinvoicelines.go +++ b/openmeter/billing/adapter/stdinvoicelines.go @@ -531,6 +531,10 @@ func (a *adapter) upsertUsageBasedConfig(ctx context.Context, lineDiffs entitydi SetNillableMeteredQuantity(line.UsageBased.MeteredQuantity). SetNillableMeteredPreLinePeriodQuantity(line.UsageBased.MeteredPreLinePeriodQuantity) + if line.UsageBased.UnitConfig != nil { + create.SetUnitConfig(line.UsageBased.UnitConfig) + } + return create, nil }, UpsertItems: func(ctx context.Context, tx *db.Client, items []*db.BillingInvoiceUsageBasedLineConfigCreate) error { diff --git a/openmeter/billing/derived.gen.go b/openmeter/billing/derived.gen.go index 49e1ceb204..bb623b8615 100644 --- a/openmeter/billing/derived.gen.go +++ b/openmeter/billing/derived.gen.go @@ -27,6 +27,7 @@ func deriveEqualGatheringLineBase(this, that *GatheringLineBase) bool { deriveEqual_1(this.Subscription, that.Subscription) && ((this.SplitLineGroupID == nil && that.SplitLineGroupID == nil) || (this.SplitLineGroupID != nil && that.SplitLineGroupID != nil && *(this.SplitLineGroupID) == *(that.SplitLineGroupID))) && ((this.ChargeID == nil && that.ChargeID == nil) || (this.ChargeID != nil && that.ChargeID != nil && *(this.ChargeID) == *(that.ChargeID))) && + this.UnitConfig.Equal(that.UnitConfig) && this.UBPConfigID == that.UBPConfigID } @@ -129,7 +130,9 @@ func deriveEqualUsageBasedLine(this, that *UsageBasedLine) bool { ((this.Quantity == nil && that.Quantity == nil) || (this.Quantity != nil && that.Quantity != nil && (*(this.Quantity)).Equal(*(that.Quantity)))) && ((this.MeteredQuantity == nil && that.MeteredQuantity == nil) || (this.MeteredQuantity != nil && that.MeteredQuantity != nil && (*(this.MeteredQuantity)).Equal(*(that.MeteredQuantity)))) && ((this.PreLinePeriodQuantity == nil && that.PreLinePeriodQuantity == nil) || (this.PreLinePeriodQuantity != nil && that.PreLinePeriodQuantity != nil && (*(this.PreLinePeriodQuantity)).Equal(*(that.PreLinePeriodQuantity)))) && - ((this.MeteredPreLinePeriodQuantity == nil && that.MeteredPreLinePeriodQuantity == nil) || (this.MeteredPreLinePeriodQuantity != nil && that.MeteredPreLinePeriodQuantity != nil && (*(this.MeteredPreLinePeriodQuantity)).Equal(*(that.MeteredPreLinePeriodQuantity)))) + ((this.MeteredPreLinePeriodQuantity == nil && that.MeteredPreLinePeriodQuantity == nil) || (this.MeteredPreLinePeriodQuantity != nil && that.MeteredPreLinePeriodQuantity != nil && (*(this.MeteredPreLinePeriodQuantity)).Equal(*(that.MeteredPreLinePeriodQuantity)))) && + this.UnitConfig.Equal(that.UnitConfig) && + deriveEqual_5(this.UsageQuantityDetail, that.UsageQuantityDetail) } // deriveEqual returns whether this and that are equal. @@ -184,7 +187,7 @@ func deriveEqual_3(this, that []CreditApplied) bool { return false } for i := 0; i < len(this); i++ { - if !(deriveEqual_5(&this[i], &that[i])) { + if !(deriveEqual_6(&this[i], &that[i])) { return false } } @@ -201,7 +204,18 @@ func deriveEqual_4(this, that *DiscountReason) bool { } // deriveEqual_5 returns whether this and that are equal. -func deriveEqual_5(this, that *CreditApplied) bool { +func deriveEqual_5(this, that *UsageQuantityDetail) bool { + return (this == nil && that == nil) || + this != nil && that != nil && + this.RawQuantity.Equal(that.RawQuantity) && + this.ConvertedQuantity.Equal(that.ConvertedQuantity) && + this.InvoicedQuantity.Equal(that.InvoicedQuantity) && + ((this.DisplayUnit == nil && that.DisplayUnit == nil) || (this.DisplayUnit != nil && that.DisplayUnit != nil && *(this.DisplayUnit) == *(that.DisplayUnit))) && + this.AppliedUnitConfig.Equal(&that.AppliedUnitConfig) +} + +// deriveEqual_6 returns whether this and that are equal. +func deriveEqual_6(this, that *CreditApplied) bool { return (this == nil && that == nil) || this != nil && that != nil && this.Amount.Equal(that.Amount) && diff --git a/openmeter/billing/gatheringinvoice.go b/openmeter/billing/gatheringinvoice.go index 00fdb9ab7d..8c78fefaa1 100644 --- a/openmeter/billing/gatheringinvoice.go +++ b/openmeter/billing/gatheringinvoice.go @@ -375,6 +375,9 @@ type GatheringLineBase struct { SplitLineGroupID *string `json:"splitLineGroupID,omitempty"` ChargeID *string `json:"chargeId,omitempty"` + // UnitConfig defines unit conversion applied before pricing. Snapshot from rate card. + UnitConfig *productcatalog.UnitConfig `json:"unitConfig,omitempty"` + // TODO: Remove once we have dedicated db field for gathering invoice lines UBPConfigID string `json:"ubpConfigID"` } @@ -717,6 +720,7 @@ func (g GatheringLine) AsNewStandardLine(invoiceID string) (*StandardLine, error UsageBased: &UsageBasedLine{ Price: lo.ToPtr(g.Price), FeatureKey: g.FeatureKey, + UnitConfig: g.UnitConfig, }, SplitLineHierarchy: splitLineHierarchy, diff --git a/openmeter/billing/httpdriver/invoiceline.go b/openmeter/billing/httpdriver/invoiceline.go index a659fe9e1a..7e7de3941b 100644 --- a/openmeter/billing/httpdriver/invoiceline.go +++ b/openmeter/billing/httpdriver/invoiceline.go @@ -224,6 +224,21 @@ func mapTaxConfigToAPI(to *productcatalog.TaxConfig) *api.TaxConfig { return lo.ToPtr(productcataloghttp.FromTaxConfig(*to)) } +func mapUsageQuantityDetailToAPI(ubp *billing.UsageBasedLine) *api.InvoiceUsageQuantityDetail { + if ubp == nil || ubp.UsageQuantityDetail == nil { + return nil + } + + d := ubp.UsageQuantityDetail + + return &api.InvoiceUsageQuantityDetail{ + RawQuantity: d.RawQuantity.String(), + ConvertedQuantity: d.ConvertedQuantity.String(), + InvoicedQuantity: d.InvoicedQuantity.String(), + AppliedUnitConfig: productcataloghttp.FromUnitConfig(d.AppliedUnitConfig), + } +} + func mapDetailedLinesToAPI(lines billing.DetailedLines, invoiceAt time.Time) (*[]api.InvoiceDetailedLine, error) { mappedLines, err := slicesx.MapWithErr(lines, func(line billing.DetailedLine) (api.InvoiceDetailedLine, error) { return mapDetailedLineToAPI(line, invoiceAt) @@ -374,9 +389,10 @@ func mapInvoiceLineToAPI(line *billing.StandardLine) (api.InvoiceLine, error) { FeatureKey: lo.EmptyableToPtr(line.UsageBased.FeatureKey), }, - Discounts: discountsAPI, - Children: children, - Totals: mapTotalsToAPI(line.Totals), + Discounts: discountsAPI, + Children: children, + Totals: mapTotalsToAPI(line.Totals), + UsageQuantityDetail: mapUsageQuantityDetailToAPI(line.UsageBased), ExternalIds: mapLineAppExternalIdsToAPI(line.ExternalIDs), Subscription: mapSubscriptionReferencesToAPI(line.Subscription), diff --git a/openmeter/billing/rating/line.go b/openmeter/billing/rating/line.go index 6e9fa8af38..a0fbc6bf95 100644 --- a/openmeter/billing/rating/line.go +++ b/openmeter/billing/rating/line.go @@ -50,4 +50,7 @@ type StandardLineAccessor interface { // GetPreviouslyBilledAmount returns the amount that has already been billed for the line before the current line GetPreviouslyBilledAmount() (alpacadecimal.Decimal, error) + + // GetUnitConfig returns the unit conversion config for the line (nil if not set) + GetUnitConfig() *productcatalog.UnitConfig } diff --git a/openmeter/billing/rating/service/mutator/unitconfig.go b/openmeter/billing/rating/service/mutator/unitconfig.go new file mode 100644 index 0000000000..fac42442a4 --- /dev/null +++ b/openmeter/billing/rating/service/mutator/unitconfig.go @@ -0,0 +1,59 @@ +package mutator + +import ( + "fmt" + + "github.com/openmeterio/openmeter/openmeter/billing/rating/service/rate" +) + +// UnitConfigConversion applies the UnitConfig conversion to the metered quantity, +// transforming raw meter units into billing units (e.g., bytes to GB). +type UnitConfigConversion struct{} + +var _ PreCalculationMutator = (*UnitConfigConversion)(nil) + +func (m *UnitConfigConversion) Mutate(l rate.PricerCalculateInput) (rate.PricerCalculateInput, error) { + uc := l.GetUnitConfig() + if uc == nil { + return l, nil + } + + usage, err := l.GetUsage() + if err != nil { + return l, fmt.Errorf("getting usage for unit config conversion: %w", err) + } + + // Apply conversion without rounding (rounding is done separately for invoicing) + converted := uc.Convert(usage.Quantity) + l.Usage.Quantity = converted + + l.Usage.PreLinePeriodQuantity = uc.Convert(usage.PreLinePeriodQuantity) + + return l, nil +} + +// UnitConfigRounding applies rounding to the converted quantity before it reaches the pricer. +// This runs after UnitConfigConversion and before DiscountUsage. +type UnitConfigRounding struct{} + +var _ PreCalculationMutator = (*UnitConfigRounding)(nil) + +func (m *UnitConfigRounding) Mutate(l rate.PricerCalculateInput) (rate.PricerCalculateInput, error) { + uc := l.GetUnitConfig() + if uc == nil { + return l, nil + } + + usage, err := l.GetUsage() + if err != nil { + return l, fmt.Errorf("getting usage for unit config rounding: %w", err) + } + + rounded := uc.Round(usage.Quantity) + l.Usage.Quantity = rounded + + roundedPre := uc.Round(usage.PreLinePeriodQuantity) + l.Usage.PreLinePeriodQuantity = roundedPre + + return l, nil +} diff --git a/openmeter/billing/rating/service/pricer.go b/openmeter/billing/rating/service/pricer.go index f3d3b81617..30a6d93a97 100644 --- a/openmeter/billing/rating/service/pricer.go +++ b/openmeter/billing/rating/service/pricer.go @@ -50,9 +50,11 @@ func getPricerFor(line rating.PriceAccessor) (*priceMutator, error) { return nil, fmt.Errorf("unsupported price type: %s", linePrice.Type()) } - // This priceMutator captures the calculation flow for discounts and commitments: + // This priceMutator captures the calculation flow for unit config, discounts and commitments: return &priceMutator{ PreCalculation: []mutator.PreCalculationMutator{ + &mutator.UnitConfigConversion{}, + &mutator.UnitConfigRounding{}, &mutator.DiscountUsage{}, }, Pricer: basePricer, diff --git a/openmeter/billing/rating/service/rate/tieredgraduated_test.go b/openmeter/billing/rating/service/rate/tieredgraduated_test.go index aff6d98896..62f06cdfdc 100644 --- a/openmeter/billing/rating/service/rate/tieredgraduated_test.go +++ b/openmeter/billing/rating/service/rate/tieredgraduated_test.go @@ -363,6 +363,69 @@ func TestTieredGraduatedCalculation(t *testing.T) { }) } +func TestGraduatedTieredWithUnitConfig(t *testing.T) { + // UnitConfig divide by 1e6, ceil → graduated tiered with unit pricing + // Tiers: 0-5 at $10/unit, 5+ at $8/unit + // Input: 7,500,001 tokens → 7.500001M → ceil → 8M + // Tier 1: 5 units at $10 = $50 + // Tier 2: 3 units at $8 = $24 + // Total: $74 + t.Run("unit config divide+ceil with graduated tiered price", func(t *testing.T) { + testutil.RunCalculationTestCase(t, testutil.CalculationTestCase{ + Price: *productcatalog.NewPriceFrom(productcatalog.TieredPrice{ + Mode: productcatalog.GraduatedTieredPrice, + Tiers: []productcatalog.PriceTier{ + { + UpToAmount: lo.ToPtr(alpacadecimal.NewFromFloat(5)), + UnitPrice: &productcatalog.PriceTierUnitPrice{ + Amount: alpacadecimal.NewFromFloat(10), + }, + }, + { + UnitPrice: &productcatalog.PriceTierUnitPrice{ + Amount: alpacadecimal.NewFromFloat(8), + }, + }, + }, + }), + UnitConfig: &productcatalog.UnitConfig{ + Operation: productcatalog.ConversionOperationDivide, + ConversionFactor: alpacadecimal.NewFromFloat(1e6), + Rounding: productcatalog.RoundingModeCeiling, + Precision: 0, + }, + LineMode: testutil.SinglePerPeriodLineMode, + Usage: testutil.FeatureUsageResponse{ + LinePeriodQty: alpacadecimal.NewFromFloat(7500001), + }, + Expect: rating.DetailedLines{ + { + Name: "feature: usage price for tier 1", + PerUnitAmount: alpacadecimal.NewFromFloat(10), + Quantity: alpacadecimal.NewFromFloat(5), + ChildUniqueReferenceID: "graduated-tiered-1-price-usage", + PaymentTerm: productcatalog.InArrearsPaymentTerm, + Totals: totals.Totals{ + Amount: alpacadecimal.NewFromFloat(50), + Total: alpacadecimal.NewFromFloat(50), + }, + }, + { + Name: "feature: usage price for tier 2", + PerUnitAmount: alpacadecimal.NewFromFloat(8), + Quantity: alpacadecimal.NewFromFloat(3), + ChildUniqueReferenceID: "graduated-tiered-2-price-usage", + PaymentTerm: productcatalog.InArrearsPaymentTerm, + Totals: totals.Totals{ + Amount: alpacadecimal.NewFromFloat(24), + Total: alpacadecimal.NewFromFloat(24), + }, + }, + }, + }) + }) +} + func TestTieredPriceCalculator(t *testing.T) { currency := lo.Must(currencyx.Code(currency.USD).Calculator()) diff --git a/openmeter/billing/rating/service/rate/unit_test.go b/openmeter/billing/rating/service/rate/unit_test.go index 9e9cac57a7..90ae55de5c 100644 --- a/openmeter/billing/rating/service/rate/unit_test.go +++ b/openmeter/billing/rating/service/rate/unit_test.go @@ -230,6 +230,103 @@ func TestUnitPriceCalculation(t *testing.T) { }) }) + // UnitConfig tests + + // 1,500,001 tokens / 1e6 = 1.500001, ceil → 2, at $10/unit = $20 + t.Run("unit config divide+ceil with unit price", func(t *testing.T) { + testutil.RunCalculationTestCase(t, testutil.CalculationTestCase{ + Price: *productcatalog.NewPriceFrom(productcatalog.UnitPrice{ + Amount: alpacadecimal.NewFromFloat(10), + }), + UnitConfig: &productcatalog.UnitConfig{ + Operation: productcatalog.ConversionOperationDivide, + ConversionFactor: alpacadecimal.NewFromFloat(1e6), + Rounding: productcatalog.RoundingModeCeiling, + Precision: 0, + }, + LineMode: testutil.SinglePerPeriodLineMode, + Usage: testutil.FeatureUsageResponse{ + LinePeriodQty: alpacadecimal.NewFromFloat(1500001), + }, + Expect: rating.DetailedLines{ + { + Name: "feature: usage in period", + PerUnitAmount: alpacadecimal.NewFromFloat(10), + Quantity: alpacadecimal.NewFromFloat(2), + ChildUniqueReferenceID: rating.UnitPriceUsageChildUniqueReferenceID, + PaymentTerm: productcatalog.InArrearsPaymentTerm, + Totals: totals.Totals{ + Amount: alpacadecimal.NewFromFloat(20), + Total: alpacadecimal.NewFromFloat(20), + }, + }, + }, + }) + }) + + // 100 calls * 1.2 margin = 120, at $1/unit = $120 + t.Run("unit config multiply with unit price", func(t *testing.T) { + testutil.RunCalculationTestCase(t, testutil.CalculationTestCase{ + Price: *productcatalog.NewPriceFrom(productcatalog.UnitPrice{ + Amount: alpacadecimal.NewFromFloat(1), + }), + UnitConfig: &productcatalog.UnitConfig{ + Operation: productcatalog.ConversionOperationMultiply, + ConversionFactor: alpacadecimal.NewFromFloat(1.2), + Rounding: productcatalog.RoundingModeNone, + }, + LineMode: testutil.SinglePerPeriodLineMode, + Usage: testutil.FeatureUsageResponse{ + LinePeriodQty: alpacadecimal.NewFromFloat(100), + }, + Expect: rating.DetailedLines{ + { + Name: "feature: usage in period", + PerUnitAmount: alpacadecimal.NewFromFloat(1), + Quantity: alpacadecimal.NewFromFloat(120), + ChildUniqueReferenceID: rating.UnitPriceUsageChildUniqueReferenceID, + PaymentTerm: productcatalog.InArrearsPaymentTerm, + Totals: totals.Totals{ + Amount: alpacadecimal.NewFromFloat(120), + Total: alpacadecimal.NewFromFloat(120), + }, + }, + }, + }) + }) + + // 1999 tokens / 1000 = 1.999, floor → 1, at $5/unit = $5 + t.Run("unit config divide+floor with unit price", func(t *testing.T) { + testutil.RunCalculationTestCase(t, testutil.CalculationTestCase{ + Price: *productcatalog.NewPriceFrom(productcatalog.UnitPrice{ + Amount: alpacadecimal.NewFromFloat(5), + }), + UnitConfig: &productcatalog.UnitConfig{ + Operation: productcatalog.ConversionOperationDivide, + ConversionFactor: alpacadecimal.NewFromFloat(1000), + Rounding: productcatalog.RoundingModeFloor, + Precision: 0, + }, + LineMode: testutil.SinglePerPeriodLineMode, + Usage: testutil.FeatureUsageResponse{ + LinePeriodQty: alpacadecimal.NewFromFloat(1999), + }, + Expect: rating.DetailedLines{ + { + Name: "feature: usage in period", + PerUnitAmount: alpacadecimal.NewFromFloat(5), + Quantity: alpacadecimal.NewFromFloat(1), + ChildUniqueReferenceID: rating.UnitPriceUsageChildUniqueReferenceID, + PaymentTerm: productcatalog.InArrearsPaymentTerm, + Totals: totals.Totals{ + Amount: alpacadecimal.NewFromFloat(5), + Total: alpacadecimal.NewFromFloat(5), + }, + }, + }, + }) + }) + // Discount + max spend t.Run("usage present, 50% discount +max spend set and hit", func(t *testing.T) { discount50pct := billing.PercentageDiscount{ diff --git a/openmeter/billing/rating/service/testutil/ubptest.go b/openmeter/billing/rating/service/testutil/ubptest.go index b8d35fa3bf..6067a65902 100644 --- a/openmeter/billing/rating/service/testutil/ubptest.go +++ b/openmeter/billing/rating/service/testutil/ubptest.go @@ -37,6 +37,7 @@ type FeatureUsageResponse struct { type CalculationTestCase struct { Price productcatalog.Price + UnitConfig *productcatalog.UnitConfig Discounts billing.Discounts LineMode TestLineMode Usage FeatureUsageResponse @@ -64,7 +65,8 @@ func RunCalculationTestCase(t *testing.T, tc CalculationTestCase) { CreditsApplied: tc.CreditsApplied, }, UsageBased: &billing.UsageBasedLine{ - Price: lo.ToPtr(tc.Price), + Price: lo.ToPtr(tc.Price), + UnitConfig: tc.UnitConfig, }, } diff --git a/openmeter/billing/service/invoicecalc/details.go b/openmeter/billing/service/invoicecalc/details.go index caea2b3764..43d57c04f4 100644 --- a/openmeter/billing/service/invoicecalc/details.go +++ b/openmeter/billing/service/invoicecalc/details.go @@ -125,5 +125,20 @@ func mergeGeneratedDetailedLines(parentLine *billing.StandardLine, in rating.Gen parentLine.Discounts = in.FinalStandardLineDiscounts + // Populate usage quantity detail when UnitConfig is in effect + if uc := parentLine.GetUnitConfig(); uc != nil && parentLine.UsageBased.MeteredQuantity != nil { + rawQty := *parentLine.UsageBased.MeteredQuantity + convertedQty := uc.Convert(rawQty) + invoicedQty := uc.Round(convertedQty) + + parentLine.UsageBased.UsageQuantityDetail = &billing.UsageQuantityDetail{ + RawQuantity: rawQty, + ConvertedQuantity: convertedQty, + InvoicedQuantity: invoicedQty, + DisplayUnit: uc.DisplayUnit, + AppliedUnitConfig: uc.Clone(), + } + } + return nil } diff --git a/openmeter/billing/stdinvoiceline.go b/openmeter/billing/stdinvoiceline.go index e95c2a6045..1d0b955df8 100644 --- a/openmeter/billing/stdinvoiceline.go +++ b/openmeter/billing/stdinvoiceline.go @@ -394,6 +394,7 @@ func (i StandardLine) ToGatheringLineBase() (GatheringLineBase, error) { ChildUniqueReferenceID: i.ChildUniqueReferenceID, Subscription: i.Subscription, SplitLineGroupID: i.SplitLineGroupID, + UnitConfig: i.UsageBased.UnitConfig, UBPConfigID: i.UsageBased.ConfigID, }, nil } @@ -491,6 +492,14 @@ func (i StandardLine) GetPrice() *productcatalog.Price { return i.UsageBased.Price } +func (i StandardLine) GetUnitConfig() *productcatalog.UnitConfig { + if i.UsageBased == nil { + return nil + } + + return i.UsageBased.UnitConfig +} + func (i *StandardLine) SetPrice(price productcatalog.Price) { if i.UsageBased == nil { return @@ -963,6 +972,32 @@ type UsageBasedLine struct { PreLinePeriodQuantity *alpacadecimal.Decimal `json:"preLinePeriodQuantity,omitempty"` MeteredPreLinePeriodQuantity *alpacadecimal.Decimal `json:"meteredPreLinePeriodQuantity,omitempty"` + + // UnitConfig defines unit conversion applied before pricing. Snapshot from rate card at billing time. + UnitConfig *productcatalog.UnitConfig `json:"unitConfig,omitempty"` + + // UsageQuantityDetail provides the audit trail from raw metered quantity to invoiced quantity + // when UnitConfig is in effect. Nil when no UnitConfig is applied. + UsageQuantityDetail *UsageQuantityDetail `json:"usageQuantityDetail,omitempty"` +} + +// UsageQuantityDetail provides the full audit trail from raw meter output to invoiced amount +// when UnitConfig is in effect. +type UsageQuantityDetail struct { + // RawQuantity is the quantity as reported by the meter (native units). + RawQuantity alpacadecimal.Decimal `json:"raw_quantity"` + + // ConvertedQuantity is the precise value after applying the conversion operation and factor, before rounding. + ConvertedQuantity alpacadecimal.Decimal `json:"converted_quantity"` + + // InvoicedQuantity is the quantity after rounding, used for pricing. + InvoicedQuantity alpacadecimal.Decimal `json:"invoiced_quantity"` + + // DisplayUnit is the human-readable unit label (e.g., "GB", "hours", "M tokens"). + DisplayUnit *string `json:"display_unit,omitempty"` + + // AppliedUnitConfig is the snapshot of the UnitConfig that was in effect at billing time. + AppliedUnitConfig productcatalog.UnitConfig `json:"applied_unit_config"` } func (i UsageBasedLine) Equal(other *UsageBasedLine) bool { diff --git a/openmeter/billing/worker/subscriptionsync/service/sync.go b/openmeter/billing/worker/subscriptionsync/service/sync.go index e4fdd43ffa..d7e64c1390 100644 --- a/openmeter/billing/worker/subscriptionsync/service/sync.go +++ b/openmeter/billing/worker/subscriptionsync/service/sync.go @@ -712,6 +712,12 @@ func (s *Service) lineFromSubscriptionRateCard(subs subscription.SubscriptionVie line.Price = lo.FromPtr(item.SubscriptionItem.RateCard.AsMeta().Price) line.FeatureKey = lo.FromPtr(item.SubscriptionItem.RateCard.AsMeta().FeatureKey) + + // Propagate UnitConfig from the rate card to the billing line + if uc := item.SubscriptionItem.RateCard.GetUnitConfig(); uc != nil { + cloned := uc.Clone() + line.UnitConfig = &cloned + } } return &line, nil diff --git a/openmeter/ent/db/addonratecard.go b/openmeter/ent/db/addonratecard.go index fb79f60fba..3a5e65de7d 100644 --- a/openmeter/ent/db/addonratecard.go +++ b/openmeter/ent/db/addonratecard.go @@ -57,6 +57,8 @@ type AddonRateCard struct { Price *productcatalog.Price `json:"price,omitempty"` // Discounts holds the value of the "discounts" field. Discounts *productcatalog.Discounts `json:"discounts,omitempty"` + // UnitConfig holds the value of the "unit_config" field. + UnitConfig *productcatalog.UnitConfig `json:"unit_config,omitempty"` // The add-on identifier the ratecard is assigned to. AddonID string `json:"addon_id,omitempty"` // The feature identifier the ratecard is related to. @@ -132,6 +134,8 @@ func (*AddonRateCard) scanValues(columns []string) ([]any, error) { values[i] = addonratecard.ValueScanner.Price.ScanValue() case addonratecard.FieldDiscounts: values[i] = addonratecard.ValueScanner.Discounts.ScanValue() + case addonratecard.FieldUnitConfig: + values[i] = addonratecard.ValueScanner.UnitConfig.ScanValue() default: values[i] = new(sql.UnknownType) } @@ -263,6 +267,12 @@ func (_m *AddonRateCard) assignValues(columns []string, values []any) error { } else { _m.Discounts = value } + case addonratecard.FieldUnitConfig: + if value, err := addonratecard.ValueScanner.UnitConfig.FromValue(values[i]); err != nil { + return err + } else { + _m.UnitConfig = value + } case addonratecard.FieldAddonID: if value, ok := values[i].(*sql.NullString); !ok { return fmt.Errorf("unexpected type %T for field addon_id", values[i]) @@ -398,6 +408,11 @@ func (_m *AddonRateCard) String() string { builder.WriteString(fmt.Sprintf("%v", *v)) } builder.WriteString(", ") + if v := _m.UnitConfig; v != nil { + builder.WriteString("unit_config=") + builder.WriteString(fmt.Sprintf("%v", *v)) + } + builder.WriteString(", ") builder.WriteString("addon_id=") builder.WriteString(_m.AddonID) builder.WriteString(", ") diff --git a/openmeter/ent/db/addonratecard/addonratecard.go b/openmeter/ent/db/addonratecard/addonratecard.go index b6ab8e93d1..ddc2cbcf8a 100644 --- a/openmeter/ent/db/addonratecard/addonratecard.go +++ b/openmeter/ent/db/addonratecard/addonratecard.go @@ -51,6 +51,8 @@ const ( FieldPrice = "price" // FieldDiscounts holds the string denoting the discounts field in the database. FieldDiscounts = "discounts" + // FieldUnitConfig holds the string denoting the unit_config field in the database. + FieldUnitConfig = "unit_config" // FieldAddonID holds the string denoting the addon_id field in the database. FieldAddonID = "addon_id" // FieldFeatureID holds the string denoting the feature_id field in the database. @@ -106,6 +108,7 @@ var Columns = []string{ FieldBillingCadence, FieldPrice, FieldDiscounts, + FieldUnitConfig, FieldAddonID, FieldFeatureID, } @@ -141,6 +144,7 @@ var ( TaxConfig field.TypeValueScanner[*productcatalog.TaxConfig] Price field.TypeValueScanner[*productcatalog.Price] Discounts field.TypeValueScanner[*productcatalog.Discounts] + UnitConfig field.TypeValueScanner[*productcatalog.UnitConfig] } ) @@ -252,6 +256,11 @@ func ByDiscounts(opts ...sql.OrderTermOption) OrderOption { return sql.OrderByField(FieldDiscounts, opts...).ToFunc() } +// ByUnitConfig orders the results by the unit_config field. +func ByUnitConfig(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldUnitConfig, opts...).ToFunc() +} + // ByAddonID orders the results by the addon_id field. func ByAddonID(opts ...sql.OrderTermOption) OrderOption { return sql.OrderByField(FieldAddonID, opts...).ToFunc() diff --git a/openmeter/ent/db/addonratecard/where.go b/openmeter/ent/db/addonratecard/where.go index 35f1f785d1..f08a210271 100644 --- a/openmeter/ent/db/addonratecard/where.go +++ b/openmeter/ent/db/addonratecard/where.go @@ -892,6 +892,16 @@ func DiscountsNotNil() predicate.AddonRateCard { return predicate.AddonRateCard(sql.FieldNotNull(FieldDiscounts)) } +// UnitConfigIsNil applies the IsNil predicate on the "unit_config" field. +func UnitConfigIsNil() predicate.AddonRateCard { + return predicate.AddonRateCard(sql.FieldIsNull(FieldUnitConfig)) +} + +// UnitConfigNotNil applies the NotNil predicate on the "unit_config" field. +func UnitConfigNotNil() predicate.AddonRateCard { + return predicate.AddonRateCard(sql.FieldNotNull(FieldUnitConfig)) +} + // AddonIDEQ applies the EQ predicate on the "addon_id" field. func AddonIDEQ(v string) predicate.AddonRateCard { return predicate.AddonRateCard(sql.FieldEQ(FieldAddonID, v)) diff --git a/openmeter/ent/db/addonratecard_create.go b/openmeter/ent/db/addonratecard_create.go index 111de519b5..8b44c1cf56 100644 --- a/openmeter/ent/db/addonratecard_create.go +++ b/openmeter/ent/db/addonratecard_create.go @@ -194,6 +194,12 @@ func (_c *AddonRateCardCreate) SetDiscounts(v *productcatalog.Discounts) *AddonR return _c } +// SetUnitConfig sets the "unit_config" field. +func (_c *AddonRateCardCreate) SetUnitConfig(v *productcatalog.UnitConfig) *AddonRateCardCreate { + _c.mutation.SetUnitConfig(v) + return _c +} + // SetAddonID sets the "addon_id" field. func (_c *AddonRateCardCreate) SetAddonID(v string) *AddonRateCardCreate { _c.mutation.SetAddonID(v) @@ -366,6 +372,11 @@ func (_c *AddonRateCardCreate) check() error { return &ValidationError{Name: "discounts", err: fmt.Errorf(`db: validator failed for field "AddonRateCard.discounts": %w`, err)} } } + if v, ok := _c.mutation.UnitConfig(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "unit_config", err: fmt.Errorf(`db: validator failed for field "AddonRateCard.unit_config": %w`, err)} + } + } if _, ok := _c.mutation.AddonID(); !ok { return &ValidationError{Name: "addon_id", err: errors.New(`db: missing required field "AddonRateCard.addon_id"`)} } @@ -496,6 +507,14 @@ func (_c *AddonRateCardCreate) createSpec() (*AddonRateCard, *sqlgraph.CreateSpe _spec.SetField(addonratecard.FieldDiscounts, field.TypeString, vv) _node.Discounts = value } + if value, ok := _c.mutation.UnitConfig(); ok { + vv, err := addonratecard.ValueScanner.UnitConfig.Value(value) + if err != nil { + return nil, nil, err + } + _spec.SetField(addonratecard.FieldUnitConfig, field.TypeString, vv) + _node.UnitConfig = value + } if nodes := _c.mutation.AddonIDs(); len(nodes) > 0 { edge := &sqlgraph.EdgeSpec{ Rel: sqlgraph.M2O, @@ -821,6 +840,24 @@ func (u *AddonRateCardUpsert) ClearDiscounts() *AddonRateCardUpsert { return u } +// SetUnitConfig sets the "unit_config" field. +func (u *AddonRateCardUpsert) SetUnitConfig(v *productcatalog.UnitConfig) *AddonRateCardUpsert { + u.Set(addonratecard.FieldUnitConfig, v) + return u +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *AddonRateCardUpsert) UpdateUnitConfig() *AddonRateCardUpsert { + u.SetExcluded(addonratecard.FieldUnitConfig) + return u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *AddonRateCardUpsert) ClearUnitConfig() *AddonRateCardUpsert { + u.SetNull(addonratecard.FieldUnitConfig) + return u +} + // SetAddonID sets the "addon_id" field. func (u *AddonRateCardUpsert) SetAddonID(v string) *AddonRateCardUpsert { u.Set(addonratecard.FieldAddonID, v) @@ -1170,6 +1207,27 @@ func (u *AddonRateCardUpsertOne) ClearDiscounts() *AddonRateCardUpsertOne { }) } +// SetUnitConfig sets the "unit_config" field. +func (u *AddonRateCardUpsertOne) SetUnitConfig(v *productcatalog.UnitConfig) *AddonRateCardUpsertOne { + return u.Update(func(s *AddonRateCardUpsert) { + s.SetUnitConfig(v) + }) +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *AddonRateCardUpsertOne) UpdateUnitConfig() *AddonRateCardUpsertOne { + return u.Update(func(s *AddonRateCardUpsert) { + s.UpdateUnitConfig() + }) +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *AddonRateCardUpsertOne) ClearUnitConfig() *AddonRateCardUpsertOne { + return u.Update(func(s *AddonRateCardUpsert) { + s.ClearUnitConfig() + }) +} + // SetAddonID sets the "addon_id" field. func (u *AddonRateCardUpsertOne) SetAddonID(v string) *AddonRateCardUpsertOne { return u.Update(func(s *AddonRateCardUpsert) { @@ -1694,6 +1752,27 @@ func (u *AddonRateCardUpsertBulk) ClearDiscounts() *AddonRateCardUpsertBulk { }) } +// SetUnitConfig sets the "unit_config" field. +func (u *AddonRateCardUpsertBulk) SetUnitConfig(v *productcatalog.UnitConfig) *AddonRateCardUpsertBulk { + return u.Update(func(s *AddonRateCardUpsert) { + s.SetUnitConfig(v) + }) +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *AddonRateCardUpsertBulk) UpdateUnitConfig() *AddonRateCardUpsertBulk { + return u.Update(func(s *AddonRateCardUpsert) { + s.UpdateUnitConfig() + }) +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *AddonRateCardUpsertBulk) ClearUnitConfig() *AddonRateCardUpsertBulk { + return u.Update(func(s *AddonRateCardUpsert) { + s.ClearUnitConfig() + }) +} + // SetAddonID sets the "addon_id" field. func (u *AddonRateCardUpsertBulk) SetAddonID(v string) *AddonRateCardUpsertBulk { return u.Update(func(s *AddonRateCardUpsert) { diff --git a/openmeter/ent/db/addonratecard_update.go b/openmeter/ent/db/addonratecard_update.go index ea3b544a4a..9452c025a4 100644 --- a/openmeter/ent/db/addonratecard_update.go +++ b/openmeter/ent/db/addonratecard_update.go @@ -233,6 +233,18 @@ func (_u *AddonRateCardUpdate) ClearDiscounts() *AddonRateCardUpdate { return _u } +// SetUnitConfig sets the "unit_config" field. +func (_u *AddonRateCardUpdate) SetUnitConfig(v *productcatalog.UnitConfig) *AddonRateCardUpdate { + _u.mutation.SetUnitConfig(v) + return _u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (_u *AddonRateCardUpdate) ClearUnitConfig() *AddonRateCardUpdate { + _u.mutation.ClearUnitConfig() + return _u +} + // SetAddonID sets the "addon_id" field. func (_u *AddonRateCardUpdate) SetAddonID(v string) *AddonRateCardUpdate { _u.mutation.SetAddonID(v) @@ -382,6 +394,11 @@ func (_u *AddonRateCardUpdate) check() error { return &ValidationError{Name: "discounts", err: fmt.Errorf(`db: validator failed for field "AddonRateCard.discounts": %w`, err)} } } + if v, ok := _u.mutation.UnitConfig(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "unit_config", err: fmt.Errorf(`db: validator failed for field "AddonRateCard.unit_config": %w`, err)} + } + } if v, ok := _u.mutation.AddonID(); ok { if err := addonratecard.AddonIDValidator(v); err != nil { return &ValidationError{Name: "addon_id", err: fmt.Errorf(`db: validator failed for field "AddonRateCard.addon_id": %w`, err)} @@ -487,6 +504,16 @@ func (_u *AddonRateCardUpdate) sqlSave(ctx context.Context) (_node int, err erro if _u.mutation.DiscountsCleared() { _spec.ClearField(addonratecard.FieldDiscounts, field.TypeString) } + if value, ok := _u.mutation.UnitConfig(); ok { + vv, err := addonratecard.ValueScanner.UnitConfig.Value(value) + if err != nil { + return 0, err + } + _spec.SetField(addonratecard.FieldUnitConfig, field.TypeString, vv) + } + if _u.mutation.UnitConfigCleared() { + _spec.ClearField(addonratecard.FieldUnitConfig, field.TypeString) + } if _u.mutation.AddonCleared() { edge := &sqlgraph.EdgeSpec{ Rel: sqlgraph.M2O, @@ -794,6 +821,18 @@ func (_u *AddonRateCardUpdateOne) ClearDiscounts() *AddonRateCardUpdateOne { return _u } +// SetUnitConfig sets the "unit_config" field. +func (_u *AddonRateCardUpdateOne) SetUnitConfig(v *productcatalog.UnitConfig) *AddonRateCardUpdateOne { + _u.mutation.SetUnitConfig(v) + return _u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (_u *AddonRateCardUpdateOne) ClearUnitConfig() *AddonRateCardUpdateOne { + _u.mutation.ClearUnitConfig() + return _u +} + // SetAddonID sets the "addon_id" field. func (_u *AddonRateCardUpdateOne) SetAddonID(v string) *AddonRateCardUpdateOne { _u.mutation.SetAddonID(v) @@ -956,6 +995,11 @@ func (_u *AddonRateCardUpdateOne) check() error { return &ValidationError{Name: "discounts", err: fmt.Errorf(`db: validator failed for field "AddonRateCard.discounts": %w`, err)} } } + if v, ok := _u.mutation.UnitConfig(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "unit_config", err: fmt.Errorf(`db: validator failed for field "AddonRateCard.unit_config": %w`, err)} + } + } if v, ok := _u.mutation.AddonID(); ok { if err := addonratecard.AddonIDValidator(v); err != nil { return &ValidationError{Name: "addon_id", err: fmt.Errorf(`db: validator failed for field "AddonRateCard.addon_id": %w`, err)} @@ -1078,6 +1122,16 @@ func (_u *AddonRateCardUpdateOne) sqlSave(ctx context.Context) (_node *AddonRate if _u.mutation.DiscountsCleared() { _spec.ClearField(addonratecard.FieldDiscounts, field.TypeString) } + if value, ok := _u.mutation.UnitConfig(); ok { + vv, err := addonratecard.ValueScanner.UnitConfig.Value(value) + if err != nil { + return nil, err + } + _spec.SetField(addonratecard.FieldUnitConfig, field.TypeString, vv) + } + if _u.mutation.UnitConfigCleared() { + _spec.ClearField(addonratecard.FieldUnitConfig, field.TypeString) + } if _u.mutation.AddonCleared() { edge := &sqlgraph.EdgeSpec{ Rel: sqlgraph.M2O, diff --git a/openmeter/ent/db/billinginvoiceusagebasedlineconfig.go b/openmeter/ent/db/billinginvoiceusagebasedlineconfig.go index 30220b91eb..836c30a361 100644 --- a/openmeter/ent/db/billinginvoiceusagebasedlineconfig.go +++ b/openmeter/ent/db/billinginvoiceusagebasedlineconfig.go @@ -32,7 +32,9 @@ type BillingInvoiceUsageBasedLineConfig struct { MeteredPreLinePeriodQuantity *alpacadecimal.Decimal `json:"metered_pre_line_period_quantity,omitempty"` // MeteredQuantity holds the value of the "metered_quantity" field. MeteredQuantity *alpacadecimal.Decimal `json:"metered_quantity,omitempty"` - selectValues sql.SelectValues + // UnitConfig holds the value of the "unit_config" field. + UnitConfig *productcatalog.UnitConfig `json:"unit_config,omitempty"` + selectValues sql.SelectValues } // scanValues returns the types for scanning values from sql.Rows. @@ -46,6 +48,8 @@ func (*BillingInvoiceUsageBasedLineConfig) scanValues(columns []string) ([]any, values[i] = new(sql.NullString) case billinginvoiceusagebasedlineconfig.FieldPrice: values[i] = billinginvoiceusagebasedlineconfig.ValueScanner.Price.ScanValue() + case billinginvoiceusagebasedlineconfig.FieldUnitConfig: + values[i] = billinginvoiceusagebasedlineconfig.ValueScanner.UnitConfig.ScanValue() default: values[i] = new(sql.UnknownType) } @@ -113,6 +117,12 @@ func (_m *BillingInvoiceUsageBasedLineConfig) assignValues(columns []string, val _m.MeteredQuantity = new(alpacadecimal.Decimal) *_m.MeteredQuantity = *value.S.(*alpacadecimal.Decimal) } + case billinginvoiceusagebasedlineconfig.FieldUnitConfig: + if value, err := billinginvoiceusagebasedlineconfig.ValueScanner.UnitConfig.FromValue(values[i]); err != nil { + return err + } else { + _m.UnitConfig = value + } default: _m.selectValues.Set(columns[i], values[i]) } @@ -177,6 +187,11 @@ func (_m *BillingInvoiceUsageBasedLineConfig) String() string { builder.WriteString("metered_quantity=") builder.WriteString(fmt.Sprintf("%v", *v)) } + builder.WriteString(", ") + if v := _m.UnitConfig; v != nil { + builder.WriteString("unit_config=") + builder.WriteString(fmt.Sprintf("%v", *v)) + } builder.WriteByte(')') return builder.String() } diff --git a/openmeter/ent/db/billinginvoiceusagebasedlineconfig/billinginvoiceusagebasedlineconfig.go b/openmeter/ent/db/billinginvoiceusagebasedlineconfig/billinginvoiceusagebasedlineconfig.go index 123442fa73..c4042876c6 100644 --- a/openmeter/ent/db/billinginvoiceusagebasedlineconfig/billinginvoiceusagebasedlineconfig.go +++ b/openmeter/ent/db/billinginvoiceusagebasedlineconfig/billinginvoiceusagebasedlineconfig.go @@ -29,6 +29,8 @@ const ( FieldMeteredPreLinePeriodQuantity = "metered_pre_line_period_quantity" // FieldMeteredQuantity holds the string denoting the metered_quantity field in the database. FieldMeteredQuantity = "metered_quantity" + // FieldUnitConfig holds the string denoting the unit_config field in the database. + FieldUnitConfig = "unit_config" // Table holds the table name of the billinginvoiceusagebasedlineconfig in the database. Table = "billing_invoice_usage_based_line_configs" ) @@ -43,6 +45,7 @@ var Columns = []string{ FieldPreLinePeriodQuantity, FieldMeteredPreLinePeriodQuantity, FieldMeteredQuantity, + FieldUnitConfig, } // ValidColumn reports if the column name is valid (part of the table columns). @@ -62,7 +65,8 @@ var ( DefaultID func() string // ValueScanner of all BillingInvoiceUsageBasedLineConfig fields. ValueScanner struct { - Price field.TypeValueScanner[*productcatalog.Price] + Price field.TypeValueScanner[*productcatalog.Price] + UnitConfig field.TypeValueScanner[*productcatalog.UnitConfig] } ) @@ -118,3 +122,8 @@ func ByMeteredPreLinePeriodQuantity(opts ...sql.OrderTermOption) OrderOption { func ByMeteredQuantity(opts ...sql.OrderTermOption) OrderOption { return sql.OrderByField(FieldMeteredQuantity, opts...).ToFunc() } + +// ByUnitConfig orders the results by the unit_config field. +func ByUnitConfig(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldUnitConfig, opts...).ToFunc() +} diff --git a/openmeter/ent/db/billinginvoiceusagebasedlineconfig/where.go b/openmeter/ent/db/billinginvoiceusagebasedlineconfig/where.go index 23fb795d4b..61cd7e9bac 100644 --- a/openmeter/ent/db/billinginvoiceusagebasedlineconfig/where.go +++ b/openmeter/ent/db/billinginvoiceusagebasedlineconfig/where.go @@ -409,6 +409,16 @@ func MeteredQuantityNotNil() predicate.BillingInvoiceUsageBasedLineConfig { return predicate.BillingInvoiceUsageBasedLineConfig(sql.FieldNotNull(FieldMeteredQuantity)) } +// UnitConfigIsNil applies the IsNil predicate on the "unit_config" field. +func UnitConfigIsNil() predicate.BillingInvoiceUsageBasedLineConfig { + return predicate.BillingInvoiceUsageBasedLineConfig(sql.FieldIsNull(FieldUnitConfig)) +} + +// UnitConfigNotNil applies the NotNil predicate on the "unit_config" field. +func UnitConfigNotNil() predicate.BillingInvoiceUsageBasedLineConfig { + return predicate.BillingInvoiceUsageBasedLineConfig(sql.FieldNotNull(FieldUnitConfig)) +} + // And groups predicates with the AND operator between them. func And(predicates ...predicate.BillingInvoiceUsageBasedLineConfig) predicate.BillingInvoiceUsageBasedLineConfig { return predicate.BillingInvoiceUsageBasedLineConfig(sql.AndPredicates(predicates...)) diff --git a/openmeter/ent/db/billinginvoiceusagebasedlineconfig_create.go b/openmeter/ent/db/billinginvoiceusagebasedlineconfig_create.go index 8b67f3a0ea..8fb0de9736 100644 --- a/openmeter/ent/db/billinginvoiceusagebasedlineconfig_create.go +++ b/openmeter/ent/db/billinginvoiceusagebasedlineconfig_create.go @@ -98,6 +98,12 @@ func (_c *BillingInvoiceUsageBasedLineConfigCreate) SetNillableMeteredQuantity(v return _c } +// SetUnitConfig sets the "unit_config" field. +func (_c *BillingInvoiceUsageBasedLineConfigCreate) SetUnitConfig(v *productcatalog.UnitConfig) *BillingInvoiceUsageBasedLineConfigCreate { + _c.mutation.SetUnitConfig(v) + return _c +} + // SetID sets the "id" field. func (_c *BillingInvoiceUsageBasedLineConfigCreate) SetID(v string) *BillingInvoiceUsageBasedLineConfigCreate { _c.mutation.SetID(v) @@ -179,6 +185,11 @@ func (_c *BillingInvoiceUsageBasedLineConfigCreate) check() error { return &ValidationError{Name: "price", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceUsageBasedLineConfig.price": %w`, err)} } } + if v, ok := _c.mutation.UnitConfig(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "unit_config", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceUsageBasedLineConfig.unit_config": %w`, err)} + } + } return nil } @@ -250,6 +261,14 @@ func (_c *BillingInvoiceUsageBasedLineConfigCreate) createSpec() (*BillingInvoic _spec.SetField(billinginvoiceusagebasedlineconfig.FieldMeteredQuantity, field.TypeOther, value) _node.MeteredQuantity = &value } + if value, ok := _c.mutation.UnitConfig(); ok { + vv, err := billinginvoiceusagebasedlineconfig.ValueScanner.UnitConfig.Value(value) + if err != nil { + return nil, nil, err + } + _spec.SetField(billinginvoiceusagebasedlineconfig.FieldUnitConfig, field.TypeString, vv) + _node.UnitConfig = value + } return _node, _spec, nil } @@ -380,6 +399,24 @@ func (u *BillingInvoiceUsageBasedLineConfigUpsert) ClearMeteredQuantity() *Billi return u } +// SetUnitConfig sets the "unit_config" field. +func (u *BillingInvoiceUsageBasedLineConfigUpsert) SetUnitConfig(v *productcatalog.UnitConfig) *BillingInvoiceUsageBasedLineConfigUpsert { + u.Set(billinginvoiceusagebasedlineconfig.FieldUnitConfig, v) + return u +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *BillingInvoiceUsageBasedLineConfigUpsert) UpdateUnitConfig() *BillingInvoiceUsageBasedLineConfigUpsert { + u.SetExcluded(billinginvoiceusagebasedlineconfig.FieldUnitConfig) + return u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *BillingInvoiceUsageBasedLineConfigUpsert) ClearUnitConfig() *BillingInvoiceUsageBasedLineConfigUpsert { + u.SetNull(billinginvoiceusagebasedlineconfig.FieldUnitConfig) + return u +} + // UpdateNewValues updates the mutable fields using the new values that were set on create except the ID field. // Using this option is equivalent to using: // @@ -525,6 +562,27 @@ func (u *BillingInvoiceUsageBasedLineConfigUpsertOne) ClearMeteredQuantity() *Bi }) } +// SetUnitConfig sets the "unit_config" field. +func (u *BillingInvoiceUsageBasedLineConfigUpsertOne) SetUnitConfig(v *productcatalog.UnitConfig) *BillingInvoiceUsageBasedLineConfigUpsertOne { + return u.Update(func(s *BillingInvoiceUsageBasedLineConfigUpsert) { + s.SetUnitConfig(v) + }) +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *BillingInvoiceUsageBasedLineConfigUpsertOne) UpdateUnitConfig() *BillingInvoiceUsageBasedLineConfigUpsertOne { + return u.Update(func(s *BillingInvoiceUsageBasedLineConfigUpsert) { + s.UpdateUnitConfig() + }) +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *BillingInvoiceUsageBasedLineConfigUpsertOne) ClearUnitConfig() *BillingInvoiceUsageBasedLineConfigUpsertOne { + return u.Update(func(s *BillingInvoiceUsageBasedLineConfigUpsert) { + s.ClearUnitConfig() + }) +} + // Exec executes the query. func (u *BillingInvoiceUsageBasedLineConfigUpsertOne) Exec(ctx context.Context) error { if len(u.create.conflict) == 0 { @@ -840,6 +898,27 @@ func (u *BillingInvoiceUsageBasedLineConfigUpsertBulk) ClearMeteredQuantity() *B }) } +// SetUnitConfig sets the "unit_config" field. +func (u *BillingInvoiceUsageBasedLineConfigUpsertBulk) SetUnitConfig(v *productcatalog.UnitConfig) *BillingInvoiceUsageBasedLineConfigUpsertBulk { + return u.Update(func(s *BillingInvoiceUsageBasedLineConfigUpsert) { + s.SetUnitConfig(v) + }) +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *BillingInvoiceUsageBasedLineConfigUpsertBulk) UpdateUnitConfig() *BillingInvoiceUsageBasedLineConfigUpsertBulk { + return u.Update(func(s *BillingInvoiceUsageBasedLineConfigUpsert) { + s.UpdateUnitConfig() + }) +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *BillingInvoiceUsageBasedLineConfigUpsertBulk) ClearUnitConfig() *BillingInvoiceUsageBasedLineConfigUpsertBulk { + return u.Update(func(s *BillingInvoiceUsageBasedLineConfigUpsert) { + s.ClearUnitConfig() + }) +} + // Exec executes the query. func (u *BillingInvoiceUsageBasedLineConfigUpsertBulk) Exec(ctx context.Context) error { if u.create.err != nil { diff --git a/openmeter/ent/db/billinginvoiceusagebasedlineconfig_update.go b/openmeter/ent/db/billinginvoiceusagebasedlineconfig_update.go index e6844ed264..6a138ba755 100644 --- a/openmeter/ent/db/billinginvoiceusagebasedlineconfig_update.go +++ b/openmeter/ent/db/billinginvoiceusagebasedlineconfig_update.go @@ -109,6 +109,18 @@ func (_u *BillingInvoiceUsageBasedLineConfigUpdate) ClearMeteredQuantity() *Bill return _u } +// SetUnitConfig sets the "unit_config" field. +func (_u *BillingInvoiceUsageBasedLineConfigUpdate) SetUnitConfig(v *productcatalog.UnitConfig) *BillingInvoiceUsageBasedLineConfigUpdate { + _u.mutation.SetUnitConfig(v) + return _u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (_u *BillingInvoiceUsageBasedLineConfigUpdate) ClearUnitConfig() *BillingInvoiceUsageBasedLineConfigUpdate { + _u.mutation.ClearUnitConfig() + return _u +} + // Mutation returns the BillingInvoiceUsageBasedLineConfigMutation object of the builder. func (_u *BillingInvoiceUsageBasedLineConfigUpdate) Mutation() *BillingInvoiceUsageBasedLineConfigMutation { return _u.mutation @@ -153,6 +165,11 @@ func (_u *BillingInvoiceUsageBasedLineConfigUpdate) check() error { return &ValidationError{Name: "price", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceUsageBasedLineConfig.price": %w`, err)} } } + if v, ok := _u.mutation.UnitConfig(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "unit_config", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceUsageBasedLineConfig.unit_config": %w`, err)} + } + } return nil } @@ -199,6 +216,16 @@ func (_u *BillingInvoiceUsageBasedLineConfigUpdate) sqlSave(ctx context.Context) if _u.mutation.MeteredQuantityCleared() { _spec.ClearField(billinginvoiceusagebasedlineconfig.FieldMeteredQuantity, field.TypeOther) } + if value, ok := _u.mutation.UnitConfig(); ok { + vv, err := billinginvoiceusagebasedlineconfig.ValueScanner.UnitConfig.Value(value) + if err != nil { + return 0, err + } + _spec.SetField(billinginvoiceusagebasedlineconfig.FieldUnitConfig, field.TypeString, vv) + } + if _u.mutation.UnitConfigCleared() { + _spec.ClearField(billinginvoiceusagebasedlineconfig.FieldUnitConfig, field.TypeString) + } if _node, err = sqlgraph.UpdateNodes(ctx, _u.driver, _spec); err != nil { if _, ok := err.(*sqlgraph.NotFoundError); ok { err = &NotFoundError{billinginvoiceusagebasedlineconfig.Label} @@ -299,6 +326,18 @@ func (_u *BillingInvoiceUsageBasedLineConfigUpdateOne) ClearMeteredQuantity() *B return _u } +// SetUnitConfig sets the "unit_config" field. +func (_u *BillingInvoiceUsageBasedLineConfigUpdateOne) SetUnitConfig(v *productcatalog.UnitConfig) *BillingInvoiceUsageBasedLineConfigUpdateOne { + _u.mutation.SetUnitConfig(v) + return _u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (_u *BillingInvoiceUsageBasedLineConfigUpdateOne) ClearUnitConfig() *BillingInvoiceUsageBasedLineConfigUpdateOne { + _u.mutation.ClearUnitConfig() + return _u +} + // Mutation returns the BillingInvoiceUsageBasedLineConfigMutation object of the builder. func (_u *BillingInvoiceUsageBasedLineConfigUpdateOne) Mutation() *BillingInvoiceUsageBasedLineConfigMutation { return _u.mutation @@ -356,6 +395,11 @@ func (_u *BillingInvoiceUsageBasedLineConfigUpdateOne) check() error { return &ValidationError{Name: "price", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceUsageBasedLineConfig.price": %w`, err)} } } + if v, ok := _u.mutation.UnitConfig(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "unit_config", err: fmt.Errorf(`db: validator failed for field "BillingInvoiceUsageBasedLineConfig.unit_config": %w`, err)} + } + } return nil } @@ -419,6 +463,16 @@ func (_u *BillingInvoiceUsageBasedLineConfigUpdateOne) sqlSave(ctx context.Conte if _u.mutation.MeteredQuantityCleared() { _spec.ClearField(billinginvoiceusagebasedlineconfig.FieldMeteredQuantity, field.TypeOther) } + if value, ok := _u.mutation.UnitConfig(); ok { + vv, err := billinginvoiceusagebasedlineconfig.ValueScanner.UnitConfig.Value(value) + if err != nil { + return nil, err + } + _spec.SetField(billinginvoiceusagebasedlineconfig.FieldUnitConfig, field.TypeString, vv) + } + if _u.mutation.UnitConfigCleared() { + _spec.ClearField(billinginvoiceusagebasedlineconfig.FieldUnitConfig, field.TypeString) + } _node = &BillingInvoiceUsageBasedLineConfig{config: _u.config} _spec.Assign = _node.assignValues _spec.ScanValues = _node.scanValues diff --git a/openmeter/ent/db/feature.go b/openmeter/ent/db/feature.go index cc0abd960f..6042f21cf9 100644 --- a/openmeter/ent/db/feature.go +++ b/openmeter/ent/db/feature.go @@ -61,6 +61,8 @@ type Feature struct { UnitCostLlmTokenTypeProperty *string `json:"unit_cost_llm_token_type_property,omitempty"` // UnitCostLlmTokenType holds the value of the "unit_cost_llm_token_type" field. UnitCostLlmTokenType *string `json:"unit_cost_llm_token_type,omitempty"` + // UnitConfig holds the value of the "unit_config" field. + UnitConfig *string `json:"unit_config,omitempty"` // ArchivedAt holds the value of the "archived_at" field. ArchivedAt *time.Time `json:"archived_at,omitempty"` // Edges holds the relations/edges for other nodes in the graph. @@ -131,7 +133,7 @@ func (*Feature) scanValues(columns []string) ([]any, error) { values[i] = &sql.NullScanner{S: new(alpacadecimal.Decimal)} case dbfeature.FieldMetadata, dbfeature.FieldMeterGroupByFilters, dbfeature.FieldAdvancedMeterGroupByFilters: values[i] = new([]byte) - case dbfeature.FieldID, dbfeature.FieldNamespace, dbfeature.FieldName, dbfeature.FieldDescription, dbfeature.FieldKey, dbfeature.FieldMeterSlug, dbfeature.FieldMeterID, dbfeature.FieldUnitCostType, dbfeature.FieldUnitCostLlmProviderProperty, dbfeature.FieldUnitCostLlmProvider, dbfeature.FieldUnitCostLlmModelProperty, dbfeature.FieldUnitCostLlmModel, dbfeature.FieldUnitCostLlmTokenTypeProperty, dbfeature.FieldUnitCostLlmTokenType: + case dbfeature.FieldID, dbfeature.FieldNamespace, dbfeature.FieldName, dbfeature.FieldDescription, dbfeature.FieldKey, dbfeature.FieldMeterSlug, dbfeature.FieldMeterID, dbfeature.FieldUnitCostType, dbfeature.FieldUnitCostLlmProviderProperty, dbfeature.FieldUnitCostLlmProvider, dbfeature.FieldUnitCostLlmModelProperty, dbfeature.FieldUnitCostLlmModel, dbfeature.FieldUnitCostLlmTokenTypeProperty, dbfeature.FieldUnitCostLlmTokenType, dbfeature.FieldUnitConfig: values[i] = new(sql.NullString) case dbfeature.FieldCreatedAt, dbfeature.FieldUpdatedAt, dbfeature.FieldDeletedAt, dbfeature.FieldArchivedAt: values[i] = new(sql.NullTime) @@ -294,6 +296,13 @@ func (_m *Feature) assignValues(columns []string, values []any) error { _m.UnitCostLlmTokenType = new(string) *_m.UnitCostLlmTokenType = value.String } + case dbfeature.FieldUnitConfig: + if value, ok := values[i].(*sql.NullString); !ok { + return fmt.Errorf("unexpected type %T for field unit_config", values[i]) + } else if value.Valid { + _m.UnitConfig = new(string) + *_m.UnitConfig = value.String + } case dbfeature.FieldArchivedAt: if value, ok := values[i].(*sql.NullTime); !ok { return fmt.Errorf("unexpected type %T for field archived_at", values[i]) @@ -441,6 +450,11 @@ func (_m *Feature) String() string { builder.WriteString(*v) } builder.WriteString(", ") + if v := _m.UnitConfig; v != nil { + builder.WriteString("unit_config=") + builder.WriteString(*v) + } + builder.WriteString(", ") if v := _m.ArchivedAt; v != nil { builder.WriteString("archived_at=") builder.WriteString(v.Format(time.ANSIC)) diff --git a/openmeter/ent/db/feature/feature.go b/openmeter/ent/db/feature/feature.go index 072fe48796..9ec192244f 100644 --- a/openmeter/ent/db/feature/feature.go +++ b/openmeter/ent/db/feature/feature.go @@ -54,6 +54,8 @@ const ( FieldUnitCostLlmTokenTypeProperty = "unit_cost_llm_token_type_property" // FieldUnitCostLlmTokenType holds the string denoting the unit_cost_llm_token_type field in the database. FieldUnitCostLlmTokenType = "unit_cost_llm_token_type" + // FieldUnitConfig holds the string denoting the unit_config field in the database. + FieldUnitConfig = "unit_config" // FieldArchivedAt holds the string denoting the archived_at field in the database. FieldArchivedAt = "archived_at" // EdgeEntitlement holds the string denoting the entitlement edge name in mutations. @@ -119,6 +121,7 @@ var Columns = []string{ FieldUnitCostLlmModel, FieldUnitCostLlmTokenTypeProperty, FieldUnitCostLlmTokenType, + FieldUnitConfig, FieldArchivedAt, } @@ -244,6 +247,11 @@ func ByUnitCostLlmTokenType(opts ...sql.OrderTermOption) OrderOption { return sql.OrderByField(FieldUnitCostLlmTokenType, opts...).ToFunc() } +// ByUnitConfig orders the results by the unit_config field. +func ByUnitConfig(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldUnitConfig, opts...).ToFunc() +} + // ByArchivedAt orders the results by the archived_at field. func ByArchivedAt(opts ...sql.OrderTermOption) OrderOption { return sql.OrderByField(FieldArchivedAt, opts...).ToFunc() diff --git a/openmeter/ent/db/feature/where.go b/openmeter/ent/db/feature/where.go index 896e8f2a1f..976645868d 100644 --- a/openmeter/ent/db/feature/where.go +++ b/openmeter/ent/db/feature/where.go @@ -151,6 +151,11 @@ func UnitCostLlmTokenType(v string) predicate.Feature { return predicate.Feature(sql.FieldEQ(FieldUnitCostLlmTokenType, v)) } +// UnitConfig applies equality check predicate on the "unit_config" field. It's identical to UnitConfigEQ. +func UnitConfig(v string) predicate.Feature { + return predicate.Feature(sql.FieldEQ(FieldUnitConfig, v)) +} + // ArchivedAt applies equality check predicate on the "archived_at" field. It's identical to ArchivedAtEQ. func ArchivedAt(v time.Time) predicate.Feature { return predicate.Feature(sql.FieldEQ(FieldArchivedAt, v)) @@ -1311,6 +1316,81 @@ func UnitCostLlmTokenTypeContainsFold(v string) predicate.Feature { return predicate.Feature(sql.FieldContainsFold(FieldUnitCostLlmTokenType, v)) } +// UnitConfigEQ applies the EQ predicate on the "unit_config" field. +func UnitConfigEQ(v string) predicate.Feature { + return predicate.Feature(sql.FieldEQ(FieldUnitConfig, v)) +} + +// UnitConfigNEQ applies the NEQ predicate on the "unit_config" field. +func UnitConfigNEQ(v string) predicate.Feature { + return predicate.Feature(sql.FieldNEQ(FieldUnitConfig, v)) +} + +// UnitConfigIn applies the In predicate on the "unit_config" field. +func UnitConfigIn(vs ...string) predicate.Feature { + return predicate.Feature(sql.FieldIn(FieldUnitConfig, vs...)) +} + +// UnitConfigNotIn applies the NotIn predicate on the "unit_config" field. +func UnitConfigNotIn(vs ...string) predicate.Feature { + return predicate.Feature(sql.FieldNotIn(FieldUnitConfig, vs...)) +} + +// UnitConfigGT applies the GT predicate on the "unit_config" field. +func UnitConfigGT(v string) predicate.Feature { + return predicate.Feature(sql.FieldGT(FieldUnitConfig, v)) +} + +// UnitConfigGTE applies the GTE predicate on the "unit_config" field. +func UnitConfigGTE(v string) predicate.Feature { + return predicate.Feature(sql.FieldGTE(FieldUnitConfig, v)) +} + +// UnitConfigLT applies the LT predicate on the "unit_config" field. +func UnitConfigLT(v string) predicate.Feature { + return predicate.Feature(sql.FieldLT(FieldUnitConfig, v)) +} + +// UnitConfigLTE applies the LTE predicate on the "unit_config" field. +func UnitConfigLTE(v string) predicate.Feature { + return predicate.Feature(sql.FieldLTE(FieldUnitConfig, v)) +} + +// UnitConfigContains applies the Contains predicate on the "unit_config" field. +func UnitConfigContains(v string) predicate.Feature { + return predicate.Feature(sql.FieldContains(FieldUnitConfig, v)) +} + +// UnitConfigHasPrefix applies the HasPrefix predicate on the "unit_config" field. +func UnitConfigHasPrefix(v string) predicate.Feature { + return predicate.Feature(sql.FieldHasPrefix(FieldUnitConfig, v)) +} + +// UnitConfigHasSuffix applies the HasSuffix predicate on the "unit_config" field. +func UnitConfigHasSuffix(v string) predicate.Feature { + return predicate.Feature(sql.FieldHasSuffix(FieldUnitConfig, v)) +} + +// UnitConfigIsNil applies the IsNil predicate on the "unit_config" field. +func UnitConfigIsNil() predicate.Feature { + return predicate.Feature(sql.FieldIsNull(FieldUnitConfig)) +} + +// UnitConfigNotNil applies the NotNil predicate on the "unit_config" field. +func UnitConfigNotNil() predicate.Feature { + return predicate.Feature(sql.FieldNotNull(FieldUnitConfig)) +} + +// UnitConfigEqualFold applies the EqualFold predicate on the "unit_config" field. +func UnitConfigEqualFold(v string) predicate.Feature { + return predicate.Feature(sql.FieldEqualFold(FieldUnitConfig, v)) +} + +// UnitConfigContainsFold applies the ContainsFold predicate on the "unit_config" field. +func UnitConfigContainsFold(v string) predicate.Feature { + return predicate.Feature(sql.FieldContainsFold(FieldUnitConfig, v)) +} + // ArchivedAtEQ applies the EQ predicate on the "archived_at" field. func ArchivedAtEQ(v time.Time) predicate.Feature { return predicate.Feature(sql.FieldEQ(FieldArchivedAt, v)) diff --git a/openmeter/ent/db/feature_create.go b/openmeter/ent/db/feature_create.go index 0a7372dfd9..99f3826e08 100644 --- a/openmeter/ent/db/feature_create.go +++ b/openmeter/ent/db/feature_create.go @@ -261,6 +261,20 @@ func (_c *FeatureCreate) SetNillableUnitCostLlmTokenType(v *string) *FeatureCrea return _c } +// SetUnitConfig sets the "unit_config" field. +func (_c *FeatureCreate) SetUnitConfig(v string) *FeatureCreate { + _c.mutation.SetUnitConfig(v) + return _c +} + +// SetNillableUnitConfig sets the "unit_config" field if the given value is not nil. +func (_c *FeatureCreate) SetNillableUnitConfig(v *string) *FeatureCreate { + if v != nil { + _c.SetUnitConfig(*v) + } + return _c +} + // SetArchivedAt sets the "archived_at" field. func (_c *FeatureCreate) SetArchivedAt(v time.Time) *FeatureCreate { _c.mutation.SetArchivedAt(v) @@ -537,6 +551,10 @@ func (_c *FeatureCreate) createSpec() (*Feature, *sqlgraph.CreateSpec) { _spec.SetField(dbfeature.FieldUnitCostLlmTokenType, field.TypeString, value) _node.UnitCostLlmTokenType = &value } + if value, ok := _c.mutation.UnitConfig(); ok { + _spec.SetField(dbfeature.FieldUnitConfig, field.TypeString, value) + _node.UnitConfig = &value + } if value, ok := _c.mutation.ArchivedAt(); ok { _spec.SetField(dbfeature.FieldArchivedAt, field.TypeTime, value) _node.ArchivedAt = &value @@ -916,6 +934,24 @@ func (u *FeatureUpsert) ClearUnitCostLlmTokenType() *FeatureUpsert { return u } +// SetUnitConfig sets the "unit_config" field. +func (u *FeatureUpsert) SetUnitConfig(v string) *FeatureUpsert { + u.Set(dbfeature.FieldUnitConfig, v) + return u +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *FeatureUpsert) UpdateUnitConfig() *FeatureUpsert { + u.SetExcluded(dbfeature.FieldUnitConfig) + return u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *FeatureUpsert) ClearUnitConfig() *FeatureUpsert { + u.SetNull(dbfeature.FieldUnitConfig) + return u +} + // SetArchivedAt sets the "archived_at" field. func (u *FeatureUpsert) SetArchivedAt(v time.Time) *FeatureUpsert { u.Set(dbfeature.FieldArchivedAt, v) @@ -1298,6 +1334,27 @@ func (u *FeatureUpsertOne) ClearUnitCostLlmTokenType() *FeatureUpsertOne { }) } +// SetUnitConfig sets the "unit_config" field. +func (u *FeatureUpsertOne) SetUnitConfig(v string) *FeatureUpsertOne { + return u.Update(func(s *FeatureUpsert) { + s.SetUnitConfig(v) + }) +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *FeatureUpsertOne) UpdateUnitConfig() *FeatureUpsertOne { + return u.Update(func(s *FeatureUpsert) { + s.UpdateUnitConfig() + }) +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *FeatureUpsertOne) ClearUnitConfig() *FeatureUpsertOne { + return u.Update(func(s *FeatureUpsert) { + s.ClearUnitConfig() + }) +} + // SetArchivedAt sets the "archived_at" field. func (u *FeatureUpsertOne) SetArchivedAt(v time.Time) *FeatureUpsertOne { return u.Update(func(s *FeatureUpsert) { @@ -1850,6 +1907,27 @@ func (u *FeatureUpsertBulk) ClearUnitCostLlmTokenType() *FeatureUpsertBulk { }) } +// SetUnitConfig sets the "unit_config" field. +func (u *FeatureUpsertBulk) SetUnitConfig(v string) *FeatureUpsertBulk { + return u.Update(func(s *FeatureUpsert) { + s.SetUnitConfig(v) + }) +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *FeatureUpsertBulk) UpdateUnitConfig() *FeatureUpsertBulk { + return u.Update(func(s *FeatureUpsert) { + s.UpdateUnitConfig() + }) +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *FeatureUpsertBulk) ClearUnitConfig() *FeatureUpsertBulk { + return u.Update(func(s *FeatureUpsert) { + s.ClearUnitConfig() + }) +} + // SetArchivedAt sets the "archived_at" field. func (u *FeatureUpsertBulk) SetArchivedAt(v time.Time) *FeatureUpsertBulk { return u.Update(func(s *FeatureUpsert) { diff --git a/openmeter/ent/db/feature_update.go b/openmeter/ent/db/feature_update.go index e2091e36d7..8b87127793 100644 --- a/openmeter/ent/db/feature_update.go +++ b/openmeter/ent/db/feature_update.go @@ -289,6 +289,26 @@ func (_u *FeatureUpdate) ClearUnitCostLlmTokenType() *FeatureUpdate { return _u } +// SetUnitConfig sets the "unit_config" field. +func (_u *FeatureUpdate) SetUnitConfig(v string) *FeatureUpdate { + _u.mutation.SetUnitConfig(v) + return _u +} + +// SetNillableUnitConfig sets the "unit_config" field if the given value is not nil. +func (_u *FeatureUpdate) SetNillableUnitConfig(v *string) *FeatureUpdate { + if v != nil { + _u.SetUnitConfig(*v) + } + return _u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (_u *FeatureUpdate) ClearUnitConfig() *FeatureUpdate { + _u.mutation.ClearUnitConfig() + return _u +} + // SetArchivedAt sets the "archived_at" field. func (_u *FeatureUpdate) SetArchivedAt(v time.Time) *FeatureUpdate { _u.mutation.SetArchivedAt(v) @@ -572,6 +592,12 @@ func (_u *FeatureUpdate) sqlSave(ctx context.Context) (_node int, err error) { if _u.mutation.UnitCostLlmTokenTypeCleared() { _spec.ClearField(dbfeature.FieldUnitCostLlmTokenType, field.TypeString) } + if value, ok := _u.mutation.UnitConfig(); ok { + _spec.SetField(dbfeature.FieldUnitConfig, field.TypeString, value) + } + if _u.mutation.UnitConfigCleared() { + _spec.ClearField(dbfeature.FieldUnitConfig, field.TypeString) + } if value, ok := _u.mutation.ArchivedAt(); ok { _spec.SetField(dbfeature.FieldArchivedAt, field.TypeTime, value) } @@ -989,6 +1015,26 @@ func (_u *FeatureUpdateOne) ClearUnitCostLlmTokenType() *FeatureUpdateOne { return _u } +// SetUnitConfig sets the "unit_config" field. +func (_u *FeatureUpdateOne) SetUnitConfig(v string) *FeatureUpdateOne { + _u.mutation.SetUnitConfig(v) + return _u +} + +// SetNillableUnitConfig sets the "unit_config" field if the given value is not nil. +func (_u *FeatureUpdateOne) SetNillableUnitConfig(v *string) *FeatureUpdateOne { + if v != nil { + _u.SetUnitConfig(*v) + } + return _u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (_u *FeatureUpdateOne) ClearUnitConfig() *FeatureUpdateOne { + _u.mutation.ClearUnitConfig() + return _u +} + // SetArchivedAt sets the "archived_at" field. func (_u *FeatureUpdateOne) SetArchivedAt(v time.Time) *FeatureUpdateOne { _u.mutation.SetArchivedAt(v) @@ -1302,6 +1348,12 @@ func (_u *FeatureUpdateOne) sqlSave(ctx context.Context) (_node *Feature, err er if _u.mutation.UnitCostLlmTokenTypeCleared() { _spec.ClearField(dbfeature.FieldUnitCostLlmTokenType, field.TypeString) } + if value, ok := _u.mutation.UnitConfig(); ok { + _spec.SetField(dbfeature.FieldUnitConfig, field.TypeString, value) + } + if _u.mutation.UnitConfigCleared() { + _spec.ClearField(dbfeature.FieldUnitConfig, field.TypeString) + } if value, ok := _u.mutation.ArchivedAt(); ok { _spec.SetField(dbfeature.FieldArchivedAt, field.TypeTime, value) } diff --git a/openmeter/ent/db/migrate/schema.go b/openmeter/ent/db/migrate/schema.go index 49e1e5b2d1..89a0e590b7 100644 --- a/openmeter/ent/db/migrate/schema.go +++ b/openmeter/ent/db/migrate/schema.go @@ -92,6 +92,7 @@ var ( {Name: "billing_cadence", Type: field.TypeString, Nullable: true}, {Name: "price", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "jsonb"}}, {Name: "discounts", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "jsonb"}}, + {Name: "unit_config", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "jsonb"}}, {Name: "addon_id", Type: field.TypeString, SchemaType: map[string]string{"postgres": "char(26)"}}, {Name: "feature_id", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "char(26)"}}, {Name: "tax_code_id", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "char(26)"}}, @@ -104,19 +105,19 @@ var ( ForeignKeys: []*schema.ForeignKey{ { Symbol: "addon_rate_cards_addons_ratecards", - Columns: []*schema.Column{AddonRateCardsColumns[17]}, + Columns: []*schema.Column{AddonRateCardsColumns[18]}, RefColumns: []*schema.Column{AddonsColumns[0]}, OnDelete: schema.Cascade, }, { Symbol: "addon_rate_cards_features_addon_ratecard", - Columns: []*schema.Column{AddonRateCardsColumns[18]}, + Columns: []*schema.Column{AddonRateCardsColumns[19]}, RefColumns: []*schema.Column{FeaturesColumns[0]}, OnDelete: schema.SetNull, }, { Symbol: "addon_rate_cards_tax_codes_addon_rate_cards", - Columns: []*schema.Column{AddonRateCardsColumns[19]}, + Columns: []*schema.Column{AddonRateCardsColumns[20]}, RefColumns: []*schema.Column{TaxCodesColumns[0]}, OnDelete: schema.SetNull, }, @@ -145,12 +146,12 @@ var ( { Name: "addonratecard_tax_code_id", Unique: false, - Columns: []*schema.Column{AddonRateCardsColumns[19]}, + Columns: []*schema.Column{AddonRateCardsColumns[20]}, }, { Name: "addonratecard_addon_id_key", Unique: true, - Columns: []*schema.Column{AddonRateCardsColumns[17], AddonRateCardsColumns[8]}, + Columns: []*schema.Column{AddonRateCardsColumns[18], AddonRateCardsColumns[8]}, Annotation: &entsql.IndexAnnotation{ Where: "deleted_at IS NULL", }, @@ -158,7 +159,7 @@ var ( { Name: "addonratecard_addon_id_feature_key", Unique: true, - Columns: []*schema.Column{AddonRateCardsColumns[17], AddonRateCardsColumns[11]}, + Columns: []*schema.Column{AddonRateCardsColumns[18], AddonRateCardsColumns[11]}, Annotation: &entsql.IndexAnnotation{ Where: "deleted_at IS NULL", }, @@ -1161,6 +1162,7 @@ var ( {Name: "pre_line_period_quantity", Type: field.TypeOther, Nullable: true, SchemaType: map[string]string{"postgres": "numeric"}}, {Name: "metered_pre_line_period_quantity", Type: field.TypeOther, Nullable: true, SchemaType: map[string]string{"postgres": "numeric"}}, {Name: "metered_quantity", Type: field.TypeOther, Nullable: true, SchemaType: map[string]string{"postgres": "numeric"}}, + {Name: "unit_config", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "jsonb"}}, } // BillingInvoiceUsageBasedLineConfigsTable holds the schema information for the "billing_invoice_usage_based_line_configs" table. BillingInvoiceUsageBasedLineConfigsTable = &schema.Table{ @@ -2686,6 +2688,7 @@ var ( {Name: "unit_cost_llm_model", Type: field.TypeString, Nullable: true}, {Name: "unit_cost_llm_token_type_property", Type: field.TypeString, Nullable: true}, {Name: "unit_cost_llm_token_type", Type: field.TypeString, Nullable: true}, + {Name: "unit_config", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "jsonb"}}, {Name: "archived_at", Type: field.TypeTime, Nullable: true}, {Name: "meter_id", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "char(26)"}}, } @@ -2697,7 +2700,7 @@ var ( ForeignKeys: []*schema.ForeignKey{ { Symbol: "features_meters_feature", - Columns: []*schema.Column{FeaturesColumns[21]}, + Columns: []*schema.Column{FeaturesColumns[22]}, RefColumns: []*schema.Column{MetersColumns[0]}, OnDelete: schema.SetNull, }, @@ -2732,7 +2735,7 @@ var ( { Name: "feature_namespace_meter_id", Unique: false, - Columns: []*schema.Column{FeaturesColumns[5], FeaturesColumns[21]}, + Columns: []*schema.Column{FeaturesColumns[5], FeaturesColumns[22]}, Annotation: &entsql.IndexAnnotation{ Where: "archived_at IS NULL", }, @@ -3733,6 +3736,7 @@ var ( {Name: "billing_cadence", Type: field.TypeString, Nullable: true}, {Name: "price", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "jsonb"}}, {Name: "discounts", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "jsonb"}}, + {Name: "unit_config", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "jsonb"}}, {Name: "feature_id", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "char(26)"}}, {Name: "phase_id", Type: field.TypeString, SchemaType: map[string]string{"postgres": "char(26)"}}, {Name: "tax_code_id", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "char(26)"}}, @@ -3745,19 +3749,19 @@ var ( ForeignKeys: []*schema.ForeignKey{ { Symbol: "plan_rate_cards_features_ratecard", - Columns: []*schema.Column{PlanRateCardsColumns[17]}, + Columns: []*schema.Column{PlanRateCardsColumns[18]}, RefColumns: []*schema.Column{FeaturesColumns[0]}, OnDelete: schema.SetNull, }, { Symbol: "plan_rate_cards_plan_phases_ratecards", - Columns: []*schema.Column{PlanRateCardsColumns[18]}, + Columns: []*schema.Column{PlanRateCardsColumns[19]}, RefColumns: []*schema.Column{PlanPhasesColumns[0]}, OnDelete: schema.Cascade, }, { Symbol: "plan_rate_cards_tax_codes_plan_rate_cards", - Columns: []*schema.Column{PlanRateCardsColumns[19]}, + Columns: []*schema.Column{PlanRateCardsColumns[20]}, RefColumns: []*schema.Column{TaxCodesColumns[0]}, OnDelete: schema.SetNull, }, @@ -3786,12 +3790,12 @@ var ( { Name: "planratecard_tax_code_id", Unique: false, - Columns: []*schema.Column{PlanRateCardsColumns[19]}, + Columns: []*schema.Column{PlanRateCardsColumns[20]}, }, { Name: "planratecard_phase_id_key", Unique: true, - Columns: []*schema.Column{PlanRateCardsColumns[18], PlanRateCardsColumns[8]}, + Columns: []*schema.Column{PlanRateCardsColumns[19], PlanRateCardsColumns[8]}, Annotation: &entsql.IndexAnnotation{ Where: "deleted_at IS NULL", }, @@ -3799,7 +3803,7 @@ var ( { Name: "planratecard_phase_id_feature_key", Unique: true, - Columns: []*schema.Column{PlanRateCardsColumns[18], PlanRateCardsColumns[11]}, + Columns: []*schema.Column{PlanRateCardsColumns[19], PlanRateCardsColumns[11]}, Annotation: &entsql.IndexAnnotation{ Where: "deleted_at IS NULL", }, @@ -4093,6 +4097,7 @@ var ( {Name: "billing_cadence", Type: field.TypeString, Nullable: true}, {Name: "price", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "jsonb"}}, {Name: "discounts", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "jsonb"}}, + {Name: "unit_config", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "jsonb"}}, {Name: "entitlement_id", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "char(26)"}}, {Name: "phase_id", Type: field.TypeString, SchemaType: map[string]string{"postgres": "char(26)"}}, {Name: "tax_code_id", Type: field.TypeString, Nullable: true, SchemaType: map[string]string{"postgres": "char(26)"}}, @@ -4105,19 +4110,19 @@ var ( ForeignKeys: []*schema.ForeignKey{ { Symbol: "subscription_items_entitlements_subscription_item", - Columns: []*schema.Column{SubscriptionItemsColumns[22]}, + Columns: []*schema.Column{SubscriptionItemsColumns[23]}, RefColumns: []*schema.Column{EntitlementsColumns[0]}, OnDelete: schema.SetNull, }, { Symbol: "subscription_items_subscription_phases_items", - Columns: []*schema.Column{SubscriptionItemsColumns[23]}, + Columns: []*schema.Column{SubscriptionItemsColumns[24]}, RefColumns: []*schema.Column{SubscriptionPhasesColumns[0]}, OnDelete: schema.Cascade, }, { Symbol: "subscription_items_tax_codes_subscription_items", - Columns: []*schema.Column{SubscriptionItemsColumns[24]}, + Columns: []*schema.Column{SubscriptionItemsColumns[25]}, RefColumns: []*schema.Column{TaxCodesColumns[0]}, OnDelete: schema.SetNull, }, @@ -4136,7 +4141,7 @@ var ( { Name: "subscriptionitem_tax_code_id", Unique: false, - Columns: []*schema.Column{SubscriptionItemsColumns[24]}, + Columns: []*schema.Column{SubscriptionItemsColumns[25]}, }, { Name: "subscriptionitem_namespace_id", @@ -4146,7 +4151,7 @@ var ( { Name: "subscriptionitem_namespace_phase_id_key", Unique: false, - Columns: []*schema.Column{SubscriptionItemsColumns[1], SubscriptionItemsColumns[23], SubscriptionItemsColumns[10]}, + Columns: []*schema.Column{SubscriptionItemsColumns[1], SubscriptionItemsColumns[24], SubscriptionItemsColumns[10]}, }, }, } diff --git a/openmeter/ent/db/mutation.go b/openmeter/ent/db/mutation.go index d8715321e6..280daf4e65 100644 --- a/openmeter/ent/db/mutation.go +++ b/openmeter/ent/db/mutation.go @@ -1655,6 +1655,7 @@ type AddonRateCardMutation struct { billing_cadence *datetime.ISODurationString price **productcatalog.Price discounts **productcatalog.Discounts + unit_config **productcatalog.UnitConfig clearedFields map[string]struct{} addon *string clearedaddon bool @@ -2526,6 +2527,55 @@ func (m *AddonRateCardMutation) ResetDiscounts() { delete(m.clearedFields, addonratecard.FieldDiscounts) } +// SetUnitConfig sets the "unit_config" field. +func (m *AddonRateCardMutation) SetUnitConfig(pc *productcatalog.UnitConfig) { + m.unit_config = &pc +} + +// UnitConfig returns the value of the "unit_config" field in the mutation. +func (m *AddonRateCardMutation) UnitConfig() (r *productcatalog.UnitConfig, exists bool) { + v := m.unit_config + if v == nil { + return + } + return *v, true +} + +// OldUnitConfig returns the old "unit_config" field's value of the AddonRateCard entity. +// If the AddonRateCard object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *AddonRateCardMutation) OldUnitConfig(ctx context.Context) (v *productcatalog.UnitConfig, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldUnitConfig is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldUnitConfig requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldUnitConfig: %w", err) + } + return oldValue.UnitConfig, nil +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (m *AddonRateCardMutation) ClearUnitConfig() { + m.unit_config = nil + m.clearedFields[addonratecard.FieldUnitConfig] = struct{}{} +} + +// UnitConfigCleared returns if the "unit_config" field was cleared in this mutation. +func (m *AddonRateCardMutation) UnitConfigCleared() bool { + _, ok := m.clearedFields[addonratecard.FieldUnitConfig] + return ok +} + +// ResetUnitConfig resets all changes to the "unit_config" field. +func (m *AddonRateCardMutation) ResetUnitConfig() { + m.unit_config = nil + delete(m.clearedFields, addonratecard.FieldUnitConfig) +} + // SetAddonID sets the "addon_id" field. func (m *AddonRateCardMutation) SetAddonID(s string) { m.addon = &s @@ -2739,7 +2789,7 @@ func (m *AddonRateCardMutation) Type() string { // order to get all numeric fields that were incremented/decremented, call // AddedFields(). func (m *AddonRateCardMutation) Fields() []string { - fields := make([]string, 0, 19) + fields := make([]string, 0, 20) if m.namespace != nil { fields = append(fields, addonratecard.FieldNamespace) } @@ -2791,6 +2841,9 @@ func (m *AddonRateCardMutation) Fields() []string { if m.discounts != nil { fields = append(fields, addonratecard.FieldDiscounts) } + if m.unit_config != nil { + fields = append(fields, addonratecard.FieldUnitConfig) + } if m.addon != nil { fields = append(fields, addonratecard.FieldAddonID) } @@ -2839,6 +2892,8 @@ func (m *AddonRateCardMutation) Field(name string) (ent.Value, bool) { return m.Price() case addonratecard.FieldDiscounts: return m.Discounts() + case addonratecard.FieldUnitConfig: + return m.UnitConfig() case addonratecard.FieldAddonID: return m.AddonID() case addonratecard.FieldFeatureID: @@ -2886,6 +2941,8 @@ func (m *AddonRateCardMutation) OldField(ctx context.Context, name string) (ent. return m.OldPrice(ctx) case addonratecard.FieldDiscounts: return m.OldDiscounts(ctx) + case addonratecard.FieldUnitConfig: + return m.OldUnitConfig(ctx) case addonratecard.FieldAddonID: return m.OldAddonID(ctx) case addonratecard.FieldFeatureID: @@ -3018,6 +3075,13 @@ func (m *AddonRateCardMutation) SetField(name string, value ent.Value) error { } m.SetDiscounts(v) return nil + case addonratecard.FieldUnitConfig: + v, ok := value.(*productcatalog.UnitConfig) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetUnitConfig(v) + return nil case addonratecard.FieldAddonID: v, ok := value.(string) if !ok { @@ -3095,6 +3159,9 @@ func (m *AddonRateCardMutation) ClearedFields() []string { if m.FieldCleared(addonratecard.FieldDiscounts) { fields = append(fields, addonratecard.FieldDiscounts) } + if m.FieldCleared(addonratecard.FieldUnitConfig) { + fields = append(fields, addonratecard.FieldUnitConfig) + } if m.FieldCleared(addonratecard.FieldFeatureID) { fields = append(fields, addonratecard.FieldFeatureID) } @@ -3145,6 +3212,9 @@ func (m *AddonRateCardMutation) ClearField(name string) error { case addonratecard.FieldDiscounts: m.ClearDiscounts() return nil + case addonratecard.FieldUnitConfig: + m.ClearUnitConfig() + return nil case addonratecard.FieldFeatureID: m.ClearFeatureID() return nil @@ -3207,6 +3277,9 @@ func (m *AddonRateCardMutation) ResetField(name string) error { case addonratecard.FieldDiscounts: m.ResetDiscounts() return nil + case addonratecard.FieldUnitConfig: + m.ResetUnitConfig() + return nil case addonratecard.FieldAddonID: m.ResetAddonID() return nil @@ -25722,6 +25795,7 @@ type BillingInvoiceUsageBasedLineConfigMutation struct { pre_line_period_quantity *alpacadecimal.Decimal metered_pre_line_period_quantity *alpacadecimal.Decimal metered_quantity *alpacadecimal.Decimal + unit_config **productcatalog.UnitConfig clearedFields map[string]struct{} done bool oldValue func(context.Context) (*BillingInvoiceUsageBasedLineConfig, error) @@ -26136,6 +26210,55 @@ func (m *BillingInvoiceUsageBasedLineConfigMutation) ResetMeteredQuantity() { delete(m.clearedFields, billinginvoiceusagebasedlineconfig.FieldMeteredQuantity) } +// SetUnitConfig sets the "unit_config" field. +func (m *BillingInvoiceUsageBasedLineConfigMutation) SetUnitConfig(pc *productcatalog.UnitConfig) { + m.unit_config = &pc +} + +// UnitConfig returns the value of the "unit_config" field in the mutation. +func (m *BillingInvoiceUsageBasedLineConfigMutation) UnitConfig() (r *productcatalog.UnitConfig, exists bool) { + v := m.unit_config + if v == nil { + return + } + return *v, true +} + +// OldUnitConfig returns the old "unit_config" field's value of the BillingInvoiceUsageBasedLineConfig entity. +// If the BillingInvoiceUsageBasedLineConfig object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *BillingInvoiceUsageBasedLineConfigMutation) OldUnitConfig(ctx context.Context) (v *productcatalog.UnitConfig, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldUnitConfig is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldUnitConfig requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldUnitConfig: %w", err) + } + return oldValue.UnitConfig, nil +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (m *BillingInvoiceUsageBasedLineConfigMutation) ClearUnitConfig() { + m.unit_config = nil + m.clearedFields[billinginvoiceusagebasedlineconfig.FieldUnitConfig] = struct{}{} +} + +// UnitConfigCleared returns if the "unit_config" field was cleared in this mutation. +func (m *BillingInvoiceUsageBasedLineConfigMutation) UnitConfigCleared() bool { + _, ok := m.clearedFields[billinginvoiceusagebasedlineconfig.FieldUnitConfig] + return ok +} + +// ResetUnitConfig resets all changes to the "unit_config" field. +func (m *BillingInvoiceUsageBasedLineConfigMutation) ResetUnitConfig() { + m.unit_config = nil + delete(m.clearedFields, billinginvoiceusagebasedlineconfig.FieldUnitConfig) +} + // Where appends a list predicates to the BillingInvoiceUsageBasedLineConfigMutation builder. func (m *BillingInvoiceUsageBasedLineConfigMutation) Where(ps ...predicate.BillingInvoiceUsageBasedLineConfig) { m.predicates = append(m.predicates, ps...) @@ -26170,7 +26293,7 @@ func (m *BillingInvoiceUsageBasedLineConfigMutation) Type() string { // order to get all numeric fields that were incremented/decremented, call // AddedFields(). func (m *BillingInvoiceUsageBasedLineConfigMutation) Fields() []string { - fields := make([]string, 0, 7) + fields := make([]string, 0, 8) if m.namespace != nil { fields = append(fields, billinginvoiceusagebasedlineconfig.FieldNamespace) } @@ -26192,6 +26315,9 @@ func (m *BillingInvoiceUsageBasedLineConfigMutation) Fields() []string { if m.metered_quantity != nil { fields = append(fields, billinginvoiceusagebasedlineconfig.FieldMeteredQuantity) } + if m.unit_config != nil { + fields = append(fields, billinginvoiceusagebasedlineconfig.FieldUnitConfig) + } return fields } @@ -26214,6 +26340,8 @@ func (m *BillingInvoiceUsageBasedLineConfigMutation) Field(name string) (ent.Val return m.MeteredPreLinePeriodQuantity() case billinginvoiceusagebasedlineconfig.FieldMeteredQuantity: return m.MeteredQuantity() + case billinginvoiceusagebasedlineconfig.FieldUnitConfig: + return m.UnitConfig() } return nil, false } @@ -26237,6 +26365,8 @@ func (m *BillingInvoiceUsageBasedLineConfigMutation) OldField(ctx context.Contex return m.OldMeteredPreLinePeriodQuantity(ctx) case billinginvoiceusagebasedlineconfig.FieldMeteredQuantity: return m.OldMeteredQuantity(ctx) + case billinginvoiceusagebasedlineconfig.FieldUnitConfig: + return m.OldUnitConfig(ctx) } return nil, fmt.Errorf("unknown BillingInvoiceUsageBasedLineConfig field %s", name) } @@ -26295,6 +26425,13 @@ func (m *BillingInvoiceUsageBasedLineConfigMutation) SetField(name string, value } m.SetMeteredQuantity(v) return nil + case billinginvoiceusagebasedlineconfig.FieldUnitConfig: + v, ok := value.(*productcatalog.UnitConfig) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetUnitConfig(v) + return nil } return fmt.Errorf("unknown BillingInvoiceUsageBasedLineConfig field %s", name) } @@ -26337,6 +26474,9 @@ func (m *BillingInvoiceUsageBasedLineConfigMutation) ClearedFields() []string { if m.FieldCleared(billinginvoiceusagebasedlineconfig.FieldMeteredQuantity) { fields = append(fields, billinginvoiceusagebasedlineconfig.FieldMeteredQuantity) } + if m.FieldCleared(billinginvoiceusagebasedlineconfig.FieldUnitConfig) { + fields = append(fields, billinginvoiceusagebasedlineconfig.FieldUnitConfig) + } return fields } @@ -26363,6 +26503,9 @@ func (m *BillingInvoiceUsageBasedLineConfigMutation) ClearField(name string) err case billinginvoiceusagebasedlineconfig.FieldMeteredQuantity: m.ClearMeteredQuantity() return nil + case billinginvoiceusagebasedlineconfig.FieldUnitConfig: + m.ClearUnitConfig() + return nil } return fmt.Errorf("unknown BillingInvoiceUsageBasedLineConfig nullable field %s", name) } @@ -26392,6 +26535,9 @@ func (m *BillingInvoiceUsageBasedLineConfigMutation) ResetField(name string) err case billinginvoiceusagebasedlineconfig.FieldMeteredQuantity: m.ResetMeteredQuantity() return nil + case billinginvoiceusagebasedlineconfig.FieldUnitConfig: + m.ResetUnitConfig() + return nil } return fmt.Errorf("unknown BillingInvoiceUsageBasedLineConfig field %s", name) } @@ -58876,6 +59022,7 @@ type FeatureMutation struct { unit_cost_llm_model *string unit_cost_llm_token_type_property *string unit_cost_llm_token_type *string + unit_config *string archived_at *time.Time clearedFields map[string]struct{} entitlement map[string]struct{} @@ -59913,6 +60060,55 @@ func (m *FeatureMutation) ResetUnitCostLlmTokenType() { delete(m.clearedFields, dbfeature.FieldUnitCostLlmTokenType) } +// SetUnitConfig sets the "unit_config" field. +func (m *FeatureMutation) SetUnitConfig(s string) { + m.unit_config = &s +} + +// UnitConfig returns the value of the "unit_config" field in the mutation. +func (m *FeatureMutation) UnitConfig() (r string, exists bool) { + v := m.unit_config + if v == nil { + return + } + return *v, true +} + +// OldUnitConfig returns the old "unit_config" field's value of the Feature entity. +// If the Feature object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *FeatureMutation) OldUnitConfig(ctx context.Context) (v *string, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldUnitConfig is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldUnitConfig requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldUnitConfig: %w", err) + } + return oldValue.UnitConfig, nil +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (m *FeatureMutation) ClearUnitConfig() { + m.unit_config = nil + m.clearedFields[dbfeature.FieldUnitConfig] = struct{}{} +} + +// UnitConfigCleared returns if the "unit_config" field was cleared in this mutation. +func (m *FeatureMutation) UnitConfigCleared() bool { + _, ok := m.clearedFields[dbfeature.FieldUnitConfig] + return ok +} + +// ResetUnitConfig resets all changes to the "unit_config" field. +func (m *FeatureMutation) ResetUnitConfig() { + m.unit_config = nil + delete(m.clearedFields, dbfeature.FieldUnitConfig) +} + // SetArchivedAt sets the "archived_at" field. func (m *FeatureMutation) SetArchivedAt(t time.Time) { m.archived_at = &t @@ -60185,7 +60381,7 @@ func (m *FeatureMutation) Type() string { // order to get all numeric fields that were incremented/decremented, call // AddedFields(). func (m *FeatureMutation) Fields() []string { - fields := make([]string, 0, 21) + fields := make([]string, 0, 22) if m.created_at != nil { fields = append(fields, dbfeature.FieldCreatedAt) } @@ -60246,6 +60442,9 @@ func (m *FeatureMutation) Fields() []string { if m.unit_cost_llm_token_type != nil { fields = append(fields, dbfeature.FieldUnitCostLlmTokenType) } + if m.unit_config != nil { + fields = append(fields, dbfeature.FieldUnitConfig) + } if m.archived_at != nil { fields = append(fields, dbfeature.FieldArchivedAt) } @@ -60297,6 +60496,8 @@ func (m *FeatureMutation) Field(name string) (ent.Value, bool) { return m.UnitCostLlmTokenTypeProperty() case dbfeature.FieldUnitCostLlmTokenType: return m.UnitCostLlmTokenType() + case dbfeature.FieldUnitConfig: + return m.UnitConfig() case dbfeature.FieldArchivedAt: return m.ArchivedAt() } @@ -60348,6 +60549,8 @@ func (m *FeatureMutation) OldField(ctx context.Context, name string) (ent.Value, return m.OldUnitCostLlmTokenTypeProperty(ctx) case dbfeature.FieldUnitCostLlmTokenType: return m.OldUnitCostLlmTokenType(ctx) + case dbfeature.FieldUnitConfig: + return m.OldUnitConfig(ctx) case dbfeature.FieldArchivedAt: return m.OldArchivedAt(ctx) } @@ -60499,6 +60702,13 @@ func (m *FeatureMutation) SetField(name string, value ent.Value) error { } m.SetUnitCostLlmTokenType(v) return nil + case dbfeature.FieldUnitConfig: + v, ok := value.(string) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetUnitConfig(v) + return nil case dbfeature.FieldArchivedAt: v, ok := value.(time.Time) if !ok { @@ -60581,6 +60791,9 @@ func (m *FeatureMutation) ClearedFields() []string { if m.FieldCleared(dbfeature.FieldUnitCostLlmTokenType) { fields = append(fields, dbfeature.FieldUnitCostLlmTokenType) } + if m.FieldCleared(dbfeature.FieldUnitConfig) { + fields = append(fields, dbfeature.FieldUnitConfig) + } if m.FieldCleared(dbfeature.FieldArchivedAt) { fields = append(fields, dbfeature.FieldArchivedAt) } @@ -60643,6 +60856,9 @@ func (m *FeatureMutation) ClearField(name string) error { case dbfeature.FieldUnitCostLlmTokenType: m.ClearUnitCostLlmTokenType() return nil + case dbfeature.FieldUnitConfig: + m.ClearUnitConfig() + return nil case dbfeature.FieldArchivedAt: m.ClearArchivedAt() return nil @@ -60714,6 +60930,9 @@ func (m *FeatureMutation) ResetField(name string) error { case dbfeature.FieldUnitCostLlmTokenType: m.ResetUnitCostLlmTokenType() return nil + case dbfeature.FieldUnitConfig: + m.ResetUnitConfig() + return nil case dbfeature.FieldArchivedAt: m.ResetArchivedAt() return nil @@ -78459,6 +78678,7 @@ type PlanRateCardMutation struct { billing_cadence *datetime.ISODurationString price **productcatalog.Price discounts **productcatalog.Discounts + unit_config **productcatalog.UnitConfig clearedFields map[string]struct{} phase *string clearedphase bool @@ -79330,6 +79550,55 @@ func (m *PlanRateCardMutation) ResetDiscounts() { delete(m.clearedFields, planratecard.FieldDiscounts) } +// SetUnitConfig sets the "unit_config" field. +func (m *PlanRateCardMutation) SetUnitConfig(pc *productcatalog.UnitConfig) { + m.unit_config = &pc +} + +// UnitConfig returns the value of the "unit_config" field in the mutation. +func (m *PlanRateCardMutation) UnitConfig() (r *productcatalog.UnitConfig, exists bool) { + v := m.unit_config + if v == nil { + return + } + return *v, true +} + +// OldUnitConfig returns the old "unit_config" field's value of the PlanRateCard entity. +// If the PlanRateCard object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *PlanRateCardMutation) OldUnitConfig(ctx context.Context) (v *productcatalog.UnitConfig, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldUnitConfig is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldUnitConfig requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldUnitConfig: %w", err) + } + return oldValue.UnitConfig, nil +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (m *PlanRateCardMutation) ClearUnitConfig() { + m.unit_config = nil + m.clearedFields[planratecard.FieldUnitConfig] = struct{}{} +} + +// UnitConfigCleared returns if the "unit_config" field was cleared in this mutation. +func (m *PlanRateCardMutation) UnitConfigCleared() bool { + _, ok := m.clearedFields[planratecard.FieldUnitConfig] + return ok +} + +// ResetUnitConfig resets all changes to the "unit_config" field. +func (m *PlanRateCardMutation) ResetUnitConfig() { + m.unit_config = nil + delete(m.clearedFields, planratecard.FieldUnitConfig) +} + // SetPhaseID sets the "phase_id" field. func (m *PlanRateCardMutation) SetPhaseID(s string) { m.phase = &s @@ -79543,7 +79812,7 @@ func (m *PlanRateCardMutation) Type() string { // order to get all numeric fields that were incremented/decremented, call // AddedFields(). func (m *PlanRateCardMutation) Fields() []string { - fields := make([]string, 0, 19) + fields := make([]string, 0, 20) if m.namespace != nil { fields = append(fields, planratecard.FieldNamespace) } @@ -79595,6 +79864,9 @@ func (m *PlanRateCardMutation) Fields() []string { if m.discounts != nil { fields = append(fields, planratecard.FieldDiscounts) } + if m.unit_config != nil { + fields = append(fields, planratecard.FieldUnitConfig) + } if m.phase != nil { fields = append(fields, planratecard.FieldPhaseID) } @@ -79643,6 +79915,8 @@ func (m *PlanRateCardMutation) Field(name string) (ent.Value, bool) { return m.Price() case planratecard.FieldDiscounts: return m.Discounts() + case planratecard.FieldUnitConfig: + return m.UnitConfig() case planratecard.FieldPhaseID: return m.PhaseID() case planratecard.FieldFeatureID: @@ -79690,6 +79964,8 @@ func (m *PlanRateCardMutation) OldField(ctx context.Context, name string) (ent.V return m.OldPrice(ctx) case planratecard.FieldDiscounts: return m.OldDiscounts(ctx) + case planratecard.FieldUnitConfig: + return m.OldUnitConfig(ctx) case planratecard.FieldPhaseID: return m.OldPhaseID(ctx) case planratecard.FieldFeatureID: @@ -79822,6 +80098,13 @@ func (m *PlanRateCardMutation) SetField(name string, value ent.Value) error { } m.SetDiscounts(v) return nil + case planratecard.FieldUnitConfig: + v, ok := value.(*productcatalog.UnitConfig) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetUnitConfig(v) + return nil case planratecard.FieldPhaseID: v, ok := value.(string) if !ok { @@ -79899,6 +80182,9 @@ func (m *PlanRateCardMutation) ClearedFields() []string { if m.FieldCleared(planratecard.FieldDiscounts) { fields = append(fields, planratecard.FieldDiscounts) } + if m.FieldCleared(planratecard.FieldUnitConfig) { + fields = append(fields, planratecard.FieldUnitConfig) + } if m.FieldCleared(planratecard.FieldFeatureID) { fields = append(fields, planratecard.FieldFeatureID) } @@ -79949,6 +80235,9 @@ func (m *PlanRateCardMutation) ClearField(name string) error { case planratecard.FieldDiscounts: m.ClearDiscounts() return nil + case planratecard.FieldUnitConfig: + m.ClearUnitConfig() + return nil case planratecard.FieldFeatureID: m.ClearFeatureID() return nil @@ -80011,6 +80300,9 @@ func (m *PlanRateCardMutation) ResetField(name string) error { case planratecard.FieldDiscounts: m.ResetDiscounts() return nil + case planratecard.FieldUnitConfig: + m.ResetUnitConfig() + return nil case planratecard.FieldPhaseID: m.ResetPhaseID() return nil @@ -85056,6 +85348,7 @@ type SubscriptionItemMutation struct { billing_cadence *datetime.ISODurationString price **productcatalog.Price discounts **productcatalog.Discounts + unit_config **productcatalog.UnitConfig clearedFields map[string]struct{} phase *string clearedphase bool @@ -86266,6 +86559,55 @@ func (m *SubscriptionItemMutation) ResetDiscounts() { delete(m.clearedFields, subscriptionitem.FieldDiscounts) } +// SetUnitConfig sets the "unit_config" field. +func (m *SubscriptionItemMutation) SetUnitConfig(pc *productcatalog.UnitConfig) { + m.unit_config = &pc +} + +// UnitConfig returns the value of the "unit_config" field in the mutation. +func (m *SubscriptionItemMutation) UnitConfig() (r *productcatalog.UnitConfig, exists bool) { + v := m.unit_config + if v == nil { + return + } + return *v, true +} + +// OldUnitConfig returns the old "unit_config" field's value of the SubscriptionItem entity. +// If the SubscriptionItem object wasn't provided to the builder, the object is fetched from the database. +// An error is returned if the mutation operation is not UpdateOne, or the database query fails. +func (m *SubscriptionItemMutation) OldUnitConfig(ctx context.Context) (v *productcatalog.UnitConfig, err error) { + if !m.op.Is(OpUpdateOne) { + return v, errors.New("OldUnitConfig is only allowed on UpdateOne operations") + } + if m.id == nil || m.oldValue == nil { + return v, errors.New("OldUnitConfig requires an ID field in the mutation") + } + oldValue, err := m.oldValue(ctx) + if err != nil { + return v, fmt.Errorf("querying old value for OldUnitConfig: %w", err) + } + return oldValue.UnitConfig, nil +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (m *SubscriptionItemMutation) ClearUnitConfig() { + m.unit_config = nil + m.clearedFields[subscriptionitem.FieldUnitConfig] = struct{}{} +} + +// UnitConfigCleared returns if the "unit_config" field was cleared in this mutation. +func (m *SubscriptionItemMutation) UnitConfigCleared() bool { + _, ok := m.clearedFields[subscriptionitem.FieldUnitConfig] + return ok +} + +// ResetUnitConfig resets all changes to the "unit_config" field. +func (m *SubscriptionItemMutation) ResetUnitConfig() { + m.unit_config = nil + delete(m.clearedFields, subscriptionitem.FieldUnitConfig) +} + // ClearPhase clears the "phase" edge to the SubscriptionPhase entity. func (m *SubscriptionItemMutation) ClearPhase() { m.clearedphase = true @@ -86543,7 +86885,7 @@ func (m *SubscriptionItemMutation) Type() string { // order to get all numeric fields that were incremented/decremented, call // AddedFields(). func (m *SubscriptionItemMutation) Fields() []string { - fields := make([]string, 0, 24) + fields := make([]string, 0, 25) if m.namespace != nil { fields = append(fields, subscriptionitem.FieldNamespace) } @@ -86616,6 +86958,9 @@ func (m *SubscriptionItemMutation) Fields() []string { if m.discounts != nil { fields = append(fields, subscriptionitem.FieldDiscounts) } + if m.unit_config != nil { + fields = append(fields, subscriptionitem.FieldUnitConfig) + } return fields } @@ -86672,6 +87017,8 @@ func (m *SubscriptionItemMutation) Field(name string) (ent.Value, bool) { return m.Price() case subscriptionitem.FieldDiscounts: return m.Discounts() + case subscriptionitem.FieldUnitConfig: + return m.UnitConfig() } return nil, false } @@ -86729,6 +87076,8 @@ func (m *SubscriptionItemMutation) OldField(ctx context.Context, name string) (e return m.OldPrice(ctx) case subscriptionitem.FieldDiscounts: return m.OldDiscounts(ctx) + case subscriptionitem.FieldUnitConfig: + return m.OldUnitConfig(ctx) } return nil, fmt.Errorf("unknown SubscriptionItem field %s", name) } @@ -86906,6 +87255,13 @@ func (m *SubscriptionItemMutation) SetField(name string, value ent.Value) error } m.SetDiscounts(v) return nil + case subscriptionitem.FieldUnitConfig: + v, ok := value.(*productcatalog.UnitConfig) + if !ok { + return fmt.Errorf("unexpected type %T for field %s", value, name) + } + m.SetUnitConfig(v) + return nil } return fmt.Errorf("unknown SubscriptionItem field %s", name) } @@ -86987,6 +87343,9 @@ func (m *SubscriptionItemMutation) ClearedFields() []string { if m.FieldCleared(subscriptionitem.FieldDiscounts) { fields = append(fields, subscriptionitem.FieldDiscounts) } + if m.FieldCleared(subscriptionitem.FieldUnitConfig) { + fields = append(fields, subscriptionitem.FieldUnitConfig) + } return fields } @@ -87052,6 +87411,9 @@ func (m *SubscriptionItemMutation) ClearField(name string) error { case subscriptionitem.FieldDiscounts: m.ClearDiscounts() return nil + case subscriptionitem.FieldUnitConfig: + m.ClearUnitConfig() + return nil } return fmt.Errorf("unknown SubscriptionItem nullable field %s", name) } @@ -87132,6 +87494,9 @@ func (m *SubscriptionItemMutation) ResetField(name string) error { case subscriptionitem.FieldDiscounts: m.ResetDiscounts() return nil + case subscriptionitem.FieldUnitConfig: + m.ResetUnitConfig() + return nil } return fmt.Errorf("unknown SubscriptionItem field %s", name) } diff --git a/openmeter/ent/db/planratecard.go b/openmeter/ent/db/planratecard.go index 70e01b07d7..5ccdd10366 100644 --- a/openmeter/ent/db/planratecard.go +++ b/openmeter/ent/db/planratecard.go @@ -57,6 +57,8 @@ type PlanRateCard struct { Price *productcatalog.Price `json:"price,omitempty"` // Discounts holds the value of the "discounts" field. Discounts *productcatalog.Discounts `json:"discounts,omitempty"` + // UnitConfig holds the value of the "unit_config" field. + UnitConfig *productcatalog.UnitConfig `json:"unit_config,omitempty"` // The phase identifier the ratecard is assigned to. PhaseID string `json:"phase_id,omitempty"` // The feature identifier the ratecard is related to. @@ -132,6 +134,8 @@ func (*PlanRateCard) scanValues(columns []string) ([]any, error) { values[i] = planratecard.ValueScanner.Price.ScanValue() case planratecard.FieldDiscounts: values[i] = planratecard.ValueScanner.Discounts.ScanValue() + case planratecard.FieldUnitConfig: + values[i] = planratecard.ValueScanner.UnitConfig.ScanValue() default: values[i] = new(sql.UnknownType) } @@ -263,6 +267,12 @@ func (_m *PlanRateCard) assignValues(columns []string, values []any) error { } else { _m.Discounts = value } + case planratecard.FieldUnitConfig: + if value, err := planratecard.ValueScanner.UnitConfig.FromValue(values[i]); err != nil { + return err + } else { + _m.UnitConfig = value + } case planratecard.FieldPhaseID: if value, ok := values[i].(*sql.NullString); !ok { return fmt.Errorf("unexpected type %T for field phase_id", values[i]) @@ -398,6 +408,11 @@ func (_m *PlanRateCard) String() string { builder.WriteString(fmt.Sprintf("%v", *v)) } builder.WriteString(", ") + if v := _m.UnitConfig; v != nil { + builder.WriteString("unit_config=") + builder.WriteString(fmt.Sprintf("%v", *v)) + } + builder.WriteString(", ") builder.WriteString("phase_id=") builder.WriteString(_m.PhaseID) builder.WriteString(", ") diff --git a/openmeter/ent/db/planratecard/planratecard.go b/openmeter/ent/db/planratecard/planratecard.go index 4365d033f3..dc10fe6e9a 100644 --- a/openmeter/ent/db/planratecard/planratecard.go +++ b/openmeter/ent/db/planratecard/planratecard.go @@ -51,6 +51,8 @@ const ( FieldPrice = "price" // FieldDiscounts holds the string denoting the discounts field in the database. FieldDiscounts = "discounts" + // FieldUnitConfig holds the string denoting the unit_config field in the database. + FieldUnitConfig = "unit_config" // FieldPhaseID holds the string denoting the phase_id field in the database. FieldPhaseID = "phase_id" // FieldFeatureID holds the string denoting the feature_id field in the database. @@ -106,6 +108,7 @@ var Columns = []string{ FieldBillingCadence, FieldPrice, FieldDiscounts, + FieldUnitConfig, FieldPhaseID, FieldFeatureID, } @@ -141,6 +144,7 @@ var ( TaxConfig field.TypeValueScanner[*productcatalog.TaxConfig] Price field.TypeValueScanner[*productcatalog.Price] Discounts field.TypeValueScanner[*productcatalog.Discounts] + UnitConfig field.TypeValueScanner[*productcatalog.UnitConfig] } ) @@ -252,6 +256,11 @@ func ByDiscounts(opts ...sql.OrderTermOption) OrderOption { return sql.OrderByField(FieldDiscounts, opts...).ToFunc() } +// ByUnitConfig orders the results by the unit_config field. +func ByUnitConfig(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldUnitConfig, opts...).ToFunc() +} + // ByPhaseID orders the results by the phase_id field. func ByPhaseID(opts ...sql.OrderTermOption) OrderOption { return sql.OrderByField(FieldPhaseID, opts...).ToFunc() diff --git a/openmeter/ent/db/planratecard/where.go b/openmeter/ent/db/planratecard/where.go index f7a308d4a5..53571ffbcc 100644 --- a/openmeter/ent/db/planratecard/where.go +++ b/openmeter/ent/db/planratecard/where.go @@ -892,6 +892,16 @@ func DiscountsNotNil() predicate.PlanRateCard { return predicate.PlanRateCard(sql.FieldNotNull(FieldDiscounts)) } +// UnitConfigIsNil applies the IsNil predicate on the "unit_config" field. +func UnitConfigIsNil() predicate.PlanRateCard { + return predicate.PlanRateCard(sql.FieldIsNull(FieldUnitConfig)) +} + +// UnitConfigNotNil applies the NotNil predicate on the "unit_config" field. +func UnitConfigNotNil() predicate.PlanRateCard { + return predicate.PlanRateCard(sql.FieldNotNull(FieldUnitConfig)) +} + // PhaseIDEQ applies the EQ predicate on the "phase_id" field. func PhaseIDEQ(v string) predicate.PlanRateCard { return predicate.PlanRateCard(sql.FieldEQ(FieldPhaseID, v)) diff --git a/openmeter/ent/db/planratecard_create.go b/openmeter/ent/db/planratecard_create.go index cac13b620a..40ec02ffbf 100644 --- a/openmeter/ent/db/planratecard_create.go +++ b/openmeter/ent/db/planratecard_create.go @@ -194,6 +194,12 @@ func (_c *PlanRateCardCreate) SetDiscounts(v *productcatalog.Discounts) *PlanRat return _c } +// SetUnitConfig sets the "unit_config" field. +func (_c *PlanRateCardCreate) SetUnitConfig(v *productcatalog.UnitConfig) *PlanRateCardCreate { + _c.mutation.SetUnitConfig(v) + return _c +} + // SetPhaseID sets the "phase_id" field. func (_c *PlanRateCardCreate) SetPhaseID(v string) *PlanRateCardCreate { _c.mutation.SetPhaseID(v) @@ -366,6 +372,11 @@ func (_c *PlanRateCardCreate) check() error { return &ValidationError{Name: "discounts", err: fmt.Errorf(`db: validator failed for field "PlanRateCard.discounts": %w`, err)} } } + if v, ok := _c.mutation.UnitConfig(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "unit_config", err: fmt.Errorf(`db: validator failed for field "PlanRateCard.unit_config": %w`, err)} + } + } if _, ok := _c.mutation.PhaseID(); !ok { return &ValidationError{Name: "phase_id", err: errors.New(`db: missing required field "PlanRateCard.phase_id"`)} } @@ -496,6 +507,14 @@ func (_c *PlanRateCardCreate) createSpec() (*PlanRateCard, *sqlgraph.CreateSpec, _spec.SetField(planratecard.FieldDiscounts, field.TypeString, vv) _node.Discounts = value } + if value, ok := _c.mutation.UnitConfig(); ok { + vv, err := planratecard.ValueScanner.UnitConfig.Value(value) + if err != nil { + return nil, nil, err + } + _spec.SetField(planratecard.FieldUnitConfig, field.TypeString, vv) + _node.UnitConfig = value + } if nodes := _c.mutation.PhaseIDs(); len(nodes) > 0 { edge := &sqlgraph.EdgeSpec{ Rel: sqlgraph.M2O, @@ -821,6 +840,24 @@ func (u *PlanRateCardUpsert) ClearDiscounts() *PlanRateCardUpsert { return u } +// SetUnitConfig sets the "unit_config" field. +func (u *PlanRateCardUpsert) SetUnitConfig(v *productcatalog.UnitConfig) *PlanRateCardUpsert { + u.Set(planratecard.FieldUnitConfig, v) + return u +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *PlanRateCardUpsert) UpdateUnitConfig() *PlanRateCardUpsert { + u.SetExcluded(planratecard.FieldUnitConfig) + return u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *PlanRateCardUpsert) ClearUnitConfig() *PlanRateCardUpsert { + u.SetNull(planratecard.FieldUnitConfig) + return u +} + // SetPhaseID sets the "phase_id" field. func (u *PlanRateCardUpsert) SetPhaseID(v string) *PlanRateCardUpsert { u.Set(planratecard.FieldPhaseID, v) @@ -1170,6 +1207,27 @@ func (u *PlanRateCardUpsertOne) ClearDiscounts() *PlanRateCardUpsertOne { }) } +// SetUnitConfig sets the "unit_config" field. +func (u *PlanRateCardUpsertOne) SetUnitConfig(v *productcatalog.UnitConfig) *PlanRateCardUpsertOne { + return u.Update(func(s *PlanRateCardUpsert) { + s.SetUnitConfig(v) + }) +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *PlanRateCardUpsertOne) UpdateUnitConfig() *PlanRateCardUpsertOne { + return u.Update(func(s *PlanRateCardUpsert) { + s.UpdateUnitConfig() + }) +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *PlanRateCardUpsertOne) ClearUnitConfig() *PlanRateCardUpsertOne { + return u.Update(func(s *PlanRateCardUpsert) { + s.ClearUnitConfig() + }) +} + // SetPhaseID sets the "phase_id" field. func (u *PlanRateCardUpsertOne) SetPhaseID(v string) *PlanRateCardUpsertOne { return u.Update(func(s *PlanRateCardUpsert) { @@ -1694,6 +1752,27 @@ func (u *PlanRateCardUpsertBulk) ClearDiscounts() *PlanRateCardUpsertBulk { }) } +// SetUnitConfig sets the "unit_config" field. +func (u *PlanRateCardUpsertBulk) SetUnitConfig(v *productcatalog.UnitConfig) *PlanRateCardUpsertBulk { + return u.Update(func(s *PlanRateCardUpsert) { + s.SetUnitConfig(v) + }) +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *PlanRateCardUpsertBulk) UpdateUnitConfig() *PlanRateCardUpsertBulk { + return u.Update(func(s *PlanRateCardUpsert) { + s.UpdateUnitConfig() + }) +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *PlanRateCardUpsertBulk) ClearUnitConfig() *PlanRateCardUpsertBulk { + return u.Update(func(s *PlanRateCardUpsert) { + s.ClearUnitConfig() + }) +} + // SetPhaseID sets the "phase_id" field. func (u *PlanRateCardUpsertBulk) SetPhaseID(v string) *PlanRateCardUpsertBulk { return u.Update(func(s *PlanRateCardUpsert) { diff --git a/openmeter/ent/db/planratecard_update.go b/openmeter/ent/db/planratecard_update.go index 98ead635c0..5a7a18ec93 100644 --- a/openmeter/ent/db/planratecard_update.go +++ b/openmeter/ent/db/planratecard_update.go @@ -233,6 +233,18 @@ func (_u *PlanRateCardUpdate) ClearDiscounts() *PlanRateCardUpdate { return _u } +// SetUnitConfig sets the "unit_config" field. +func (_u *PlanRateCardUpdate) SetUnitConfig(v *productcatalog.UnitConfig) *PlanRateCardUpdate { + _u.mutation.SetUnitConfig(v) + return _u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (_u *PlanRateCardUpdate) ClearUnitConfig() *PlanRateCardUpdate { + _u.mutation.ClearUnitConfig() + return _u +} + // SetPhaseID sets the "phase_id" field. func (_u *PlanRateCardUpdate) SetPhaseID(v string) *PlanRateCardUpdate { _u.mutation.SetPhaseID(v) @@ -382,6 +394,11 @@ func (_u *PlanRateCardUpdate) check() error { return &ValidationError{Name: "discounts", err: fmt.Errorf(`db: validator failed for field "PlanRateCard.discounts": %w`, err)} } } + if v, ok := _u.mutation.UnitConfig(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "unit_config", err: fmt.Errorf(`db: validator failed for field "PlanRateCard.unit_config": %w`, err)} + } + } if v, ok := _u.mutation.PhaseID(); ok { if err := planratecard.PhaseIDValidator(v); err != nil { return &ValidationError{Name: "phase_id", err: fmt.Errorf(`db: validator failed for field "PlanRateCard.phase_id": %w`, err)} @@ -487,6 +504,16 @@ func (_u *PlanRateCardUpdate) sqlSave(ctx context.Context) (_node int, err error if _u.mutation.DiscountsCleared() { _spec.ClearField(planratecard.FieldDiscounts, field.TypeString) } + if value, ok := _u.mutation.UnitConfig(); ok { + vv, err := planratecard.ValueScanner.UnitConfig.Value(value) + if err != nil { + return 0, err + } + _spec.SetField(planratecard.FieldUnitConfig, field.TypeString, vv) + } + if _u.mutation.UnitConfigCleared() { + _spec.ClearField(planratecard.FieldUnitConfig, field.TypeString) + } if _u.mutation.PhaseCleared() { edge := &sqlgraph.EdgeSpec{ Rel: sqlgraph.M2O, @@ -794,6 +821,18 @@ func (_u *PlanRateCardUpdateOne) ClearDiscounts() *PlanRateCardUpdateOne { return _u } +// SetUnitConfig sets the "unit_config" field. +func (_u *PlanRateCardUpdateOne) SetUnitConfig(v *productcatalog.UnitConfig) *PlanRateCardUpdateOne { + _u.mutation.SetUnitConfig(v) + return _u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (_u *PlanRateCardUpdateOne) ClearUnitConfig() *PlanRateCardUpdateOne { + _u.mutation.ClearUnitConfig() + return _u +} + // SetPhaseID sets the "phase_id" field. func (_u *PlanRateCardUpdateOne) SetPhaseID(v string) *PlanRateCardUpdateOne { _u.mutation.SetPhaseID(v) @@ -956,6 +995,11 @@ func (_u *PlanRateCardUpdateOne) check() error { return &ValidationError{Name: "discounts", err: fmt.Errorf(`db: validator failed for field "PlanRateCard.discounts": %w`, err)} } } + if v, ok := _u.mutation.UnitConfig(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "unit_config", err: fmt.Errorf(`db: validator failed for field "PlanRateCard.unit_config": %w`, err)} + } + } if v, ok := _u.mutation.PhaseID(); ok { if err := planratecard.PhaseIDValidator(v); err != nil { return &ValidationError{Name: "phase_id", err: fmt.Errorf(`db: validator failed for field "PlanRateCard.phase_id": %w`, err)} @@ -1078,6 +1122,16 @@ func (_u *PlanRateCardUpdateOne) sqlSave(ctx context.Context) (_node *PlanRateCa if _u.mutation.DiscountsCleared() { _spec.ClearField(planratecard.FieldDiscounts, field.TypeString) } + if value, ok := _u.mutation.UnitConfig(); ok { + vv, err := planratecard.ValueScanner.UnitConfig.Value(value) + if err != nil { + return nil, err + } + _spec.SetField(planratecard.FieldUnitConfig, field.TypeString, vv) + } + if _u.mutation.UnitConfigCleared() { + _spec.ClearField(planratecard.FieldUnitConfig, field.TypeString) + } if _u.mutation.PhaseCleared() { edge := &sqlgraph.EdgeSpec{ Rel: sqlgraph.M2O, diff --git a/openmeter/ent/db/runtime.go b/openmeter/ent/db/runtime.go index 1612a55bba..d214420043 100644 --- a/openmeter/ent/db/runtime.go +++ b/openmeter/ent/db/runtime.go @@ -168,8 +168,11 @@ func init() { // addonratecardDescDiscounts is the schema descriptor for discounts field. addonratecardDescDiscounts := addonratecardFields[6].Descriptor() addonratecard.ValueScanner.Discounts = addonratecardDescDiscounts.ValueScanner.(field.TypeValueScanner[*productcatalog.Discounts]) + // addonratecardDescUnitConfig is the schema descriptor for unit_config field. + addonratecardDescUnitConfig := addonratecardFields[7].Descriptor() + addonratecard.ValueScanner.UnitConfig = addonratecardDescUnitConfig.ValueScanner.(field.TypeValueScanner[*productcatalog.UnitConfig]) // addonratecardDescAddonID is the schema descriptor for addon_id field. - addonratecardDescAddonID := addonratecardFields[7].Descriptor() + addonratecardDescAddonID := addonratecardFields[8].Descriptor() // addonratecard.AddonIDValidator is a validator for the "addon_id" field. It is called by the builders before save. addonratecard.AddonIDValidator = addonratecardDescAddonID.Validators[0].(func(string) error) // addonratecardDescID is the schema descriptor for id field. @@ -685,6 +688,9 @@ func init() { // billinginvoiceusagebasedlineconfigDescPrice is the schema descriptor for price field. billinginvoiceusagebasedlineconfigDescPrice := billinginvoiceusagebasedlineconfigFields[2].Descriptor() billinginvoiceusagebasedlineconfig.ValueScanner.Price = billinginvoiceusagebasedlineconfigDescPrice.ValueScanner.(field.TypeValueScanner[*productcatalog.Price]) + // billinginvoiceusagebasedlineconfigDescUnitConfig is the schema descriptor for unit_config field. + billinginvoiceusagebasedlineconfigDescUnitConfig := billinginvoiceusagebasedlineconfigFields[6].Descriptor() + billinginvoiceusagebasedlineconfig.ValueScanner.UnitConfig = billinginvoiceusagebasedlineconfigDescUnitConfig.ValueScanner.(field.TypeValueScanner[*productcatalog.UnitConfig]) // billinginvoiceusagebasedlineconfigDescID is the schema descriptor for id field. billinginvoiceusagebasedlineconfigDescID := billinginvoiceusagebasedlineconfigMixinFields1[0].Descriptor() // billinginvoiceusagebasedlineconfig.DefaultID holds the default value on creation for the id field. @@ -2120,8 +2126,11 @@ func init() { // planratecardDescDiscounts is the schema descriptor for discounts field. planratecardDescDiscounts := planratecardFields[6].Descriptor() planratecard.ValueScanner.Discounts = planratecardDescDiscounts.ValueScanner.(field.TypeValueScanner[*productcatalog.Discounts]) + // planratecardDescUnitConfig is the schema descriptor for unit_config field. + planratecardDescUnitConfig := planratecardFields[7].Descriptor() + planratecard.ValueScanner.UnitConfig = planratecardDescUnitConfig.ValueScanner.(field.TypeValueScanner[*productcatalog.UnitConfig]) // planratecardDescPhaseID is the schema descriptor for phase_id field. - planratecardDescPhaseID := planratecardFields[7].Descriptor() + planratecardDescPhaseID := planratecardFields[8].Descriptor() // planratecard.PhaseIDValidator is a validator for the "phase_id" field. It is called by the builders before save. planratecard.PhaseIDValidator = planratecardDescPhaseID.Validators[0].(func(string) error) // planratecardDescID is the schema descriptor for id field. @@ -2365,6 +2374,9 @@ func init() { // subscriptionitemDescDiscounts is the schema descriptor for discounts field. subscriptionitemDescDiscounts := subscriptionitemFields[16].Descriptor() subscriptionitem.ValueScanner.Discounts = subscriptionitemDescDiscounts.ValueScanner.(field.TypeValueScanner[*productcatalog.Discounts]) + // subscriptionitemDescUnitConfig is the schema descriptor for unit_config field. + subscriptionitemDescUnitConfig := subscriptionitemFields[17].Descriptor() + subscriptionitem.ValueScanner.UnitConfig = subscriptionitemDescUnitConfig.ValueScanner.(field.TypeValueScanner[*productcatalog.UnitConfig]) // subscriptionitemDescID is the schema descriptor for id field. subscriptionitemDescID := subscriptionitemMixinFields0[0].Descriptor() // subscriptionitem.DefaultID holds the default value on creation for the id field. diff --git a/openmeter/ent/db/setorclear.go b/openmeter/ent/db/setorclear.go index d10f2a7295..5cf3d3418a 100644 --- a/openmeter/ent/db/setorclear.go +++ b/openmeter/ent/db/setorclear.go @@ -255,6 +255,20 @@ func (u *AddonRateCardUpdateOne) SetOrClearDiscounts(value **productcatalog.Disc return u.SetDiscounts(*value) } +func (u *AddonRateCardUpdate) SetOrClearUnitConfig(value **productcatalog.UnitConfig) *AddonRateCardUpdate { + if value == nil { + return u.ClearUnitConfig() + } + return u.SetUnitConfig(*value) +} + +func (u *AddonRateCardUpdateOne) SetOrClearUnitConfig(value **productcatalog.UnitConfig) *AddonRateCardUpdateOne { + if value == nil { + return u.ClearUnitConfig() + } + return u.SetUnitConfig(*value) +} + func (u *AddonRateCardUpdate) SetOrClearFeatureID(value *string) *AddonRateCardUpdate { if value == nil { return u.ClearFeatureID() @@ -1781,6 +1795,20 @@ func (u *BillingInvoiceUsageBasedLineConfigUpdateOne) SetOrClearMeteredQuantity( return u.SetMeteredQuantity(*value) } +func (u *BillingInvoiceUsageBasedLineConfigUpdate) SetOrClearUnitConfig(value **productcatalog.UnitConfig) *BillingInvoiceUsageBasedLineConfigUpdate { + if value == nil { + return u.ClearUnitConfig() + } + return u.SetUnitConfig(*value) +} + +func (u *BillingInvoiceUsageBasedLineConfigUpdateOne) SetOrClearUnitConfig(value **productcatalog.UnitConfig) *BillingInvoiceUsageBasedLineConfigUpdateOne { + if value == nil { + return u.ClearUnitConfig() + } + return u.SetUnitConfig(*value) +} + func (u *BillingInvoiceValidationIssueUpdate) SetOrClearDeletedAt(value *time.Time) *BillingInvoiceValidationIssueUpdate { if value == nil { return u.ClearDeletedAt() @@ -3531,6 +3559,20 @@ func (u *FeatureUpdateOne) SetOrClearUnitCostLlmTokenType(value *string) *Featur return u.SetUnitCostLlmTokenType(*value) } +func (u *FeatureUpdate) SetOrClearUnitConfig(value *string) *FeatureUpdate { + if value == nil { + return u.ClearUnitConfig() + } + return u.SetUnitConfig(*value) +} + +func (u *FeatureUpdateOne) SetOrClearUnitConfig(value *string) *FeatureUpdateOne { + if value == nil { + return u.ClearUnitConfig() + } + return u.SetUnitConfig(*value) +} + func (u *FeatureUpdate) SetOrClearArchivedAt(value *time.Time) *FeatureUpdate { if value == nil { return u.ClearArchivedAt() @@ -4455,6 +4497,20 @@ func (u *PlanRateCardUpdateOne) SetOrClearDiscounts(value **productcatalog.Disco return u.SetDiscounts(*value) } +func (u *PlanRateCardUpdate) SetOrClearUnitConfig(value **productcatalog.UnitConfig) *PlanRateCardUpdate { + if value == nil { + return u.ClearUnitConfig() + } + return u.SetUnitConfig(*value) +} + +func (u *PlanRateCardUpdateOne) SetOrClearUnitConfig(value **productcatalog.UnitConfig) *PlanRateCardUpdateOne { + if value == nil { + return u.ClearUnitConfig() + } + return u.SetUnitConfig(*value) +} + func (u *PlanRateCardUpdate) SetOrClearFeatureID(value *string) *PlanRateCardUpdate { if value == nil { return u.ClearFeatureID() @@ -4903,6 +4959,20 @@ func (u *SubscriptionItemUpdateOne) SetOrClearDiscounts(value **productcatalog.D return u.SetDiscounts(*value) } +func (u *SubscriptionItemUpdate) SetOrClearUnitConfig(value **productcatalog.UnitConfig) *SubscriptionItemUpdate { + if value == nil { + return u.ClearUnitConfig() + } + return u.SetUnitConfig(*value) +} + +func (u *SubscriptionItemUpdateOne) SetOrClearUnitConfig(value **productcatalog.UnitConfig) *SubscriptionItemUpdateOne { + if value == nil { + return u.ClearUnitConfig() + } + return u.SetUnitConfig(*value) +} + func (u *SubscriptionPhaseUpdate) SetOrClearDeletedAt(value *time.Time) *SubscriptionPhaseUpdate { if value == nil { return u.ClearDeletedAt() diff --git a/openmeter/ent/db/subscriptionitem.go b/openmeter/ent/db/subscriptionitem.go index a18e9db304..15e4453bb0 100644 --- a/openmeter/ent/db/subscriptionitem.go +++ b/openmeter/ent/db/subscriptionitem.go @@ -72,6 +72,8 @@ type SubscriptionItem struct { Price *productcatalog.Price `json:"price,omitempty"` // Discounts holds the value of the "discounts" field. Discounts *productcatalog.Discounts `json:"discounts,omitempty"` + // UnitConfig holds the value of the "unit_config" field. + UnitConfig *productcatalog.UnitConfig `json:"unit_config,omitempty"` // Edges holds the relations/edges for other nodes in the graph. // The values are being populated by the SubscriptionItemQuery when eager-loading is set. Edges SubscriptionItemEdges `json:"edges"` @@ -180,6 +182,8 @@ func (*SubscriptionItem) scanValues(columns []string) ([]any, error) { values[i] = subscriptionitem.ValueScanner.Price.ScanValue() case subscriptionitem.FieldDiscounts: values[i] = subscriptionitem.ValueScanner.Discounts.ScanValue() + case subscriptionitem.FieldUnitConfig: + values[i] = subscriptionitem.ValueScanner.UnitConfig.ScanValue() default: values[i] = new(sql.UnknownType) } @@ -358,6 +362,12 @@ func (_m *SubscriptionItem) assignValues(columns []string, values []any) error { } else { _m.Discounts = value } + case subscriptionitem.FieldUnitConfig: + if value, err := subscriptionitem.ValueScanner.UnitConfig.FromValue(values[i]); err != nil { + return err + } else { + _m.UnitConfig = value + } default: _m.selectValues.Set(columns[i], values[i]) } @@ -525,6 +535,11 @@ func (_m *SubscriptionItem) String() string { builder.WriteString("discounts=") builder.WriteString(fmt.Sprintf("%v", *v)) } + builder.WriteString(", ") + if v := _m.UnitConfig; v != nil { + builder.WriteString("unit_config=") + builder.WriteString(fmt.Sprintf("%v", *v)) + } builder.WriteByte(')') return builder.String() } diff --git a/openmeter/ent/db/subscriptionitem/subscriptionitem.go b/openmeter/ent/db/subscriptionitem/subscriptionitem.go index 681e6827ba..91e6bb9cf2 100644 --- a/openmeter/ent/db/subscriptionitem/subscriptionitem.go +++ b/openmeter/ent/db/subscriptionitem/subscriptionitem.go @@ -66,6 +66,8 @@ const ( FieldPrice = "price" // FieldDiscounts holds the string denoting the discounts field in the database. FieldDiscounts = "discounts" + // FieldUnitConfig holds the string denoting the unit_config field in the database. + FieldUnitConfig = "unit_config" // EdgePhase holds the string denoting the phase edge name in mutations. EdgePhase = "phase" // EdgeEntitlement holds the string denoting the entitlement edge name in mutations. @@ -151,6 +153,7 @@ var Columns = []string{ FieldBillingCadence, FieldPrice, FieldDiscounts, + FieldUnitConfig, } // ValidColumn reports if the column name is valid (part of the table columns). @@ -187,6 +190,7 @@ var ( TaxConfig field.TypeValueScanner[*productcatalog.TaxConfig] Price field.TypeValueScanner[*productcatalog.Price] Discounts field.TypeValueScanner[*productcatalog.Discounts] + UnitConfig field.TypeValueScanner[*productcatalog.UnitConfig] } ) @@ -323,6 +327,11 @@ func ByDiscounts(opts ...sql.OrderTermOption) OrderOption { return sql.OrderByField(FieldDiscounts, opts...).ToFunc() } +// ByUnitConfig orders the results by the unit_config field. +func ByUnitConfig(opts ...sql.OrderTermOption) OrderOption { + return sql.OrderByField(FieldUnitConfig, opts...).ToFunc() +} + // ByPhaseField orders the results by phase field. func ByPhaseField(field string, opts ...sql.OrderTermOption) OrderOption { return func(s *sql.Selector) { diff --git a/openmeter/ent/db/subscriptionitem/where.go b/openmeter/ent/db/subscriptionitem/where.go index 1f87e1576d..57ef1e4e5e 100644 --- a/openmeter/ent/db/subscriptionitem/where.go +++ b/openmeter/ent/db/subscriptionitem/where.go @@ -1337,6 +1337,16 @@ func DiscountsNotNil() predicate.SubscriptionItem { return predicate.SubscriptionItem(sql.FieldNotNull(FieldDiscounts)) } +// UnitConfigIsNil applies the IsNil predicate on the "unit_config" field. +func UnitConfigIsNil() predicate.SubscriptionItem { + return predicate.SubscriptionItem(sql.FieldIsNull(FieldUnitConfig)) +} + +// UnitConfigNotNil applies the NotNil predicate on the "unit_config" field. +func UnitConfigNotNil() predicate.SubscriptionItem { + return predicate.SubscriptionItem(sql.FieldNotNull(FieldUnitConfig)) +} + // HasPhase applies the HasEdge predicate on the "phase" edge. func HasPhase() predicate.SubscriptionItem { return predicate.SubscriptionItem(func(s *sql.Selector) { diff --git a/openmeter/ent/db/subscriptionitem_create.go b/openmeter/ent/db/subscriptionitem_create.go index 673d6c8b5b..2dec08a0a5 100644 --- a/openmeter/ent/db/subscriptionitem_create.go +++ b/openmeter/ent/db/subscriptionitem_create.go @@ -280,6 +280,12 @@ func (_c *SubscriptionItemCreate) SetDiscounts(v *productcatalog.Discounts) *Sub return _c } +// SetUnitConfig sets the "unit_config" field. +func (_c *SubscriptionItemCreate) SetUnitConfig(v *productcatalog.UnitConfig) *SubscriptionItemCreate { + _c.mutation.SetUnitConfig(v) + return _c +} + // SetID sets the "id" field. func (_c *SubscriptionItemCreate) SetID(v string) *SubscriptionItemCreate { _c.mutation.SetID(v) @@ -471,6 +477,11 @@ func (_c *SubscriptionItemCreate) check() error { return &ValidationError{Name: "discounts", err: fmt.Errorf(`db: validator failed for field "SubscriptionItem.discounts": %w`, err)} } } + if v, ok := _c.mutation.UnitConfig(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "unit_config", err: fmt.Errorf(`db: validator failed for field "SubscriptionItem.unit_config": %w`, err)} + } + } if len(_c.mutation.PhaseIDs()) == 0 { return &ValidationError{Name: "phase", err: errors.New(`db: missing required edge "SubscriptionItem.phase"`)} } @@ -617,6 +628,14 @@ func (_c *SubscriptionItemCreate) createSpec() (*SubscriptionItem, *sqlgraph.Cre _spec.SetField(subscriptionitem.FieldDiscounts, field.TypeString, vv) _node.Discounts = value } + if value, ok := _c.mutation.UnitConfig(); ok { + vv, err := subscriptionitem.ValueScanner.UnitConfig.Value(value) + if err != nil { + return nil, nil, err + } + _spec.SetField(subscriptionitem.FieldUnitConfig, field.TypeString, vv) + _node.UnitConfig = value + } if nodes := _c.mutation.PhaseIDs(); len(nodes) > 0 { edge := &sqlgraph.EdgeSpec{ Rel: sqlgraph.M2O, @@ -1110,6 +1129,24 @@ func (u *SubscriptionItemUpsert) ClearDiscounts() *SubscriptionItemUpsert { return u } +// SetUnitConfig sets the "unit_config" field. +func (u *SubscriptionItemUpsert) SetUnitConfig(v *productcatalog.UnitConfig) *SubscriptionItemUpsert { + u.Set(subscriptionitem.FieldUnitConfig, v) + return u +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *SubscriptionItemUpsert) UpdateUnitConfig() *SubscriptionItemUpsert { + u.SetExcluded(subscriptionitem.FieldUnitConfig) + return u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *SubscriptionItemUpsert) ClearUnitConfig() *SubscriptionItemUpsert { + u.SetNull(subscriptionitem.FieldUnitConfig) + return u +} + // UpdateNewValues updates the mutable fields using the new values that were set on create except the ID field. // Using this option is equivalent to using: // @@ -1569,6 +1606,27 @@ func (u *SubscriptionItemUpsertOne) ClearDiscounts() *SubscriptionItemUpsertOne }) } +// SetUnitConfig sets the "unit_config" field. +func (u *SubscriptionItemUpsertOne) SetUnitConfig(v *productcatalog.UnitConfig) *SubscriptionItemUpsertOne { + return u.Update(func(s *SubscriptionItemUpsert) { + s.SetUnitConfig(v) + }) +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *SubscriptionItemUpsertOne) UpdateUnitConfig() *SubscriptionItemUpsertOne { + return u.Update(func(s *SubscriptionItemUpsert) { + s.UpdateUnitConfig() + }) +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *SubscriptionItemUpsertOne) ClearUnitConfig() *SubscriptionItemUpsertOne { + return u.Update(func(s *SubscriptionItemUpsert) { + s.ClearUnitConfig() + }) +} + // Exec executes the query. func (u *SubscriptionItemUpsertOne) Exec(ctx context.Context) error { if len(u.create.conflict) == 0 { @@ -2198,6 +2256,27 @@ func (u *SubscriptionItemUpsertBulk) ClearDiscounts() *SubscriptionItemUpsertBul }) } +// SetUnitConfig sets the "unit_config" field. +func (u *SubscriptionItemUpsertBulk) SetUnitConfig(v *productcatalog.UnitConfig) *SubscriptionItemUpsertBulk { + return u.Update(func(s *SubscriptionItemUpsert) { + s.SetUnitConfig(v) + }) +} + +// UpdateUnitConfig sets the "unit_config" field to the value that was provided on create. +func (u *SubscriptionItemUpsertBulk) UpdateUnitConfig() *SubscriptionItemUpsertBulk { + return u.Update(func(s *SubscriptionItemUpsert) { + s.UpdateUnitConfig() + }) +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (u *SubscriptionItemUpsertBulk) ClearUnitConfig() *SubscriptionItemUpsertBulk { + return u.Update(func(s *SubscriptionItemUpsert) { + s.ClearUnitConfig() + }) +} + // Exec executes the query. func (u *SubscriptionItemUpsertBulk) Exec(ctx context.Context) error { if u.create.err != nil { diff --git a/openmeter/ent/db/subscriptionitem_update.go b/openmeter/ent/db/subscriptionitem_update.go index daa6933ede..fbc982c23d 100644 --- a/openmeter/ent/db/subscriptionitem_update.go +++ b/openmeter/ent/db/subscriptionitem_update.go @@ -362,6 +362,18 @@ func (_u *SubscriptionItemUpdate) ClearDiscounts() *SubscriptionItemUpdate { return _u } +// SetUnitConfig sets the "unit_config" field. +func (_u *SubscriptionItemUpdate) SetUnitConfig(v *productcatalog.UnitConfig) *SubscriptionItemUpdate { + _u.mutation.SetUnitConfig(v) + return _u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (_u *SubscriptionItemUpdate) ClearUnitConfig() *SubscriptionItemUpdate { + _u.mutation.ClearUnitConfig() + return _u +} + // SetEntitlement sets the "entitlement" edge to the Entitlement entity. func (_u *SubscriptionItemUpdate) SetEntitlement(v *Entitlement) *SubscriptionItemUpdate { return _u.SetEntitlementID(v.ID) @@ -565,6 +577,11 @@ func (_u *SubscriptionItemUpdate) check() error { return &ValidationError{Name: "discounts", err: fmt.Errorf(`db: validator failed for field "SubscriptionItem.discounts": %w`, err)} } } + if v, ok := _u.mutation.UnitConfig(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "unit_config", err: fmt.Errorf(`db: validator failed for field "SubscriptionItem.unit_config": %w`, err)} + } + } if _u.mutation.PhaseCleared() && len(_u.mutation.PhaseIDs()) > 0 { return errors.New(`db: clearing a required unique edge "SubscriptionItem.phase"`) } @@ -702,6 +719,16 @@ func (_u *SubscriptionItemUpdate) sqlSave(ctx context.Context) (_node int, err e if _u.mutation.DiscountsCleared() { _spec.ClearField(subscriptionitem.FieldDiscounts, field.TypeString) } + if value, ok := _u.mutation.UnitConfig(); ok { + vv, err := subscriptionitem.ValueScanner.UnitConfig.Value(value) + if err != nil { + return 0, err + } + _spec.SetField(subscriptionitem.FieldUnitConfig, field.TypeString, vv) + } + if _u.mutation.UnitConfigCleared() { + _spec.ClearField(subscriptionitem.FieldUnitConfig, field.TypeString) + } if _u.mutation.EntitlementCleared() { edge := &sqlgraph.EdgeSpec{ Rel: sqlgraph.M2O, @@ -1241,6 +1268,18 @@ func (_u *SubscriptionItemUpdateOne) ClearDiscounts() *SubscriptionItemUpdateOne return _u } +// SetUnitConfig sets the "unit_config" field. +func (_u *SubscriptionItemUpdateOne) SetUnitConfig(v *productcatalog.UnitConfig) *SubscriptionItemUpdateOne { + _u.mutation.SetUnitConfig(v) + return _u +} + +// ClearUnitConfig clears the value of the "unit_config" field. +func (_u *SubscriptionItemUpdateOne) ClearUnitConfig() *SubscriptionItemUpdateOne { + _u.mutation.ClearUnitConfig() + return _u +} + // SetEntitlement sets the "entitlement" edge to the Entitlement entity. func (_u *SubscriptionItemUpdateOne) SetEntitlement(v *Entitlement) *SubscriptionItemUpdateOne { return _u.SetEntitlementID(v.ID) @@ -1457,6 +1496,11 @@ func (_u *SubscriptionItemUpdateOne) check() error { return &ValidationError{Name: "discounts", err: fmt.Errorf(`db: validator failed for field "SubscriptionItem.discounts": %w`, err)} } } + if v, ok := _u.mutation.UnitConfig(); ok { + if err := v.Validate(); err != nil { + return &ValidationError{Name: "unit_config", err: fmt.Errorf(`db: validator failed for field "SubscriptionItem.unit_config": %w`, err)} + } + } if _u.mutation.PhaseCleared() && len(_u.mutation.PhaseIDs()) > 0 { return errors.New(`db: clearing a required unique edge "SubscriptionItem.phase"`) } @@ -1611,6 +1655,16 @@ func (_u *SubscriptionItemUpdateOne) sqlSave(ctx context.Context) (_node *Subscr if _u.mutation.DiscountsCleared() { _spec.ClearField(subscriptionitem.FieldDiscounts, field.TypeString) } + if value, ok := _u.mutation.UnitConfig(); ok { + vv, err := subscriptionitem.ValueScanner.UnitConfig.Value(value) + if err != nil { + return nil, err + } + _spec.SetField(subscriptionitem.FieldUnitConfig, field.TypeString, vv) + } + if _u.mutation.UnitConfigCleared() { + _spec.ClearField(subscriptionitem.FieldUnitConfig, field.TypeString) + } if _u.mutation.EntitlementCleared() { edge := &sqlgraph.EdgeSpec{ Rel: sqlgraph.M2O, diff --git a/openmeter/ent/schema/billing.go b/openmeter/ent/schema/billing.go index f40ea3a898..ec931d04c9 100644 --- a/openmeter/ent/schema/billing.go +++ b/openmeter/ent/schema/billing.go @@ -574,6 +574,14 @@ func (BillingInvoiceUsageBasedLineConfig) Fields() []ent.Field { SchemaType(map[string]string{ dialect.Postgres: "numeric", }), + field.String("unit_config"). + GoType(&productcatalog.UnitConfig{}). + ValueScanner(UnitConfigValueScanner). + SchemaType(map[string]string{ + dialect.Postgres: "jsonb", + }). + Optional(). + Nillable(), } } diff --git a/openmeter/ent/schema/feature.go b/openmeter/ent/schema/feature.go index 4e25c493a5..8927765452 100644 --- a/openmeter/ent/schema/feature.go +++ b/openmeter/ent/schema/feature.go @@ -46,6 +46,12 @@ func (Feature) Fields() []ent.Field { field.String("unit_cost_llm_model").Optional().Nillable(), field.String("unit_cost_llm_token_type_property").Optional().Nillable(), field.String("unit_cost_llm_token_type").Optional().Nillable(), + field.String("unit_config"). + SchemaType(map[string]string{ + dialect.Postgres: "jsonb", + }). + Optional(). + Nillable(), field.Time("archived_at").Optional().Nillable(), } } diff --git a/openmeter/ent/schema/productcatalog.go b/openmeter/ent/schema/productcatalog.go index 315bb65d54..b33808bd40 100644 --- a/openmeter/ent/schema/productcatalog.go +++ b/openmeter/ent/schema/productcatalog.go @@ -201,4 +201,5 @@ var ( PriceValueScanner = entutils.JSONStringValueScanner[*productcatalog.Price]() DiscountsValueScanner = entutils.JSONStringValueScanner[*productcatalog.Discounts]() ProRatingConfigValueScanner = entutils.JSONStringValueScanner[productcatalog.ProRatingConfig]() + UnitConfigValueScanner = entutils.JSONStringValueScanner[*productcatalog.UnitConfig]() ) diff --git a/openmeter/ent/schema/ratecard.go b/openmeter/ent/schema/ratecard.go index 84e590da42..407bc3867e 100644 --- a/openmeter/ent/schema/ratecard.go +++ b/openmeter/ent/schema/ratecard.go @@ -62,6 +62,14 @@ func (RateCard) Fields() []ent.Field { }). Optional(). Nillable(), + field.String("unit_config"). + GoType(&productcatalog.UnitConfig{}). + ValueScanner(UnitConfigValueScanner). + SchemaType(map[string]string{ + dialect.Postgres: "jsonb", + }). + Optional(). + Nillable(), ) return fields diff --git a/openmeter/ent/schema/subscription.go b/openmeter/ent/schema/subscription.go index 223b50ee57..bc02850007 100644 --- a/openmeter/ent/schema/subscription.go +++ b/openmeter/ent/schema/subscription.go @@ -206,6 +206,14 @@ func (SubscriptionItem) Fields() []ent.Field { }). Optional(). Nillable(), + field.String("unit_config"). + GoType(&productcatalog.UnitConfig{}). + ValueScanner(UnitConfigValueScanner). + SchemaType(map[string]string{ + dialect.Postgres: "jsonb", + }). + Optional(). + Nillable(), } } diff --git a/openmeter/productcatalog/adapter/feature.go b/openmeter/productcatalog/adapter/feature.go index e37ae46750..a8575a26c4 100644 --- a/openmeter/productcatalog/adapter/feature.go +++ b/openmeter/productcatalog/adapter/feature.go @@ -2,6 +2,7 @@ package adapter import ( "context" + "encoding/json" "fmt" "log/slog" "time" @@ -74,6 +75,10 @@ func (c *featureDBAdapter) CreateFeature(ctx context.Context, feat feature.Creat } } + if len(feat.UnitConfig) > 0 { + query = query.SetUnitConfig(string(feat.UnitConfig)) + } + entity, err := query. Save(ctx) if err != nil { @@ -354,5 +359,9 @@ func MapFeatureEntity(entity *db.Feature) feature.Feature { } } + if entity.UnitConfig != nil && *entity.UnitConfig != "" { + f.UnitConfig = json.RawMessage(*entity.UnitConfig) + } + return f } diff --git a/openmeter/productcatalog/addon/adapter/addon.go b/openmeter/productcatalog/addon/adapter/addon.go index 1f7f87f7e6..5145c4d43d 100644 --- a/openmeter/productcatalog/addon/adapter/addon.go +++ b/openmeter/productcatalog/addon/adapter/addon.go @@ -257,6 +257,10 @@ func rateCardBulkCreate(c *entdb.AddonRateCardClient, rateCards productcatalog.R q.SetPrice(rateCardEntity.Price) } + if rateCardEntity.UnitConfig != nil { + q.SetUnitConfig(rateCardEntity.UnitConfig) + } + bulk = append(bulk, q) } diff --git a/openmeter/productcatalog/addon/adapter/mapping.go b/openmeter/productcatalog/addon/adapter/mapping.go index 4e60946ee0..9d79b712bb 100644 --- a/openmeter/productcatalog/addon/adapter/mapping.go +++ b/openmeter/productcatalog/addon/adapter/mapping.go @@ -152,6 +152,7 @@ func FromAddonRateCardRow(r entdb.AddonRateCard) (*addon.RateCard, error) { RateCard: &productcatalog.UsageBasedRateCard{ RateCardMeta: meta, BillingCadence: lo.FromPtr(billingCadence), + UnitConfig: r.UnitConfig, }, } default: @@ -363,11 +364,13 @@ func asAddonRateCardRow(r productcatalog.RateCard) (entdb.AddonRateCard, error) ratecard.ID = managedFields.ID } - switch v := r.(type) { - case *productcatalog.FlatFeeRateCard: - ratecard.BillingCadence = v.BillingCadence.ISOStringPtrOrNil() - case *productcatalog.UsageBasedRateCard: - ratecard.BillingCadence = v.BillingCadence.ISOStringPtrOrNil() + ratecard.UnitConfig = r.GetUnitConfig() + + switch r.Type() { + case productcatalog.FlatFeeRateCardType: + ratecard.BillingCadence = r.GetBillingCadence().ISOStringPtrOrNil() + case productcatalog.UsageBasedRateCardType: + ratecard.BillingCadence = r.GetBillingCadence().ISOStringPtrOrNil() default: return ratecard, fmt.Errorf("invalid ratecard [key=%s]: invalid type: %T", r.Key(), r) } diff --git a/openmeter/productcatalog/driver/parser.go b/openmeter/productcatalog/driver/parser.go index 00d35a80b1..6cd8b9f30c 100644 --- a/openmeter/productcatalog/driver/parser.go +++ b/openmeter/productcatalog/driver/parser.go @@ -2,6 +2,7 @@ package productcatalogdriver import ( "context" + "encoding/json" "fmt" "github.com/alpacahq/alpacadecimal" @@ -10,7 +11,9 @@ import ( "github.com/openmeterio/openmeter/api" "github.com/openmeterio/openmeter/openmeter/apiconverter" "github.com/openmeterio/openmeter/openmeter/llmcost" + "github.com/openmeterio/openmeter/openmeter/productcatalog" "github.com/openmeterio/openmeter/openmeter/productcatalog/feature" + productcataloghttp "github.com/openmeterio/openmeter/openmeter/productcatalog/http" "github.com/openmeterio/openmeter/pkg/convert" "github.com/openmeterio/openmeter/pkg/filter" ) @@ -40,6 +43,14 @@ func MapFeatureToResponse(f feature.Feature) (api.Feature, error) { resp.UnitCost = &apiUnitCost } + if len(f.UnitConfig) > 0 { + var uc productcatalog.UnitConfig + if err := json.Unmarshal(f.UnitConfig, &uc); err == nil { + apiUC := productcataloghttp.FromUnitConfig(uc) + resp.UnitConfig = &apiUC + } + } + return resp, nil } @@ -68,6 +79,21 @@ func MapFeatureCreateInputsRequest(namespace string, f api.FeatureCreateInputs, inputs.UnitCost = unitCost } + if f.UnitConfig != nil { + uc, err := productcataloghttp.AsUnitConfig(*f.UnitConfig) + if err != nil { + return feature.CreateFeatureInputs{}, fmt.Errorf("invalid unit config: %w", err) + } + if err := uc.Validate(); err != nil { + return feature.CreateFeatureInputs{}, fmt.Errorf("invalid unit config: %w", err) + } + ucJSON, err := json.Marshal(uc) + if err != nil { + return feature.CreateFeatureInputs{}, fmt.Errorf("failed to marshal unit config: %w", err) + } + inputs.UnitConfig = ucJSON + } + return inputs, nil } diff --git a/openmeter/productcatalog/errors.go b/openmeter/productcatalog/errors.go index d33eacf449..eb094c8d9c 100644 --- a/openmeter/productcatalog/errors.go +++ b/openmeter/productcatalog/errors.go @@ -199,6 +199,16 @@ var ErrRateCardPercentageDiscountNotAllowed = models.NewValidationIssue( models.WithWarningSeverity(), ) +const ErrCodeRateCardUnitConfigMismatch models.ErrorCode = "rate_card_unit_config_mismatch" + +var ErrRateCardUnitConfigMismatch = models.NewValidationIssue( + ErrCodeRateCardUnitConfigMismatch, + "unit config presence must match between base and overlay rate cards", + models.WithFieldString("unitConfig"), + models.WithWarningSeverity(), + commonhttp.WithHTTPStatusCodeAttribute(http.StatusBadRequest), +) + const ErrCodeRateCardDuplicatedKey models.ErrorCode = "rate_card_duplicated_key" var ErrRateCardDuplicatedKey = models.NewValidationIssue( diff --git a/openmeter/productcatalog/feature/connector.go b/openmeter/productcatalog/feature/connector.go index 69ffa91cc1..3de9c2ad0b 100644 --- a/openmeter/productcatalog/feature/connector.go +++ b/openmeter/productcatalog/feature/connector.go @@ -2,6 +2,7 @@ package feature import ( "context" + "encoding/json" "fmt" "slices" @@ -24,6 +25,7 @@ type CreateFeatureInputs struct { MeterID *string `json:"meterID"` MeterGroupByFilters MeterGroupByFilters `json:"meterGroupByFilters"` UnitCost *UnitCost `json:"unitCost"` + UnitConfig json.RawMessage `json:"unitConfig,omitempty"` Metadata map[string]string `json:"metadata"` } @@ -164,6 +166,9 @@ func (c *featureConnector) CreateFeature(ctx context.Context, feature CreateFeat } } + // Note: UnitConfig validation is done at the API boundary layer (parser.go) + // since the feature package stores it as raw JSON to avoid import cycles. + // Validate feature key if _, err := ulid.Parse(feature.Key); err == nil { return Feature{}, models.NewGenericValidationError(fmt.Errorf("Feature key cannot be a valid ULID")) diff --git a/openmeter/productcatalog/feature/feature.go b/openmeter/productcatalog/feature/feature.go index 5e0b83a038..2947235df7 100644 --- a/openmeter/productcatalog/feature/feature.go +++ b/openmeter/productcatalog/feature/feature.go @@ -1,6 +1,7 @@ package feature import ( + "encoding/json" "errors" "fmt" "time" @@ -140,6 +141,11 @@ type Feature struct { // UnitCost is an optional per-unit cost: either a fixed manual amount or dynamic LLM cost lookup. UnitCost *UnitCost `json:"unitCost,omitempty"` + // UnitConfig is an optional unit conversion config stored as raw JSON. + // Typed as json.RawMessage to avoid import cycle with productcatalog package. + // Use productcatalog.UnitConfig for typed access at the boundary layer. + UnitConfig json.RawMessage `json:"unitConfig,omitempty"` + // Metadata Additional metadata. Metadata map[string]string `json:"metadata,omitempty"` diff --git a/openmeter/productcatalog/http/mapping.go b/openmeter/productcatalog/http/mapping.go index 5c8fe6f4b2..3c2017cf21 100644 --- a/openmeter/productcatalog/http/mapping.go +++ b/openmeter/productcatalog/http/mapping.go @@ -93,6 +93,12 @@ func FromRateCard(r productcatalog.RateCard) (api.RateCard, error) { return resp, errors.New("invalid UsageBasedRateCard: billing cadence must be set") } + var apiUnitConfig *api.FeatureUnitConfig + if uc := r.GetUnitConfig(); uc != nil { + v := FromUnitConfig(*uc) + apiUnitConfig = &v + } + err = resp.FromRateCardUsageBased(api.RateCardUsageBased{ Type: api.RateCardUsageBasedTypeUsageBased, BillingCadence: billingCadence.ISOString().String(), @@ -105,6 +111,7 @@ func FromRateCard(r productcatalog.RateCard) (api.RateCard, error) { Price: price, TaxConfig: taxConfig, Discounts: FromDiscounts(meta.Discounts), + UnitConfig: apiUnitConfig, }) if err != nil { return resp, fmt.Errorf("failed to cast UsageBasedRateCard: %w", err) @@ -250,6 +257,49 @@ func FromTaxConfig(c productcatalog.TaxConfig) api.TaxConfig { } } +func FromUnitConfig(uc productcatalog.UnitConfig) api.FeatureUnitConfig { + result := api.FeatureUnitConfig{ + Operation: api.FeatureUnitConfigOperation(uc.Operation), + ConversionFactor: uc.ConversionFactor.String(), + DisplayUnit: uc.DisplayUnit, + } + + if uc.Rounding != "" { + rounding := api.FeatureUnitConfigRoundingMode(uc.Rounding) + result.Rounding = &rounding + } + + if uc.Precision != 0 { + result.Precision = lo.ToPtr(uc.Precision) + } + + return result +} + +func AsUnitConfig(uc api.FeatureUnitConfig) (productcatalog.UnitConfig, error) { + conversionFactor, err := decimal.NewFromString(uc.ConversionFactor) + if err != nil { + return productcatalog.UnitConfig{}, fmt.Errorf("failed to parse conversion_factor: %w", err) + } + + result := productcatalog.UnitConfig{ + Operation: productcatalog.ConversionOperation(uc.Operation), + ConversionFactor: conversionFactor, + } + + if uc.Rounding != nil { + result.Rounding = productcatalog.RoundingMode(*uc.Rounding) + } + + if uc.Precision != nil { + result.Precision = *uc.Precision + } + + result.DisplayUnit = uc.DisplayUnit + + return result, nil +} + func FromPaymentTerm(t productcatalog.PaymentTermType) api.PricePaymentTerm { switch t { case productcatalog.InArrearsPaymentTerm: @@ -510,6 +560,14 @@ func AsUsageBasedRateCard(usage api.RateCardUsageBased) (productcatalog.UsageBas rc.Price = price } + if usage.UnitConfig != nil { + uc, err := AsUnitConfig(*usage.UnitConfig) + if err != nil { + return rc, fmt.Errorf("failed to cast UnitConfig: %w", err) + } + rc.UnitConfig = &uc + } + discounts, err := AsDiscounts(usage.Discounts) if err != nil { return rc, fmt.Errorf("failed to cast Discounts: %w", err) diff --git a/openmeter/productcatalog/plan/adapter/mapping.go b/openmeter/productcatalog/plan/adapter/mapping.go index d9dddd082f..dca2abbd1e 100644 --- a/openmeter/productcatalog/plan/adapter/mapping.go +++ b/openmeter/productcatalog/plan/adapter/mapping.go @@ -347,6 +347,7 @@ func fromPlanRateCardRow(r entdb.PlanRateCard) (productcatalog.RateCard, error) RateCard: &productcatalog.UsageBasedRateCard{ RateCardMeta: meta, BillingCadence: lo.FromPtr(billingCadence), + UnitConfig: r.UnitConfig, }, } default: @@ -388,5 +389,7 @@ func asPlanRateCardRow(r productcatalog.RateCard) (entdb.PlanRateCard, error) { ratecard.BillingCadence = r.GetBillingCadence().ISOStringPtrOrNil() + ratecard.UnitConfig = r.GetUnitConfig() + return ratecard, nil } diff --git a/openmeter/productcatalog/plan/adapter/phase.go b/openmeter/productcatalog/plan/adapter/phase.go index 9f37490edf..f38537e0a2 100644 --- a/openmeter/productcatalog/plan/adapter/phase.go +++ b/openmeter/productcatalog/plan/adapter/phase.go @@ -135,6 +135,10 @@ func rateCardBulkCreate(c *entdb.PlanRateCardClient, rateCards productcatalog.Ra q.SetPrice(rateCardEntity.Price) } + if rateCardEntity.UnitConfig != nil { + q.SetUnitConfig(rateCardEntity.UnitConfig) + } + bulk = append(bulk, q) } diff --git a/openmeter/productcatalog/ratecard.go b/openmeter/productcatalog/ratecard.go index cf8df76d9e..1fd9725294 100644 --- a/openmeter/productcatalog/ratecard.go +++ b/openmeter/productcatalog/ratecard.go @@ -41,6 +41,7 @@ type RateCard interface { Clone() RateCard Compatible(RateCard) error GetBillingCadence() *datetime.ISODuration + GetUnitConfig() *UnitConfig IsBillable() bool } @@ -268,6 +269,10 @@ func (r *FlatFeeRateCard) GetBillingCadence() *datetime.ISODuration { return r.BillingCadence } +func (r *FlatFeeRateCard) GetUnitConfig() *UnitConfig { + return nil +} + func (r *FlatFeeRateCard) ChangeMeta(fn func(m RateCardMeta) (RateCardMeta, error)) error { var err error r.RateCardMeta, err = fn(r.RateCardMeta) @@ -400,6 +405,15 @@ type UsageBasedRateCard struct { // BillingCadence defines the billing cadence of the RateCard in ISO8601 format. // Example: "P1D12H" BillingCadence datetime.ISODuration `json:"billingCadence"` + + // UnitConfig defines how to convert raw metered quantities into billing units. + // When set, all quantity-bearing fields (price tier boundaries, entitlement quota) + // are expressed in converted units. + UnitConfig *UnitConfig `json:"unitConfig,omitempty"` +} + +func (r *UsageBasedRateCard) GetUnitConfig() *UnitConfig { + return r.UnitConfig } func (r *UsageBasedRateCard) Compatible(v RateCard) error { @@ -419,6 +433,11 @@ func (r *UsageBasedRateCard) Clone() RateCard { BillingCadence: r.BillingCadence, } + if r.UnitConfig != nil { + uc := r.UnitConfig.Clone() + clone.UnitConfig = &uc + } + return clone } @@ -444,6 +463,7 @@ func (r *UsageBasedRateCard) Merge(v RateCard) error { r.RateCardMeta = vv.RateCardMeta r.BillingCadence = vv.BillingCadence + r.UnitConfig = vv.UnitConfig return nil } @@ -474,6 +494,10 @@ func (r *UsageBasedRateCard) Equal(v RateCard) bool { return false } + if !r.UnitConfig.Equal(vv.UnitConfig) { + return false + } + return true } @@ -505,6 +529,16 @@ func (r *UsageBasedRateCard) Validate() error { errs = append(errs, ErrUsageDiscountWithFlatPrice) } + if r.UnitConfig != nil { + if err := r.UnitConfig.Validate(); err != nil { + errs = append(errs, fmt.Errorf("invalid unit config: %w", + models.ErrorWithFieldPrefix( + models.NewFieldSelectorGroup(models.NewFieldSelector("unitConfig")), + err), + )) + } + } + return models.NewNillableGenericValidationError(errors.Join(errs...)) } @@ -513,9 +547,11 @@ func (r *UsageBasedRateCard) MarshalJSON() ([]byte, error) { RateCardSerde RateCardMeta BillingCadence datetime.ISODuration `json:"billingCadence"` + UnitConfig *UnitConfig `json:"unitConfig,omitempty"` }{ RateCardMeta: r.RateCardMeta, BillingCadence: r.BillingCadence, + UnitConfig: r.UnitConfig, RateCardSerde: RateCardSerde{ Type: r.Type(), }, @@ -675,6 +711,7 @@ func (r RateCardWithOverlay) Validate() error { ValidateRateCardsHaveCompatibleBillingCadence, ValidateRateCardsHaveCompatibleEntitlementTemplate, ValidateRateCardsHaveCompatibleDiscounts, + ValidateRateCardsHaveCompatibleUnitConfig, ) } @@ -857,6 +894,33 @@ var ValidateRateCardsHaveCompatibleDiscounts = models.ValidatorFunc[RateCardWith return nil }) +var ValidateRateCardsHaveCompatibleUnitConfig = models.ValidatorFunc[RateCardWithOverlay](func(r RateCardWithOverlay) error { + if r.base == nil || r.overlay == nil { + return nil + } + + // UnitConfig is only on UsageBasedRateCard + baseUBRC, baseOk := r.base.(*UsageBasedRateCard) + overlayUBRC, overlayOk := r.overlay.(*UsageBasedRateCard) + + if !baseOk || !overlayOk { + return nil + } + + // Both must have the same UnitConfig presence + if (baseUBRC.UnitConfig == nil) != (overlayUBRC.UnitConfig == nil) { + fieldSelector := models.NewFieldSelectorGroup( + models.NewFieldSelector("ratecards"). + WithExpression(models.NewFieldAttrValue("key", r.base.Key())), + models.NewFieldSelector("unitConfig"), + ) + + return models.ErrorWithFieldPrefix(fieldSelector, ErrRateCardUnitConfigMismatch) + } + + return nil +}) + func ValidateRateCardsWithFeatures(ctx context.Context, resolver NamespacedFeatureResolver) func(cards RateCards) error { return func(rateCards RateCards) error { var errs []error diff --git a/openmeter/productcatalog/unitconfig.go b/openmeter/productcatalog/unitconfig.go new file mode 100644 index 0000000000..be0f361f2f --- /dev/null +++ b/openmeter/productcatalog/unitconfig.go @@ -0,0 +1,249 @@ +package productcatalog + +import ( + "errors" + "fmt" + "math" + "slices" + + decimal "github.com/alpacahq/alpacadecimal" + "github.com/samber/lo" + + "github.com/openmeterio/openmeter/pkg/models" +) + +const ( + ConversionOperationDivide ConversionOperation = "divide" + ConversionOperationMultiply ConversionOperation = "multiply" +) + +type ConversionOperation string + +func (c ConversionOperation) Values() []string { + return []string{ + string(ConversionOperationDivide), + string(ConversionOperationMultiply), + } +} + +const ( + RoundingModeCeiling RoundingMode = "ceiling" + RoundingModeFloor RoundingMode = "floor" + RoundingModeHalfUp RoundingMode = "half_up" + RoundingModeNone RoundingMode = "none" +) + +type RoundingMode string + +func (r RoundingMode) Values() []string { + return []string{ + string(RoundingModeCeiling), + string(RoundingModeFloor), + string(RoundingModeHalfUp), + string(RoundingModeNone), + } +} + +// UnitConfig defines how to convert raw metered quantities into billing units. +// It is applied before pricing runs on usage-based rate cards. +type UnitConfig struct { + // Operation defines whether to divide or multiply the metered quantity by the factor. + Operation ConversionOperation `json:"operation"` + + // ConversionFactor is the factor applied to the metered quantity. + // For example, divide by 1e9 to convert bytes to GB, or multiply by 1.2 for a 20% margin. + ConversionFactor decimal.Decimal `json:"conversion_factor"` + + // Rounding defines how to round the converted quantity for invoicing. + // Defaults to RoundingModeNone. + Rounding RoundingMode `json:"rounding"` + + // Precision defines the number of decimal places for rounding. + // Only used when Rounding is not RoundingModeNone. + Precision int `json:"precision"` + + // DisplayUnit is a human-readable unit label shown on invoices (e.g., "GB", "hours", "M"). + DisplayUnit *string `json:"display_unit,omitempty"` +} + +var _ models.Validator = (*UnitConfig)(nil) + +func (u *UnitConfig) Validate() error { + if u == nil { + return nil + } + + var errs []error + + if !slices.Contains(ConversionOperation("").Values(), string(u.Operation)) { + errs = append(errs, fmt.Errorf("invalid conversion operation: %q", u.Operation)) + } + + if u.ConversionFactor.IsZero() { + errs = append(errs, errors.New("conversion_factor must not be zero")) + } + + if u.ConversionFactor.IsNegative() { + errs = append(errs, errors.New("conversion_factor must be positive")) + } + + if u.Rounding != "" && !slices.Contains(RoundingMode("").Values(), string(u.Rounding)) { + errs = append(errs, fmt.Errorf("invalid rounding mode: %q", u.Rounding)) + } + + if u.Precision < 0 { + errs = append(errs, errors.New("precision must not be negative")) + } + + return models.NewNillableGenericValidationError(errors.Join(errs...)) +} + +func (u *UnitConfig) Equal(v *UnitConfig) bool { + if u == nil && v == nil { + return true + } + + if u == nil || v == nil { + return false + } + + if u.Operation != v.Operation { + return false + } + + if !u.ConversionFactor.Equal(v.ConversionFactor) { + return false + } + + if u.Rounding != v.Rounding { + return false + } + + if u.Precision != v.Precision { + return false + } + + if lo.FromPtr(u.DisplayUnit) != lo.FromPtr(v.DisplayUnit) { + return false + } + + return true +} + +func (u *UnitConfig) Clone() UnitConfig { + clone := UnitConfig{ + Operation: u.Operation, + ConversionFactor: u.ConversionFactor.Copy(), + Rounding: u.Rounding, + Precision: u.Precision, + } + + if u.DisplayUnit != nil { + du := *u.DisplayUnit + clone.DisplayUnit = &du + } + + return clone +} + +// Convert applies the conversion operation and factor to the given quantity +// without rounding. Use this for entitlement balance checks where precision matters. +func (u *UnitConfig) Convert(qty decimal.Decimal) decimal.Decimal { + if u == nil { + return qty + } + + switch u.Operation { + case ConversionOperationDivide: + return qty.Div(u.ConversionFactor) + case ConversionOperationMultiply: + return qty.Mul(u.ConversionFactor) + default: + return qty + } +} + +// ConvertAndRound applies the conversion operation, factor, and rounding to the given quantity. +// Use this for billing/invoicing quantities. +func (u *UnitConfig) ConvertAndRound(qty decimal.Decimal) decimal.Decimal { + if u == nil { + return qty + } + + converted := u.Convert(qty) + return u.Round(converted) +} + +// Round applies the rounding mode and precision to the given value. +func (u *UnitConfig) Round(value decimal.Decimal) decimal.Decimal { + if u == nil { + return value + } + + rounding := u.Rounding + if rounding == "" { + rounding = RoundingModeNone + } + + switch rounding { + case RoundingModeNone: + return value + case RoundingModeCeiling: + return roundCeil(value, u.Precision) + case RoundingModeFloor: + return roundFloor(value, u.Precision) + case RoundingModeHalfUp: + return roundHalfUp(value, u.Precision) + default: + return value + } +} + +// roundCeil rounds up to the given number of decimal places. +func roundCeil(value decimal.Decimal, precision int) decimal.Decimal { + scale := decimal.NewFromFloat(math.Pow10(precision)) + scaled := value.Mul(scale) + + // If already an integer at this scale, no rounding needed + truncated := scaled.Truncate(0) + if scaled.Equal(truncated) { + return value + } + + // Round up: truncate and add 1 if positive, just truncate if negative + if value.IsPositive() { + return truncated.Add(decimal.NewFromInt(1)).Div(scale) + } + + return truncated.Div(scale) +} + +// roundFloor rounds down to the given number of decimal places. +func roundFloor(value decimal.Decimal, precision int) decimal.Decimal { + scale := decimal.NewFromFloat(math.Pow10(precision)) + scaled := value.Mul(scale) + + truncated := scaled.Truncate(0) + if scaled.Equal(truncated) { + return value + } + + if value.IsNegative() { + return truncated.Sub(decimal.NewFromInt(1)).Div(scale) + } + + return truncated.Div(scale) +} + +// roundHalfUp rounds to the nearest value, with ties going up. +func roundHalfUp(value decimal.Decimal, precision int) decimal.Decimal { + scale := decimal.NewFromFloat(math.Pow10(precision)) + scaled := value.Mul(scale) + + half := decimal.NewFromFloat(0.5) + if value.IsNegative() { + half = half.Neg() + } + + return scaled.Add(half).Truncate(0).Div(scale) +} diff --git a/openmeter/productcatalog/unitconfig_test.go b/openmeter/productcatalog/unitconfig_test.go new file mode 100644 index 0000000000..d02ba37ef9 --- /dev/null +++ b/openmeter/productcatalog/unitconfig_test.go @@ -0,0 +1,535 @@ +package productcatalog + +import ( + "encoding/json" + "testing" + + decimal "github.com/alpacahq/alpacadecimal" + "github.com/samber/lo" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestUnitConfig_Validate(t *testing.T) { + tests := []struct { + name string + config UnitConfig + wantErr bool + }{ + { + name: "valid divide config", + config: UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(1e9), + Rounding: RoundingModeCeiling, + Precision: 0, + }, + }, + { + name: "valid multiply config", + config: UnitConfig{ + Operation: ConversionOperationMultiply, + ConversionFactor: decimal.NewFromFloat(1.2), + Rounding: RoundingModeNone, + DisplayUnit: lo.ToPtr("credits"), + }, + }, + { + name: "valid with display unit", + config: UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(3600), + Rounding: RoundingModeHalfUp, + Precision: 2, + DisplayUnit: lo.ToPtr("hours"), + }, + }, + { + name: "invalid operation", + config: UnitConfig{ + Operation: "invalid", + ConversionFactor: decimal.NewFromInt(1), + }, + wantErr: true, + }, + { + name: "zero factor", + config: UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.Zero, + }, + wantErr: true, + }, + { + name: "negative factor", + config: UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromInt(-1), + }, + wantErr: true, + }, + { + name: "invalid rounding mode", + config: UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromInt(1), + Rounding: "invalid", + }, + wantErr: true, + }, + { + name: "negative precision", + config: UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromInt(1), + Precision: -1, + }, + wantErr: true, + }, + { + name: "empty rounding defaults to none (valid)", + config: UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromInt(1), + Rounding: "", + }, + wantErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := tt.config.Validate() + if tt.wantErr { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestUnitConfig_Convert(t *testing.T) { + tests := []struct { + name string + config *UnitConfig + input decimal.Decimal + want string + }{ + { + name: "nil config returns input", + config: nil, + input: decimal.NewFromFloat(1000), + want: "1000", + }, + { + name: "divide bytes to GB", + config: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(1e9), + }, + input: decimal.NewFromFloat(5e9), + want: "5", + }, + { + name: "divide seconds to hours", + config: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(3600), + }, + input: decimal.NewFromFloat(7200), + want: "2", + }, + { + name: "divide with fractional result", + config: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(1000), + }, + input: decimal.NewFromFloat(1500), + want: "1.5", + }, + { + name: "multiply for margin", + config: &UnitConfig{ + Operation: ConversionOperationMultiply, + ConversionFactor: decimal.NewFromFloat(1.2), + }, + input: decimal.NewFromFloat(100), + want: "120", + }, + { + name: "multiply by 1 (identity)", + config: &UnitConfig{ + Operation: ConversionOperationMultiply, + ConversionFactor: decimal.NewFromInt(1), + }, + input: decimal.NewFromFloat(42), + want: "42", + }, + { + name: "zero input quantity", + config: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(1e6), + }, + input: decimal.Zero, + want: "0", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := tt.config.Convert(tt.input) + assert.Equal(t, tt.want, result.String()) + }) + } +} + +func TestUnitConfig_ConvertAndRound(t *testing.T) { + tests := []struct { + name string + config *UnitConfig + input decimal.Decimal + want string + }{ + { + name: "nil config returns input", + config: nil, + input: decimal.NewFromFloat(1500), + want: "1500", + }, + { + name: "package pricing: divide and ceil", + config: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(1e6), + Rounding: RoundingModeCeiling, + Precision: 0, + }, + input: decimal.NewFromFloat(1500001), + want: "2", + }, + { + name: "package pricing: exact division no rounding needed", + config: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(1e6), + Rounding: RoundingModeCeiling, + Precision: 0, + }, + input: decimal.NewFromFloat(2e6), + want: "2", + }, + { + name: "divide and floor", + config: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(1000), + Rounding: RoundingModeFloor, + Precision: 0, + }, + input: decimal.NewFromFloat(1999), + want: "1", + }, + { + name: "divide and half_up", + config: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(1000), + Rounding: RoundingModeHalfUp, + Precision: 0, + }, + input: decimal.NewFromFloat(1500), + want: "2", + }, + { + name: "divide and half_up rounds down", + config: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(1000), + Rounding: RoundingModeHalfUp, + Precision: 0, + }, + input: decimal.NewFromFloat(1499), + want: "1", + }, + { + name: "precision 2 with ceil", + config: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(3600), + Rounding: RoundingModeCeiling, + Precision: 2, + }, + input: decimal.NewFromFloat(5000), + want: "1.39", + }, + { + name: "no rounding mode", + config: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(3), + Rounding: RoundingModeNone, + }, + input: decimal.NewFromFloat(10), + want: "3.3333333333333333", + }, + { + name: "multiply with ceil for margin", + config: &UnitConfig{ + Operation: ConversionOperationMultiply, + ConversionFactor: decimal.NewFromFloat(1.2), + Rounding: RoundingModeCeiling, + Precision: 0, + }, + input: decimal.NewFromFloat(10), + want: "12", + }, + { + name: "empty rounding behaves like none", + config: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(3), + Rounding: "", + }, + input: decimal.NewFromFloat(10), + want: "3.3333333333333333", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + result := tt.config.ConvertAndRound(tt.input) + assert.Equal(t, tt.want, result.String()) + }) + } +} + +func TestUnitConfig_Equal(t *testing.T) { + tests := []struct { + name string + a *UnitConfig + b *UnitConfig + want bool + }{ + { + name: "both nil", + a: nil, + b: nil, + want: true, + }, + { + name: "one nil", + a: &UnitConfig{Operation: ConversionOperationDivide, ConversionFactor: decimal.NewFromInt(1)}, + b: nil, + want: false, + }, + { + name: "equal", + a: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(1e9), + Rounding: RoundingModeCeiling, + Precision: 0, + DisplayUnit: lo.ToPtr("GB"), + }, + b: &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(1e9), + Rounding: RoundingModeCeiling, + Precision: 0, + DisplayUnit: lo.ToPtr("GB"), + }, + want: true, + }, + { + name: "different operation", + a: &UnitConfig{Operation: ConversionOperationDivide, ConversionFactor: decimal.NewFromInt(1)}, + b: &UnitConfig{Operation: ConversionOperationMultiply, ConversionFactor: decimal.NewFromInt(1)}, + want: false, + }, + { + name: "different factor", + a: &UnitConfig{Operation: ConversionOperationDivide, ConversionFactor: decimal.NewFromInt(1)}, + b: &UnitConfig{Operation: ConversionOperationDivide, ConversionFactor: decimal.NewFromInt(2)}, + want: false, + }, + { + name: "different display unit", + a: &UnitConfig{Operation: ConversionOperationDivide, ConversionFactor: decimal.NewFromInt(1), DisplayUnit: lo.ToPtr("GB")}, + b: &UnitConfig{Operation: ConversionOperationDivide, ConversionFactor: decimal.NewFromInt(1), DisplayUnit: lo.ToPtr("TB")}, + want: false, + }, + { + name: "different precision", + a: &UnitConfig{Operation: ConversionOperationDivide, ConversionFactor: decimal.NewFromInt(1), Precision: 0}, + b: &UnitConfig{Operation: ConversionOperationDivide, ConversionFactor: decimal.NewFromInt(1), Precision: 2}, + want: false, + }, + { + name: "different rounding mode", + a: &UnitConfig{Operation: ConversionOperationDivide, ConversionFactor: decimal.NewFromInt(1), Rounding: RoundingModeCeiling}, + b: &UnitConfig{Operation: ConversionOperationDivide, ConversionFactor: decimal.NewFromInt(1), Rounding: RoundingModeFloor}, + want: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + assert.Equal(t, tt.want, tt.a.Equal(tt.b)) + }) + } +} + +func TestUnitConfig_Clone(t *testing.T) { + original := &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(1e9), + Rounding: RoundingModeCeiling, + Precision: 2, + DisplayUnit: lo.ToPtr("GB"), + } + + clone := original.Clone() + + assert.True(t, original.Equal(&clone)) + + // Mutate clone to ensure deep copy + clone.DisplayUnit = lo.ToPtr("TB") + assert.NotEqual(t, *original.DisplayUnit, *clone.DisplayUnit) +} + +func TestUnitConfig_JSON(t *testing.T) { + config := &UnitConfig{ + Operation: ConversionOperationDivide, + ConversionFactor: decimal.NewFromFloat(1e9), + Rounding: RoundingModeCeiling, + Precision: 0, + DisplayUnit: lo.ToPtr("GB"), + } + + data, err := json.Marshal(config) + require.NoError(t, err) + + var decoded UnitConfig + err = json.Unmarshal(data, &decoded) + require.NoError(t, err) + + assert.True(t, config.Equal(&decoded)) +} + +func TestUnitConfig_Round(t *testing.T) { + tests := []struct { + name string + rounding RoundingMode + precision int + input string + want string + }{ + { + name: "ceil precision 0", + rounding: RoundingModeCeiling, + precision: 0, + input: "1.1", + want: "2", + }, + { + name: "ceil exact value", + rounding: RoundingModeCeiling, + precision: 0, + input: "2", + want: "2", + }, + { + name: "floor precision 0", + rounding: RoundingModeFloor, + precision: 0, + input: "1.9", + want: "1", + }, + { + name: "floor exact value", + rounding: RoundingModeFloor, + precision: 0, + input: "2", + want: "2", + }, + { + name: "half_up at midpoint", + rounding: RoundingModeHalfUp, + precision: 0, + input: "1.5", + want: "2", + }, + { + name: "half_up below midpoint", + rounding: RoundingModeHalfUp, + precision: 0, + input: "1.4", + want: "1", + }, + { + name: "none preserves value", + rounding: RoundingModeNone, + precision: 0, + input: "1.23456", + want: "1.23456", + }, + { + name: "ceil precision 2", + rounding: RoundingModeCeiling, + precision: 2, + input: "1.001", + want: "1.01", + }, + { + name: "floor precision 2", + rounding: RoundingModeFloor, + precision: 2, + input: "1.999", + want: "1.99", + }, + { + name: "ceil zero value", + rounding: RoundingModeCeiling, + precision: 0, + input: "0", + want: "0", + }, + { + name: "floor zero value", + rounding: RoundingModeFloor, + precision: 0, + input: "0", + want: "0", + }, + { + name: "half_up zero value", + rounding: RoundingModeHalfUp, + precision: 0, + input: "0", + want: "0", + }, + { + name: "none zero value", + rounding: RoundingModeNone, + precision: 0, + input: "0", + want: "0", + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + uc := &UnitConfig{ + Rounding: tt.rounding, + Precision: tt.precision, + } + input, err := decimal.NewFromString(tt.input) + require.NoError(t, err) + result := uc.Round(input) + assert.Equal(t, tt.want, result.String()) + }) + } +} diff --git a/openmeter/subscription/addon/extend_test.go b/openmeter/subscription/addon/extend_test.go index c15250d71c..09df3e5e7a 100644 --- a/openmeter/subscription/addon/extend_test.go +++ b/openmeter/subscription/addon/extend_test.go @@ -908,6 +908,10 @@ func (n nonPointerRateCard) GetBillingCadence() *datetime.ISODuration { return nil } +func (n nonPointerRateCard) GetUnitConfig() *productcatalog.UnitConfig { + return nil +} + func (n nonPointerRateCard) Key() string { return subscriptiontestutils.ExampleFeatureKey } diff --git a/openmeter/subscription/repo/mapping.go b/openmeter/subscription/repo/mapping.go index 3499576b13..dc671987a3 100644 --- a/openmeter/subscription/repo/mapping.go +++ b/openmeter/subscription/repo/mapping.go @@ -156,6 +156,7 @@ func MapDBSubscriptionItem(item *db.SubscriptionItem) (subscription.Subscription rc = &productcatalog.UsageBasedRateCard{ BillingCadence: *cadence, RateCardMeta: rcMeta, + UnitConfig: item.UnitConfig, } } diff --git a/openmeter/subscription/repo/subscriptionitemrepo.go b/openmeter/subscription/repo/subscriptionitemrepo.go index 5be0621555..81df3d53a0 100644 --- a/openmeter/subscription/repo/subscriptionitemrepo.go +++ b/openmeter/subscription/repo/subscriptionitemrepo.go @@ -158,6 +158,10 @@ func (r *subscriptionItemRepo) Create(ctx context.Context, input subscription.Cr cmd.SetDiscounts(lo.EmptyableToPtr(input.RateCard.AsMeta().Discounts)) } + if uc := input.RateCard.GetUnitConfig(); uc != nil { + cmd.SetUnitConfig(uc) + } + i, err := cmd.Save(ctx) if err != nil { return def, err diff --git a/test/billing/unitconfig_test.go b/test/billing/unitconfig_test.go new file mode 100644 index 0000000000..c73a9e7ee3 --- /dev/null +++ b/test/billing/unitconfig_test.go @@ -0,0 +1,631 @@ +package billing + +import ( + "context" + "testing" + "time" + + "github.com/alpacahq/alpacadecimal" + "github.com/invopop/gobl/currency" + "github.com/oklog/ulid/v2" + "github.com/samber/lo" + "github.com/stretchr/testify/suite" + + "github.com/openmeterio/openmeter/openmeter/billing" + "github.com/openmeterio/openmeter/openmeter/meter" + "github.com/openmeterio/openmeter/openmeter/productcatalog" + "github.com/openmeterio/openmeter/openmeter/productcatalog/feature" + "github.com/openmeterio/openmeter/pkg/currencyx" + "github.com/openmeterio/openmeter/pkg/models" + "github.com/openmeterio/openmeter/pkg/timeutil" +) + +type UnitConfigTestSuite struct { + BaseSuite +} + +func TestUnitConfig(t *testing.T) { + suite.Run(t, new(UnitConfigTestSuite)) +} + +// TestUnitConfigDivideWithCeil tests that UnitConfig with divide+ceil converts +// raw metered quantities (e.g. bytes) into billing units (e.g. GB) and rounds up. +// This is the "package pricing" replacement pattern. +func (s *UnitConfigTestSuite) TestUnitConfigDivideWithCeil() { + namespace := s.GetUniqueNamespace("ns-unitconfig-divide-ceil") + ctx := context.Background() + + sandboxApp := s.InstallSandboxApp(s.T(), namespace) + s.ProvisionBillingProfile(ctx, namespace, sandboxApp.GetID()) + + customerEntity := s.CreateTestCustomer(namespace, "test-customer") + s.NotNil(customerEntity) + + // Set up a meter + meterSlug := "tokens-total" + meterID := ulid.Make().String() + s.NoError(s.MeterAdapter.ReplaceMeters(ctx, []meter.Meter{ + { + ManagedResource: models.ManagedResource{ + ID: meterID, + NamespacedModel: models.NamespacedModel{ + Namespace: namespace, + }, + ManagedModel: models.ManagedModel{ + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + }, + Name: "Tokens Total", + }, + Key: meterSlug, + Aggregation: meter.MeterAggregationSum, + EventType: "test", + ValueProperty: lo.ToPtr("$.value"), + }, + })) + defer func() { + s.NoError(s.MeterAdapter.ReplaceMeters(ctx, []meter.Meter{})) + s.MockStreamingConnector.Reset() + }() + + // Create the feature + feat := lo.Must(s.FeatureService.CreateFeature(ctx, feature.CreateFeatureInputs{ + Namespace: namespace, + Name: meterSlug, + Key: meterSlug, + MeterID: lo.ToPtr(meterID), + })) + + periodEnd := time.Now().Add(-time.Second) + periodStart := periodEnd.Add(-time.Hour) + invoiceAt := periodEnd.Add(-time.Millisecond) + + // Register 1,500,001 raw tokens (should round up to 2 million-packs with divide 1e6 + ceil) + s.MockStreamingConnector.AddSimpleEvent(meterSlug, 0, periodStart.Add(-time.Minute)) + s.MockStreamingConnector.AddSimpleEvent(meterSlug, 1500001, periodStart.Add(time.Minute)) + + unitConfig := &productcatalog.UnitConfig{ + Operation: productcatalog.ConversionOperationDivide, + ConversionFactor: alpacadecimal.NewFromFloat(1e6), + Rounding: productcatalog.RoundingModeCeiling, + Precision: 0, + DisplayUnit: lo.ToPtr("M"), + } + + s.Run("UnitConfig is persisted and returned on gathering lines", func() { + res, err := s.BillingService.CreatePendingInvoiceLines(ctx, + billing.CreatePendingInvoiceLinesInput{ + Customer: customerEntity.GetID(), + Currency: currencyx.Code(currency.USD), + Lines: []billing.GatheringLine{ + { + GatheringLineBase: billing.GatheringLineBase{ + ManagedResource: models.NewManagedResource(models.ManagedResourceInput{ + Namespace: namespace, + Name: "Tokens", + }), + ServicePeriod: timeutil.ClosedPeriod{From: periodStart, To: periodEnd}, + InvoiceAt: invoiceAt, + ManagedBy: billing.ManuallyManagedLine, + Currency: currencyx.Code(currency.USD), + FeatureKey: feat.Key, + Price: lo.FromPtr(productcatalog.NewPriceFrom(productcatalog.UnitPrice{ + Amount: alpacadecimal.NewFromFloat(10), + })), + UnitConfig: unitConfig, + }, + }, + }, + }) + s.NoError(err) + s.Len(res.Lines, 1) + + // Verify UnitConfig is stored and returned + line := res.Lines[0] + s.NotNil(line.UnitConfig, "UnitConfig should be persisted on the gathering line") + s.Equal(productcatalog.ConversionOperationDivide, line.UnitConfig.Operation) + s.True(line.UnitConfig.ConversionFactor.Equal(alpacadecimal.NewFromFloat(1e6))) + s.Equal(productcatalog.RoundingModeCeiling, line.UnitConfig.Rounding) + s.Equal(lo.ToPtr("M"), line.UnitConfig.DisplayUnit) + }) + + s.Run("UnitConfig converts quantities on invoice lines", func() { + invoices, err := s.BillingService.InvoicePendingLines(ctx, billing.InvoicePendingLinesInput{ + Customer: customerEntity.GetID(), + }) + s.NoError(err) + s.Len(invoices, 1) + + lines := invoices[0].Lines.OrEmpty() + s.NotEmpty(lines) + + // Find the usage-based line + var usageLine *billing.StandardLine + for _, l := range lines { + if l.UsageBased != nil && l.UsageBased.FeatureKey == feat.Key { + usageLine = l + break + } + } + s.NotNil(usageLine, "should have a usage-based line") + + // UnitConfig should be snapshotted on the invoice line + s.NotNil(usageLine.UsageBased.UnitConfig, "UnitConfig should be snapshotted on invoice line") + s.Equal(productcatalog.ConversionOperationDivide, usageLine.UsageBased.UnitConfig.Operation) + + // MeteredQuantity should be the raw value (1500001) + s.NotNil(usageLine.UsageBased.MeteredQuantity) + s.True(usageLine.UsageBased.MeteredQuantity.Equal(alpacadecimal.NewFromFloat(1500001)), + "MeteredQuantity should be raw meter value, got %s", usageLine.UsageBased.MeteredQuantity.String()) + + // After conversion (1500001 / 1e6 = 1.500001) and ceil rounding → 2 + // The detailed line should reflect the converted+rounded quantity + s.NotEmpty(usageLine.DetailedLines, "should have detailed lines") + + // The total should be 2 * $10 = $20 (2 million-packs at $10 each) + s.True(usageLine.Totals.Total.Equal(alpacadecimal.NewFromFloat(20)), + "Total should be 20 (2 packages * $10), got %s", usageLine.Totals.Total.String()) + }) +} + +// TestUnitConfigMultiply tests UnitConfig with multiply operation (dynamic/margin pricing pattern). +func (s *UnitConfigTestSuite) TestUnitConfigMultiply() { + namespace := s.GetUniqueNamespace("ns-unitconfig-multiply") + ctx := context.Background() + + sandboxApp := s.InstallSandboxApp(s.T(), namespace) + s.ProvisionBillingProfile(ctx, namespace, sandboxApp.GetID()) + + customerEntity := s.CreateTestCustomer(namespace, "test-customer") + s.NotNil(customerEntity) + + meterSlug := "api-calls" + meterID := ulid.Make().String() + s.NoError(s.MeterAdapter.ReplaceMeters(ctx, []meter.Meter{ + { + ManagedResource: models.ManagedResource{ + ID: meterID, + NamespacedModel: models.NamespacedModel{ + Namespace: namespace, + }, + ManagedModel: models.ManagedModel{ + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + }, + Name: "API Calls", + }, + Key: meterSlug, + Aggregation: meter.MeterAggregationSum, + EventType: "test", + ValueProperty: lo.ToPtr("$.value"), + }, + })) + defer func() { + s.NoError(s.MeterAdapter.ReplaceMeters(ctx, []meter.Meter{})) + s.MockStreamingConnector.Reset() + }() + + feat := lo.Must(s.FeatureService.CreateFeature(ctx, feature.CreateFeatureInputs{ + Namespace: namespace, + Name: meterSlug, + Key: meterSlug, + MeterID: lo.ToPtr(meterID), + })) + + periodEnd := time.Now().Add(-time.Second) + periodStart := periodEnd.Add(-time.Hour) + invoiceAt := periodEnd.Add(-time.Millisecond) + + // Register 100 API calls, with 1.2x margin multiplier → effective quantity = 120 + s.MockStreamingConnector.AddSimpleEvent(meterSlug, 0, periodStart.Add(-time.Minute)) + s.MockStreamingConnector.AddSimpleEvent(meterSlug, 100, periodStart.Add(time.Minute)) + + unitConfig := &productcatalog.UnitConfig{ + Operation: productcatalog.ConversionOperationMultiply, + ConversionFactor: alpacadecimal.NewFromFloat(1.2), + Rounding: productcatalog.RoundingModeNone, + } + + res, err := s.BillingService.CreatePendingInvoiceLines(ctx, + billing.CreatePendingInvoiceLinesInput{ + Customer: customerEntity.GetID(), + Currency: currencyx.Code(currency.USD), + Lines: []billing.GatheringLine{ + { + GatheringLineBase: billing.GatheringLineBase{ + ManagedResource: models.NewManagedResource(models.ManagedResourceInput{ + Namespace: namespace, + Name: "API Calls", + }), + ServicePeriod: timeutil.ClosedPeriod{From: periodStart, To: periodEnd}, + InvoiceAt: invoiceAt, + ManagedBy: billing.ManuallyManagedLine, + Currency: currencyx.Code(currency.USD), + FeatureKey: feat.Key, + Price: lo.FromPtr(productcatalog.NewPriceFrom(productcatalog.UnitPrice{ + Amount: alpacadecimal.NewFromFloat(1), + })), + UnitConfig: unitConfig, + }, + }, + }, + }) + s.NoError(err) + s.Len(res.Lines, 1) + + // Invoice and check + invoices, err := s.BillingService.InvoicePendingLines(ctx, billing.InvoicePendingLinesInput{ + Customer: customerEntity.GetID(), + }) + s.NoError(err) + s.Len(invoices, 1) + + lines := invoices[0].Lines.OrEmpty() + s.NotEmpty(lines) + + var usageLine *billing.StandardLine + for _, l := range lines { + if l.UsageBased != nil && l.UsageBased.FeatureKey == feat.Key { + usageLine = l + break + } + } + s.NotNil(usageLine, "should have a usage-based line") + + // Raw metered = 100, after 1.2x multiply = 120, at $1/unit = $120 + s.NotNil(usageLine.UsageBased.MeteredQuantity) + s.True(usageLine.UsageBased.MeteredQuantity.Equal(alpacadecimal.NewFromFloat(100)), + "MeteredQuantity should be 100, got %s", usageLine.UsageBased.MeteredQuantity.String()) + + s.True(usageLine.Totals.Total.Equal(alpacadecimal.NewFromFloat(120)), + "Total should be 120 (100 * 1.2 * $1), got %s", usageLine.Totals.Total.String()) +} + +// TestUnitConfigWithTieredPrice tests the key use case: UnitConfig with graduated tiered pricing. +// This is the "tiered package pricing" pattern from the proposal. +func (s *UnitConfigTestSuite) TestUnitConfigWithTieredPrice() { + namespace := s.GetUniqueNamespace("ns-unitconfig-tiered") + ctx := context.Background() + + sandboxApp := s.InstallSandboxApp(s.T(), namespace) + s.ProvisionBillingProfile(ctx, namespace, sandboxApp.GetID()) + + customerEntity := s.CreateTestCustomer(namespace, "test-customer") + s.NotNil(customerEntity) + + meterSlug := "tokens-tiered" + meterID := ulid.Make().String() + s.NoError(s.MeterAdapter.ReplaceMeters(ctx, []meter.Meter{ + { + ManagedResource: models.ManagedResource{ + ID: meterID, + NamespacedModel: models.NamespacedModel{ + Namespace: namespace, + }, + ManagedModel: models.ManagedModel{ + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + }, + Name: "Tokens Tiered", + }, + Key: meterSlug, + Aggregation: meter.MeterAggregationSum, + EventType: "test", + ValueProperty: lo.ToPtr("$.value"), + }, + })) + defer func() { + s.NoError(s.MeterAdapter.ReplaceMeters(ctx, []meter.Meter{})) + s.MockStreamingConnector.Reset() + }() + + feat := lo.Must(s.FeatureService.CreateFeature(ctx, feature.CreateFeatureInputs{ + Namespace: namespace, + Name: meterSlug, + Key: meterSlug, + MeterID: lo.ToPtr(meterID), + })) + + periodEnd := time.Now().Add(-time.Second) + periodStart := periodEnd.Add(-time.Hour) + invoiceAt := periodEnd.Add(-time.Millisecond) + + // Register 7,500,001 raw tokens + // With divide by 1e6 + ceil → 8 million-packs + // Graduated tiered: 0-5 at $10/unit, 5+ at $8/unit + // Tier 1: 5 units × $10 = $50 + // Tier 2: 3 units × $8 = $24 + // Total: $74 + s.MockStreamingConnector.AddSimpleEvent(meterSlug, 0, periodStart.Add(-time.Minute)) + s.MockStreamingConnector.AddSimpleEvent(meterSlug, 7500001, periodStart.Add(time.Minute)) + + unitConfig := &productcatalog.UnitConfig{ + Operation: productcatalog.ConversionOperationDivide, + ConversionFactor: alpacadecimal.NewFromFloat(1e6), + Rounding: productcatalog.RoundingModeCeiling, + Precision: 0, + DisplayUnit: lo.ToPtr("M"), + } + + res, err := s.BillingService.CreatePendingInvoiceLines(ctx, + billing.CreatePendingInvoiceLinesInput{ + Customer: customerEntity.GetID(), + Currency: currencyx.Code(currency.USD), + Lines: []billing.GatheringLine{ + { + GatheringLineBase: billing.GatheringLineBase{ + ManagedResource: models.NewManagedResource(models.ManagedResourceInput{ + Namespace: namespace, + Name: "Tokens Tiered", + }), + ServicePeriod: timeutil.ClosedPeriod{From: periodStart, To: periodEnd}, + InvoiceAt: invoiceAt, + ManagedBy: billing.ManuallyManagedLine, + Currency: currencyx.Code(currency.USD), + FeatureKey: feat.Key, + Price: lo.FromPtr(productcatalog.NewPriceFrom(productcatalog.TieredPrice{ + Mode: productcatalog.GraduatedTieredPrice, + Tiers: []productcatalog.PriceTier{ + { + UpToAmount: lo.ToPtr(alpacadecimal.NewFromFloat(5)), + UnitPrice: &productcatalog.PriceTierUnitPrice{ + Amount: alpacadecimal.NewFromFloat(10), + }, + }, + { + UnitPrice: &productcatalog.PriceTierUnitPrice{ + Amount: alpacadecimal.NewFromFloat(8), + }, + }, + }, + })), + UnitConfig: unitConfig, + }, + }, + }, + }) + s.NoError(err) + s.Len(res.Lines, 1) + + invoices, err := s.BillingService.InvoicePendingLines(ctx, billing.InvoicePendingLinesInput{ + Customer: customerEntity.GetID(), + }) + s.NoError(err) + s.Len(invoices, 1) + + lines := invoices[0].Lines.OrEmpty() + s.NotEmpty(lines) + + var usageLine *billing.StandardLine + for _, l := range lines { + if l.UsageBased != nil && l.UsageBased.FeatureKey == feat.Key { + usageLine = l + break + } + } + s.NotNil(usageLine, "should have a usage-based line") + + // MeteredQuantity should be the raw value (7500001) + s.NotNil(usageLine.UsageBased.MeteredQuantity) + s.True(usageLine.UsageBased.MeteredQuantity.Equal(alpacadecimal.NewFromFloat(7500001)), + "MeteredQuantity should be 7500001, got %s", usageLine.UsageBased.MeteredQuantity.String()) + + // Total should be $74 (5 × $10 + 3 × $8) + s.True(usageLine.Totals.Total.Equal(alpacadecimal.NewFromFloat(74)), + "Total should be 74 (5*$10 + 3*$8), got %s", usageLine.Totals.Total.String()) +} + +// TestUnitConfigWithFloorRounding tests UnitConfig with floor rounding — "bill only for complete units consumed". +func (s *UnitConfigTestSuite) TestUnitConfigWithFloorRounding() { + namespace := s.GetUniqueNamespace("ns-unitconfig-floor") + ctx := context.Background() + + sandboxApp := s.InstallSandboxApp(s.T(), namespace) + s.ProvisionBillingProfile(ctx, namespace, sandboxApp.GetID()) + + customerEntity := s.CreateTestCustomer(namespace, "test-customer") + s.NotNil(customerEntity) + + meterSlug := "bytes-floor" + meterID := ulid.Make().String() + s.NoError(s.MeterAdapter.ReplaceMeters(ctx, []meter.Meter{ + { + ManagedResource: models.ManagedResource{ + ID: meterID, + NamespacedModel: models.NamespacedModel{ + Namespace: namespace, + }, + ManagedModel: models.ManagedModel{ + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + }, + Name: "Bytes Floor", + }, + Key: meterSlug, + Aggregation: meter.MeterAggregationSum, + EventType: "test", + ValueProperty: lo.ToPtr("$.value"), + }, + })) + defer func() { + s.NoError(s.MeterAdapter.ReplaceMeters(ctx, []meter.Meter{})) + s.MockStreamingConnector.Reset() + }() + + feat := lo.Must(s.FeatureService.CreateFeature(ctx, feature.CreateFeatureInputs{ + Namespace: namespace, + Name: meterSlug, + Key: meterSlug, + MeterID: lo.ToPtr(meterID), + })) + + periodEnd := time.Now().Add(-time.Second) + periodStart := periodEnd.Add(-time.Hour) + invoiceAt := periodEnd.Add(-time.Millisecond) + + // Register 1,999 bytes — with divide by 1000 + floor → 1 KB + // At $5/KB = $5 + s.MockStreamingConnector.AddSimpleEvent(meterSlug, 0, periodStart.Add(-time.Minute)) + s.MockStreamingConnector.AddSimpleEvent(meterSlug, 1999, periodStart.Add(time.Minute)) + + unitConfig := &productcatalog.UnitConfig{ + Operation: productcatalog.ConversionOperationDivide, + ConversionFactor: alpacadecimal.NewFromFloat(1000), + Rounding: productcatalog.RoundingModeFloor, + Precision: 0, + DisplayUnit: lo.ToPtr("KB"), + } + + res, err := s.BillingService.CreatePendingInvoiceLines(ctx, + billing.CreatePendingInvoiceLinesInput{ + Customer: customerEntity.GetID(), + Currency: currencyx.Code(currency.USD), + Lines: []billing.GatheringLine{ + { + GatheringLineBase: billing.GatheringLineBase{ + ManagedResource: models.NewManagedResource(models.ManagedResourceInput{ + Namespace: namespace, + Name: "Bytes", + }), + ServicePeriod: timeutil.ClosedPeriod{From: periodStart, To: periodEnd}, + InvoiceAt: invoiceAt, + ManagedBy: billing.ManuallyManagedLine, + Currency: currencyx.Code(currency.USD), + FeatureKey: feat.Key, + Price: lo.FromPtr(productcatalog.NewPriceFrom(productcatalog.UnitPrice{ + Amount: alpacadecimal.NewFromFloat(5), + })), + UnitConfig: unitConfig, + }, + }, + }, + }) + s.NoError(err) + s.Len(res.Lines, 1) + + invoices, err := s.BillingService.InvoicePendingLines(ctx, billing.InvoicePendingLinesInput{ + Customer: customerEntity.GetID(), + }) + s.NoError(err) + s.Len(invoices, 1) + + lines := invoices[0].Lines.OrEmpty() + var usageLine *billing.StandardLine + for _, l := range lines { + if l.UsageBased != nil && l.UsageBased.FeatureKey == feat.Key { + usageLine = l + break + } + } + s.NotNil(usageLine, "should have a usage-based line") + + // MeteredQuantity should be the raw value (1999) + s.NotNil(usageLine.UsageBased.MeteredQuantity) + s.True(usageLine.UsageBased.MeteredQuantity.Equal(alpacadecimal.NewFromFloat(1999)), + "MeteredQuantity should be 1999, got %s", usageLine.UsageBased.MeteredQuantity.String()) + + // 1999 / 1000 = 1.999, floor → 1, at $5/unit = $5 + s.True(usageLine.Totals.Total.Equal(alpacadecimal.NewFromFloat(5)), + "Total should be 5 (1 KB * $5), got %s", usageLine.Totals.Total.String()) +} + +// TestUnitConfigNil tests that billing works normally when UnitConfig is not set. +func (s *UnitConfigTestSuite) TestUnitConfigNil() { + namespace := s.GetUniqueNamespace("ns-unitconfig-nil") + ctx := context.Background() + + sandboxApp := s.InstallSandboxApp(s.T(), namespace) + s.ProvisionBillingProfile(ctx, namespace, sandboxApp.GetID()) + + customerEntity := s.CreateTestCustomer(namespace, "test-customer") + + meterSlug := "events" + meterID := ulid.Make().String() + s.NoError(s.MeterAdapter.ReplaceMeters(ctx, []meter.Meter{ + { + ManagedResource: models.ManagedResource{ + ID: meterID, + NamespacedModel: models.NamespacedModel{ + Namespace: namespace, + }, + ManagedModel: models.ManagedModel{ + CreatedAt: time.Now(), + UpdatedAt: time.Now(), + }, + Name: "Events", + }, + Key: meterSlug, + Aggregation: meter.MeterAggregationSum, + EventType: "test", + ValueProperty: lo.ToPtr("$.value"), + }, + })) + defer func() { + s.NoError(s.MeterAdapter.ReplaceMeters(ctx, []meter.Meter{})) + s.MockStreamingConnector.Reset() + }() + + feat := lo.Must(s.FeatureService.CreateFeature(ctx, feature.CreateFeatureInputs{ + Namespace: namespace, + Name: meterSlug, + Key: meterSlug, + MeterID: lo.ToPtr(meterID), + })) + + periodEnd := time.Now().Add(-time.Second) + periodStart := periodEnd.Add(-time.Hour) + invoiceAt := periodEnd.Add(-time.Millisecond) + + s.MockStreamingConnector.AddSimpleEvent(meterSlug, 0, periodStart.Add(-time.Minute)) + s.MockStreamingConnector.AddSimpleEvent(meterSlug, 50, periodStart.Add(time.Minute)) + + // No UnitConfig — raw quantity should flow through unmodified + res, err := s.BillingService.CreatePendingInvoiceLines(ctx, + billing.CreatePendingInvoiceLinesInput{ + Customer: customerEntity.GetID(), + Currency: currencyx.Code(currency.USD), + Lines: []billing.GatheringLine{ + { + GatheringLineBase: billing.GatheringLineBase{ + ManagedResource: models.NewManagedResource(models.ManagedResourceInput{ + Namespace: namespace, + Name: "Events", + }), + ServicePeriod: timeutil.ClosedPeriod{From: periodStart, To: periodEnd}, + InvoiceAt: invoiceAt, + ManagedBy: billing.ManuallyManagedLine, + Currency: currencyx.Code(currency.USD), + FeatureKey: feat.Key, + Price: lo.FromPtr(productcatalog.NewPriceFrom(productcatalog.UnitPrice{ + Amount: alpacadecimal.NewFromFloat(2), + })), + // No UnitConfig + }, + }, + }, + }) + s.NoError(err) + s.Len(res.Lines, 1) + s.Nil(res.Lines[0].UnitConfig, "UnitConfig should be nil") + + invoices, err := s.BillingService.InvoicePendingLines(ctx, billing.InvoicePendingLinesInput{ + Customer: customerEntity.GetID(), + }) + s.NoError(err) + s.Len(invoices, 1) + + lines := invoices[0].Lines.OrEmpty() + var usageLine *billing.StandardLine + for _, l := range lines { + if l.UsageBased != nil && l.UsageBased.FeatureKey == feat.Key { + usageLine = l + break + } + } + s.NotNil(usageLine) + s.Nil(usageLine.UsageBased.UnitConfig, "UnitConfig should remain nil") + + // 50 events * $2 = $100 + s.True(usageLine.Totals.Total.Equal(alpacadecimal.NewFromFloat(100)), + "Total should be 100 (50 * $2), got %s", usageLine.Totals.Total.String()) +} diff --git a/tools/migrate/migrations/20260324173203_add_unit_config.down.sql b/tools/migrate/migrations/20260324173203_add_unit_config.down.sql new file mode 100644 index 0000000000..4c79822e9f --- /dev/null +++ b/tools/migrate/migrations/20260324173203_add_unit_config.down.sql @@ -0,0 +1,10 @@ +-- reverse: modify "features" table +ALTER TABLE "features" DROP COLUMN "unit_config"; +-- reverse: modify "subscription_items" table +ALTER TABLE "subscription_items" DROP COLUMN "unit_config"; +-- reverse: modify "plan_rate_cards" table +ALTER TABLE "plan_rate_cards" DROP COLUMN "unit_config"; +-- reverse: modify "billing_invoice_usage_based_line_configs" table +ALTER TABLE "billing_invoice_usage_based_line_configs" DROP COLUMN "unit_config"; +-- reverse: modify "addon_rate_cards" table +ALTER TABLE "addon_rate_cards" DROP COLUMN "unit_config"; diff --git a/tools/migrate/migrations/20260324173203_add_unit_config.up.sql b/tools/migrate/migrations/20260324173203_add_unit_config.up.sql new file mode 100644 index 0000000000..3a23984f0d --- /dev/null +++ b/tools/migrate/migrations/20260324173203_add_unit_config.up.sql @@ -0,0 +1,10 @@ +-- modify "addon_rate_cards" table +ALTER TABLE "addon_rate_cards" ADD COLUMN "unit_config" jsonb NULL; +-- modify "billing_invoice_usage_based_line_configs" table +ALTER TABLE "billing_invoice_usage_based_line_configs" ADD COLUMN "unit_config" jsonb NULL; +-- modify "plan_rate_cards" table +ALTER TABLE "plan_rate_cards" ADD COLUMN "unit_config" jsonb NULL; +-- modify "subscription_items" table +ALTER TABLE "subscription_items" ADD COLUMN "unit_config" jsonb NULL; +-- modify "features" table +ALTER TABLE "features" ADD COLUMN "unit_config" jsonb NULL; diff --git a/tools/migrate/migrations/atlas.sum b/tools/migrate/migrations/atlas.sum index 922a1e17fb..a498bbafff 100644 --- a/tools/migrate/migrations/atlas.sum +++ b/tools/migrate/migrations/atlas.sum @@ -1,4 +1,4 @@ -h1:WcmwZA9UoE2tSJRDVbJUbZDHAiBuRPpJgFqVNeAosTg= +h1:nJhg6z2HoDBHhmcDdx9WvpzEG7a0RYb+dw7rwM46l+U= 20240826120919_init.up.sql h1:tc1V91/smlmaeJGQ8h+MzTEeFjjnrrFDbDAjOYJK91o= 20240903155435_entitlement-expired-index.up.sql h1:Hp8u5uckmLXc1cRvWU0AtVnnK8ShlpzZNp8pbiJLhac= 20240917172257_billing-entities.up.sql h1:Q1dAMo0Vjiit76OybClNfYPGC5nmvov2/M2W1ioi4Kw= @@ -167,3 +167,4 @@ h1:WcmwZA9UoE2tSJRDVbJUbZDHAiBuRPpJgFqVNeAosTg= 20260320171954_feature-meter-id.up.sql h1:MTLjHuK9YYC0E+C1kAxP6hAhQsH+qyhWcJ4Ly1RNhEU= 20260323132723_ledger-route-cost-basis.up.sql h1:s6SkSQQ4jQf/ntGaymwz/MW81cPaNi9UhYYEMtl1Wlw= 20260323141807_add-feature-description.up.sql h1:D1H73owBZ/GP4otq3TMJ12Ewz0NOBw7VBXmvzsqd91c= +20260324173203_add_unit_config.up.sql h1:rpH2qVwPIh1d6/bvT5ZlLXmbhxgAaRO6z75GPo0ZGfE=