Skip to main content
0

āļŠāļĢāļļāļ›āļŠāļąāđ‰āļ™ āđ† āļāđˆāļ­āļ™āđ€āļĢāļīāđˆāļĄāļ­āđˆāļēāļ™

āļāļēāļĢāļ—āļģ Rate Limiting āđƒāļ™ Express.js āđ‚āļ”āļĒāđƒāļŠāđ‰ Library āļŠāļ·āđˆāļ­ express-rate-limit āđ€āļ›āđ‡āļ™ 1 āđƒāļ™āļ§āļīāļ˜āļĩāļāļēāļĢāļ—āļĩāđˆāļ‡āđˆāļēāļĒāđāļĨāļ°āđ€āļŦāļĄāļēāļ°āļŠāļĄāļŠāļģāļŦāļĢāļąāļšāļœāļđāđ‰āļžāļąāļ’āļ™āļēāļ—āļĩāđˆāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāļ„āļ§āļēāļĄāļĒāļļāđˆāļ‡āļĒāļēāļāđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āļ§āļīāļ˜āļĩāļāļēāļĢāļ­āļ·āđˆāļ™ āđ† āđƒāļ™āļāļēāļĢāļ›āđ‰āļ­āļ‡āļāļąāļ™ DDoS Attack āļŦāļĢāļ·āļ­ DoS Attack āļ‹āļķāđˆāļ‡āļŠāļēāļĄāļēāļĢāļ–āļŠāđˆāļ§āļĒāļĨāļ”āđ€āļ§āļĨāļē āđāļĨāļ°āļ„āļ§āļēāļĄāļ‹āļąāļšāļ‹āđ‰āļ­āļ™ āđƒāļ™āļāļēāļĢāļžāļąāļ’āļ™āļēāļĨāļ‡āđ„āļ”āđ‰


Rate Limiting āđƒāļ™ API āļ„āļ·āļ­āļ­āļ°āđ„āļĢ

Rate Limiting āļ„āļ·āļ­āļāļēāļĢāļāļģāļŦāļ™āļ”āļˆāļģāļ™āļ§āļ™ āđ‚āļ„āļ§āļ•āđ‰āļē āđƒāļ™āļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļ•āļąāļ§ API āļ•āđˆāļēāļ‡ āđ† āđ‚āļ”āļĒāļˆāļ°āļāļģāļŦāļ™āļ”āđƒāļ™āļĨāļąāļāļĐāļ“āļ° āļˆāļģāļ™āļ§āļ™āļ„āļĢāļąāđ‰āļ‡ āļ•āđˆāļ­ āđ€āļ§āļĨāļē āđ€āļŠāđˆāļ™ 100 āļ„āļĢāļąāđ‰āļ‡ āļ•āđˆāļ­ 1 āļ™āļēāļ—āļĩ āļŠāļģāļŦāļĢāļąāļš 1 āļœāļđāđ‰āđƒāļŠāđ‰āļ‡āļēāļ™ āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™āļ•āļąāļ§ API āļŦāļĢāļ·āļ­ server āļ—āļģāļ‡āļēāļ™āļŦāļ™āļąāļāđ€āļāļīāļ™āđ„āļ› āđ€āļ™āļ·āđˆāļ­āļ‡āļˆāļēāļāļĄāļĩāļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļˆāļģāļ™āļ§āļ™āļĄāļēāļ āļˆāļ™āļĨāđˆāļĄāđƒāļ™āļ—āļĩāđˆāļŠāļļāļ” āļŦāļĢāļ·āļ­ āđ€āļžāļ·āđˆāļ­āđāļŠāļĢāđŒ āļ—āļĢāļąāļžāļĒāļēāļāļĢ āđƒāļŦāđ‰āļœāļđāđ‰āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ API āđ„āļ”āđ‰āļˆāļģāļ™āļ§āļ™āđ€āļ—āđˆāļē āđ† āļāļąāļ™ āđ‚āļ”āļĒāļŦāļĨāļąāļ āđ† āļˆāļ°āļ™āļīāļĒāļĄāđƒāļŠāđ‰āđƒāļ™āļāļēāļĢāļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāļ—āļģāļāļēāļĢāđ‚āļˆāļĄāļ•āļĩāđāļšāļš DDoS Attack āļŦāļĢāļ·āļ­ Dos Attack āđƒāļŠāđˆ API

