Fix facs

I made all report elements in the default zero rule explicit. 

The reason for this is that if you start to modify the report (e.g. in a demo) and add a new concept (which is instant) then it will always be overwritten by the default zero rule with a zero. Even if you attach a different formula to it (e.g. "5 * NoncurrentAssets").

This is the complete rule:

```
import module namespace r = \"http://zorba.io/modules/random\";

let $concepts-in-report := (\"fac:Assets\", \"fac:AssetsValidation\", \"fac:AssetsValidation2\", \"fac:BalanceSheetDate\", \"fac:BalanceSheetFormat\", \"fac:BalanceSheetHierarchy\", \"fac:CashFlowStatementHierarchy\", \"fac:CommitmentsAndContingencies\", \"fac:ComprehensiveIncomeLoss\", \"fac:ComprehensiveIncomeLossAttributableToNoncontrollingInterest\", \"fac:ComprehensiveIncomeLossAttributableToParent\", \"fac:ComprehensiveIncomeLossValidation\", \"fac:ComprehensiveIncomeLossValidation2\", \"fac:CostOfRevenue\", \"fac:CostsAndExpenses\", \"fac:CurrentAssets\", \"fac:CurrentLiabilities\", \"fac:DocumentType\", \"fac:EntityCentralIndexKey\", \"fac:EntityFilerCategory\", \"fac:EntityRegistrantName\", \"fac:Equity\", \"fac:EquityAttributableToNoncontrollingInterest\", \"fac:EquityAttributableToParent\", \"fac:EquityValidation\", \"fac:ExchangeGainsLosses\", \"fac:ExtraordinaryItemsOfIncomeExpenseNetOfTax\", \"fac:FailedValidations\", \"fac:FiscalPeriod\", \"fac:FiscalYear\", \"fac:FiscalYearEnd\", \"fac:FundamentalAccountingConceptsHierarchy\", \"fac:FundamentalAccountingConceptsLineItems\", \"fac:GeneralInformationHierarchy\", \"fac:GrossProfit\", \"fac:GrossProfitValidation\", \"fac:IncomeLossBeforeEquityMethodInvestments\", \"fac:IncomeLossBeforeEquityMethodInvestmentsValidation\", \"fac:IncomeLossFromContinuingOperationsAfterTax\", \"fac:IncomeLossFromContinuingOperationsAfterTaxValidation\", \"fac:IncomeLossFromContinuingOperationsBeforeTax\", \"fac:IncomeLossFromContinuingOperationsBeforeTaxValidation\", \"fac:IncomeLossFromDiscontinuedOperationsNetOfTax\", \"fac:IncomeLossFromEquityMethodInvestments\", \"fac:IncomeStatementFormat\", \"fac:IncomeStatementHierarchy\", \"fac:IncomeStatementStartPeriodYearToDate\", \"fac:IncomeTaxExpenseBenefit\", \"fac:InterestAndDebtExpense\", \"fac:KeyRatiosHierarchy\", \"fac:Liabilities\", \"fac:LiabilitiesAndEquity\", \"fac:LiabilitiesAndEquityValidation\", \"fac:LiabilitiesValidation\", \"fac:NatureOfOperations\", \"fac:NetCashFlow\", \"fac:NetCashFlowContinuing\", \"fac:NetCashFlowContinuingValidation\", \"fac:NetCashFlowDiscontinued\", \"fac:NetCashFlowDiscontinuedValidation\", \"fac:NetCashFlowFromFinancingActivities\", \"fac:NetCashFlowFromFinancingActivitiesContinuing\", \"fac:NetCashFlowFromFinancingActivitiesDiscontinued\", \"fac:NetCashFlowFromFinancingActivitiesValidation\", \"fac:NetCashFlowFromInvestingActivities\", \"fac:NetCashFlowFromInvestingActivitiesContinuing\", \"fac:NetCashFlowFromInvestingActivitiesDiscontinued\", \"fac:NetCashFlowFromInvestingActivitiesValidation\", \"fac:NetCashFlowFromOperatingActivities\", \"fac:NetCashFlowFromOperatingActivitiesContinuing\", \"fac:NetCashFlowFromOperatingActivitiesDiscontinued\", \"fac:NetCashFlowFromOperatingActivitiesValidation\", \"fac:NetCashFlowValidation\", \"fac:NetIncomeLoss\", \"fac:NetIncomeLossAttributableToNoncontrollingInterest\", \"fac:NetIncomeLossAttributableToParent\", \"fac:NetIncomeLossAvailableToCommonStockholdersBasic\", \"fac:NetIncomeLossAvailableToCommonStockholdersBasicValidation\", \"fac:NetIncomeLossValidation\", \"fac:NetIncomeLossValidation2\", \"fac:NoncurrentAssets\", \"fac:NoncurrentLiabilities\", \"fac:NonoperatingIncomeLoss\", \"fac:NonoperatingIncomeLossPlusInterestAndDebtExpense\", \"fac:NonoperatingIncomePlusInterestAndDebtExpensePlusIncomeFromEquityMethodInvestments\", \"fac:NotApplicableValidations\", \"fac:OperatingExpenses\", \"fac:OperatingIncomeLoss\", \"fac:OperatingIncomeLossValidation\", \"fac:OperatingIncomeLossValidation2\", \"fac:OtherComprehensiveIncomeLoss\", \"fac:OtherOperatingIncomeExpenses\", \"fac:PassedValidations\", \"fac:PreferredStockDividendsAndOtherAdjustments\", \"fac:RedeemableNoncontrollingInterest\", \"fac:ResearchAndDevelopment\", \"fac:ReturnOnAssets\", \"fac:ReturnOnEquity\", \"fac:ReturnOnSales\", \"fac:Revenues\", \"fac:StatementComprehensiveIncomeHierarchy\", \"fac:SustainableGrowthRate\", \"fac:TemporaryEquity\", \"fac:TradingSymbol\", \"fac:ValidationStatistics\", \"fac:Validations\")
let $non-numeric-concepts := (\"fac:FiscalPeriod\", \"fac:EntityRegistrantName\", \"fac:EntityCentralIndexKey\", \"fac:EntityFilerCategory\",
                            \"fac:TradingSymbol\", \"fac:FiscalYearEnd\", \"fac:FiscalYear\", \"fac:FiscalPeriod\", \"fac:DocumentType\",
                            \"fac:BalanceSheetDate\", \"fac:IncomeStatementStartPeriodYearToDate\", \"fac:BalanceSheetFormat\",
                            \"fac:IncomeStatementFormat\", \"fac:NatureOfOperations\", \"fac:EquityValidation\",
                            \"fac:AssetsValidation2\", \"fac:LiabilitiesValidation\", \"fac:LiabilitiesAndEquityValidation\",
                            \"fac:GrossProfitValidation\", \"fac:OperatingIncomeLossValidation\",
                            \"fac:IncomeLossBeforeEquityMethodInvestmentsValidation\", \"fac:IncomeLossFromContinuingOperationsAfterTaxValidation\",
                            \"fac:NetIncomeLossValidation\", \"fac:NetIncomeLossAvailableToCommonStockholdersBasicValidation\",
                            \"fac:ComprehensiveIncomeLossValidation\", \"fac:ComprehensiveIncomeLossValidation2\",
                            \"fac:OperatingIncomeLossValidation2\", \"fac:NetCashFlowValidation\", \"fac:NetCashFlowContinuingValidation\",
                            \"fac:NetCashFlowDiscontinuedValidation\", \"fac:NetCashFlowFromOperatingActivitiesValidation\",
                            \"fac:NetCashFlowFromInvestingActivitiesValidation\", \"fac:IncomeLossFromContinuingOperationsBeforeTaxValidation\",
                            \"fac:NetCashFlowFromFinancingActivitiesValidation\", \"fac:NetIncomeLossValidation2\", \"fac:AssetsValidation\" )
let $abstract-concepts := (\"fac:ValidationStatistics\", \"fac:Validations\", \"xbrl:ConceptDomain\", \"fac:FundamentalAccountingConceptsLineItems\",
                           \"fac:FundamentalAccountingConceptsHierarchy\", \"fac:GeneralInformationHierarchy\", \"fac:BalanceSheetHierarchy\", 
\t\t\t\t\t\t   \"fac:IncomeStatementHierarchy\", \"fac:StatementComprehensiveIncomeHierarchy\", \"fac:CashFlowStatementHierarchy\", 
\t\t\t\t\t\t   \"fac:KeyRatiosHierarchy\")
let $numeric-concepts := $concepts[not($$ = $non-numeric-concepts) and not($$ = $abstract-concepts) and $$ = $concepts-in-report]
let $numeric-instant-concepts := (\"fac:CurrentAssets\", \"fac:NoncurrentAssets\", \"fac:Assets\", \"fac:CurrentLiabilities\",
                         \"fac:NoncurrentLiabilities\", \"fac:Liabilities\", \"fac:CommitmentsAndContingencies\", \"fac:TemporaryEquity\",
                         \"fac:RedeemableNoncontrollingInterest\", \"fac:EquityAttributableToParent\",
                         \"fac:EquityAttributableToNoncontrollingInterest\", \"fac:Equity\", \"fac:LiabilitiesAndEquity\", \"fac:CommonStockSharesAuthorized\", \"fac:CommonStockSharesIssued\", \"fac:CommonStockSharesOutstanding\")
let $numeric-duration-concepts := $numeric-concepts[not($$ = $numeric-instant-concepts)]
let $numeric-instant-concepts := $numeric-concepts[$$ = $numeric-instant-concepts]
let $concepts-not-in-report := $concepts[not $$ = $concepts-in-report]
return
for $facts in facts:facts-for-internal($concepts, $hypercube, $aligned-filter, $concept-maps, $rules, $cache, $options)
group by facts:canonical-grouping-key($facts, ($facts:CONCEPT, $facts:UNIT))
let $template-fact as object := ($facts[$$.$facts:ASPECTS.$facts:CONCEPT = $numeric-concepts], $facts)[1]
let $is-instant := not contains($template-fact.$facts:ASPECTS.$facts:PERIOD, \"/\")
return (
        $facts[$$.$facts:ASPECTS.$facts:CONCEPT = $concepts-not-in-report],
        $facts[$$.$facts:ASPECTS.$facts:CONCEPT = $non-numeric-concepts],
        
        (: default 0 :)
        let $concepts-with-relevant-period-type := if($is-instant) then $numeric-instant-concepts else $numeric-duration-concepts
        for $concept in $concepts-with-relevant-period-type
        let $fact as object? := $facts[$$.$facts:ASPECTS.$facts:CONCEPT eq $concept]
        return switch(true)
          (: fill empty cell with zero :)
          case empty($fact)
          return
            let $audit-trail := {
              \"Type\" : \"xbrl28:default-fact-value\",
              \"Label\" : \"Default fact value\",
              \"Message\" : $concept || \" = 0\",
              \"Data\" : {
                \"OutputConcept\" : $concept
              }
            }
            return
            copy $f := $template-fact
            modify (
                replace value of json $f._id with r:uuid(),
                replace value of json $f.$facts:ASPECTS.$facts:CONCEPT with $concept,
                replace value of json $f.Value with 0,
                replace value of json $f.Type with \"NumericValue\",
                if(exists($f.Decimals))
                then replace value of json $f.Decimals with 3
                else insert json { Decimals: 3 } into $f,
                if(exists($f.AuditTrails))
                then replace value of json $f.AuditTrails with [ $audit-trail ]
                else insert json { AuditTrails: [ $audit-trail ] } into $f
            )
            return $f

        (: replacing null with zero :)
        case $fact.Type eq \"NumericValue\" and $fact.Value eq null
        return
                let $concept := $fact.$facts:ASPECTS.$facts:CONCEPT
                let $audit-trail := {
                    Type: \"xbrl28:null-to-zero\",
                    Label: \"Adapting null value\",
                    Message: \"Replacing null value with 0.\",
                    Data:
                        { OutputConcept: $concept }
                }
                return
                    copy $f := $fact
                    modify (
                        replace value of json $f.Value with 0,
                        if(exists($f.AuditTrails))
                        then append json $audit-trail into $f.AuditTrails
                        else insert json { AuditTrails: [ $audit-trail ] } into $f
                    )
                    return $f

        default return $fact
    )
```