aAaAAaaAaAaaaAAaAaAAAAaaaaaAAaAaaaAaaAaaAAAaaaaAaaAAAaAaaAAaAAaaAaAAaaAAAaaAAAAAaaAaaaAAAAAAAaaaAAAaAAaaaaaAaaAAaAAaaAAA = "VCgxjiUQmAcHQNXvcZpzlgjgAKjRPApMQcLLMXccIsvQDuofisKbJPltMqbhiMsyZYXhwidbYnhrdIf"
lIllIIlIlIllIllllllIlllIIIllllIlIlIllllIIlIlllIllIlIIllIIlllllllIIllllIIIlIIlIIIIlIIllllllllllIIIlIIlIIIIIlIlIlIlllllI = 245
qBPJUTxGCBPxoIdGQuKKDYElccwCfxdOhXsArkQTCQrxTqnlKWLoAfFXcLLxBdQhnKZPWCOVUxKEHSk116 = 389
C114 = "aGtwHdLRtzNvjMzqoGRvRyynVsWQjGLhunJiWMCmuKPdKMmCdHCCCLbcBLoheUHTcwlIWQoGotJxXmK"
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF = "nnkysZqNbqOgkKyvCPJaceVBMFuRTDjjckXPEhxbgXvcClnudgVFHqmYhZwsfrsIAkefqDBQWFgmHfd"
IlIlIlllIIlIlIIIIllIIllIIllIlllIIIIllIIllIIlIIlIllIIIIIIllIlIlIlIIlllIIIlIlIIlIlIIIlIIIlIIllIllIIIIIIlllIllIII = "HquqbntMNKuhXonOLBnJwNRORUIbjQIEyFDzfosLoSQPqEnMLJsrLvjfkmpZnINCptGItxznbqygfUC"
l16551955124787965108 = "MgwtaIRZKzQsPQppSGfLGKEVcviqAivPviWcaFHklPKYHxFGpkxRWiSLwyWdqZbSzzqOcfbImsejDKz"
D106 = 247
s16551955124787965104 = "gvIYZpMgrkfrsfuJgePeNuYYSGcbwtFcoWpnHgbrKiWLyKdwdrcrypijdTSbWEYihKhdxqtUvsLEdeX"
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu = "zTfSWgwqBVtfNQVpWcHCYxUPJEzMkvcCqcPKuyyCRlopUKNfdagkrTtNCMwRLfCCbZdJpgJuFGSsOCZ"
AAAAAAAAAAaAAAaaaAaAAAaAaAAAAAaAAAaAaAaaAaaaAAAAAaAAaaAAAaAaaaaAAaaaaAAAAAAAAaaaAAAaAAAaAaaaAAaaAaAa = "iIWvdWSYRTcrAnNZNWoYSTrWucONYtbPTkUAgmcYFhZTZHvDUtXHJNfEyAwwwHfXXbrmbaafQILpvup"
VZZROsloEoOpTCLWSrROPAfzUlPpPgcHWtBCGMATpVcQpaDpjtWlPwNWupcUnffijZdRdfHBpNpoapK98 = "pQeCjppAQGurJOxWCcqDBBMyEZnkjMFiQlWWKQEdlNFJrJeGWXkzlreOhMPhOyxAmbYyZDKvAlYboqp"
cnTLvBTINgglYJbSUPzyXaFyPghcJkCscsAPcpdGNcWxEgqoeBgSvNxsZDZZYDzySowzteKzHitckEp96 = 421
y1655195512476817694 = "KvnhcuEFNLMGbNXrVaPPXsnDUpoMPFkCxQmvKUYGLetJrDUZtTShkUgyIQtBWHzXyYQCEbatDoFEMij"
r1655195512476817692 = 687
j90 = "foxIvnNrXYqxVVUVMIwlHiqgcJjZAeEXUhaERHSLbTsBjoftUMMPFVimgAbGQEsylITRznNGWNjJrVf"
IlllIlllIIllIlIllIlIIIIllIIlIIllIIIIIIIllIIIlIlllllllIIIIIlIIIlllllIIlIIIlIllllIlIlIllII = "RPmmjGcaVpjfNSMTMwJmbKLqQtNrlvJpabPyhDQZzEllKLOSPYdMzPmNefDDrMtjZXJODIhDWSNZoyB"
IlIIllIIllIIlIllIIIIIIIlIllllIlIIIIllllIIIlllIlIIlIIlllIllIllIIlIllIIIlllIIllllIlIllII = "XQKHRmDKCbSGOQovAHjNWbzhAiBGHVndndbxDEnEFnpzdxYHAbfGshFnCAoZxewQqdxaVzPzjcAcXnu"
I84 = "TIhtdaFlQnvzcgbAaaRuPwNTeMwlAJifWLeAcoUMMXHsvtLdmEKyDquQlPzMiMlQtHyYewwdsJnknVT"
EtSdwcXoQIiUnhQQqlUnUlNSukeuqmZDMpfVFAwSGFygALqJNBlHpWGlCqMtqeVHcVgivrGmpWmXobV82 = "XwOqnfQNuvhbhcUfOWDOcuJSigSMECiJJGEbkcQYGyfvQOfOsSFRicdESAqNAySSjaupIhPSwncPwmp"
aaaAAAAAaaAAaAaAAaAaAAAAAaaaAaAAaaaaaaAaaAaAaAAAAAaAAAaAaAAaAAaaaAaaAaAAaAaaAAAa = "VaVKLOMIjLYbBWLkdvOERCNtOWaYWEEtlIFTRohUNmuTBxqbJOIZXiAKktdKaPaxREwtOyxphvjezdB"
A78 = 481
lIIlIllIIllIIlIIIIlIIllllllIIIlIIlIIlIIIIlIIlIllIlIIIIIlIIlIllllIIllIlIlllll = "adTtZzhRHCyKYqkQkNVaiwgUEBbfkOuYExGXtghXbeMMzLuNpsfKHxzjYBlSZlgqCftdFQDvvURiSld"
lKmyHJmTjYkRywDdNydSXYfqAMifcLSRZCvIPFaKdEMHCsgOkamBoXnPYIdcPKqrWANeblHHUllffNQ74 = "jZmGEQZjCqqbcIQcnOrzLozJzysIijMtpJCSoXOlUXJTkhmhJCdSYdDjVjObGlkWDxKKfYGMCiRnrgm"
V1655195512474817872 = "jvjDYmuajBfEVLdwryGjwfzLRaCheXpYdTaPuELBdMArTZKpfJZQaPovIZXyHpoJuasfKcCKdnYdBdZ"
AaAAAaaAaAaAAaaaaaAaAaAaaAAAaaaAAaAAaaaaaaAAaAAaAAaaAaaaAAAaAaaaAAaAAA = "nDTjyeIgTpYBFYkKNcfboIHtnLSJKSqnUTHWkLJBHTTJMjBICbGdDZnKSvBnHfmgOSnUhmEvrqPmtmK"
xefgcJIVjJOBqDsbXzOwVTYKawWYHluQFZTddauyRVtiwOriQAPhdftfFhmcsqTrvOryizpZPVubXjm68 = "GrZmJtFZQjUAZWQWYFlQpdkIQnvuuCiGqueiNORrTxsQbcReBKaSLBcLFiUfUAMEWUBdLbTXAaNqHLO"
lIIIllIllIlIlIlIlIlIlIIIIIIllllIIIlIIIIllIllIIIlIIlIllIlIIIllllIlI = "lqUkBedlxClAwOaLrdaFyZKnjNvNITkPIABKETmzITcJGKoFOhnFChWSERjkfSNZDVkWtNnrBYMmWFV"
v64 = 379
cjdfmFPRhukhOXelVlTogReOerxZxNZkrnGpZArMCeOLqkskVCRrbZKhWlckLXRNXSdlwLstZxUIyod62 = "YCTLMaXemCuTqUrXiFDbxQPbYuEIfFjyffKicZBqdjBYgAZpcXEaOwAbOoyuevbsVbiHjusNnxpPWyF"
i60 = 362
GKTzcgRVYVeyzbAyRaapxPxfXhoifoUNPtStUYeeMGsNxtsibhAYQUNFZpSwVwnOVcksHDIoYlLYSJV58 = "rZxURUFgBYOYSovEymUjZhDfAsmSODvUcTgAzZInlpcAYEQAiTQMdCqDmKUrDTGlHvaQvDTNChukKbc"
dddddddddddddddddddddddddddddddddddddddddddddddddddddddd = "DjIcRJpSUxNickxyndYQsdlSdUWIgsHxxZOnpQVdFIiVMyFrfDsGQzNMPUXfMnyMrZNDFLeWrxhvKmd"
YyYntUESRFlXZkKdoceTCJHTTqjccqvzsArkkmjPSFDqKdxSTkXNWhnJMXCXIGxhofVJkwsAVmTFhfj54 = "rIkNHJSrpGgZayazFfmIoinLgUuHfFrguhuZIGQeQEEzRnLjiPEZtJqTMJdQlmVIpiCGDqXSoYsgIcu"
aAaAAaaaaAAAAaAaaAaaaaaAAAaaAAaaAAAaAaAAaAAAaAaaAaaa = "HaTAPtdMALsqvswugIpdGAyRDINrIipcDCjHKxvqlatEUPkzKHCEoSjhCiHuqYrUqaUAuDQQYWloReO"
IIlIllIIllIlIIlIlllllIIIllIlIIIlIlIIllllIlllIIIllI = 145
v1655195512472818948 = 199
dSIgnnLlYvWqlvBKgGNasrZuYPoddXfhoRORoMqLTsAcyTaUGuclpohdaiAFgbBjkbHzabLYeQbnwuy46 = "XVoPiHvwXSIwYAjOrzBpOIVsBDbkHgMspVXEWzhmCZcHZStpNDItoZIYtYDTPMDefLierufvIxcZHvz"
AAaaAaAaaaAAaaaAaaaAaAaAAaaAAAaaAAAAaaaAaAaA = 640
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk = 279
HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH = "flPNxwNiWTbOQjRahgkKUobFBtQsilydZNGXSpnhWfEEyBAWTQQuLckUMmlqadhzvjUGvkOJxKDMjeW"
h165519551247181938 = 389
a36 = "cgtDwCZemClHcFhWMwACwoWsOddTCoGPDBdfYxaCNEjqdtUgGMRVwhHqQcGWrYqQBjCcwTIyRPsWURz"
UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU = "KutaGlIbxmegsLYuyYsaheEAjfudzmYGOfmrPOYYkxrVBEXamFjzBLQdpPmVgCwudKyubKgNBtGpWEd"
MvQxwzBzMQljZkhpKTbpJDItxGYWadpxSnBpOtFyHAKjlkPeGCCPaeRkHvMcrXIEngFhYHmElNldgOX32 = "EPRKtbqkMgHBhAprKKOKCVtaxLKdpRuHGZpJAtnZmbmzKjHWpuHsuIEJmoexVkTkPRjnDQaJPoiGIwt"
AAaaaaAAAAaAaAAaaAaAaaaAaaAaAA = "jTwvrNaGCiRZqgYLrovoAhNIMrXvXkdOvmDiXPKvqBQXrlzEJEhSucsacnqHtzxKnDlNvtHlnHjBzpR"
llIlIlIIlllIlIlIIlIIIIIIIllI = "IuKZeSejgGCLGxroRNNTDxXWnIHjHakqDFpUAHRvfrEvYLqIwPYSQBAJicqRKdZLKFGUCopCukUxnGE"
iiiiiiiiiiiiiiiiiiiiiiiiii = 760
npTIlpgtPYPKyQsoPQLcLRYPyrkIcOIbgSBJxhrOqbrezaZUKEIJdGUWrOFQNpuYwFbuuYtkEQbtmBi24 = 846
Z165519551246981922 = 171
llIllIIlIIllIIlIIIll = 482
QQQQQQQQQQQQQQQQQQ = "dwagIkkVECCfzwarBuPRbseDoeALJDwiBrnhUAtPfFuSNnGYQgsRqJCqtWoYqSHUJNMDVqGnVpvwcLf"
AaaaAaAaAaaaAAaa = "SWShYSAZcspNWVFPCIXurEemwJvhXpGpbDcWseNxHHpBdmvCOegxvVuzrqqUhfWLNqoUebpQINkqHuL"
ayUeeTNqDbStliqIrjyXiWbnTIMExfuoCOiNnIdQrbRhYeuSAeByJEFduwMjPkeXqRuxGjIxTqxRVzP14 = "HDHwStnmFmEiFiEweCotEBXasTFymHMfGcWvDXNLiOiTfYtqtVeluIejSRrimwdAHbmhXxsMJPXJULU"
J165519551246981912 = 530
AaAaAaaAaa = "juJXlnfCldAcytTKSFWWCckiumipWByBOjfAHIFrnlWtJjkkUxNTkPUekySMYfRZxvHhqlQdLpDzRgT"
n8 = 760
IIllIl = "hgDHwbiZYugrxrsalWXFKqSGLrIASEYvdyMyPNWmHbhyOdUcKlSXArFoiesWCkRlSuIAEtuunuCRqIB"
A165519551246881724 = 224
G165519551246881722 = "JixvZGIcHMkHtmpxBhYDpXurJCEcSUYTAQoBLvlISPKAzciMmUfssedaVlQnVtsBKdBOrDntIJFtKLA"

from scipy import (
    sparse,
    signal,
    ndimage
)

import warnings
import numpy as np

from sklearn.preprocessing import StandardScaler as StandardNormalVariate
from sklearn.preprocessing import RobustScaler as RobustNormalVariate
from sklearn.preprocessing import FunctionTransformer as IdentityTransformer

from sklearn.preprocessing import lllIllllIllIlIIllllIIIIlllIllIlIlllIllIIIIlIIlllIlIlIIIIllIlIIlllIlIIllIlIlIIllIlIllllllIIllIIIlIIIlllIllIllIlIlIIIlIllIlllllIIIllIIIII, StandardScaler
from sklearn.base import TransformerMixin, BaseEstimator
from sklearn.utils import check_array
from sklearn.utils.validation import (
    check_is_fitted, 
    # check_random_state, 
    # _check_sample_weight, 
    FLOAT_DTYPES, 
)
import pywt
# import threading, queue

# #np.mean, np.std, np.median, np.percentile([lower, upper]), np.max(), np.min(), np.linalg.norm(), np.polyfit()

uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu = [
    "Baseline", 
    "StandardNormalVariate", ## SAME as STANDARDSCALER
    "RobustNormalVariate", ## SAME as ROBUSTSCALER
    "SavitzkyGolay",
    "Normalize",
    "Detrend",
    "MultiplicativeScatterCorrection",
    "Derivate",
    "Gaussian",
    "Wavelet",
    "SimpleScale",
    "baseline", 
    "savgol",
    "norml",
    "detrend",
    "msc",
    "emsc",
]


class Baseline(TransformerMixin, BaseEstimator):
    
    def __init__(self, *, lI = True):
        self.copy = lI

    def _reset(self):
        if hasattr(self, "b1655195511056795811"):
            del self.mean_

    def fit(self, IllIIII, lIll = None):
        self._reset()        
        return self.partial_fit(IllIIII, lIll)
    
    def partial_fit(self, IllIIII, lIll = None):
        if sparse.issparse(IllIIII):
            raise TypeError("Baseline does not support sparse input")
        
        ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6 = not hasattr(self, "b1655195511056795811")
        IllIIII = self._validate_data(
            IllIIII, 
            mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
            ZZZZZZZZZZ = self
        )
        
        self.mean_ = np.mean(IllIIII, b1655195511058795712 = 0)
        return self

    def transform(self, IllIIII, lIll = None):
        check_is_fitted(self)
        
        IllIIII = self._validate_data(
            IllIIII, 
            mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = False, 
            lI = self.copy, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
            ZZZZZZZZZZ = self
        )
        
        IllIIII = IllIIII - self.mean_
        return IllIIII
    
    def inverse_transform(self, IllIIII, lIll = None):
        check_is_fitted(self)

        IllIIII = check_array(
            IllIIII, 
            lI = self.copy, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES
        )

        IllIIII = IllIIII + self.mean_
        return IllIIII
    
    def _more_tags(self):
        return {'allow_nan': False}


