Snippets Collections
-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters 
-- command (Ctrl-Shift-M) to fill in the parameter 
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		<Author,,Name>
-- Create date: <Create Date,,>
-- Description:	<Description,,>
-- =============================================
CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName> 
	-- Add the parameters for the stored procedure here
	<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>, 
	<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;

    -- Insert statements for procedure here
	SELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>
END
GO
{
  "kind": "youtube#fanFundingEvent",
  "etag": etag,
  "id": string,
  "snippet": {
    "channelId": string,
    "supporterDetails": {
      "channelId": string,
      "channelUrl": string,
      "displayName": string,
      "profileImageUrl": string
    },
    "commentText": string,
    "createdAt": datetime,
    "amountMicros": unsigned long,
    "currency": string,
    "displayString": string
  }
}
Access-Control-Expose-Headers: [<header-name>[, <header-name>]*]
Access-Control-Expose-Headers: *
//BACKEND
//Controller
using av_motion_api.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Newtonsoft.Json.Linq;
using NuGet.Configuration;

namespace av_motion_api.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class DeletionSettingsController : ControllerBase
    {
        private readonly IOptionsMonitor<DeletionSettings> _deletionSettings;
        //private readonly IConfiguration _configuration;
        private readonly IConfigurationRoot _configurationRoot;

        public DeletionSettingsController(IOptionsMonitor<DeletionSettings> deletionSettings, IConfiguration configuration)
        {
            _deletionSettings = deletionSettings;
            //_configuration = configuration;
            _configurationRoot = (IConfigurationRoot)configuration;
        }

        [HttpPost]
        [Route("UpdateDeletionTime")]
        public IActionResult UpdateDeletionTime([FromBody] DeletionSettings settings)
        {
            if (settings.DeletionTimeValue < 0)
            {
                return BadRequest(new { message = "Deletion time value must be non-negative" });
            }

            var configurationFile = "appsettings.Development.json";
            var configurationPath = Path.Combine(Directory.GetCurrentDirectory(), configurationFile);

            var json = System.IO.File.ReadAllText(configurationPath);
            dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);

            if (jsonObj["DeletionSettings"] == null)
            {
                jsonObj["DeletionSettings"] = new Newtonsoft.Json.Linq.JObject();
            }

            jsonObj["DeletionSettings"]["DeletionTimeValue"] = settings.DeletionTimeValue;
            jsonObj["DeletionSettings"]["DeletionTimeUnit"] = settings.DeletionTimeUnit;

            string output = Newtonsoft.Json.JsonConvert.SerializeObject(jsonObj, Newtonsoft.Json.Formatting.Indented);
            System.IO.File.WriteAllText(configurationPath, output);

            // Reload the configuration
            _configurationRoot.Reload();

            return Ok(new { message = "Deletion time updated successfully" });
        }

        [HttpGet]
        [Route("GetDeletionSettings")]
        public IActionResult GetDeletionSettings()
        {
            var settings = _deletionSettings.CurrentValue;
            if (settings == null)
            {
                return NotFound(new { message = "Deletion settings not found" });
            }
            return Ok(settings);
        }

    }
}

//Model
namespace av_motion_api.Models
{
    public class DeletionSettings
    {
        public int DeletionTimeValue { get; set; }
        public string DeletionTimeUnit { get; set; }
    }
}

//Service
using av_motion_api.Data; 
using av_motion_api.Models;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options;

namespace av_motion_api.Services
{
    public class UserDeletionService : IHostedService, IDisposable
    {
        private readonly IServiceProvider _serviceProvider;
        private readonly IOptionsMonitor<DeletionSettings> _settings;
        private Timer _timer;
        private long _remainingIntervals;
        private const long MaxInterval = Int32.MaxValue - 2;

        public UserDeletionService(IServiceProvider serviceProvider, IOptionsMonitor<DeletionSettings> settings)
        {
            _serviceProvider = serviceProvider;
            _settings = settings;
        }

        public Task StartAsync(CancellationToken cancellationToken)
        {
            ScheduleDeletionTask();
            _settings.OnChange(settings => ScheduleDeletionTask());
            return Task.CompletedTask;
        }

        private void ScheduleDeletionTask()
        {
            var interval = GetTimeSpan(_settings.CurrentValue.DeletionTimeValue, _settings.CurrentValue.DeletionTimeUnit);
            _remainingIntervals = (long)Math.Ceiling(interval.TotalMilliseconds / MaxInterval);

            _timer?.Dispose();
            _timer = new Timer(OnTimerElapsed, null, TimeSpan.Zero, TimeSpan.FromMilliseconds(MaxInterval));
        }



        private void OnTimerElapsed(object state)
        {
            if (--_remainingIntervals <= 0)
            {
                DeleteDeactivatedUsers(state);
                ScheduleDeletionTask(); // Reschedule for the next interval
            }
        }

        private void DeleteDeactivatedUsers(object state)
        {
            using (var scope = _serviceProvider.CreateScope())
            {
                var context = scope.ServiceProvider.GetRequiredService<AppDbContext>();
                var userManager = scope.ServiceProvider.GetRequiredService<UserManager<User>>();

                var deletionThreshold = DateTime.UtcNow.Subtract(GetTimeSpan(_settings.CurrentValue.DeletionTimeValue, _settings.CurrentValue.DeletionTimeUnit));

                var usersToDelete = context.Users
                    .Where(u => u.User_Status_ID == 2 && u.DeactivatedAt < deletionThreshold)
                    .ToList();

                foreach (var user in usersToDelete)
                {
                    userManager.DeleteAsync(user).Wait();
                }

                context.SaveChanges();
            }
        }

        private TimeSpan GetTimeSpan(int value, string unit)
        {
            return unit.ToLower() switch
            {
                "minutes" => TimeSpan.FromMinutes(value),
                "hours" => TimeSpan.FromHours(value),
                "days" => TimeSpan.FromDays(value),
                "weeks" => TimeSpan.FromDays(value * 7),
                "months" => TimeSpan.FromDays(value * 30), // Approximation
                "years" => TimeSpan.FromDays(value * 365), // Approximation
                _ => TimeSpan.FromMinutes(value),
            };
        }

        public Task StopAsync(CancellationToken cancellationToken)
        {
            _timer?.Change(Timeout.Infinite, 0);
            return Task.CompletedTask;
        }

        public void Dispose()
        {
            _timer?.Dispose();
        }
    }
}

//Program.cs
using av_motion_api.Data;
using av_motion_api.Factory;
using av_motion_api.Models;
using av_motion_api.Interfaces;
using av_motion_api.Services;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Microsoft.IdentityModel.Tokens;
using Microsoft.AspNetCore.Http.Features;
using Microsoft.Extensions.Logging;
using System.Text;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using System.Text.Json.Serialization;
using Microsoft.Extensions.Configuration; // Ensure this is here
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);

// Configure the app environment
var configuration = builder.Configuration;

builder.Configuration.SetBasePath(Directory.GetCurrentDirectory())
    //.AddJsonFile($"appsettings.{builder.Environment.EnvironmentName}.json", optional: false);
    .AddJsonFile("appsettings.Development.json", optional: true, reloadOnChange: true); // Add reloadOnChange

builder.Host.ConfigureAppConfiguration((hostingContext, config) =>
{
    //config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);
    config.AddJsonFile("appsettings.Development.json", optional: true, reloadOnChange: true); // Add reloadOnChange
    config.AddJsonFile($"appsettings.{builder.Environment.EnvironmentName}.json", optional: true);
});

// Configure logging
builder.Logging.ClearProviders();
builder.Logging.AddConsole();
builder.Logging.AddDebug();

// CORS
if (builder.Environment.IsDevelopment())
{
    builder.Services.AddCors(options =>
    {
        options.AddPolicy("AllowAll", policy =>
        {
            policy.AllowAnyOrigin()
                  .AllowAnyHeader()
                  .AllowAnyMethod();
        });
    });
}

// Add services to the container
builder.Services.AddControllers()
                .AddJsonOptions(options =>
                {
                    options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;
                    options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
                });

// SQL
builder.Services.AddDbContext<AppDbContext>(options =>
    options.UseSqlServer(configuration.GetConnectionString("DefaultConnection")));
builder.Services.AddScoped<IRepository, Repository>();

builder.Services.AddIdentity<User, Role>(options =>
                {
                    options.Password.RequireUppercase = false;
                    options.Password.RequireLowercase = false;
                    options.Password.RequireNonAlphanumeric = false;
                    options.Password.RequireDigit = true;
                    options.User.RequireUniqueEmail = true;
                })
                .AddRoles<Role>()
                .AddEntityFrameworkStores<AppDbContext>()
                .AddDefaultTokenProviders();

builder.Services.AddAuthentication(options =>
                {
                    options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                    options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
                    options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
                })
                .AddCookie()
                .AddJwtBearer(options =>
                {
                    options.TokenValidationParameters = new TokenValidationParameters()
                    {
                        ValidateIssuer = true,
                        ValidateAudience = true,
                        ValidateLifetime = true,
                        ValidateIssuerSigningKey = true,
                        ValidIssuer = builder.Configuration["Tokens:Issuer"],
                        ValidAudience = builder.Configuration["Tokens:Audience"],
                        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(builder.Configuration["Tokens:Key"]))
                    };
                });