DDoS Attack āđāļĨāļ° Dos Attack āļ„āļ·āļ­āļ­āļ°āđ„āļĢ

Distributed Denial of Service āļŦāļĢāļ·āļ­ āđ€āļĢāļĩāļĒāļāļāļąāļ™āļ§āđˆāļēāļŠāļąāđ‰āļ™ āđ† āļ§āđˆāļē DDoS āļ„āļ·āļ­āļāļēāļĢāđ‚āļˆāļĄāļ•āļĩāļ—āļēāļ‡āđ„āļ‹āđ€āļšāļ­āļĢāđŒāļĢāļđāļ›āđāļšāļšāļŦāļ™āļķāđˆāļ‡ āđƒāļ™āļĨāļąāļāļĐāļ“āļ° āļ—āļĩāđˆāļĄāļĩāļāļēāļĢāļŠāđˆāļ‡āļ„āļģāļ‚āļ­āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļˆāļģāļ™āļ§āļ™āļĄāļēāļ āđ† āļžāļĢāđ‰āļ­āļĄāļāļąāļ™ āļĄāļēāļāđ€āļāļīāļ™āļāļ§āđˆāļē API āļŦāļĢāļ·āļ­ Server āļˆāļ°āļĢāļąāļšāđ„āļ”āđ‰ (āļĄāļĩāļ•āļąāđ‰āļ‡āđāļ•āđˆāļāļēāļĢāļāļ” F5 āļĒāļąāļ™āđƒāļŠāđ‰āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™ Script āđ€āļžāļ·āđˆāļ­āļ—āļģāļāļēāļĢāđ‚āļˆāļĄāļ•āļĩ) āļ‹āļķāđˆāļ‡ Denial of Service āļŦāļĢāļ·āļ­ Dos āļāđ‡āļĄāļĩāļĨāļąāļāļĐāļ“āļ°āđ€āļŦāļĄāļ·āļ­āļ™āļāļąāļ™āļ•āđˆāļēāļ‡āļāļąāļ™āļ—āļĩāđˆ DDoS āļˆāļ°āļĄāļĩāļāļēāļĢāđ‚āļˆāļĄāļ•āļĩāļˆāļēāļāļŦāļĨāļēāļĒāļ—āļĩāđˆ āļŠāđˆāļ§āļ™ Dos āļˆāļ°āļĄāļēāļˆāļēāļāđāļŦāļĨāđˆāļ‡āđ€āļ”āļĩāļĒāļ§ āļ‹āļķāđˆāļ‡āļāļēāļĢāļ—āļģ Rate Limiting āđƒāļ™ API āļāđ‡āđ€āļ›āđ‡āļ™ 1 āđƒāļ™āļ§āļīāļ˜āļĩāļāļēāļĢāļ›āđ‰āļ­āļ‡āļāļąāļ™


āļāļēāļĢāļ—āļģ Rate Limiting āđƒāļ™ API āļšāļ™ Express.JS