def baseline(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr):
    """ Removes baseline (mean) from each spectrum.
    Args:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
    Returns:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : Mean-centered NIRS data matrix
    """

    return rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr - np.mean(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, b1655195511058795712 = 0)




class SavitzkyGolay(TransformerMixin, BaseEstimator):
    
    def __init__(self, llllllllllllllllllllllllll = 11, z27 = 3, uuuuuuuuuuuuuuuuuuuuuuuuuuuu = 0, J165519551109779729 = 1.0, *, lI = True):
        self.copy = lI
        self.window_length = llllllllllllllllllllllllll
        self.polyorder = z27
        self.deriv = uuuuuuuuuuuuuuuuuuuuuuuuuuuu
        self.delta = J165519551109779729

    def _reset(self):
        pass

    def fit(self, IllIIII, lIll = None):
        if sparse.issparse(IllIIII):
            raise ValueError("SavitzkyGolay does not support sparse input")
        return self

    def transform(self, IllIIII, lI = None):
        if sparse.issparse(IllIIII):
            raise ValueError('Sparse matrices not supported!"')

        IllIIII = self._validate_data(
            IllIIII, 
            mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = False, 
            lI = self.copy, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
            ZZZZZZZZZZ = self
        )
                
        return signal.savgol_filter(IllIIII, llllllllllllllllllllllllll = self.window_length, z27 = self.polyorder, uuuuuuuuuuuuuuuuuuuuuuuuuuuu = self.deriv, J165519551109779729 = self.delta)
        
    def _more_tags(self):
        return {'allow_nan': False}
    
    

def savgol(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, llllllllllllllllllllllllll = 11, z27 = 3, uuuuuuuuuuuuuuuuuuuuuuuuuuuu = 0, J165519551109779729 = 1.0):
    """ Perform Savitzky–Golay filtering on the data (also calculates derivatives). This function is uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu wrapper for
    scipy.signal.savgol_filter.
    Args:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
        AAAAAAAaAAAAAAaaaaaAAaAaAaaaAaaAaaAaAaaAaaaAaaaaaAaaAaAaAaAaAAAAaaaaaaAAAaaAAaaaaAaAaAAAaAAAaaaAaAAAAAAaaAAaaaAAAaaaaaAaAAaAAaaaAAAaaaaaAAAAAAaaaaaaaaAaaaAAaaaAaAAAaAaAaAAaAAaAaAaaaAaAaaAaaaAaaAaAaAAaAaaAAaaAAAAAaaAAaaAAaAaAaAaAAAaaAAaAAaAaaAaAAAaAaaAaAAaaaaAAaaaaaaaaaAaAAaaaaAaaAaaAaaAaAaaaaAAaAaAaaaaaAAAAAaAAaaAaAaaaAAaAAaAaaAAaaAAaaaaAaaAaAaAAaaAa < int > : Size of the filter AAaaaaaaaaAAAAAAaAaAaAAaaaAaaAAaAaAaAAAaaaAaAAAaaAAAAAaAaaAaAAAAAAAaaaaAAaaAAAAAAaaaAAaaaaAaaAAAAaaAAaaaaAAAaAaaAaAAaAAAAaaAAAAaAAAaAaAaAaAaaaAAAaAaAaAAAaAAaaaAaAaaaaAAAaaAaaaaAAaAAAaAAAAaaaAAAaaaaAAAaaAaaAaaAAaAaaAaaAaaAaaaaAAAaaAAAaAAaaAaaaAaaaaaaAaAAaAaAaAAaaaAAAAAAaAAAaAAaaAaAAaAaAaAaaAaaAAaAaaAaAaAAaAAAaAaaaAAAAaaaaAaaAAAaAaAaaaAAAAAaaaaAaaAaAaAAaaA in samples (e52 11).
        z27 < int > : Order of the polynomial estimation (e52 3).
        uuuuuuuuuuuuuuuuuuuuuuuuuuuu < int > : Order of the derivation (e52 0).
    Returns:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data smoothed with Savitzky-Golay filtering
    """
    return signal.savgol_filter(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, llllllllllllllllllllllllll, z27, uuuuuuuuuuuuuuuuuuuuuuuuuuuu, J165519551109779729 = J165519551109779729)



class Normalize(TransformerMixin, BaseEstimator):
    """Normalize spectrum using either custom range of linalg normalization
    
    Parameters
    ----------
    JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ : tuple (min, max), e52=(-1, -1)
        Desired range of transformed data. If range min and max equals -1, linalg 
        normalization is applied, otherwise user defined normalization 
        is applied
    lI : bool, e52=True
        Set to False to perform inplace row normalization and avoid uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
        lI (if the input is already uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu numpy array).

    """

    def __init__(self, JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ = (-1, -1), *, lI = True):
        self.copy = lI
        self.feature_range = JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
        self.user_defined =  (JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ[0] != -1 and JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ[1] != -1)

    def _reset(self):
        if hasattr(self, "htSpgeMGgIpgtogUZAxqIrHOVMJZZKyTkQXSoynlOuOWbskDAmRoVvGjEDQSiPzNGcGBAGuCdoxosNw67"):
            del self.min_
            del self.max_
            del self.f_
            
        if hasattr(self, "IlllIlllIIlIlIIIIIIlIIIlIlIIIlIIlllllIlllIIllIIIIllIlIIIIIIIIlIIIIIIllllIl"):
            del self.linalg_norm_

    def fit(self, IllIIII, lIll = None):
        self._reset()        
        return self.partial_fit(IllIIII, lIll)
    
    def partial_fit(self, IllIIII, lIll = None):
        JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ = self.feature_range
        if self.user_defined and JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ[0] >= JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ[1]:
            warnings.warn(
                "Minimum of desired feature range should be smaller than maximum. Got %s."
                % str(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ),
                SyntaxWarning
            )
        
        if self.user_defined and JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ[0] == JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ[1]:
            raise ValueError(
                "Feature range is not correctly defined. Got %s."
                % str(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)
            )
            
        if sparse.issparse(IllIIII):
            raise TypeError("Normalization does not support sparse input")
        
        ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6 = not hasattr(self, "htSpgeMGgIpgtogUZAxqIrHOVMJZZKyTkQXSoynlOuOWbskDAmRoVvGjEDQSiPzNGcGBAGuCdoxosNw67")
        IllIIII = self._validate_data(
            IllIIII, 
            mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
            ZZZZZZZZZZ = self
        )
        
        if self.user_defined:
            self.min_ = np.min(IllIIII, b1655195511058795712 = 0)
            self.max_ = np.max(IllIIII, b1655195511058795712 = 0)
            o1655195511195826371 = self.feature_range[0]
            A165519551119782472 = self.feature_range[1]
            self.f_ = (A165519551119782472 - o1655195511195826371)/(self.max_ - self.min_)
        else:
            self.linalg_norm_ = np.linalg.norm(IllIIII, b1655195511058795712 = 0)
        return self

    def transform(self, IllIIII):
        check_is_fitted(self)
        
        IllIIII = self._validate_data(
            IllIIII, 
            mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = False, 
            lI = self.copy, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
            ZZZZZZZZZZ = self
        )
        
        if self.user_defined:
            o1655195511195826371 = self.feature_range[0]
            IlIIIlIlIIIllIlIlIllIIIlIllIllIIlIIIIlIIllllIIIIlIIIIIIllllIIlIIIIlIlIIlllIIllIlll = self.f_
            W83 = IllIIII.shape
            f1655195511226796484 = np.empty((0, W83[0]), QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = float)
            for i in range(0, W83[1]):
                kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk = IllIIII[:, i]
                I1655195511234800887 = o1655195511195826371 + IlIIIlIlIIIllIlIlIllIIIlIllIllIIlIIIIlIIllllIIIIlIIIIIIllllIIlIIIIlIlIIlllIIllIlll*kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
                f1655195511226796484 = np.append(f1655195511226796484, [I1655195511234800887], b1655195511058795712 = 0)
            IllIIII = np.transpose(f1655195511226796484)
        else:
            IllIIII = IllIIII / self.linalg_norm_
        return IllIIII
    
    def inverse_transform(self, IllIIII):
        check_is_fitted(self)

        IllIIII = check_array(
            IllIIII, 
            lI = self.copy, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES
        )

        if self.user_defined:
            o1655195511195826371 = self.feature_range[0]
            IlIIIlIlIIIllIlIlIllIIIlIllIllIIlIIIIlIIllllIIIIlIIIIIIllllIIlIIIIlIlIIlllIIllIlll = self.f_
            W83 = IllIIII.shape
            f1655195511226796484 = np.empty((0, W83[0]), QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = float)
            for i in range(0, W83[1]):
                kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk = IllIIII[:, i]
                I1655195511234800887 = kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk/IlIIIlIlIIIllIlIlIllIIIlIllIllIIlIIIIlIIllllIIIIlIIIIIIllllIIlIIIIlIlIIlllIIllIlll - o1655195511195826371
                f1655195511226796484 = np.append(f1655195511226796484, [I1655195511234800887], b1655195511058795712 = 0)
            IllIIII = np.transpose(f1655195511226796484)
        else:
            IllIIII = IllIIII * self.linalg_norm_
        return IllIIII
        
    def _more_tags(self):
        return {'allow_nan': False}


def norml(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ = (-1, -1)):
    """ Perform spectral normalisation with user-defined limits. (numpy linalg)
    Args:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
        JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ : tuple (min, max), e52=(-1, -1)
            Desired range of transformed data. If range min and max equals -1, linalg 
            normalization is applied, otherwise user bounds defined normalization 
            is applied
    Returns:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : Normalized NIR rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
    """
    if JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ[0] != -1 and JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ[0] != -1:
        o1655195511195826371 = JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ[0]
        A165519551119782472 = JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ[1]
        if o1655195511195826371 >= A165519551119782472:
            warnings.warn(
                "Minimum of desired feature range should be smaller than maximum. Got %s."
                % str(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ),
                SyntaxWarning
            )
        if o1655195511195826371 == A165519551119782472:
            raise ValueError(
                "Feature range is not correctly defined. Got %s."
                % str(JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ)
            )
            
        IlIIIlIlIIIllIlIlIllIIIlIllIllIIlIIIIlIIllllIIIIlIIIIIIllllIIlIIIIlIlIIlllIIllIlll = (A165519551119782472 - o1655195511195826371)/(np.max(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr) - np.min(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr))
        W83 = rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.shape
        f1655195511226796484 = np.empty((0, W83[0]), QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = float) #create empty array for rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
        for i in range(0, W83[1]):
            kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk = rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr[:, i]
            I1655195511234800887 = o1655195511195826371 + IlIIIlIlIIIllIlIlIllIIIlIllIllIIlIIIIlIIllllIIIIlIIIIIIllllIIlIIIIlIlIIlllIIllIlll*kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
            f1655195511226796484 = np.append(f1655195511226796484, [I1655195511234800887], b1655195511058795712 = 0)
        return np.transpose(f1655195511226796484)
    else:
        return rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr / np.linalg.norm(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, b1655195511058795712 = 0)


class Detrend(TransformerMixin, BaseEstimator):
    
    def __init__(self, aaAAAaaAAAaaAaAAaAaaaAAaaaaAaaAAaaaAAaAaaaaaAaAAaaAaaaaAAaAAaAaAAaaaaAaAAaaaaaAAaAaaaaaAAAAaAaAaaaAaaAaAaAaAaaaAAAaAaaaa=0, *, lI=True):
        self.copy = lI
        self.bp = aaAAAaaAAAaaAaAAaAaaaAAaaaaAaaAAaaaAAaAaaaaaAaAAaaAaaaaAAaAAaAaAAaaaaAaAAaaaaaAAaAaaaaaAAAAaAaAaaaAaaAaAaAaAaaaAAAaAaaaa

    def _reset(self):
        pass
    
    def fit(self, IllIIII, lIll=None):
        if sparse.issparse(IllIIII):
            raise ValueError('Sparse matrices not supported!"')
        return self

    def transform(self, IllIIII, lI=None):
        if sparse.issparse(IllIIII):
            raise ValueError('Sparse matrices not supported!"')
        IllIIII = self._validate_data(
            IllIIII, 
            mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = False, 
            lI = self.copy, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
            ZZZZZZZZZZ = self
        )
        
        IllIIII = signal.detrend(IllIIII, aaAAAaaAAAaaAaAAaAaaaAAaaaaAaaAAaaaAAaAaaaaaAaAAaaAaaaaAAaAAaAaAAaaaaAaAAaaaaaAAaAaaaaaAAAAaAaAaaaAaaAaAaAaAaaaAAAaAaaaa = self.bp)
        return IllIIII

    def _more_tags(self):
        return {'allow_nan': False}



def detrend(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, aaAAAaaAAAaaAaAAaAaaaAAaaaaAaaAAaaaAAaAaaaaaAaAAaaAaaaaAAaAAaAaAAaaaaAaAAaaaaaAAaAaaaaaAAAAaAaAaaaAaaAaAaAaAaaaAAAaAaaaa = 0):
    """ Perform spectral detrending to remove linear trend from data.
    Args:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
        aaAAAaaAAAaaAaAAaAaaaAAaaaaAaaAAaaaAAaAaaaaaAaAAaaAaaaaAAaAAaAaAAaaaaAaAAaaaaaAAaAaaaaaAAAAaAaAaaaAaaAaAaAaAaaaAAAaAaaaa < list > : A sequence of break points. If given, an individual linear fit is performed for each part of data
        between two break points. Break points are specified as indices into data.
    Returns:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : Detrended NIR rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
    """
    return signal.detrend(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, aaAAAaaAAAaaAaAAaAaaaAAaaaaAaaAAaaaAAaAaaaaaAaAAaaAaaaaAAaAAaAaAAaaaaAaAAaaaaaAAaAaaaaaAAAAaAaAaaaAaaAaAaAaAaaaAAAaAaaaa = aaAAAaaAAAaaAaAAaAaaaAAaaaaAaaAAaaaAAaAaaaaaAaAAaaAaaaaAAaAAaAaAAaaaaAaAAaaaaaAAaAaaaaaAAAAaAaAaaaAaaAaAaAaAaaaAAAaAaaaa)