// Configure FormOptions for file uploads
builder.Services.Configure<FormOptions>(o =>
{
    o.ValueLengthLimit = int.MaxValue;
    o.MultipartBodyLengthLimit = int.MaxValue;
    o.MemoryBufferThreshold = int.MaxValue;
});

builder.Services.AddScoped<IUserClaimsPrincipalFactory<User>, AppUserClaimsPrincipalFactory>();

builder.Services.Configure<DataProtectionTokenProviderOptions>(options => options.TokenLifespan = TimeSpan.FromHours(3));


// Register the OrderStatusUpdater hosted service
builder.Services.AddHostedService<OrderStatusUpdater>();

// Register the DeletionSettings configuration section
builder.Services.Configure<DeletionSettings>(configuration.GetSection("DeletionSettings"));

// Register the UserDeletionService hosted service
builder.Services.AddHostedService<UserDeletionService>();

// Register ContractLinkingService
//builder.Services.AddHostedService<ContractLinkingService>();


// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// Configure the HTTP request pipeline
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

// Use CORS
app.UseCors("AllowAll");

app.UseHttpsRedirection();
app.UseAuthentication();
app.UseAuthorization();

app.MapControllers();

app.Use(async (context, next) =>
{
    var logger = app.Services.GetRequiredService<ILogger<Program>>();
    logger.LogInformation("Handling request: " + context.Request.Path);
    await next.Invoke();
    logger.LogInformation("Finished handling request.");
});

app.Run();

//appsettings.Development.json
{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "DefaultConnection": "Server=DESKTOP-9QI4G7U\\SQLEXPRESS;Database=AV_Motion;Trusted_Connection=True;TrustServerCertificate=True"
  },
  "Tokens": {
    "Key": "hLKjZkF5q2wX3rQ$@1hy+VRv[&)0XhxJ<sk=yUpW{yE5CH@xh",
    "Issuer": "https://localhost:7185",
    "Audience": "http://localhost:4200"
  },
  "SendGrid": {
    "ApiKey": "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",
    "SenderEmail": "datalungeteam43@gmail.com",
    "SenderName": "AVSFitnessAdmin@AVMotion.com",
    "ContractsDirectory": "C:\\Contracts\\AVS_Fitness"
  },
  "DeletionSettings": {
    "DeletionTimeValue": 6,
    "DeletionTimeUnit": "Months"
  }
}

//FRONTEND
//Deletionsettings component
//html
<div class="view-deletion-settings-container">
    <button class="btn btn" (click)="goBack()">            
        <i class="bi bi-arrow-left-circle header-icon"></i>
    </button>
    <h2>Deletion Settings</h2>
    <p><strong>Deletion Time:</strong> {{deletionSettings?.deletionTimeValue}} {{deletionSettings?.deletionTimeUnit}}</p>
    <button mat-raised-button color="primary" (click)="openEditModal()">Update Settings</button>
</div>

<!-- Edit Modal -->
<div class="modal fade" id="editModal" tabindex="-1" aria-labelledby="editModalLabel" aria-hidden="true">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header">
          <h5 class="modal-title" id="editModalLabel">Update Deletion Time</h5>
        </div>
        <div class="modal-body">
          <form [formGroup]="deletionSettingsForm">
            <div class="form-group">
              <label for="deletionTime">Deletion Time:</label>
              <input type="number" id="deletionTime" formControlName="value" class="form-control" name="deletionTime">
            </div>
            <div class="form-group">
              <label for="timeUnit">Time Unit:</label>
              <select id="timeUnit" formControlName="unit" class="form-control" name="timeUnit">
                <option value="Minutes">Minutes</option>
                <option value="Hours">Hours</option>
                <option value="Days">Days</option>
                <option value="Weeks">Weeks</option>
                <option value="Months">Months</option>
                <option value="Years">Years</option>
              </select>
            </div>
          </form>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
          <button type="button" class="btn btn-primary" (click)="saveDeletionTime()">Update</button>
        </div>
      </div>
    </div>
</div>

//ts
import { CommonModule } from '@angular/common';
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
import { UserService } from '../Services/userprofile.service';
import { DeletionSettings } from '../shared/deletionsettings';
import { MatSnackBar } from '@angular/material/snack-bar';
import { Router, RouterLink } from '@angular/router';
import { Location } from '@angular/common';
declare var $: any; 

@Component({
  selector: 'app-deletion-settings',
  standalone: true,
  imports: [CommonModule, ReactiveFormsModule, RouterLink, FormsModule],
  templateUrl: './deletion-settings.component.html',
  styleUrl: './deletion-settings.component.css'
})
export class DeletionSettingsComponent implements OnInit {
  deletionSettings: DeletionSettings | undefined;
  deletionSettingsForm: FormGroup;

  constructor(
    private userService: UserService,
    private fb: FormBuilder,
    private snackBar: MatSnackBar,
    private router: Router,
    private location: Location
  ) {
    this.deletionSettingsForm  = this.fb.group({
      value: ['', [Validators.required, Validators.min(0)]],
      unit: ['', Validators.required]
    });
  }

  ngOnInit(): void {
    this.loadDeletionSettings();
  }

  loadDeletionSettings(): void {
    this.userService.getDeletionSettings().subscribe({
      next: (settings) => {
        this.deletionSettings = settings;
        this.deletionSettingsForm.patchValue({
          value: settings.deletionTimeValue,
          unit: settings.deletionTimeUnit
        });
      },
      error: (error) => {
        console.error('Error fetching deletion settings', error);
      }
    });
  }

  openEditModal(): void {
    $('#editModal').modal('show');
  }

  saveDeletionTime(): void {
    if (this.deletionSettingsForm.valid) {
      const settings: DeletionSettings = {
        deletionTimeValue: this.deletionSettingsForm.value.value,
        deletionTimeUnit: this.deletionSettingsForm.value.unit
      };

      this.userService.updateDeletionTime(settings).subscribe({
        next: (response) => {
          console.log("Deletion time", response )
          this.snackBar.open('Deletion time updated successfully', 'Close', { duration: 5000 });
          this.loadDeletionSettings();
          $('#editModal').modal('hide');
        },
        error: (error) => {
          console.error('Error updating deletion time', error);
          this.snackBar.open('Failed to update deletion time. Please try again', 'Close', { duration: 5000 });
          this.loadDeletionSettings();
          $('#editModal').modal('hide');
        }
      });
    }
  }

  goBack(): void {
    this.location.back();
  }
}

//Service
export class UserService {

  httpOptions = {
    headers: new HttpHeaders({
      'Content-Type': 'application/json'
    })
  };

  constructor(private http: HttpClient) {}
  endPoint: string = "https://localhost:7185/api/";
getDeletionSettings(): Observable<DeletionSettings> {
    return this.http.get<DeletionSettings>(`${this.endPoint}DeletionSettings/GetDeletionSettings`);
  }
  
  updateDeletionTime(settings: DeletionSettings): Observable<any> {
    return this.http.post<any>(`${this.endPoint}DeletionSettings/UpdateDeletionTime`, settings, this.httpOptions);
  }
//model
export interface DeletionSettings {
    deletionTimeValue: number;
    deletionTimeUnit: string;
  }
//routes
  { path:'deletion-settings', component:DeletionSettingsComponent },
var finalhandler = require('finalhandler')
var http = require('http')
var serveStatic = require('serve-static')

// Serve up public/ftp folder
var serve = serveStatic('public/ftp', { index: ['index.html', 'index.htm'] })

// Create server
var server = http.createServer(function onRequest (req, res) {
  serve(req, res, finalhandler(req, res))
})

// Listen
server.listen(3000)
1
Hit Shift + F10 for CMD
Type OOBE\BYPASSNRO

Again if...
Hit Shift + F10 for CMD
Type ipconfig /release

3
Rufus version 4.4 method
Customize Windows Installation

// Method to export help content to PDF
  exportToPDF(): void {
    const doc = new jsPDF();
    let y = 10;
    const pageHeight = doc.internal.pageSize.height;
    const margin = 10;

    this.helpContent.forEach(item => {
      if (y + 10 > pageHeight - margin) {
        doc.addPage();
        y = margin;
      }

      doc.setFontSize(14);
      doc.text(item.title, margin, y);
      y += 10;

      doc.setFontSize(12);

      const plainText = this.htmlToPlainText(item.content);
      const splitContent = doc.splitTextToSize(plainText, 180 - 2 * margin);

      splitContent.forEach((line: string) => {
        if (y + 7 > pageHeight - margin) {
          doc.addPage();
          y = margin;
        }
        doc.text(line, margin, y);
        y += 5;
      });

      y += 7; // Add space between sections
    });

    doc.save('help-guide.pdf');
  }