āđ‚āļ”āļĒāđƒāļ™āļāļēāļĢāļ—āļģ Rate Limiting āđƒāļ™ API āļˆāļ°āļĄāļĩ 2 āļĢāļđāļ›āđāļšāļšāļŦāļĨāļąāļ āđ† āđƒāļ™āļāļēāļĢāļāļģāļŦāļ™āļ”āļ•āļąāļ§āļ•āļ™āļ‚āļ­āļ‡āļœāļđāđ‰āļ—āļĩāđˆāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļ‡āļēāļ™ API

  • āļāļēāļĢāļāļģāļŦāļ™āļ”āļ•āļąāļ§āļ•āļ™āđ‚āļ”āļĒāđƒāļŠāđ‰ IP Address āļ‚āļ­āļ‡āļœāļđāđ‰āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ āđ€āļŦāļĄāļēāļ°āļāļąāļšāļāļēāļĢāļ‡āļēāļ™āļ—āļĩāđˆāđ„āļĄāđˆāļĄāļĩāļāļēāļĢāļ•āđ‰āļ­āļ‡āđƒāļŦāđ‰āļĄāļĩāļāļēāļĢāļŠāļĄāļąāļ„āļĢāđƒāļŠāđ‰āļ‡āļēāļ™ āđ€āļžāļ·āđˆāļ­āļĒāļ·āļ™āļĒāļąāļ™āļ•āļąāļ§āļœāļđāđ‰āđƒāļŠāđ‰ āđāļ•āđˆāļˆāļ°āļĄāļĩāļ‚āđ‰āļ­āđ€āļŠāļĩāļĒāļ—āļĩāđˆ āļœāļđāđ‰āļ—āļģāļāļēāļĢāđ‚āļˆāļĄāļ•āļĩāļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļĨāļĩāđˆāļĒāļ™āđāļ›āļĨāļ‡ IP āđ‚āļ”āļĒāđƒāļŠāđ‰ Proxy āļŦāļĢāļ·āļ­ VPN āđ„āļ”āđ‰ (āļŦāļĢāļ·āļ­āļ­āļĩāļāļ§āļīāļ˜āļĩāļ„āļ·āļ­ Restart Router āļ­āļīāļ™āđ€āļ—āļ­āļĢāđŒāđ€āļ™āđ‡āļ•) āļ‹āļķāđˆāļ‡āļˆāļ°āļ—āļģāđƒāļŦāđ‰ Rate Limiting āđ„āļĢāđ‰āļ›āļĢāļ°āđ‚āļĒāļŠāļ™āđŒ
  • āļāļēāļĢāļāļģāļŦāļ™āļ”āļ•āļąāļ§āļ•āļ™āđ‚āļ”āļĒāđƒāļŠāđ‰āļ‚āđ‰āļ­āļĄāļđāļĨāļœāļđāđ‰āđƒāļŠāđ‰ āļŦāļĢāļ·āļ­ Token āđ€āļŦāļĄāļēāļ°āļāļąāļšāļāļēāļĢāļ‡āļēāļ™āļ—āļĩāđˆāļĄāļĩāļāļēāļĢāļ•āđ‰āļ­āļ‡āđƒāļŦāđ‰āļĄāļĩāļāļēāļĢāļŠāļĄāļąāļ„āļĢāđƒāļŠāđ‰āļ‡āļēāļ™ āđ€āļžāļ·āđˆāļ­āļĒāļ·āļ™āļĒāļąāļ™āļ•āļąāļ§āļœāļđāđ‰āđƒāļŠāđ‰āļ‡āļēāļ™

