Jump to content

reboot12

Member
  • Posts

    833
  • Joined

  • Last visited

  • Days Won

    2
  • Donations

    0.00 USD 
  • Country

    Poland

Posts posted by reboot12

  1. @Dietmar

    Yeeeeeeeeeeeaaaaaaaaaaaa! I patched hal.dll to fix reboot WinXP 64-bit booted on UEFI mode:cheerleader::cheerleader::cheerleader:

        0x106BB: 7F 0F > 74 24
        0x106E1: CC CC CC CC CC CC CC CC CC > B0 06 66 BA F9 0C EE EB FE

    Tested problematic PC's: Gemini Lake (Dell Wyse 5070), Valleyview SoC (Asus J1800I-C). Now WinXP reboot properly under pure UEFI :D:P
    The patch should work on 95% of PCs, especially Intel ones.
    @Dietmar Please test reboot on yours Dell Wyse and report. Test also my kdcom.dll patch for WinDbg

  2. @Dietmar

    I found how fix original 64-bit kdcom.dll 5.2.3790.1830 - just change 3 bytes:

    offset 0xE0F:	FF 50 78  >  48 31 C0

    and recalculate checksum using my setcsum.exe

    The patch ignores the ACPI DBGP table which prevents the debugger from being redirected to the raw, uninitialized MMIO address of the LPSS UART controller.
    Thanks to this, the UART controller on the LPC (ISA Bridge) is used and possible debug WinXP 64-bit over COM1 in WinDbg :cheerleader:

    I f..k KDNET :cool::whistle:

    https://www.mediafire.com/file/jge7rouoczix8eh/kdcom_DBGP_patch.zip/file

    Now I can test your WLAN 9560 driver professionally :D

  3. @Dietmar
    Yeeeeeeeeeeeeeeeeeeeaaaaaaaaaaaaaaaaaaaa :cheerleader::cheerleader::thumbup
    I fixed the kdcom.dll source code and finally WinDbg debugging works on Dell GeminiLake  >>> over COM1 port <<< :
    This is debug your diagnostic WinXP 64-bit 9560 Wifi driver on Dell:

    Waiting to reconnect...
    Connected to Windows Server 2003 3790 x64 target at (Wed May 27 16:21:58.032 2026 (UTC + 2:00)), ptr64 TRUE
    Kernel Debugger connection established.
    Symbol search path is: *** Invalid ***
    ****************************************************************************
    * Symbol loading may be unreliable without a symbol search path.           *
    * Use .symfix to have the debugger choose a symbol path.                   *
    * After setting your symbol path, use .reload to refresh symbol locations. *
    ****************************************************************************
    Executable search path is: 
    *********************************************************************
    * Symbols can not be loaded because symbol path is not initialized. *
    *                                                                   *
    * The Symbol Path can be set by:                                    *
    *   using the _NT_SYMBOL_PATH environment variable.                 *
    *   using the -y <symbol_path> argument when starting the debugger. *
    *   using .sympath and .sympath+                                    *
    *********************************************************************
    *** ERROR: Symbol file could not be found.  Defaulted to export symbols for ntkrnlmp.exe - 
    Windows Server 2003 Kernel Version 3790 MP (1 procs) Free x64
    Built by: 3790.srv03_sp2_rtm.070216-1710
    Machine Name:
    Kernel base = 0xfffff800`01600000 PsLoadedModuleList = 0xfffff800`017d5100
    System Uptime: not available
    [UefiNvram] DriverEntry
    [UefiNvram] Scanning low memory for handoff block: 0x80000 - 0x4000000
    [UefiNvram] Handoff block found at PA=0x3FFF000
    [UefiNvram]   Version:          1
    [UefiNvram]   Size:             1908
    [UefiNvram]   SAVT source addr: 0x7796B000
    [UefiNvram] RT info:
    [UefiNvram]   GetVariable phys: 0x783815E4
    [UefiNvram]   SetVariable phys: 0x783816DC
    [UefiNvram]   RtRegionCount:    15
    [UefiNvram]   Region[0]: RT_data  PA=0x77D5F000  pages=1405  attr=0x800000000000000F
    [UefiNvram] Mapped RT_data  PA=0x77D5F000  VA=FFFFFADF2B364000  size=5754880
    [UefiNvram]   Region[1]: RT_code  PA=0x782DC000  pages=211  attr=0x800000000000000F
    [UefiNvram] Mapped RT_code  PA=0x782DC000  VA=FFFFFADF2B291000  size=864256
    [UefiNvram]   Region[2]: RT_data  PA=0x79501000  pages=2  attr=0x800000000000000F
    [UefiNvram] Mapped RT_data  PA=0x79501000  VA=FFFFFADF2DDAF000  size=8192
    [UefiNvram]   Region[3]: RT_data  PA=0x795E4000  pages=256  attr=0x800000000000000F
    [UefiNvram] Mapped RT_data  PA=0x795E4000  VA=FFFFFADF2B191000  size=1048576
    [UefiNvram]   Region[4]: MMIO  PA=0xD0000000  pages=4096  attr=0x8000000000000001
    [UefiNvram] Mapped MMIO  PA=0xD0000000  VA=FFFFFB0000000000  size=16777216
    [UefiNvram]   Region[5]: MMIO  PA=0xD3709000  pages=1  attr=0x8000000000000001
    [UefiNvram] Mapped MMIO  PA=0xD3709000  VA=FFFFFADF2DEDD000  size=4096
    [UefiNvram]   Region[6]: MMIO  PA=0xE0000000  pages=65536  attr=0x8000000000000001
    [UefiNvram] Mapped MMIO  PA=0xE0000000  VA=FFFFFB0001000000  size=268435456
    [UefiNvram]   Region[7]: MMIO  PA=0xFE042000  pages=1  attr=0x8000000000000001
    [UefiNvram] Mapped MMIO  PA=0xFE042000  VA=FFFFFADF2DEC7000  size=4096
    [UefiNvram]   Region[8]: MMIO  PA=0xFE043000  pages=1  attr=0x800000000000100D
    [UefiNvram] Mapped MMIO  PA=0xFE043000  VA=FFFFFADF2DFE1000  size=4096
    [UefiNvram]   Region[9]: MMIO  PA=0xFE044000  pages=1  attr=0x8000000000000001
    [UefiNvram] Mapped MMIO  PA=0xFE044000  VA=FFFFFADF2DFE2000  size=4096
    [UefiNvram]   Region[10]: MMIO  PA=0xFE900000  pages=3  attr=0x8000000000000001
    [UefiNvram] Mapped MMIO  PA=0xFE900000  VA=FFFFFADF2DD27000  size=12288
    [UefiNvram]   Region[11]: MMIO  PA=0xFEC00000  pages=1  attr=0x8000000000000001
    [UefiNvram] Mapped MMIO  PA=0xFEC00000  VA=FFFFFADF2DFE3000  size=4096
    [UefiNvram]   Region[12]: MMIO  PA=0xFED01000  pages=1  attr=0x8000000000000001
    [UefiNvram] Mapped MMIO  PA=0xFED01000  VA=FFFFFADF2DFE4000  size=4096
    [UefiNvram]   Region[13]: MMIO  PA=0xFEE00000  pages=1  attr=0x8000000000000001
    [UefiNvram] Mapped MMIO  PA=0xFEE00000  VA=FFFFFADF2DFE5000  size=4096
    [UefiNvram]   Region[14]: MMIO  PA=0xFF000000  pages=4096  attr=0x8000000000000001
    [UefiNvram] Mapped MMIO  PA=0xFF000000  VA=FFFFFB0011000000  size=16777216
    [UefiNvram] GetVariable=FFFFFADF2B3365E4  SetVariable=FFFFFADF2B3366DC
    [UefiNvram] EFI NVRAM ready
    [UefiNvram] === SELF TEST ===
    [UefiNvram] Calling GetVariable('BootOrder')...
    [UefiNvram]   Result: efiStatus=0x0 len=8 attrs=0x00000007
    [UefiNvram]   BootOrder (4 entries): 0000 0006 0001 0002
    [UefiNvram]   BootCurrent: status=0x0 val=0000
    [UefiNvram] === END SELF TEST ===
    KDTARGET: Refreshing KD connection
    9560m88: pwr[pre-dma] cmd=0006/0006 pm=200:0008/0008 exp=64:0000/0000 gp=00000000 hwif=00000000 gio=00000000 chicken=00000000 apmg=00000000 clk=00000000
    9560nn56: NdisMInitializeScatterGatherDma -> 00000000
    9560nn56: query resources pass0 status=c000009a need=68
    9560nn56: query resources pass1 status=00000000 size=68
    9560nn56: resources count=3 bytes=68 bar0raw=00000000:bfffc004
    9560nn56: resource[0] type=3 share=1 flags=0000 start=00000000:bfffc000 len=16384
    9560nn56: resource[1] type=129 share=1 flags=0000 start=00000000:00000001 len=0
    9560nn56: resource[2] type=2 share=3 flags=0000 start=0000002c:0000002c len=4294967295
    9560nn56: mapped resources mmio=00000000:bfffc000 len=16384 irq=44/44 hwrev=00000312 hwif=00080000 gp=08040000 mbox=00000000
    9560m88: pwr[post-map] cmd=0006/0006 pm=200:0008/0008 exp=64:0000/0000 gp=08040000 hwif=00080000 gio=001f0042 chicken=d55555d5 apmg=00000000 clk=00000000
    9560n14: awake hwready=1 awake=1 hwrev=00000312 hwif=00480000 gp=0804000d mbox=00000020
    9560m88: pwr[post-awake] cmd=0006/0006 pm=200:0008/0008 exp=64:0000/0000 gp=08040005 hwif=00480000 gio=001f0042 chicken=d55555d5 apmg=ffffffff clk=03840010
    9560n14: sw_reset before=00000011 after=00000011 hwif=00080000 gp=08040000 mbox=00000000
    9560n14: awake hwready=1 awake=1 hwrev=00000312 hwif=00480000 gp=0804000d mbox=00000020
    9560n14: retake after reset ok=1 hwready=1 awake=1 hwif=00480000 gp=0804000d mbox=00000020
    9560m88: pwr[post-reset-retake] cmd=0006/0006 pm=200:0008/0008 exp=64:0000/0000 gp=08040005 hwif=00480000 gio=001f0042 chicken=d55555d5 apmg=ffffffff clk=03840010
    9560nn103: hardware-mac source=otp@0x380 addr=94-E2-3C-BA-41-31
    9560nn56: NdisMRegisterInterrupt vec=44 lvl=44 shared=1 level=1 -> 00000000
    9560nn56: embedded fw hdr ver=0000004d api=77 build=f92b5fed
    9560nn56: alloc LMAC uncached len=1656 va=FFFFFADF2DE97000 pa=00000000:002cd000
    9560nn56: alloc LMAC uncached len=32768 va=FFFFFADF2D883000 pa=00000000:002ce000
    9560nn56: alloc LMAC uncached len=32768 va=FFFFFADF2D88B000 pa=00000000:002d6000
    9560nn56: alloc LMAC uncached len=32768 va=FFFFFADF2D893000 pa=00000000:002de000
    9560nn56: alloc LMAC uncached len=32760 va=FFFFFADF2D89B000 pa=00000000:002e6000
    9560nn56: alloc LMAC uncached len=32768 va=FFFFFADF2D8A3000 pa=00000000:002ee000
    9560nn56: alloc LMAC uncached len=32768 va=FFFFFADF2D8AB000 pa=00000000:002f6000
    9560nn56: alloc LMAC uncached len=32768 va=FFFFFADF2D8B3000 pa=00000000:002fe000
    9560nn56: alloc LMAC uncached len=32768 va=FFFFFADF2D8BB000 pa=00000000:00306000
    9560nn56: alloc LMAC uncached len=32768 va=FFFFFADF2D8C3000 pa=00000000:0030e000
    9560nn56: alloc LMAC uncached len=32768 va=FFFFFADF2D8CB000 pa=00000000:00316000
    9560nn56: alloc LMAC uncached len=32768 va=FFFFFADF2D8D3000 pa=00000000:0031e000
    9560nn56: alloc LMAC uncached len=32768 va=FFFFFADF2D8DB000 pa=00000000:00326000
    9560nn56: alloc LMAC uncached len=13248 va=FFFFFADF2DD37000 pa=00000000:0032e000
    9560nn56: alloc LMAC uncached len=5312 va=FFFFFADF2DDB7000 pa=00000000:00332000
    9560nn56: alloc UMAC uncached len=1656 va=FFFFFADF2DE97678 pa=00000000:002cd678
    9560nn56: alloc UMAC uncached len=32768 va=FFFFFADF2D8E3000 pa=00000000:00334000
    9560nn56: alloc UMAC uncached len=32768 va=FFFFFADF2D8EB000 pa=00000000:0033c000
    9560nn56: alloc UMAC uncached len=32768 va=FFFFFADF2D8F3000 pa=00000000:00344000
    9560nn56: alloc UMAC uncached len=32768 va=FFFFFADF2D8FB000 pa=00000000:0034c000
    9560nn56: alloc UMAC uncached len=32768 va=FFFFFADF2D903000 pa=00000000:00354000
    9560nn56: alloc UMAC uncached len=32768 va=FFFFFADF2D90B000 pa=00000000:0035c000
    9560nn56: alloc UMAC uncached len=32768 va=FFFFFADF2D913000 pa=00000000:00364000
    9560nn56: alloc UMAC uncached len=32768 va=FFFFFADF2D91B000 pa=00000000:0036c000
    9560nn56: alloc UMAC uncached len=32768 va=FFFFFADF2D923000 pa=00000000:00374000
    9560nn56: alloc UMAC uncached len=32768 va=FFFFFADF2D92B000 pa=00000000:003a0000
    9560nn56: alloc UMAC uncached len=32768 va=FFFFFADF2D933000 pa=00000000:003a8000
    9560nn56: alloc UMAC uncached len=4280 va=FFFFFADF2DDB9000 pa=00000000:0037c000
    9560nn56: alloc UMAC uncached len=3592 va=FFFFFADF2DE98000 pa=00000000:0037e000
    9560nn56: alloc UMAC uncached len=24756 va=FFFFFADF2DB2F000 pa=00000000:003b0000
    9560nn56: alloc PAGE uncached len=1656 va=FFFFFADF2DE99000 pa=00000000:0037f000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D93B000 pa=00000000:003b7000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D943000 pa=00000000:003bf000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D94B000 pa=00000000:003c7000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D953000 pa=00000000:003cf000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D95B000 pa=00000000:003d7000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D963000 pa=00000000:003df000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D96B000 pa=00000000:003e7000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D973000 pa=00000000:003ef000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D97B000 pa=00000000:003f7000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D983000 pa=00000000:003ff000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D98B000 pa=00000000:00407000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D993000 pa=00000000:0040f000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D99B000 pa=00000000:00417000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D9A3000 pa=00000000:0041f000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D9AB000 pa=00000000:00427000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D9B3000 pa=00000000:0042f000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D9BB000 pa=00000000:00437000
    9560nn56: alloc PAGE uncached len=32768 va=FFFFFADF2D9C3000 pa=00000000:0043f000
    9560nn56: alloc PAGE uncached len=12288 va=FFFFFADF2DD3B000 pa=00000000:00447000
    9560nn56openbsd2: fw sections lmac=15 umac=15 page=20 iml=13944 phy_cfg=00330018 scan_req_cmdver=15 scan_cfg_cmdver=5
    9560nn56: alloc Cmd uncached len=16384 va=FFFFFADF2DD3F000 pa=00000000:0044a000
    9560nn56: alloc TxQ uncached len=16384 va=FFFFFADF2DD43000 pa=00000000:0044e000
    9560nn56: alloc MgmtCmd uncached len=524288 va=FFFFFADF2AC4D000 pa=00000000:00452000
    9560nn56: alloc MgmtTxQ uncached len=65536 va=FFFFFADF2D83B000 pa=00000000:004d2000
    9560nn56: alloc MgmtBcRaw uncached len=2176 va=FFFFFADF2DE99678 pa=00000000:0037f678
    9560m1: mgmt-bc aligned rawpa=00000000:0037f678 pa=00000000:0037f680 off=8 len=2048
    9560nn56: alloc RxQ uncached len=16384 va=FFFFFADF2DD47000 pa=00000000:004e2000
    9560nn56: alloc RxStatus uncached len=2 va=FFFFFADF2DE99EF8 pa=00000000:0037fef8
    9560nn56: alloc RxUsed uncached len=32768 va=FFFFFADF2D9CB000 pa=00000000:004e6000
    9560nn56: alloc RxData uncached len=4194304 va=FFFFFADF2A84D000 pa=00000000:02e40000
    9560m106: rx-prime-hybrid count=1024 posted=1023 actual=1016 buf=4096
    9560nn88: transport cmd=16384 txq=16384 mgmt_cmd=524288 mgmt_txq=65536 mgmt_bc=2048 rxq=16384 rxdata=4194304
    9560nn56: alloc CtxG3 uncached len=104 va=FFFFFADF2DE99EFC pa=00000000:0037fefc
    9560nn56: alloc PrphInfo uncached len=4096 va=FFFFFADF2DE9A000 pa=00000000:004ee000
    9560nn56: alloc PrphScr uncached len=1660 va=FFFFFADF2DE9B000 pa=00000000:004ef000
    9560nn56: alloc IML uncached len=13944 va=FFFFFADF2DD4B000 pa=00000000:004f0000
    9560nn56: ctxt prepared ver=2 size=26 prph=00000000:004ee000 scratch=00000000:004ef000
    9560nn56: disint-pulse[fwload] before=80000001 after_disable=00000000 after_enable=80000001 mask=80000001
    9560nn56: ax210-iml-spin irq=0 loops=100000 msix_before=00000000 msix_after=00000000 ltr_before=00000000 ltr_after=00000000 iml_resp=d55555d5
    9560nn56: alive wait end alive=0 status=00000000 last_int=00000000 last_msix=00000000 spin=100000
    9560nn56: bootstrap status alive=0 cpu_run=00000000 boot_before=00480000 boot_after=00480002
    9560m8c: WifiInitialize fail status=c0000001 hwpresent=1 hwready=1 awake=1 alive=0 alive_status=00000000 mmio=00000000:bfffc000 len=16384
  4. @roytam1

    Make patch mailnews and icedove for properly handle icon default system browser. Now icon is not readed and fallback to CMD icon:
    bad-icon.png
    I noticed problem on WinXP 32/64-bit and also on Win7
    Patch you need apply probably in omni.ja\chrome\toolkit\content\mozapps\handling
     

    Yea, this maybe fixed in this way - tested on WinXP 64-bit:
    Replace line 154 in dialog.js:

    elm.setAttribute("image", "moz-icon://.exe?size=32");

    to this code:

    try {
      let wrk = Cc["@mozilla.org/windows-registry-key;1"]
                  .createInstance(Ci.nsIWindowsRegKey);
    
      wrk.open(wrk.ROOT_KEY_CLASSES_ROOT,
               "http\\shell\\open\\command",
               wrk.ACCESS_READ);
    
      let cmd = wrk.readStringValue("");
    
      wrk.close();
    
      // extract path
      let match = cmd.match(/"([^"]+\.exe)"/i);
    
      if (!match)
        match = cmd.match(/^([^\s]+\.exe)/i);
    
      if (match) {
        let exe = match[1].replace(/\\/g, "/");
    
        elm.setAttribute(
          "image",
          "moz-icon://file:///" + exe + "?size=32"
        );
      }
      else {
        elm.setAttribute("image", "moz-icon://.exe?size=32");
      }
    }
    catch (e) {
      elm.setAttribute("image", "moz-icon://.exe?size=32");
    }

    fixed.png

  5. @Dietmar

    Wow, your kdnet.dll work ???

    I compiled kdnet_patch 64-bit, I patch kdnet.dll 8.1 but I didn't test it because it requires a boot.ini file and I can't use it on Dell in pure UEFI because I use a BCD file and I don't think it's possible to provide data for debugging there as in the boot.ini file :dubbio:

    C:\WINDOWS="KDNET DHCP"        /noexecute=optin /fastdetect /DEBUG /DEBUGPORT=NET /HOST_IP=192.168.5.1 /HOST_PORT=50000 /ENCRYPTION_KEY=make.winxp.great.again /CPUFREQ=3000

    You can test this but in Legacy (CSM) when you use boot.ini on other PC - not on Dell kdnet_patched.dll

    But:

    • this not work because no jump to merged code in kdnet.dll
    • the code only searches for files - not patch
  6. 8 hours ago, K4sum1 said:

    It would be cool to have a reg file to add it to the right click or shift + right click menu for increased efficiency.

    No problem, copy setcsum.exe to WINDOWS folder then add registry settings:

    Windows Registry Editor Version 5.00
    
    ; === EXE ===
    [HKEY_CLASSES_ROOT\exefile\shell\setcsum]
    @="setcsum"
    
    [HKEY_CLASSES_ROOT\exefile\shell\setcsum\command]
    @="cmd.exe /k setcsum.exe \"%1\""
    
    ; === DLL ===
    [HKEY_CLASSES_ROOT\dllfile\shell\setcsum]
    @="setcsum"
    
    [HKEY_CLASSES_ROOT\dllfile\shell\setcsum\command]
    @="cmd.exe /k setcsum.exe \"%1\""
    
    ; === SYS ===
    [HKEY_CLASSES_ROOT\sysfile\shell\setcsum]
    @="setcsum"
    
    [HKEY_CLASSES_ROOT\sysfile\shell\setcsum\command]
    @="cmd.exe /k setcsum.exe \"%1\""
  7. 7 hours ago, K4sum1 said:

    There are a multitude of differences

    Yea, I found also many, many differences. I also noticed this in other files from @Dietmar, e.g. acpi.sys or others - I thought he had compiled it from scratch but this is Resource Hacker's fault :crazy::thumbdown:no:

    6 hours ago, Dietmar said:

    I open the hacked newdev.dll with Resources Hacker and store it again.

    The owner of this tool makes something magically:

    After this step, always XP is sure, that it is own file.

    I notice, that it is enough to open the hacked file and just store again.

    This is bad way to fix file - Resource Hacker unnecessarily rebuild all file and make many, many unnecessarily differences:
    Dietmar-fix.png

    Please do not use Resource Hacker anymore to fix edited files !!!

    To fix edited file you need only rebuild checksum - use my nice tool setcsum 32_64 (I compiled also 64-bit version). Just drag and drop the edited file to setcsum.exe and press Y for Yes to fix the checksum - now the file is only >>> 5 bytes <<< different from the original:

    Search for differences
    
    1. org_newdev.dll: 284 160 bytes
    2. fix_newdev.dll: 284 160 bytes
    Offsets: hexadec.
    
      130:	C0	DD
      131:	49	D5
      132:	05	04
     8928:	74	90
     8929:	04	90
    
    5 difference(s) found. 

    setcsum.png setcsum.gif

  8. I found - read from this post about 64-bit KDNET:

    https://msfn.org/board/topic/183464-updated-drivers-for-windows-xp-sp3-and-windows-2003-sp2-x32x64-for-modern-hardware/page/189/#findComment-1286419

    On 3/18/2026 at 8:49 AM, reboot12 said:

    I collected all 64-bit files except: KDNET_PATCH.ASM, dummy, kdnet_delta.bin, kdusb_delta.bin - 64-bit_kdnet_w81.zip

  9. @Dietmar

    No any unsigned drivers problem if you make USB exactly like in my instruction ! - I recorded 3 videos for you and send you via e-mail. Please check and properly make USB and install WinXP from this USB.

    Under no circumstances can you edit my ISO with any programs such as nLite, Rufus, etc. - you just need to copy all files and directories to the pendrive

×
×
  • Create New...