  // Method to convert HTML content to plain text
  htmlToPlainText(html: string): string {
    const doc = new DOMParser().parseFromString(html, 'text/html');
    return doc.body.textContent || '';
  }
// Method to export help content to PDF
  exportToPDF(): void {
    const doc = new jsPDF('p', 'mm', 'a4');
    const margin = 10;
    const pageWidth = 210;
    const pageHeight = 295;
  
    const addContentToPDF = (content: string) => {
      const tempContainer = document.createElement('div');
      tempContainer.style.position = 'absolute';
      tempContainer.style.left = '-9999px';
      tempContainer.style.fontSize = '14px'; // Set default font size
      tempContainer.innerHTML = content;
      document.body.appendChild(tempContainer);
  
      html2canvas(tempContainer, {
        scale: 2, // Increase scale for better quality
        useCORS: true,
        logging: true
      }).then(canvas => {
        const imgData = canvas.toDataURL('image/png');
        const imgWidth = pageWidth - 2 * margin;
        const imgHeight = canvas.height * imgWidth / canvas.width;
        let heightLeft = imgHeight;
        let position = 0;
  
        doc.addImage(imgData, 'PNG', margin, position, imgWidth, imgHeight);
        heightLeft -= pageHeight;
  
        while (heightLeft > 0) {
          doc.addPage();
          position = heightLeft - imgHeight;
          doc.addImage(imgData, 'PNG', margin, position, imgWidth, imgHeight);
          heightLeft -= pageHeight;
        }
  
        document.body.removeChild(tempContainer);
        doc.save('help-guide.pdf');
      }).catch(err => {
        console.error('Error capturing content:', err);
        document.body.removeChild(tempContainer);
      });
    };
  
    const chunkSize = 5;
    for (let i = 0; i < this.filteredContent.length; i += chunkSize) {
      const chunk = this.filteredContent.slice(i, i + chunkSize);
      const chunkContent = chunk.map(item => `
        <h5 style="font-size: 16px;">${item.title}</h5>
        <div style="font-size: 14px;">${item.content}</div>
      `).join('');
  
      addContentToPDF(chunkContent);
    }
  }  
# Leverage Browser Caching by SG-Optimizer
<IfModule mod_expires.c>
    ExpiresActive on
  # CSS
    ExpiresByType text/css                              "access plus 1 year"
  # JavaScript
    ExpiresByType application/javascript                "access plus 1 year"
    ExpiresByType application/x-javascript              "access plus 1 year"
  # Manifest files
    ExpiresByType application/x-web-app-manifest+json   "access plus 0 seconds"
    ExpiresByType text/cache-manifest                   "access plus 0 seconds"
  # Media
    ExpiresByType audio/ogg                             "access plus 1 year"
    ExpiresByType image/gif                             "access plus 1 year"
    ExpiresByType image/jpg                             "access plus 1 year"
    ExpiresByType image/jpeg                            "access plus 1 year"
    ExpiresByType image/png                             "access plus 1 year"
    ExpiresByType image/svg                             "access plus 1 year"
    ExpiresByType image/svg+xml                         "access plus 1 year"
    ExpiresByType video/mp4                             "access plus 1 year"
    ExpiresByType video/ogg                             "access plus 1 year"
    ExpiresByType video/webm                            "access plus 1 year"
    ExpiresByType image/x-icon                          "access plus 1 year"
    ExpiresByType application/pdf                       "access plus 1 year"
    ExpiresByType application/x-shockwave-flash         "access plus 1 year"
  # XML
    ExpiresByType text/xml                              "access plus 0 seconds"
    ExpiresByType application/xml                       "access plus 0 seconds"
  # Web feeds
    ExpiresByType application/atom+xml                  "access plus 1 hour"
    ExpiresByType application/rss+xml                   "access plus 1 hour"
  # Web fonts
    ExpiresByType application/font-woff                 "access plus 1 year"
    ExpiresByType application/font-woff2                "access plus 1 year"
    ExpiresByType application/vnd.ms-fontobject         "access plus 1 year"
    ExpiresByType application/x-font-ttf                "access plus 1 year"
    ExpiresByType font/opentype                         "access plus 1 year"
</IfModule>
# END LBC





# GZIP enabled by SG-Optimizer
<IfModule mod_deflate.c>
    <IfModule mod_filter.c>
       AddOutputFilterByType DEFLATE "application/atom+xml" \
          "application/javascript" \
          "application/json" \
          "application/ld+json" \
          "application/manifest+json" \
          "application/rdf+xml" \
          "application/rss+xml" \
          "application/schema+json" \
          "application/vnd.geo+json" \
          "application/vnd.ms-fontobject" \
          "application/x-font-ttf" \
          "application/x-javascript" \
          "application/x-web-app-manifest+json" \
          "application/xhtml+xml" \
          "application/xml" \
          "font/eot" \
          "font/opentype" \
          "image/bmp" \
          "image/svg+xml" \
          "image/vnd.microsoft.icon" \
          "image/x-icon" \
          "text/cache-manifest" \
          "text/css" \
          "text/html" \
          "text/javascript" \
          "text/plain" \
          "text/vcard" \
          "text/vnd.rim.location.xloc" \
          "text/vtt" \
          "text/x-component" \
          "text/x-cross-domain-policy" \
          "text/xml"
    </IfModule>
</IfModule>
# END GZIP

# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php74” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php74___lsphp .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit

# SGO Unset Vary
  Header unset Vary
# SGO Unset Vary END
//html
<app-navbar></app-navbar>
<div class="main-container">
    <div class="header-search-container">
        <i class="bi bi-arrow-left-circle header-icon" (click)="goBack()"></i>
        <h2 class="header-title" routerLink="/product-list">AV MERCH</h2>
        <div class="search-bar-container">
            <input type="text" class="form-control search-bar" placeholder="Search products" [(ngModel)]="searchTerm" (input)="filteredProductsBySearch()">
        </div>
    </div>
    
    <!-- Side Navbar -->
    <div class="side-navbar" [ngClass]="{'open': isSidebarOpen}">
      <ul>
        <li (click)="filterProductsByCategory(0)">All</li>
        <li (click)="filterProductsByCategory(1)">Tops</li>
        <li (click)="filterProductsByCategory(2)">Bottoms</li>
      </ul>
    </div>
    
    <!-- Toggle Button -->
    <button class="toggle-btn" (click)="toggleSidebar()">
      <i class="bi" [ngClass]="{'bi-list': !isSidebarOpen, 'bi-x': isSidebarOpen}"></i>
    </button>
    
    <div class="product-list-container">
        <div *ngIf="filteredProducts.length === 0">
            <br>
            <br>
            <h1>"No Products Found"</h1>
        </div>
        <div *ngIf="filteredProducts.length > 0" class="row">
            <div class="col-6" *ngFor="let product of filteredProducts">
                <div class="card" style="width: 18rem;">
                    <div class="card-body">
                        <div class="card-img-container">
                            <a routerLink="/product-item/{{product.product_ID}}">
                                <img [src]="getImageSrc(product.product_Img)" alt= "Product Image" class="card-img-top">
                            </a>
                        </div>
                        <p class="card-text" style="text-align: center;">{{product.product_Name}}</p>
                    </div>
                </div>
                <br>
                <br>
            </div>
        </div>
    </div>
    <br>
</div>

//ts
import { Component } from '@angular/core';
import { OrderService } from '../Services/order.service';
import { Product } from '../shared/order';
import { CommonModule } from '@angular/common';
import { Router, RouterLink } from '@angular/router';
import { NavbarComponent } from './navbar.component';
import { Location } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';

@Component({
  selector: 'app-product-list',
  standalone: true,
  imports: [CommonModule, RouterLink, NavbarComponent, FormsModule],
  templateUrl: './product-list.component.html',
  styleUrl: './product-list.component.css'
})
export class ProductListComponent {
  productImage: string | null = null;
  products:Product[] = [];
  totalCartItems: number = 0;
  filteredProducts: Product[] = [];
  isSidebarOpen: boolean = false;
  searchTerm: string = '';

  constructor(private orderService:OrderService, private location: Location, private router: Router) {}

  ngOnInit(){
    this.GetAllProducts();
    this.orderService.cartItemsCount.subscribe(count => this.totalCartItems = count); // Update cart items count
    this.orderService.loadWishlistItems();
    this.orderService.loadCartItems();
  }

  GetAllProducts(): void {
    this.orderService.getAllProducts().subscribe({
      next: (p) => {
        this.products = p;
        this.filteredProducts = p;   
        console.log(p);        
      },
      error: (err) => {
        console.error('Error fetching products', err);
      }
    });
  }

  filterProductsByCategory(categoryId: number): void {
    if (categoryId === 0) {
      this.filteredProducts = this.products; // Display all products if 'All' is selected
    } else {
      this.filteredProducts = this.products.filter(product => product.product_Category_ID === categoryId);
    }
    this.toggleSidebar(); // Close sidebar after selecting a category
  }
  

  filteredProductsBySearch(): void {
    if (!this.searchTerm) {
      this.filteredProducts = this.products;
    } else {
      const term = this.searchTerm.toLowerCase();
      this.filteredProducts = this.products.filter(product =>
        product.product_Name.toLowerCase().includes(term)
      );
    }
  }

  toggleSidebar(): void {
    this.isSidebarOpen = !this.isSidebarOpen;
  }