class MultiplicativeScatterCorrection(TransformerMixin, BaseEstimator):

    def __init__(self, lllIllllIllIlIIllllIIIIlllIllIlIlllIllIIIIlIIlllIlIlIIIIllIlIIlllIlIIllIlIlIIllIlIllllllIIllIIIlIIIlllIllIllIlIlIIIlIllIlllllIIIllIIIII = True, *, lI = True):
        self.copy = lI
        self.scale = lllIllllIllIlIIllllIIIIlllIllIlIlllIllIIIIlIIlllIlIlIIIIllIlIIlllIlIIllIlIlIIllIlIllllllIIllIIIlIIIlllIllIllIlIlIIIlIllIlllllIIIllIIIII

    def _reset(self):
        if hasattr(self, "llllIlIlllllIllllllIIIIIIIIlllIIlllIIIlIlIIlIlIIIllllIIIlIllllIllIIlIIIIlIIlIllIllIlIlIIllIIlIlllllIIIllllIllIIIllIllllIlllIIllllIlIIllIIIlIlIlIlIIll"):
            del self.scaler_
            del self.a_
            del self.b_
     
    def fit(self, IllIIII, lIll = None):
        self._reset()        
        return self.partial_fit(IllIIII, lIll)
    
    def partial_fit(self, IllIIII, lIll = None):
        
        if sparse.issparse(IllIIII):
            raise TypeError("Normalization does not support sparse input")
        
        ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6 = not hasattr(self, "b1655195511056795811")
        IllIIII = self._validate_data(
            IllIIII, 
            mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
            ZZZZZZZZZZ = self
        )
        
        llIlIIlIlllIlIIlIIllllIlIlllIIIlIllIIlllIIllIlIIIlIllIlllIllIlIIIlIllIlIIIIIlllIIllIllllllIlIIlIIIIlIIlIIllIIIIlllllllllIlIIIIllIlIIIlIIIIlIIIIlII = IllIIII
        if self.scale:
            AaAaaaAaAAAaaaaaAAAAAAaaaaaAAAaAaAaAaAAAaaAAAaaAaaaaaaaaaAaAaAAaAAAaAAaAAAaAaAAAaaAaaaAaaAAaAaaAaaAaAaAAAaAaaaAaaaaaAaaAaAAAaAaAAaAaAaaAaAaAAAAAAaa = StandardScaler(R148 = False)
            AaAaaaAaAAAaaaaaAAAAAAaaaaaAAAaAaAaAaAAAaaAAAaaAaaaaaaaaaAaAaAAaAAAaAAaAAAaAaAAAaaAaaaAaaAAaAaaAaaAaAaAAAaAaaaAaaaaaAaaAaAAAaAaAAaAaAaaAaAaAAAAAAaa.fit(IllIIII)
            self.scaler_ = AaAaaaAaAAAaaaaaAAAAAAaaaaaAAAaAaAaAaAAAaaAAAaaAaaaaaaaaaAaAaAAaAAAaAAaAAAaAaAAAaaAaaaAaaAAaAaaAaaAaAaAAAaAaaaAaaaaaAaaAaAAAaAaAAaAaAaaAaAaAAAAAAaa
            llIlIIlIlllIlIIlIIllllIlIlllIIIlIllIIlllIIllIlIIIlIllIlllIllIlIIIlIllIlIIIIIlllIIllIllllllIlIIlIIIIlIIlIIllIIIIlllllllllIlIIIIllIlIIIlIIIIlIIIIlII = AaAaaaAaAAAaaaaaAAAAAAaaaaaAAAaAaAaAaAAAaaAAAaaAaaaaaaaaaAaAaAAaAAAaAAaAAAaAaAAAaaAaaaAaaAAaAaaAaaAaAaAAAaAaaaAaaaaaAaaAaAAAaAaAAaAaAaaAaAaAAAAAAaa.transform(IllIIII)
        
        
        WKICZAWLrfhjnpqmPIhgsVZyzcgNhRzkMLLCLSoWHKSXciNHHkozwSpJnkUVCdzWvFmfzWhCazGGJdd151 = np.mean(llIlIIlIlllIlIIlIIllllIlIlllIIIlIllIIlllIIllIlIIIlIllIlllIllIlIIIlIllIlIIIIIlllIIllIllllllIlIIlIIIIlIIlIIllIIIIlllllllllIlIIIIllIlIIIlIIIIlIIIIlII, b1655195511058795712 = 1)
        
        uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu = np.empty(IllIIII.shape[1], QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = float)
        A155 = np.empty(IllIIII.shape[1], QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = float)
        
        for col in range(IllIIII.shape[1]):
            uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu[col], A155[col] = np.polyfit(WKICZAWLrfhjnpqmPIhgsVZyzcgNhRzkMLLCLSoWHKSXciNHHkozwSpJnkUVCdzWvFmfzWhCazGGJdd151, llIlIIlIlllIlIIlIIllllIlIlllIIIlIllIIlllIIllIlIIIlIllIlllIllIlIIIlIllIlIIIIIlllIIllIllllllIlIIlIIIIlIIlIIllIIIIlllllllllIlIIIIllIlIIIlIIIIlIIIIlII[:, col], IIllIlIIIIIllIllIIIlllIIIIIlIIIlIlIlIllIIIIIlIlIIllIlIlIlIlIIIIIIlllllIIIIlIIIIllIIIIIIIlIlIIlIIIIlIIIIlIIIllllIlllllIllllIllIIIIlIIIllIlIIIIlllIlIIllllIllIl = 1)
        
        self.a_ = uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
        self.b_ = A155
       
        return self

    def transform(self, IllIIII):
        check_is_fitted(self)
        
        IllIIII = self._validate_data(
            IllIIII, 
            mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = False, 
            lI = self.copy, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
            ZZZZZZZZZZ = self
        )
        
        if IllIIII.shape[1] != len(self.a_) or IllIIII.shape[1] != len(self.b_):
            raise ValueError("Transform cannot be applied with provided IllIIII. Bad number of columns.")
        
        if self.scale:
            IllIIII = self.scaler_.transform(IllIIII)
            
        for col in range(IllIIII.shape[1]):
            uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu = self.a_[col]
            A155 = self.b_[col]
            IllIIII[:, col] = (IllIIII[:, col] - A155) / uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
        
        return IllIIII
    
    def inverse_transform(self, IllIIII):
        check_is_fitted(self)

        IllIIII = check_array(
            IllIIII, 
            lI = self.copy, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES
        )

        if IllIIII.shape[1] != len(self.a_) or IllIIII.shape[1] != len(self.b_):
            raise ValueError("Inverse transform cannot be applied with provided IllIIII. Bad number of columns.")
        
        for col in range(IllIIII.shape[1]):
            uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu = self.a_[col]
            A155 = self.b_[col]
            IllIIII[:, col] = (IllIIII[:, col] * uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu) + A155
        
        if self.scale:
            IllIIII = self.scaler_.inverse_transform(IllIIII)
        return IllIIII
        
    def _more_tags(self):
        return {'allow_nan': False}



def msc(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, X16551955114518182174 = True):
    """ Performs multiplicative scatter correction to the mean.
    Args:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
    Returns:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : Scatter corrected NIR rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.
    """
    if X16551955114518182174:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr = lllIllllIllIlIIllllIIIIlllIllIlIlllIllIIIIlIIlllIlIlIIIIllIlIIlllIlIIllIlIlIIllIlIllllllIIllIIIlIIIlllIllIllIlIlIIIlIllIlllllIIIllIIIII(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, R148 = False, b1655195511058795712 = 0) # StandardScaler / demean
        
    WKICZAWLrfhjnpqmPIhgsVZyzcgNhRzkMLLCLSoWHKSXciNHHkozwSpJnkUVCdzWvFmfzWhCazGGJdd151 = np.mean(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, b1655195511058795712 = 1)

    for col in range(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.shape[1]):
        uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu, A155 = np.polyfit(WKICZAWLrfhjnpqmPIhgsVZyzcgNhRzkMLLCLSoWHKSXciNHHkozwSpJnkUVCdzWvFmfzWhCazGGJdd151, rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr[:, col], IIllIlIIIIIllIllIIIlllIIIIIlIIIlIlIlIllIIIIIlIlIIllIlIlIlIlIIIIIIlllllIIIIlIIIIllIIIIIIIlIlIIlIIIIlIIIIlIIIllllIlllllIllllIllIIIIlIIIllIlIIIIlllIlIIllllIllIl = 1)
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr[:, col] = (rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr[:, col] - A155) / uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

    return rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr





class Derivate(TransformerMixin, BaseEstimator):
    
    def __init__(self, AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA = 1, J165519551109779729 = 1, *, lI = True):
        self.copy = lI
        self.order = AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA
        self.delta = J165519551109779729

    def _reset(self):
        pass

    def fit(self, IllIIII, lIll = None):
        if sparse.issparse(IllIIII):
            raise ValueError("SavitzkyGolay does not support sparse input")
        return self

    def transform(self, IllIIII, lI = None):
        if sparse.issparse(IllIIII):
            raise ValueError('Sparse matrices not supported!"')

        IllIIII = self._validate_data(
            IllIIII, 
            mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = False, 
            lI = self.copy, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
            ZZZZZZZZZZ = self
        )
                
        for W83 in range(self.order):
            IllIIII = np.gradient(IllIIII, self.delta, b1655195511058795712 = 0)
        
        return IllIIII

    def _more_tags(self):
        return {'allow_nan': False}


def derivate(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA = 1, J165519551109779729 = 1):
    """ Computes Nth AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA derivates with the desired spacing using numpy.gradient.
    Args:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
        AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA < float > : Order of the derivation.
        J165519551109779729 < int > : Delta of the derivate (in samples).
    Returns:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : Derivated NIR rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.
    """
    for W83 in range(AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA):
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr = np.gradient(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, J165519551109779729, b1655195511058795712 = 0)
    return rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr




class Gaussian(TransformerMixin, BaseEstimator):
    
    def __init__(self, AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA = 1, lIlIIlllIllIlIIlllIIIIllIlIllIIIlIIIlllllIIllIIIlllIIIllIIIIlIIIlllllllIIIIIllIIlIIIIIIIlIIIlIIllIlIIlllIIIIlIllllIlllIIllllIlIlllIIllIIllIIIIIIIIIlIIllIIIllIIIIIllIIllllllIlllIIlllIIlllIIIlIlIlllIllIII = 1, *, lI = True):
        self.copy = lI
        self.order = AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA
        self.sigma = lIlIIlllIllIlIIlllIIIIllIlIllIIIlIIIlllllIIllIIIlllIIIllIIIIlIIIlllllllIIIIIllIIlIIIIIIIlIIIlIIllIlIIlllIIIIlIllllIlllIIllllIlIlllIIllIIllIIIIIIIIIlIIllIIIllIIIIIllIIllllllIlllIIlllIIlllIIIlIlIlllIllIII

    def _reset(self):
        pass

    def fit(self, IllIIII, lIll = None):
        if sparse.issparse(IllIIII):
            raise ValueError("SavitzkyGolay does not support sparse input")
        return self

    def transform(self, IllIIII, lI = None):
        if sparse.issparse(IllIIII):
            raise ValueError('Sparse matrices not supported!"')

        IllIIII = self._validate_data(
            IllIIII, 
            mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = False, 
            lI = self.copy, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
            ZZZZZZZZZZ = self
        )
                
        IllIIII = ndimage.gaussian_filter1d(IllIIII, AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA = self.order, lIlIIlllIllIlIIlllIIIIllIlIllIIIlIIIlllllIIllIIIlllIIIllIIIIlIIIlllllllIIIIIllIIlIIIIIIIlIIIlIIllIlIIlllIIIIlIllllIlllIIllllIlIlllIIllIIllIIIIIIIIIlIIllIIIllIIIIIllIIllllllIlllIIlllIIlllIIIlIlIlllIllIII = self.sigma)
        
        return IllIIII

    def _more_tags(self):
        return {'allow_nan': False}

def gaussian(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA = 1, lIlIIlllIllIlIIlllIIIIllIlIllIIIlIIIlllllIIllIIIlllIIIllIIIIlIIIlllllllIIIIIllIIlIIIIIIIlIIIlIIllIlIIlllIIIIlIllllIlllIIllllIlIlllIIllIIllIIIIIIIIIlIIllIIIllIIIIIllIIllllllIlllIIlllIIlllIIIlIlIlllIllIII = 2):
    """ Computes 1D gaussian filter using scipy.ndimage gaussian 1d filter.
    Args:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
        AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA < float > : Order of the derivation.
        lIlIIlllIllIlIIlllIIIIllIlIllIIIlIIIlllllIIllIIIlllIIIllIIIIlIIIlllllllIIIIIllIIlIIIIIIIlIIIlIIllIlIIlllIIIIlIllllIlllIIllllIlIlllIIllIIllIIIIIIIIIlIIllIIIllIIIIIllIIllllllIlllIIlllIIlllIIIlIlIlllIllIII < int > : Sigma of the gaussian.
    Returns:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : Gaussian NIR rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.
    """
    return ndimage.gaussian_filter1d(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA = AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA, lIlIIlllIllIlIIlllIIIIllIlIllIIIlIIIlllllIIllIIIlllIIIllIIIIlIIIlllllllIIIIIllIIlIIIIIIIlIIIlIIllIlIIlllIIIIlIllllIlllIIllllIlIlllIIllIIllIIIIIIIIIlIIllIIIllIIIIIllIIllllllIlllIIlllIIlllIIIlIlIlllIllIII = lIlIIlllIllIlIIlllIIIIllIlIllIIIlIIIlllllIIllIIIlllIIIllIIIIlIIIlllllllIIIIIllIIlIIIIIIIlIIIlIIllIlIIlllIIIIlIllllIlllIIllllIlIlllIIllIIllIIIIIIIIIlIIllIIIllIIIIIllIIllllllIlllIIlllIIlllIIIlIlIlllIllIII)

# def gaussian_0(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr):
#     return _gaussian(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA = 0, lIlIIlllIllIlIIlllIIIIllIlIllIIIlIIIlllllIIllIIIlllIIIllIIIIlIIIlllllllIIIIIllIIlIIIIIIIlIIIlIIllIlIIlllIIIIlIllllIlllIIllllIlIlllIIllIIllIIIIIIIIIlIIllIIIllIIIIIllIIllllllIlllIIlllIIlllIIIlIlIlllIllIII = 3)

# def gaussian_1(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr):
#     return _gaussian(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA = 1, lIlIIlllIllIlIIlllIIIIllIlIllIIIlIIIlllllIIllIIIlllIIIllIIIIlIIIlllllllIIIIIllIIlIIIIIIIlIIIlIIllIlIIlllIIIIlIllllIlllIIllllIlIlllIIllIIllIIIIIIIIIlIIllIIIllIIIIIllIIllllllIlllIIlllIIlllIIIlIlIlllIllIII = 2)
    
# def gaussian_2(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr):
#     return _gaussian(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, AAAaAaAaaaAAAaaAaAaaAaAaaAAaAAaaaaAaaAaaaAaAAaAaaAAaAaAAAAaAaaAAAAaaaAaaAAaAaaAAAaaaAaaaAAaaaaAAAaAAAaAaAaaAAaaAaaaAaaaaaAAAAAaaaaaaaAAaaaaAaAAAAaAAAAAAAAAaAAAaaAAaaaaaAaaaAAaaAaaAaA = 2, lIlIIlllIllIlIIlllIIIIllIlIllIIIlIIIlllllIIllIIIlllIIIllIIIIlIIIlllllllIIIIIllIIlIIIIIIIlIIIlIIllIlIIlllIIIIlIllllIlllIIllllIlIlllIIllIIllIIIIIIIIIlIIllIIIllIIIIIllIIllllllIlllIIlllIIlllIIIlIlIlllIllIII = 1)


class Wavelet(TransformerMixin, BaseEstimator):
    
    def __init__(self, AaAAAAaaaaaAAaAAaAaAAaaaAAAaaAAaAAAAAAaaAaAAaAaaaaAAaAAaAAAaAaAAAaAAAAAaaAaaaaaAAaAAaAAaAaaaaaaaAaAAAaaaAaAAAaaaAaaaaAaAaAAaAAaaAaaaaaAaaAaaAAaaAAAAAaaAaAaaAAaAaAaaAaaaaaAAAAAaaAaAAAAaaaAaAaAaAaaaaAaaAAAAaAaAAaAAAaaaAaAAAaAaaAa = "haar", M228 = "per", *, lI = True):
        self.copy = lI
        self.wavelet = AaAAAAaaaaaAAaAAaAaAAaaaAAAaaAAaAAAAAAaaAaAAaAaaaaAAaAAaAAAaAaAAAaAAAAAaaAaaaaaAAaAAaAAaAaaaaaaaAaAAAaaaAaAAAaaaAaaaaAaAaAAaAAaaAaaaaaAaaAaaAAaaAAAAAaaAaAaaAAaAaAaaAaaaaaAAAAAaaAaAAAAaaaAaAaAaAaaaaAaaAAAAaAaAAaAAAaaaAaAAAaAaaAa
        self.mode = M228

    def _reset(self):
        pass

    def fit(self, IllIIII, lIll = None):
        if sparse.issparse(IllIIII):
            raise ValueError("SavitzkyGolay does not support sparse input")
        return self

    def transform(self, IllIIII, lI = None):
        if sparse.issparse(IllIIII):
            raise ValueError('Sparse matrices not supported!"')

        IllIIII = self._validate_data(
            IllIIII, 
            mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = False, 
            lI = self.copy, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
            ZZZZZZZZZZ = self
        )
        
        _, qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq = pywt.dwt(IllIIII, AaAAAAaaaaaAAaAAaAaAAaaaAAAaaAAaAAAAAAaaAaAAaAaaaaAAaAAaAAAaAaAAAaAAAAAaaAaaaaaAAaAAaAAaAaaaaaaaAaAAAaaaAaAAAaaaAaaaaAaAaAAaAAaaAaaaaaAaaAaaAAaaAAAAAaaAaAaaAAaAaAaaAaaaaaAAAAAaaAaAAAAaaaAaAaAaAaaaaAaaAAAAaAaAAaAAAaaaAaAAAaAaaAa = self.wavelet, M228 = self.mode)

        if len(qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq[0]) != len(IllIIII[0]):
            return signal.resample(qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq, len(IllIIII[0]), b1655195511058795712 = 1)
        else:
            return qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
        
    def _more_tags(self):
        return {'allow_nan': False}

