Skip to content

EVE SDE Schema

Documentation for third-party developers

freelanceJobSchemas.jsonl

Schema

  • _key (required): integer
    Range: 1 .. 1
  • _value (required): array of object

    • _key (required): enum
      Enum values: BoostShield, CaptureFWComplex, DamageShip, DefendFWComplex, DeliverItem, KillCapsuleer, KillNPC, MineOre, RepairArmor, ShipInsurance
    • contentTags (required): array of string
      Type: string
    • contributionMultiplier: object

      • defaultValue (required): integer
        Range: 1 .. 1
      • description (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
      • iconID (required): enum
        Enum values: isk

      • maxValue (required): integer
        Range: 2 .. 2
      • minValue (required): number
        Range: 0.1 .. 0.1
      • title (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
      • unsetDescription (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
    • description (required): object

      • de (required): string
      • en (required): string
      • es (required): string
      • fr (required): string
      • ja (required): string
      • ko (required): string
      • ru (required): string
      • zh (required): string
    • iconID (required): string

    • maxContributionsPerParticipant (required): object

      • description (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
      • iconID (required): enum
        Enum values: personal, isk

      • title (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
      • unsetDescription (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
    • maxProgressPerContribution: object

      • description (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
      • iconID (required): enum
        Enum values: isk

      • title (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
      • unsetDescription (required): object

        • de (required): string
        • en (required): string
        • es (required): string
        • fr (required): string
        • ja (required): string
        • ko (required): string
        • ru (required): string
        • zh (required): string
    • parameters (required): array of object

      • _key (required): string
      • boolean: object

        • choiceLabel (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
        • default (required): boolean

        • description (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
        • iconID (required): enum
          Enum values: person

        • optionFalse (required): object

          • description (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
          • title (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
        • optionTrue (required): object

          • description (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
          • title (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
        • title (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
      • itemDelivery: object

        • deliveryLocation (required): object

          • acceptedValueTypes (required): array of enum
            Type: string
            Enum values: station, structure
          • description (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
          • iconID (required): enum
            Enum values: location

          • maxEntries (required): integer
            Range: 10 .. 10
          • title (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
          • unsetDescription (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
        • description (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
        • iconID (required): enum
          Enum values: inventory

        • inventoryType (required): object

          • acceptedValueTypes (required): array of string
            Type: string
          • description (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
          • iconID (required): enum
            Enum values: inventory

          • title (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
          • unsetDescription (required): object

            • de (required): string
            • en (required): string
            • es (required): string
            • fr (required): string
            • ja (required): string
            • ko (required): string
            • ru (required): string
            • zh (required): string
        • title (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
      • matcher: object

        • acceptedValueTypes (required): array of string
          Type: string
        • description (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
        • iconID (required): string

        • maxEntries (required): integer
          Range: 4 .. 10
        • optional (required): boolean
        • title (required): object

          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
        • type (required): string

        • unsetDescription (required): object
          • de (required): string
          • en (required): string
          • es (required): string
          • fr (required): string
          • ja (required): string
          • ko (required): string
          • ru (required): string
          • zh (required): string
    • progressDescription (required): object

      • de (required): string
      • en (required): string
      • es (required): string
      • fr (required): string
      • ja (required): string
      • ko (required): string
      • ru (required): string
      • zh (required): string
    • rewardDescription (required): object

      • de (required): string
      • en (required): string
      • es (required): string
      • fr (required): string
      • ja (required): string
      • ko (required): string
      • ru (required): string
      • zh (required): string
    • targetDescription (required): object

      • de (required): string
      • en (required): string
      • es (required): string
      • fr (required): string
      • ja (required): string
      • ko (required): string
      • ru (required): string
      • zh (required): string
    • title (required): object

      • de (required): string
      • en (required): string
      • es (required): string
      • fr (required): string
      • ja (required): string
      • ko (required): string
      • ru (required): string
      • zh (required): string

Code snippets

// <auto-generated />
//
// To parse this JSON data, add NuGet 'Newtonsoft.Json' then do:
//
//    using QuickType;
//
//    var freelanceJobSchema = FreelanceJobSchema.FromJson(jsonString);

namespace QuickType
{
    using System;
    using System.Collections.Generic;

    using System.Globalization;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;

    public partial class FreelanceJobSchema
    {
        [JsonProperty("_key")]
        public long Key { get; set; }

        [JsonProperty("_value")]
        public Value[] Value { get; set; }
    }

    public partial class Value
    {
        [JsonProperty("_key")]
        public Key Key { get; set; }

        [JsonProperty("contentTags")]
        [JsonConverter(typeof(PurpleDecodeArrayConverter))]
        public string[] ContentTags { get; set; }

        [JsonProperty("contributionMultiplier", NullValueHandling = NullValueHandling.Ignore)]
        public ContributionMultiplier ContributionMultiplier { get; set; }

        [JsonProperty("description")]
        public ValueDescription Description { get; set; }

        [JsonProperty("iconID")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter17))]
        public string IconId { get; set; }

        [JsonProperty("maxContributionsPerParticipant")]
        public MaxContributionsPerParticipant MaxContributionsPerParticipant { get; set; }

        [JsonProperty("maxProgressPerContribution", NullValueHandling = NullValueHandling.Ignore)]
        public MaxProgressPerContribution MaxProgressPerContribution { get; set; }

        [JsonProperty("parameters")]
        public Parameter[] Parameters { get; set; }

        [JsonProperty("progressDescription")]
        public ProgressDescription ProgressDescription { get; set; }

        [JsonProperty("rewardDescription")]
        public RewardDescription RewardDescription { get; set; }

        [JsonProperty("targetDescription")]
        public TargetDescription TargetDescription { get; set; }

        [JsonProperty("title")]
        public ValueTitle Title { get; set; }
    }

    public partial class ContributionMultiplier
    {
        [JsonProperty("defaultValue")]
        public long DefaultValue { get; set; }

        [JsonProperty("description")]
        public ContributionMultiplierDescription Description { get; set; }

        [JsonProperty("iconID")]
        public ContributionMultiplierIconId IconId { get; set; }

        [JsonProperty("maxValue")]
        public long MaxValue { get; set; }

        [JsonProperty("minValue")]
        [JsonConverter(typeof(MinMaxValueCheckConverter))]
        public double MinValue { get; set; }

        [JsonProperty("title")]
        public ContributionMultiplierTitle Title { get; set; }

        [JsonProperty("unsetDescription")]
        public ContributionMultiplierUnsetDescription UnsetDescription { get; set; }
    }

    public partial class ContributionMultiplierDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(FluffyMinMaxLengthCheckConverter))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(TentacledMinMaxLengthCheckConverter))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(StickyMinMaxLengthCheckConverter))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(IndigoMinMaxLengthCheckConverter))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(IndecentMinMaxLengthCheckConverter))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(HilariousMinMaxLengthCheckConverter))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(AmbitiousMinMaxLengthCheckConverter))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(CunningMinMaxLengthCheckConverter))]
        public string Zh { get; set; }
    }

    public partial class ContributionMultiplierTitle
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MagentaMinMaxLengthCheckConverter))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(FriskyMinMaxLengthCheckConverter))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MischievousMinMaxLengthCheckConverter))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(BraggadociousMinMaxLengthCheckConverter))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter1))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter2))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MagentaMinMaxLengthCheckConverter))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter1))]
        public string Zh { get; set; }
    }

    public partial class ContributionMultiplierUnsetDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter3))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter4))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter1))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter2))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter5))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter6))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter7))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter8))]
        public string Zh { get; set; }
    }

    public partial class ValueDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter9))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter10))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter11))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter12))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter13))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter14))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter15))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter16))]
        public string Zh { get; set; }
    }

    public partial class MaxContributionsPerParticipant
    {
        [JsonProperty("description")]
        public MaxContributionsPerParticipantDescription Description { get; set; }

        [JsonProperty("iconID")]
        public MaxContributionsPerParticipantIconId IconId { get; set; }

        [JsonProperty("title")]
        public MaxContributionsPerParticipantTitle Title { get; set; }

        [JsonProperty("unsetDescription")]
        public MaxContributionsPerParticipantUnsetDescription UnsetDescription { get; set; }
    }

    public partial class MaxContributionsPerParticipantDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter18))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter19))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter20))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter21))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter22))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter23))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter24))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter25))]
        public string Zh { get; set; }
    }

    public partial class MaxContributionsPerParticipantTitle
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter26))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter27))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter28))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter29))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter30))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter31))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter32))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter33))]
        public string Zh { get; set; }
    }

    public partial class MaxContributionsPerParticipantUnsetDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter34))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter35))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter36))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter37))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter38))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter39))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter40))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter31))]
        public string Zh { get; set; }
    }

    public partial class MaxProgressPerContribution
    {
        [JsonProperty("description")]
        public MaxProgressPerContributionDescription Description { get; set; }

        [JsonProperty("iconID")]
        public ContributionMultiplierIconId IconId { get; set; }

        [JsonProperty("title")]
        public MaxProgressPerContributionTitle Title { get; set; }

        [JsonProperty("unsetDescription")]
        public MaxProgressPerContributionUnsetDescription UnsetDescription { get; set; }
    }

    public partial class MaxProgressPerContributionDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter41))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter42))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter43))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter44))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter45))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter46))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter47))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter48))]
        public string Zh { get; set; }
    }

    public partial class MaxProgressPerContributionTitle
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter49))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter50))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter7))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter1))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter51))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter8))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter52))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter8))]
        public string Zh { get; set; }
    }

    public partial class MaxProgressPerContributionUnsetDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter49))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter53))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter53))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter54))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter55))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter6))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter56))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter57))]
        public string Zh { get; set; }
    }

    public partial class Parameter
    {
        [JsonProperty("_key")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter58))]
        public string Key { get; set; }

        [JsonProperty("boolean", NullValueHandling = NullValueHandling.Ignore)]
        public Boolean Boolean { get; set; }

        [JsonProperty("itemDelivery", NullValueHandling = NullValueHandling.Ignore)]
        public ItemDelivery ItemDelivery { get; set; }

        [JsonProperty("matcher", NullValueHandling = NullValueHandling.Ignore)]
        public Matcher Matcher { get; set; }
    }

    public partial class Boolean
    {
        [JsonProperty("choiceLabel")]
        public ChoiceLabel ChoiceLabel { get; set; }

        [JsonProperty("default")]
        public bool Default { get; set; }

        [JsonProperty("description")]
        public BooleanDescription Description { get; set; }

        [JsonProperty("iconID")]
        public BooleanIconId IconId { get; set; }

        [JsonProperty("optionFalse")]
        public OptionFalse OptionFalse { get; set; }

        [JsonProperty("optionTrue")]
        public OptionTrue OptionTrue { get; set; }

        [JsonProperty("title")]
        public BooleanTitle Title { get; set; }
    }

    public partial class ChoiceLabel
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter59))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter60))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter61))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter62))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter63))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter64))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter65))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter66))]
        public string Zh { get; set; }
    }

    public partial class BooleanDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter67))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter68))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter69))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter70))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter71))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter72))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter73))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter74))]
        public string Zh { get; set; }
    }

    public partial class OptionFalse
    {
        [JsonProperty("description")]
        public OptionFalseDescription Description { get; set; }

        [JsonProperty("title")]
        public OptionFalseTitle Title { get; set; }
    }

    public partial class OptionFalseDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter75))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter76))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter77))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter78))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter79))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter80))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter81))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter82))]
        public string Zh { get; set; }
    }

    public partial class OptionFalseTitle
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter75))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter76))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter77))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter78))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter79))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter80))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter81))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter82))]
        public string Zh { get; set; }
    }

    public partial class OptionTrue
    {
        [JsonProperty("description")]
        public OptionTrueDescription Description { get; set; }

        [JsonProperty("title")]
        public OptionTrueTitle Title { get; set; }
    }

    public partial class OptionTrueDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter83))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter84))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter85))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter86))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter87))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter88))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter89))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter90))]
        public string Zh { get; set; }
    }

    public partial class OptionTrueTitle
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter83))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter84))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter85))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter86))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter87))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter88))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter89))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter90))]
        public string Zh { get; set; }
    }

    public partial class BooleanTitle
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter59))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter60))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter61))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter62))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter63))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter64))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter65))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter66))]
        public string Zh { get; set; }
    }

    public partial class ItemDelivery
    {
        [JsonProperty("deliveryLocation")]
        public DeliveryLocation DeliveryLocation { get; set; }

        [JsonProperty("description")]
        public ItemDeliveryDescription Description { get; set; }

        [JsonProperty("iconID")]
        public ItemDeliveryIconId IconId { get; set; }

        [JsonProperty("inventoryType")]
        public InventoryType InventoryType { get; set; }

        [JsonProperty("title")]
        public ItemDeliveryTitle Title { get; set; }
    }

    public partial class DeliveryLocation
    {
        [JsonProperty("acceptedValueTypes")]
        public AcceptedValueType[] AcceptedValueTypes { get; set; }

        [JsonProperty("description")]
        public DeliveryLocationDescription Description { get; set; }

        [JsonProperty("iconID")]
        public DeliveryLocationIconId IconId { get; set; }

        [JsonProperty("maxEntries")]
        public long MaxEntries { get; set; }

        [JsonProperty("title")]
        public DeliveryLocationTitle Title { get; set; }

        [JsonProperty("unsetDescription")]
        public DeliveryLocationUnsetDescription UnsetDescription { get; set; }
    }

    public partial class DeliveryLocationDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter91))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter92))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter93))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter94))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter95))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter96))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter92))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter53))]
        public string Zh { get; set; }
    }

    public partial class DeliveryLocationTitle
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter97))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter98))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter99))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter98))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter100))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter100))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter101))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter100))]
        public string Zh { get; set; }
    }

    public partial class DeliveryLocationUnsetDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter102))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter103))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter55))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter51))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter104))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter104))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter101))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter97))]
        public string Zh { get; set; }
    }

    public partial class ItemDeliveryDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter105))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter106))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter107))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter2))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter50))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter108))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter109))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter51))]
        public string Zh { get; set; }
    }

    public partial class InventoryType
    {
        [JsonProperty("acceptedValueTypes")]
        [JsonConverter(typeof(FluffyDecodeArrayConverter))]
        public string[] AcceptedValueTypes { get; set; }

        [JsonProperty("description")]
        public InventoryTypeDescription Description { get; set; }

        [JsonProperty("iconID")]
        public ItemDeliveryIconId IconId { get; set; }

        [JsonProperty("title")]
        public InventoryTypeTitle Title { get; set; }

        [JsonProperty("unsetDescription")]
        public InventoryTypeUnsetDescription UnsetDescription { get; set; }
    }

    public partial class InventoryTypeDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter105))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter106))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter107))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter2))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter50))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter108))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter109))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter51))]
        public string Zh { get; set; }
    }

    public partial class InventoryTypeTitle
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter110))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter5))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter50))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter111))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter6))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter103))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter108))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter99))]
        public string Zh { get; set; }
    }

    public partial class InventoryTypeUnsetDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter102))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter103))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter55))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter51))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter104))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter104))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter101))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter97))]
        public string Zh { get; set; }
    }

    public partial class ItemDeliveryTitle
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter110))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter5))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter50))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter111))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter6))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter103))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter108))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter99))]
        public string Zh { get; set; }
    }

    public partial class Matcher
    {
        [JsonProperty("acceptedValueTypes")]
        [JsonConverter(typeof(TentacledDecodeArrayConverter))]
        public string[] AcceptedValueTypes { get; set; }

        [JsonProperty("description")]
        public MatcherDescription Description { get; set; }

        [JsonProperty("iconID")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter121))]
        public string IconId { get; set; }

        [JsonProperty("maxEntries")]
        public long MaxEntries { get; set; }

        [JsonProperty("optional")]
        public bool Optional { get; set; }

        [JsonProperty("title")]
        public MatcherTitle Title { get; set; }

        [JsonProperty("type")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter130))]
        public string Type { get; set; }

        [JsonProperty("unsetDescription")]
        public MatcherUnsetDescription UnsetDescription { get; set; }
    }

    public partial class MatcherDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter113))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter114))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter115))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter116))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter117))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter118))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter119))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter120))]
        public string Zh { get; set; }
    }

    public partial class MatcherTitle
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter122))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter123))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter124))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter125))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter126))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter127))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter128))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter129))]
        public string Zh { get; set; }
    }

    public partial class MatcherUnsetDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter102))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter103))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter55))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter51))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter104))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter104))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter101))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter97))]
        public string Zh { get; set; }
    }

    public partial class ProgressDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter131))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter132))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter133))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter134))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter135))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter136))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter137))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter138))]
        public string Zh { get; set; }
    }

    public partial class RewardDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter139))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter140))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter141))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter142))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter143))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter144))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter145))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter146))]
        public string Zh { get; set; }
    }

    public partial class TargetDescription
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter147))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter148))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter149))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter150))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter151))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter152))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter153))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter154))]
        public string Zh { get; set; }
    }

    public partial class ValueTitle
    {
        [JsonProperty("de")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter155))]
        public string De { get; set; }

        [JsonProperty("en")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter155))]
        public string En { get; set; }

        [JsonProperty("es")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter156))]
        public string Es { get; set; }

        [JsonProperty("fr")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter157))]
        public string Fr { get; set; }

        [JsonProperty("ja")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter158))]
        public string Ja { get; set; }

        [JsonProperty("ko")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter159))]
        public string Ko { get; set; }

        [JsonProperty("ru")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter160))]
        public string Ru { get; set; }

        [JsonProperty("zh")]
        [JsonConverter(typeof(MinMaxLengthCheckConverter161))]
        public string Zh { get; set; }
    }

    public enum ContributionMultiplierIconId { Isk };

    public enum Key { BoostShield, CaptureFwComplex, DamageShip, DefendFwComplex, DeliverItem, KillCapsuleer, KillNpc, MineOre, RepairArmor, ShipInsurance };

    public enum MaxContributionsPerParticipantIconId { Isk, Personal };

    public enum BooleanIconId { Person };

    public enum AcceptedValueType { Station, Structure };

    public enum DeliveryLocationIconId { Location };

    public enum ItemDeliveryIconId { Inventory };

    public partial class FreelanceJobSchema
    {
        public static FreelanceJobSchema FromJson(string json) => JsonConvert.DeserializeObject<FreelanceJobSchema>(json, QuickType.Converter.Settings);
    }

    public static class Serialize
    {
        public static string ToJson(this FreelanceJobSchema self) => JsonConvert.SerializeObject(self, QuickType.Converter.Settings);
    }

    internal static class Converter
    {
        public static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
        {
            MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
            DateParseHandling = DateParseHandling.None,
            Converters =
            {
                KeyConverter.Singleton,
                ContributionMultiplierIconIdConverter.Singleton,
                MaxContributionsPerParticipantIconIdConverter.Singleton,
                BooleanIconIdConverter.Singleton,
                AcceptedValueTypeConverter.Singleton,
                DeliveryLocationIconIdConverter.Singleton,
                ItemDeliveryIconIdConverter.Singleton,
                new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }
            },
        };
    }

    internal class KeyConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(Key) || t == typeof(Key?);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null) return null;
            var value = serializer.Deserialize<string>(reader);
            switch (value)
            {
                case "BoostShield":
                    return Key.BoostShield;
                case "CaptureFWComplex":
                    return Key.CaptureFwComplex;
                case "DamageShip":
                    return Key.DamageShip;
                case "DefendFWComplex":
                    return Key.DefendFwComplex;
                case "DeliverItem":
                    return Key.DeliverItem;
                case "KillCapsuleer":
                    return Key.KillCapsuleer;
                case "KillNPC":
                    return Key.KillNpc;
                case "MineOre":
                    return Key.MineOre;
                case "RepairArmor":
                    return Key.RepairArmor;
                case "ShipInsurance":
                    return Key.ShipInsurance;
            }
            throw new Exception("Cannot unmarshal type Key");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            if (untypedValue == null)
            {
                serializer.Serialize(writer, null);
                return;
            }
            var value = (Key)untypedValue;
            switch (value)
            {
                case Key.BoostShield:
                    serializer.Serialize(writer, "BoostShield");
                    return;
                case Key.CaptureFwComplex:
                    serializer.Serialize(writer, "CaptureFWComplex");
                    return;
                case Key.DamageShip:
                    serializer.Serialize(writer, "DamageShip");
                    return;
                case Key.DefendFwComplex:
                    serializer.Serialize(writer, "DefendFWComplex");
                    return;
                case Key.DeliverItem:
                    serializer.Serialize(writer, "DeliverItem");
                    return;
                case Key.KillCapsuleer:
                    serializer.Serialize(writer, "KillCapsuleer");
                    return;
                case Key.KillNpc:
                    serializer.Serialize(writer, "KillNPC");
                    return;
                case Key.MineOre:
                    serializer.Serialize(writer, "MineOre");
                    return;
                case Key.RepairArmor:
                    serializer.Serialize(writer, "RepairArmor");
                    return;
                case Key.ShipInsurance:
                    serializer.Serialize(writer, "ShipInsurance");
                    return;
            }
            throw new Exception("Cannot marshal type Key");
        }

        public static readonly KeyConverter Singleton = new KeyConverter();
    }

    internal class PurpleDecodeArrayConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string[]);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            reader.Read();
            var value = new List<string>();
            while (reader.TokenType != JsonToken.EndArray)
            {
                var converter = PurpleMinMaxLengthCheckConverter.Singleton;
                var arrayItem = (string)converter.ReadJson(reader, typeof(string), null, serializer);
                value.Add(arrayItem);
                reader.Read();
            }
            return value.ToArray();
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string[])untypedValue;
            writer.WriteStartArray();
            foreach (var arrayItem in value)
            {
                var converter = PurpleMinMaxLengthCheckConverter.Singleton;
                converter.WriteJson(writer, arrayItem, serializer);
            }
            writer.WriteEndArray();
            return;
        }

        public static readonly PurpleDecodeArrayConverter Singleton = new PurpleDecodeArrayConverter();
    }

    internal class PurpleMinMaxLengthCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 14 && value.Length <= 30)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 14 && value.Length <= 30)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly PurpleMinMaxLengthCheckConverter Singleton = new PurpleMinMaxLengthCheckConverter();
    }

    internal class FluffyMinMaxLengthCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 467 && value.Length <= 467)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 467 && value.Length <= 467)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly FluffyMinMaxLengthCheckConverter Singleton = new FluffyMinMaxLengthCheckConverter();
    }

    internal class TentacledMinMaxLengthCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 395 && value.Length <= 395)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 395 && value.Length <= 395)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly TentacledMinMaxLengthCheckConverter Singleton = new TentacledMinMaxLengthCheckConverter();
    }

    internal class StickyMinMaxLengthCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 439 && value.Length <= 439)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 439 && value.Length <= 439)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly StickyMinMaxLengthCheckConverter Singleton = new StickyMinMaxLengthCheckConverter();
    }

    internal class IndigoMinMaxLengthCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 441 && value.Length <= 441)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 441 && value.Length <= 441)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly IndigoMinMaxLengthCheckConverter Singleton = new IndigoMinMaxLengthCheckConverter();
    }

    internal class IndecentMinMaxLengthCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 155 && value.Length <= 155)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 155 && value.Length <= 155)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly IndecentMinMaxLengthCheckConverter Singleton = new IndecentMinMaxLengthCheckConverter();
    }

    internal class HilariousMinMaxLengthCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 217 && value.Length <= 217)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 217 && value.Length <= 217)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly HilariousMinMaxLengthCheckConverter Singleton = new HilariousMinMaxLengthCheckConverter();
    }

    internal class AmbitiousMinMaxLengthCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 438 && value.Length <= 438)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 438 && value.Length <= 438)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly AmbitiousMinMaxLengthCheckConverter Singleton = new AmbitiousMinMaxLengthCheckConverter();
    }

    internal class CunningMinMaxLengthCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 122 && value.Length <= 122)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 122 && value.Length <= 122)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly CunningMinMaxLengthCheckConverter Singleton = new CunningMinMaxLengthCheckConverter();
    }

    internal class ContributionMultiplierIconIdConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(ContributionMultiplierIconId) || t == typeof(ContributionMultiplierIconId?);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null) return null;
            var value = serializer.Deserialize<string>(reader);
            if (value == "isk")
            {
                return ContributionMultiplierIconId.Isk;
            }
            throw new Exception("Cannot unmarshal type ContributionMultiplierIconId");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            if (untypedValue == null)
            {
                serializer.Serialize(writer, null);
                return;
            }
            var value = (ContributionMultiplierIconId)untypedValue;
            if (value == ContributionMultiplierIconId.Isk)
            {
                serializer.Serialize(writer, "isk");
                return;
            }
            throw new Exception("Cannot marshal type ContributionMultiplierIconId");
        }

        public static readonly ContributionMultiplierIconIdConverter Singleton = new ContributionMultiplierIconIdConverter();
    }

    internal class MinMaxValueCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(double) || t == typeof(double?);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null) return null;
            var value = serializer.Deserialize<double>(reader);
            if (value >= 0.1 && value <= 0.1)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type double");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            if (untypedValue == null)
            {
                serializer.Serialize(writer, null);
                return;
            }
            var value = (double)untypedValue;
            if (value >= 0.1 && value <= 0.1)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type double");
        }

        public static readonly MinMaxValueCheckConverter Singleton = new MinMaxValueCheckConverter();
    }

    internal class MagentaMinMaxLengthCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 49 && value.Length <= 49)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 49 && value.Length <= 49)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MagentaMinMaxLengthCheckConverter Singleton = new MagentaMinMaxLengthCheckConverter();
    }

    internal class FriskyMinMaxLengthCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 48 && value.Length <= 48)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 48 && value.Length <= 48)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly FriskyMinMaxLengthCheckConverter Singleton = new FriskyMinMaxLengthCheckConverter();
    }

    internal class MischievousMinMaxLengthCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 51 && value.Length <= 51)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 51 && value.Length <= 51)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MischievousMinMaxLengthCheckConverter Singleton = new MischievousMinMaxLengthCheckConverter();
    }

    internal class BraggadociousMinMaxLengthCheckConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 55 && value.Length <= 55)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 55 && value.Length <= 55)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly BraggadociousMinMaxLengthCheckConverter Singleton = new BraggadociousMinMaxLengthCheckConverter();
    }

    internal class MinMaxLengthCheckConverter1 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 32 && value.Length <= 32)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 32 && value.Length <= 32)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter1 Singleton = new MinMaxLengthCheckConverter1();
    }

    internal class MinMaxLengthCheckConverter2 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 34 && value.Length <= 34)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 34 && value.Length <= 34)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter2 Singleton = new MinMaxLengthCheckConverter2();
    }

    internal class MinMaxLengthCheckConverter3 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 40 && value.Length <= 40)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 40 && value.Length <= 40)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter3 Singleton = new MinMaxLengthCheckConverter3();
    }

    internal class MinMaxLengthCheckConverter4 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 33 && value.Length <= 33)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 33 && value.Length <= 33)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter4 Singleton = new MinMaxLengthCheckConverter4();
    }

    internal class MinMaxLengthCheckConverter5 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 18 && value.Length <= 18)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 18 && value.Length <= 18)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter5 Singleton = new MinMaxLengthCheckConverter5();
    }

    internal class MinMaxLengthCheckConverter6 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 15 && value.Length <= 15)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 15 && value.Length <= 15)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter6 Singleton = new MinMaxLengthCheckConverter6();
    }

    internal class MinMaxLengthCheckConverter7 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 31 && value.Length <= 31)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 31 && value.Length <= 31)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter7 Singleton = new MinMaxLengthCheckConverter7();
    }

    internal class MinMaxLengthCheckConverter8 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 9 && value.Length <= 9)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 9 && value.Length <= 9)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter8 Singleton = new MinMaxLengthCheckConverter8();
    }

    internal class MinMaxLengthCheckConverter9 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 28 && value.Length <= 410)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 28 && value.Length <= 410)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter9 Singleton = new MinMaxLengthCheckConverter9();
    }

    internal class MinMaxLengthCheckConverter10 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 19 && value.Length <= 318)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 19 && value.Length <= 318)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter10 Singleton = new MinMaxLengthCheckConverter10();
    }

    internal class MinMaxLengthCheckConverter11 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 23 && value.Length <= 367)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 23 && value.Length <= 367)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter11 Singleton = new MinMaxLengthCheckConverter11();
    }

    internal class MinMaxLengthCheckConverter12 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 29 && value.Length <= 386)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 29 && value.Length <= 386)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter12 Singleton = new MinMaxLengthCheckConverter12();
    }

    internal class MinMaxLengthCheckConverter13 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 11 && value.Length <= 178)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 11 && value.Length <= 178)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter13 Singleton = new MinMaxLengthCheckConverter13();
    }

    internal class MinMaxLengthCheckConverter14 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 11 && value.Length <= 168)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 11 && value.Length <= 168)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter14 Singleton = new MinMaxLengthCheckConverter14();
    }

    internal class MinMaxLengthCheckConverter15 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 15 && value.Length <= 361)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 15 && value.Length <= 361)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter15 Singleton = new MinMaxLengthCheckConverter15();
    }

    internal class MinMaxLengthCheckConverter16 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 6 && value.Length <= 108)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 6 && value.Length <= 108)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter16 Singleton = new MinMaxLengthCheckConverter16();
    }

    internal class MinMaxLengthCheckConverter17 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 5 && value.Length <= 17)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 5 && value.Length <= 17)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter17 Singleton = new MinMaxLengthCheckConverter17();
    }

    internal class MinMaxLengthCheckConverter18 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 75 && value.Length <= 189)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 75 && value.Length <= 189)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter18 Singleton = new MinMaxLengthCheckConverter18();
    }

    internal class MinMaxLengthCheckConverter19 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 63 && value.Length <= 173)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 63 && value.Length <= 173)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter19 Singleton = new MinMaxLengthCheckConverter19();
    }

    internal class MinMaxLengthCheckConverter20 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 83 && value.Length <= 185)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 83 && value.Length <= 185)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter20 Singleton = new MinMaxLengthCheckConverter20();
    }

    internal class MinMaxLengthCheckConverter21 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 60 && value.Length <= 157)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 60 && value.Length <= 157)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter21 Singleton = new MinMaxLengthCheckConverter21();
    }

    internal class MinMaxLengthCheckConverter22 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 25 && value.Length <= 69)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 25 && value.Length <= 69)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter22 Singleton = new MinMaxLengthCheckConverter22();
    }

    internal class MinMaxLengthCheckConverter23 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 29 && value.Length <= 87)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 29 && value.Length <= 87)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter23 Singleton = new MinMaxLengthCheckConverter23();
    }

    internal class MinMaxLengthCheckConverter24 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 62 && value.Length <= 181)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 62 && value.Length <= 181)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter24 Singleton = new MinMaxLengthCheckConverter24();
    }

    internal class MinMaxLengthCheckConverter25 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 18 && value.Length <= 49)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 18 && value.Length <= 49)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter25 Singleton = new MinMaxLengthCheckConverter25();
    }

    internal class MaxContributionsPerParticipantIconIdConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(MaxContributionsPerParticipantIconId) || t == typeof(MaxContributionsPerParticipantIconId?);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null) return null;
            var value = serializer.Deserialize<string>(reader);
            switch (value)
            {
                case "isk":
                    return MaxContributionsPerParticipantIconId.Isk;
                case "personal":
                    return MaxContributionsPerParticipantIconId.Personal;
            }
            throw new Exception("Cannot unmarshal type MaxContributionsPerParticipantIconId");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            if (untypedValue == null)
            {
                serializer.Serialize(writer, null);
                return;
            }
            var value = (MaxContributionsPerParticipantIconId)untypedValue;
            switch (value)
            {
                case MaxContributionsPerParticipantIconId.Isk:
                    serializer.Serialize(writer, "isk");
                    return;
                case MaxContributionsPerParticipantIconId.Personal:
                    serializer.Serialize(writer, "personal");
                    return;
            }
            throw new Exception("Cannot marshal type MaxContributionsPerParticipantIconId");
        }

        public static readonly MaxContributionsPerParticipantIconIdConverter Singleton = new MaxContributionsPerParticipantIconIdConverter();
    }

    internal class MinMaxLengthCheckConverter26 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 22 && value.Length <= 28)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 22 && value.Length <= 28)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter26 Singleton = new MinMaxLengthCheckConverter26();
    }

    internal class MinMaxLengthCheckConverter27 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 21 && value.Length <= 30)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 21 && value.Length <= 30)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter27 Singleton = new MinMaxLengthCheckConverter27();
    }

    internal class MinMaxLengthCheckConverter28 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 24 && value.Length <= 36)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 24 && value.Length <= 36)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter28 Singleton = new MinMaxLengthCheckConverter28();
    }

    internal class MinMaxLengthCheckConverter29 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 23 && value.Length <= 36)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 23 && value.Length <= 36)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter29 Singleton = new MinMaxLengthCheckConverter29();
    }

    internal class MinMaxLengthCheckConverter30 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 9 && value.Length <= 14)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 9 && value.Length <= 14)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter30 Singleton = new MinMaxLengthCheckConverter30();
    }

    internal class MinMaxLengthCheckConverter31 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 9 && value.Length <= 10)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 9 && value.Length <= 10)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter31 Singleton = new MinMaxLengthCheckConverter31();
    }

    internal class MinMaxLengthCheckConverter32 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 25 && value.Length <= 29)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 25 && value.Length <= 29)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter32 Singleton = new MinMaxLengthCheckConverter32();
    }

    internal class MinMaxLengthCheckConverter33 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 6 && value.Length <= 10)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 6 && value.Length <= 10)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter33 Singleton = new MinMaxLengthCheckConverter33();
    }

    internal class MinMaxLengthCheckConverter34 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 25 && value.Length <= 32)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 25 && value.Length <= 32)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter34 Singleton = new MinMaxLengthCheckConverter34();
    }

    internal class MinMaxLengthCheckConverter35 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 28 && value.Length <= 38)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 28 && value.Length <= 38)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter35 Singleton = new MinMaxLengthCheckConverter35();
    }

    internal class MinMaxLengthCheckConverter36 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 28 && value.Length <= 46)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 28 && value.Length <= 46)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter36 Singleton = new MinMaxLengthCheckConverter36();
    }

    internal class MinMaxLengthCheckConverter37 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 29 && value.Length <= 48)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 29 && value.Length <= 48)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter37 Singleton = new MinMaxLengthCheckConverter37();
    }

    internal class MinMaxLengthCheckConverter38 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 16 && value.Length <= 17)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 16 && value.Length <= 17)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter38 Singleton = new MinMaxLengthCheckConverter38();
    }

    internal class MinMaxLengthCheckConverter39 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 12 && value.Length <= 15)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 12 && value.Length <= 15)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter39 Singleton = new MinMaxLengthCheckConverter39();
    }

    internal class MinMaxLengthCheckConverter40 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 35 && value.Length <= 37)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 35 && value.Length <= 37)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter40 Singleton = new MinMaxLengthCheckConverter40();
    }

    internal class MinMaxLengthCheckConverter41 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 177 && value.Length <= 177)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 177 && value.Length <= 177)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter41 Singleton = new MinMaxLengthCheckConverter41();
    }

    internal class MinMaxLengthCheckConverter42 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 159 && value.Length <= 159)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 159 && value.Length <= 159)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter42 Singleton = new MinMaxLengthCheckConverter42();
    }

    internal class MinMaxLengthCheckConverter43 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 173 && value.Length <= 173)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 173 && value.Length <= 173)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter43 Singleton = new MinMaxLengthCheckConverter43();
    }

    internal class MinMaxLengthCheckConverter44 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 136 && value.Length <= 136)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 136 && value.Length <= 136)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter44 Singleton = new MinMaxLengthCheckConverter44();
    }

    internal class MinMaxLengthCheckConverter45 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 58 && value.Length <= 58)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 58 && value.Length <= 58)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter45 Singleton = new MinMaxLengthCheckConverter45();
    }

    internal class MinMaxLengthCheckConverter46 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 75 && value.Length <= 75)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 75 && value.Length <= 75)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter46 Singleton = new MinMaxLengthCheckConverter46();
    }

    internal class MinMaxLengthCheckConverter47 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 167 && value.Length <= 167)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 167 && value.Length <= 167)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter47 Singleton = new MinMaxLengthCheckConverter47();
    }

    internal class MinMaxLengthCheckConverter48 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 42 && value.Length <= 42)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 42 && value.Length <= 42)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter48 Singleton = new MinMaxLengthCheckConverter48();
    }

    internal class MinMaxLengthCheckConverter49 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 25 && value.Length <= 25)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 25 && value.Length <= 25)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter49 Singleton = new MinMaxLengthCheckConverter49();
    }

    internal class MinMaxLengthCheckConverter50 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 23 && value.Length <= 23)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 23 && value.Length <= 23)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter50 Singleton = new MinMaxLengthCheckConverter50();
    }

    internal class MinMaxLengthCheckConverter51 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 13 && value.Length <= 13)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 13 && value.Length <= 13)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter51 Singleton = new MinMaxLengthCheckConverter51();
    }

    internal class MinMaxLengthCheckConverter52 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 26 && value.Length <= 26)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 26 && value.Length <= 26)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter52 Singleton = new MinMaxLengthCheckConverter52();
    }

    internal class MinMaxLengthCheckConverter53 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 28 && value.Length <= 28)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 28 && value.Length <= 28)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter53 Singleton = new MinMaxLengthCheckConverter53();
    }

    internal class MinMaxLengthCheckConverter54 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 29 && value.Length <= 29)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 29 && value.Length <= 29)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter54 Singleton = new MinMaxLengthCheckConverter54();
    }

    internal class MinMaxLengthCheckConverter55 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 17 && value.Length <= 17)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 17 && value.Length <= 17)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter55 Singleton = new MinMaxLengthCheckConverter55();
    }

    internal class MinMaxLengthCheckConverter56 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 35 && value.Length <= 35)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 35 && value.Length <= 35)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter56 Singleton = new MinMaxLengthCheckConverter56();
    }

    internal class MinMaxLengthCheckConverter57 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 10 && value.Length <= 10)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 10 && value.Length <= 10)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter57 Singleton = new MinMaxLengthCheckConverter57();
    }

    internal class MinMaxLengthCheckConverter58 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 3 && value.Length <= 29)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 3 && value.Length <= 29)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter58 Singleton = new MinMaxLengthCheckConverter58();
    }

    internal class MinMaxLengthCheckConverter59 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 37 && value.Length <= 38)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 37 && value.Length <= 38)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter59 Singleton = new MinMaxLengthCheckConverter59();
    }

    internal class MinMaxLengthCheckConverter60 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 30 && value.Length <= 30)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 30 && value.Length <= 30)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter60 Singleton = new MinMaxLengthCheckConverter60();
    }

    internal class MinMaxLengthCheckConverter61 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 40 && value.Length <= 42)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 40 && value.Length <= 42)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter61 Singleton = new MinMaxLengthCheckConverter61();
    }

    internal class MinMaxLengthCheckConverter62 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 40 && value.Length <= 47)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 40 && value.Length <= 47)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter62 Singleton = new MinMaxLengthCheckConverter62();
    }

    internal class MinMaxLengthCheckConverter63 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 17 && value.Length <= 21)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 17 && value.Length <= 21)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter63 Singleton = new MinMaxLengthCheckConverter63();
    }

    internal class MinMaxLengthCheckConverter64 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 10 && value.Length <= 15)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 10 && value.Length <= 15)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter64 Singleton = new MinMaxLengthCheckConverter64();
    }

    internal class MinMaxLengthCheckConverter65 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 45 && value.Length <= 48)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 45 && value.Length <= 48)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter65 Singleton = new MinMaxLengthCheckConverter65();
    }

    internal class MinMaxLengthCheckConverter66 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 11 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 11 && value.Length <= 12)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter66 Singleton = new MinMaxLengthCheckConverter66();
    }

    internal class MinMaxLengthCheckConverter67 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 91 && value.Length <= 409)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 91 && value.Length <= 409)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter67 Singleton = new MinMaxLengthCheckConverter67();
    }

    internal class MinMaxLengthCheckConverter68 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 74 && value.Length <= 333)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 74 && value.Length <= 333)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter68 Singleton = new MinMaxLengthCheckConverter68();
    }

    internal class MinMaxLengthCheckConverter69 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 73 && value.Length <= 381)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 73 && value.Length <= 381)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter69 Singleton = new MinMaxLengthCheckConverter69();
    }

    internal class MinMaxLengthCheckConverter70 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 78 && value.Length <= 397)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 78 && value.Length <= 397)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter70 Singleton = new MinMaxLengthCheckConverter70();
    }

    internal class MinMaxLengthCheckConverter71 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 28 && value.Length <= 182)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 28 && value.Length <= 182)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter71 Singleton = new MinMaxLengthCheckConverter71();
    }

    internal class MinMaxLengthCheckConverter72 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 23 && value.Length <= 199)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 23 && value.Length <= 199)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter72 Singleton = new MinMaxLengthCheckConverter72();
    }

    internal class MinMaxLengthCheckConverter73 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 70 && value.Length <= 393)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 70 && value.Length <= 393)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter73 Singleton = new MinMaxLengthCheckConverter73();
    }

    internal class MinMaxLengthCheckConverter74 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 17 && value.Length <= 113)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 17 && value.Length <= 113)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter74 Singleton = new MinMaxLengthCheckConverter74();
    }

    internal class BooleanIconIdConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(BooleanIconId) || t == typeof(BooleanIconId?);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null) return null;
            var value = serializer.Deserialize<string>(reader);
            if (value == "person")
            {
                return BooleanIconId.Person;
            }
            throw new Exception("Cannot unmarshal type BooleanIconId");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            if (untypedValue == null)
            {
                serializer.Serialize(writer, null);
                return;
            }
            var value = (BooleanIconId)untypedValue;
            if (value == BooleanIconId.Person)
            {
                serializer.Serialize(writer, "person");
                return;
            }
            throw new Exception("Cannot marshal type BooleanIconId");
        }

        public static readonly BooleanIconIdConverter Singleton = new BooleanIconIdConverter();
    }

    internal class MinMaxLengthCheckConverter75 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 58 && value.Length <= 99)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 58 && value.Length <= 99)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter75 Singleton = new MinMaxLengthCheckConverter75();
    }

    internal class MinMaxLengthCheckConverter76 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 49 && value.Length <= 71)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 49 && value.Length <= 71)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter76 Singleton = new MinMaxLengthCheckConverter76();
    }

    internal class MinMaxLengthCheckConverter77 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 69 && value.Length <= 93)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 69 && value.Length <= 93)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter77 Singleton = new MinMaxLengthCheckConverter77();
    }

    internal class MinMaxLengthCheckConverter78 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 86 && value.Length <= 90)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 86 && value.Length <= 90)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter78 Singleton = new MinMaxLengthCheckConverter78();
    }

    internal class MinMaxLengthCheckConverter79 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 30 && value.Length <= 38)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 30 && value.Length <= 38)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter79 Singleton = new MinMaxLengthCheckConverter79();
    }

    internal class MinMaxLengthCheckConverter80 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 29 && value.Length <= 40)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 29 && value.Length <= 40)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter80 Singleton = new MinMaxLengthCheckConverter80();
    }

    internal class MinMaxLengthCheckConverter81 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 73 && value.Length <= 77)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 73 && value.Length <= 77)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter81 Singleton = new MinMaxLengthCheckConverter81();
    }

    internal class MinMaxLengthCheckConverter82 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 20 && value.Length <= 35)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 20 && value.Length <= 35)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter82 Singleton = new MinMaxLengthCheckConverter82();
    }

    internal class MinMaxLengthCheckConverter83 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 52 && value.Length <= 86)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 52 && value.Length <= 86)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter83 Singleton = new MinMaxLengthCheckConverter83();
    }

    internal class MinMaxLengthCheckConverter84 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 45 && value.Length <= 64)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 45 && value.Length <= 64)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter84 Singleton = new MinMaxLengthCheckConverter84();
    }

    internal class MinMaxLengthCheckConverter85 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 66 && value.Length <= 72)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 66 && value.Length <= 72)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter85 Singleton = new MinMaxLengthCheckConverter85();
    }

    internal class MinMaxLengthCheckConverter86 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 71 && value.Length <= 82)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 71 && value.Length <= 82)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter86 Singleton = new MinMaxLengthCheckConverter86();
    }

    internal class MinMaxLengthCheckConverter87 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 29 && value.Length <= 34)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 29 && value.Length <= 34)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter87 Singleton = new MinMaxLengthCheckConverter87();
    }

    internal class MinMaxLengthCheckConverter88 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 31 && value.Length <= 32)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 31 && value.Length <= 32)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter88 Singleton = new MinMaxLengthCheckConverter88();
    }

    internal class MinMaxLengthCheckConverter89 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 69 && value.Length <= 70)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 69 && value.Length <= 70)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter89 Singleton = new MinMaxLengthCheckConverter89();
    }

    internal class MinMaxLengthCheckConverter90 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 19 && value.Length <= 25)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 19 && value.Length <= 25)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter90 Singleton = new MinMaxLengthCheckConverter90();
    }

    internal class AcceptedValueTypeConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(AcceptedValueType) || t == typeof(AcceptedValueType?);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null) return null;
            var value = serializer.Deserialize<string>(reader);
            switch (value)
            {
                case "station":
                    return AcceptedValueType.Station;
                case "structure":
                    return AcceptedValueType.Structure;
            }
            throw new Exception("Cannot unmarshal type AcceptedValueType");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            if (untypedValue == null)
            {
                serializer.Serialize(writer, null);
                return;
            }
            var value = (AcceptedValueType)untypedValue;
            switch (value)
            {
                case AcceptedValueType.Station:
                    serializer.Serialize(writer, "station");
                    return;
                case AcceptedValueType.Structure:
                    serializer.Serialize(writer, "structure");
                    return;
            }
            throw new Exception("Cannot marshal type AcceptedValueType");
        }

        public static readonly AcceptedValueTypeConverter Singleton = new AcceptedValueTypeConverter();
    }

    internal class MinMaxLengthCheckConverter91 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 105 && value.Length <= 105)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 105 && value.Length <= 105)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter91 Singleton = new MinMaxLengthCheckConverter91();
    }

    internal class MinMaxLengthCheckConverter92 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 92 && value.Length <= 92)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 92 && value.Length <= 92)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter92 Singleton = new MinMaxLengthCheckConverter92();
    }

    internal class MinMaxLengthCheckConverter93 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 110 && value.Length <= 110)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 110 && value.Length <= 110)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter93 Singleton = new MinMaxLengthCheckConverter93();
    }

    internal class MinMaxLengthCheckConverter94 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 109 && value.Length <= 109)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 109 && value.Length <= 109)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter94 Singleton = new MinMaxLengthCheckConverter94();
    }

    internal class MinMaxLengthCheckConverter95 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 39 && value.Length <= 39)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 39 && value.Length <= 39)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter95 Singleton = new MinMaxLengthCheckConverter95();
    }

    internal class MinMaxLengthCheckConverter96 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 50 && value.Length <= 50)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 50 && value.Length <= 50)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter96 Singleton = new MinMaxLengthCheckConverter96();
    }

    internal class DeliveryLocationIconIdConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(DeliveryLocationIconId) || t == typeof(DeliveryLocationIconId?);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null) return null;
            var value = serializer.Deserialize<string>(reader);
            if (value == "location")
            {
                return DeliveryLocationIconId.Location;
            }
            throw new Exception("Cannot unmarshal type DeliveryLocationIconId");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            if (untypedValue == null)
            {
                serializer.Serialize(writer, null);
                return;
            }
            var value = (DeliveryLocationIconId)untypedValue;
            if (value == DeliveryLocationIconId.Location)
            {
                serializer.Serialize(writer, "location");
                return;
            }
            throw new Exception("Cannot marshal type DeliveryLocationIconId");
        }

        public static readonly DeliveryLocationIconIdConverter Singleton = new DeliveryLocationIconIdConverter();
    }

    internal class MinMaxLengthCheckConverter97 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 4 && value.Length <= 4)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 4 && value.Length <= 4)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter97 Singleton = new MinMaxLengthCheckConverter97();
    }

    internal class MinMaxLengthCheckConverter98 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 11 && value.Length <= 11)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 11 && value.Length <= 11)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter98 Singleton = new MinMaxLengthCheckConverter98();
    }

    internal class MinMaxLengthCheckConverter99 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 7 && value.Length <= 7)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 7 && value.Length <= 7)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter99 Singleton = new MinMaxLengthCheckConverter99();
    }

    internal class MinMaxLengthCheckConverter100 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 3 && value.Length <= 3)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 3 && value.Length <= 3)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter100 Singleton = new MinMaxLengthCheckConverter100();
    }

    internal class MinMaxLengthCheckConverter101 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 16 && value.Length <= 16)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 16 && value.Length <= 16)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter101 Singleton = new MinMaxLengthCheckConverter101();
    }

    internal class MinMaxLengthCheckConverter102 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 14 && value.Length <= 14)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 14 && value.Length <= 14)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter102 Singleton = new MinMaxLengthCheckConverter102();
    }

    internal class MinMaxLengthCheckConverter103 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 12 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 12 && value.Length <= 12)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter103 Singleton = new MinMaxLengthCheckConverter103();
    }

    internal class MinMaxLengthCheckConverter104 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 5 && value.Length <= 5)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 5 && value.Length <= 5)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter104 Singleton = new MinMaxLengthCheckConverter104();
    }

    internal class MinMaxLengthCheckConverter105 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 77 && value.Length <= 77)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 77 && value.Length <= 77)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter105 Singleton = new MinMaxLengthCheckConverter105();
    }

    internal class MinMaxLengthCheckConverter106 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 46 && value.Length <= 46)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 46 && value.Length <= 46)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter106 Singleton = new MinMaxLengthCheckConverter106();
    }

    internal class MinMaxLengthCheckConverter107 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 52 && value.Length <= 52)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 52 && value.Length <= 52)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter107 Singleton = new MinMaxLengthCheckConverter107();
    }

    internal class MinMaxLengthCheckConverter108 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 24 && value.Length <= 24)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 24 && value.Length <= 24)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter108 Singleton = new MinMaxLengthCheckConverter108();
    }

    internal class MinMaxLengthCheckConverter109 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 36 && value.Length <= 36)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 36 && value.Length <= 36)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter109 Singleton = new MinMaxLengthCheckConverter109();
    }

    internal class ItemDeliveryIconIdConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(ItemDeliveryIconId) || t == typeof(ItemDeliveryIconId?);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            if (reader.TokenType == JsonToken.Null) return null;
            var value = serializer.Deserialize<string>(reader);
            if (value == "inventory")
            {
                return ItemDeliveryIconId.Inventory;
            }
            throw new Exception("Cannot unmarshal type ItemDeliveryIconId");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            if (untypedValue == null)
            {
                serializer.Serialize(writer, null);
                return;
            }
            var value = (ItemDeliveryIconId)untypedValue;
            if (value == ItemDeliveryIconId.Inventory)
            {
                serializer.Serialize(writer, "inventory");
                return;
            }
            throw new Exception("Cannot marshal type ItemDeliveryIconId");
        }

        public static readonly ItemDeliveryIconIdConverter Singleton = new ItemDeliveryIconIdConverter();
    }

    internal class FluffyDecodeArrayConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string[]);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            reader.Read();
            var value = new List<string>();
            while (reader.TokenType != JsonToken.EndArray)
            {
                var converter = MinMaxLengthCheckConverter31.Singleton;
                var arrayItem = (string)converter.ReadJson(reader, typeof(string), null, serializer);
                value.Add(arrayItem);
                reader.Read();
            }
            return value.ToArray();
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string[])untypedValue;
            writer.WriteStartArray();
            foreach (var arrayItem in value)
            {
                var converter = MinMaxLengthCheckConverter31.Singleton;
                converter.WriteJson(writer, arrayItem, serializer);
            }
            writer.WriteEndArray();
            return;
        }

        public static readonly FluffyDecodeArrayConverter Singleton = new FluffyDecodeArrayConverter();
    }

    internal class MinMaxLengthCheckConverter110 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 27 && value.Length <= 27)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 27 && value.Length <= 27)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter110 Singleton = new MinMaxLengthCheckConverter110();
    }

    internal class MinMaxLengthCheckConverter111 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 22 && value.Length <= 22)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 22 && value.Length <= 22)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter111 Singleton = new MinMaxLengthCheckConverter111();
    }

    internal class TentacledDecodeArrayConverter : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string[]);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            reader.Read();
            var value = new List<string>();
            while (reader.TokenType != JsonToken.EndArray)
            {
                var converter = MinMaxLengthCheckConverter112.Singleton;
                var arrayItem = (string)converter.ReadJson(reader, typeof(string), null, serializer);
                value.Add(arrayItem);
                reader.Read();
            }
            return value.ToArray();
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string[])untypedValue;
            writer.WriteStartArray();
            foreach (var arrayItem in value)
            {
                var converter = MinMaxLengthCheckConverter112.Singleton;
                converter.WriteJson(writer, arrayItem, serializer);
            }
            writer.WriteEndArray();
            return;
        }

        public static readonly TentacledDecodeArrayConverter Singleton = new TentacledDecodeArrayConverter();
    }

    internal class MinMaxLengthCheckConverter112 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 6 && value.Length <= 13)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 6 && value.Length <= 13)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter112 Singleton = new MinMaxLengthCheckConverter112();
    }

    internal class MinMaxLengthCheckConverter113 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 40 && value.Length <= 177)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 40 && value.Length <= 177)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter113 Singleton = new MinMaxLengthCheckConverter113();
    }

    internal class MinMaxLengthCheckConverter114 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 42 && value.Length <= 158)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 42 && value.Length <= 158)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter114 Singleton = new MinMaxLengthCheckConverter114();
    }

    internal class MinMaxLengthCheckConverter115 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 41 && value.Length <= 161)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 41 && value.Length <= 161)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter115 Singleton = new MinMaxLengthCheckConverter115();
    }

    internal class MinMaxLengthCheckConverter116 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 42 && value.Length <= 170)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 42 && value.Length <= 170)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter116 Singleton = new MinMaxLengthCheckConverter116();
    }

    internal class MinMaxLengthCheckConverter117 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 16 && value.Length <= 64)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 16 && value.Length <= 64)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter117 Singleton = new MinMaxLengthCheckConverter117();
    }

    internal class MinMaxLengthCheckConverter118 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 16 && value.Length <= 76)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 16 && value.Length <= 76)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter118 Singleton = new MinMaxLengthCheckConverter118();
    }

    internal class MinMaxLengthCheckConverter119 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 37 && value.Length <= 144)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 37 && value.Length <= 144)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter119 Singleton = new MinMaxLengthCheckConverter119();
    }

    internal class MinMaxLengthCheckConverter120 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 11 && value.Length <= 51)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 11 && value.Length <= 51)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter120 Singleton = new MinMaxLengthCheckConverter120();
    }

    internal class MinMaxLengthCheckConverter121 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 6 && value.Length <= 21)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 6 && value.Length <= 21)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter121 Singleton = new MinMaxLengthCheckConverter121();
    }

    internal class MinMaxLengthCheckConverter122 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 10 && value.Length <= 33)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 10 && value.Length <= 33)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter122 Singleton = new MinMaxLengthCheckConverter122();
    }

    internal class MinMaxLengthCheckConverter123 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 9 && value.Length <= 27)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 9 && value.Length <= 27)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter123 Singleton = new MinMaxLengthCheckConverter123();
    }

    internal class MinMaxLengthCheckConverter124 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 11 && value.Length <= 28)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 11 && value.Length <= 28)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter124 Singleton = new MinMaxLengthCheckConverter124();
    }

    internal class MinMaxLengthCheckConverter125 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 12 && value.Length <= 30)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 12 && value.Length <= 30)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter125 Singleton = new MinMaxLengthCheckConverter125();
    }

    internal class MinMaxLengthCheckConverter126 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 2 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 2 && value.Length <= 12)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter126 Singleton = new MinMaxLengthCheckConverter126();
    }

    internal class MinMaxLengthCheckConverter127 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 2 && value.Length <= 11)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 2 && value.Length <= 11)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter127 Singleton = new MinMaxLengthCheckConverter127();
    }

    internal class MinMaxLengthCheckConverter128 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 7 && value.Length <= 41)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 7 && value.Length <= 41)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter128 Singleton = new MinMaxLengthCheckConverter128();
    }

    internal class MinMaxLengthCheckConverter129 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 2 && value.Length <= 8)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 2 && value.Length <= 8)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter129 Singleton = new MinMaxLengthCheckConverter129();
    }

    internal class MinMaxLengthCheckConverter130 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 8 && value.Length <= 30)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 8 && value.Length <= 30)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter130 Singleton = new MinMaxLengthCheckConverter130();
    }

    internal class MinMaxLengthCheckConverter131 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 11 && value.Length <= 30)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 11 && value.Length <= 30)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter131 Singleton = new MinMaxLengthCheckConverter131();
    }

    internal class MinMaxLengthCheckConverter132 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 10 && value.Length <= 24)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 10 && value.Length <= 24)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter132 Singleton = new MinMaxLengthCheckConverter132();
    }

    internal class MinMaxLengthCheckConverter133 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 12 && value.Length <= 25)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 12 && value.Length <= 25)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter133 Singleton = new MinMaxLengthCheckConverter133();
    }

    internal class MinMaxLengthCheckConverter134 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 9 && value.Length <= 23)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 9 && value.Length <= 23)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter134 Singleton = new MinMaxLengthCheckConverter134();
    }

    internal class MinMaxLengthCheckConverter135 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 4 && value.Length <= 9)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 4 && value.Length <= 9)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter135 Singleton = new MinMaxLengthCheckConverter135();
    }

    internal class MinMaxLengthCheckConverter136 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 6 && value.Length <= 8)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 6 && value.Length <= 8)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter136 Singleton = new MinMaxLengthCheckConverter136();
    }

    internal class MinMaxLengthCheckConverter137 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 14 && value.Length <= 23)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 14 && value.Length <= 23)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter137 Singleton = new MinMaxLengthCheckConverter137();
    }

    internal class MinMaxLengthCheckConverter138 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 3 && value.Length <= 9)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 3 && value.Length <= 9)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter138 Singleton = new MinMaxLengthCheckConverter138();
    }

    internal class MinMaxLengthCheckConverter139 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 18 && value.Length <= 36)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 18 && value.Length <= 36)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter139 Singleton = new MinMaxLengthCheckConverter139();
    }

    internal class MinMaxLengthCheckConverter140 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 14 && value.Length <= 29)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 14 && value.Length <= 29)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter140 Singleton = new MinMaxLengthCheckConverter140();
    }

    internal class MinMaxLengthCheckConverter141 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 17 && value.Length <= 40)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 17 && value.Length <= 40)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter141 Singleton = new MinMaxLengthCheckConverter141();
    }

    internal class MinMaxLengthCheckConverter142 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 18 && value.Length <= 34)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 18 && value.Length <= 34)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter142 Singleton = new MinMaxLengthCheckConverter142();
    }

    internal class MinMaxLengthCheckConverter143 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 3 && value.Length <= 14)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 3 && value.Length <= 14)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter143 Singleton = new MinMaxLengthCheckConverter143();
    }

    internal class MinMaxLengthCheckConverter144 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 5 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 5 && value.Length <= 12)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter144 Singleton = new MinMaxLengthCheckConverter144();
    }

    internal class MinMaxLengthCheckConverter145 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 18 && value.Length <= 39)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 18 && value.Length <= 39)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter145 Singleton = new MinMaxLengthCheckConverter145();
    }

    internal class MinMaxLengthCheckConverter146 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 3 && value.Length <= 11)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 3 && value.Length <= 11)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter146 Singleton = new MinMaxLengthCheckConverter146();
    }

    internal class MinMaxLengthCheckConverter147 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 21 && value.Length <= 43)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 21 && value.Length <= 43)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter147 Singleton = new MinMaxLengthCheckConverter147();
    }

    internal class MinMaxLengthCheckConverter148 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 20 && value.Length <= 37)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 20 && value.Length <= 37)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter148 Singleton = new MinMaxLengthCheckConverter148();
    }

    internal class MinMaxLengthCheckConverter149 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 20 && value.Length <= 40)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 20 && value.Length <= 40)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter149 Singleton = new MinMaxLengthCheckConverter149();
    }

    internal class MinMaxLengthCheckConverter150 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 23 && value.Length <= 39)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 23 && value.Length <= 39)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter150 Singleton = new MinMaxLengthCheckConverter150();
    }

    internal class MinMaxLengthCheckConverter151 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 9 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 9 && value.Length <= 12)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter151 Singleton = new MinMaxLengthCheckConverter151();
    }

    internal class MinMaxLengthCheckConverter152 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 8 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 8 && value.Length <= 12)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter152 Singleton = new MinMaxLengthCheckConverter152();
    }

    internal class MinMaxLengthCheckConverter153 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 17 && value.Length <= 37)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 17 && value.Length <= 37)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter153 Singleton = new MinMaxLengthCheckConverter153();
    }

    internal class MinMaxLengthCheckConverter154 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 6 && value.Length <= 12)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 6 && value.Length <= 12)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter154 Singleton = new MinMaxLengthCheckConverter154();
    }

    internal class MinMaxLengthCheckConverter155 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 7 && value.Length <= 35)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 7 && value.Length <= 35)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter155 Singleton = new MinMaxLengthCheckConverter155();
    }

    internal class MinMaxLengthCheckConverter156 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 8 && value.Length <= 41)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 8 && value.Length <= 41)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter156 Singleton = new MinMaxLengthCheckConverter156();
    }

    internal class MinMaxLengthCheckConverter157 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 6 && value.Length <= 44)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 6 && value.Length <= 44)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter157 Singleton = new MinMaxLengthCheckConverter157();
    }

    internal class MinMaxLengthCheckConverter158 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 2 && value.Length <= 15)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 2 && value.Length <= 15)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter158 Singleton = new MinMaxLengthCheckConverter158();
    }

    internal class MinMaxLengthCheckConverter159 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 2 && value.Length <= 13)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 2 && value.Length <= 13)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter159 Singleton = new MinMaxLengthCheckConverter159();
    }

    internal class MinMaxLengthCheckConverter160 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 9 && value.Length <= 45)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 9 && value.Length <= 45)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter160 Singleton = new MinMaxLengthCheckConverter160();
    }

    internal class MinMaxLengthCheckConverter161 : JsonConverter
    {
        public override bool CanConvert(Type t) => t == typeof(string);

        public override object ReadJson(JsonReader reader, Type t, object existingValue, JsonSerializer serializer)
        {
            var value = serializer.Deserialize<string>(reader);
            if (value.Length >= 2 && value.Length <= 10)
            {
                return value;
            }
            throw new Exception("Cannot unmarshal type string");
        }

        public override void WriteJson(JsonWriter writer, object untypedValue, JsonSerializer serializer)
        {
            var value = (string)untypedValue;
            if (value.Length >= 2 && value.Length <= 10)
            {
                serializer.Serialize(writer, value);
                return;
            }
            throw new Exception("Cannot marshal type string");
        }

        public static readonly MinMaxLengthCheckConverter161 Singleton = new MinMaxLengthCheckConverter161();
    }
}
// Code generated from JSON Schema using quicktype. DO NOT EDIT.
// To parse and unparse this JSON data, add this code to your project and do:
//
//    freelanceJobSchema, err := UnmarshalFreelanceJobSchema(bytes)
//    bytes, err = freelanceJobSchema.Marshal()