  onCartUpdated(quantity: number) {  // Update cart count
    this.totalCartItems += quantity;
    // this.orderService.updateCartCount(this.totalCartItems); // Update the cart count in the service
  }

  getImageSrc(base64String: string): string {
    return `data:image/jpeg;base64,${base64String}`;
  }
  
  goBack() {
    const userTypeId = JSON.parse(localStorage.getItem('User')!).userTypeId;
    const userId = JSON.parse(localStorage.getItem('User')!).userId;
    if (userTypeId === 1) {  // Ensure userTypeID is compared as string
      this.router.navigateByUrl(`/OwnerHome/${userId}`);
    } else if (userTypeId === 2) {
      this.router.navigateByUrl(`/EmployeeHome/${userId}`);
    } else if (userTypeId === 3) {
      this.router.navigateByUrl(`/Home/${userId}`);
    }
  }
}
Navigate to the following settings page in Edge browser: 

edge://settings/content/cookiesUnder Clear on exit section, 
enter the following items: http://* and https://*Under the Allow section, 
start adding the Microsoft domains from this repository, 
using this format [*.]Microsoft.com

Now every time you close your Edge browser, the cookies of the websites that are not in the Allow list will be removed. This can effectively increase your security and privacy on the web, without breaking websites functionalities.

You can optionally add any other website's domain that you don't want to log out of every time you close your browser to the list.All of these settings are synced so you only have to do these once.
[HttpPost]
[Route("MoveFromWishlistToCart")]
public async Task<IActionResult> MoveFromWishlistToCart([FromBody] CartViewModel model)
{
    var userId = User.FindFirstValue("userId");

    if (userId == null)
    {
        return Unauthorized("User not logged in");
    }

    var member = await _context.Members.FirstOrDefaultAsync(m => m.User_ID == int.Parse(userId));
    if (member == null)
    {
        return Unauthorized("User is not a member");
    }

    var wishlist = await _context.Wishlists.FirstOrDefaultAsync(w => w.Member_ID == member.Member_ID);
    if (wishlist == null)
    {
        return NotFound("Wishlist not found");
    }

    var wishlistItem = await _context.Wishlist_Items
        .FirstOrDefaultAsync(w => w.Product_ID == model.Product_ID && w.Wishlist_ID == wishlist.Wishlist_ID);

    if (wishlistItem == null)
    {
        return NotFound("Product not found in the wishlist");
    }

    var cart = await _context.Carts.FirstOrDefaultAsync(c => c.Member_ID == member.Member_ID);
    if (cart == null)
    {
        cart = new Cart { Member_ID = member.Member_ID };
        _context.Carts.Add(cart);
        await _context.SaveChangesAsync();
    }

    var existingCartItem = await _context.Cart_Items
        .FirstOrDefaultAsync(c => c.Product_ID == model.Product_ID && c.Cart_ID == cart.Cart_ID);

    if (existingCartItem != null)
    {
        existingCartItem.Quantity += 1;
        _context.Cart_Items.Update(existingCartItem);
    }
    else
    {
        var cartItem = new Cart_Item
        {
            Product_ID = model.Product_ID,
            Quantity = 1,
            Cart_ID = cart.Cart_ID
        };

        _context.Cart_Items.Add(cartItem);
    }

    _context.Wishlist_Items.Remove(wishlistItem);

    await _context.SaveChangesAsync();

    return Content("Product moved from wishlist to cart", "text/plain");
}
Introduction:

In the fast-growing world of cryptocurrency, there's a huge demand for reliable and feature-rich exchange platforms. PancakeSwap offers users an easy way to swap tokens, participate in yield farming, and engage in other DeFi activities. If you want to enter this booming market, a PancakeSwap clone script is the solution. It enables you to swiftly launch your crypto exchange without building everything from scratch.

Objective : 

The PancakeSwap clone script development is to create a ready-to-use software solution that enables businesses to launch their cryptocurrency exchange platform quickly and affordably. This script replicates the core features of PancakeSwap, such as token swapping, yield farming, and other DeFi activities, offering a seamless user experience. The goal is to provide a customizable and successful business model that can be quickly brought to market, allowing clients to tap into the growing demand for crypto exchange services.

Why Choose a PancakeSwap Clone Script?

The PancakeSwap clone script is a pre-built software solution that copies the main features of PancakeSwap. It's designed to help businesses quickly and affordably enter the crypto exchange market. Here's why choosing a clone script is a wise decision:

Time-Efficient: Building a crypto exchange from scratch can take months or even years. A clone script lets you launch your platform in just a few weeks.
Cost-Effective: Creating an exchange involves high development, testing, and deployment costs. A clone script is an affordable option that includes all the necessary features.
Proven Success: PancakeSwap is already successful and trusted by users. By cloning its model, you adopt a strategy that has been proven to work.
Customizable: The clone script not only replicates PancakeSwap's features but also allows for customization. 

Security Features of a PancakeSwap Clone Script

To secure your PancakeSwap clone script, use strong encryption for data and transactions, implement two-factor authentication (2FA), and store most funds in offline cold wallets. Regularly conduct security audits and penetration testing, and have smart contracts audited by reputable firms. Obtain insurance against potential breaches, adhere to industry standards like NIST, and develop an incident response plan. Employ secure coding practices and educate users on security best practices, such as using strong passwords and recognizing phishing attempts. These measures will create a safer environment for your platform and its users.
Getting Started with the PancakeSwap Clone Script:
Purchase the Script: Buy the PancakeSwap clone script from a trusted provider.Ensure it provides all the functionalities you need.
Customize: Customize the script with your branding and specific requirements, either on your own or with the help of a development team.
Testing: Thoroughly test the platform to identify and fix any issues before going live.
Deployment: Deploy your exchange on the blockchain. The script is usually set up for the Binance Smart Chain but can be adapted for other blockchains.
Marketing and Launch: Create a marketing plan to get your exchange noticed. Start with offers and incentives to bring in users and make trading exciting.
Conclusion:

The PancakeSwap clone script development is a powerful tool for entering the crypto exchange market. It provides a quick, affordable, and efficient way to launch a feature-rich exchange that rivals industry leaders like PancakeSwap. With the right strategy and dedication, your PancakeSwap clone can become a major player in cryptocurrency trading. Take advantage of this opportunity to transform your business and tap into the vast potential of the crypto market. Get the PancakeSwap clone script today and launch your crypto exchange instantly!


Visit —https://www.beleaftechnologies.com/pancakeswap-clone-script-development
Contact Details:
Phone +91 8148147362
Email business@beleaftechnologies.com
//CreateOrder Method
[HttpPost]
[Route("CreateOrder")]
public async Task<IActionResult> CreateOrder([FromBody] OrderViewModel ov)
{
    // Validate input
    if (ov == null || ov.OrderLines == null || !ov.OrderLines.Any())
    {
        return BadRequest("OrderViewModel or OrderLines field is required.");
    }

    // Extract user ID from claims
    var userId = User.FindFirstValue("userId");
    if (userId == null)
    {
        return Unauthorized("User not logged in");
    }

    // Retrieve member
    var member = await _context.Members.FirstOrDefaultAsync(m => m.User_ID == int.Parse(userId));
    if (member == null)
    {
        return Unauthorized("User is not a member");
    }

    // Create and save the order
    var order = new Order
    {
        Member_ID = member.Member_ID,
        Order_Date = DateTime.UtcNow,
        Order_Status_ID = ov.Order_Status_ID, // Use the Order_Status_ID from the view model
        IsCollected = ov.IsCollected,
        Total_Price = ov.Total_Price // Ensure Total_Price is also set
    };

    _context.Orders.Add(order);
    await _context.SaveChangesAsync(); // Save to get Order_ID

    // Add order lines
    var orderLines = ov.OrderLines.Select(ol => new Order_Line
    {
        Product_ID = ol.Product_ID,
        Quantity = ol.Quantity,
        Unit_Price = ol.Unit_Price,
        Order_ID = order.Order_ID // Link to the created order
    }).ToList();

    _context.Order_Lines.AddRange(orderLines);
    await _context.SaveChangesAsync(); // Save order lines

    // Clear the member's cart
    var cart = await _context.Carts
        .Include(c => c.Cart_Items)
        .FirstOrDefaultAsync(c => c.Member_ID == member.Member_ID);

    if (cart != null)
    {
        _context.Cart_Items.RemoveRange(cart.Cart_Items);
        await _context.SaveChangesAsync();
    }

    return Ok(order);
}
let widthContianer = container.clientWidth;
			const tl = gsap.timeline({
				scrollTrigger: {
					trigger: container,
					pin: true,
					scrub: 0.5,
					start: 'top 20%',
					end: `${(widthContianer * 3) / 2}`,
					invalidateOnRefresh: true,
				},
			});
class NoteDatabase {
  static final NoteDatabase instance = NoteDatabase._internal();

  static Database? _database;

  NoteDatabase._internal();

  Future<Database> get database async {
    if (_database != null) {
      return _database!;
    }

    _database = await _initDatabase();
    return _database!;
  }