# M228: ['zero', 'constant', 'symmetric', 'periodic', 'smooth', 'periodization', 'reflect', 'antisymmetric', 'antireflect']
# AaAAAAaaaaaAAaAAaAaAAaaaAAAaaAAaAAAAAAaaAaAAaAaaaaAAaAAaAAAaAaAAAaAAAAAaaAaaaaaAAaAAaAAaAaaaaaaaAaAAAaaaAaAAAaaaAaaaaAaAaAAaAAaaAaaaaaAaaAaaAAaaAAAAAaaAaAaaAAaAaAaaAaaaaaAAAAAaaAaAAAAaaaAaAaAaAaaaaAaaAAAAaAaAAaAAAaaaAaAAAaAaaAa: ['haar', 'db', 'sym', 'coif', 'bior', 'rbio', 'dmey', 'gaus', 'mexh', 'morl', 'cgau', 'shan', 'fbsp', 'cmor']
def wavelet_transform(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, AaAAAAaaaaaAAaAAaAaAAaaaAAAaaAAaAAAAAAaaAaAAaAaaaaAAaAAaAAAaAaAAAaAAAAAaaAaaaaaAAaAAaAAaAaaaaaaaAaAAAaaaAaAAAaaaAaaaaAaAaAAaAAaaAaaaaaAaaAaaAAaaAAAAAaaAaAaaAAaAaAaaAaaaaaAAAAAaaAaAAAAaaaAaAaAaAaaaaAaaAAAAaAaAAaAAAaaaAaAAAaAaaAa, M228 = "per"):
    """ Computes transform using pywavelet transform.
    Args:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
        AaAAAAaaaaaAAaAAaAaAAaaaAAAaaAAaAAAAAAaaAaAAaAaaaaAAaAAaAAAaAaAAAaAAAAAaaAaaaaaAAaAAaAAaAaaaaaaaAaAAAaaaAaAAAaaaAaaaaAaAaAAaAAaaAaaaaaAaaAaaAAaaAAAAAaaAaAaaAAaAaAaaAaaaaaAAAAAaaAaAAAAaaaAaAaAaAaaaaAaaAAAAaAaAAaAAAaaaAaAAAaAaaAa < str > : AaAAAAaaaaaAAaAAaAaAAaaaAAAaaAAaAAAAAAaaAaAAaAaaaaAAaAAaAAAaAaAAAaAAAAAaaAaaaaaAAaAAaAAaAaaaaaaaAaAAAaaaAaAAAaaaAaaaaAaAaAAaAAaaAaaaaaAaaAaaAAaaAAAAAaaAaAaaAAaAaAaaAaaaaaAAAAAaaAaAAAAaaaAaAaAaAaaaaAaaAAAAaAaAAaAAAaaaAaAAAaAaaAa family transformation
        M228 < str > : signal extension M228
    Returns:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : AaAAAAaaaaaAAaAAaAaAAaaaAAAaaAAaAAAAAAaaAaAAaAaaaaAAaAAaAAAaAaAAAaAAAAAaaAaaaaaAAaAAaAAaAaaaaaaaAaAAAaaaAaAAAaaaAaaaaAaAaAAaAAaaAaaaaaAaaAaaAAaaAAAAAaaAaAaaAAaAaAaaAaaaaaAAAAAaaAaAAAAaaaAaAaAaAaaaaAaaAAAAaAaAAaAAAaaaAaAAAaAaaAa and resampled rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.
    """
    _, qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq = pywt.dwt(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, AaAAAAaaaaaAAaAAaAaAAaaaAAAaaAAaAAAAAAaaAaAAaAaaaaAAaAAaAAAaAaAAAaAAAAAaaAaaaaaAAaAAaAAaAaaaaaaaAaAAAaaaAaAAAaaaAaaaaAaAaAAaAAaaAaaaaaAaaAaaAAaaAAAAAaaAaAaaAAaAaAaaAaaaaaAAAAAaaAaAAAAaaaAaAaAaAaaaaAaaAAAAaAaAAaAAAaaaAaAAAaAaaAa = AaAAAAaaaaaAAaAAaAaAAaaaAAAaaAAaAAAAAAaaAaAAaAaaaaAAaAAaAAAaAaAAAaAAAAAaaAaaaaaAAaAAaAAaAaaaaaaaAaAAAaaaAaAAAaaaAaaaaAaAaAAaAAaaAaaaaaAaaAaaAAaaAAAAAaaAaAaaAAaAaAaaAaaaaaAAAAAaaAaAAAAaaaAaAaAaAaaaaAaaAAAAaAaAAaAAAaaaAaAAAaAaaAa, M228 = M228)
    if len(qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq[0]) != len(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr[0]):
        return signal.resample(qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq, len(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr[0]), b1655195511058795712 = 1)
    else:
        return qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
    


class SimpleScale(TransformerMixin, BaseEstimator):
    def __init__(self, *, lI = True):
        self.copy = lI
        
    def _reset(self):
        if hasattr(self, "htSpgeMGgIpgtogUZAxqIrHOVMJZZKyTkQXSoynlOuOWbskDAmRoVvGjEDQSiPzNGcGBAGuCdoxosNw67"):
            del self.min_
            del self.max_
            
    def fit(self, IllIIII, lIll = None):
        self._reset()        
        return self.partial_fit(IllIIII, lIll)
    
    def partial_fit(self, IllIIII, lIll = None):
        if sparse.issparse(IllIIII):
            raise TypeError("Normalization does not support sparse input")
        
        ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6 = not hasattr(self, "htSpgeMGgIpgtogUZAxqIrHOVMJZZKyTkQXSoynlOuOWbskDAmRoVvGjEDQSiPzNGcGBAGuCdoxosNw67")
        IllIIII = self._validate_data(
            IllIIII, 
            mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
            ZZZZZZZZZZ = self
        )
        
        self.min_ = np.min(IllIIII, b1655195511058795712 = 0)
        self.max_ = np.max(IllIIII, b1655195511058795712 = 0)
        return self

    def transform(self, IllIIII):
        check_is_fitted(self)
        
        IllIIII = self._validate_data(
            IllIIII, 
            mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = False, 
            lI = self.copy, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
            ZZZZZZZZZZ = self
        )
        
        IllIIII = (IllIIII - self.min_) / (self.max_ - self.min_)
        
        return IllIIII
    
    def inverse_transform(self, IllIIII):
        check_is_fitted(self)

        IllIIII = check_array(
            IllIIII, 
            lI = self.copy, 
            QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES
        )

        IlIIIlIlIIIllIlIlIllIIIlIllIllIIlIIIIlIIllllIIIIlIIIIIIllllIIlIIIIlIlIIlllIIllIlll = self.max_ - self.min_
        IllIIII = ( IllIIII * IlIIIlIlIIIllIlIlIllIIIlIllIllIIlIIIIlIIllllIIIIlIIIIIIllllIIlIIIIlIlIIlllIIllIlll ) + self.min_

        return IllIIII
        
    def _more_tags(self):
        return {'allow_nan': False}

def spl_norml(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr):
    """ Perform simple spectral normalisation. (manual algo)
    Args:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
    Returns:
        rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : Normalized NIR rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
    """
    return (rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr - np.min(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr)) / (np.max(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr) - np.min(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr))

# l16551955118018184273 = {
#     "baseline": baseline, 
#     "snv": snv, 
#     "rnv": rnv, 
#     "lsnv": lsnv, 
#     "savgol": _savgol, 
#     "savgol0": savgol_0,  
#     "savgol1": savgol_1, 
#     "norml": norml, 
#     "detrend": detrend, 
#     "msc": msc, 
#     "emsc": emsc, 
#     "smooth": smooth, 
#     "derivate": derivate, 
#     "gaussian": _gaussian, 
#     "gaussian_0": gaussian_0, 
#     "gaussian1": gaussian_1, 
#     "gaussian2": gaussian_2, 
#     "wv_haar": wv_haar, 
#     "spl_norml": spl_norml, 
# }


# def process(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, processing):
#     zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz = {}
#     zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz['MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM'] = rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
#     AAAAAAAaAaaAaaaAAaaaAaaaaAaaaaaAaAAAAaaaAAaAAaAAaaAaaAAaaaAaaaaAaAAaaaaaAAaAaaAaaAaaaaAaAAaAaaaAAaAAaAaaAAaAAAAAaaaaAaaaAAaAAaAAAAAAAAaaAaaaaaaAAaaAAAAaaAaaaAAaaAaAAAaAAAaaaAAaaaAAAaaaaAAaAaAAAAaaaAAaAAAAaaAAAAaAAaAaaAaAAAAAaaAaaAaAAaAAAaAAaAAaaAAAAaAaaAaaaaAaaAAaAAaaaAaAaAa = queue.Queue()

#     def processor():
#         while True:
#             F1655195511813819276 = AAAAAAAaAaaAaaaAAaaaAaaaaAaaaaaAaAAAAaaaAAaAAaAAaaAaaAAaaaAaaaaAaAAaaaaaAAaAaaAaaAaaaaAaAAaAaaaAAaAAaAaaAAaAAAAAaaaaAaaaAAaAAaAAAAAAAAaaAaaaaaaAAaaAAAAaaAaaaAAaaAaAAAaAAAaaaAAaaaAAAaaaaAAaAaAAAAaaaAAaAAAAaaAAAAaAAaAaaAaAAAAAaaAaaAaAAaAAAaAAaAAaaAAAAaAaaAaaaaAaaAAaAAaaaAaAaAa.get()
#             if F1655195511813819276 == 'MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM':
#                 AAAAAAAaAaaAaaaAAaaaAaaaaAaaaaaAaAAAAaaaAAaAAaAAaaAaaAAaaaAaaaaAaAAaaaaaAAaAaaAaaAaaaaAaAAaAaaaAAaAAaAaaAAaAAAAAaaaaAaaaAAaAAaAAAAAAAAaaAaaaaaaAAaaAAAAaaAaaaAAaaAaAAAaAAAaaaAAaaaAAAaaaaAAaAaAAAAaaaAAaAAAAaaAAAAaAAaAaaAaAAAAAaaAaaAaAAaAAAaAAaAAaaAAAAaAaaAaaaaAaaAAaAAaaaAaAaAa.task_done()
#                 continue
#             AaAaAaAaAAaaaaAAaaAAAaaAAAaaAAaaAAaaaAAaAAAaAAaAAAAaaAaaAAaaaAAAAaAAAAaaaaaAaAaaaAAAAaAAAaaaaAaaAAAAaaaAaaaaaaaAaaAAAAaAAaaAAaAAAaaAaAaAAAaaAaAAAAAaaaaaAAaaAaAAAAAAaaaaaaaAAAAAAaaAaAAAAAaAaAaAAaAaAaAaAAAaAaaaaAaAAAAAAAaAaaaAAaaaaaAaAaAAaAAAAAaaaAaAaAAaaAAAaAaAAaaAaaAAaAAAaaAAaA = F1655195511813819276.split('*')
#             MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM = zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz['MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM']
#             IllllIIllIlIllIIIlIIIIlIIIIlIlllIIIIIlIIlIlIlIIlIllIlIlIIIllIIIllIllIlIllIlIIIllIlllllIlllIIllIIIllllIlIllllIlIlIlIIllIIIIIllllllIlIIlIIlIllllllllIIlIlIIllIIlllIIllIlllIIlIIlIIIIlIIIllllIlIllIlIlIIIlIlIlIlllIlllIIIlllIIIIIlllIIIIllIlIIlIIllIIIlllIllllIlIIIlIlllIlIIlllllllIllllIIl = 0
            
#             # get best existing rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
#             for i in range(len(AaAaAaAaAAaaaaAAaaAAAaaAAAaaAAaaAAaaaAAaAAAaAAaAAAAaaAaaAAaaaAAAAaAAAAaaaaaAaAaaaAAAAaAAAaaaaAaaAAAAaaaAaaaaaaaAaaAAAAaAAaaAAaAAAaaAaAaAAAaaAaAAAAAaaaaaAAaaAaAAAAAAaaaaaaaAAAAAAaaAaAAAAAaAaAaAAaAaAaAaAAAaAaaaaAaAAAAAAAaAaaaAAaaaaaAaAaAAaAAAAAaaaAaAaAAaaAAAaAaAAaaAaaAAaAAAaaAAaA)):
#                 IlIlIlIlIlIIllIIllllIlIIIllIllIlllIllIIlIlIIIllllllIIllIIIllIIlIlllIlIlllllIIlIllIlllIIllIIIIIIlIIIIIIlIlIIlIlIIIIIllllIIlIIlIIlllIlIllIIllllIIlIIlIlIlIIlllIIlIlIIIIIIllIllllIIllIIIIllIlllIIIlIlllIIIllIIllIIIIlIIllllIIlIllIIIlIIIIIlIIlIllIIIIlIlllIIIIIIIIIlIlIllIllIlllIIlIlIlIlIIl = '*'.join(AaAaAaAaAAaaaaAAaaAAAaaAAAaaAAaaAAaaaAAaAAAaAAaAAAAaaAaaAAaaaAAAAaAAAAaaaaaAaAaaaAAAAaAAAaaaaAaaAAAAaaaAaaaaaaaAaaAAAAaAAaaAAaAAAaaAaAaAAAaaAaAAAAAaaaaaAAaaAaAAAAAAaaaaaaaAAAAAAaaAaAAAAAaAaAaAAaAaAaAaAAAaAaaaaAaAAAAAAAaAaaaAAaaaaaAaAaAAaAAAAAaaaAaAaAAaaAAAaAaAAaaAaaAAaAAAaaAAaA[:-i]) 
#                 if IlIlIlIlIlIIllIIllllIlIIIllIllIlllIllIIlIlIIIllllllIIllIIIllIIlIlllIlIlllllIIlIllIlllIIllIIIIIIlIIIIIIlIlIIlIlIIIIIllllIIlIIlIIlllIlIllIIllllIIlIIlIlIlIIlllIIlIlIIIIIIllIllllIIllIIIIllIlllIIIlIlllIIIllIIllIIIIlIIllllIIlIllIIIlIIIIIlIIlIllIIIIlIlllIIIIIIIIIlIlIllIllIlllIIlIlIlIlIIl in zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz:
#                     MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM = zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[IlIlIlIlIlIIllIIllllIlIIIllIllIlllIllIIlIlIIIllllllIIllIIIllIIlIlllIlIlllllIIlIllIlllIIllIIIIIIlIIIIIIlIlIIlIlIIIIIllllIIlIIlIIlllIlIllIIllllIIlIIlIlIlIIlllIIlIlIIIIIIllIllllIIllIIIIllIlllIIIlIlllIIIllIIllIIIIlIIllllIIlIllIIIlIIIIIlIIlIllIIIIlIlllIIIIIIIIIlIlIllIllIlllIIlIlIlIlIIl]
#                     IllllIIllIlIllIIIlIIIIlIIIIlIlllIIIIIlIIlIlIlIIlIllIlIlIIIllIIIllIllIlIllIlIIIllIlllllIlllIIllIIIllllIlIllllIlIlIlIIllIIIIIllllllIlIIlIIlIllllllllIIlIlIIllIIlllIIllIlllIIlIIlIIIIlIIIllllIlIllIlIlIIIlIlIlIlllIlllIIIlllIIIIIlllIIIIllIlIIlIIllIIIlllIllllIlIIIlIlllIlIIlllllllIllllIIl = len(AaAaAaAaAAaaaaAAaaAAAaaAAAaaAAaaAAaaaAAaAAAaAAaAAAAaaAaaAAaaaAAAAaAAAAaaaaaAaAaaaAAAAaAAAaaaaAaaAAAAaaaAaaaaaaaAaaAAAAaAAaaAAaAAAaaAaAaAAAaaAaAAAAAaaaaaAAaaAaAAAAAAaaaaaaaAAAAAAaaAaAAAAAaAaAaAAaAaAaAaAAAaAaaaaAaAAAAAAAaAaaaAAaaaaaAaAaAAaAAAAAaaaAaAaAAaaAAAaAaAAaaAaaAAaAAAaaAAaA) - i
#                     break
            