package model

import "encoding/json"

func UnmarshalFreelanceJobSchema(data []byte) (FreelanceJobSchema, error) {
    var r FreelanceJobSchema
    err := json.Unmarshal(data, &r)
    return r, err
}

func (r *FreelanceJobSchema) Marshal() ([]byte, error) {
    return json.Marshal(r)
}

type FreelanceJobSchema struct {
    Key   int64   `json:"_key"`
    Value []Value `json:"_value"`
}

type Value struct {
    Key                            Key                            `json:"_key"`
    ContentTags                    []string                       `json:"contentTags"`
    ContributionMultiplier         *ContributionMultiplier        `json:"contributionMultiplier,omitempty"`
    Description                    ValueDescription               `json:"description"`
    IconID                         string                         `json:"iconID"`
    MaxContributionsPerParticipant MaxContributionsPerParticipant `json:"maxContributionsPerParticipant"`
    MaxProgressPerContribution     *MaxProgressPerContribution    `json:"maxProgressPerContribution,omitempty"`
    Parameters                     []Parameter                    `json:"parameters"`
    ProgressDescription            ProgressDescription            `json:"progressDescription"`
    RewardDescription              RewardDescription              `json:"rewardDescription"`
    TargetDescription              TargetDescription              `json:"targetDescription"`
    Title                          ValueTitle                     `json:"title"`
}