  Future<Database> _initDatabase() async {
    final databasePath = await getDatabasesPath();
    final path = '$databasePath/notes.db';
    return await openDatabase(
      path,
      version: 1,
      onCreate: _createDatabase,
    );
  }
}
#Way3. Use Command Promp (run as admin)
#User
wmic UserAccount where Name='Cocosenor' set PasswordExpires=False

#systemwide
wmic UserAccount set PasswordExpires=False
document.addEventListener("DOMContentLoaded", function() {
  const addIcon = document.getElementById("add-icon");
  const dropdownMenu = document.getElementById("dropdown-menu");
  const wordInput = document.getElementById("word-input");
  const numWordsInput = document.getElementById("num-words-input");
  const generateButton = document.getElementById("generate-button");
  const resultElement = document.getElementById("word-list");
  const resetButton = document.getElementById("reset");
  const saveButton = document.createElement("button");
  saveButton.id = "save-button";
  saveButton.textContent = "Save";
  resetButton.insertAdjacentElement("afterend", saveButton);
  const modal = document.getElementById("listModal");
  const modalBody = document.getElementById("modal-body");
  const createListButton = document.getElementById("create-list");
  const viewListButton = document.getElementById("view-list");
  const closeModalButton = document.getElementById("close-modal");
  const deleteAllButton = document.createElement("button");
  deleteAllButton.id = "delete-all";
  deleteAllButton.textContent = "Delete All";
  closeModalButton.insertAdjacentElement("afterend", deleteAllButton);

  // Store lists in local storage
  let lists = JSON.parse(localStorage.getItem('lists')) || [];
  let definitionMap = {};

  // Toggle dropdown menu visibility
  addIcon.addEventListener("click", function() {
      dropdownMenu.style.display = dropdownMenu.style.display === "block" ? "none" : "block";
  });

  // Hide the dropdown menu if the user clicks outside of it
  document.addEventListener("click", function(event) {
      if (!addIcon.contains(event.target) && !dropdownMenu.contains(event.target)) {
          dropdownMenu.style.display = "none";
      }
  });

  // Create List button click handler
  createListButton.addEventListener("click", function() {
      openCreateListModal();
  });

  // View List button click handler
  viewListButton.addEventListener("click", function() {
      openViewListModal();
  });

  // Close modal when the user clicks on Close button
  closeModalButton.addEventListener("click", function() {
      modal.style.display = "none";
  });

  // Close modal when the user clicks outside of the modal
  window.addEventListener("click", function(event) {
      if (event.target === modal) {
          modal.style.display = "none";
      }
  });

  // Create Flip Card
function createFlipCard(word) {
  const card = document.createElement('li');
  card.classList.add('flip-container');
  card.innerHTML = `
    <div class="flip-card">
      <div class="front">${word}</div>
      <div class="back">${definitionMap[word] || 'Definition not found'}</div>
    </div>
  `;

  card.addEventListener('click', () => {
    card.querySelector('.flip-card').classList.toggle('flipped');
  });

  return card;
}


  // Generate random words with definitions
  async function generateRandomWords() {
      resultElement.classList.remove("error");

      const words = wordInput.value.split(",").map(word => word.trim()).filter(word => word !== "");
      if (words.length === 0) {
          resultElement.classList.add("error");
          resultElement.innerHTML = "Please enter some words separated by commas.";
          return;
      }

      const numWords = Math.min(numWordsInput.value, words.length);
      let selectedWords = getRandomWords(words, numWords);

      resultElement.innerHTML = ''; // Clear previous results
      for (const word of selectedWords) {
          const definition = await fetchDefinition(word);
          definitionMap[word] = definition;
          resultElement.appendChild(createFlipCard(word));
      }
      updateWordCounter();
  }

  // Get random words from the list
  function getRandomWords(words, numWords) {
      const shuffled = words.sort(() => 0.5 - Math.random());
      return shuffled.slice(0, numWords);
  }

  // Fetch word definition from API
  async function fetchDefinition(word) {
      try {
          const response = await fetch(`https://api.dictionaryapi.dev/api/v2/entries/en/${word}`);
          if (!response.ok) {
              if (response.status === 404) {
                  return "Definition not found.";
              }
              throw new Error("Network response was not ok.");
          }
          const data = await response.json();
          if (data && data[0] && data[0].meanings && data[0].meanings[0] && data[0].meanings[0].definitions && data[0].meanings[0].definitions[0]) {
              return data[0].meanings[0].definitions[0].definition;
          } else {
              return "Definition not found.";
          }
      } catch (error) {
          console.error("Error fetching definition:", error);
          return "Definition not found.";
      }
  }

  // Attach event listeners to buttons
  generateButton.addEventListener("click", generateRandomWords);
  resetButton.addEventListener("click", function() {
      resultElement.innerHTML = "";
      wordInput.value = "";
      numWordsInput.value = 1;
      updateWordCounter();
  });

  // Save button click handler
  saveButton.addEventListener("click", function() {
      const words = wordInput.value.split(",").map(word => word.trim()).filter(word => word !== "");
      if (words.length === 0) {
          alert("Please enter some words to save.");
          return;
      }
      const listName = prompt("Enter the name of the list:");
      if (listName) {
          lists.push({ name: listName, words });
          localStorage.setItem('lists', JSON.stringify(lists));
          alert(`List "${listName}" saved.`);
      } else {
          alert("List name cannot be empty.");
      }
  });

  // Function to open create list modal
  function openCreateListModal() {
      // Clear previous content of modal body
      modalBody.innerHTML = "";

      // Create input field and submit button for entering list name
      const inputField = document.createElement("input");
      inputField.setAttribute("type", "text");
      inputField.setAttribute("placeholder", "Enter the name of the list");
      inputField.style.marginRight = "10px";

      const submitButton = document.createElement("button");
      submitButton.textContent = "Create";
      submitButton.addEventListener("click", function() {
          const listName = inputField.value.trim();
          if (listName) {
              lists.push({ name: listName, words: [] });
              localStorage.setItem('lists', JSON.stringify(lists));
              modal.style.display = "none"; // Hide modal after creating list
              alert(`List "${listName}" created.`);
              inputField.value = ""; // Clear input field
              openViewListModal(); // After creating, open view list modal
          } else {
              alert("Please enter a valid list name.");
          }
      });

      const cancelButton = document.createElement("button");
      cancelButton.textContent = "Cancel";
      cancelButton.addEventListener("click", function() {
          modal.style.display = "none";
      });

      modalBody.appendChild(inputField);
      modalBody.appendChild(submitButton);
      modalBody.appendChild(cancelButton);

      modal.style.display = "block"; // Display modal
      dropdownMenu.style.display = "none"; // Hide dropdown menu
  }

  // Function to open view list modal
  function openViewListModal() {
      if (lists.length === 0) {
          modalBody.innerHTML = "<p>No lists available.</p>";
      } else {
          modalBody.innerHTML = ""; // Clear previous content

          lists.forEach((list, index) => {
              const listItem = document.createElement("div");
              listItem.className = "list-item";
              listItem.textContent = list.name;

              // Add view, open, and delete buttons for each list item
              const viewButton = document.createElement("button");
              viewButton.textContent = "View";
              viewButton.addEventListener("click", function() {
                  openWordListModal(index);
              });

              const openButton = document.createElement("button");
              openButton.textContent = "Open";
              openButton.addEventListener("click", function() {
                  openList(index);
              });

              const deleteButton = document.createElement("button");
              deleteButton.textContent = "Delete";
              deleteButton.addEventListener("click", function() {
                  lists.splice(index, 1);
                  localStorage.setItem('lists', JSON.stringify(lists));
                  openViewListModal(); // Refresh view after deleting
              });

              listItem.appendChild(viewButton);
              listItem.appendChild(openButton);
              listItem.appendChild(deleteButton);
              modalBody.appendChild(listItem);
          });
      }

      modal.style.display = "block"; // Display modal
      dropdownMenu.style.display = "none"; // Hide dropdown menu
  }

  // Function to open word list modal
  function openWordListModal(listIndex) {
      // Clear previous content of modal body
      modalBody.innerHTML = "";

      // Display list name
      const listName = document.createElement("h2");
      listName.textContent = lists[listIndex].name;
      modalBody.appendChild(listName);

      // Display words
      const wordList = document.createElement("ul");
      lists[listIndex].words.forEach(word => {
          const wordItem = document.createElement("li");
          wordItem.textContent = word;
          wordList.appendChild(wordItem);
      });
      modalBody.appendChild(wordList);

      // Add input field and button for adding words to the list
      const wordInputField = document.createElement("input");
      wordInputField.setAttribute("type", "text");
      wordInputField.setAttribute("placeholder", "Enter words separated by commas");
      wordInputField.style.marginRight = "10px";

      const addButton = document.createElement("button");
      addButton.textContent = "Add";
      addButton.addEventListener("click", function() {
          const words = wordInputField.value.split(",").map(word => word.trim());
          lists[listIndex].words.push(...words);
          localStorage.setItem('lists', JSON.stringify(lists));
          openWordListModal(listIndex); // Refresh view after adding words
      });

      const closeButton = document.createElement("button");
      closeButton.textContent = "Close";
      closeButton.addEventListener("click", function() {
          modal.style.display = "none";
      });

      modalBody.appendChild(wordInputField);
      modalBody.appendChild(addButton);
      modalBody.appendChild(closeButton);

      modal.style.display = "block"; // Display modal
  }

  // Function to open list and populate the main search bar
  function openList(listIndex) {
      wordInput.value = lists[listIndex].words.join(", ");
      modal.style.display = "none"; // Hide modal
  }

  // Delete all button click handler
  deleteAllButton.addEventListener("click", function() {
      if (confirm("Are you sure you want to delete all lists?")) {
          lists = [];
          localStorage.setItem('lists', JSON.stringify(lists));
          openViewListModal(); // Refresh view after deleting all lists
      }
  });

  // Function to update word counter
  function updateWordCounter() {
      const wordCount = wordInput.value.split(",").filter(word => word.trim() !== "").length;
      document.getElementById("word-counter").textContent = `${wordCount} words`;
  }

  // Event listener to update word counter when input changes
  wordInput.addEventListener("input", updateWordCounter);

  // Initial call to update word counter on page load
  updateWordCounter();
});
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Random Word Generator</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
  <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
  <div class="header">
    <h1>Random Word Generator</h1>
    <i id="add-icon" class="fa fa-plus" aria-hidden="true"></i>
    <div id="dropdown-menu">
      <button id="create-list">Create List</button>
      <button id="view-list">View List</button>
    </div>
  </div>