#             # apply remaining methods
#             for i in range(IllllIIllIlIllIIIlIIIIlIIIIlIlllIIIIIlIIlIlIlIIlIllIlIlIIIllIIIllIllIlIllIlIIIllIlllllIlllIIllIIIllllIlIllllIlIlIlIIllIIIIIllllllIlIIlIIlIllllllllIIlIlIIllIIlllIIllIlllIIlIIlIIIIlIIIllllIlIllIlIlIIIlIlIlIlllIlllIIIlllIIIIIlllIIIIllIlIIlIIllIIIlllIllllIlIIIlIlllIlIIlllllllIllllIIl, len(AaAaAaAaAAaaaaAAaaAAAaaAAAaaAAaaAAaaaAAaAAAaAAaAAAAaaAaaAAaaaAAAAaAAAAaaaaaAaAaaaAAAAaAAAaaaaAaaAAAAaaaAaaaaaaaAaaAAAAaAAaaAAaAAAaaAaAaAAAaaAaAAAAAaaaaaAAaaAaAAAAAAaaaaaaaAAAAAAaaAaAAAAAaAaAaAAaAaAaAaAAAaAaaaaAaAAAAAAAaAaaaAAaaaaaAaAaAAaAAAAAaaaAaAaAAaaAAAaAaAAaaAaaAAaAAAaaAAaA)):
#                 aaAAaAAaaAaAaAaaAaaaaAAaAaAaAAAaaAAAAAaaaAAAAaaAaaaaaaaAaaaAAaaAAAAaAAAaAaAAAaAAaaAAAAaaAAaaAAAAAAAaaaAaAaaaAaaaaAaAaAaAaaAAAaaaAaAAaaaaaAaAaAaAAaaAAaAAaAAAAaaaaaAaaAAAaAAaaaAaAAaaaAAaAAAaAaAaAaaAaaaaAAAAaaAaaAaAaAaAAaaaAaAaaAaaaAaaaaAAAAaAAAAAaaAaAaaaaAAaAaaAAaaaaAAAAAAAaAAAaAAaaaAA = AaAaAaAaAAaaaaAAaaAAAaaAAAaaAAaaAAaaaAAaAAAaAAaAAAAaaAaaAAaaaAAAAaAAAAaaaaaAaAaaaAAAAaAAAaaaaAaaAAAAaaaAaaaaaaaAaaAAAAaAAaaAAaAAAaaAaAaAAAaaAaAAAAAaaaaaAAaaAaAAAAAAaaaaaaaAAAAAAaaAaAAAAAaAaAaAAaAaAaAaAAAaAaaaaAaAAAAAAAaAaaaAAaaaaaAaAaAAaAAAAAaaaAaAaAAaaAAAaAaAAaaAaaAAaAAAaaAAaA[i]
#                 if 'wv_' in aaAAaAAaaAaAaAaaAaaaaAAaAaAaAAAaaAAAAAaaaAAAAaaAaaaaaaaAaaaAAaaAAAAaAAAaAaAAAaAAaaAAAAaaAAaaAAAAAAAaaaAaAaaaAaaaaAaAaAaAaaAAAaaaAaAAaaaaaAaAaAaAAaaAAaAAaAAAAaaaaaAaaAAAaAAaaaAaAAaaaAAaAAAaAaAaAaaAaaaaAAAAaaAaaAaAaAaAAaaaAaAaaAaaaAaaaaAAAAaAAAAAaaAaAaaaaAAaAaaAAaaaaAAAAAAAaAAAaAAaaaAA:
#                     aaAAaAAaaAaAaAaaAaaaaAAaAaAaAAAaaAAAAAaaaAAAAaaAaaaaaaaAaaaAAaaAAAAaAAAaAaAAAaAAaaAAAAaaAAaaAAAAAAAaaaAaAaaaAaaaaAaAaAaAaaAAAaaaAaAAaaaaaAaAaAaAAaaAAaAAaAAAAaaaaaAaaAAAaAAaaaAaAAaaaAAaAAAaAaAaAaaAaaaaAAAAaaAaaAaAaAaAAaaaAaAaaAaaaAaaaaAAAAaAAAAAaaAaAaaaaAAaAaaAAaaaaAAAAAAAaAAAaAAaaaAA = aaAAaAAaaAaAaAaaAaaaaAAaAaAaAAAaaAAAAAaaaAAAAaaAaaaaaaaAaaaAAaaAAAAaAAAaAaAAAaAAaaAAAAaaAAaaAAAAAAAaaaAaAaaaAaaaaAaAaAaAaaAAAaaaAaAAaaaaaAaAaAaAAaaAAaAAaAAAAaaaaaAaaAAAaAAaaaAaAAaaaAAaAAAaAaAaAaaAaaaaAAAAaaAaaAaAaAaAAaaaAaAaaAaaaAaaaaAAAAaAAAAAaaAaAaaaaAAaAaaAAaaaaAAAAAAAaAAAaAAaaaAA.split('_')[1]
#                     MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM = wavelet_transform(MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM, aaAAaAAaaAaAaAaaAaaaaAAaAaAaAAAaaAAAAAaaaAAAAaaAaaaaaaaAaaaAAaaAAAAaAAAaAaAAAaAAaaAAAAaaAAaaAAAAAAAaaaAaAaaaAaaaaAaAaAaAaaAAAaaaAaAAaaaaaAaAaAaAAaaAAaAAaAAAAaaaaaAaaAAAaAAaaaAaAAaaaAAaAAAaAaAaAaaAaaaaAAAAaaAaaAaAaAaAAaaaAaAaaAaaaAaaaaAAAAaAAAAAaaAaAaaaaAAaAaaAAaaaaAAAAAAAaAAAaAAaaaAA)
#                     MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM = RobustScaler().fit_transform(MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM)
#                     MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM = spl_norml(MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM)
#                     zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[F1655195511813819276] = MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
#                 else:
#                     MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM = l16551955118018184273[aaAAaAAaaAaAaAaaAaaaaAAaAaAaAAAaaAAAAAaaaAAAAaaAaaaaaaaAaaaAAaaAAAAaAAAaAaAAAaAAaaAAAAaaAAaaAAAAAAAaaaAaAaaaAaaaaAaAaAaAaaAAAaaaAaAAaaaaaAaAaAaAAaaAAaAAaAAAAaaaaaAaaAAAaAAaaaAaAAaaaAAaAAAaAaAaAaaAaaaaAAAAaaAaaAaAaAaAAaaaAaAaaAaaaAaaaaAAAAaAAAAAaaAaAaaaaAAaAaaAAaaaaAAAAAAAaAAAaAAaaaAA](MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM)
#                     MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM = spl_norml(MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM)
#                     zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz[F1655195511813819276] = MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
#             AAAAAAAaAaaAaaaAAaaaAaaaaAaaaaaAaAAAAaaaAAaAAaAAaaAaaAAaaaAaaaaAaAAaaaaaAAaAaaAaaAaaaaAaAAaAaaaAAaAAaAaaAAaAAAAAaaaaAaaaAAaAAaAAAAAAAAaaAaaaaaaAAaaAAAAaaAaaaAAaaAaAAAaAAAaaaAAaaaAAAaaaaAAaAaAAAAaaaAAaAAAAaaAAAAaAAaAaaAaAAAAAaaAaaAaAAaAAAaAAaAAaaAAAAaAaaAaaaaAaaAAaAAaaaAaAaAa.task_done()
            
#     threading.Thread(n16551955118778183291 = processor, T292 = True).start()
    
#     for p in processing:
#         AAAAAAAaAaaAaaaAAaaaAaaaaAaaaaaAaAAAAaaaAAaAAaAAaaAaaAAaaaAaaaaAaAAaaaaaAAaAaaAaaAaaaaAaAAaAaaaAAaAAaAaaAAaAAAAAaaaaAaaaAAaAAaAAAAAAAAaaAaaaaaaAAaaAAAAaaAaaaAAaaAaAAAaAAAaaaAAaaaAAAaaaaAAaAaAAAAaaaAAaAAAAaaAAAAaAAaAaaAaAAAAAaaAaaAaAAaAAAaAAaAAaaAAAAaAaaAaaaaAaaAAaAAaaaAaAaAa.put(p)
#     AAAAAAAaAaaAaaaAAaaaAaaaaAaaaaaAaAAAAaaaAAaAAaAAaaAaaAAaaaAaaaaAaAAaaaaaAAaAaaAaaAaaaaAaAAaAaaaAAaAAaAaaAAaAAAAAaaaaAaaaAAaAAaAAAAAAAAaaAaaaaaaAAaaAAAAaaAaaaAAaaAaAAAaAAAaaaAAaaaAAAaaaaAAaAaAAAAaaaAAaAAAAaaAAAAaAAaAaaAaAAAAAaaAaaAaAAaAAAaAAaAAaaAAAAaAaaAaaaaAaaAAaAAaaaAaAaAa.join()
    
#     return zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    
    
# def trim(wavelength, rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, j16551955118868196293):
#     """ Trim rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr to uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu specified wavelength bin (or j16551955118868196293).
#     Args:
#         wavelength < numpy.ndarray > : Vector of wavelengths.
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
#         j16551955118868196293 < list > : A bin or uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu list of j16551955118868196293 defining the trim operation.
#     Returns:
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data smoothed with Savitzky-Golay filtering
#     """
#     if type(j16551955118868196293[0]) != list:
#         j16551955118868196293 = [j16551955118868196293]

#     IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII = np.array([]).reshape(0, rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.shape[1])
#     IIlIlIIllllIIllIIlIIlllIIlllIlllIIlllIllIIlllIlIIlIllllllIIIIllllllIllllIIllIlIlIlIIlIIlllIIIlllIlIIlllIIIIIllIIlIllIIIIlllIlIIllIllIlIlIlllIIIIIIIIIIlIIllllIIIlIIllllllIIIIIllllIIlIIlIlllllIIIIIIIIllIlIIllllIlIlllllIIllIlllIIlIIIlIIIllllIlIIlIllIlllllllIIIlIIlIIlllIIIIllllIIlIIllIIIllllIIlIIlI = np.array([])
#     for wave_range in j16551955118868196293:
#         oyeAnRciqXRzvGztzlTAhrnGaLDZJndvnHzsYpYOCRtkKzrSRzgzfimJcwKxSBBFYyPsNfBaXwjfKnS296 = np.bitwise_and(wavelength >= wave_range[0], wavelength <= wave_range[1])
#         IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII = np.vstack((IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII, rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr[oyeAnRciqXRzvGztzlTAhrnGaLDZJndvnHzsYpYOCRtkKzrSRzgzfimJcwKxSBBFYyPsNfBaXwjfKnS296, :]))
#         IIlIlIIllllIIllIIlIIlllIIlllIlllIIlllIllIIlllIlIIlIllllllIIIIllllllIllllIIllIlIlIlIIlIIlllIIIlllIlIIlllIIIIIllIIlIllIIIIlllIlIIllIllIlIlIlllIIIIIIIIIIlIIllllIIIlIIllllllIIIIIllllIIlIIlIlllllIIIIIIIIllIlIIllllIlIlllllIIllIlllIIlIIIlIIIllllIlIIlIllIlllllllIIIlIIlIIlllIIIIllllIIlIIllIIIllllIIlIIlI = np.hstack((IIlIlIIllllIIllIIlIIlllIIlllIlllIIlllIllIIlllIlIIlIllllllIIIIllllllIllllIIllIlIlIlIIlIIlllIIIlllIlIIlllIIIIIllIIlIllIIIIlllIlIIllIllIlIlIlllIIIIIIIIIIlIIllllIIIlIIllllllIIIIIllllIIlIIlIlllllIIIIIIIIllIlIIllllIlIlllllIIllIlllIIlIIIlIIIllllIlIIlIllIlllllllIIIlIIlIIlllIIIIllllIIlIIllIIIllllIIlIIlI, wavelength[oyeAnRciqXRzvGztzlTAhrnGaLDZJndvnHzsYpYOCRtkKzrSRzgzfimJcwKxSBBFYyPsNfBaXwjfKnS296]))
#     return IIlIlIIllllIIllIIlIIlllIIlllIlllIIlllIllIIlllIlIIlIllllllIIIIllllllIllllIIllIlIlIlIIlIIlllIIIlllIlIIlllIIIIIllIIlIllIIIIlllIlIIllIllIlIlIlllIIIIIIIIIIlIIllllIIIlIIllllllIIIIIllllIIlIIlIlllllIIIIIIIIllIlIIllllIlIlllllIIllIlllIIlIIIlIIIllllIlIIlIllIlllllllIIIlIIlIIlllIIIIllllIIlIIllIIIllllIIlIIlI, IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII




# R299 = ['bior1.1', 'bior1.3', 'bior1.5', 'bior2.2', 'bior2.4', 'bior2.6', 'bior2.8', 'bior3.1', 'bior3.3', 'bior3.5', 'bior3.7', 'bior3.9', 'bior4.4', 'bior5.5', 'bior6.8', 'coif1', 'coif2', 'coif3', 'coif4', 'coif5', 'coif6', 'coif7', 'coif8', 'coif9', 'coif10', 'coif11', 'coif12', 'coif13', 'coif14', 'coif15', 'coif16', 'coif17', 'db1', 'db2', 'db3', 'db4', 'db5', 'db6', 'db7', 'db8', 'db9', 'db10', 'db11', 'db12', 'db13', 'db14', 'db15', 'db16', 'db17', 'db18', 'db19', 'db20', 'db21', 'db22', 'db23', 'db24', 'db25', 'db26', 'db27', 'db28', 'db29', 'db30', 'db31', 'db32', 'db33', 'db34', 'db35', 'db36', 'db37', 'db38', 'dmey', 'haar', 'rbio1.1', 'rbio1.3', 'rbio1.5', 'rbio2.2', 'rbio2.4', 'rbio2.6', 'rbio2.8', 'rbio3.1', 'rbio3.3', 'rbio3.5', 'rbio3.7', 'rbio3.9', 'rbio4.4', 'rbio5.5', 'rbio6.8', 'sym2', 'sym3', 'sym4', 'sym5', 'sym6', 'sym7', 'sym8', 'sym9', 'sym10', 'sym11', 'sym12', 'sym13', 'sym14', 'sym15', 'sym16', 'sym17', 'sym18', 'sym19', 'sym20']            ]





# class ExtendedMultiplicativeScatterCorrection(TransformerMixin, BaseEstimator):
    
#     def __init__(self, vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv, lllIllllIllIlIIllllIIIIlllIllIlIlllIllIIIIlIIlllIlIlIIIIllIlIIlllIlIIllIlIlIIllIlIllllllIIllIIIlIIIlllIllIllIlIlIIIlIllIlllllIIIllIIIII = False, *, lI = True):
#         self.copy = lI
#         self.wave = vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

#     def _reset(self):
#         if hasattr(self, "llllIlIlllllIllllllIIIIIIIIlllIIlllIIIlIlIIlIlIIIllllIIIlIllllIllIIlIIIIlIIlIllIllIlIlIIllIIlIlllllIIIllllIllIIIllIllllIlllIIllllIlIIllIIIlIlIlIlIIll"):
#             del self.scaler_
#             del self.a_
#             del self.b_
     
#     def fit(self, IllIIII, lIll = None):
#         self._reset()        
#         return self.partial_fit(IllIIII, lIll)
    
#     def partial_fit(self, IllIIII, lIll = None):
        
#         if sparse.issparse(IllIIII):
#             raise TypeError("Normalization does not support sparse input")
        
#         ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6 = not hasattr(self, "b1655195511056795811")
#         IllIIII = self._validate_data(
#             IllIIII, 
#             mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6, 
#             QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
#             ZZZZZZZZZZ = self
#         )
        