āļĄāļēāļŠāļđāđˆāļāļēāļĢāļ—āļģ Rate Limiting āļšāļ™ Express.js Framework āđ‚āļ”āļĒāđƒāļ™āļšāļ—āļ„āļ§āļēāļĄāļ™āļĩāđ‰āļˆāļ°āđ€āļĨāļ·āļ­āļāđƒāļŠāđ‰ Library Middleware āļŠāļģāļŦāļĢāļąāļš Express.js āļŠāļ·āđˆāļ­ express-rate-limit āļ‹āļķāđˆāļ‡āđƒāļŠāđ‰āļ§āļīāļ˜āļĩāļāļēāļĢāļāļģāļŦāļ™āļ” IP Address āļ‚āļ­āļ‡āļœāļđāđ‰āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ āđ‚āļ”āļĒāđƒāļ™āļšāļ—āļ„āļ§āļēāļĄāļˆāļ°āļ‚āļ­āļ‚āđ‰āļēāļĄāđƒāļ™āļŠāđˆāļ§āļ™āļāļēāļĢāđƒāļŠāđ‰ express.JS āđ„āļ›āļ„āļĢāļąāļš āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™ Express.JS āđ€āļšāļ·āđ‰āļ­āļ‡āļ•āđ‰āļ™ āļŠāļēāļĄāļēāļĢāļ–āđ„āļ›āļ”āļđāđ„āļ”āđ‰āļ—āļĩāđˆāļ„āļ­āļĢāđŒāļŠ Introduction to Web App Development with Node.js & Express āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļ„āļ­āļĢāđŒāļŠāđ€āļĢāļĩāļĒāļ™āļŸāļĢāļĩāđ„āļ”āđ‰āļ‚āļ­āļ‡āļ—āļēāļ‡ borntoDev āđ€āļĨāļĒāļ„āļĢāļąāļš āđ€āļĢāļĩāļĒāļ™āļˆāļš āļ—āļģ Project āļŠāđˆāļ‡ āļŠāļēāļĄāļēāļĢāļ–āļĢāļąāļšāđ„āļ”āđ‰āđ€āļāļĩāļĒāļĢāļ•āļīāļšāļąāļ•āļĢāļ”āđ‰āļ§āļĒāļ™āļ° āļĄāļēāđ€āļĢāļīāđˆāļĄāļ”āđ‰āļ§āļĒāļ‚āļąāđ‰āļ™āļ•āļ­āļ™āđāļĢāļāđƒāļ™āļāļēāļĢāđƒāļŠāđ‰ Library āļŠāļ·āđˆāļ­ express-rate-limit āļāļąāļ™āļ„āļĢāļąāļš

āļ—āļģāļāļēāļĢāļ•āļīāļ”āļ•āļąāđ‰āļ‡ express-rate-limit āđ‚āļ”āļĒāđƒāļŠāđ‰āļ„āļģāļŠāļąāđˆāļ‡

npm i express-rate-limit

āļ—āļģāļāļēāļĢ Import Library express-rate-limit āđ€āļ‚āđ‰āļēāļĄāļēāđƒāļŠāđ‰āļ‡āļēāļ™ (āđƒāļŠāđ‰āļĢāļđāļ›āđāļšāļšāļĄāļēāļ•āļĢāļēāļāļēāļ™ ES6)

import { rateLimit } from 'express-rate-limit'

āļŠāļĢāđ‰āļēāļ‡āļ•āļąāļ§āđāļ›āļĢāļŠāļ·āđˆāļ­ limiter āļŦāļĢāļ·āļ­ āļŠāļ·āđˆāļ­āļ­āļ·āđˆāļ™āđ† āđ€āļžāļ·āđˆāļ­āđ€āļāđ‡āļšāļ•āļąāļ§ Config āļ‚āļ­āļ‡ rateLimit

const limiter = rateLimit({ 
    windowMs: 15 * 60 * 1000, // āļŦāļ™āđˆāļ§āļĒāđ€āļ§āļĨāļēāđ€āļ›āđ‡āļ™ āļĄāļīāļĨāļĨāļīāļ§āļīāļ™āļēāļ—āļĩ āđƒāļ™āļ™āļĩāđ‰āļ„āļ·āļ­ 15 āļ™āļēāļ—āļĩ (1000 āļĄāļīāļĨāļĨāļīāļ§āļīāļ™āļēāļ—āļĩ = 1 āļ§āļīāļ™āļēāļ—āļĩ)
    max: 100, // āļˆāļģāļ™āļ§āļ™āļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļŠāļđāļ‡āļŠāļļāļ”āļ•āđˆāļ­ IP Address āļ•āđˆāļ­āđ€āļ§āļĨāļēāđƒāļ™ windowMS
    standardHeaders: true, // āļ„āļ·āļ™ rate limit āđ„āļ›āļĒāļąāļ‡ `RateLimit-*` āđƒāļ™ headers 
    legacyHeaders: false, // āļ›āļīāļ” `X-RateLimit-*` āđƒāļ™ headers 
})