  <input type="text" id="word-input" placeholder="Enter words separated by commas">
  <p id="word-counter">0 words</p>
  <input type="number" id="num-words-input" min="1" value="1">
  <button id="generate-button">Generate Random Words</button>
  <button id="reset">Reset</button>
  <div id="result">
    <ul id="word-list"></ul>
  </div>

  <!-- Modal for displaying lists -->
  <div id="listModal" class="modal">
    <div class="modal-content">
      <div class="modal-header">
        <span class="close">&times;</span>
        <h2>Lists</h2>
      </div>
      <div class="modal-body" id="modal-body">
        <!-- List items will be displayed here -->
      </div>
      <div class="modal-footer">
        <button id="close-modal" class="close">Close</button>
      </div>
    </div>
  </div>

  <script src="script.js"></script>
</body>
</html>
/* Modal Styles */
.modal {
  display: none;
  position: fixed;
  z-index: 1;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  overflow: auto;
  background-color: rgba(0, 0, 0, 0.4);
}

.modal-content {
  background-color: #fefefe;
  margin: 15% auto;
  padding: 20px;
  border: 1px solid #888;
  width: 80%;
  max-width: 500px;
  max-height: 80vh; /* Limit height */
  overflow-y: auto; /* Add scroll if needed */
  border-radius: 10px;
}

.modal-header, .modal-body, .modal-footer {
  padding: 10px;
}

.modal-header {
  border-bottom: 1px solid #ddd;
}

.modal-footer {
  border-top: 1px solid #ddd;
  text-align: right;
}

.close {
  color: #aaa;
  float: right;
  font-size: 28px;
  font-weight: bold;
}

.close:hover, .close:focus {
  color: black;
  text-decoration: none;
  cursor: pointer;
}

/* Header and Dropdown Styles */
.header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: relative;
}

#dropdown-menu {
  display: none;
  position: absolute;
  background-color: white;
  box-shadow: 0 8px 16px rgba(0,0,0,0.2);
  z-index: 1;
}

#dropdown-menu button {
  display: block;
  width: 100%;
  padding: 10px;
  border: none;
  background: none;
  text-align: left;
}

#dropdown-menu button:hover {
  background-color: #ddd;
}

#add-icon {
  font-size: 24px;
  cursor: pointer;
  color: #333;
}

#add-icon:hover {
  color: #666;
}

/* Input and Button Styles */
body {
  font-family: Arial, sans-serif;
}

#word-input {
  width: 50%;
  padding: 10px;
  font-size: 18px;
}

#num-words-input {
  width: 20%;
  padding: 10px;
  font-size: 18px;
}

#generate-button {
  background-color: #4CAF50;
  color: #fff;
  padding: 10px 20px;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}

#generate-button:hover {
  background-color: #3e8e41;
}

#result {
  margin-top: 20px;
}

#word-list {
  font-size: 24px;
  font-weight: bold;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  grid-gap: 10px;
  padding: 0;
  list-style-type: none;
}

#word-list li {
  background-color: #f7f7f7;
  padding: 10px;
  border: 1px solid #ddd;
  border-radius: 5px;
  text-align: center;
}

/* Reset Button Styles */
#reset {
  font-family: "Open Sans", sans-serif;
  font-size: 16px;
  letter-spacing: 2px;
  text-decoration: none;
  text-transform: uppercase;
  color: #000;
  cursor: pointer;
  border: 3px solid;
  padding: 0.25em 0.5em;
  box-shadow: 1px 1px 0px 0px, 2px 2px 0px 0px, 3px 3px 0px 0px, 4px 4px 0px 0px, 5px 5px 0px 0px;
  position: relative;
  user-select: none;
}

#reset:hover {
  background-color: #333;
  color: #fff;
}

#word-input:focus, #num-words-input:focus {
  border-color: #aaa;
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

#generate-button:active {
  transform: translateY(2px);
}

#result {
  background-color: #f9f9f9;
  padding: 20px;
  border: 1px solid #ddd;
  border-radius: 10px;
}

#word-list li:nth-child(even) {
  background-color: #fff;
}

/* Flip Card Styles */
/* Flip Card Styles */
.flip-container {
  perspective: 1000px;
  display: inline-block;
  margin: 10px;
}

.flip-card {
  position: relative;
  width: 150px;
  height: 150px;
  transition: transform 0.6s;
  transform-style: preserve-3d;
}

.flip-card.flipped {
  transform: rotateY(180deg);
}

.flip-card .front, .flip-card .back {
  position: absolute;
  width: 100%; /* Ensure both sides take the full width */
  height: 100%; /* Ensure both sides take the full height */
  backface-visibility: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden; /* Prevent overflow of content */
  text-align: center; /* Center text horizontally */
  padding: 10px; /* Ensure padding does not push text out */
}

.flip-card .front {
  background-color: #fff;
  color: black;
  font-size: 18px;
  border: 1px solid #ddd;
  border-radius: 5px;
}

.flip-card .back {
  background-color: #f9f9f9;
  color: black;
  transform: rotateY(180deg);
  border: 1px solid #ddd;
  border-radius: 5px;
}