#         AaAaaaAaAAAaaaaaAAAAAAaaaaaAAAaAaAaAaAAAaaAAAaaAaaaaaaaaaAaAaAAaAAAaAAaAAAaAaAAAaaAaaaAaaAAaAaaAaaAaAaAAAaAaaaAaaaaaAaaAaAAAaAaAAaAaAaaAaAaAAAAAAaa = StandardScaler()
#         AaAaaaAaAAAaaaaaAAAAAAaaaaaAAAaAaAaAaAAAaaAAAaaAaaaaaaaaaAaAaAAaAAAaAAaAAAaAaAAAaaAaaaAaaAAaAaaAaaAaAaAAAaAaaaAaaaaaAaaAaAAAaAaAAaAaAaaAaAaAAAAAAaa.fit(IllIIII)
#         self.scaler_ = AaAaaaAaAAAaaaaaAAAAAAaaaaaAAAaAaAaAaAAAaaAAAaaAaaaaaaaaaAaAaAAaAAAaAAaAAAaAaAAAaaAaaaAaaAAaAaaAaaAaAaAAAaAaaaAaaaaaAaaAaAAAaAaAAaAaAaaAaAaAAAAAAaa
        
#         llIlIIlIlllIlIIlIIllllIlIlllIIIlIllIIlllIIllIlIIIlIllIlllIllIlIIIlIllIlIIIIIlllIIllIllllllIlIIlIIIIlIIlIIllIIIIlllllllllIlIIIIllIlIIIlIIIIlIIIIlII = AaAaaaAaAAAaaaaaAAAAAAaaaaaAAAaAaAaAaAAAaaAAAaaAaaaaaaaaaAaAaAAaAAAaAAaAAAaAaAAAaaAaaaAaaAAaAaaAaaAaAaAAAaAaaaAaaaaaAaaAaAAAaAaAAaAaAaaAaAaAAAAAAaa.transform(IllIIII, R148 = False, b1655195511058795712 = 0)
#         WKICZAWLrfhjnpqmPIhgsVZyzcgNhRzkMLLCLSoWHKSXciNHHkozwSpJnkUVCdzWvFmfzWhCazGGJdd151 = np.mean(llIlIIlIlllIlIIlIIllllIlIlllIIIlIllIIlllIIllIlIIIlIllIlllIllIlIIIlIllIlIIIIIlllIIllIllllllIlIIlIIIIlIIlIIllIIIIlllllllllIlIIIIllIlIIIlIIIIlIIIIlII, b1655195511058795712 = 1)
        
#         uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu = np.empty(IllIIII.shape[1], QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = float)
#         A155 = np.empty(IllIIII.shape[1], QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = float)
        
#         for col in range(IllIIII.shape[1]):
#             uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu[col], A155[col] = np.polyfit(WKICZAWLrfhjnpqmPIhgsVZyzcgNhRzkMLLCLSoWHKSXciNHHkozwSpJnkUVCdzWvFmfzWhCazGGJdd151, llIlIIlIlllIlIIlIIllllIlIlllIIIlIllIIlllIIllIlIIIlIllIlllIllIlIIIlIllIlIIIIIlllIIllIllllllIlIIlIIIIlIIlIIllIIIIlllllllllIlIIIIllIlIIIlIIIIlIIIIlII[:, col], IIllIlIIIIIllIllIIIlllIIIIIlIIIlIlIlIllIIIIIlIlIIllIlIlIlIlIIIIIIlllllIIIIlIIIIllIIIIIIIlIlIIlIIIIlIIIIlIIIllllIlllllIllllIllIIIIlIIIllIlIIIIlllIlIIllllIllIl = 1)
        
#         self.a_ = uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
#         self.b_ = A155
       
#         return self

#     def transform(self, IllIIII):
#         check_is_fitted(self)
        
#         IllIIII = self._validate_data(
#             IllIIII, 
#             mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = False, 
#             lI = self.copy, 
#             QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
#             ZZZZZZZZZZ = self
#         )
        
#         if IllIIII.shape[1] != len(self.a_) or IllIIII.shape[1] != len(self.b_):
#             raise ValueError("Transform cannot be applied with provided IllIIII. Bad number of columns.")
        
#         IllIIII = self.scaler_.transform(IllIIII)
#         for col in range(IllIIII.shape[1]):
#             uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu = self.a_[col]
#             A155 = self.b_[col]
#             IllIIII[:, col] = (IllIIII[:, col] - A155) / uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
        
#         return IllIIII
    
#     def inverse_transform(self, IllIIII):
#         check_is_fitted(self)

#         IllIIII = check_array(
#             IllIIII, 
#             lI = self.copy, 
#             QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES
#         )

#         if IllIIII.shape[1] != len(self.a_) or IllIIII.shape[1] != len(self.b_):
#             raise ValueError("Inverse transform cannot be applied with provided IllIIII. Bad number of columns.")
        
#         for col in range(IllIIII.shape[1]):
#             uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu = self.a_[col]
#             A155 = self.b_[col]
#             IllIIII[:, col] = (IllIIII[:, col] * uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu) + A155
        
#         IllIIII = self.scaler_.inverse_transform(IllIIII)
#         return IllIIII
        
#     def _more_tags(self):
#         return {'allow_nan': False}



# def emsc(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv = [1, 2, 1, 1], X16551955114518182174 = False):
#     """ Performs (basic) extended multiplicative scatter correction to the mean.
#     Args:
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
#     Returns:
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : Scatter corrected NIR rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.
#     """

#     if X16551955114518182174:
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr = lllIllllIllIlIIllllIIIIlllIllIlIlllIllIIIIlIIlllIlIlIIIIllIlIIlllIlIIllIlIlIIllIlIllllllIIllIIIlIIIlllIllIllIlIlIIIlIllIlllllIIIllIIIII(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, R148 = False, b1655195511058795712 = 0)

#     j344 = .5 * (vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv[0] + vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv[-1])
#     lllIlIllIlIIlIIIlIIllIIIIIIlllllllllIllIIlIIIlllIllIIIIIlIIlllIllIIlllIIIlIlllllIIIIllIIIIlIIlllllIllIIIlIlIIIIIIIlIIIlIIllllIIlIIllIllllllIIIllIIlIIlIlIIIlIIlllIIIIIllIllIlIIlllIIIlIlIIllIIIIIIIIlIIIIllllIIIlIlIIllllIIllllIlIllIIIlIllIlllIllllIIIlIIIIIIIIIlllllllIIlIlllIlIIlIllIlIIIlIIllIlIIIllIIIllIlIIIIllIIIIIIIIIlIIlllIlIllllIIllIllllIIllI = 2 / (vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv[0] - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv[-1])

#     # Compute U346 terms
#     U346 = np.ones((vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv.size, 4))
#     U346[:, 1] = lllIlIllIlIIlIIIlIIllIIIIIIlllllllllIllIIlIIIlllIllIIIIIlIIlllIllIIlllIIIlIlllllIIIIllIIIIlIIlllllIllIIIlIlIIIIIIIlIIIlIIllllIIlIIllIllllllIIIllIIlIIlIlIIIlIIlllIIIIIllIllIlIIlllIIIlIlIIllIIIIIIIIlIIIIllllIIIlIlIIllllIIllllIlIllIIIlIllIlllIllllIIIlIIIIIIIIIlllllllIIlIlllIlIIlIllIlIIIlIIllIlIIIllIIIllIlIIIIllIIIIIIIIIlIIlllIlIllllIIllIllllIIllI * (vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv[0] - vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv) - 1
#     U346[:, 2] = (lllIlIllIlIIlIIIlIIllIIIIIIlllllllllIllIIlIIIlllIllIIIIIlIIlllIllIIlllIIIlIlllllIIIIllIIIIlIIlllllIllIIIlIlIIIIIIIlIIIlIIllllIIlIIllIllllllIIIllIIlIIlIlIIIlIIlllIIIIIllIllIlIIlllIIIlIlIIllIIIIIIIIlIIIIllllIIIlIlIIllllIIllllIlIllIIIlIllIlllIllllIIIlIIIIIIIIIlllllllIIlIlllIlIIlIllIlIIIlIIllIlIIIllIIIllIlIIIIllIIIIIIIIIlIIlllIlIllllIIllIllllIIllI ** 2) * ((vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv - j344) ** 2)
#     U346[:, 3] = np.mean(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, b1655195511058795712 = 1)

#     # Solve correction parameters
#     x348 = np.linalg.lstsq(U346, rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr)[0].T

#     # Apply correction
#     rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr = rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr - np.dot(x348[:, :-1], U346[:, :-1].T).T
#     rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr = np.multiply(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, 1 / np.repeat(x348[:, -1].reshape(1, -1), rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.shape[0], b1655195511058795712 = 0))

#     return rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr


## @TODO Add convolution
# def smooth(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, AAAAAAAaAAAAAAaaaaaAAaAaAaaaAaaAaaAaAaaAaaaAaaaaaAaaAaAaAaAaAAAAaaaaaaAAAaaAAaaaaAaAaAAAaAAAaaaAaAAAAAAaaAAaaaAAAaaaaaAaAAaAAaaaAAAaaaaaAAAAAAaaaaaaaaAaaaAAaaaAaAAAaAaAaAAaAAaAaAaaaAaAaaAaaaAaaAaAaAAaAaaAAaaAAAAAaaAAaaAAaAaAaAaAAAaaAAaAAaAaaAaAAAaAaaAaAAaaaaAAaaaaaaaaaAaAAaaaaAaaAaaAaaAaAaaaaAAaAaAaaaaaAAAAAaAAaaAaAaaaAAaAAaAaaAAaaAAaaaaAaaAaAaAAaaAa = 9, UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU = 'flat', M228 = 'reflect'):
#     """ Smooths the rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr using convolution.
#     Args:
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
#         AAAAAAAaAAAAAAaaaaaAAaAaAaaaAaaAaaAaAaaAaaaAaaaaaAaaAaAaAaAaAAAAaaaaaaAAAaaAAaaaaAaAaAAAaAAAaaaAaAAAAAAaaAAaaaAAAaaaaaAaAAaAAaaaAAAaaaaaAAAAAAaaaaaaaaAaaaAAaaaAaAAAaAaAaAAaAAaAaAaaaAaAaaAaaaAaaAaAaAAaAaaAAaaAAAAAaaAAaaAAaAaAaAaAAAaaAAaAAaAaaAaAAAaAaaAaAAaaaaAAaaaaaaaaaAaAAaaaaAaaAaaAaaAaAaaaaAAaAaAaaaaaAAAAAaAAaaAaAaaaAAaAAaAaaAAaaAAaaaaAaaAaAaAAaaAa < float > : length of the filter AAaaaaaaaaAAAAAAaAaAaAAaaaAaaAAaAaAaAAAaaaAaAAAaaAAAAAaAaaAaAAAAAAAaaaaAAaaAAAAAAaaaAAaaaaAaaAAAAaaAAaaaaAAAaAaaAaAAaAAAAaaAAAAaAAAaAaAaAaAaaaAAAaAaAaAAAaAAaaaAaAaaaaAAAaaAaaaaAAaAAAaAAAAaaaAAAaaaaAAAaaAaaAaaAAaAaaAaaAaaAaaaaAAAaaAAAaAAaaAaaaAaaaaaaAaAAaAaAaAAaaaAAAAAAaAAAaAAaaAaAAaAaAaAaaAaaAAaAaaAaAaAAaAAAaAaaaAAAAaaaaAaaAAAaAaAaaaAAAAAaaaaAaaAaAaAAaaA in samples.
#         UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU < str > : filtering AAaaaaaaaaAAAAAAaAaAaAAaaaAaaAAaAaAaAAAaaaAaAAAaaAAAAAaAaaAaAAAAAAAaaaaAAaaAAAAAAaaaAAaaaaAaaAAAAaaAAaaaaAAAaAaaAaAAaAAAAaaAAAAaAAAaAaAaAaAaaaAAAaAaAaAAAaAAaaaAaAaaaaAAAaaAaaaaAAaAAAaAAAAaaaAAAaaaaAAAaaAaaAaaAAaAaaAaaAaaAaaaaAAAaaAAAaAAaaAaaaAaaaaaaAaAAaAaAaAAaaaAAAAAAaAAAaAAaaAaAAaAaAaAaaAaaAAaAaaAaAaAAaAAAaAaaaAAAAaaaaAaaAAAaAaAaaaAAAAAaaaaAaaAaAaAAaaA to use for convolution (see scipy.signal.windows)
#         M228 < str > : convolution M228
#     Returns:
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : Smoothed NIR rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.
#     """

#     if UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU == 'flat':
#         AAaaaaaaaaAAAAAAaAaAaAAaaaAaaAAaAaAaAAAaaaAaAAAaaAAAAAaAaaAaAAAAAAAaaaaAAaaAAAAAAaaaAAaaaaAaaAAAAaaAAaaaaAAAaAaaAaAAaAAAAaaAAAAaAAAaAaAaAaAaaaAAAaAaAaAAAaAAaaaAaAaaaaAAAaaAaaaaAAaAAAaAAAAaaaAAAaaaaAAAaaAaaAaaAAaAaaAaaAaaAaaaaAAAaaAAAaAAaaAaaaAaaaaaaAaAAaAaAaAAaaaAAAAAAaAAAaAAaaAaAAaAaAaAaaAaaAAaAaaAaAaAAaAAAaAaaaAAAAaaaaAaaAAAaAaAaaaAAAAAaaaaAaaAaAaAAaaA = np.ones(AAAAAAAaAAAAAAaaaaaAAaAaAaaaAaaAaaAaAaaAaaaAaaaaaAaaAaAaAaAaAAAAaaaaaaAAAaaAAaaaaAaAaAAAaAAAaaaAaAAAAAAaaAAaaaAAAaaaaaAaAAaAAaaaAAAaaaaaAAAAAAaaaaaaaaAaaaAAaaaAaAAAaAaAaAAaAAaAaAaaaAaAaaAaaaAaaAaAaAAaAaaAAaaAAAAAaaAAaaAAaAaAaAaAAAaaAAaAAaAaaAaAAAaAaaAaAAaaaaAAaaaaaaaaaAaAAaaaaAaaAaaAaaAaAaaaaAAaAaAaaaaaAAAAAaAAaaAaAaaaAAaAAaAaaAAaaAAaaaaAaaAaAaAAaaAa)
#     else:
#         AAaaaaaaaaAAAAAAaAaAaAAaaaAaaAAaAaAaAAAaaaAaAAAaaAAAAAaAaaAaAAAAAAAaaaaAAaaAAAAAAaaaAAaaaaAaaAAAAaaAAaaaaAAAaAaaAaAAaAAAAaaAAAAaAAAaAaAaAaAaaaAAAaAaAaAAAaAAaaaAaAaaaaAAAaaAaaaaAAaAAAaAAAAaaaAAAaaaaAAAaaAaaAaaAAaAaaAaaAaaAaaaaAAAaaAAAaAAaaAaaaAaaaaaaAaAAaAaAaAAaaaAAAAAAaAAAaAAaaAaAAaAaAaAaaAaaAAaAaaAaAaAAaAAAaAaaaAAAAaaaaAaaAAAaAaAaaaAAAAAaaaaAaaAaAaAAaaA = scipy.signal.windows.get_window(UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU, AAAAAAAaAAAAAAaaaaaAAaAaAaaaAaaAaaAaAaaAaaaAaaaaaAaaAaAaAaAaAAAAaaaaaaAAAaaAAaaaaAaAaAAAaAAAaaaAaAAAAAAaaAAaaaAAAaaaaaAaAAaAAaaaAAAaaaaaAAAAAAaaaaaaaaAaaaAAaaaAaAAAaAaAaAAaAAaAaAaaaAaAaaAaaaAaaAaAaAAaAaaAAaaAAAAAaaAAaaAAaAaAaAaAAAaaAAaAAaAaaAaAAAaAaaAaAAaaaaAAaaaaaaaaaAaAAaaaaAaaAaaAaaAaAaaaaAAaAaAaaaaaAAAAAaAAaaAaAaaaAAaAAaAaaAAaaAAaaaaAaaAaAaAAaaAa)
#     AAaaaaaaaaAAAAAAaAaAaAAaaaAaaAAaAaAaAAAaaaAaAAAaaAAAAAaAaaAaAAAAAAAaaaaAAaaAAAAAAaaaAAaaaaAaaAAAAaaAAaaaaAAAaAaaAaAAaAAAAaaAAAAaAAAaAaAaAaAaaaAAAaAaAaAAAaAAaaaAaAaaaaAAAaaAaaaaAAaAAAaAAAAaaaAAAaaaaAAAaaAaaAaaAAaAaaAaaAaaAaaaaAAAaaAAAaAAaaAaaaAaaaaaaAaAAaAaAaAAaaaAAAAAAaAAAaAAaaAaAAaAaAaAaaAaaAAaAaaAaAaAAaAAAaAaaaAAAAaaaaAaaAAAaAaAaaaAAAAAaaaaAaaAaAaAAaaA = AAaaaaaaaaAAAAAAaAaAaAAaaaAaaAAaAaAaAAAaaaAaAAAaaAAAAAaAaaAaAAAAAAAaaaaAAaaAAAAAAaaaAAaaaaAaaAAAAaaAAaaaaAAAaAaaAaAAaAAAAaaAAAAaAAAaAaAaAaAaaaAAAaAaAaAAAaAAaaaAaAaaaaAAAaaAaaaaAAaAAAaAAAAaaaAAAaaaaAAAaaAaaAaaAAaAaaAaaAaaAaaaaAAAaaAAAaAAaaAaaaAaaaaaaAaAAaAaAaAAaaaAAAAAAaAAAaAAaaAaAAaAaAaAaaAaaAAaAaaAaAaAAaAAAaAaaaAAAAaaaaAaaAAAaAaAaaaAAAAAaaaaAaaAaAaAAaaA / np.sum(AAaaaaaaaaAAAAAAaAaAaAAaaaAaaAAaAaAaAAAaaaAaAAAaaAAAAAaAaaAaAAAAAAAaaaaAAaaAAAAAAaaaAAaaaaAaaAAAAaaAAaaaaAAAaAaaAaAAaAAAAaaAAAAaAAAaAaAaAaAaaaAAAaAaAaAAAaAAaaaAaAaaaaAAAaaAaaaaAAaAAAaAAAAaaaAAAaaaaAAAaaAaaAaaAAaAaaAaaAaaAaaaaAAAaaAAAaAAaaAaaaAaaaaaaAaAAaAaAaAAaaaAAAAAAaAAAaAAaaAaAAaAaAaAaaAaaAAaAaaAaAaAAaAAAaAaaaAAAAaaaaAaaAAAaAaAaaaAAAAAaaaaAaaAaAaAAaaA)