āļˆāļēāļāļ™āļąāđ‰āļ™āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļ•āļąāļ§āđāļ›āļĢ āļ—āļĩāđˆāđ„āļ”āđ‰āļ—āļģāļāļēāļĢāļŠāļĢāđ‰āļēāļ‡āđ„āļ› āđ‚āļ”āļĒāđƒāļŠāđ‰ app.use() āļ‹āļķāđˆāļ‡āđ€āļ›āđ‡āļ™āļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰ Middleware āļ‚āļ­āļ‡ Express.js (āđƒāļ™āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđƒāļŠāđ‰āļ•āļąāļ§āđāļ›āļĢāļŠāļ·āđˆāļ­ limiter)

app.use(limiter)

āđ‚āļ”āļĒāđ‚āļ„āļĢāļ‡āļŠāļĢāđ‰āļēāļ‡āļ‚āļ­āļ‡ Code āļ—āļĩāđˆāđ„āļ”āđ‰āļˆāļ°āđ€āļ›āđ‡āļ™āļĨāļąāļāļĐāļ“āļ°āļ™āļĩāđ‰

import express from "express";
import { rateLimit } from 'express-rate-limit'

//āļŠāļĢāđ‰āļēāļ‡ express app
const app = express();

const limiter = rateLimit({ 
    windowMs: 15 * 60 * 1000, // āļŦāļ™āđˆāļ§āļĒāđ€āļ§āļĨāļēāđ€āļ›āđ‡āļ™ āļĄāļīāļĨāļĨāļīāļ§āļīāļ™āļēāļ—āļĩ āđƒāļ™āļ™āļĩāđ‰āļ„āļ·āļ­ 15 āļ™āļēāļ—āļĩ (1000 āļĄāļīāļĨāļĨāļīāļ§āļīāļ™āļēāļ—āļĩ = 1 āļ§āļīāļ™āļēāļ—āļĩ)
    max: 100, // āļˆāļģāļ™āļ§āļ™āļāļēāļĢāđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļŠāļđāļ‡āļŠāļļāļ”āļ•āđˆāļ­ IP Address āļ•āđˆāļ­āđ€āļ§āļĨāļēāđƒāļ™ windowMS
    standardHeaders: true, // āļ„āļ·āļ™ rate limit āđ„āļ›āļĒāļąāļ‡ `RateLimit-*` āđƒāļ™ headers 
    legacyHeaders: false, // āļ›āļīāļ” `X-RateLimit-*` āđƒāļ™ headers 
})

//āđƒāļŠāđ‰ middleware āļ—āļģ rate limit
app.use(limiter);

//āļ”āļđāļĢāļēāļĒāļāļēāļĢāļŠāļīāļ™āļ„āđ‰āļēāļ—āļąāđ‰āļ‡āļŦāļĄāļ”
app.get("/product/all", (req, res) => {
        //āļŠāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļŠāļīāļ™āļ„āđ‰āļēāļ—āļąāđ‰āļ‡āļŦāļĄāļ”āļāļĨāļąāļšāđ„āļ› āđƒāļ™āļĢāļđāļ›āđāļšāļšāļ‚āļ­āļ‡ JSON Array
        try {
            return res.status(200).json(database);
        } catch (error) {
            return res.status(500).json({message: "Internal server error"});
        }
    }
);


āļŠāļĢāļļāļ›