/* Responsive font size to fit content */
.flip-card .front, .flip-card .back {
  font-size: calc(10px + 1vw); /* Adjust size dynamically based on viewport width */
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":star: What's on in Melbourne this week! :star:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Hey Melbourne, \n\n Happy Monday! We hope you are loving the launch of our new *Boost Days!* \n\n As part of our <https://xpresso.xero.com/blog/featured/more-opportunities-to-come-together-with-xeros-connect/|*Xeros Connect Strategy*>, you'll experience supercharged days at the office every *Wednesday* and *Thursday*. \n\nPlease see below for what's on this week! "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-7: Wednesday, 7th August",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:coffee: *Xero Café*: Café-style beverages and sweet treats.\nThis week we are offering Caramel Slice (GF), Chocolate Florentines (GF) and Happy Face Biscuits!\n:clipboard: *Weekly Café Special*: _White Chocolate Mocha_\n:late-cake: *Afternoon Tea*: Provided by *Brisk Catering* from *2pm* in the *L1, L2 and L3* kitchens!\n:massage:*Wellbeing - Massage*: Book a session <https://bookings.corporatebodies.com/|*here*> to relax and unwind. \n *Username:* xero \n *Password:* 1234"
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-8: Thursday, 8th August",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":coffee: *Xero Café*: Café-style beverages and sweet treats \nThis week we are offering Caramel Slice (GF), Chocolate Florentines (GF) and Happy Face Biscuits! \n:clipboard: *Weekly Café Special*: _White Chocolate Mocha_ \n:breakfast: *Breakfast*: Provided by *Kartel Catering* from *8:30am - 10:30am* in the Wominjeka Breakout Space.\n "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*LATER THIS MONTH:*"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Thursday, 22nd August*\n :blob-party: *Social + (Nashville Theme)*: Drinks, food, and engaging activities bringing everyone together. Make sure you put on your cowboy/cowgirl hats and join us for the party! :cowboy-twins:"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Stay tuned to this channel for more details, check out the <https://calendar.google.com/calendar/u/0?cid=Y19xczkyMjk5ZGlsODJzMjA4aGt1b3RnM2t1MEBncm91cC5jYWxlbmRhci5nb29nbGUuY29t|*Melbourne Social Calendar*>, and get ready to Boost your workdays!\n\nLove,\nWX Team :party-wx:"
			}
		}
	]
}
\\upload
string wwwRootPath = _webHostEnvironment.WebRootPath;
string fileName = Guid.NewGuid().ToString() + Path.GetExtension(file.FileName);
string fileWebPath = Path.Combine(@"~\file\path", fileName).Replace('\\', '/');
string filePath = Path.Combine(wwwRootPath, @"file\path", fileName);
using (FileStream fileStream = new FileStream(filePath, FileMode.Create))
{
    file.CopyTo(fileStream);
}
function solve(){
    const xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
        document.getElementById("data").innerHTML = xhttp.responseText;
        }
    };
    xhttp.open("GET", "https://cors-anywhere.herokuapp.com/https://tiny-news-api.herokuapp.com/api/news", true);
    xhttp.send();
}
solve()
<input type="text" oninput="this.value = this.value.replace(/[^0-9.]/g, '').replace(/(\..*?)\..*/g, '$1').replace(/^0[^.]/, '0');" />
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":newspaper:  STAY IN THE KNOW  :newspaper:"
			}
		},
		{
			"type": "context",
			"elements": [
				{
					"text": "*August 1, 2024*  |  Office Announcements",
					"type": "mrkdwn"
				}
			]
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Stay in the loop about what's happening at the office such as upcoming visitors, onsite meetings, lunches, and more. Don't miss out- check out the <https://calendar.google.com/calendar/u/0?cid=Y18wMjUxOTA3NjU4ZWRkMjBkMGMyZDBlYzk3NWI0NGJmMzM1YzFiNDY5NDAyMDg1ZTlkOGZmODE1NDQ3NjIxMDY5QGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20|*Calgary Happenings Calendar*>"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":calendar: |:lunch: *THURSDAY LUNCH SCHEDULE* :lunch: | :calendar: "
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "`8/1` *strEATS Beltline Kitchen*"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "`8/8` *Jerusalem Shawarma*"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "`8/15` *Wakado Ramen*"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "`8/22` *Dedicate Healthy Kitchen*"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "`8/29` *K-Thi Vietnamese Cuisine*"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":loud_sound:*FOR YOUR INFORMATION* :loud_sound:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":holiday-potato: *Upcoming Public Holiday*: Monday, 5th August  \n\n :standup: *Canada Stand Up* \n *August 15th*- Hosted by Intern Engineer, *Daniel Iseoluwa*"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":WX: *WX offers comprehensive event planning services, including:*\n - Assistance with logistics and coordination \n - Access to a network of vendors for catering, supply ordering, etc.\n\n _Note: Even if you don’t need our assistance but are using the office space, kindly inform WX._ "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":tada: *Happy Birthday* :tada: to all Xeros celebrating their birthdays this August! We hope you have an amazing day :party_wiggle: "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "context",
			"elements": [
				{
					"type": "mrkdwn",
					"text": ":pushpin: Have something important to add to our calendar or need some assistance? Get in touch with us by logging a ticket via the <https://xerohelp.zendesk.com/hc/en-us/requests/new?ticket_form_id=900001672246| *HelpCentre*>. We are here to help!"
				}
			]
		}
	]
}
<input type="number" onKeyPress="if(this.value.length==6) return false;"/>
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](code_of_conduct.md)
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":star: Introducing Xero Boost Days! :star:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Hey Calgary! \n\nWe're excited to announce the launch of our Boost Day Program!\n\nStarting this week, as part of our <https://xpresso.xero.com/blog/featured/more-opportunities-to-come-together-with-xeros-connect/|*Xeros Connect Strategy*>, you'll experience supercharged days at the office every *Thursday*. Get ready for a blend of delicious food, beverages, wellness activites, and fun connections!\n\nPlease see below for what's on this week! "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-1: Thursday, 1st August",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": ":coffee: *Premium Coffee Experience*: Enjoy the in office coffee. Keep an eye out for your new coffee machine which will set up soon with new flavors and milk to enjoy. \n:lunch: *Lunch*: Provided by *strEATS Beltline Kitchen* at *12:00PM*.\n"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*LATER THIS MONTH:*"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "*Thursday, 15th August*\n :standup: *Stand Up* hosted by Intern Engineer, *Daniel Iseoluwa*  Join us to hear updates, celebrate Xero's and say hello to our newest hires! "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Stay tuned to this channel for more details, check out the <https://calendar.google.com/calendar/u/0?cid=Y18wMjUxOTA3NjU4ZWRkMjBkMGMyZDBlYzk3NWI0NGJmMzM1YzFiNDY5NDAyMDg1ZTlkOGZmODE1NDQ3NjIxMDY5QGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20|*Calgary Happenings Calendar*>, and get ready to Boost your workdays!\n\nLove,\nWX Team :party-wx:"
			}
		}
	]
}
{
	"blocks": [
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":star: Boost Days - What's on this week! :star:"
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Happy Monday Singapore! We're excited to kickstart another great week in the office with our new Boost Day Program :zap: Please see below for what's coming up! "
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-26: Monday, 26th Aug",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:coffee: *Café Partnership*: Café-style beverages with Group Therapy Coffee\n:breakfast: *Lunch*: Provided by *Group Therapy Café* from *12PM - 2PM* in the Kitchen."
			}
		},
		{
			"type": "header",
			"text": {
				"type": "plain_text",
				"text": ":calendar-date-31: Wednesday, 28th Aug",
				"emoji": true
			}
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "\n:blob-party: *Social +*: Get ready for some Nashville style hot chicken from *Chix Hot Chicken* with different spicy levels to challegnes yourselves at 4pm in the Kitchen!:chilli:"
			}
		},
		{
			"type": "divider"
		},
		{
			"type": "section",
			"text": {
				"type": "mrkdwn",
				"text": "Stay tuned to this channel for more details, check out the <https://calendar.google.com/calendar/u/0?cid=Y19lZTA1MmE0NWUxMzQ1OTQ0ZDRjOTk2M2IyNjA4M[…]MjRmZmJhODk0MGEwYjQ4ZDllQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20|*Singapore Social Calendar*>, and get ready to Boost your workdays!\n\nLove,\nWX Team :party-wx:"
			}
		}
	]
}
Open "imports/theme.nss" and change dark option to default or auto

dark = default

Save changes, press CTRL + RIGHT-CLICK to reload settings.
[
    {
        "$lookup": {
            "from": "participant",
            "localField": "participantId",
            "foreignField": "_id",
            "as": "participants"
        }
    },
    {
        "$unwind": {
            "path": "$participants",
            "preserveNullAndEmptyArrays": true
        }
    },
    {
        "$lookup": {
            "from": "subscription",
            "localField": "participantId",
            "foreignField": "userId",
            "as": "subscriptions"
        }
    },
    {
        "$unwind": {
            "path": "$subscriptions",
            "preserveNullAndEmptyArrays": true
        }
    },
    {
        "$lookup": {
            "from": "subscriptionPlan",
            "localField": "subscriptions.planId",
            "foreignField": "_id",
            "as": "subscriptionPlans"
        }
    },
    {
        "$unwind": {
            "path": "$subscriptionPlans",
            "preserveNullAndEmptyArrays": true
        }
    },
    {
        "$match": {
            "nutritionistID": {
                "$oid": "64782249defe1c75d7689cbd"
            }
        }
    },
    {
        "$match": {
            "subscriptions.planId": {
                "$exists": true
            }
        }
    },
    {
        "$match": {
            "participants": {
                "$exists": true
            }
        }
    },
    {
        "$match": {
            "participants": {
                "$exists": true
            }
        }
    },
    {
        "$match": {
            "active": true
        }
    }
]




//query 2
[
    {
        "$lookup": {
            "from": "participant",
            "localField": "participantId",
            "foreignField": "_id",
            "as": "participants"
        }
    },
    {
        "$unwind": {
            "path": "$participants",
            "preserveNullAndEmptyArrays": true
        }
    },
    {
        "$lookup": {
            "from": "subscription",
            "localField": "participantId",
            "foreignField": "userId",
            "as": "subscriptions"
        }
    },
    {
        "$unwind": {
            "path": "$subscriptions",
            "preserveNullAndEmptyArrays": true
        }
    },
    {
        "$lookup": {
            "from": "subscriptionPlan",
            "localField": "subscriptions.planId",
            "foreignField": "_id",
            "as": "subscriptionPlans"
        }
    },
    {
        "$unwind": {
            "path": "$subscriptionPlans",
            "preserveNullAndEmptyArrays": true
        }
    },
    {
        "$match": {
            "nutritionistID": {
                "$oid": "64782249defe1c75d7689cbd"
            }
        }
    },
    {
        "$match": {
            "subscriptions.planId": {
                "$exists": false
            }
        }
    },
    {
        "$match": {
            "participants": {
                "$exists": true
            }
        }
    },
    {
        "$match": {
            "participants": {
                "$exists": true
            }
        }
    },
    {
        "$match": {
            "active": true
        }
    }
]



for tavishi table is -> userNutrionistMapping
// app/static/js/navigation.js