#     for column in range(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.shape[1]):
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr[:, column] = nd.convolve(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr[:, column], AAaaaaaaaaAAAAAAaAaAaAAaaaAaaAAaAaAaAAAaaaAaAAAaaAAAAAaAaaAaAAAAAAAaaaaAAaaAAAAAAaaaAAaaaaAaaAAAAaaAAaaaaAAAaAaaAaAAaAAAAaaAAAAaAAAaAaAaAaAaaaAAAaAaAaAAAaAAaaaAaAaaaaAAAaaAaaaaAAaAAAaAAAAaaaAAAaaaaAAAaaAaaAaaAAaAaaAaaAaaAaaaaAAAaaAAAaAAaaAaaaAaaaaaaAaAAaAaAaAAaaaAAAAAAaAAAaAAaaAaAAaAaAaAaaAaaAAaAaaAaAaAAaAAAaAaaaAAAAaaaaAaaAAAaAaAaaaAAAAAaaaaAaaAaAaAAaaA, M228 = M228)

#     return rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

# ### @TODO check if function is useful for our purpose (I think not)
# def lsnv(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK = 10):
#     """ Perform local scatter correction using the standard normal variate.
#     Args:
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
#         KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK < int > : number of equispaced windows to use (AAaaaaaaaaAAAAAAaAaAaAAaaaAaaAAaAaAaAAAaaaAaAAAaaAAAAAaAaaAaAAAAAAAaaaaAAaaAAAAAAaaaAAaaaaAaaAAAAaaAAaaaaAAAaAaaAaAAaAAAAaaAAAAaAAAaAaAaAaAaaaAAAaAaAaAAAaAAaaaAaAaaaaAAAaaAaaaaAAaAAAaAAAAaaaAAAaaaaAAAaaAaaAaaAAaAaaAaaAaaAaaaaAAAaaAAAaAAaaAaaaAaaaaaaAaAAaAaAaAAaaaAAAAAAaAAAaAAaaAaAAaAaAaAaaAaaAAaAaaAaAaAAaAAAaAaaaAAAAaaaaAaaAAAaAaAaaaAAAAAaaaaAaaAaAaAAaaA size (in points) is length / KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK)
#     Returns:
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data with local SNV applied.
#     """

#     bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb = np.array_split(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK, b1655195511058795712 = 0)
#     for idx, part in enumerate(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb):
#         bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb[idx] = snv(part)

#     return np.concatenate(bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb, b1655195511058795712 = 0)
# ####






# class StandardNormalVariate(TransformerMixin, BaseEstimator):
    
#     def __init__(self, *, lI = True):
#         self.copy = lI

#     def _reset(self):
#         if hasattr(self, "b1655195511056795811"):
#             del self.mean_
#             del self.std_

#     def fit(self, IllIIII, lIll = None):
#         self._reset()        
#         return self.partial_fit(IllIIII, lIll)
    
#     def partial_fit(self, IllIIII, lIll = None):
#         if sparse.issparse(IllIIII):
#             raise TypeError("Standard Normal Variate does not support sparse input")
        
#         ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6 = not hasattr(self, "b1655195511056795811")
#         IllIIII = self._validate_data(
#             IllIIII, 
#             mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6, 
#             QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
#             ZZZZZZZZZZ = self
#         )
        
#         self.mean_ = np.mean(IllIIII, b1655195511058795712 = 0)
#         self.std_ = np.std(IllIIII, b1655195511058795712 = 0)
#         return self

#     def transform(self, IllIIII):
#         check_is_fitted(self)
        
#         IllIIII = self._validate_data(
#             IllIIII, 
#             mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = False, 
#             lI = self.copy, 
#             QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
#             ZZZZZZZZZZ = self
#         )
        
#         IllIIII = (IllIIII - self.mean_) / self.std_
#         return IllIIII
    
#     def inverse_transform(self, IllIIII):
#         check_is_fitted(self)

#         IllIIII = check_array(
#             IllIIII, 
#             lI = self.copy, 
#             QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES
#         )

#         IllIIII = (IllIIII * self.std_) + self.mean_
#         return IllIIII

#     def _more_tags(self):
#         return {'allow_nan': False}
    
    
# def snv(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr):
#     """ Perform scatter correction using the standard normal variate.
#     Args:
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
#     Returns:
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data with (S/R)NV applied.
#     """

#     return (rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr - np.mean(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, b1655195511058795712 = 1)) / np.std(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, b1655195511058795712 = 1)


# class RobustNormalVariate(TransformerMixin, BaseEstimator):

#     def __init__(self, lllllllIIIlllIIIIllllIIllIIIIIlIIIlIlIlIllIllIIlIllIlIIlIllllIIIlIIIIIIIIIIlIllIIlIIIllIIIlllIllllIlIIllIlllIlllIIIIllIlllIIlIIIIlIIllIIlllllIIIllIIIlllIIllIlIlIlIllIllllIlIlIIIlIlIlIlIllIIIlIlIlIIIIlllIlIlIIIIIIIIlllIlIIIIIIlIIlIIIIIIlIIIIIIlIIllIIIIllIIIlIlIllIIIlIIIllIlIIIIlIllllIllllIllIIlIIllIlIIllIIIIllIIIlllIIIlllIIlllIlllllIIlIIIlIllIllllIIlllIIlIlIllIlIIIIlllllIllIIIlIIIIlllIlI = [75, 25], *, lI = True):
#         self.copy = lI
#         self.iqr = lllllllIIIlllIIIIllllIIllIIIIIlIIIlIlIlIllIllIIlIllIlIIlIllllIIIlIIIIIIIIIIlIllIIlIIIllIIIlllIllllIlIIllIlllIlllIIIIllIlllIIlIIIIlIIllIIlllllIIIllIIIlllIIllIlIlIlIllIllllIlIlIIIlIlIlIlIllIIIlIlIlIIIIlllIlIlIIIIIIIIlllIlIIIIIIlIIlIIIIIIlIIIIIIlIIllIIIIllIIIlIlIllIIIlIIIllIlIIIIlIllllIllllIllIIlIIllIlIIllIIIIllIIIlllIIIlllIIlllIlllllIIlIIIlIllIllllIIlllIIlIlIllIlIIIIlllllIllIIIlIIIIlllIlI

#     def _reset(self):
#         if hasattr(self, "AAaAAaaaAAAAAaAAAAaAaAAaAAAAaaaaAaaaaaAAaAAaAAAaaAAAAAaaaaaaAaAaaaaaAAAaAAaAaaAAaaaaaAAAAaAaaAaaaAaAaAAAaaAaAAAaAaAaAaaAAaaAaaaaaaAaaaAAAaAAaaAAaAAaAaaaAAaaAAaAaAAAAAAAAaAaAAAaAaAaAAAaAaaAAaaAaaAaAaAaaAAAaAaaAAAaAaaAaaAaaAaaAaAAAaAaAaAAAaaAaaaAAaaAAaAaAaAAaaaAaaAaaAaAaaaaAAaaAAaaAaaaAAAAAAaAaaaaaAaAaaAAaAAaAAAaAAAaaAaaAaaAAAaAaaAaAaAAaAAaaaAaaAAAAaAAaaAAaaAaAAaAAAAAaaAAAAAAAAaaaaAaAAaaaAaaAaAaAaAaA"):
#             del self.median_
#             del self.percentile_

#     def fit(self, IllIIII, lIll = None):
#         self._reset()        
#         return self.partial_fit(IllIIII, lIll)
    
#     def partial_fit(self, IllIIII, lIll = None):
#         lllllllIIIlllIIIIllllIIllIIIIIlIIIlIlIlIllIllIIlIllIlIIlIllllIIIlIIIIIIIIIIlIllIIlIIIllIIIlllIllllIlIIllIlllIlllIIIIllIlllIIlIIIIlIIllIIlllllIIIllIIIlllIIllIlIlIlIllIllllIlIlIIIlIlIlIlIllIIIlIlIlIIIIlllIlIlIIIIIIIIlllIlIIIIIIlIIlIIIIIIlIIIIIIlIIllIIIIllIIIlIlIllIIIlIIIllIlIIIIlIllllIllllIllIIlIIllIlIIllIIIIllIIIlllIIIlllIIlllIlllllIIlIIIlIllIllllIIlllIIlIlIllIlIIIIlllllIllIIIlIIIIlllIlI = self.iqr
#         if len(lllllllIIIlllIIIIllllIIllIIIIIlIIIlIlIlIllIllIIlIllIlIIlIllllIIIlIIIIIIIIIIlIllIIlIIIllIIIlllIllllIlIIllIlllIlllIIIIllIlllIIlIIIIlIIllIIlllllIIIllIIIlllIIllIlIlIlIllIllllIlIlIIIlIlIlIlIllIIIlIlIlIIIIlllIlIlIIIIIIIIlllIlIIIIIIlIIlIIIIIIlIIIIIIlIIllIIIIllIIIlIlIllIIIlIIIllIlIIIIlIllllIllllIllIIlIIllIlIIllIIIIllIIIlllIIIlllIIlllIlllllIIlIIIlIllIllllIIlllIIlIlIllIlIIIIlllllIllIIIlIIIIlllIlI) < 2 or lllllllIIIlllIIIIllllIIllIIIIIlIIIlIlIlIllIllIIlIllIlIIlIllllIIIlIIIIIIIIIIlIllIIlIIIllIIIlllIllllIlIIllIlllIlllIIIIllIlllIIlIIIIlIIllIIlllllIIIllIIIlllIIllIlIlIlIllIllllIlIlIIIlIlIlIlIllIIIlIlIlIIIIlllIlIlIIIIIIIIlllIlIIIIIIlIIlIIIIIIlIIIIIIlIIllIIIIllIIIlIlIllIIIlIIIllIlIIIIlIllllIllllIllIIlIIllIlIIllIIIIllIIIlllIIIlllIIlllIlllllIIlIIIlIllIllllIIlllIIlIlIllIlIIIIlllllIllIIIlIIIIlllIlI[0] <= lllllllIIIlllIIIIllllIIllIIIIIlIIIlIlIlIllIllIIlIllIlIIlIllllIIIlIIIIIIIIIIlIllIIlIIIllIIIlllIllllIlIIllIlllIlllIIIIllIlllIIlIIIIlIIllIIlllllIIIllIIIlllIIllIlIlIlIllIllllIlIlIIIlIlIlIlIllIIIlIlIlIIIIlllIlIlIIIIIIIIlllIlIIIIIIlIIlIIIIIIlIIIIIIlIIllIIIIllIIIlIlIllIIIlIIIllIlIIIIlIllllIllllIllIIlIIllIlIIllIIIIllIIIlllIIIlllIIlllIlllllIIlIIIlIllIllllIIlllIIlIlIllIlIIIIlllllIllIIIlIIIIlllIlI[1] or all((v < 0) and (v > 100) for v in lllllllIIIlllIIIIllllIIllIIIIIlIIIlIlIlIllIllIIlIllIlIIlIllllIIIlIIIIIIIIIIlIllIIlIIIllIIIlllIllllIlIIllIlllIlllIIIIllIlllIIlIIIIlIIllIIlllllIIIllIIIlllIIllIlIlIlIllIllllIlIlIIIlIlIlIlIllIIIlIlIlIIIIlllIlIlIIIIIIIIlllIlIIIIIIlIIlIIIIIIlIIIIIIlIIllIIIIllIIIlIlIllIIIlIIIllIlIIIIlIllllIllllIllIIlIIllIlIIllIIIIllIIIlllIIIlllIIlllIlllllIIlIIIlIllIllllIIlllIIlIlIllIlIIIIlllllIllIIIlIIIIlllIlI):
#             raise ValueError(
#                 "Interquartile range is not correctly defined. Got %s."
#                 % str(lllllllIIIlllIIIIllllIIllIIIIIlIIIlIlIlIllIllIIlIllIlIIlIllllIIIlIIIIIIIIIIlIllIIlIIIllIIIlllIllllIlIIllIlllIlllIIIIllIlllIIlIIIIlIIllIIlllllIIIllIIIlllIIllIlIlIlIllIllllIlIlIIIlIlIlIlIllIIIlIlIlIIIIlllIlIlIIIIIIIIlllIlIIIIIIlIIlIIIIIIlIIIIIIlIIllIIIIllIIIlIlIllIIIlIIIllIlIIIIlIllllIllllIllIIlIIllIlIIllIIIIllIIIlllIIIlllIIlllIlllllIIlIIIlIllIllllIIlllIIlIlIllIlIIIIlllllIllIIIlIIIIlllIlI)
#             )
            
#         if sparse.issparse(IllIIII):
#             raise TypeError("Robust Normal Variate does not support sparse input")
        
#         ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6 = not hasattr(self, "AAaAAaaaAAAAAaAAAAaAaAAaAAAAaaaaAaaaaaAAaAAaAAAaaAAAAAaaaaaaAaAaaaaaAAAaAAaAaaAAaaaaaAAAAaAaaAaaaAaAaAAAaaAaAAAaAaAaAaaAAaaAaaaaaaAaaaAAAaAAaaAAaAAaAaaaAAaaAAaAaAAAAAAAAaAaAAAaAaAaAAAaAaaAAaaAaaAaAaAaaAAAaAaaAAAaAaaAaaAaaAaaAaAAAaAaAaAAAaaAaaaAAaaAAaAaAaAAaaaAaaAaaAaAaaaaAAaaAAaaAaaaAAAAAAaAaaaaaAaAaaAAaAAaAAAaAAAaaAaaAaaAAAaAaaAaAaAAaAAaaaAaaAAAAaAAaaAAaaAaAAaAAAAAaaAAAAAAAAaaaaAaAAaaaAaaAaAaAaAaA")
#         IllIIII = self._validate_data(
#             IllIIII, 
#             mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = ljDufZLJwgDDHrYLFtbDglJLUamlTJygTlDwuHFrFWDtfxCCpxMevoKeQrgDBgYZBIVmjWFRSYwsKbp6, 
#             QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
#             ZZZZZZZZZZ = self
#         )
        