āļāļēāļĢāļ—āļģ Rate Limit āļšāļ™ Express.js āđ‚āļ”āļĒāđƒāļŠāđ‰ Library āļŠāļ·āđˆāļ­ express-rate-limit āđ€āļ›āđ‡āļ™ 1 āđƒāļ™āļ§āļīāļ˜āļĩāļāļēāļĢāļ—āļĩāđˆāļ‡āđˆāļēāļĒāđāļĨāļ°āđ€āļŦāļĄāļēāļ°āļŠāļĄāļŠāļģāļŦāļĢāļąāļšāļœāļđāđ‰āļžāļąāļ’āļ™āļēāļ—āļĩāđˆāđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļāļēāļĢāļ„āļ§āļēāļĄāļĒāļļāđˆāļ‡āļĒāļēāļāđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āļ§āļīāļ˜āļĩāļāļēāļĢāļ­āļ·āđˆāļ™ āđ† āđƒāļ™āļāļēāļĢāļ›āđ‰āļ­āļ‡āļāļąāļ™ DDoS Attack āļŦāļĢāļ·āļ­ DoS Attack


āļ­āđ‰āļēāļ‡āļ­āļīāļ‡

  • DDoS āļ„āļ·āļ­āļ­āļ°āđ„āļĢ? āļ—āļģāđ„āļĄāđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļŠāļ·āđˆāļ­āļ”āļąāļ‡āļ–āļķāļ‡āļĨāđˆāļĄ? āļŠāļ·āļšāļ„āđ‰āļ™āđ€āļĄāļ·āđˆāļ­ 1 āđ€āļĄāļĐāļēāļĒāļ™ 2567 āļˆāļēāļ https://nipa.cloud/th/blog/what-ddos-is
  • express-rate-limit library documentation āļŠāļ·āļ­āļ„āđ‰āļ™āđ€āļĄāļ·āđˆāļ­ 1 āđ€āļĄāļĐāļēāļĒāļ™ 2567 āļˆāļēāļ https://express-rate-limit.mintlify.app/
āļāļĢāļĪāļ• āđāļŠāļ‡āļ—āļ­āļ‡

Author āļāļĢāļĪāļ• āđāļŠāļ‡āļ—āļ­āļ‡

More posts by āļāļĢāļĪāļ• āđāļŠāļ‡āļ—āļ­āļ‡
Close Menu

āđ€āļĢāļēāđƒāļŠāđ‰āļ„āļļāļāļāļĩāđ‰āđ€āļžāļ·āđˆāļ­āļžāļąāļ’āļ™āļēāļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļž āđāļĨāļ°āļ›āļĢāļ°āļŠāļšāļāļēāļĢāļ“āđŒāļ—āļĩāđˆāļ”āļĩāđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļ‚āļ­āļ‡āļ„āļļāļ“ āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āļĻāļķāļāļĐāļēāļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āđ„āļ”āđ‰āļ—āļĩāđˆ āļ™āđ‚āļĒāļšāļēāļĒāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§ āđāļĨāļ°āļŠāļēāļĄāļēāļĢāļ–āļˆāļąāļ”āļāļēāļĢāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§āđ€āļ­āļ‡āđ„āļ”āđ‰āļ‚āļ­āļ‡āļ„āļļāļ“āđ„āļ”āđ‰āđ€āļ­āļ‡āđ‚āļ”āļĒāļ„āļĨāļīāļāļ—āļĩāđˆ āļ•āļąāđ‰āļ‡āļ„āđˆāļē

āļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§

āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āđ€āļĨāļ·āļ­āļāļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļēāļ„āļļāļāļāļĩāđ‰āđ‚āļ”āļĒāđ€āļ›āļīāļ”/āļ›āļīāļ” āļ„āļļāļāļāļĩāđ‰āđƒāļ™āđāļ•āđˆāļĨāļ°āļ›āļĢāļ°āđ€āļ āļ—āđ„āļ”āđ‰āļ•āļēāļĄāļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢ āļĒāļāđ€āļ§āđ‰āļ™ āļ„āļļāļāļāļĩāđ‰āļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™