document.addEventListener('DOMContentLoaded', () => {
    document.getElementById('home-button').addEventListener('click', () => {
        window.location.href = '/home';
    });

    document.getElementById('salled-button').addEventListener('click', () => {
        window.location.href = '/salled';
    });
});
= (StartDate as date, WorkDays as number) =>
let
WorkDays2 = (WorkDays*2)+7,
startDate = if Date.DayOfWeek(StartDate)=5 then Date.AddDays(StartDate,2) else
if Date.DayOfWeek(StartDate)=6 then Date.AddDays(StartDate,1) else StartDate,
ListOfDates = List.Dates(startDate, WorkDays2,#duration(1,0,0,0)),
DeleteWeekends = List.Select(ListOfDates, each Date.DayOfWeek(_,1) < 5 ),
WorkDate = List.Range(DeleteWeekends,WorkDays,1),

Result = WorkDate{0}

in
Result
<div style="background: #123456; color: blue; border-radius: 25px; padding: 20px; border: 15px solid #abced8;">
    <h2><span style="color: #ffffff;">Heading2 Here</span></h2>
    <p><span style="color: #ffffff;">Text here</span></p>
    <h3><span style="color: #ffffff;">Heading3 Here</span></h3>
    <p><span style="color: #ffffff;">More text here.</span></p>
</div>
<div style="background: #123456; color: blue; border-radius: 25px; padding: 20px; border: 15px solid #abced8;">
    <h2><span style="color: #ffffff;">Introduction</span></h2>
    <p><span style="color: #ffffff;">If some Imperial Stout has a change of heart about a Jamaica Red Ale near a Rolling Rock, then the Home brew beyond a colt 45 procrastinates. A Mango Beer for an Ellis Island IPA, a Red Stripe from some ESB, and the dorky Heineken are what made America great! When a bull ice reads a magazine, a Budweiser Select reads a magazine. If a highly paid Hommel Bier ridiculously negotiates a prenuptial agreement with some bill from an ESB, then the Hazed and Infused around a Pilsner self-flagellates. The psychotic bottle barely writes a love letter to the Hommel Bier.</span></p>
    <h3><span style="color: #ffffff;">The tanked crank case</span></h3>
    <p><span style="color: #ffffff;">When you see the Hefeweizen, it means that a self-loathing bull ice daydreams. Some blue moon about another Lone Star buries the college-educated Coors. A Sam Adams usually befriends the shot, but a miller light from some Ellis Island IPA dumbly makes a pact with a bill.</span></p>
</div>
star

Sat Aug 03 2024 13:21:51 GMT+0000 (Coordinated Universal Time)

@iamkatmakhafola

star

Sat Aug 03 2024 13:04:21 GMT+0000 (Coordinated Universal Time) https://developers.google.com/youtube/v3/live/docs/fanFundingEvents

@shaini

star

Sat Aug 03 2024 12:56:55 GMT+0000 (Coordinated Universal Time) https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers

@Shook87

star

Sat Aug 03 2024 12:38:59 GMT+0000 (Coordinated Universal Time)

@iamkatmakhafola

star

Sat Aug 03 2024 12:31:07 GMT+0000 (Coordinated Universal Time) https://github.com/expressjs/serve-static#options

@Shook87

star

Sat Aug 03 2024 12:16:13 GMT+0000 (Coordinated Universal Time) https://www.tomshardware.com/how-to/install-windows-11-without-microsoft-account

@Curable1600 #windows #security #edgebrowser

star

Sat Aug 03 2024 11:59:36 GMT+0000 (Coordinated Universal Time)

@iamkatmakhafola

star

Sat Aug 03 2024 11:56:02 GMT+0000 (Coordinated Universal Time)

@iamkatmakhafola

star

Sat Aug 03 2024 06:42:31 GMT+0000 (Coordinated Universal Time) https://web.archive.org/web/20181122201156/https://nailfungusalert.com/

@hd310

star

Fri Aug 02 2024 19:46:19 GMT+0000 (Coordinated Universal Time)

@mcd777 #undefined

star

Fri Aug 02 2024 18:58:06 GMT+0000 (Coordinated Universal Time)

@iamkatmakhafola

star

Fri Aug 02 2024 16:08:32 GMT+0000 (Coordinated Universal Time) https://omnivore.app/overfill7680/git-hub-hot-cake-x-microsoft-domains-this-repository-lists-all-a-19113bb2075

@Curable1600 #windows #security #edgebrowser

star

Fri Aug 02 2024 15:14:45 GMT+0000 (Coordinated Universal Time) https://servermango.com/

@sohrabcis

star

Fri Aug 02 2024 13:15:38 GMT+0000 (Coordinated Universal Time)

@iamkatmakhafola

star

Fri Aug 02 2024 13:14:57 GMT+0000 (Coordinated Universal Time) https://bobbyiliev.com/post/10-simple-tips-for-optimizing-your-laravel-application/

@vtcbadmin #laravel

star

Fri Aug 02 2024 13:14:48 GMT+0000 (Coordinated Universal Time) https://bobbyiliev.com/post/10-simple-tips-for-optimizing-your-laravel-application/

@vtcbadmin #laravel

star

Fri Aug 02 2024 12:28:05 GMT+0000 (Coordinated Universal Time) https://www.beleaftechnologies.com/own-blockchain-development-company

@sivaprasadm203 #blockchain #cryptocurrency #defi #web3

star

Fri Aug 02 2024 11:50:47 GMT+0000 (Coordinated Universal Time)

@iamkatmakhafola

star

Fri Aug 02 2024 09:40:49 GMT+0000 (Coordinated Universal Time)

@divyasoni23 #jquery #gsap

star

Fri Aug 02 2024 09:09:21 GMT+0000 (Coordinated Universal Time) https://medium.com/@beccasaka/using-sqlite-in-flutter-3d5a10138090

@zemax_c4 ##flutter

star

Fri Aug 02 2024 08:53:10 GMT+0000 (Coordinated Universal Time) https://www.cocosenor.com/articles/windows-10/4-ways-to-disable-or-enable-windows-10-password-expiration-notification.html

@Curable1600 #windows #security #password

star

Fri Aug 02 2024 07:28:49 GMT+0000 (Coordinated Universal Time) HS

@focuskatiso

star

Fri Aug 02 2024 04:19:22 GMT+0000 (Coordinated Universal Time)

@fori44w #javascript

star

Fri Aug 02 2024 04:17:52 GMT+0000 (Coordinated Universal Time)

@fori44w #html

star

Fri Aug 02 2024 04:15:36 GMT+0000 (Coordinated Universal Time)

@fori44w #css

star

Fri Aug 02 2024 01:28:26 GMT+0000 (Coordinated Universal Time)

@WXAPAC

star

Thu Aug 01 2024 20:10:02 GMT+0000 (Coordinated Universal Time)

@mr_effaty

star

Thu Aug 01 2024 19:51:38 GMT+0000 (Coordinated Universal Time) https://github.com/ahmetkabacali/CORS-Error-Solution-main/blob/main/main.js

@Bh@e_LoG

star

Thu Aug 01 2024 19:41:21 GMT+0000 (Coordinated Universal Time) https://intelx.io/

@whois

star

Thu Aug 01 2024 17:23:40 GMT+0000 (Coordinated Universal Time) https://stackoverflow.com/questions/469357/html-text-input-allow-only-numeric-input

@webmaster30 #html

star

Thu Aug 01 2024 17:16:19 GMT+0000 (Coordinated Universal Time)

@WXCanada

star

Thu Aug 01 2024 17:09:24 GMT+0000 (Coordinated Universal Time) https://stackoverflow.com/questions/49623745/html-numeric-input-allow-6-digits-only

@webmaster30 #html

star

Thu Aug 01 2024 16:14:46 GMT+0000 (Coordinated Universal Time) https://www.contributor-covenant.org/

@isopet

star

Thu Aug 01 2024 13:05:27 GMT+0000 (Coordinated Universal Time)

@WXCanada

star

Thu Aug 01 2024 10:10:46 GMT+0000 (Coordinated Universal Time) devtools://devtools/bundled/devtools_app.html?remoteBase

@DobbyLee

star

Thu Aug 01 2024 08:14:59 GMT+0000 (Coordinated Universal Time)

@FOHWellington

star

Thu Aug 01 2024 06:20:45 GMT+0000 (Coordinated Universal Time) https://nilesoft.org/forum/viewtopic.php?t=18

@Curable1600 #windows #app

star

Thu Aug 01 2024 05:48:50 GMT+0000 (Coordinated Universal Time) http://octoprint.local/#tab_plugin_bedlevelvisualizer

@amccall23

star

Thu Aug 01 2024 04:51:26 GMT+0000 (Coordinated Universal Time)

@CodeWithSachin #aggregation #mongodb #$objecttoarray #$addfiels

star

Wed Jul 31 2024 23:04:58 GMT+0000 (Coordinated Universal Time) https://chatgpt.com/

@Black_Shadow

star

Wed Jul 31 2024 17:30:35 GMT+0000 (Coordinated Universal Time)

@darshcode

star

Wed Jul 31 2024 15:25:01 GMT+0000 (Coordinated Universal Time)

@chaelaz

star

Wed Jul 31 2024 15:13:14 GMT+0000 (Coordinated Universal Time) https://learn.maricopa.edu/courses/810369/pages/div-box

@chaelaz

Save snippets that work with our extensions

Available in the Chrome Web Store Get Firefox Add-on Get VS Code extension