type ContributionMultiplier struct {
    DefaultValue     int64                                  `json:"defaultValue"`
    Description      ContributionMultiplierDescription      `json:"description"`
    IconID           ContributionMultiplierIconID           `json:"iconID"`
    MaxValue         int64                                  `json:"maxValue"`
    MinValue         float64                                `json:"minValue"`
    Title            ContributionMultiplierTitle            `json:"title"`
    UnsetDescription ContributionMultiplierUnsetDescription `json:"unsetDescription"`
}

type ContributionMultiplierDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ContributionMultiplierTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ContributionMultiplierUnsetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ValueDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MaxContributionsPerParticipant struct {
    Description      MaxContributionsPerParticipantDescription      `json:"description"`
    IconID           MaxContributionsPerParticipantIconID           `json:"iconID"`
    Title            MaxContributionsPerParticipantTitle            `json:"title"`
    UnsetDescription MaxContributionsPerParticipantUnsetDescription `json:"unsetDescription"`
}

type MaxContributionsPerParticipantDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MaxContributionsPerParticipantTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MaxContributionsPerParticipantUnsetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MaxProgressPerContribution struct {
    Description      MaxProgressPerContributionDescription      `json:"description"`
    IconID           ContributionMultiplierIconID               `json:"iconID"`
    Title            MaxProgressPerContributionTitle            `json:"title"`
    UnsetDescription MaxProgressPerContributionUnsetDescription `json:"unsetDescription"`
}

type MaxProgressPerContributionDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MaxProgressPerContributionTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MaxProgressPerContributionUnsetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type Parameter struct {
    Key          string        `json:"_key"`
    Boolean      *Boolean      `json:"boolean,omitempty"`
    ItemDelivery *ItemDelivery `json:"itemDelivery,omitempty"`
    Matcher      *Matcher      `json:"matcher,omitempty"`
}

type Boolean struct {
    ChoiceLabel ChoiceLabel        `json:"choiceLabel"`
    Default     bool               `json:"default"`
    Description BooleanDescription `json:"description"`
    IconID      BooleanIconID      `json:"iconID"`
    OptionFalse OptionFalse        `json:"optionFalse"`
    OptionTrue  OptionTrue         `json:"optionTrue"`
    Title       BooleanTitle       `json:"title"`
}

type ChoiceLabel struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type BooleanDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type OptionFalse struct {
    Description OptionFalseDescription `json:"description"`
    Title       OptionFalseTitle       `json:"title"`
}

type OptionFalseDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type OptionFalseTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type OptionTrue struct {
    Description OptionTrueDescription `json:"description"`
    Title       OptionTrueTitle       `json:"title"`
}

type OptionTrueDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type OptionTrueTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type BooleanTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ItemDelivery struct {
    DeliveryLocation DeliveryLocation        `json:"deliveryLocation"`
    Description      ItemDeliveryDescription `json:"description"`
    IconID           ItemDeliveryIconID      `json:"iconID"`
    InventoryType    InventoryType           `json:"inventoryType"`
    Title            ItemDeliveryTitle       `json:"title"`
}

type DeliveryLocation struct {
    AcceptedValueTypes []AcceptedValueType              `json:"acceptedValueTypes"`
    Description        DeliveryLocationDescription      `json:"description"`
    IconID             DeliveryLocationIconID           `json:"iconID"`
    MaxEntries         int64                            `json:"maxEntries"`
    Title              DeliveryLocationTitle            `json:"title"`
    UnsetDescription   DeliveryLocationUnsetDescription `json:"unsetDescription"`
}

type DeliveryLocationDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type DeliveryLocationTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type DeliveryLocationUnsetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ItemDeliveryDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type InventoryType struct {
    AcceptedValueTypes []string                      `json:"acceptedValueTypes"`
    Description        InventoryTypeDescription      `json:"description"`
    IconID             ItemDeliveryIconID            `json:"iconID"`
    Title              InventoryTypeTitle            `json:"title"`
    UnsetDescription   InventoryTypeUnsetDescription `json:"unsetDescription"`
}

type InventoryTypeDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type InventoryTypeTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type InventoryTypeUnsetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ItemDeliveryTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type Matcher struct {
    AcceptedValueTypes []string                `json:"acceptedValueTypes"`
    Description        MatcherDescription      `json:"description"`
    IconID             string                  `json:"iconID"`
    MaxEntries         int64                   `json:"maxEntries"`
    Optional           bool                    `json:"optional"`
    Title              MatcherTitle            `json:"title"`
    Type               string                  `json:"type"`
    UnsetDescription   MatcherUnsetDescription `json:"unsetDescription"`
}

type MatcherDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MatcherTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type MatcherUnsetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ProgressDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type RewardDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type TargetDescription struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ValueTitle struct {
    De string `json:"de"`
    En string `json:"en"`
    Es string `json:"es"`
    Fr string `json:"fr"`
    Ja string `json:"ja"`
    Ko string `json:"ko"`
    Ru string `json:"ru"`
    Zh string `json:"zh"`
}

type ContributionMultiplierIconID string

const (
    PurpleIsk ContributionMultiplierIconID = "isk"
)

type Key string

const (
    BoostShield      Key = "BoostShield"
    CaptureFWComplex Key = "CaptureFWComplex"
    DamageShip       Key = "DamageShip"
    DefendFWComplex  Key = "DefendFWComplex"
    DeliverItem      Key = "DeliverItem"
    KillCapsuleer    Key = "KillCapsuleer"
    KillNPC          Key = "KillNPC"
    MineOre          Key = "MineOre"
    RepairArmor      Key = "RepairArmor"
    ShipInsurance    Key = "ShipInsurance"
)

type MaxContributionsPerParticipantIconID string

const (
    FluffyIsk MaxContributionsPerParticipantIconID = "isk"
    Personal  MaxContributionsPerParticipantIconID = "personal"
)

type BooleanIconID string

const (
    Person BooleanIconID = "person"
)

type AcceptedValueType string

const (
    Station   AcceptedValueType = "station"
    Structure AcceptedValueType = "structure"
)

type DeliveryLocationIconID string

const (
    Location DeliveryLocationIconID = "location"
)

type ItemDeliveryIconID string