āļĒāļ­āļĄāļĢāļąāļšāļ—āļąāđ‰āļ‡āļŦāļĄāļ”
āļˆāļąāļ”āļāļēāļĢāļ„āļ§āļēāļĄāđ€āļ›āđ‡āļ™āļŠāđˆāļ§āļ™āļ•āļąāļ§
  • āļ„āļļāļāļāļĩāđ‰āļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™
    āđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™āļ•āļĨāļ­āļ”

    āļ›āļĢāļ°āđ€āļ āļ—āļ‚āļ­āļ‡āļ„āļļāļāļāļĩāđ‰āļĄāļĩāļ„āļ§āļēāļĄāļˆāļģāđ€āļ›āđ‡āļ™āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒ āđ€āļžāļ·āđˆāļ­āđƒāļŦāđ‰āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ‰āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ€āļ›āđ‡āļ™āļ›āļāļ•āļī āđāļĨāļ°āđ€āļ‚āđ‰āļēāļŠāļĄāđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒ āļ„āļļāļ“āđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ–āļ›āļīāļ”āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļ‚āļ­āļ‡āļ„āļļāļāļāļĩāđ‰āļ™āļĩāđ‰āđƒāļ™āļĢāļ°āļšāļšāđ€āļ§āđ‡āļšāđ„āļ‹āļ•āđŒāļ‚āļ­āļ‡āđ€āļĢāļēāđ„āļ”āđ‰
    āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ„āļļāļāļāļĩāđ‰

  • āļ„āļļāļāļāļĩāđ‰āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļ•āļīāļ”āļ•āļēāļĄāļ—āļēāļ‡āļāļēāļĢāļ•āļĨāļēāļ”

    āļ›āļĢāļ°āđ€āļ āļ—āļ‚āļ­āļ‡āļ„āļļāļāļāļĩāđ‰āļ—āļĩāđˆāļĄāļĩāļ„āļ§āļēāļĄāļˆāļģāđ€āļ›āđ‡āļ™āđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āđ€āļžāļ·āđˆāļ­āļāļēāļĢāļ§āļīāđ€āļ„āļĢāļēāļ°āļŦāđŒ āđāļĨāļ° āļ™āļģāđ€āļŠāļ™āļ­āđ‚āļ›āļĢāđ‚āļĄāļŠāļąāļ™ āļŠāļīāļ™āļ„āđ‰āļē āļĢāļ§āļĄāļ–āļķāļ‡āļŦāļĨāļąāļāļŠāļđāļ•āļĢāļŸāļĢāļĩ āđāļĨāļ° āļŠāļīāļ—āļ˜āļīāļžāļīāđ€āļĻāļĐāļ•āđˆāļēāļ‡ āđ† āļ„āļļāļ“āļŠāļēāļĄāļēāļĢāļ–āđ€āļĨāļ·āļ­āļāļ›āļīāļ”āļ„āļļāļāļāļĩāđ‰āļ›āļĢāļ°āđ€āļ āļ—āļ™āļĩāđ‰āđ„āļ”āđ‰āđ‚āļ”āļĒāđ„āļĄāđˆāļŠāđˆāļ‡āļœāļĨāļ•āđˆāļ­āļāļēāļĢāļ—āļģāļ‡āļēāļ™āļŦāļĨāļąāļ āđ€āļ§āđ‰āļ™āđāļ•āđˆāļāļēāļĢāļ™āļģāđ€āļŠāļ™āļ­āđ‚āļ›āļĢāđ‚āļĄāļŠāļąāļ™āļ—āļĩāđˆāļ­āļēāļˆāđ„āļĄāđˆāļ•āļĢāļ‡āļāļąāļšāļ„āļ§āļēāļĄāļ•āđ‰āļ­āļ‡āļāļēāļĢ
    āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ„āļļāļāļāļĩāđ‰

āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ•āļąāđ‰āļ‡āļ„āđˆāļē