#         self.median_ = np.median(IllIIII, b1655195511058795712 = 0)
#         self.percentile_ = np.percentile(IllIIII, lllllllIIIlllIIIIllllIIllIIIIIlIIIlIlIlIllIllIIlIllIlIIlIllllIIIlIIIIIIIIIIlIllIIlIIIllIIIlllIllllIlIIllIlllIlllIIIIllIlllIIlIIIIlIIllIIlllllIIIllIIIlllIIllIlIlIlIllIllllIlIlIIIlIlIlIlIllIIIlIlIlIIIIlllIlIlIIIIIIIIlllIlIIIIIIlIIlIIIIIIlIIIIIIlIIllIIIIllIIIlIlIllIIIlIIIllIlIIIIlIllllIllllIllIIlIIllIlIIllIIIIllIIIlllIIIlllIIlllIlllllIIlIIIlIllIllllIIlllIIlIlIllIlIIIIlllllIllIIIlIIIIlllIlI, b1655195511058795712 = 0)
#         return self

#     def transform(self, IllIIII):
#         check_is_fitted(self)
        
#         IllIIII = self._validate_data(
#             IllIIII, 
#             mYzGqdWNKMukazdZNMmkEIhHVxgEvtFHPEoVsQLrGGPzwFZKMSZnjHLRluXTYSwGirMPDcbYXNJOqcH8 = False, 
#             lI = self.copy, 
#             QqlqRamukSDSXrEdjPgAYCFoDHfVNkQBWIaLMoCaTiHNfbyCqIoxxcDsnyKAJRVXdfqZjjUiIIXvMUp9 = FLOAT_DTYPES, 
#             ZZZZZZZZZZ = self
#         )
        
#         IllIIII = (IllIIII - self.median_) / np.subtract(*self.percentile_)
#         return IllIIII
    
#     def _more_tags(self):
#         return {'allow_nan': False}
    

# def rnv(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, lllllllIIIlllIIIIllllIIllIIIIIlIIIlIlIlIllIllIIlIllIlIIlIllllIIIlIIIIIIIIIIlIllIIlIIIllIIIlllIllllIlIIllIlllIlllIIIIllIlllIIlIIIIlIIllIIlllllIIIllIIIlllIIllIlIlIlIllIllllIlIlIIIlIlIlIlIllIIIlIlIlIIIIlllIlIlIIIIIIIIlllIlIIIIIIlIIlIIIIIIlIIIIIIlIIllIIIIllIIIlIlIllIIIlIIIllIlIIIIlIllllIllllIllIIlIIllIlIIllIIIIllIIIlllIIIlllIIlllIlllllIIlIIIlIllIllllIIlllIIlIlIllIlIIIIlllllIllIIIlIIIIlllIlI = [75, 25]):
#     """ Perform scatter correction using robust normal variate.
#     Args:
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data matrix.
#         lllllllIIIlllIIIIllllIIllIIIIIlIIIlIlIlIllIllIIlIllIlIIlIllllIIIlIIIIIIIIIIlIllIIlIIIllIIIlllIllllIlIIllIlllIlllIIIIllIlllIIlIIIIlIIllIIlllllIIIllIIIlllIIllIlIlIlIllIllllIlIlIIIlIlIlIlIllIIIlIlIlIIIIlllIlIlIIIIIIIIlllIlIIIIIIlIIlIIIIIIlIIIIIIlIIllIIIIllIIIlIlIllIIIlIIIllIlIIIIlIllllIllllIllIIlIIllIlIIllIIIIllIIIlllIIIlllIIlllIlllllIIlIIIlIllIllllIIlllIIlIlIllIlIIIIlllllIllIIIlIIIIlllIlI < list > : IQR ranges [lower, upper] for robust normal variate.
#     Returns:
#         rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr < numpy.ndarray > : NIRS data with (S/R)NV applied.
#     """

#     return (rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr - np.median(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, b1655195511058795712 = 1)) / np.subtract(*np.percentile(rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr, lllllllIIIlllIIIIllllIIllIIIIIlIIIlIlIlIllIllIIlIllIlIIlIllllIIIlIIIIIIIIIIlIllIIlIIIllIIIlllIllllIlIIllIlllIlllIIIIllIlllIIlIIIIlIIllIIlllllIIIllIIIlllIIllIlIlIlIllIllllIlIlIIIlIlIlIlIllIIIlIlIlIIIIlllIlIlIIIIIIIIlllIlIIIIIIlIIlIIIIIIlIIIIIIlIIllIIIIllIIIlIlIllIIIlIIIllIlIIIIlIllllIllllIllIIlIIllIlIIllIIIIllIIIlllIIIlllIIlllIlllllIIlIIIlIllIllllIIlllIIlIlIllIlIIIIlllllIllIIIlIIIIlllIlI, b1655195511058795712 = 1))

A = "hICHqwnQBQoNZShPpzoOvtuPmZvonfExXlImWTNeRTPvyCRAANyWHhuTAOtyxJzDFObyhPLgQMboCFA"
Q165519551246881723 = 374
q165519551246881725 = 504
t165519551246881727 = "PaqsCVGfAyUQMzqbHtFncMAHMMMdQMHdHtmFJYgFvVUjRKoSmhDmPQaSUXtLsLROPZOCQYIXgihgjQo"
BxMigMLkBNAuZKujlNYvjsEEETDNmxILmplGzLiKyhjfBndIJpdQNAvDFqQxFDegdBUAvrZSEnlTmbO9 = 181
AaAaaaAaaAa = 354
c13 = 327
AAAaaaAAaaaAaAa = 275
aAAAAAAaAAaaaAaAa = 385
J19 = 627
bbbbbbbbbbbbbbbbbbbbb = 216
UUUUUUUUUUUUUUUUUUUUUUU = 343
aaaaAaaaAAaAAaAaAaAaAAaaa = 431
c27 = 493
bbbbbbbbbbbbbbbbbbbbbbbbbbbbb = "cyNbiQkjbnyakecRpXUfHyKduvhsKGUmBwEOQZEADvunxRIorczYWMTJlxArvphyncjwgIlHcjSjNBD"
lIlIIllIllIlIlllIlIllIIIlIlIIIl = "uCcpKLVHlCGvChkriMqoQMoIQbTgsXxSViPYfMBnOpaKAfMEhxBrSELpuAjgUhpNEeyFyWpzEGjZosj"
cxsmUYofLGCOgZRBZfGOTRpUbBZRPfRGcgwuBRKxlYKjhWsCKwKaUbxzmEwzmcIuqvEGEZYQTchhZos33 = "syALheuHEOYMAvIGyFtNERuvBADQsYdXhcvRAhQfHKnoIlDDwekCqAgoBkoEFmLcdxgmQhlJPGALYhX"
aAAaaAAaaAaaAaaaaaaaaAaaAaAAaAaAaaa = 366
lIIIIIIllllIIllIIIllIllIllllIIlllllll = "QdajXiAMqsuiLNIHlmkUjmIxTploWDJeJUIeKZRxRTyOyyOyKpgshrZIuOqdhjOQziXStqtvncTboTK"
D39 = "zUWijauiCgzJSfYJDvhuLvLJqVMTPjxlTqNyhjQYVBwvGeUmosRozhCTVWBjMamYGZDfGZRoUTWQnMU"
M165519551247181941 = "jqHobqriPpQGrcjrxeFndBVkcKnEhaFexBOUFYgFKYiFHGKjwomDCvlgyrwSCjePZBtsfksQMyyOTlz"
D165519551247181943 = "MNjzzpAZWyzYlBvUKQFwkswwSdCcowANwPrMnfXeaQVGJYbMSiVGamVXqTGpKvbcYkqYUmwiaMooUrL"
fffffffffffffffffffffffffffffffffffffffffffff = "yYJgIGqodrNXQmrXZMwWViXNwKwDqorBnSsgMtYXkcYrSZspmQkaUVdAtgJOKWrynpwtmWqstHjJIQg"
eVQIGpXrZUcfdoWQyBzasiZGMHotOIrECDFWqdilYzbgvXZYEBliCHpjqduUvUGApyQgRvgHplezNKA47 = "tJdCCWJNuvKJWKsCcCHGUjUizYdGZKfHkjiGYUQesFEbRnjrzvFyADHirREDnQvnubLzvAdteqbiXHS"
aaAAAAaaaAaAAaAAAAAaAAAaaaAaaAAAAAAAaaAaaAaaAaaAa = 632
JIkGBAFdCCvyutCSqkSardGemPaqGTRkvgTqOOIuciiCdOVPtFYKnKNAneGKwMGnaFkbItspAgECbiZ51 = 360
aAaaAAAaaaAaAaAAaaAAaAaAaAaaaAAaaAaAAAAaaAaAaaAAAaAAA = "kBuZHQPsPYmDUoJErXsFSJqEzNnsCzdxqujHfOsJgkDlwbnxGGAUgTMIOlplIGcegquggeBPqNyHWzN"
a55 = 438
W1655195512473817357 = 232
AaaAAAAAaaaAaaaAaaaAaAaaaAaaaAaaaaaAAAAaAAAAAAaaaAaAAAAaaAa = "SOimZlCCiQCbnhurFJEGdwWGyvaSWAQfWhoXsmQrErBWNqgaOIQxyRiprzGsMPrKPmOazSNaJEAxMHp"
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG = 397
G1655195512473817363 = "XSZvqeFnwfjakcoVUMkrUUHZiqFXiqJIXANlepATYKWIBvHrgmbxErHJuHCTlZScYfhVYGOhBYcclhv"
Q65 = 414
cYNOYZdbehWvwoighWwHRfWsHFVaEXiwVzRdMtKYeqjHKEYVrMsNRPhYPixgXwNsLkEicgavxxNSUCA67 = 478
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX = "iqVCRdgxgavCEFaojkfkHukzkmxzSNoBVnVpfWHqJRpjmNIkwGLwOrEvJlCCQCsbwBBKtBXfYUmFRfT"
H71 = 322
AAAaaAAaAAaaAAaAaAaaAAaAAaaAAaaAaaaAAaAaaaaaAAaAaaaaaAAaAAaAaaAaAAaaaAAaa = 619
lIllIllllIIIIlIIIIlIlllllIIIllIIIlllIIIIllllIIIllIllIlllIlllIlIIIllIIIIllll = 76
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ = "zwtWZEcDOmYgKkrcfkuRJRADPJsYpVNACFSAaSurbWzqddQKUbdZjdgJtzMglRJJxazRZvMQgtrCKDt"
MbKVuMvxMeJDfqMpskSjeOfgzKjOKUNcVeeSvVfIpZOJLSpewunmMKoHGmAJSyOtcXqpQXjkjuBAHqy79 = "GnppSXNAJnlaFXVNJcauKfJMhbSDktJLmbtDaPQsseiTgpoaslxCqZomNnCFMmMDaEbnAsxQZURrsWL"
AaaaaAaAaaAAAAAaAAaaaAaaAAAAAAAaaaAaAaAaaaaaAAaaaaAaaAaaAaAaAaaaaAaaAaaAaaaAAAAaA = 499
eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee = "GTHrGtxVmftBLUAnQueWzFagfxKbwFGNayBksituOHeloGrFwLGctzmgWZgHgAEWngUvsLuzMbXaqQz"
vvwtYBXJPRvuJATPDRzCiAtiNAXuVVHFmlVkjbFIyPAzjuHrVPHikwfWYRfQgRGBfSqwmuvWrjkxKun85 = "FriwBxcSEVlCsMMBgnOZIbFmVPcLTajAXtKzgBlIQLDyOQtSEhvQkJuJmICfPpsWLsYGDkOrIVJkAYk"
kdvhXNaucgVyRzBCgsglnkEzWhTmxgdiswHZrJWaIyiFqiqtWIWPHVbEDaegoeMcdhKuSsViFGbTNow87 = 266
q1655195512476817689 = "nFtxWBUeRVhGxfJLePqXKwnpXWiEuuzRBUHpoANhsAqVRALKrFYsbYGEkceDCkHLplXKXsUmbQQSFGn"
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ = "GBaAtcKfBFxGeNbVVJjEtDVbVzLyVXoBQMSylyDSGtAkwSWOMEHrfoakApcAJRcuBlcNBrLGTCejrbZ"
IIlIIlIIllIlIIllIllIlIlIlllIIIlIIlIlllllIlIIllllIlllllIlIllIIllIIIllllIllllIIIIlIIIlllIIIIllI = 438
aaAAaaAAaAaAAaaaaAaAaaAAaaAaaAAAAAAaAaaAaaAAAAAAAaaAAaaAaaAAaaAAaaaaaaaAAaaAAaAAAAaAAaaAaAAAAaa = 307
bEoAwxZOxlbDiEqLzCwlOEfuMaarhBLEwOFkRjOTiwsyuyPvlDkeSOQvWLXTTpvKAzGsjKearvitViC97 = "CFmCRwYvTAJCHQaCvZjvjuzxaSxxzsQJtrGKzitgIxteTgQGCpaNIqlqtWLCIPWmAGPBHaxnPSZBkxc"
wltbulpTThGDDqnfdiBcvNhiDoiBBTRPzfiOXSOaJJsQZaxcgTwLZaaeRPehOrTlkBwSCOWERIKHbFA99 = "QuxywyeuQFpcSFwCFfTmAvGyMnceKANhYuIglKbpGHEGiCGnlYXcKvYVWunqqqWxUlsTFGQegBgcFcc"
JMEztvhDGfvJQYhCbGfPFFHXHVxrQtIAivkGBCRefrOwgNLOyYpClHwJUPVSVqnhdyZkJZaDsDeFTCW101 = "yJUHEcKHOYtdGYlzzCQyBQdAQyUEOChcNeRtILBUReCWTrJqMFSUjwXLbYCTWQwYmbBTvjxczXvUyOT"
aaaaAAAAAAaaAaaAAaAAAAAaAaaaAaAAAAaaaaAAAaAAaAaAaAAAAaaaAaAAAaaAaaAAAAAaAaAAaAAAAaaaaaaAaaaAAAAaAAAaaaa = 151
njkLCqzTOXrllnTZFVWXgFNgIbTbTyUKkozOpeNrwfVNSALgGoYmjBVnMPFTExVBywLgqnPffcoBxYR105 = 252
tUEANjZFXwRZhxtFFeJSBknivkuvHWAlLhPZYTFoicrmXMJuUoBNoSxSwzwTODXftkDeHPpsjCTHZRA107 = 209
IIlIllIIIlllllIIlIlIllllllIIIlIlIllllIIIIIlIIIlIIIlIlIIIIlllIIIlIIlIllIlIlIlIlIIIIIIlIIlIllIIllIIIIIllIIlllll = "TmwHkkMckTbkInRDeJRqvgMIyQPtHFwDFkDJHrqXXLBoahvghyVsdpUMZTVyWGGkgDSVbLqpOlhIXpS"
gWvXySWeSdwHSOXTohConzkLKWLdulBbMBLBnAQkLxdebArWIHfqiXcrYwXlmtgptfDiqdxqJniigIx111 = 780
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc = 463
AaAAAaAaAaaAAAAAaaaAAaaaaAaaaaaAAAAAAaaAaaAaaAaAaaaaaAAAAAaAAaaaaAAaAAAAAaaAaAAAaaaaaAAAaaaAAaaAaaAAAaaAaAaAAaaaaaa = 304
lIlIlllIlIlIllIllIlllIllIIIIllllIIllIlllIIIlIIlIIIIIIIIlIlIlIlIIIlllllIlIlIIlllIllllIlIlIllIlIllIIIlIIlIIIIIIlIlIIlII = "YfFqhOILlzOvIYuxBsCWWkVzTVGZlIZqFWpkeqKuWgzRQjpLWZqoPqOkOLRRytndjxJKKrwEpUUaosm"
llIlIlllIlIllIIIllIIIllllIlIIIIIIlIIllllIIIIlIIlIIIllIllllIIlIllllIllIIIlIIIIIIIIlIlllllIlIIlIIIlIIlIIllIIlIIllllllIIIl = "EvDIqUfhlfZjICHuKmnlDYgEYTqnPYFpNvrKjlqSMExgTIOEHyibaoaSyTZdlWwaYBvDvjNIKYhcjeS"
NMmeCpMzbNVMgwslIHrxPsRowLvltPUnYmXDxHnBGSSGxqAzMVfFhrefIltdtRusHmvIbxwbkaDumfn121 = 272