const (
    Inventory ItemDeliveryIconID = "inventory"
)
{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"_key":{"type":"integer","minimum":1,"maximum":1},"_value":{"type":"array","items":{"type":"object","properties":{"_key":{"type":"string","enum":["BoostShield","CaptureFWComplex","DamageShip","DefendFWComplex","DeliverItem","KillCapsuleer","KillNPC","MineOre","RepairArmor","ShipInsurance"]},"contentTags":{"type":"array","items":{"type":"string","minLength":14,"maxLength":30},"minItems":2,"maxItems":4},"contributionMultiplier":{"type":"object","properties":{"defaultValue":{"type":"integer","minimum":1,"maximum":1},"description":{"type":"object","properties":{"de":{"type":"string","minLength":467,"maxLength":467},"en":{"type":"string","minLength":395,"maxLength":395},"es":{"type":"string","minLength":439,"maxLength":439},"fr":{"type":"string","minLength":441,"maxLength":441},"ja":{"type":"string","minLength":155,"maxLength":155},"ko":{"type":"string","minLength":217,"maxLength":217},"ru":{"type":"string","minLength":438,"maxLength":438},"zh":{"type":"string","minLength":122,"maxLength":122}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["isk"]},"maxValue":{"type":"integer","minimum":2,"maximum":2},"minValue":{"type":"number","minimum":0.1,"maximum":0.1},"title":{"type":"object","properties":{"de":{"type":"string","minLength":49,"maxLength":49},"en":{"type":"string","minLength":48,"maxLength":48},"es":{"type":"string","minLength":51,"maxLength":51},"fr":{"type":"string","minLength":55,"maxLength":55},"ja":{"type":"string","minLength":32,"maxLength":32},"ko":{"type":"string","minLength":34,"maxLength":34},"ru":{"type":"string","minLength":49,"maxLength":49},"zh":{"type":"string","minLength":32,"maxLength":32}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"unsetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":40,"maxLength":40},"en":{"type":"string","minLength":33,"maxLength":33},"es":{"type":"string","minLength":32,"maxLength":32},"fr":{"type":"string","minLength":34,"maxLength":34},"ja":{"type":"string","minLength":18,"maxLength":18},"ko":{"type":"string","minLength":15,"maxLength":15},"ru":{"type":"string","minLength":31,"maxLength":31},"zh":{"type":"string","minLength":9,"maxLength":9}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["defaultValue","description","iconID","maxValue","minValue","title","unsetDescription"]},"description":{"type":"object","properties":{"de":{"type":"string","minLength":28,"maxLength":410},"en":{"type":"string","minLength":19,"maxLength":318},"es":{"type":"string","minLength":23,"maxLength":367},"fr":{"type":"string","minLength":29,"maxLength":386},"ja":{"type":"string","minLength":11,"maxLength":178},"ko":{"type":"string","minLength":11,"maxLength":168},"ru":{"type":"string","minLength":15,"maxLength":361},"zh":{"type":"string","minLength":6,"maxLength":108}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","minLength":5,"maxLength":17},"maxContributionsPerParticipant":{"type":"object","properties":{"description":{"type":"object","properties":{"de":{"type":"string","minLength":75,"maxLength":189},"en":{"type":"string","minLength":63,"maxLength":173},"es":{"type":"string","minLength":83,"maxLength":185},"fr":{"type":"string","minLength":60,"maxLength":157},"ja":{"type":"string","minLength":25,"maxLength":69},"ko":{"type":"string","minLength":29,"maxLength":87},"ru":{"type":"string","minLength":62,"maxLength":181},"zh":{"type":"string","minLength":18,"maxLength":49}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["personal","isk"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":22,"maxLength":28},"en":{"type":"string","minLength":21,"maxLength":30},"es":{"type":"string","minLength":24,"maxLength":36},"fr":{"type":"string","minLength":23,"maxLength":36},"ja":{"type":"string","minLength":9,"maxLength":14},"ko":{"type":"string","minLength":9,"maxLength":10},"ru":{"type":"string","minLength":25,"maxLength":29},"zh":{"type":"string","minLength":6,"maxLength":10}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"unsetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":25,"maxLength":32},"en":{"type":"string","minLength":28,"maxLength":38},"es":{"type":"string","minLength":28,"maxLength":46},"fr":{"type":"string","minLength":29,"maxLength":48},"ja":{"type":"string","minLength":16,"maxLength":17},"ko":{"type":"string","minLength":12,"maxLength":15},"ru":{"type":"string","minLength":35,"maxLength":37},"zh":{"type":"string","minLength":9,"maxLength":10}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["description","iconID","title","unsetDescription"]},"maxProgressPerContribution":{"type":"object","properties":{"description":{"type":"object","properties":{"de":{"type":"string","minLength":177,"maxLength":177},"en":{"type":"string","minLength":159,"maxLength":159},"es":{"type":"string","minLength":173,"maxLength":173},"fr":{"type":"string","minLength":136,"maxLength":136},"ja":{"type":"string","minLength":58,"maxLength":58},"ko":{"type":"string","minLength":75,"maxLength":75},"ru":{"type":"string","minLength":167,"maxLength":167},"zh":{"type":"string","minLength":42,"maxLength":42}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["isk"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":25,"maxLength":25},"en":{"type":"string","minLength":23,"maxLength":23},"es":{"type":"string","minLength":31,"maxLength":31},"fr":{"type":"string","minLength":32,"maxLength":32},"ja":{"type":"string","minLength":13,"maxLength":13},"ko":{"type":"string","minLength":9,"maxLength":9},"ru":{"type":"string","minLength":26,"maxLength":26},"zh":{"type":"string","minLength":9,"maxLength":9}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"unsetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":25,"maxLength":25},"en":{"type":"string","minLength":28,"maxLength":28},"es":{"type":"string","minLength":28,"maxLength":28},"fr":{"type":"string","minLength":29,"maxLength":29},"ja":{"type":"string","minLength":17,"maxLength":17},"ko":{"type":"string","minLength":15,"maxLength":15},"ru":{"type":"string","minLength":35,"maxLength":35},"zh":{"type":"string","minLength":10,"maxLength":10}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["description","iconID","title","unsetDescription"]},"parameters":{"type":"array","items":{"type":"object","properties":{"_key":{"type":"string","minLength":3,"maxLength":29},"boolean":{"type":"object","properties":{"choiceLabel":{"type":"object","properties":{"de":{"type":"string","minLength":37,"maxLength":38},"en":{"type":"string","minLength":30,"maxLength":30},"es":{"type":"string","minLength":40,"maxLength":42},"fr":{"type":"string","minLength":40,"maxLength":47},"ja":{"type":"string","minLength":17,"maxLength":21},"ko":{"type":"string","minLength":10,"maxLength":15},"ru":{"type":"string","minLength":45,"maxLength":48},"zh":{"type":"string","minLength":11,"maxLength":12}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"default":{"type":"boolean"},"description":{"type":"object","properties":{"de":{"type":"string","minLength":91,"maxLength":409},"en":{"type":"string","minLength":74,"maxLength":333},"es":{"type":"string","minLength":73,"maxLength":381},"fr":{"type":"string","minLength":78,"maxLength":397},"ja":{"type":"string","minLength":28,"maxLength":182},"ko":{"type":"string","minLength":23,"maxLength":199},"ru":{"type":"string","minLength":70,"maxLength":393},"zh":{"type":"string","minLength":17,"maxLength":113}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["person"]},"optionFalse":{"type":"object","properties":{"description":{"type":"object","properties":{"de":{"type":"string","minLength":58,"maxLength":99},"en":{"type":"string","minLength":49,"maxLength":71},"es":{"type":"string","minLength":69,"maxLength":93},"fr":{"type":"string","minLength":86,"maxLength":90},"ja":{"type":"string","minLength":30,"maxLength":38},"ko":{"type":"string","minLength":29,"maxLength":40},"ru":{"type":"string","minLength":73,"maxLength":77},"zh":{"type":"string","minLength":20,"maxLength":35}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":58,"maxLength":99},"en":{"type":"string","minLength":49,"maxLength":71},"es":{"type":"string","minLength":69,"maxLength":93},"fr":{"type":"string","minLength":86,"maxLength":90},"ja":{"type":"string","minLength":30,"maxLength":38},"ko":{"type":"string","minLength":29,"maxLength":40},"ru":{"type":"string","minLength":73,"maxLength":77},"zh":{"type":"string","minLength":20,"maxLength":35}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["description","title"]},"optionTrue":{"type":"object","properties":{"description":{"type":"object","properties":{"de":{"type":"string","minLength":52,"maxLength":86},"en":{"type":"string","minLength":45,"maxLength":64},"es":{"type":"string","minLength":66,"maxLength":72},"fr":{"type":"string","minLength":71,"maxLength":82},"ja":{"type":"string","minLength":29,"maxLength":34},"ko":{"type":"string","minLength":31,"maxLength":32},"ru":{"type":"string","minLength":69,"maxLength":70},"zh":{"type":"string","minLength":19,"maxLength":25}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":52,"maxLength":86},"en":{"type":"string","minLength":45,"maxLength":64},"es":{"type":"string","minLength":66,"maxLength":72},"fr":{"type":"string","minLength":71,"maxLength":82},"ja":{"type":"string","minLength":29,"maxLength":34},"ko":{"type":"string","minLength":31,"maxLength":32},"ru":{"type":"string","minLength":69,"maxLength":70},"zh":{"type":"string","minLength":19,"maxLength":25}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["description","title"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":37,"maxLength":38},"en":{"type":"string","minLength":30,"maxLength":30},"es":{"type":"string","minLength":40,"maxLength":42},"fr":{"type":"string","minLength":40,"maxLength":47},"ja":{"type":"string","minLength":17,"maxLength":21},"ko":{"type":"string","minLength":10,"maxLength":15},"ru":{"type":"string","minLength":45,"maxLength":48},"zh":{"type":"string","minLength":11,"maxLength":12}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["choiceLabel","default","description","iconID","optionFalse","optionTrue","title"]},"itemDelivery":{"type":"object","properties":{"deliveryLocation":{"type":"object","properties":{"acceptedValueTypes":{"type":"array","items":{"type":"string","enum":["station","structure"]},"minItems":2,"maxItems":2},"description":{"type":"object","properties":{"de":{"type":"string","minLength":105,"maxLength":105},"en":{"type":"string","minLength":92,"maxLength":92},"es":{"type":"string","minLength":110,"maxLength":110},"fr":{"type":"string","minLength":109,"maxLength":109},"ja":{"type":"string","minLength":39,"maxLength":39},"ko":{"type":"string","minLength":50,"maxLength":50},"ru":{"type":"string","minLength":92,"maxLength":92},"zh":{"type":"string","minLength":28,"maxLength":28}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["location"]},"maxEntries":{"type":"integer","minimum":10,"maximum":10},"title":{"type":"object","properties":{"de":{"type":"string","minLength":4,"maxLength":4},"en":{"type":"string","minLength":11,"maxLength":11},"es":{"type":"string","minLength":7,"maxLength":7},"fr":{"type":"string","minLength":11,"maxLength":11},"ja":{"type":"string","minLength":3,"maxLength":3},"ko":{"type":"string","minLength":3,"maxLength":3},"ru":{"type":"string","minLength":16,"maxLength":16},"zh":{"type":"string","minLength":3,"maxLength":3}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"unsetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":14,"maxLength":14},"en":{"type":"string","minLength":12,"maxLength":12},"es":{"type":"string","minLength":17,"maxLength":17},"fr":{"type":"string","minLength":13,"maxLength":13},"ja":{"type":"string","minLength":5,"maxLength":5},"ko":{"type":"string","minLength":5,"maxLength":5},"ru":{"type":"string","minLength":16,"maxLength":16},"zh":{"type":"string","minLength":4,"maxLength":4}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["acceptedValueTypes","description","iconID","maxEntries","title","unsetDescription"]},"description":{"type":"object","properties":{"de":{"type":"string","minLength":77,"maxLength":77},"en":{"type":"string","minLength":46,"maxLength":46},"es":{"type":"string","minLength":52,"maxLength":52},"fr":{"type":"string","minLength":34,"maxLength":34},"ja":{"type":"string","minLength":23,"maxLength":23},"ko":{"type":"string","minLength":24,"maxLength":24},"ru":{"type":"string","minLength":36,"maxLength":36},"zh":{"type":"string","minLength":13,"maxLength":13}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["inventory"]},"inventoryType":{"type":"object","properties":{"acceptedValueTypes":{"type":"array","items":{"type":"string","minLength":9,"maxLength":10},"minItems":2,"maxItems":2},"description":{"type":"object","properties":{"de":{"type":"string","minLength":77,"maxLength":77},"en":{"type":"string","minLength":46,"maxLength":46},"es":{"type":"string","minLength":52,"maxLength":52},"fr":{"type":"string","minLength":34,"maxLength":34},"ja":{"type":"string","minLength":23,"maxLength":23},"ko":{"type":"string","minLength":24,"maxLength":24},"ru":{"type":"string","minLength":36,"maxLength":36},"zh":{"type":"string","minLength":13,"maxLength":13}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","enum":["inventory"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":27,"maxLength":27},"en":{"type":"string","minLength":18,"maxLength":18},"es":{"type":"string","minLength":23,"maxLength":23},"fr":{"type":"string","minLength":22,"maxLength":22},"ja":{"type":"string","minLength":15,"maxLength":15},"ko":{"type":"string","minLength":12,"maxLength":12},"ru":{"type":"string","minLength":24,"maxLength":24},"zh":{"type":"string","minLength":7,"maxLength":7}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"unsetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":14,"maxLength":14},"en":{"type":"string","minLength":12,"maxLength":12},"es":{"type":"string","minLength":17,"maxLength":17},"fr":{"type":"string","minLength":13,"maxLength":13},"ja":{"type":"string","minLength":5,"maxLength":5},"ko":{"type":"string","minLength":5,"maxLength":5},"ru":{"type":"string","minLength":16,"maxLength":16},"zh":{"type":"string","minLength":4,"maxLength":4}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["acceptedValueTypes","description","iconID","title","unsetDescription"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":27,"maxLength":27},"en":{"type":"string","minLength":18,"maxLength":18},"es":{"type":"string","minLength":23,"maxLength":23},"fr":{"type":"string","minLength":22,"maxLength":22},"ja":{"type":"string","minLength":15,"maxLength":15},"ko":{"type":"string","minLength":12,"maxLength":12},"ru":{"type":"string","minLength":24,"maxLength":24},"zh":{"type":"string","minLength":7,"maxLength":7}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["deliveryLocation","description","iconID","inventoryType","title"]},"matcher":{"type":"object","properties":{"acceptedValueTypes":{"type":"array","items":{"type":"string","minLength":6,"maxLength":13},"minItems":1,"maxItems":4},"description":{"type":"object","properties":{"de":{"type":"string","minLength":40,"maxLength":177},"en":{"type":"string","minLength":42,"maxLength":158},"es":{"type":"string","minLength":41,"maxLength":161},"fr":{"type":"string","minLength":42,"maxLength":170},"ja":{"type":"string","minLength":16,"maxLength":64},"ko":{"type":"string","minLength":16,"maxLength":76},"ru":{"type":"string","minLength":37,"maxLength":144},"zh":{"type":"string","minLength":11,"maxLength":51}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"iconID":{"type":"string","minLength":6,"maxLength":21},"maxEntries":{"type":"integer","minimum":4,"maximum":10},"optional":{"type":"boolean"},"title":{"type":"object","properties":{"de":{"type":"string","minLength":10,"maxLength":33},"en":{"type":"string","minLength":9,"maxLength":27},"es":{"type":"string","minLength":11,"maxLength":28},"fr":{"type":"string","minLength":12,"maxLength":30},"ja":{"type":"string","minLength":2,"maxLength":12},"ko":{"type":"string","minLength":2,"maxLength":11},"ru":{"type":"string","minLength":7,"maxLength":41},"zh":{"type":"string","minLength":2,"maxLength":8}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"type":{"type":"string","minLength":8,"maxLength":30},"unsetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":14,"maxLength":14},"en":{"type":"string","minLength":12,"maxLength":12},"es":{"type":"string","minLength":17,"maxLength":17},"fr":{"type":"string","minLength":13,"maxLength":13},"ja":{"type":"string","minLength":5,"maxLength":5},"ko":{"type":"string","minLength":5,"maxLength":5},"ru":{"type":"string","minLength":16,"maxLength":16},"zh":{"type":"string","minLength":4,"maxLength":4}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["acceptedValueTypes","description","iconID","maxEntries","optional","title","type","unsetDescription"]}},"required":["_key"]},"minItems":1,"maxItems":5},"progressDescription":{"type":"object","properties":{"de":{"type":"string","minLength":11,"maxLength":30},"en":{"type":"string","minLength":10,"maxLength":24},"es":{"type":"string","minLength":12,"maxLength":25},"fr":{"type":"string","minLength":9,"maxLength":23},"ja":{"type":"string","minLength":4,"maxLength":9},"ko":{"type":"string","minLength":6,"maxLength":8},"ru":{"type":"string","minLength":14,"maxLength":23},"zh":{"type":"string","minLength":3,"maxLength":9}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"rewardDescription":{"type":"object","properties":{"de":{"type":"string","minLength":18,"maxLength":36},"en":{"type":"string","minLength":14,"maxLength":29},"es":{"type":"string","minLength":17,"maxLength":40},"fr":{"type":"string","minLength":18,"maxLength":34},"ja":{"type":"string","minLength":3,"maxLength":14},"ko":{"type":"string","minLength":5,"maxLength":12},"ru":{"type":"string","minLength":18,"maxLength":39},"zh":{"type":"string","minLength":3,"maxLength":11}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"targetDescription":{"type":"object","properties":{"de":{"type":"string","minLength":21,"maxLength":43},"en":{"type":"string","minLength":20,"maxLength":37},"es":{"type":"string","minLength":20,"maxLength":40},"fr":{"type":"string","minLength":23,"maxLength":39},"ja":{"type":"string","minLength":9,"maxLength":12},"ko":{"type":"string","minLength":8,"maxLength":12},"ru":{"type":"string","minLength":17,"maxLength":37},"zh":{"type":"string","minLength":6,"maxLength":12}},"required":["de","en","es","fr","ja","ko","ru","zh"]},"title":{"type":"object","properties":{"de":{"type":"string","minLength":7,"maxLength":35},"en":{"type":"string","minLength":7,"maxLength":35},"es":{"type":"string","minLength":8,"maxLength":41},"fr":{"type":"string","minLength":6,"maxLength":44},"ja":{"type":"string","minLength":2,"maxLength":15},"ko":{"type":"string","minLength":2,"maxLength":13},"ru":{"type":"string","minLength":9,"maxLength":45},"zh":{"type":"string","minLength":2,"maxLength":10}},"required":["de","en","es","fr","ja","ko","ru","zh"]}},"required":["_key","contentTags","description","iconID","maxContributionsPerParticipant","parameters","progressDescription","rewardDescription","targetDescription","title"]},"minItems":10,"maxItems":10}},"required":["_key","_value"]}
// To parse the JSON, install kotlin's serialization plugin and do:
//
// val json               = Json { allowStructuredMapKeys = true }
// val freelanceJobSchema = json.parse(FreelanceJobSchema.serializer(), jsonString)

package model

import kotlinx.serialization.*
import kotlinx.serialization.json.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*

@Serializable
data class FreelanceJobSchema (
    @SerialName("_key")
    val key: Long,

    @SerialName("_value")
    val value: List<Value>
)

@Serializable
data class Value (
    @SerialName("_key")
    val key: Key,

    val contentTags: List<String>,
    val contributionMultiplier: ContributionMultiplier? = null,
    val description: ValueDescription,

    @SerialName("iconID")
    val iconId: String,

    val maxContributionsPerParticipant: MaxContributionsPerParticipant,
    val maxProgressPerContribution: MaxProgressPerContribution? = null,
    val parameters: List<Parameter>,
    val progressDescription: ProgressDescription,
    val rewardDescription: RewardDescription,
    val targetDescription: TargetDescription,
    val title: ValueTitle
)

@Serializable
data class ContributionMultiplier (
    val defaultValue: Long,
    val description: ContributionMultiplierDescription,

    @SerialName("iconID")
    val iconId: ContributionMultiplierIconId,

    val maxValue: Long,
    val minValue: Double,
    val title: ContributionMultiplierTitle,
    val unsetDescription: ContributionMultiplierUnsetDescription
)

@Serializable
data class ContributionMultiplierDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
enum class ContributionMultiplierIconId(val value: String) {
    @SerialName("isk") Isk("isk");
}

@Serializable
data class ContributionMultiplierTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ContributionMultiplierUnsetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ValueDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
enum class Key(val value: String) {
    @SerialName("BoostShield") BoostShield("BoostShield"),
    @SerialName("CaptureFWComplex") CaptureFwComplex("CaptureFWComplex"),
    @SerialName("DamageShip") DamageShip("DamageShip"),
    @SerialName("DefendFWComplex") DefendFwComplex("DefendFWComplex"),
    @SerialName("DeliverItem") DeliverItem("DeliverItem"),
    @SerialName("KillCapsuleer") KillCapsuleer("KillCapsuleer"),
    @SerialName("KillNPC") KillNpc("KillNPC"),
    @SerialName("MineOre") MineOre("MineOre"),
    @SerialName("RepairArmor") RepairArmor("RepairArmor"),
    @SerialName("ShipInsurance") ShipInsurance("ShipInsurance");
}

@Serializable
data class MaxContributionsPerParticipant (
    val description: MaxContributionsPerParticipantDescription,

    @SerialName("iconID")
    val iconId: MaxContributionsPerParticipantIconId,

    val title: MaxContributionsPerParticipantTitle,
    val unsetDescription: MaxContributionsPerParticipantUnsetDescription
)

@Serializable
data class MaxContributionsPerParticipantDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
enum class MaxContributionsPerParticipantIconId(val value: String) {
    @SerialName("isk") Isk("isk"),
    @SerialName("personal") Personal("personal");
}

@Serializable
data class MaxContributionsPerParticipantTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class MaxContributionsPerParticipantUnsetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class MaxProgressPerContribution (
    val description: MaxProgressPerContributionDescription,

    @SerialName("iconID")
    val iconId: ContributionMultiplierIconId,

    val title: MaxProgressPerContributionTitle,
    val unsetDescription: MaxProgressPerContributionUnsetDescription
)

@Serializable
data class MaxProgressPerContributionDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class MaxProgressPerContributionTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class MaxProgressPerContributionUnsetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class Parameter (
    @SerialName("_key")
    val key: String,

    val boolean: BooleanClass? = null,
    val itemDelivery: ItemDelivery? = null,
    val matcher: Matcher? = null
)

@Serializable
data class BooleanClass (
    val choiceLabel: ChoiceLabel,
    val default: Boolean,
    val description: BooleanDescription,

    @SerialName("iconID")
    val iconId: BooleanIconId,

    val optionFalse: OptionFalse,
    val optionTrue: OptionTrue,
    val title: BooleanTitle
)

@Serializable
data class ChoiceLabel (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class BooleanDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
enum class BooleanIconId(val value: String) {
    @SerialName("person") Person("person");
}

@Serializable
data class OptionFalse (
    val description: OptionFalseDescription,
    val title: OptionFalseTitle
)

@Serializable
data class OptionFalseDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class OptionFalseTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class OptionTrue (
    val description: OptionTrueDescription,
    val title: OptionTrueTitle
)

@Serializable
data class OptionTrueDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class OptionTrueTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class BooleanTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ItemDelivery (
    val deliveryLocation: DeliveryLocation,
    val description: ItemDeliveryDescription,

    @SerialName("iconID")
    val iconId: ItemDeliveryIconId,

    val inventoryType: InventoryType,
    val title: ItemDeliveryTitle
)

@Serializable
data class DeliveryLocation (
    val acceptedValueTypes: List<AcceptedValueType>,
    val description: DeliveryLocationDescription,

    @SerialName("iconID")
    val iconId: DeliveryLocationIconId,

    val maxEntries: Long,
    val title: DeliveryLocationTitle,
    val unsetDescription: DeliveryLocationUnsetDescription
)

@Serializable
enum class AcceptedValueType(val value: String) {
    @SerialName("station") Station("station"),
    @SerialName("structure") Structure("structure");
}

@Serializable
data class DeliveryLocationDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
enum class DeliveryLocationIconId(val value: String) {
    @SerialName("location") Location("location");
}

@Serializable
data class DeliveryLocationTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class DeliveryLocationUnsetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ItemDeliveryDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
enum class ItemDeliveryIconId(val value: String) {
    @SerialName("inventory") Inventory("inventory");
}

@Serializable
data class InventoryType (
    val acceptedValueTypes: List<String>,
    val description: InventoryTypeDescription,

    @SerialName("iconID")
    val iconId: ItemDeliveryIconId,

    val title: InventoryTypeTitle,
    val unsetDescription: InventoryTypeUnsetDescription
)

@Serializable
data class InventoryTypeDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class InventoryTypeTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class InventoryTypeUnsetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ItemDeliveryTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class Matcher (
    val acceptedValueTypes: List<String>,
    val description: MatcherDescription,

    @SerialName("iconID")
    val iconId: String,

    val maxEntries: Long,
    val optional: Boolean,
    val title: MatcherTitle,
    val type: String,
    val unsetDescription: MatcherUnsetDescription
)

@Serializable
data class MatcherDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class MatcherTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class MatcherUnsetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ProgressDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class RewardDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class TargetDescription (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)

@Serializable
data class ValueTitle (
    val de: String,
    val en: String,
    val es: String,
    val fr: String,
    val ja: String,
    val ko: String,
    val ru: String,
    val zh: String
)
<?php

// This is a autogenerated file:FreelanceJobSchema

class FreelanceJobSchema {
    private int $key; // json:_key Required
    private array $value; // json:_value Required

    /**
     * @param int $key
     * @param array $value
     */
    public function __construct(int $key, array $value) {
        $this->key = $key;
        $this->value = $value;
    }

    /**
     * @param int $value
     * @throws Exception
     * @return int
     */
    public static function fromKey(int $value): int {
        return $value; /*int*/
    }

    /**
     * @throws Exception
     * @return int
     */
    public function toKey(): int {
        if (FreelanceJobSchema::validateKey($this->key))  {
            return $this->key; /*int*/
        }
        throw new Exception('never get to this FreelanceJobSchema::key');
    }

    /**
     * @param int
     * @return bool
     * @throws Exception
     */
    public static function validateKey(int $value): bool {
        if (!is_integer($value)) {
            throw new Exception("Attribute Error:FreelanceJobSchema::key");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return int
     */
    public function getKey(): int {
        if (FreelanceJobSchema::validateKey($this->key))  {
            return $this->key;
        }
        throw new Exception('never get to getKey FreelanceJobSchema::key');
    }

    /**
     * @return int
     */
    public static function sampleKey(): int {
        return 31; /*31:key*/
    }

    /**
     * @param array $value
     * @throws Exception
     * @return array
     */
    public static function fromValue(array $value): array {
        return  array_map(function ($value) {
            return Value::from($value); /*class*/
        }, $value);
    }

    /**
     * @throws Exception
     * @return array
     */
    public function toValue(): array {
        if (FreelanceJobSchema::validateValue($this->value))  {
            return array_map(function ($value) {
                return $value->to(); /*class*/
            }, $this->value);
        }
        throw new Exception('never get to this FreelanceJobSchema::value');
    }

    /**
     * @param array
     * @return bool
     * @throws Exception
     */
    public static function validateValue(array $value): bool {
        if (!is_array($value)) {
            throw new Exception("Attribute Error:FreelanceJobSchema::value");
        }
        array_walk($value, function($value_v) {
            $value_v->validate();
        });
        return true;
    }

    /**
     * @throws Exception
     * @return array
     */
    public function getValue(): array {
        if (FreelanceJobSchema::validateValue($this->value))  {
            return $this->value;
        }
        throw new Exception('never get to getValue FreelanceJobSchema::value');
    }

    /**
     * @return array
     */
    public static function sampleValue(): array {
        return  array(
            Value::sample() /*32:*/
        ); /* 32:value*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return FreelanceJobSchema::validateKey($this->key)
        || FreelanceJobSchema::validateValue($this->value);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'_key'} = $this->toKey();
        $out->{'_value'} = $this->toValue();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return FreelanceJobSchema
     * @throws Exception
     */
    public static function from(stdClass $obj): FreelanceJobSchema {
        return new FreelanceJobSchema(
         FreelanceJobSchema::fromKey($obj->{'_key'})
        ,FreelanceJobSchema::fromValue($obj->{'_value'})
        );
    }

    /**
     * @return FreelanceJobSchema
     */
    public static function sample(): FreelanceJobSchema {
        return new FreelanceJobSchema(
         FreelanceJobSchema::sampleKey()
        ,FreelanceJobSchema::sampleValue()
        );
    }
}

// This is a autogenerated file:Value

class Value {
    private Key $key; // json:_key Required
    private array $contentTags; // json:contentTags Required
    private ?ContributionMultiplier $contributionMultiplier; // json:contributionMultiplier Optional
    private ValueDescription $description; // json:description Required
    private string $iconId; // json:iconID Required
    private MaxContributionsPerParticipant $maxContributionsPerParticipant; // json:maxContributionsPerParticipant Required
    private ?MaxProgressPerContribution $maxProgressPerContribution; // json:maxProgressPerContribution Optional
    private array $parameters; // json:parameters Required
    private ProgressDescription $progressDescription; // json:progressDescription Required
    private RewardDescription $rewardDescription; // json:rewardDescription Required
    private TargetDescription $targetDescription; // json:targetDescription Required
    private ValueTitle $title; // json:title Required

    /**
     * @param Key $key
     * @param array $contentTags
     * @param ContributionMultiplier|null $contributionMultiplier
     * @param ValueDescription $description
     * @param string $iconId
     * @param MaxContributionsPerParticipant $maxContributionsPerParticipant
     * @param MaxProgressPerContribution|null $maxProgressPerContribution
     * @param array $parameters
     * @param ProgressDescription $progressDescription
     * @param RewardDescription $rewardDescription
     * @param TargetDescription $targetDescription
     * @param ValueTitle $title
     */
    public function __construct(Key $key, array $contentTags, ?ContributionMultiplier $contributionMultiplier, ValueDescription $description, string $iconId, MaxContributionsPerParticipant $maxContributionsPerParticipant, ?MaxProgressPerContribution $maxProgressPerContribution, array $parameters, ProgressDescription $progressDescription, RewardDescription $rewardDescription, TargetDescription $targetDescription, ValueTitle $title) {
        $this->key = $key;
        $this->contentTags = $contentTags;
        $this->contributionMultiplier = $contributionMultiplier;
        $this->description = $description;
        $this->iconId = $iconId;
        $this->maxContributionsPerParticipant = $maxContributionsPerParticipant;
        $this->maxProgressPerContribution = $maxProgressPerContribution;
        $this->parameters = $parameters;
        $this->progressDescription = $progressDescription;
        $this->rewardDescription = $rewardDescription;
        $this->targetDescription = $targetDescription;
        $this->title = $title;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return Key
     */
    public static function fromKey(string $value): Key {
        return Key::from($value); /*enum*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKey(): string {
        if (Value::validateKey($this->key))  {
            return Key::to($this->key); /*enum*/
        }
        throw new Exception('never get to this Value::key');
    }

    /**
     * @param Key
     * @return bool
     * @throws Exception
     */
    public static function validateKey(Key $value): bool {
        Key::to($value);
        return true;
    }

    /**
     * @throws Exception
     * @return Key
     */
    public function getKey(): Key {
        if (Value::validateKey($this->key))  {
            return $this->key;
        }
        throw new Exception('never get to getKey Value::key');
    }

    /**
     * @return Key
     */
    public static function sampleKey(): Key {
        return Key::sample(); /*enum*/
    }

    /**
     * @param array $value
     * @throws Exception
     * @return array
     */
    public static function fromContentTags(array $value): array {
        return  array_map(function ($value) {
            return $value; /*string*/
        }, $value);
    }

    /**
     * @throws Exception
     * @return array
     */
    public function toContentTags(): array {
        if (Value::validateContentTags($this->contentTags))  {
            return array_map(function ($value) {
                return $value; /*string*/
            }, $this->contentTags);
        }
        throw new Exception('never get to this Value::contentTags');
    }

    /**
     * @param array
     * @return bool
     * @throws Exception
     */
    public static function validateContentTags(array $value): bool {
        if (!is_array($value)) {
            throw new Exception("Attribute Error:Value::contentTags");
        }
        array_walk($value, function($value_v) {
            if (!is_string($value_v)) {
                throw new Exception("Attribute Error:Value::contentTags");
            }
        });
        return true;
    }

    /**
     * @throws Exception
     * @return array
     */
    public function getContentTags(): array {
        if (Value::validateContentTags($this->contentTags))  {
            return $this->contentTags;
        }
        throw new Exception('never get to getContentTags Value::contentTags');
    }

    /**
     * @return array
     */
    public static function sampleContentTags(): array {
        return  array(
            'Value::::32' /*32:*/
        ); /* 32:contentTags*/
    }

    /**
     * @param ?stdClass $value
     * @throws Exception
     * @return ?ContributionMultiplier
     */
    public static function fromContributionMultiplier(?stdClass $value): ?ContributionMultiplier {
        if (!is_null($value)) {
            return ContributionMultiplier::from($value); /*class*/
        } else {
            return null;
        }
    }

    /**
     * @throws Exception
     * @return ?stdClass
     */
    public function toContributionMultiplier(): ?stdClass {
        if (Value::validateContributionMultiplier($this->contributionMultiplier))  {
            if (!is_null($this->contributionMultiplier)) {
                return $this->contributionMultiplier->to(); /*class*/
            } else {
                return  null;
            }
        }
        throw new Exception('never get to this Value::contributionMultiplier');
    }

    /**
     * @param ContributionMultiplier|null
     * @return bool
     * @throws Exception
     */
    public static function validateContributionMultiplier(?ContributionMultiplier $value): bool {
        if (!is_null($value)) {
            $value->validate();
        }
        return true;
    }

    /**
     * @throws Exception
     * @return ?ContributionMultiplier
     */
    public function getContributionMultiplier(): ?ContributionMultiplier {
        if (Value::validateContributionMultiplier($this->contributionMultiplier))  {
            return $this->contributionMultiplier;
        }
        throw new Exception('never get to getContributionMultiplier Value::contributionMultiplier');
    }

    /**
     * @return ?ContributionMultiplier
     */
    public static function sampleContributionMultiplier(): ?ContributionMultiplier {
        return ContributionMultiplier::sample(); /*33:contributionMultiplier*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ValueDescription
     */
    public static function fromDescription(stdClass $value): ValueDescription {
        return ValueDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (Value::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this Value::description');
    }

    /**
     * @param ValueDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(ValueDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ValueDescription
     */
    public function getDescription(): ValueDescription {
        if (Value::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription Value::description');
    }

    /**
     * @return ValueDescription
     */
    public static function sampleDescription(): ValueDescription {
        return ValueDescription::sample(); /*34:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromIconId(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (Value::validateIconId($this->iconId))  {
            return $this->iconId; /*string*/
        }
        throw new Exception('never get to this Value::iconId');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:Value::iconId");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getIconId(): string {
        if (Value::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId Value::iconId');
    }

    /**
     * @return string
     */
    public static function sampleIconId(): string {
        return 'Value::iconId::35'; /*35:iconId*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxContributionsPerParticipant
     */
    public static function fromMaxContributionsPerParticipant(stdClass $value): MaxContributionsPerParticipant {
        return MaxContributionsPerParticipant::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toMaxContributionsPerParticipant(): stdClass {
        if (Value::validateMaxContributionsPerParticipant($this->maxContributionsPerParticipant))  {
            return $this->maxContributionsPerParticipant->to(); /*class*/
        }
        throw new Exception('never get to this Value::maxContributionsPerParticipant');
    }

    /**
     * @param MaxContributionsPerParticipant
     * @return bool
     * @throws Exception
     */
    public static function validateMaxContributionsPerParticipant(MaxContributionsPerParticipant $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxContributionsPerParticipant
     */
    public function getMaxContributionsPerParticipant(): MaxContributionsPerParticipant {
        if (Value::validateMaxContributionsPerParticipant($this->maxContributionsPerParticipant))  {
            return $this->maxContributionsPerParticipant;
        }
        throw new Exception('never get to getMaxContributionsPerParticipant Value::maxContributionsPerParticipant');
    }

    /**
     * @return MaxContributionsPerParticipant
     */
    public static function sampleMaxContributionsPerParticipant(): MaxContributionsPerParticipant {
        return MaxContributionsPerParticipant::sample(); /*36:maxContributionsPerParticipant*/
    }

    /**
     * @param ?stdClass $value
     * @throws Exception
     * @return ?MaxProgressPerContribution
     */
    public static function fromMaxProgressPerContribution(?stdClass $value): ?MaxProgressPerContribution {
        if (!is_null($value)) {
            return MaxProgressPerContribution::from($value); /*class*/
        } else {
            return null;
        }
    }

    /**
     * @throws Exception
     * @return ?stdClass
     */
    public function toMaxProgressPerContribution(): ?stdClass {
        if (Value::validateMaxProgressPerContribution($this->maxProgressPerContribution))  {
            if (!is_null($this->maxProgressPerContribution)) {
                return $this->maxProgressPerContribution->to(); /*class*/
            } else {
                return  null;
            }
        }
        throw new Exception('never get to this Value::maxProgressPerContribution');
    }

    /**
     * @param MaxProgressPerContribution|null
     * @return bool
     * @throws Exception
     */
    public static function validateMaxProgressPerContribution(?MaxProgressPerContribution $value): bool {
        if (!is_null($value)) {
            $value->validate();
        }
        return true;
    }

    /**
     * @throws Exception
     * @return ?MaxProgressPerContribution
     */
    public function getMaxProgressPerContribution(): ?MaxProgressPerContribution {
        if (Value::validateMaxProgressPerContribution($this->maxProgressPerContribution))  {
            return $this->maxProgressPerContribution;
        }
        throw new Exception('never get to getMaxProgressPerContribution Value::maxProgressPerContribution');
    }

    /**
     * @return ?MaxProgressPerContribution
     */
    public static function sampleMaxProgressPerContribution(): ?MaxProgressPerContribution {
        return MaxProgressPerContribution::sample(); /*37:maxProgressPerContribution*/
    }

    /**
     * @param array $value
     * @throws Exception
     * @return array
     */
    public static function fromParameters(array $value): array {
        return  array_map(function ($value) {
            return Parameter::from($value); /*class*/
        }, $value);
    }

    /**
     * @throws Exception
     * @return array
     */
    public function toParameters(): array {
        if (Value::validateParameters($this->parameters))  {
            return array_map(function ($value) {
                return $value->to(); /*class*/
            }, $this->parameters);
        }
        throw new Exception('never get to this Value::parameters');
    }

    /**
     * @param array
     * @return bool
     * @throws Exception
     */
    public static function validateParameters(array $value): bool {
        if (!is_array($value)) {
            throw new Exception("Attribute Error:Value::parameters");
        }
        array_walk($value, function($value_v) {
            $value_v->validate();
        });
        return true;
    }

    /**
     * @throws Exception
     * @return array
     */
    public function getParameters(): array {
        if (Value::validateParameters($this->parameters))  {
            return $this->parameters;
        }
        throw new Exception('never get to getParameters Value::parameters');
    }

    /**
     * @return array
     */
    public static function sampleParameters(): array {
        return  array(
            Parameter::sample() /*38:*/
        ); /* 38:parameters*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ProgressDescription
     */
    public static function fromProgressDescription(stdClass $value): ProgressDescription {
        return ProgressDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toProgressDescription(): stdClass {
        if (Value::validateProgressDescription($this->progressDescription))  {
            return $this->progressDescription->to(); /*class*/
        }
        throw new Exception('never get to this Value::progressDescription');
    }

    /**
     * @param ProgressDescription
     * @return bool
     * @throws Exception
     */
    public static function validateProgressDescription(ProgressDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ProgressDescription
     */
    public function getProgressDescription(): ProgressDescription {
        if (Value::validateProgressDescription($this->progressDescription))  {
            return $this->progressDescription;
        }
        throw new Exception('never get to getProgressDescription Value::progressDescription');
    }

    /**
     * @return ProgressDescription
     */
    public static function sampleProgressDescription(): ProgressDescription {
        return ProgressDescription::sample(); /*39:progressDescription*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return RewardDescription
     */
    public static function fromRewardDescription(stdClass $value): RewardDescription {
        return RewardDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toRewardDescription(): stdClass {
        if (Value::validateRewardDescription($this->rewardDescription))  {
            return $this->rewardDescription->to(); /*class*/
        }
        throw new Exception('never get to this Value::rewardDescription');
    }

    /**
     * @param RewardDescription
     * @return bool
     * @throws Exception
     */
    public static function validateRewardDescription(RewardDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return RewardDescription
     */
    public function getRewardDescription(): RewardDescription {
        if (Value::validateRewardDescription($this->rewardDescription))  {
            return $this->rewardDescription;
        }
        throw new Exception('never get to getRewardDescription Value::rewardDescription');
    }

    /**
     * @return RewardDescription
     */
    public static function sampleRewardDescription(): RewardDescription {
        return RewardDescription::sample(); /*40:rewardDescription*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return TargetDescription
     */
    public static function fromTargetDescription(stdClass $value): TargetDescription {
        return TargetDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTargetDescription(): stdClass {
        if (Value::validateTargetDescription($this->targetDescription))  {
            return $this->targetDescription->to(); /*class*/
        }
        throw new Exception('never get to this Value::targetDescription');
    }

    /**
     * @param TargetDescription
     * @return bool
     * @throws Exception
     */
    public static function validateTargetDescription(TargetDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return TargetDescription
     */
    public function getTargetDescription(): TargetDescription {
        if (Value::validateTargetDescription($this->targetDescription))  {
            return $this->targetDescription;
        }
        throw new Exception('never get to getTargetDescription Value::targetDescription');
    }

    /**
     * @return TargetDescription
     */
    public static function sampleTargetDescription(): TargetDescription {
        return TargetDescription::sample(); /*41:targetDescription*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ValueTitle
     */
    public static function fromTitle(stdClass $value): ValueTitle {
        return ValueTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (Value::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this Value::title');
    }

    /**
     * @param ValueTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(ValueTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ValueTitle
     */
    public function getTitle(): ValueTitle {
        if (Value::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle Value::title');
    }

    /**
     * @return ValueTitle
     */
    public static function sampleTitle(): ValueTitle {
        return ValueTitle::sample(); /*42:title*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return Value::validateKey($this->key)
        || Value::validateContentTags($this->contentTags)
        || Value::validateContributionMultiplier($this->contributionMultiplier)
        || Value::validateDescription($this->description)
        || Value::validateIconId($this->iconId)
        || Value::validateMaxContributionsPerParticipant($this->maxContributionsPerParticipant)
        || Value::validateMaxProgressPerContribution($this->maxProgressPerContribution)
        || Value::validateParameters($this->parameters)
        || Value::validateProgressDescription($this->progressDescription)
        || Value::validateRewardDescription($this->rewardDescription)
        || Value::validateTargetDescription($this->targetDescription)
        || Value::validateTitle($this->title);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'_key'} = $this->toKey();
        $out->{'contentTags'} = $this->toContentTags();
        $out->{'contributionMultiplier'} = $this->toContributionMultiplier();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'maxContributionsPerParticipant'} = $this->toMaxContributionsPerParticipant();
        $out->{'maxProgressPerContribution'} = $this->toMaxProgressPerContribution();
        $out->{'parameters'} = $this->toParameters();
        $out->{'progressDescription'} = $this->toProgressDescription();
        $out->{'rewardDescription'} = $this->toRewardDescription();
        $out->{'targetDescription'} = $this->toTargetDescription();
        $out->{'title'} = $this->toTitle();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return Value
     * @throws Exception
     */
    public static function from(stdClass $obj): Value {
        return new Value(
         Value::fromKey($obj->{'_key'})
        ,Value::fromContentTags($obj->{'contentTags'})
        ,Value::fromContributionMultiplier($obj->{'contributionMultiplier'})
        ,Value::fromDescription($obj->{'description'})
        ,Value::fromIconId($obj->{'iconID'})
        ,Value::fromMaxContributionsPerParticipant($obj->{'maxContributionsPerParticipant'})
        ,Value::fromMaxProgressPerContribution($obj->{'maxProgressPerContribution'})
        ,Value::fromParameters($obj->{'parameters'})
        ,Value::fromProgressDescription($obj->{'progressDescription'})
        ,Value::fromRewardDescription($obj->{'rewardDescription'})
        ,Value::fromTargetDescription($obj->{'targetDescription'})
        ,Value::fromTitle($obj->{'title'})
        );
    }

    /**
     * @return Value
     */
    public static function sample(): Value {
        return new Value(
         Value::sampleKey()
        ,Value::sampleContentTags()
        ,Value::sampleContributionMultiplier()
        ,Value::sampleDescription()
        ,Value::sampleIconId()
        ,Value::sampleMaxContributionsPerParticipant()
        ,Value::sampleMaxProgressPerContribution()
        ,Value::sampleParameters()
        ,Value::sampleProgressDescription()
        ,Value::sampleRewardDescription()
        ,Value::sampleTargetDescription()
        ,Value::sampleTitle()
        );
    }
}

// This is a autogenerated file:ContributionMultiplier

class ContributionMultiplier {
    private int $defaultValue; // json:defaultValue Required
    private ContributionMultiplierDescription $description; // json:description Required
    private ContributionMultiplierIconId $iconId; // json:iconID Required
    private int $maxValue; // json:maxValue Required
    private float $minValue; // json:minValue Required
    private ContributionMultiplierTitle $title; // json:title Required
    private ContributionMultiplierUnsetDescription $unsetDescription; // json:unsetDescription Required

    /**
     * @param int $defaultValue
     * @param ContributionMultiplierDescription $description
     * @param ContributionMultiplierIconId $iconId
     * @param int $maxValue
     * @param float $minValue
     * @param ContributionMultiplierTitle $title
     * @param ContributionMultiplierUnsetDescription $unsetDescription
     */
    public function __construct(int $defaultValue, ContributionMultiplierDescription $description, ContributionMultiplierIconId $iconId, int $maxValue, float $minValue, ContributionMultiplierTitle $title, ContributionMultiplierUnsetDescription $unsetDescription) {
        $this->defaultValue = $defaultValue;
        $this->description = $description;
        $this->iconId = $iconId;
        $this->maxValue = $maxValue;
        $this->minValue = $minValue;
        $this->title = $title;
        $this->unsetDescription = $unsetDescription;
    }

    /**
     * @param int $value
     * @throws Exception
     * @return int
     */
    public static function fromDefaultValue(int $value): int {
        return $value; /*int*/
    }

    /**
     * @throws Exception
     * @return int
     */
    public function toDefaultValue(): int {
        if (ContributionMultiplier::validateDefaultValue($this->defaultValue))  {
            return $this->defaultValue; /*int*/
        }
        throw new Exception('never get to this ContributionMultiplier::defaultValue');
    }

    /**
     * @param int
     * @return bool
     * @throws Exception
     */
    public static function validateDefaultValue(int $value): bool {
        if (!is_integer($value)) {
            throw new Exception("Attribute Error:ContributionMultiplier::defaultValue");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return int
     */
    public function getDefaultValue(): int {
        if (ContributionMultiplier::validateDefaultValue($this->defaultValue))  {
            return $this->defaultValue;
        }
        throw new Exception('never get to getDefaultValue ContributionMultiplier::defaultValue');
    }

    /**
     * @return int
     */
    public static function sampleDefaultValue(): int {
        return 31; /*31:defaultValue*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ContributionMultiplierDescription
     */
    public static function fromDescription(stdClass $value): ContributionMultiplierDescription {
        return ContributionMultiplierDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (ContributionMultiplier::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this ContributionMultiplier::description');
    }

    /**
     * @param ContributionMultiplierDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(ContributionMultiplierDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ContributionMultiplierDescription
     */
    public function getDescription(): ContributionMultiplierDescription {
        if (ContributionMultiplier::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription ContributionMultiplier::description');
    }

    /**
     * @return ContributionMultiplierDescription
     */
    public static function sampleDescription(): ContributionMultiplierDescription {
        return ContributionMultiplierDescription::sample(); /*32:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return ContributionMultiplierIconId
     */
    public static function fromIconId(string $value): ContributionMultiplierIconId {
        return ContributionMultiplierIconId::from($value); /*enum*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (ContributionMultiplier::validateIconId($this->iconId))  {
            return ContributionMultiplierIconId::to($this->iconId); /*enum*/
        }
        throw new Exception('never get to this ContributionMultiplier::iconId');
    }

    /**
     * @param ContributionMultiplierIconId
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(ContributionMultiplierIconId $value): bool {
        ContributionMultiplierIconId::to($value);
        return true;
    }

    /**
     * @throws Exception
     * @return ContributionMultiplierIconId
     */
    public function getIconId(): ContributionMultiplierIconId {
        if (ContributionMultiplier::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId ContributionMultiplier::iconId');
    }

    /**
     * @return ContributionMultiplierIconId
     */
    public static function sampleIconId(): ContributionMultiplierIconId {
        return ContributionMultiplierIconId::sample(); /*enum*/
    }

    /**
     * @param int $value
     * @throws Exception
     * @return int
     */
    public static function fromMaxValue(int $value): int {
        return $value; /*int*/
    }

    /**
     * @throws Exception
     * @return int
     */
    public function toMaxValue(): int {
        if (ContributionMultiplier::validateMaxValue($this->maxValue))  {
            return $this->maxValue; /*int*/
        }
        throw new Exception('never get to this ContributionMultiplier::maxValue');
    }

    /**
     * @param int
     * @return bool
     * @throws Exception
     */
    public static function validateMaxValue(int $value): bool {
        if (!is_integer($value)) {
            throw new Exception("Attribute Error:ContributionMultiplier::maxValue");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return int
     */
    public function getMaxValue(): int {
        if (ContributionMultiplier::validateMaxValue($this->maxValue))  {
            return $this->maxValue;
        }
        throw new Exception('never get to getMaxValue ContributionMultiplier::maxValue');
    }

    /**
     * @return int
     */
    public static function sampleMaxValue(): int {
        return 34; /*34:maxValue*/
    }

    /**
     * @param float $value
     * @throws Exception
     * @return float
     */
    public static function fromMinValue(float $value): float {
        return $value; /*float*/
    }

    /**
     * @throws Exception
     * @return float
     */
    public function toMinValue(): float {
        if (ContributionMultiplier::validateMinValue($this->minValue))  {
            return $this->minValue; /*float*/
        }
        throw new Exception('never get to this ContributionMultiplier::minValue');
    }

    /**
     * @param float
     * @return bool
     * @throws Exception
     */
    public static function validateMinValue(float $value): bool {
        if (!is_float($value)) {
            throw new Exception("Attribute Error:ContributionMultiplier::minValue");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return float
     */
    public function getMinValue(): float {
        if (ContributionMultiplier::validateMinValue($this->minValue))  {
            return $this->minValue;
        }
        throw new Exception('never get to getMinValue ContributionMultiplier::minValue');
    }

    /**
     * @return float
     */
    public static function sampleMinValue(): float {
        return 35.035; /*35:minValue*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ContributionMultiplierTitle
     */
    public static function fromTitle(stdClass $value): ContributionMultiplierTitle {
        return ContributionMultiplierTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (ContributionMultiplier::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this ContributionMultiplier::title');
    }

    /**
     * @param ContributionMultiplierTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(ContributionMultiplierTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ContributionMultiplierTitle
     */
    public function getTitle(): ContributionMultiplierTitle {
        if (ContributionMultiplier::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle ContributionMultiplier::title');
    }

    /**
     * @return ContributionMultiplierTitle
     */
    public static function sampleTitle(): ContributionMultiplierTitle {
        return ContributionMultiplierTitle::sample(); /*36:title*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ContributionMultiplierUnsetDescription
     */
    public static function fromUnsetDescription(stdClass $value): ContributionMultiplierUnsetDescription {
        return ContributionMultiplierUnsetDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toUnsetDescription(): stdClass {
        if (ContributionMultiplier::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription->to(); /*class*/
        }
        throw new Exception('never get to this ContributionMultiplier::unsetDescription');
    }

    /**
     * @param ContributionMultiplierUnsetDescription
     * @return bool
     * @throws Exception
     */
    public static function validateUnsetDescription(ContributionMultiplierUnsetDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ContributionMultiplierUnsetDescription
     */
    public function getUnsetDescription(): ContributionMultiplierUnsetDescription {
        if (ContributionMultiplier::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription;
        }
        throw new Exception('never get to getUnsetDescription ContributionMultiplier::unsetDescription');
    }

    /**
     * @return ContributionMultiplierUnsetDescription
     */
    public static function sampleUnsetDescription(): ContributionMultiplierUnsetDescription {
        return ContributionMultiplierUnsetDescription::sample(); /*37:unsetDescription*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ContributionMultiplier::validateDefaultValue($this->defaultValue)
        || ContributionMultiplier::validateDescription($this->description)
        || ContributionMultiplier::validateIconId($this->iconId)
        || ContributionMultiplier::validateMaxValue($this->maxValue)
        || ContributionMultiplier::validateMinValue($this->minValue)
        || ContributionMultiplier::validateTitle($this->title)
        || ContributionMultiplier::validateUnsetDescription($this->unsetDescription);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'defaultValue'} = $this->toDefaultValue();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'maxValue'} = $this->toMaxValue();
        $out->{'minValue'} = $this->toMinValue();
        $out->{'title'} = $this->toTitle();
        $out->{'unsetDescription'} = $this->toUnsetDescription();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ContributionMultiplier
     * @throws Exception
     */
    public static function from(stdClass $obj): ContributionMultiplier {
        return new ContributionMultiplier(
         ContributionMultiplier::fromDefaultValue($obj->{'defaultValue'})
        ,ContributionMultiplier::fromDescription($obj->{'description'})
        ,ContributionMultiplier::fromIconId($obj->{'iconID'})
        ,ContributionMultiplier::fromMaxValue($obj->{'maxValue'})
        ,ContributionMultiplier::fromMinValue($obj->{'minValue'})
        ,ContributionMultiplier::fromTitle($obj->{'title'})
        ,ContributionMultiplier::fromUnsetDescription($obj->{'unsetDescription'})
        );
    }

    /**
     * @return ContributionMultiplier
     */
    public static function sample(): ContributionMultiplier {
        return new ContributionMultiplier(
         ContributionMultiplier::sampleDefaultValue()
        ,ContributionMultiplier::sampleDescription()
        ,ContributionMultiplier::sampleIconId()
        ,ContributionMultiplier::sampleMaxValue()
        ,ContributionMultiplier::sampleMinValue()
        ,ContributionMultiplier::sampleTitle()
        ,ContributionMultiplier::sampleUnsetDescription()
        );
    }
}

// This is a autogenerated file:ContributionMultiplierDescription

class ContributionMultiplierDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ContributionMultiplierDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ContributionMultiplierDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ContributionMultiplierDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ContributionMultiplierDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ContributionMultiplierDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ContributionMultiplierDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ContributionMultiplierDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ContributionMultiplierDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ContributionMultiplierDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ContributionMultiplierDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ContributionMultiplierDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ContributionMultiplierDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ContributionMultiplierDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ContributionMultiplierDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ContributionMultiplierDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ContributionMultiplierDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ContributionMultiplierDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ContributionMultiplierDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ContributionMultiplierDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ContributionMultiplierDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ContributionMultiplierDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ContributionMultiplierDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ContributionMultiplierDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ContributionMultiplierDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ContributionMultiplierDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ContributionMultiplierDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ContributionMultiplierDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ContributionMultiplierDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ContributionMultiplierDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ContributionMultiplierDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ContributionMultiplierDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ContributionMultiplierDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ContributionMultiplierDescription::validateDe($this->de)
        || ContributionMultiplierDescription::validateEn($this->en)
        || ContributionMultiplierDescription::validateEs($this->es)
        || ContributionMultiplierDescription::validateFr($this->fr)
        || ContributionMultiplierDescription::validateJa($this->ja)
        || ContributionMultiplierDescription::validateKo($this->ko)
        || ContributionMultiplierDescription::validateRu($this->ru)
        || ContributionMultiplierDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ContributionMultiplierDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): ContributionMultiplierDescription {
        return new ContributionMultiplierDescription(
         ContributionMultiplierDescription::fromDe($obj->{'de'})
        ,ContributionMultiplierDescription::fromEn($obj->{'en'})
        ,ContributionMultiplierDescription::fromEs($obj->{'es'})
        ,ContributionMultiplierDescription::fromFr($obj->{'fr'})
        ,ContributionMultiplierDescription::fromJa($obj->{'ja'})
        ,ContributionMultiplierDescription::fromKo($obj->{'ko'})
        ,ContributionMultiplierDescription::fromRu($obj->{'ru'})
        ,ContributionMultiplierDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ContributionMultiplierDescription
     */
    public static function sample(): ContributionMultiplierDescription {
        return new ContributionMultiplierDescription(
         ContributionMultiplierDescription::sampleDe()
        ,ContributionMultiplierDescription::sampleEn()
        ,ContributionMultiplierDescription::sampleEs()
        ,ContributionMultiplierDescription::sampleFr()
        ,ContributionMultiplierDescription::sampleJa()
        ,ContributionMultiplierDescription::sampleKo()
        ,ContributionMultiplierDescription::sampleRu()
        ,ContributionMultiplierDescription::sampleZh()
        );
    }
}

// This is a autogenerated file:ContributionMultiplierIconId

class ContributionMultiplierIconId {
    public static ContributionMultiplierIconId $ISK;
    public static function init() {
        ContributionMultiplierIconId::$ISK = new ContributionMultiplierIconId('isk');
    }
    private string $enum;
    public function __construct(string $enum) {
        $this->enum = $enum;
    }

    /**
     * @param ContributionMultiplierIconId
     * @return string
     * @throws Exception
     */
    public static function to(ContributionMultiplierIconId $obj): string {
        switch ($obj->enum) {
            case ContributionMultiplierIconId::$ISK->enum: return 'isk';
        }
        throw new Exception('the give value is not an enum-value.');
    }

    /**
     * @param mixed
     * @return ContributionMultiplierIconId
     * @throws Exception
     */
    public static function from($obj): ContributionMultiplierIconId {
        switch ($obj) {
            case 'isk': return ContributionMultiplierIconId::$ISK;
        }
        throw new Exception("Cannot deserialize ContributionMultiplierIconId");
    }

    /**
     * @return ContributionMultiplierIconId
     */
    public static function sample(): ContributionMultiplierIconId {
        return ContributionMultiplierIconId::$ISK;
    }
}
ContributionMultiplierIconId::init();

// This is a autogenerated file:ContributionMultiplierTitle

class ContributionMultiplierTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ContributionMultiplierTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ContributionMultiplierTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ContributionMultiplierTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ContributionMultiplierTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ContributionMultiplierTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ContributionMultiplierTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ContributionMultiplierTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ContributionMultiplierTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ContributionMultiplierTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ContributionMultiplierTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ContributionMultiplierTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ContributionMultiplierTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ContributionMultiplierTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ContributionMultiplierTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ContributionMultiplierTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ContributionMultiplierTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ContributionMultiplierTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ContributionMultiplierTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ContributionMultiplierTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ContributionMultiplierTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ContributionMultiplierTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ContributionMultiplierTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ContributionMultiplierTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ContributionMultiplierTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ContributionMultiplierTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ContributionMultiplierTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ContributionMultiplierTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ContributionMultiplierTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ContributionMultiplierTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ContributionMultiplierTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ContributionMultiplierTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ContributionMultiplierTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ContributionMultiplierTitle::validateDe($this->de)
        || ContributionMultiplierTitle::validateEn($this->en)
        || ContributionMultiplierTitle::validateEs($this->es)
        || ContributionMultiplierTitle::validateFr($this->fr)
        || ContributionMultiplierTitle::validateJa($this->ja)
        || ContributionMultiplierTitle::validateKo($this->ko)
        || ContributionMultiplierTitle::validateRu($this->ru)
        || ContributionMultiplierTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ContributionMultiplierTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): ContributionMultiplierTitle {
        return new ContributionMultiplierTitle(
         ContributionMultiplierTitle::fromDe($obj->{'de'})
        ,ContributionMultiplierTitle::fromEn($obj->{'en'})
        ,ContributionMultiplierTitle::fromEs($obj->{'es'})
        ,ContributionMultiplierTitle::fromFr($obj->{'fr'})
        ,ContributionMultiplierTitle::fromJa($obj->{'ja'})
        ,ContributionMultiplierTitle::fromKo($obj->{'ko'})
        ,ContributionMultiplierTitle::fromRu($obj->{'ru'})
        ,ContributionMultiplierTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ContributionMultiplierTitle
     */
    public static function sample(): ContributionMultiplierTitle {
        return new ContributionMultiplierTitle(
         ContributionMultiplierTitle::sampleDe()
        ,ContributionMultiplierTitle::sampleEn()
        ,ContributionMultiplierTitle::sampleEs()
        ,ContributionMultiplierTitle::sampleFr()
        ,ContributionMultiplierTitle::sampleJa()
        ,ContributionMultiplierTitle::sampleKo()
        ,ContributionMultiplierTitle::sampleRu()
        ,ContributionMultiplierTitle::sampleZh()
        );
    }
}

// This is a autogenerated file:ContributionMultiplierUnsetDescription

class ContributionMultiplierUnsetDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ContributionMultiplierUnsetDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ContributionMultiplierUnsetDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ContributionMultiplierUnsetDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ContributionMultiplierUnsetDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ContributionMultiplierUnsetDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ContributionMultiplierUnsetDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ContributionMultiplierUnsetDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ContributionMultiplierUnsetDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ContributionMultiplierUnsetDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ContributionMultiplierUnsetDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ContributionMultiplierUnsetDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ContributionMultiplierUnsetDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ContributionMultiplierUnsetDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ContributionMultiplierUnsetDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ContributionMultiplierUnsetDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ContributionMultiplierUnsetDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ContributionMultiplierUnsetDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ContributionMultiplierUnsetDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ContributionMultiplierUnsetDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ContributionMultiplierUnsetDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ContributionMultiplierUnsetDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ContributionMultiplierUnsetDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ContributionMultiplierUnsetDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ContributionMultiplierUnsetDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ContributionMultiplierUnsetDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ContributionMultiplierUnsetDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ContributionMultiplierUnsetDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ContributionMultiplierUnsetDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ContributionMultiplierUnsetDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ContributionMultiplierUnsetDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ContributionMultiplierUnsetDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ContributionMultiplierUnsetDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ContributionMultiplierUnsetDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ContributionMultiplierUnsetDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ContributionMultiplierUnsetDescription::validateDe($this->de)
        || ContributionMultiplierUnsetDescription::validateEn($this->en)
        || ContributionMultiplierUnsetDescription::validateEs($this->es)
        || ContributionMultiplierUnsetDescription::validateFr($this->fr)
        || ContributionMultiplierUnsetDescription::validateJa($this->ja)
        || ContributionMultiplierUnsetDescription::validateKo($this->ko)
        || ContributionMultiplierUnsetDescription::validateRu($this->ru)
        || ContributionMultiplierUnsetDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ContributionMultiplierUnsetDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): ContributionMultiplierUnsetDescription {
        return new ContributionMultiplierUnsetDescription(
         ContributionMultiplierUnsetDescription::fromDe($obj->{'de'})
        ,ContributionMultiplierUnsetDescription::fromEn($obj->{'en'})
        ,ContributionMultiplierUnsetDescription::fromEs($obj->{'es'})
        ,ContributionMultiplierUnsetDescription::fromFr($obj->{'fr'})
        ,ContributionMultiplierUnsetDescription::fromJa($obj->{'ja'})
        ,ContributionMultiplierUnsetDescription::fromKo($obj->{'ko'})
        ,ContributionMultiplierUnsetDescription::fromRu($obj->{'ru'})
        ,ContributionMultiplierUnsetDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ContributionMultiplierUnsetDescription
     */
    public static function sample(): ContributionMultiplierUnsetDescription {
        return new ContributionMultiplierUnsetDescription(
         ContributionMultiplierUnsetDescription::sampleDe()
        ,ContributionMultiplierUnsetDescription::sampleEn()
        ,ContributionMultiplierUnsetDescription::sampleEs()
        ,ContributionMultiplierUnsetDescription::sampleFr()
        ,ContributionMultiplierUnsetDescription::sampleJa()
        ,ContributionMultiplierUnsetDescription::sampleKo()
        ,ContributionMultiplierUnsetDescription::sampleRu()
        ,ContributionMultiplierUnsetDescription::sampleZh()
        );
    }
}

// This is a autogenerated file:ValueDescription

class ValueDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ValueDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ValueDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ValueDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ValueDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ValueDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ValueDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ValueDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ValueDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ValueDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ValueDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ValueDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ValueDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ValueDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ValueDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ValueDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ValueDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ValueDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ValueDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ValueDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ValueDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ValueDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ValueDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ValueDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ValueDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ValueDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ValueDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ValueDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ValueDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ValueDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ValueDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ValueDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ValueDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ValueDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ValueDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ValueDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ValueDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ValueDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ValueDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ValueDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ValueDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ValueDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ValueDescription::validateDe($this->de)
        || ValueDescription::validateEn($this->en)
        || ValueDescription::validateEs($this->es)
        || ValueDescription::validateFr($this->fr)
        || ValueDescription::validateJa($this->ja)
        || ValueDescription::validateKo($this->ko)
        || ValueDescription::validateRu($this->ru)
        || ValueDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ValueDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): ValueDescription {
        return new ValueDescription(
         ValueDescription::fromDe($obj->{'de'})
        ,ValueDescription::fromEn($obj->{'en'})
        ,ValueDescription::fromEs($obj->{'es'})
        ,ValueDescription::fromFr($obj->{'fr'})
        ,ValueDescription::fromJa($obj->{'ja'})
        ,ValueDescription::fromKo($obj->{'ko'})
        ,ValueDescription::fromRu($obj->{'ru'})
        ,ValueDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ValueDescription
     */
    public static function sample(): ValueDescription {
        return new ValueDescription(
         ValueDescription::sampleDe()
        ,ValueDescription::sampleEn()
        ,ValueDescription::sampleEs()
        ,ValueDescription::sampleFr()
        ,ValueDescription::sampleJa()
        ,ValueDescription::sampleKo()
        ,ValueDescription::sampleRu()
        ,ValueDescription::sampleZh()
        );
    }
}

// This is a autogenerated file:Key

class Key {
    public static Key $BOOST_SHIELD;
    public static Key $CAPTURE_Fw_COMPLEX;
    public static Key $DAMAGE_SHIP;
    public static Key $DEFEND_Fw_COMPLEX;
    public static Key $DELIVER_ITEM;
    public static Key $KILL_CAPSULEER;
    public static Key $KILL_Npc;
    public static Key $MINE_ORE;
    public static Key $REPAIR_ARMOR;
    public static Key $SHIP_INSURANCE;
    public static function init() {
        Key::$BOOST_SHIELD = new Key('BoostShield');
        Key::$CAPTURE_Fw_COMPLEX = new Key('CaptureFWComplex');
        Key::$DAMAGE_SHIP = new Key('DamageShip');
        Key::$DEFEND_Fw_COMPLEX = new Key('DefendFWComplex');
        Key::$DELIVER_ITEM = new Key('DeliverItem');
        Key::$KILL_CAPSULEER = new Key('KillCapsuleer');
        Key::$KILL_Npc = new Key('KillNPC');
        Key::$MINE_ORE = new Key('MineOre');
        Key::$REPAIR_ARMOR = new Key('RepairArmor');
        Key::$SHIP_INSURANCE = new Key('ShipInsurance');
    }
    private string $enum;
    public function __construct(string $enum) {
        $this->enum = $enum;
    }

    /**
     * @param Key
     * @return string
     * @throws Exception
     */
    public static function to(Key $obj): string {
        switch ($obj->enum) {
            case Key::$BOOST_SHIELD->enum: return 'BoostShield';
            case Key::$CAPTURE_Fw_COMPLEX->enum: return 'CaptureFWComplex';
            case Key::$DAMAGE_SHIP->enum: return 'DamageShip';
            case Key::$DEFEND_Fw_COMPLEX->enum: return 'DefendFWComplex';
            case Key::$DELIVER_ITEM->enum: return 'DeliverItem';
            case Key::$KILL_CAPSULEER->enum: return 'KillCapsuleer';
            case Key::$KILL_Npc->enum: return 'KillNPC';
            case Key::$MINE_ORE->enum: return 'MineOre';
            case Key::$REPAIR_ARMOR->enum: return 'RepairArmor';
            case Key::$SHIP_INSURANCE->enum: return 'ShipInsurance';
        }
        throw new Exception('the give value is not an enum-value.');
    }

    /**
     * @param mixed
     * @return Key
     * @throws Exception
     */
    public static function from($obj): Key {
        switch ($obj) {
            case 'BoostShield': return Key::$BOOST_SHIELD;
            case 'CaptureFWComplex': return Key::$CAPTURE_Fw_COMPLEX;
            case 'DamageShip': return Key::$DAMAGE_SHIP;
            case 'DefendFWComplex': return Key::$DEFEND_Fw_COMPLEX;
            case 'DeliverItem': return Key::$DELIVER_ITEM;
            case 'KillCapsuleer': return Key::$KILL_CAPSULEER;
            case 'KillNPC': return Key::$KILL_Npc;
            case 'MineOre': return Key::$MINE_ORE;
            case 'RepairArmor': return Key::$REPAIR_ARMOR;
            case 'ShipInsurance': return Key::$SHIP_INSURANCE;
        }
        throw new Exception("Cannot deserialize Key");
    }

    /**
     * @return Key
     */
    public static function sample(): Key {
        return Key::$BOOST_SHIELD;
    }
}
Key::init();

// This is a autogenerated file:MaxContributionsPerParticipant

class MaxContributionsPerParticipant {
    private MaxContributionsPerParticipantDescription $description; // json:description Required
    private MaxContributionsPerParticipantIconId $iconId; // json:iconID Required
    private MaxContributionsPerParticipantTitle $title; // json:title Required
    private MaxContributionsPerParticipantUnsetDescription $unsetDescription; // json:unsetDescription Required

    /**
     * @param MaxContributionsPerParticipantDescription $description
     * @param MaxContributionsPerParticipantIconId $iconId
     * @param MaxContributionsPerParticipantTitle $title
     * @param MaxContributionsPerParticipantUnsetDescription $unsetDescription
     */
    public function __construct(MaxContributionsPerParticipantDescription $description, MaxContributionsPerParticipantIconId $iconId, MaxContributionsPerParticipantTitle $title, MaxContributionsPerParticipantUnsetDescription $unsetDescription) {
        $this->description = $description;
        $this->iconId = $iconId;
        $this->title = $title;
        $this->unsetDescription = $unsetDescription;
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxContributionsPerParticipantDescription
     */
    public static function fromDescription(stdClass $value): MaxContributionsPerParticipantDescription {
        return MaxContributionsPerParticipantDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (MaxContributionsPerParticipant::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipant::description');
    }

    /**
     * @param MaxContributionsPerParticipantDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(MaxContributionsPerParticipantDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxContributionsPerParticipantDescription
     */
    public function getDescription(): MaxContributionsPerParticipantDescription {
        if (MaxContributionsPerParticipant::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription MaxContributionsPerParticipant::description');
    }

    /**
     * @return MaxContributionsPerParticipantDescription
     */
    public static function sampleDescription(): MaxContributionsPerParticipantDescription {
        return MaxContributionsPerParticipantDescription::sample(); /*31:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return MaxContributionsPerParticipantIconId
     */
    public static function fromIconId(string $value): MaxContributionsPerParticipantIconId {
        return MaxContributionsPerParticipantIconId::from($value); /*enum*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (MaxContributionsPerParticipant::validateIconId($this->iconId))  {
            return MaxContributionsPerParticipantIconId::to($this->iconId); /*enum*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipant::iconId');
    }

    /**
     * @param MaxContributionsPerParticipantIconId
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(MaxContributionsPerParticipantIconId $value): bool {
        MaxContributionsPerParticipantIconId::to($value);
        return true;
    }

    /**
     * @throws Exception
     * @return MaxContributionsPerParticipantIconId
     */
    public function getIconId(): MaxContributionsPerParticipantIconId {
        if (MaxContributionsPerParticipant::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId MaxContributionsPerParticipant::iconId');
    }

    /**
     * @return MaxContributionsPerParticipantIconId
     */
    public static function sampleIconId(): MaxContributionsPerParticipantIconId {
        return MaxContributionsPerParticipantIconId::sample(); /*enum*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxContributionsPerParticipantTitle
     */
    public static function fromTitle(stdClass $value): MaxContributionsPerParticipantTitle {
        return MaxContributionsPerParticipantTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (MaxContributionsPerParticipant::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipant::title');
    }

    /**
     * @param MaxContributionsPerParticipantTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(MaxContributionsPerParticipantTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxContributionsPerParticipantTitle
     */
    public function getTitle(): MaxContributionsPerParticipantTitle {
        if (MaxContributionsPerParticipant::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle MaxContributionsPerParticipant::title');
    }

    /**
     * @return MaxContributionsPerParticipantTitle
     */
    public static function sampleTitle(): MaxContributionsPerParticipantTitle {
        return MaxContributionsPerParticipantTitle::sample(); /*33:title*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxContributionsPerParticipantUnsetDescription
     */
    public static function fromUnsetDescription(stdClass $value): MaxContributionsPerParticipantUnsetDescription {
        return MaxContributionsPerParticipantUnsetDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toUnsetDescription(): stdClass {
        if (MaxContributionsPerParticipant::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription->to(); /*class*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipant::unsetDescription');
    }

    /**
     * @param MaxContributionsPerParticipantUnsetDescription
     * @return bool
     * @throws Exception
     */
    public static function validateUnsetDescription(MaxContributionsPerParticipantUnsetDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxContributionsPerParticipantUnsetDescription
     */
    public function getUnsetDescription(): MaxContributionsPerParticipantUnsetDescription {
        if (MaxContributionsPerParticipant::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription;
        }
        throw new Exception('never get to getUnsetDescription MaxContributionsPerParticipant::unsetDescription');
    }

    /**
     * @return MaxContributionsPerParticipantUnsetDescription
     */
    public static function sampleUnsetDescription(): MaxContributionsPerParticipantUnsetDescription {
        return MaxContributionsPerParticipantUnsetDescription::sample(); /*34:unsetDescription*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxContributionsPerParticipant::validateDescription($this->description)
        || MaxContributionsPerParticipant::validateIconId($this->iconId)
        || MaxContributionsPerParticipant::validateTitle($this->title)
        || MaxContributionsPerParticipant::validateUnsetDescription($this->unsetDescription);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'title'} = $this->toTitle();
        $out->{'unsetDescription'} = $this->toUnsetDescription();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxContributionsPerParticipant
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxContributionsPerParticipant {
        return new MaxContributionsPerParticipant(
         MaxContributionsPerParticipant::fromDescription($obj->{'description'})
        ,MaxContributionsPerParticipant::fromIconId($obj->{'iconID'})
        ,MaxContributionsPerParticipant::fromTitle($obj->{'title'})
        ,MaxContributionsPerParticipant::fromUnsetDescription($obj->{'unsetDescription'})
        );
    }

    /**
     * @return MaxContributionsPerParticipant
     */
    public static function sample(): MaxContributionsPerParticipant {
        return new MaxContributionsPerParticipant(
         MaxContributionsPerParticipant::sampleDescription()
        ,MaxContributionsPerParticipant::sampleIconId()
        ,MaxContributionsPerParticipant::sampleTitle()
        ,MaxContributionsPerParticipant::sampleUnsetDescription()
        );
    }
}

// This is a autogenerated file:MaxContributionsPerParticipantDescription

class MaxContributionsPerParticipantDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MaxContributionsPerParticipantDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MaxContributionsPerParticipantDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MaxContributionsPerParticipantDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MaxContributionsPerParticipantDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MaxContributionsPerParticipantDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MaxContributionsPerParticipantDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MaxContributionsPerParticipantDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MaxContributionsPerParticipantDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MaxContributionsPerParticipantDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MaxContributionsPerParticipantDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MaxContributionsPerParticipantDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MaxContributionsPerParticipantDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MaxContributionsPerParticipantDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MaxContributionsPerParticipantDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MaxContributionsPerParticipantDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MaxContributionsPerParticipantDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MaxContributionsPerParticipantDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MaxContributionsPerParticipantDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MaxContributionsPerParticipantDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MaxContributionsPerParticipantDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MaxContributionsPerParticipantDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MaxContributionsPerParticipantDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MaxContributionsPerParticipantDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MaxContributionsPerParticipantDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MaxContributionsPerParticipantDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MaxContributionsPerParticipantDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MaxContributionsPerParticipantDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MaxContributionsPerParticipantDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MaxContributionsPerParticipantDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MaxContributionsPerParticipantDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MaxContributionsPerParticipantDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MaxContributionsPerParticipantDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxContributionsPerParticipantDescription::validateDe($this->de)
        || MaxContributionsPerParticipantDescription::validateEn($this->en)
        || MaxContributionsPerParticipantDescription::validateEs($this->es)
        || MaxContributionsPerParticipantDescription::validateFr($this->fr)
        || MaxContributionsPerParticipantDescription::validateJa($this->ja)
        || MaxContributionsPerParticipantDescription::validateKo($this->ko)
        || MaxContributionsPerParticipantDescription::validateRu($this->ru)
        || MaxContributionsPerParticipantDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxContributionsPerParticipantDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxContributionsPerParticipantDescription {
        return new MaxContributionsPerParticipantDescription(
         MaxContributionsPerParticipantDescription::fromDe($obj->{'de'})
        ,MaxContributionsPerParticipantDescription::fromEn($obj->{'en'})
        ,MaxContributionsPerParticipantDescription::fromEs($obj->{'es'})
        ,MaxContributionsPerParticipantDescription::fromFr($obj->{'fr'})
        ,MaxContributionsPerParticipantDescription::fromJa($obj->{'ja'})
        ,MaxContributionsPerParticipantDescription::fromKo($obj->{'ko'})
        ,MaxContributionsPerParticipantDescription::fromRu($obj->{'ru'})
        ,MaxContributionsPerParticipantDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MaxContributionsPerParticipantDescription
     */
    public static function sample(): MaxContributionsPerParticipantDescription {
        return new MaxContributionsPerParticipantDescription(
         MaxContributionsPerParticipantDescription::sampleDe()
        ,MaxContributionsPerParticipantDescription::sampleEn()
        ,MaxContributionsPerParticipantDescription::sampleEs()
        ,MaxContributionsPerParticipantDescription::sampleFr()
        ,MaxContributionsPerParticipantDescription::sampleJa()
        ,MaxContributionsPerParticipantDescription::sampleKo()
        ,MaxContributionsPerParticipantDescription::sampleRu()
        ,MaxContributionsPerParticipantDescription::sampleZh()
        );
    }
}

// This is a autogenerated file:MaxContributionsPerParticipantIconId

class MaxContributionsPerParticipantIconId {
    public static MaxContributionsPerParticipantIconId $ISK;
    public static MaxContributionsPerParticipantIconId $PERSONAL;
    public static function init() {
        MaxContributionsPerParticipantIconId::$ISK = new MaxContributionsPerParticipantIconId('isk');
        MaxContributionsPerParticipantIconId::$PERSONAL = new MaxContributionsPerParticipantIconId('personal');
    }
    private string $enum;
    public function __construct(string $enum) {
        $this->enum = $enum;
    }

    /**
     * @param MaxContributionsPerParticipantIconId
     * @return string
     * @throws Exception
     */
    public static function to(MaxContributionsPerParticipantIconId $obj): string {
        switch ($obj->enum) {
            case MaxContributionsPerParticipantIconId::$ISK->enum: return 'isk';
            case MaxContributionsPerParticipantIconId::$PERSONAL->enum: return 'personal';
        }
        throw new Exception('the give value is not an enum-value.');
    }

    /**
     * @param mixed
     * @return MaxContributionsPerParticipantIconId
     * @throws Exception
     */
    public static function from($obj): MaxContributionsPerParticipantIconId {
        switch ($obj) {
            case 'isk': return MaxContributionsPerParticipantIconId::$ISK;
            case 'personal': return MaxContributionsPerParticipantIconId::$PERSONAL;
        }
        throw new Exception("Cannot deserialize MaxContributionsPerParticipantIconId");
    }

    /**
     * @return MaxContributionsPerParticipantIconId
     */
    public static function sample(): MaxContributionsPerParticipantIconId {
        return MaxContributionsPerParticipantIconId::$ISK;
    }
}
MaxContributionsPerParticipantIconId::init();

// This is a autogenerated file:MaxContributionsPerParticipantTitle

class MaxContributionsPerParticipantTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MaxContributionsPerParticipantTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MaxContributionsPerParticipantTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MaxContributionsPerParticipantTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MaxContributionsPerParticipantTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MaxContributionsPerParticipantTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MaxContributionsPerParticipantTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MaxContributionsPerParticipantTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MaxContributionsPerParticipantTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MaxContributionsPerParticipantTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MaxContributionsPerParticipantTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MaxContributionsPerParticipantTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MaxContributionsPerParticipantTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MaxContributionsPerParticipantTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MaxContributionsPerParticipantTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MaxContributionsPerParticipantTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MaxContributionsPerParticipantTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MaxContributionsPerParticipantTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MaxContributionsPerParticipantTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MaxContributionsPerParticipantTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MaxContributionsPerParticipantTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MaxContributionsPerParticipantTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MaxContributionsPerParticipantTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MaxContributionsPerParticipantTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MaxContributionsPerParticipantTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MaxContributionsPerParticipantTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MaxContributionsPerParticipantTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MaxContributionsPerParticipantTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MaxContributionsPerParticipantTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MaxContributionsPerParticipantTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MaxContributionsPerParticipantTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MaxContributionsPerParticipantTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MaxContributionsPerParticipantTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxContributionsPerParticipantTitle::validateDe($this->de)
        || MaxContributionsPerParticipantTitle::validateEn($this->en)
        || MaxContributionsPerParticipantTitle::validateEs($this->es)
        || MaxContributionsPerParticipantTitle::validateFr($this->fr)
        || MaxContributionsPerParticipantTitle::validateJa($this->ja)
        || MaxContributionsPerParticipantTitle::validateKo($this->ko)
        || MaxContributionsPerParticipantTitle::validateRu($this->ru)
        || MaxContributionsPerParticipantTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxContributionsPerParticipantTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxContributionsPerParticipantTitle {
        return new MaxContributionsPerParticipantTitle(
         MaxContributionsPerParticipantTitle::fromDe($obj->{'de'})
        ,MaxContributionsPerParticipantTitle::fromEn($obj->{'en'})
        ,MaxContributionsPerParticipantTitle::fromEs($obj->{'es'})
        ,MaxContributionsPerParticipantTitle::fromFr($obj->{'fr'})
        ,MaxContributionsPerParticipantTitle::fromJa($obj->{'ja'})
        ,MaxContributionsPerParticipantTitle::fromKo($obj->{'ko'})
        ,MaxContributionsPerParticipantTitle::fromRu($obj->{'ru'})
        ,MaxContributionsPerParticipantTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MaxContributionsPerParticipantTitle
     */
    public static function sample(): MaxContributionsPerParticipantTitle {
        return new MaxContributionsPerParticipantTitle(
         MaxContributionsPerParticipantTitle::sampleDe()
        ,MaxContributionsPerParticipantTitle::sampleEn()
        ,MaxContributionsPerParticipantTitle::sampleEs()
        ,MaxContributionsPerParticipantTitle::sampleFr()
        ,MaxContributionsPerParticipantTitle::sampleJa()
        ,MaxContributionsPerParticipantTitle::sampleKo()
        ,MaxContributionsPerParticipantTitle::sampleRu()
        ,MaxContributionsPerParticipantTitle::sampleZh()
        );
    }
}

// This is a autogenerated file:MaxContributionsPerParticipantUnsetDescription

class MaxContributionsPerParticipantUnsetDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MaxContributionsPerParticipantUnsetDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MaxContributionsPerParticipantUnsetDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MaxContributionsPerParticipantUnsetDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MaxContributionsPerParticipantUnsetDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MaxContributionsPerParticipantUnsetDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MaxContributionsPerParticipantUnsetDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MaxContributionsPerParticipantUnsetDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MaxContributionsPerParticipantUnsetDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxContributionsPerParticipantUnsetDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MaxContributionsPerParticipantUnsetDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MaxContributionsPerParticipantUnsetDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MaxContributionsPerParticipantUnsetDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxContributionsPerParticipantUnsetDescription::validateDe($this->de)
        || MaxContributionsPerParticipantUnsetDescription::validateEn($this->en)
        || MaxContributionsPerParticipantUnsetDescription::validateEs($this->es)
        || MaxContributionsPerParticipantUnsetDescription::validateFr($this->fr)
        || MaxContributionsPerParticipantUnsetDescription::validateJa($this->ja)
        || MaxContributionsPerParticipantUnsetDescription::validateKo($this->ko)
        || MaxContributionsPerParticipantUnsetDescription::validateRu($this->ru)
        || MaxContributionsPerParticipantUnsetDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxContributionsPerParticipantUnsetDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxContributionsPerParticipantUnsetDescription {
        return new MaxContributionsPerParticipantUnsetDescription(
         MaxContributionsPerParticipantUnsetDescription::fromDe($obj->{'de'})
        ,MaxContributionsPerParticipantUnsetDescription::fromEn($obj->{'en'})
        ,MaxContributionsPerParticipantUnsetDescription::fromEs($obj->{'es'})
        ,MaxContributionsPerParticipantUnsetDescription::fromFr($obj->{'fr'})
        ,MaxContributionsPerParticipantUnsetDescription::fromJa($obj->{'ja'})
        ,MaxContributionsPerParticipantUnsetDescription::fromKo($obj->{'ko'})
        ,MaxContributionsPerParticipantUnsetDescription::fromRu($obj->{'ru'})
        ,MaxContributionsPerParticipantUnsetDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MaxContributionsPerParticipantUnsetDescription
     */
    public static function sample(): MaxContributionsPerParticipantUnsetDescription {
        return new MaxContributionsPerParticipantUnsetDescription(
         MaxContributionsPerParticipantUnsetDescription::sampleDe()
        ,MaxContributionsPerParticipantUnsetDescription::sampleEn()
        ,MaxContributionsPerParticipantUnsetDescription::sampleEs()
        ,MaxContributionsPerParticipantUnsetDescription::sampleFr()
        ,MaxContributionsPerParticipantUnsetDescription::sampleJa()
        ,MaxContributionsPerParticipantUnsetDescription::sampleKo()
        ,MaxContributionsPerParticipantUnsetDescription::sampleRu()
        ,MaxContributionsPerParticipantUnsetDescription::sampleZh()
        );
    }
}

// This is a autogenerated file:MaxProgressPerContribution

class MaxProgressPerContribution {
    private MaxProgressPerContributionDescription $description; // json:description Required
    private ContributionMultiplierIconId $iconId; // json:iconID Required
    private MaxProgressPerContributionTitle $title; // json:title Required
    private MaxProgressPerContributionUnsetDescription $unsetDescription; // json:unsetDescription Required

    /**
     * @param MaxProgressPerContributionDescription $description
     * @param ContributionMultiplierIconId $iconId
     * @param MaxProgressPerContributionTitle $title
     * @param MaxProgressPerContributionUnsetDescription $unsetDescription
     */
    public function __construct(MaxProgressPerContributionDescription $description, ContributionMultiplierIconId $iconId, MaxProgressPerContributionTitle $title, MaxProgressPerContributionUnsetDescription $unsetDescription) {
        $this->description = $description;
        $this->iconId = $iconId;
        $this->title = $title;
        $this->unsetDescription = $unsetDescription;
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxProgressPerContributionDescription
     */
    public static function fromDescription(stdClass $value): MaxProgressPerContributionDescription {
        return MaxProgressPerContributionDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (MaxProgressPerContribution::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this MaxProgressPerContribution::description');
    }

    /**
     * @param MaxProgressPerContributionDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(MaxProgressPerContributionDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxProgressPerContributionDescription
     */
    public function getDescription(): MaxProgressPerContributionDescription {
        if (MaxProgressPerContribution::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription MaxProgressPerContribution::description');
    }

    /**
     * @return MaxProgressPerContributionDescription
     */
    public static function sampleDescription(): MaxProgressPerContributionDescription {
        return MaxProgressPerContributionDescription::sample(); /*31:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return ContributionMultiplierIconId
     */
    public static function fromIconId(string $value): ContributionMultiplierIconId {
        return ContributionMultiplierIconId::from($value); /*enum*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (MaxProgressPerContribution::validateIconId($this->iconId))  {
            return ContributionMultiplierIconId::to($this->iconId); /*enum*/
        }
        throw new Exception('never get to this MaxProgressPerContribution::iconId');
    }

    /**
     * @param ContributionMultiplierIconId
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(ContributionMultiplierIconId $value): bool {
        ContributionMultiplierIconId::to($value);
        return true;
    }

    /**
     * @throws Exception
     * @return ContributionMultiplierIconId
     */
    public function getIconId(): ContributionMultiplierIconId {
        if (MaxProgressPerContribution::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId MaxProgressPerContribution::iconId');
    }

    /**
     * @return ContributionMultiplierIconId
     */
    public static function sampleIconId(): ContributionMultiplierIconId {
        return ContributionMultiplierIconId::sample(); /*enum*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxProgressPerContributionTitle
     */
    public static function fromTitle(stdClass $value): MaxProgressPerContributionTitle {
        return MaxProgressPerContributionTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (MaxProgressPerContribution::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this MaxProgressPerContribution::title');
    }

    /**
     * @param MaxProgressPerContributionTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(MaxProgressPerContributionTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxProgressPerContributionTitle
     */
    public function getTitle(): MaxProgressPerContributionTitle {
        if (MaxProgressPerContribution::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle MaxProgressPerContribution::title');
    }

    /**
     * @return MaxProgressPerContributionTitle
     */
    public static function sampleTitle(): MaxProgressPerContributionTitle {
        return MaxProgressPerContributionTitle::sample(); /*33:title*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return MaxProgressPerContributionUnsetDescription
     */
    public static function fromUnsetDescription(stdClass $value): MaxProgressPerContributionUnsetDescription {
        return MaxProgressPerContributionUnsetDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toUnsetDescription(): stdClass {
        if (MaxProgressPerContribution::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription->to(); /*class*/
        }
        throw new Exception('never get to this MaxProgressPerContribution::unsetDescription');
    }

    /**
     * @param MaxProgressPerContributionUnsetDescription
     * @return bool
     * @throws Exception
     */
    public static function validateUnsetDescription(MaxProgressPerContributionUnsetDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return MaxProgressPerContributionUnsetDescription
     */
    public function getUnsetDescription(): MaxProgressPerContributionUnsetDescription {
        if (MaxProgressPerContribution::validateUnsetDescription($this->unsetDescription))  {
            return $this->unsetDescription;
        }
        throw new Exception('never get to getUnsetDescription MaxProgressPerContribution::unsetDescription');
    }

    /**
     * @return MaxProgressPerContributionUnsetDescription
     */
    public static function sampleUnsetDescription(): MaxProgressPerContributionUnsetDescription {
        return MaxProgressPerContributionUnsetDescription::sample(); /*34:unsetDescription*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxProgressPerContribution::validateDescription($this->description)
        || MaxProgressPerContribution::validateIconId($this->iconId)
        || MaxProgressPerContribution::validateTitle($this->title)
        || MaxProgressPerContribution::validateUnsetDescription($this->unsetDescription);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'title'} = $this->toTitle();
        $out->{'unsetDescription'} = $this->toUnsetDescription();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxProgressPerContribution
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxProgressPerContribution {
        return new MaxProgressPerContribution(
         MaxProgressPerContribution::fromDescription($obj->{'description'})
        ,MaxProgressPerContribution::fromIconId($obj->{'iconID'})
        ,MaxProgressPerContribution::fromTitle($obj->{'title'})
        ,MaxProgressPerContribution::fromUnsetDescription($obj->{'unsetDescription'})
        );
    }

    /**
     * @return MaxProgressPerContribution
     */
    public static function sample(): MaxProgressPerContribution {
        return new MaxProgressPerContribution(
         MaxProgressPerContribution::sampleDescription()
        ,MaxProgressPerContribution::sampleIconId()
        ,MaxProgressPerContribution::sampleTitle()
        ,MaxProgressPerContribution::sampleUnsetDescription()
        );
    }
}

// This is a autogenerated file:MaxProgressPerContributionDescription

class MaxProgressPerContributionDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MaxProgressPerContributionDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MaxProgressPerContributionDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MaxProgressPerContributionDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MaxProgressPerContributionDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MaxProgressPerContributionDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MaxProgressPerContributionDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MaxProgressPerContributionDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MaxProgressPerContributionDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MaxProgressPerContributionDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MaxProgressPerContributionDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MaxProgressPerContributionDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MaxProgressPerContributionDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MaxProgressPerContributionDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MaxProgressPerContributionDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MaxProgressPerContributionDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MaxProgressPerContributionDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MaxProgressPerContributionDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MaxProgressPerContributionDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MaxProgressPerContributionDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MaxProgressPerContributionDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MaxProgressPerContributionDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MaxProgressPerContributionDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MaxProgressPerContributionDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MaxProgressPerContributionDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MaxProgressPerContributionDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MaxProgressPerContributionDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MaxProgressPerContributionDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MaxProgressPerContributionDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MaxProgressPerContributionDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MaxProgressPerContributionDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MaxProgressPerContributionDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MaxProgressPerContributionDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxProgressPerContributionDescription::validateDe($this->de)
        || MaxProgressPerContributionDescription::validateEn($this->en)
        || MaxProgressPerContributionDescription::validateEs($this->es)
        || MaxProgressPerContributionDescription::validateFr($this->fr)
        || MaxProgressPerContributionDescription::validateJa($this->ja)
        || MaxProgressPerContributionDescription::validateKo($this->ko)
        || MaxProgressPerContributionDescription::validateRu($this->ru)
        || MaxProgressPerContributionDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxProgressPerContributionDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxProgressPerContributionDescription {
        return new MaxProgressPerContributionDescription(
         MaxProgressPerContributionDescription::fromDe($obj->{'de'})
        ,MaxProgressPerContributionDescription::fromEn($obj->{'en'})
        ,MaxProgressPerContributionDescription::fromEs($obj->{'es'})
        ,MaxProgressPerContributionDescription::fromFr($obj->{'fr'})
        ,MaxProgressPerContributionDescription::fromJa($obj->{'ja'})
        ,MaxProgressPerContributionDescription::fromKo($obj->{'ko'})
        ,MaxProgressPerContributionDescription::fromRu($obj->{'ru'})
        ,MaxProgressPerContributionDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MaxProgressPerContributionDescription
     */
    public static function sample(): MaxProgressPerContributionDescription {
        return new MaxProgressPerContributionDescription(
         MaxProgressPerContributionDescription::sampleDe()
        ,MaxProgressPerContributionDescription::sampleEn()
        ,MaxProgressPerContributionDescription::sampleEs()
        ,MaxProgressPerContributionDescription::sampleFr()
        ,MaxProgressPerContributionDescription::sampleJa()
        ,MaxProgressPerContributionDescription::sampleKo()
        ,MaxProgressPerContributionDescription::sampleRu()
        ,MaxProgressPerContributionDescription::sampleZh()
        );
    }
}

// This is a autogenerated file:MaxProgressPerContributionTitle

class MaxProgressPerContributionTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MaxProgressPerContributionTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MaxProgressPerContributionTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MaxProgressPerContributionTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MaxProgressPerContributionTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MaxProgressPerContributionTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MaxProgressPerContributionTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MaxProgressPerContributionTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MaxProgressPerContributionTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MaxProgressPerContributionTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MaxProgressPerContributionTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MaxProgressPerContributionTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MaxProgressPerContributionTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MaxProgressPerContributionTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MaxProgressPerContributionTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MaxProgressPerContributionTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MaxProgressPerContributionTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MaxProgressPerContributionTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MaxProgressPerContributionTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MaxProgressPerContributionTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MaxProgressPerContributionTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MaxProgressPerContributionTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MaxProgressPerContributionTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MaxProgressPerContributionTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MaxProgressPerContributionTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MaxProgressPerContributionTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MaxProgressPerContributionTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MaxProgressPerContributionTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MaxProgressPerContributionTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MaxProgressPerContributionTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MaxProgressPerContributionTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MaxProgressPerContributionTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MaxProgressPerContributionTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxProgressPerContributionTitle::validateDe($this->de)
        || MaxProgressPerContributionTitle::validateEn($this->en)
        || MaxProgressPerContributionTitle::validateEs($this->es)
        || MaxProgressPerContributionTitle::validateFr($this->fr)
        || MaxProgressPerContributionTitle::validateJa($this->ja)
        || MaxProgressPerContributionTitle::validateKo($this->ko)
        || MaxProgressPerContributionTitle::validateRu($this->ru)
        || MaxProgressPerContributionTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxProgressPerContributionTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxProgressPerContributionTitle {
        return new MaxProgressPerContributionTitle(
         MaxProgressPerContributionTitle::fromDe($obj->{'de'})
        ,MaxProgressPerContributionTitle::fromEn($obj->{'en'})
        ,MaxProgressPerContributionTitle::fromEs($obj->{'es'})
        ,MaxProgressPerContributionTitle::fromFr($obj->{'fr'})
        ,MaxProgressPerContributionTitle::fromJa($obj->{'ja'})
        ,MaxProgressPerContributionTitle::fromKo($obj->{'ko'})
        ,MaxProgressPerContributionTitle::fromRu($obj->{'ru'})
        ,MaxProgressPerContributionTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MaxProgressPerContributionTitle
     */
    public static function sample(): MaxProgressPerContributionTitle {
        return new MaxProgressPerContributionTitle(
         MaxProgressPerContributionTitle::sampleDe()
        ,MaxProgressPerContributionTitle::sampleEn()
        ,MaxProgressPerContributionTitle::sampleEs()
        ,MaxProgressPerContributionTitle::sampleFr()
        ,MaxProgressPerContributionTitle::sampleJa()
        ,MaxProgressPerContributionTitle::sampleKo()
        ,MaxProgressPerContributionTitle::sampleRu()
        ,MaxProgressPerContributionTitle::sampleZh()
        );
    }
}

// This is a autogenerated file:MaxProgressPerContributionUnsetDescription

class MaxProgressPerContributionUnsetDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (MaxProgressPerContributionUnsetDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (MaxProgressPerContributionUnsetDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe MaxProgressPerContributionUnsetDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'MaxProgressPerContributionUnsetDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (MaxProgressPerContributionUnsetDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (MaxProgressPerContributionUnsetDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn MaxProgressPerContributionUnsetDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'MaxProgressPerContributionUnsetDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (MaxProgressPerContributionUnsetDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (MaxProgressPerContributionUnsetDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs MaxProgressPerContributionUnsetDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'MaxProgressPerContributionUnsetDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (MaxProgressPerContributionUnsetDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (MaxProgressPerContributionUnsetDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr MaxProgressPerContributionUnsetDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'MaxProgressPerContributionUnsetDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (MaxProgressPerContributionUnsetDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (MaxProgressPerContributionUnsetDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa MaxProgressPerContributionUnsetDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'MaxProgressPerContributionUnsetDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (MaxProgressPerContributionUnsetDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (MaxProgressPerContributionUnsetDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo MaxProgressPerContributionUnsetDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'MaxProgressPerContributionUnsetDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (MaxProgressPerContributionUnsetDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (MaxProgressPerContributionUnsetDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu MaxProgressPerContributionUnsetDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'MaxProgressPerContributionUnsetDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (MaxProgressPerContributionUnsetDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this MaxProgressPerContributionUnsetDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:MaxProgressPerContributionUnsetDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (MaxProgressPerContributionUnsetDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh MaxProgressPerContributionUnsetDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'MaxProgressPerContributionUnsetDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return MaxProgressPerContributionUnsetDescription::validateDe($this->de)
        || MaxProgressPerContributionUnsetDescription::validateEn($this->en)
        || MaxProgressPerContributionUnsetDescription::validateEs($this->es)
        || MaxProgressPerContributionUnsetDescription::validateFr($this->fr)
        || MaxProgressPerContributionUnsetDescription::validateJa($this->ja)
        || MaxProgressPerContributionUnsetDescription::validateKo($this->ko)
        || MaxProgressPerContributionUnsetDescription::validateRu($this->ru)
        || MaxProgressPerContributionUnsetDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return MaxProgressPerContributionUnsetDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): MaxProgressPerContributionUnsetDescription {
        return new MaxProgressPerContributionUnsetDescription(
         MaxProgressPerContributionUnsetDescription::fromDe($obj->{'de'})
        ,MaxProgressPerContributionUnsetDescription::fromEn($obj->{'en'})
        ,MaxProgressPerContributionUnsetDescription::fromEs($obj->{'es'})
        ,MaxProgressPerContributionUnsetDescription::fromFr($obj->{'fr'})
        ,MaxProgressPerContributionUnsetDescription::fromJa($obj->{'ja'})
        ,MaxProgressPerContributionUnsetDescription::fromKo($obj->{'ko'})
        ,MaxProgressPerContributionUnsetDescription::fromRu($obj->{'ru'})
        ,MaxProgressPerContributionUnsetDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return MaxProgressPerContributionUnsetDescription
     */
    public static function sample(): MaxProgressPerContributionUnsetDescription {
        return new MaxProgressPerContributionUnsetDescription(
         MaxProgressPerContributionUnsetDescription::sampleDe()
        ,MaxProgressPerContributionUnsetDescription::sampleEn()
        ,MaxProgressPerContributionUnsetDescription::sampleEs()
        ,MaxProgressPerContributionUnsetDescription::sampleFr()
        ,MaxProgressPerContributionUnsetDescription::sampleJa()
        ,MaxProgressPerContributionUnsetDescription::sampleKo()
        ,MaxProgressPerContributionUnsetDescription::sampleRu()
        ,MaxProgressPerContributionUnsetDescription::sampleZh()
        );
    }
}

// This is a autogenerated file:Parameter

class Parameter {
    private string $key; // json:_key Required
    private ?Boolean $boolean; // json:boolean Optional
    private ?ItemDelivery $itemDelivery; // json:itemDelivery Optional
    private ?Matcher $matcher; // json:matcher Optional

    /**
     * @param string $key
     * @param Boolean|null $boolean
     * @param ItemDelivery|null $itemDelivery
     * @param Matcher|null $matcher
     */
    public function __construct(string $key, ?Boolean $boolean, ?ItemDelivery $itemDelivery, ?Matcher $matcher) {
        $this->key = $key;
        $this->boolean = $boolean;
        $this->itemDelivery = $itemDelivery;
        $this->matcher = $matcher;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKey(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKey(): string {
        if (Parameter::validateKey($this->key))  {
            return $this->key; /*string*/
        }
        throw new Exception('never get to this Parameter::key');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKey(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:Parameter::key");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKey(): string {
        if (Parameter::validateKey($this->key))  {
            return $this->key;
        }
        throw new Exception('never get to getKey Parameter::key');
    }

    /**
     * @return string
     */
    public static function sampleKey(): string {
        return 'Parameter::key::31'; /*31:key*/
    }

    /**
     * @param ?stdClass $value
     * @throws Exception
     * @return ?Boolean
     */
    public static function fromBoolean(?stdClass $value): ?Boolean {
        if (!is_null($value)) {
            return Boolean::from($value); /*class*/
        } else {
            return null;
        }
    }

    /**
     * @throws Exception
     * @return ?stdClass
     */
    public function toBoolean(): ?stdClass {
        if (Parameter::validateBoolean($this->boolean))  {
            if (!is_null($this->boolean)) {
                return $this->boolean->to(); /*class*/
            } else {
                return  null;
            }
        }
        throw new Exception('never get to this Parameter::boolean');
    }

    /**
     * @param Boolean|null
     * @return bool
     * @throws Exception
     */
    public static function validateBoolean(?Boolean $value): bool {
        if (!is_null($value)) {
            $value->validate();
        }
        return true;
    }

    /**
     * @throws Exception
     * @return ?Boolean
     */
    public function getBoolean(): ?Boolean {
        if (Parameter::validateBoolean($this->boolean))  {
            return $this->boolean;
        }
        throw new Exception('never get to getBoolean Parameter::boolean');
    }

    /**
     * @return ?Boolean
     */
    public static function sampleBoolean(): ?Boolean {
        return Boolean::sample(); /*32:boolean*/
    }

    /**
     * @param ?stdClass $value
     * @throws Exception
     * @return ?ItemDelivery
     */
    public static function fromItemDelivery(?stdClass $value): ?ItemDelivery {
        if (!is_null($value)) {
            return ItemDelivery::from($value); /*class*/
        } else {
            return null;
        }
    }

    /**
     * @throws Exception
     * @return ?stdClass
     */
    public function toItemDelivery(): ?stdClass {
        if (Parameter::validateItemDelivery($this->itemDelivery))  {
            if (!is_null($this->itemDelivery)) {
                return $this->itemDelivery->to(); /*class*/
            } else {
                return  null;
            }
        }
        throw new Exception('never get to this Parameter::itemDelivery');
    }

    /**
     * @param ItemDelivery|null
     * @return bool
     * @throws Exception
     */
    public static function validateItemDelivery(?ItemDelivery $value): bool {
        if (!is_null($value)) {
            $value->validate();
        }
        return true;
    }

    /**
     * @throws Exception
     * @return ?ItemDelivery
     */
    public function getItemDelivery(): ?ItemDelivery {
        if (Parameter::validateItemDelivery($this->itemDelivery))  {
            return $this->itemDelivery;
        }
        throw new Exception('never get to getItemDelivery Parameter::itemDelivery');
    }

    /**
     * @return ?ItemDelivery
     */
    public static function sampleItemDelivery(): ?ItemDelivery {
        return ItemDelivery::sample(); /*33:itemDelivery*/
    }

    /**
     * @param ?stdClass $value
     * @throws Exception
     * @return ?Matcher
     */
    public static function fromMatcher(?stdClass $value): ?Matcher {
        if (!is_null($value)) {
            return Matcher::from($value); /*class*/
        } else {
            return null;
        }
    }

    /**
     * @throws Exception
     * @return ?stdClass
     */
    public function toMatcher(): ?stdClass {
        if (Parameter::validateMatcher($this->matcher))  {
            if (!is_null($this->matcher)) {
                return $this->matcher->to(); /*class*/
            } else {
                return  null;
            }
        }
        throw new Exception('never get to this Parameter::matcher');
    }

    /**
     * @param Matcher|null
     * @return bool
     * @throws Exception
     */
    public static function validateMatcher(?Matcher $value): bool {
        if (!is_null($value)) {
            $value->validate();
        }
        return true;
    }

    /**
     * @throws Exception
     * @return ?Matcher
     */
    public function getMatcher(): ?Matcher {
        if (Parameter::validateMatcher($this->matcher))  {
            return $this->matcher;
        }
        throw new Exception('never get to getMatcher Parameter::matcher');
    }

    /**
     * @return ?Matcher
     */
    public static function sampleMatcher(): ?Matcher {
        return Matcher::sample(); /*34:matcher*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return Parameter::validateKey($this->key)
        || Parameter::validateBoolean($this->boolean)
        || Parameter::validateItemDelivery($this->itemDelivery)
        || Parameter::validateMatcher($this->matcher);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'_key'} = $this->toKey();
        $out->{'boolean'} = $this->toBoolean();
        $out->{'itemDelivery'} = $this->toItemDelivery();
        $out->{'matcher'} = $this->toMatcher();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return Parameter
     * @throws Exception
     */
    public static function from(stdClass $obj): Parameter {
        return new Parameter(
         Parameter::fromKey($obj->{'_key'})
        ,Parameter::fromBoolean($obj->{'boolean'})
        ,Parameter::fromItemDelivery($obj->{'itemDelivery'})
        ,Parameter::fromMatcher($obj->{'matcher'})
        );
    }

    /**
     * @return Parameter
     */
    public static function sample(): Parameter {
        return new Parameter(
         Parameter::sampleKey()
        ,Parameter::sampleBoolean()
        ,Parameter::sampleItemDelivery()
        ,Parameter::sampleMatcher()
        );
    }
}

// This is a autogenerated file:Boolean

class Boolean {
    private ChoiceLabel $choiceLabel; // json:choiceLabel Required
    private bool $default; // json:default Required
    private BooleanDescription $description; // json:description Required
    private BooleanIconId $iconId; // json:iconID Required
    private OptionFalse $optionFalse; // json:optionFalse Required
    private OptionTrue $optionTrue; // json:optionTrue Required
    private BooleanTitle $title; // json:title Required

    /**
     * @param ChoiceLabel $choiceLabel
     * @param bool $default
     * @param BooleanDescription $description
     * @param BooleanIconId $iconId
     * @param OptionFalse $optionFalse
     * @param OptionTrue $optionTrue
     * @param BooleanTitle $title
     */
    public function __construct(ChoiceLabel $choiceLabel, bool $default, BooleanDescription $description, BooleanIconId $iconId, OptionFalse $optionFalse, OptionTrue $optionTrue, BooleanTitle $title) {
        $this->choiceLabel = $choiceLabel;
        $this->default = $default;
        $this->description = $description;
        $this->iconId = $iconId;
        $this->optionFalse = $optionFalse;
        $this->optionTrue = $optionTrue;
        $this->title = $title;
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return ChoiceLabel
     */
    public static function fromChoiceLabel(stdClass $value): ChoiceLabel {
        return ChoiceLabel::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toChoiceLabel(): stdClass {
        if (Boolean::validateChoiceLabel($this->choiceLabel))  {
            return $this->choiceLabel->to(); /*class*/
        }
        throw new Exception('never get to this Boolean::choiceLabel');
    }

    /**
     * @param ChoiceLabel
     * @return bool
     * @throws Exception
     */
    public static function validateChoiceLabel(ChoiceLabel $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return ChoiceLabel
     */
    public function getChoiceLabel(): ChoiceLabel {
        if (Boolean::validateChoiceLabel($this->choiceLabel))  {
            return $this->choiceLabel;
        }
        throw new Exception('never get to getChoiceLabel Boolean::choiceLabel');
    }

    /**
     * @return ChoiceLabel
     */
    public static function sampleChoiceLabel(): ChoiceLabel {
        return ChoiceLabel::sample(); /*31:choiceLabel*/
    }

    /**
     * @param bool $value
     * @throws Exception
     * @return bool
     */
    public static function fromDefault(bool $value): bool {
        return $value; /*bool*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function toDefault(): bool {
        if (Boolean::validateDefault($this->default))  {
            return $this->default; /*bool*/
        }
        throw new Exception('never get to this Boolean::default');
    }

    /**
     * @param bool
     * @return bool
     * @throws Exception
     */
    public static function validateDefault(bool $value): bool {
        if (!is_bool($value)) {
            throw new Exception("Attribute Error:Boolean::default");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function getDefault(): bool {
        if (Boolean::validateDefault($this->default))  {
            return $this->default;
        }
        throw new Exception('never get to getDefault Boolean::default');
    }

    /**
     * @return bool
     */
    public static function sampleDefault(): bool {
        return true; /*32:default*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return BooleanDescription
     */
    public static function fromDescription(stdClass $value): BooleanDescription {
        return BooleanDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (Boolean::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this Boolean::description');
    }

    /**
     * @param BooleanDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(BooleanDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return BooleanDescription
     */
    public function getDescription(): BooleanDescription {
        if (Boolean::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription Boolean::description');
    }

    /**
     * @return BooleanDescription
     */
    public static function sampleDescription(): BooleanDescription {
        return BooleanDescription::sample(); /*33:description*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return BooleanIconId
     */
    public static function fromIconId(string $value): BooleanIconId {
        return BooleanIconId::from($value); /*enum*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toIconId(): string {
        if (Boolean::validateIconId($this->iconId))  {
            return BooleanIconId::to($this->iconId); /*enum*/
        }
        throw new Exception('never get to this Boolean::iconId');
    }

    /**
     * @param BooleanIconId
     * @return bool
     * @throws Exception
     */
    public static function validateIconId(BooleanIconId $value): bool {
        BooleanIconId::to($value);
        return true;
    }

    /**
     * @throws Exception
     * @return BooleanIconId
     */
    public function getIconId(): BooleanIconId {
        if (Boolean::validateIconId($this->iconId))  {
            return $this->iconId;
        }
        throw new Exception('never get to getIconId Boolean::iconId');
    }

    /**
     * @return BooleanIconId
     */
    public static function sampleIconId(): BooleanIconId {
        return BooleanIconId::sample(); /*enum*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return OptionFalse
     */
    public static function fromOptionFalse(stdClass $value): OptionFalse {
        return OptionFalse::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toOptionFalse(): stdClass {
        if (Boolean::validateOptionFalse($this->optionFalse))  {
            return $this->optionFalse->to(); /*class*/
        }
        throw new Exception('never get to this Boolean::optionFalse');
    }

    /**
     * @param OptionFalse
     * @return bool
     * @throws Exception
     */
    public static function validateOptionFalse(OptionFalse $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return OptionFalse
     */
    public function getOptionFalse(): OptionFalse {
        if (Boolean::validateOptionFalse($this->optionFalse))  {
            return $this->optionFalse;
        }
        throw new Exception('never get to getOptionFalse Boolean::optionFalse');
    }

    /**
     * @return OptionFalse
     */
    public static function sampleOptionFalse(): OptionFalse {
        return OptionFalse::sample(); /*35:optionFalse*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return OptionTrue
     */
    public static function fromOptionTrue(stdClass $value): OptionTrue {
        return OptionTrue::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toOptionTrue(): stdClass {
        if (Boolean::validateOptionTrue($this->optionTrue))  {
            return $this->optionTrue->to(); /*class*/
        }
        throw new Exception('never get to this Boolean::optionTrue');
    }

    /**
     * @param OptionTrue
     * @return bool
     * @throws Exception
     */
    public static function validateOptionTrue(OptionTrue $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return OptionTrue
     */
    public function getOptionTrue(): OptionTrue {
        if (Boolean::validateOptionTrue($this->optionTrue))  {
            return $this->optionTrue;
        }
        throw new Exception('never get to getOptionTrue Boolean::optionTrue');
    }

    /**
     * @return OptionTrue
     */
    public static function sampleOptionTrue(): OptionTrue {
        return OptionTrue::sample(); /*36:optionTrue*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return BooleanTitle
     */
    public static function fromTitle(stdClass $value): BooleanTitle {
        return BooleanTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (Boolean::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this Boolean::title');
    }

    /**
     * @param BooleanTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(BooleanTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return BooleanTitle
     */
    public function getTitle(): BooleanTitle {
        if (Boolean::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle Boolean::title');
    }

    /**
     * @return BooleanTitle
     */
    public static function sampleTitle(): BooleanTitle {
        return BooleanTitle::sample(); /*37:title*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return Boolean::validateChoiceLabel($this->choiceLabel)
        || Boolean::validateDefault($this->default)
        || Boolean::validateDescription($this->description)
        || Boolean::validateIconId($this->iconId)
        || Boolean::validateOptionFalse($this->optionFalse)
        || Boolean::validateOptionTrue($this->optionTrue)
        || Boolean::validateTitle($this->title);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'choiceLabel'} = $this->toChoiceLabel();
        $out->{'default'} = $this->toDefault();
        $out->{'description'} = $this->toDescription();
        $out->{'iconID'} = $this->toIconId();
        $out->{'optionFalse'} = $this->toOptionFalse();
        $out->{'optionTrue'} = $this->toOptionTrue();
        $out->{'title'} = $this->toTitle();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return Boolean
     * @throws Exception
     */
    public static function from(stdClass $obj): Boolean {
        return new Boolean(
         Boolean::fromChoiceLabel($obj->{'choiceLabel'})
        ,Boolean::fromDefault($obj->{'default'})
        ,Boolean::fromDescription($obj->{'description'})
        ,Boolean::fromIconId($obj->{'iconID'})
        ,Boolean::fromOptionFalse($obj->{'optionFalse'})
        ,Boolean::fromOptionTrue($obj->{'optionTrue'})
        ,Boolean::fromTitle($obj->{'title'})
        );
    }

    /**
     * @return Boolean
     */
    public static function sample(): Boolean {
        return new Boolean(
         Boolean::sampleChoiceLabel()
        ,Boolean::sampleDefault()
        ,Boolean::sampleDescription()
        ,Boolean::sampleIconId()
        ,Boolean::sampleOptionFalse()
        ,Boolean::sampleOptionTrue()
        ,Boolean::sampleTitle()
        );
    }
}

// This is a autogenerated file:ChoiceLabel

class ChoiceLabel {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (ChoiceLabel::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (ChoiceLabel::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe ChoiceLabel::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'ChoiceLabel::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (ChoiceLabel::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (ChoiceLabel::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn ChoiceLabel::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'ChoiceLabel::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (ChoiceLabel::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (ChoiceLabel::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs ChoiceLabel::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'ChoiceLabel::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (ChoiceLabel::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (ChoiceLabel::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr ChoiceLabel::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'ChoiceLabel::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (ChoiceLabel::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (ChoiceLabel::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa ChoiceLabel::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'ChoiceLabel::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (ChoiceLabel::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (ChoiceLabel::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo ChoiceLabel::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'ChoiceLabel::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (ChoiceLabel::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (ChoiceLabel::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu ChoiceLabel::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'ChoiceLabel::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (ChoiceLabel::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this ChoiceLabel::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:ChoiceLabel::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (ChoiceLabel::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh ChoiceLabel::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'ChoiceLabel::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return ChoiceLabel::validateDe($this->de)
        || ChoiceLabel::validateEn($this->en)
        || ChoiceLabel::validateEs($this->es)
        || ChoiceLabel::validateFr($this->fr)
        || ChoiceLabel::validateJa($this->ja)
        || ChoiceLabel::validateKo($this->ko)
        || ChoiceLabel::validateRu($this->ru)
        || ChoiceLabel::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return ChoiceLabel
     * @throws Exception
     */
    public static function from(stdClass $obj): ChoiceLabel {
        return new ChoiceLabel(
         ChoiceLabel::fromDe($obj->{'de'})
        ,ChoiceLabel::fromEn($obj->{'en'})
        ,ChoiceLabel::fromEs($obj->{'es'})
        ,ChoiceLabel::fromFr($obj->{'fr'})
        ,ChoiceLabel::fromJa($obj->{'ja'})
        ,ChoiceLabel::fromKo($obj->{'ko'})
        ,ChoiceLabel::fromRu($obj->{'ru'})
        ,ChoiceLabel::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return ChoiceLabel
     */
    public static function sample(): ChoiceLabel {
        return new ChoiceLabel(
         ChoiceLabel::sampleDe()
        ,ChoiceLabel::sampleEn()
        ,ChoiceLabel::sampleEs()
        ,ChoiceLabel::sampleFr()
        ,ChoiceLabel::sampleJa()
        ,ChoiceLabel::sampleKo()
        ,ChoiceLabel::sampleRu()
        ,ChoiceLabel::sampleZh()
        );
    }
}

// This is a autogenerated file:BooleanDescription

class BooleanDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (BooleanDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (BooleanDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe BooleanDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'BooleanDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (BooleanDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (BooleanDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn BooleanDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'BooleanDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (BooleanDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (BooleanDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs BooleanDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'BooleanDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (BooleanDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (BooleanDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr BooleanDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'BooleanDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (BooleanDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (BooleanDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa BooleanDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'BooleanDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (BooleanDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (BooleanDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo BooleanDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'BooleanDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (BooleanDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (BooleanDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu BooleanDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'BooleanDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (BooleanDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this BooleanDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:BooleanDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (BooleanDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh BooleanDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'BooleanDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return BooleanDescription::validateDe($this->de)
        || BooleanDescription::validateEn($this->en)
        || BooleanDescription::validateEs($this->es)
        || BooleanDescription::validateFr($this->fr)
        || BooleanDescription::validateJa($this->ja)
        || BooleanDescription::validateKo($this->ko)
        || BooleanDescription::validateRu($this->ru)
        || BooleanDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return BooleanDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): BooleanDescription {
        return new BooleanDescription(
         BooleanDescription::fromDe($obj->{'de'})
        ,BooleanDescription::fromEn($obj->{'en'})
        ,BooleanDescription::fromEs($obj->{'es'})
        ,BooleanDescription::fromFr($obj->{'fr'})
        ,BooleanDescription::fromJa($obj->{'ja'})
        ,BooleanDescription::fromKo($obj->{'ko'})
        ,BooleanDescription::fromRu($obj->{'ru'})
        ,BooleanDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return BooleanDescription
     */
    public static function sample(): BooleanDescription {
        return new BooleanDescription(
         BooleanDescription::sampleDe()
        ,BooleanDescription::sampleEn()
        ,BooleanDescription::sampleEs()
        ,BooleanDescription::sampleFr()
        ,BooleanDescription::sampleJa()
        ,BooleanDescription::sampleKo()
        ,BooleanDescription::sampleRu()
        ,BooleanDescription::sampleZh()
        );
    }
}

// This is a autogenerated file:BooleanIconId

class BooleanIconId {
    public static BooleanIconId $PERSON;
    public static function init() {
        BooleanIconId::$PERSON = new BooleanIconId('person');
    }
    private string $enum;
    public function __construct(string $enum) {
        $this->enum = $enum;
    }

    /**
     * @param BooleanIconId
     * @return string
     * @throws Exception
     */
    public static function to(BooleanIconId $obj): string {
        switch ($obj->enum) {
            case BooleanIconId::$PERSON->enum: return 'person';
        }
        throw new Exception('the give value is not an enum-value.');
    }

    /**
     * @param mixed
     * @return BooleanIconId
     * @throws Exception
     */
    public static function from($obj): BooleanIconId {
        switch ($obj) {
            case 'person': return BooleanIconId::$PERSON;
        }
        throw new Exception("Cannot deserialize BooleanIconId");
    }

    /**
     * @return BooleanIconId
     */
    public static function sample(): BooleanIconId {
        return BooleanIconId::$PERSON;
    }
}
BooleanIconId::init();

// This is a autogenerated file:OptionFalse

class OptionFalse {
    private OptionFalseDescription $description; // json:description Required
    private OptionFalseTitle $title; // json:title Required

    /**
     * @param OptionFalseDescription $description
     * @param OptionFalseTitle $title
     */
    public function __construct(OptionFalseDescription $description, OptionFalseTitle $title) {
        $this->description = $description;
        $this->title = $title;
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return OptionFalseDescription
     */
    public static function fromDescription(stdClass $value): OptionFalseDescription {
        return OptionFalseDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (OptionFalse::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this OptionFalse::description');
    }

    /**
     * @param OptionFalseDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(OptionFalseDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return OptionFalseDescription
     */
    public function getDescription(): OptionFalseDescription {
        if (OptionFalse::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription OptionFalse::description');
    }

    /**
     * @return OptionFalseDescription
     */
    public static function sampleDescription(): OptionFalseDescription {
        return OptionFalseDescription::sample(); /*31:description*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return OptionFalseTitle
     */
    public static function fromTitle(stdClass $value): OptionFalseTitle {
        return OptionFalseTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (OptionFalse::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this OptionFalse::title');
    }

    /**
     * @param OptionFalseTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(OptionFalseTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return OptionFalseTitle
     */
    public function getTitle(): OptionFalseTitle {
        if (OptionFalse::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle OptionFalse::title');
    }

    /**
     * @return OptionFalseTitle
     */
    public static function sampleTitle(): OptionFalseTitle {
        return OptionFalseTitle::sample(); /*32:title*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return OptionFalse::validateDescription($this->description)
        || OptionFalse::validateTitle($this->title);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'description'} = $this->toDescription();
        $out->{'title'} = $this->toTitle();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return OptionFalse
     * @throws Exception
     */
    public static function from(stdClass $obj): OptionFalse {
        return new OptionFalse(
         OptionFalse::fromDescription($obj->{'description'})
        ,OptionFalse::fromTitle($obj->{'title'})
        );
    }

    /**
     * @return OptionFalse
     */
    public static function sample(): OptionFalse {
        return new OptionFalse(
         OptionFalse::sampleDescription()
        ,OptionFalse::sampleTitle()
        );
    }
}

// This is a autogenerated file:OptionFalseDescription

class OptionFalseDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (OptionFalseDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (OptionFalseDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe OptionFalseDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'OptionFalseDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (OptionFalseDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (OptionFalseDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn OptionFalseDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'OptionFalseDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (OptionFalseDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (OptionFalseDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs OptionFalseDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'OptionFalseDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (OptionFalseDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (OptionFalseDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr OptionFalseDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'OptionFalseDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (OptionFalseDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (OptionFalseDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa OptionFalseDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'OptionFalseDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (OptionFalseDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (OptionFalseDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo OptionFalseDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'OptionFalseDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (OptionFalseDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (OptionFalseDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu OptionFalseDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'OptionFalseDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (OptionFalseDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this OptionFalseDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (OptionFalseDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh OptionFalseDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'OptionFalseDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return OptionFalseDescription::validateDe($this->de)
        || OptionFalseDescription::validateEn($this->en)
        || OptionFalseDescription::validateEs($this->es)
        || OptionFalseDescription::validateFr($this->fr)
        || OptionFalseDescription::validateJa($this->ja)
        || OptionFalseDescription::validateKo($this->ko)
        || OptionFalseDescription::validateRu($this->ru)
        || OptionFalseDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return OptionFalseDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): OptionFalseDescription {
        return new OptionFalseDescription(
         OptionFalseDescription::fromDe($obj->{'de'})
        ,OptionFalseDescription::fromEn($obj->{'en'})
        ,OptionFalseDescription::fromEs($obj->{'es'})
        ,OptionFalseDescription::fromFr($obj->{'fr'})
        ,OptionFalseDescription::fromJa($obj->{'ja'})
        ,OptionFalseDescription::fromKo($obj->{'ko'})
        ,OptionFalseDescription::fromRu($obj->{'ru'})
        ,OptionFalseDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return OptionFalseDescription
     */
    public static function sample(): OptionFalseDescription {
        return new OptionFalseDescription(
         OptionFalseDescription::sampleDe()
        ,OptionFalseDescription::sampleEn()
        ,OptionFalseDescription::sampleEs()
        ,OptionFalseDescription::sampleFr()
        ,OptionFalseDescription::sampleJa()
        ,OptionFalseDescription::sampleKo()
        ,OptionFalseDescription::sampleRu()
        ,OptionFalseDescription::sampleZh()
        );
    }
}

// This is a autogenerated file:OptionFalseTitle

class OptionFalseTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (OptionFalseTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (OptionFalseTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe OptionFalseTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'OptionFalseTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (OptionFalseTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (OptionFalseTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn OptionFalseTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'OptionFalseTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (OptionFalseTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (OptionFalseTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs OptionFalseTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'OptionFalseTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (OptionFalseTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (OptionFalseTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr OptionFalseTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'OptionFalseTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (OptionFalseTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (OptionFalseTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa OptionFalseTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'OptionFalseTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (OptionFalseTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (OptionFalseTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo OptionFalseTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'OptionFalseTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (OptionFalseTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (OptionFalseTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu OptionFalseTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'OptionFalseTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (OptionFalseTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this OptionFalseTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionFalseTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (OptionFalseTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh OptionFalseTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'OptionFalseTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return OptionFalseTitle::validateDe($this->de)
        || OptionFalseTitle::validateEn($this->en)
        || OptionFalseTitle::validateEs($this->es)
        || OptionFalseTitle::validateFr($this->fr)
        || OptionFalseTitle::validateJa($this->ja)
        || OptionFalseTitle::validateKo($this->ko)
        || OptionFalseTitle::validateRu($this->ru)
        || OptionFalseTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return OptionFalseTitle
     * @throws Exception
     */
    public static function from(stdClass $obj): OptionFalseTitle {
        return new OptionFalseTitle(
         OptionFalseTitle::fromDe($obj->{'de'})
        ,OptionFalseTitle::fromEn($obj->{'en'})
        ,OptionFalseTitle::fromEs($obj->{'es'})
        ,OptionFalseTitle::fromFr($obj->{'fr'})
        ,OptionFalseTitle::fromJa($obj->{'ja'})
        ,OptionFalseTitle::fromKo($obj->{'ko'})
        ,OptionFalseTitle::fromRu($obj->{'ru'})
        ,OptionFalseTitle::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return OptionFalseTitle
     */
    public static function sample(): OptionFalseTitle {
        return new OptionFalseTitle(
         OptionFalseTitle::sampleDe()
        ,OptionFalseTitle::sampleEn()
        ,OptionFalseTitle::sampleEs()
        ,OptionFalseTitle::sampleFr()
        ,OptionFalseTitle::sampleJa()
        ,OptionFalseTitle::sampleKo()
        ,OptionFalseTitle::sampleRu()
        ,OptionFalseTitle::sampleZh()
        );
    }
}

// This is a autogenerated file:OptionTrue

class OptionTrue {
    private OptionTrueDescription $description; // json:description Required
    private OptionTrueTitle $title; // json:title Required

    /**
     * @param OptionTrueDescription $description
     * @param OptionTrueTitle $title
     */
    public function __construct(OptionTrueDescription $description, OptionTrueTitle $title) {
        $this->description = $description;
        $this->title = $title;
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return OptionTrueDescription
     */
    public static function fromDescription(stdClass $value): OptionTrueDescription {
        return OptionTrueDescription::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toDescription(): stdClass {
        if (OptionTrue::validateDescription($this->description))  {
            return $this->description->to(); /*class*/
        }
        throw new Exception('never get to this OptionTrue::description');
    }

    /**
     * @param OptionTrueDescription
     * @return bool
     * @throws Exception
     */
    public static function validateDescription(OptionTrueDescription $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return OptionTrueDescription
     */
    public function getDescription(): OptionTrueDescription {
        if (OptionTrue::validateDescription($this->description))  {
            return $this->description;
        }
        throw new Exception('never get to getDescription OptionTrue::description');
    }

    /**
     * @return OptionTrueDescription
     */
    public static function sampleDescription(): OptionTrueDescription {
        return OptionTrueDescription::sample(); /*31:description*/
    }

    /**
     * @param stdClass $value
     * @throws Exception
     * @return OptionTrueTitle
     */
    public static function fromTitle(stdClass $value): OptionTrueTitle {
        return OptionTrueTitle::from($value); /*class*/
    }

    /**
     * @throws Exception
     * @return stdClass
     */
    public function toTitle(): stdClass {
        if (OptionTrue::validateTitle($this->title))  {
            return $this->title->to(); /*class*/
        }
        throw new Exception('never get to this OptionTrue::title');
    }

    /**
     * @param OptionTrueTitle
     * @return bool
     * @throws Exception
     */
    public static function validateTitle(OptionTrueTitle $value): bool {
        $value->validate();
        return true;
    }

    /**
     * @throws Exception
     * @return OptionTrueTitle
     */
    public function getTitle(): OptionTrueTitle {
        if (OptionTrue::validateTitle($this->title))  {
            return $this->title;
        }
        throw new Exception('never get to getTitle OptionTrue::title');
    }

    /**
     * @return OptionTrueTitle
     */
    public static function sampleTitle(): OptionTrueTitle {
        return OptionTrueTitle::sample(); /*32:title*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return OptionTrue::validateDescription($this->description)
        || OptionTrue::validateTitle($this->title);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'description'} = $this->toDescription();
        $out->{'title'} = $this->toTitle();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return OptionTrue
     * @throws Exception
     */
    public static function from(stdClass $obj): OptionTrue {
        return new OptionTrue(
         OptionTrue::fromDescription($obj->{'description'})
        ,OptionTrue::fromTitle($obj->{'title'})
        );
    }

    /**
     * @return OptionTrue
     */
    public static function sample(): OptionTrue {
        return new OptionTrue(
         OptionTrue::sampleDescription()
        ,OptionTrue::sampleTitle()
        );
    }
}

// This is a autogenerated file:OptionTrueDescription

class OptionTrueDescription {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (OptionTrueDescription::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (OptionTrueDescription::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe OptionTrueDescription::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'OptionTrueDescription::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (OptionTrueDescription::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (OptionTrueDescription::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn OptionTrueDescription::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'OptionTrueDescription::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (OptionTrueDescription::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (OptionTrueDescription::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs OptionTrueDescription::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'OptionTrueDescription::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (OptionTrueDescription::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (OptionTrueDescription::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr OptionTrueDescription::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'OptionTrueDescription::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (OptionTrueDescription::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (OptionTrueDescription::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa OptionTrueDescription::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'OptionTrueDescription::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (OptionTrueDescription::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (OptionTrueDescription::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo OptionTrueDescription::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'OptionTrueDescription::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (OptionTrueDescription::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (OptionTrueDescription::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu OptionTrueDescription::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'OptionTrueDescription::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (OptionTrueDescription::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this OptionTrueDescription::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueDescription::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (OptionTrueDescription::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh OptionTrueDescription::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'OptionTrueDescription::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return OptionTrueDescription::validateDe($this->de)
        || OptionTrueDescription::validateEn($this->en)
        || OptionTrueDescription::validateEs($this->es)
        || OptionTrueDescription::validateFr($this->fr)
        || OptionTrueDescription::validateJa($this->ja)
        || OptionTrueDescription::validateKo($this->ko)
        || OptionTrueDescription::validateRu($this->ru)
        || OptionTrueDescription::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this->toDe();
        $out->{'en'} = $this->toEn();
        $out->{'es'} = $this->toEs();
        $out->{'fr'} = $this->toFr();
        $out->{'ja'} = $this->toJa();
        $out->{'ko'} = $this->toKo();
        $out->{'ru'} = $this->toRu();
        $out->{'zh'} = $this->toZh();
        return $out;
    }

    /**
     * @param stdClass $obj
     * @return OptionTrueDescription
     * @throws Exception
     */
    public static function from(stdClass $obj): OptionTrueDescription {
        return new OptionTrueDescription(
         OptionTrueDescription::fromDe($obj->{'de'})
        ,OptionTrueDescription::fromEn($obj->{'en'})
        ,OptionTrueDescription::fromEs($obj->{'es'})
        ,OptionTrueDescription::fromFr($obj->{'fr'})
        ,OptionTrueDescription::fromJa($obj->{'ja'})
        ,OptionTrueDescription::fromKo($obj->{'ko'})
        ,OptionTrueDescription::fromRu($obj->{'ru'})
        ,OptionTrueDescription::fromZh($obj->{'zh'})
        );
    }

    /**
     * @return OptionTrueDescription
     */
    public static function sample(): OptionTrueDescription {
        return new OptionTrueDescription(
         OptionTrueDescription::sampleDe()
        ,OptionTrueDescription::sampleEn()
        ,OptionTrueDescription::sampleEs()
        ,OptionTrueDescription::sampleFr()
        ,OptionTrueDescription::sampleJa()
        ,OptionTrueDescription::sampleKo()
        ,OptionTrueDescription::sampleRu()
        ,OptionTrueDescription::sampleZh()
        );
    }
}

// This is a autogenerated file:OptionTrueTitle

class OptionTrueTitle {
    private string $de; // json:de Required
    private string $en; // json:en Required
    private string $es; // json:es Required
    private string $fr; // json:fr Required
    private string $ja; // json:ja Required
    private string $ko; // json:ko Required
    private string $ru; // json:ru Required
    private string $zh; // json:zh Required

    /**
     * @param string $de
     * @param string $en
     * @param string $es
     * @param string $fr
     * @param string $ja
     * @param string $ko
     * @param string $ru
     * @param string $zh
     */
    public function __construct(string $de, string $en, string $es, string $fr, string $ja, string $ko, string $ru, string $zh) {
        $this->de = $de;
        $this->en = $en;
        $this->es = $es;
        $this->fr = $fr;
        $this->ja = $ja;
        $this->ko = $ko;
        $this->ru = $ru;
        $this->zh = $zh;
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromDe(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toDe(): string {
        if (OptionTrueTitle::validateDe($this->de))  {
            return $this->de; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::de');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateDe(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::de");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getDe(): string {
        if (OptionTrueTitle::validateDe($this->de))  {
            return $this->de;
        }
        throw new Exception('never get to getDe OptionTrueTitle::de');
    }

    /**
     * @return string
     */
    public static function sampleDe(): string {
        return 'OptionTrueTitle::de::31'; /*31:de*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEn(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEn(): string {
        if (OptionTrueTitle::validateEn($this->en))  {
            return $this->en; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::en');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEn(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::en");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEn(): string {
        if (OptionTrueTitle::validateEn($this->en))  {
            return $this->en;
        }
        throw new Exception('never get to getEn OptionTrueTitle::en');
    }

    /**
     * @return string
     */
    public static function sampleEn(): string {
        return 'OptionTrueTitle::en::32'; /*32:en*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromEs(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toEs(): string {
        if (OptionTrueTitle::validateEs($this->es))  {
            return $this->es; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::es');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateEs(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::es");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getEs(): string {
        if (OptionTrueTitle::validateEs($this->es))  {
            return $this->es;
        }
        throw new Exception('never get to getEs OptionTrueTitle::es');
    }

    /**
     * @return string
     */
    public static function sampleEs(): string {
        return 'OptionTrueTitle::es::33'; /*33:es*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromFr(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toFr(): string {
        if (OptionTrueTitle::validateFr($this->fr))  {
            return $this->fr; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::fr');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateFr(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::fr");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getFr(): string {
        if (OptionTrueTitle::validateFr($this->fr))  {
            return $this->fr;
        }
        throw new Exception('never get to getFr OptionTrueTitle::fr');
    }

    /**
     * @return string
     */
    public static function sampleFr(): string {
        return 'OptionTrueTitle::fr::34'; /*34:fr*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromJa(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toJa(): string {
        if (OptionTrueTitle::validateJa($this->ja))  {
            return $this->ja; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::ja');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateJa(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::ja");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getJa(): string {
        if (OptionTrueTitle::validateJa($this->ja))  {
            return $this->ja;
        }
        throw new Exception('never get to getJa OptionTrueTitle::ja');
    }

    /**
     * @return string
     */
    public static function sampleJa(): string {
        return 'OptionTrueTitle::ja::35'; /*35:ja*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromKo(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toKo(): string {
        if (OptionTrueTitle::validateKo($this->ko))  {
            return $this->ko; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::ko');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateKo(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::ko");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getKo(): string {
        if (OptionTrueTitle::validateKo($this->ko))  {
            return $this->ko;
        }
        throw new Exception('never get to getKo OptionTrueTitle::ko');
    }

    /**
     * @return string
     */
    public static function sampleKo(): string {
        return 'OptionTrueTitle::ko::36'; /*36:ko*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromRu(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toRu(): string {
        if (OptionTrueTitle::validateRu($this->ru))  {
            return $this->ru; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::ru');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateRu(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::ru");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getRu(): string {
        if (OptionTrueTitle::validateRu($this->ru))  {
            return $this->ru;
        }
        throw new Exception('never get to getRu OptionTrueTitle::ru');
    }

    /**
     * @return string
     */
    public static function sampleRu(): string {
        return 'OptionTrueTitle::ru::37'; /*37:ru*/
    }

    /**
     * @param string $value
     * @throws Exception
     * @return string
     */
    public static function fromZh(string $value): string {
        return $value; /*string*/
    }

    /**
     * @throws Exception
     * @return string
     */
    public function toZh(): string {
        if (OptionTrueTitle::validateZh($this->zh))  {
            return $this->zh; /*string*/
        }
        throw new Exception('never get to this OptionTrueTitle::zh');
    }

    /**
     * @param string
     * @return bool
     * @throws Exception
     */
    public static function validateZh(string $value): bool {
        if (!is_string($value)) {
            throw new Exception("Attribute Error:OptionTrueTitle::zh");
        }
        return true;
    }

    /**
     * @throws Exception
     * @return string
     */
    public function getZh(): string {
        if (OptionTrueTitle::validateZh($this->zh))  {
            return $this->zh;
        }
        throw new Exception('never get to getZh OptionTrueTitle::zh');
    }

    /**
     * @return string
     */
    public static function sampleZh(): string {
        return 'OptionTrueTitle::zh::38'; /*38:zh*/
    }

    /**
     * @throws Exception
     * @return bool
     */
    public function validate(): bool {
        return OptionTrueTitle::validateDe($this->de)
        || OptionTrueTitle::validateEn($this->en)
        || OptionTrueTitle::validateEs($this->es)
        || OptionTrueTitle::validateFr($this->fr)
        || OptionTrueTitle::validateJa($this->ja)
        || OptionTrueTitle::validateKo($this->ko)
        || OptionTrueTitle::validateRu($this->ru)
        || OptionTrueTitle::validateZh($this->zh);
    }

    /**
     * @return stdClass
     * @throws Exception
     */
    public function to(): stdClass  {
        $out = new stdClass();
        $out->{'de'} = $this<